Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uZPl7-003Fvo-Nn for pgsql-hackers@arkaria.postgresql.org; Wed, 09 Jul 2025 08:02:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uZPl5-00ELTU-Rk for pgsql-hackers@arkaria.postgresql.org; Wed, 09 Jul 2025 08:02:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uZPl4-00ELT0-NW for pgsql-hackers@lists.postgresql.org; Wed, 09 Jul 2025 08:02:27 +0000 Received: from mail-pf1-x441.google.com ([2607:f8b0:4864:20::441]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uZPl1-006MCQ-37 for pgsql-hackers@postgresql.org; Wed, 09 Jul 2025 08:02:26 +0000 Received: by mail-pf1-x441.google.com with SMTP id d2e1a72fcca58-74801bc6dc5so590890b3a.1 for ; Wed, 09 Jul 2025 01:02:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752048143; x=1752652943; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=WKzoJaBhlTwDu+pdOgq3+uW/KsUfAu3jGuelHDy1azA=; b=maNT5ntuY0LY5ucb9+rPVVjslZ0AhQYZ58Gi73PnQljuiwAFe5zSHcQYNZdzKJafQc K13YqBdwlL6UE21FUhTBtXoi/wsVua6+7vhJiGjjCA9Ek3SLQWo16f4dHT/kIqTEDDOT 0FcV2P5RhXxxnLD1zGDwW6qL5UagqBtFqfJofIm+GeN+FvBtxBmVfTuztktGAvk+GKII PtxhmQ6EoFgM8Fvfzf/sjvuo1LHhY0EKocvh1FD/LrV8QkFKpBM8rYAc6O2x+D0B6qou ZBr5fi29Zvdd6LtqdnKB1Eh57JKQyV8djSY669AFFxSxL9loOPjm7uqf0F8tYexGdYXP 5yNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752048143; x=1752652943; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=WKzoJaBhlTwDu+pdOgq3+uW/KsUfAu3jGuelHDy1azA=; b=eA4/13UpSS9RMMuJ6Gjokcgiy5c8RNsNPYozFjQv/aucJzODkJcafN+jKo7VmafKj+ Jkav0ZyjCeZJ2HI7Ds30vdY1VgPB7jrXRdGVNR58a0FDu0M8UXpIB/DhVJUp5KACTFCv 1olCDhLMTS6/9gMULxCdIXczMvQQrdEv2GOMSnrfzR7w0u7SqfoX6R+vO43G2do2RLXf mrSscB9CZo7t3W3fNxJ0DszGm6jwla6CW4l37G3QYS992YgXlZz+ehRKgvYk79v2hD27 7uqd5HnS7Og+8sYCWvonBkrYNhrg0LMSLu2RchTJLlNqVaYDutuA+5bBWzRW+3mhYRMC fpbA== X-Forwarded-Encrypted: i=1; AJvYcCX6kE3rVFt16GwhVoqe9ivnFnz3SjbMXS6mLd3sG54dYAv0I0GwzfxtM4HK4TvhTb0Vxf+2TfA4hdJ7eM+F@postgresql.org X-Gm-Message-State: AOJu0Yw1UIcRPr0O69sEQkPToI4HS1wCe3byrCXIFxQDfBaSJ0Xpu2P8 i7BoRyuTBDsHmCFO1ZHBC6cBq7cLA2SF5EboF9+llOFiJ6mgHff/WLFpeHKydoQkCNLrPSy2HZj 2pVEa8BglV5TacDggok2N247d4iu+kBI= X-Gm-Gg: ASbGncu9VfHxuXl5MxWlk7oUb4a9g7PPm8PlsOTM39qb51wkTExEsuPXYA+trr+bF+W 7xPhu6wwmtnJZrf6Z+tOoYrk6B3Py+KB4fVnROYWrr+oWqEiYbXyZrhk06gxgl3x4qZR4MDLiMV DeB16urrI8wMP74yEGJAljqlx56c5Hmqdh+hWfu+cMu4fb X-Google-Smtp-Source: AGHT+IFq9KM5WODFaQF1hZOzJKZXj1EEsq6twYwT6cLhcEqC56Qi3mNLxpwCWexcVNfwKoJJ/L7SD45WPek2pwpo+/s= X-Received: by 2002:a05:6a00:ac0a:b0:742:aed4:3e1 with SMTP id d2e1a72fcca58-74d26308840mr7405956b3a.2.1752048142498; Wed, 09 Jul 2025 01:02:22 -0700 (PDT) MIME-Version: 1.0 References: <21fa36b4-6d56-4556-b524-9e3955b922c8@eisentraut.org> In-Reply-To: From: Alexandra Wang Date: Wed, 9 Jul 2025 01:01:45 -0700 X-Gm-Features: Ac12FXyBz6KjL4WMRW9ynpsnUAmectxgTeqM5rdw2YshKK8pLDSkyyeXN3BtX3E Message-ID: Subject: Re: SQL:2023 JSON simplified accessor support To: jian he Cc: Nikita Malakhov , Vik Fearing , Mark Dilger , Matheus Alcantara , Peter Eisentraut , Andrew Dunstan , Nikita Glukhov , PostgreSQL Hackers , "David E. Wheeler" Content-Type: multipart/mixed; boundary="00000000000029f71506397a7f95" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000029f71506397a7f95 Content-Type: multipart/alternative; boundary="00000000000029f71306397a7f93" --00000000000029f71306397a7f93 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Jian, On Tue, Jun 24, 2025 at 3:30=E2=80=AFPM jian he wrote: > hi. > > I have applied for 0001 to 0006. > Thank you so much for the very detailed and thorough review, and for the patches! I've attached v12 that addresses your feedback: v12-0001 to v12-0004 are refactoring patches that prepare for the implementation. v12-0005 - implements jsonb dot-notation (e.g., (jb).a) Changes from v11-0006 include: a. subscripting with slicing and wildcard-related code has been removed and will be added in the following commit b. introduced a dedicated FieldAccessorExpr node to transform Strings in dot-notation. c. mixed syntax (such as (jb).a['b'].c is now allowed, with warnings. d. miscellaneous bug fixes and code cleanup based on Jian=E2=80=99s feedbac= k. v12-0006 - implements jsonb subscripting with slicing. This was split out from v11-0006 into a separate commit. v12-0007 - implements wildcard member accessor. I added the Star node that Jelte suggested for transforming the wildcard member accessor. Please find more detailed replies below: On Tue, Jun 24, 2025 at 3:30=E2=80=AFPM jian he wrote: > static void > jsonb_subscript_transform(SubscriptingRef *sbsref, > List **indirection, > ParseState *pstate, > bool isSlice, > bool isAssignment) > { > List *upperIndexpr =3D NIL; > ListCell *idx; > sbsref->refrestype =3D JSONBOID; > sbsref->reftypmod =3D -1; > if (jsonb_check_jsonpath_needed(*indirection)) > { > sbsref->refjsonbpath =3D > jsonb_subscript_make_jsonpath(pstate, indirection, > &sbsref->refupperindexpr, > &sbsref->reflowerindexpr); > return; > } > foreach(idx, *indirection) > { > Node *i =3D lfirst(idx); > A_Indices *ai; > Node *subExpr; > Assert(IsA(i, A_Indices)); > ai =3D castNode(A_Indices, i); > if (isSlice) > { > Node *expr =3D ai->uidx ? ai->uidx : ai->lidx; > ereport(ERROR, > (errcode(ERRCODE_DATATYPE_MISMATCH), > errmsg("jsonb subscript does not support slices"), > parser_errposition(pstate, exprLocation(expr)))); > } > > I am confused by the above error handling: > errmsg("jsonb subscript does not support slices"). > we can do > select (jsonb '[1,2,3]')[0:1]; > or > SELECT (jb).a[2:3].b FROM test_jsonb_dot_notation; > > this is by definition, "slices"? > Anyway, I doubt this error handling will ever be reachable. > jsonb_check_jsonpath_needed checks whether the indirection contains > is_slice, > but jsonb_subscript_transform already takes isSlice as an argument. > Maybe we can refactor it somehow. > Good catch! I believe this error handling was originally copied because the existing JSONB subscripting in Postgres doesn=E2=80=99t support slices. In v12, I=E2=80=99ve separated the slicing implementation into its own comm= it, distinct from the one that implements dot-notation. Hope that helps! On Tue, Jun 24, 2025 at 3:30=E2=80=AFPM jian he wrote: > T_String is a primitive node type with no subnodes. > typedef struct String > { > pg_node_attr(special_read_write) > NodeTag type; > char *sval; > } String; > then in src/backend/nodes/nodeFuncs.c: > if (expr && !IsA(expr, String) && WALK(expr)) > return true; > we can change it to > if (WALK(expr)) > return true; > but in function expression_tree_walker_impl > we have to change it as > > case T_MergeSupportFunc: > case T_String: > /* primitive node types with no expression subnodes */ > break; > You=E2=80=99re right, the changes to the walker-related code weren=E2=80=99= t very clean. In v12, I introduced a new node, FieldAccessorExpr, to serve as the expression node for dot-notation. This helped minimize changes to the walker code and, in my opinion, results in a cleaner design than using a more general Const(text) node. On Tue, Jun 24, 2025 at 10:57=E2=80=AFPM jian he wrote: > in src/backend/catalog/sql_features.txt > should we mark any T860, T861, T862, T863, T864 > items as YES? > I=E2=80=99ve updated T860 and T861. I=E2=80=99m not entirely sure about the= rest so left them unchanged. On Tue, Jun 24, 2025 at 10:57=E2=80=AFPM jian he wrote: > typedef struct SubscriptingRef > { > /* expressions that evaluate to upper container indexes */ > List *refupperindexpr; > } > SubscriptingRef.refupperindexpr meaning changed, > So the above comments also need to be changed? > Thanks. Done. On Tue, Jun 24, 2025 at 10:57=E2=80=AFPM jian he wrote: > v11-0004-Extract-coerce_jsonpath_subscript.patch > + /* > + * We known from can_coerce_type that coercion will succeed, so > + * coerce_type could be used. Note the implicit coercion context, which = is > + * required to handle subscripts of different types, similar to overload= ed > + * functions. > + */ > + subExpr =3D coerce_type(pstate, > + subExpr, subExprType, > + targetType, -1, > + COERCION_IMPLICIT, > + COERCE_IMPLICIT_CAST, > + -1); > + if (subExpr =3D=3D NULL) > + ereport(ERROR, > + (errcode(ERRCODE_DATATYPE_MISMATCH), > + errmsg("jsonb subscript must have text type"), > > the targetType can be "integer", then the error message > errmsg("jsonb subscript must have text type") would be wrong? > Also this error handling is not necessary. > since we can_coerce_type already tell us that coercion will succeed. > Also, do we really put v11-0004 as a separate patch? > Thanks for pointing this out! I=E2=80=99ve removed the unnecessary error handling as you suggested. I kept v12-0004 as a separate patch to make the review easier, but I=E2=80=99ll leave it up to the committer to decide whether to squash it with the other commits. On Tue, Jun 24, 2025 at 10:57=E2=80=AFPM jian he wrote: > in gram.y we have: > if (!IsA($5, A_Const) || > castNode(A_Const, $5)->val.node.type !=3D T_Strin= g) > ereport(ERROR, > errcode(ERRCODE_FEATURE_NOT_SUPPORTED), > errmsg("only string constants are > supported in JSON_TABLE path specification"), > so simply, in make_jsonpath_item_expr we can > > expr =3D transformExpr(pstate, expr, pstate->p_expr_kind); > if (!IsA(expr, Const) || ((Const *) expr)->consttype !=3D INT4OID) > ereport(ERROR, > errcode(ERRCODE_DATATYPE_MISMATCH), > errmsg("only integer constants are supported in jsonb > simplified accessor subscripting"), > parser_errposition(pstate, exprLocation(expr))); > > because I think the current error message "got type: unknown" is not good= . > select ('123'::jsonb).a['1']; > ERROR: jsonb simplified accessor supports subscripting in type: INT4, > got type: unknown > then we don't need two "ereport(ERROR" within make_jsonpath_item_expr > we can also Assert (cnst->constisnull) is false. > see gram.y:16976 > Thanks for pointing this out! In v12, I added support for mixed subscripting syntax, and updated the ERROR (or WARNING) messages as follows: postgres=3D# SELECT (jb)['a'].b FROM test_jsonb_dot_notation; -- returns an array due to lax mode b ------------ ["c", "d"] (1 row) postgres=3D# SELECT (jb).a['b'] FROM test_jsonb_dot_notation; -- returns NU= LL due to strict mode with warnings WARNING: 01000: mixed usage of jsonb simplified accessor syntax and jsonb subscripting. LINE 1: SELECT (jb).a['b'] FROM test_jsonb_dot_notation; ^ HINT: use dot-notation for member access, or use non-null integer constants subscripting for array access. LOCATION: jsonb_subscript_make_jsonpath, jsonbsubs.c:366 a --- (1 row) postgres=3D# select ('{"a": 1}'::jsonb)['a':'b']; -- fails ERROR: 42804: only non-null integer constants are supported for jsonb simplified accessor subscripting LINE 1: select ('{"a": 1}'::jsonb)['a':'b']; ^ HINT: use int data type for subscripting with slicing. LOCATION: make_jsonpath_item_expr, jsonbsubs.c:218 So some of the ERRORs now disappear or downgrade to WARNINGs. On Tue, Jun 24, 2025 at 10:57=E2=80=AFPM jian he wrote: > I saw you introduce the word "AST", for example > "Converts jsonpath AST into jsonpath value in binary." > I am not sure that is fine. > Fixed. On Tue, Jun 24, 2025 at 10:57=E2=80=AFPM jian he wrote: > in jsonb_subscript_make_jsonpath we have: > + foreach(lc, *indirection) > + { > + > + if (IsA(accessor, String)) > + .... > + else if (IsA(accessor, A_Star)) > + .... > + else if (IsA(accessor, A_Indices)) > + .... > + else > + break; > > Is the last else branch unreliable? since indirection only support for > String, A_Star, A_Indices, we already have Assert in > jsonb_check_jsonpath_needed > to ensure that. > + *indirection =3D list_delete_first_n(*indirection, pathlen); > also this is not necessary, > because pathlen will be the same length as list *indirection in current > design. > I kept this logic in v12, because in order to support the mixed usage of dot-notation and existing jsonb subscripting (e.g., (jb).a['b'].c), we need to switch between making jsonpath and transforming the upper indexes for evaluation. So now, *indirection =3D list_delete_first_n(*indirection, pathlen); is necessary, and pathlen can differ. The else break; can be removed, but I choose to keep it for now and added comments to clarify the behavior. On Wed, Jun 25, 2025 at 12:41=E2=80=AFAM jian he wrote: > On Wed, Jun 25, 2025 at 1:56=E2=80=AFPM jian he > wrote: > > > > hi. > > CREATE TABLE test_jsonb_dot_notation AS > SELECT '{"a": [1, 2, {"b": "c"}, {"b": "d", "e": "f", "x": {"y": > "yyy", "z": "zzz"}}], "b": [3, 4, {"b": "g", "x": {"y": "YYY", "z": > "ZZZ"}}]}'::jsonb jb; > CREATE VIEW v1 AS SELECT (jb).a[3].x.y FROM test_jsonb_dot_notation; > CREATE VIEW v2 AS SELECT (jb).a[3:].x.y[:-1] FROM test_jsonb_dot_notation= ; > CREATE VIEW v3 AS SELECT (jb).a[:3].x.y[-1:] FROM test_jsonb_dot_notation= ; > > \sv v2 > \sv v3 > will trigger segment fault. > Great catch, thanks! Fixed and added your tests. On Wed, Jun 25, 2025 at 12:41=E2=80=AFAM jian he wrote: > also do we need ban subscript slicing, when upper bound is less than > lower bound, > for example: > SELECT (jb).a[3:].x.y[0:'-1'::integer] AS y FROM test_jsonb_dot_notation; > I don't think we need to ban this case, since the SQL standard doesn't ban it, and the (empty) result seems reasonable. On Thu, Jun 26, 2025 at 7:10=E2=80=AFPM jian he wrote: > in gram.y we have: > indirection_el: > '.' attr_name > { > $$ =3D (Node *) makeString($2); > } > > we can be sure that dot notation, following dot is a plain string. > then in jsonb_subscript_transform, we can transform the String Node to > a TEXTOID Const. > with that, most of the > v11-0005-Enable-String-node-as-field-accessors-in-generic.patch > would be unnecessary. > Also in v11-0006-Implement-read-only-dot-notation-for-jsonb.patch > all these with pattern > ``if (IsA(expr, String)`` > can be removed. > Thanks for giving so much thought into this, I really appreciate it! As I mentioned earlier, instead of using the Const(text) node, I added a dedicated FieldAccessorExpr node for dot-notation. I think this addresses the same concern. On Thu, Jun 26, 2025 at 7:10=E2=80=AFPM jian he wrote: > in transformContainerSubscripts we have: > sbsref =3D makeNode(SubscriptingRef); > sbsref->refcontainertype =3D containerType; > sbsref->refelemtype =3D elementType; > sbsref->reftypmod =3D containerTypMod; > sbsref->refexpr =3D (Expr *) containerBase; > sbsref->refassgnexpr =3D NULL; /* caller will fill if it's an > assignment */ > sbsroutines->transform(sbsref, indirection, pstate, > isSlice, isAssignment); > > then jsonb_subscript_transform we have > sbsref->refjsonbpath =3D > jsonb_subscript_make_jsonpath(pstate, indirection, > &sbsref->refupperindexpr, > &sbsref->reflowerindexpr); > of course sbsref->refupperindexpr, sbsref->reflowerindexpr is NIL > since we first called jsonb_subscript_make_jsonpath. > > so we can simplify the function signature as > static void jsonb_subscript_make_jsonpath(pstate, indirection, sbsref) > > Within jsonb_subscript_make_jsonpath we are going to populate > refupperindexpr, reflowerindexpr, refjsonbpath. > You are right. I applied your suggestion. On Thu, Jun 26, 2025 at 7:10=E2=80=AFPM jian he wrote: > The attached patch addresses both of these issues, along with additional > related > refactoring. It consolidates all the changes I think are appropriate, > based on > patches v1-0001 to v1-0006. This will include patches previously I sent i= n > the earlier thread. > Thanks again for the patch! It was really helpful! I didn't directly apply it as I made a few different choices, but I think I have addressed all the points you covered in it. Let me know your thoughts! Best, Alex --00000000000029f71306397a7f93 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Jian,

On Tue, Jun= 24, 2025 at 3:30=E2=80=AFPM jian he <jian.universality@gmail.com> wrote:
hi.

I have applied for 0001 to 0006.

Thank = you so much for the very detailed and thorough review, and for
the patch= es!

I've attached v12 that addresses your = feedback:

v12-0001 to v12-0004 are refactoring pat= ches that prepare for the
implementation.

v12-0005 - i= mplements jsonb dot-notation (e.g., (jb).a)
Changes from v11-0006= include:
a. subscripting with slicing and wildcard-related code = has been
removed and will be added in the following commit
b. introduced a dedicated FieldAccessorExpr node to transform Strings
i= n dot-notation.
c. mixed syntax (such as (jb).a['b'].= c is now allowed, with warnings.=C2=A0
d. miscellaneous bug fixes= and code cleanup based on Jian=E2=80=99s feedback.

v12-0= 006 - implements jsonb subscripting with slicing.
This was split = out from v11-0006 into a separate commit.

v12-0007= - implements wildcard member accessor.
I added the Star node tha= t Jelte suggested for transforming the
wildcard member accessor.



Please find more detail= ed replies below:=C2=A0

On Tue, Jun 24, 2025 at 3:= 30=E2=80=AFPM jian he <ji= an.universality@gmail.com> wrote:
static void
jsonb_subscript_transform(SubscriptingRef *sbsref,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 List **indirection,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 ParseState *pstate,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 bool isSlice,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 bool isAssignment)
{
=C2=A0 =C2=A0 List=C2=A0 =C2=A0 =C2=A0 =C2=A0*upperIndexpr =3D NIL;
=C2=A0 =C2=A0 ListCell=C2=A0 =C2=A0*idx;
=C2=A0 =C2=A0 sbsref->refrestype =3D JSONBOID;
=C2=A0 =C2=A0 sbsref->reftypmod =3D -1;
=C2=A0 =C2=A0 if (jsonb_check_jsonpath_needed(*indirection))
=C2=A0 =C2=A0 {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sbsref->refjsonbpath =3D
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 jsonb_subscript_make_jsonpath(pst= ate, indirection,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &= amp;sbsref->refupperindexpr,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &= amp;sbsref->reflowerindexpr);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
=C2=A0 =C2=A0 }
=C2=A0 =C2=A0 foreach(idx, *indirection)
=C2=A0 =C2=A0 {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Node=C2=A0 =C2=A0 =C2=A0 =C2=A0*i =3D lfirst(id= x);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 A_Indices=C2=A0 *ai;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Node=C2=A0 =C2=A0 =C2=A0 =C2=A0*subExpr;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Assert(IsA(i, A_Indices));
=C2=A0 =C2=A0 =C2=A0 =C2=A0 ai =3D castNode(A_Indices, i);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (isSlice)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Node=C2=A0 =C2=A0 =C2=A0 =C2=A0*e= xpr =3D ai->uidx ? ai->uidx : ai->lidx;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ereport(ERROR,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (errc= ode(ERRCODE_DATATYPE_MISMATCH),
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0errmsg("jsonb subscript does not support slices"),
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0parser_errposition(pstate, exprLocation(expr))));
}

I am confused by the above error handling:
errmsg("jsonb subscript does not support slices").

we can do
select (jsonb '[1,2,3]')[0:1];
or
SELECT (jb).a[2:3].b FROM test_jsonb_dot_notation;

this is by definition, "slices"?
Anyway, I doubt this error handling will ever be reachable.
jsonb_check_jsonpath_needed checks whether the indirection contains is_slic= e,
but jsonb_subscript_transform already takes isSlice as an argument.
Maybe we can refactor it somehow.

Good catch! I believe this error handling was ori= ginally copied
because the existing JSONB subscripting in Postgres doesn= =E2=80=99t support
slices.

In v12, I=E2=80=99ve= separated the slicing implementation into its own commit,
distinct from= the one that implements dot-notation. Hope that helps!
=C2= =A0
On Tue, Jun 24, 2025 at 3:30=E2=80=AFPM jian he <jian.universality@gmail.com>= wrote:
T_String is a primitive node type with no subnodes.
typedef struct String
{
=C2=A0 =C2=A0 pg_node_attr(special_read_write)
=C2=A0 =C2=A0 NodeTag=C2=A0 =C2=A0 =C2=A0 =C2=A0 type;
=C2=A0 =C2=A0 char=C2=A0 =C2=A0 =C2=A0 =C2=A0*sval;
} String;
then in src/backend/nodes/nodeFuncs.c:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (e= xpr && !IsA(expr, String) && WALK(expr))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 return true;
we can change it to
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (W= ALK(expr))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 return true;
but in function expression_tree_walker_impl
we have to change it as

=C2=A0 =C2=A0 =C2=A0 =C2=A0 case T_MergeSupportFunc:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 case T_String:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* primitive node types with no e= xpression subnodes */
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 break;

<= /div>
You=E2=80=99re right, the changes to the walker-related code were= n=E2=80=99t very
clean. In v12, I introduced a new node, FieldAccessorEx= pr, to serve as
the expression node for dot-notation. This helped minimi= ze changes to
the walker code and, in my opinion, results in a cleaner d= esign than
using a more general Const(text) node.

On Tue, Jun 24, 2025 at 10:57=E2= =80=AFPM jian he <jian.un= iversality@gmail.com> wrote:
in src/backend/catalog/sql_features.txt
should we mark a= ny T860, T861, T862, T863, T864
items as YES?

<= /div>
I=E2=80=99ve updated T860 and T861. I=E2=80=99m not entirely sure= about the rest so
left them unchanged.=C2=A0

=
On Tue, Jun 24, 2025 at 10:57=E2=80=AFPM jian he <jian.universality@gmail.com> wrot= e:
typedef struct Su= bscriptingRef
{
=C2=A0 =C2=A0 /* expressions that evaluate to upper c= ontainer indexes */
=C2=A0 =C2=A0 List=C2=A0 =C2=A0 =C2=A0 =C2=A0*refupp= erindexpr;
}
SubscriptingRef.refupperindexpr meaning changed,
So t= he above comments also need to be changed?

<= div>Thanks. Done.

On Tue, Jun 24, 2025 = at 10:57=E2=80=AFPM jian he <jian.universality@gmail.com> wrote:
v11-0004-Extract-coerce_jsonpath_subscript.patch
+ /*
+ * We known from can_coerce_type that coercion will succeed, so
+ * coerce_type could be used. Note the implicit coercion context, which is=
+ * required to handle subscripts of different types, similar to overloaded=
+ * functions.
+ */
+ subExpr =3D coerce_type(pstate,
+=C2=A0 subExpr, subExprType,
+=C2=A0 targetType, -1,
+=C2=A0 COERCION_IMPLICIT,
+=C2=A0 COERCE_IMPLICIT_CAST,
+=C2=A0 -1);
+ if (subExpr =3D=3D NULL)
+ ereport(ERROR,
+ (errcode(ERRCODE_DATATYPE_MISMATCH),
+ errmsg("jsonb subscript must have text type"),

the targetType can be "integer", then the error message
errmsg("jsonb subscript must have text type") would be wrong?
Also this error handling is not necessary.
since we can_coerce_type already tell us that coercion will succeed.
Also, do we really put v11-0004 as a separate patch?
= =C2=A0
Thanks for pointing this out! I=E2=80=99ve removed the unn= ecessary error
handling as you suggested. I kept v12-0004 as a separate = patch to make
the review easier, but I=E2=80=99ll leave it up to the com= mitter to decide
whether to squash it with the other commits.

On Tue, Jun 24, 2025 at 10:57=E2=80=AFPM jian he = <jian.universality@gmail.= com> wrote:
i= n gram.y we have:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 if (!IsA($5, A_Const) ||
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 castNode(A_Const, $= 5)->val.node.type !=3D T_String)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ereport(ERROR,
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 errmsg("only string constants a= re
supported in JSON_TABLE path specification"),
so simply, in m= ake_jsonpath_item_expr we can

=C2=A0 =C2=A0 expr =3D transformExpr(p= state, expr, pstate->p_expr_kind);
=C2=A0 =C2=A0 if (!IsA(expr, Const= ) || ((Const *) expr)->consttype !=3D INT4OID)
=C2=A0 =C2=A0 =C2=A0 = =C2=A0 ereport(ERROR,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 errcode(ERRCODE_DATATYPE_MISMATCH),
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 errmsg("only integer constants are support= ed in jsonb
simplified accessor subscripting"),
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 parser_errposition(pstate, exprLo= cation(expr)));

because I think the current error message "got = type: unknown" is not good.
select ('123'::jsonb).a['1&= #39;];
ERROR:=C2=A0 jsonb simplified accessor supports subscripting in t= ype: INT4,
got type: unknown
then we don't need two "ereport= (ERROR" within make_jsonpath_item_expr
we can also Assert (cnst->= ;constisnull) is false.
see gram.y:16976
=C2=A0
Thanks for pointing this out! In v12, I added support for mixed
s= ubscripting syntax, and updated the ERROR (or WARNING) messages as
follo= ws:

postgres=3D# SELECT (jb)['a'].b FR= OM test_jsonb_dot_notation; -- returns an array due to lax mode
=C2=A0 = =C2=A0 =C2=A0b
------------
=C2=A0["c", "d"]
(= 1 row)

postgres=3D# SELECT (jb).a['b'] FROM test_jsonb_dot_n= otation; -- returns NULL due to strict mode with warnings
WARNING: =C2= =A001000: mixed usage of jsonb simplified accessor syntax and jsonb subscri= pting.
LINE 1: SELECT (jb).a['b'] FROM test_jsonb_dot_notation;<= br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 ^
HINT: =C2=A0use dot-notation for member access, or use non-null= integer constants subscripting for array access.
LOCATION: =C2=A0jsonb_= subscript_make_jsonpath, jsonbsubs.c:366
=C2=A0a
---

(1 row)
postgres=3D# select ('{"a": 1}'::jsonb)['a'= :'b']; -- fails
ERROR: =C2=A042804: only non-null integer consta= nts are supported for jsonb simplified accessor subscripting
LINE 1: sel= ect ('{"a": 1}'::jsonb)['a':'b'];
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0^
HINT: =C2=A0use int da= ta type for subscripting with slicing.
LOCATION: =C2=A0make_jsonpath_ite= m_expr, jsonbsubs.c:218

So some of the ERRORs now = disappear or downgrade=C2=A0to WARNINGs.

On Tue, Jun 24, 2025 at 10:57=E2=80=AFPM jian he <jian.universality@gmail.com> wrote:
=
I saw you introduce the w= ord "AST", for example
"Converts jsonpath AST into jsonpa= th value in binary."
I am not sure that is fine.
Fixed.=C2=A0
=C2=A0
On Tue, Jun 24, 2025 at 10:57=E2= =80=AFPM jian he <jian.un= iversality@gmail.com> wrote:
in jsonb_subscript_make_jsonpath we have:
+ foreach(lc, = *indirection)
+ {
+
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (IsA(accessor,= String))
+ ....
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 else if (IsA(accessor, = A_Star))
+ ....
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 else if (IsA(accessor, A= _Indices))
+ ....
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 else
+=C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 break;

Is the last else branch u= nreliable? since indirection only support for
String, A_Star, A_Indices,= we already have Assert in jsonb_check_jsonpath_needed
to ensure that.+ *indirection =3D list_delete_first_n(*indirection, pathlen);
also th= is is not necessary,
because pathlen will be the same length as list *in= direction in current design.

I kept thi= s logic in v12, because in order to support the mixed usage
of dot-notat= ion and existing jsonb subscripting (e.g., (jb).a['b'].c),
we ne= ed to switch between making jsonpath and transforming the upper
indexes = for evaluation. So now, *indirection =3D
list_delete_first_n(*indirectio= n, pathlen); is necessary, and pathlen
can differ.=C2=A0
<= br>
The else break; can be removed, but I choose to keep it for n= ow and
added comments to clarify the behavior.

On Wed, Jun 25, 2025 at 12:41= =E2=80=AFAM jian he <jian= .universality@gmail.com> wrote:
On Wed, Jun 25, 2025 at 1:56=E2=80=AFPM jian he <= jian.unive= rsality@gmail.com> wrote:
>
> hi.

CREATE TABLE te= st_jsonb_dot_notation AS
SELECT '{"a": [1, 2, {"b&quo= t;: "c"}, {"b": "d", "e": "f&q= uot;, "x": {"y":
"yyy", "z": &qu= ot;zzz"}}], "b": [3, 4, {"b": "g", "= ;x": {"y": "YYY", "z":
"ZZZ"= ;}}]}'::jsonb jb;
CREATE VIEW v1 AS SELECT (jb).a[3].x.y FROM test_j= sonb_dot_notation;
CREATE VIEW v2 AS SELECT (jb).a[3:].x.y[:-1] FROM tes= t_jsonb_dot_notation;
CREATE VIEW v3 AS SELECT (jb).a[:3].x.y[-1:] FROM = test_jsonb_dot_notation;

\sv v2
\sv v3
will trigger segment fa= ult.

Great catch, thanks! Fixed and add= ed your tests.

On Wed, Jun 25, 2025 at = 12:41=E2=80=AFAM jian he <jian.universality@gmail.com> wrote:
also do we need ban subscript slicing, when upper b= ound is less than
lower bound,
for example:
SELECT (jb).a[3:].x.y[= 0:'-1'::integer] AS y FROM test_jsonb_dot_notation;

I don't think we need to ban this case, since the = SQL standard doesn't
ban it, and the (empty) result seems reasonable= .


On Thu, Jun 26, 2025 at 7:10=E2= =80=AFPM jian he <jian.un= iversality@gmail.com> wrote:
in gram.y we have:
indirection_el:
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 '.' attr_name
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 $$ =3D (Node *) makeString($2);
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }

we can be sure th= at dot notation, following dot is a plain string.
then in jsonb_subscrip= t_transform, we can transform the String Node to
a TEXTOID Const.
wit= h that, most of the
v11-0005-Enable-String-node-as-field-accessors-in-ge= neric.patch
would be unnecessary.
Also in v11-0006-Implement-read-onl= y-dot-notation-for-jsonb.patch
all these with pattern
``if (IsA(expr,= String)``
can be removed.

Thanks fo= r giving so much thought into this, I really appreciate it!
As I mention= ed earlier, instead of using the Const(text) node, I added
a dedicated F= ieldAccessorExpr node for dot-notation. I think this
addresses the same = concern.=C2=A0
=C2=A0
On Thu, Jun 26, 2025 at 7:10= =E2=80=AFPM jian he <jian= .universality@gmail.com> wrote:
in transformContainerSubscripts we have:
=C2=A0 =C2= =A0 sbsref =3D makeNode(SubscriptingRef);
=C2=A0 =C2=A0 sbsref->refco= ntainertype =3D containerType;
=C2=A0 =C2=A0 sbsref->refelemtype =3D = elementType;
=C2=A0 =C2=A0 sbsref->reftypmod =3D containerTypMod;
= =C2=A0 =C2=A0 sbsref->refexpr =3D (Expr *) containerBase;
=C2=A0 =C2= =A0 sbsref->refassgnexpr =3D NULL;=C2=A0 =C2=A0 /* caller will fill if i= t's an assignment */
=C2=A0 =C2=A0 sbsroutines->transform(sbsref,= indirection, pstate,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0isSlice, isAssignment);
=
then jsonb_subscript_transform we have
=C2=A0 =C2=A0 =C2=A0 =C2=A0 s= bsref->refjsonbpath =3D
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 jso= nb_subscript_make_jsonpath(pstate, indirection,
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &sbsref->refupperin= dexpr,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 &sbsref->reflowerindexpr);
of course sbsref->refupp= erindexpr, sbsref->reflowerindexpr is NIL
since we first called jsonb= _subscript_make_jsonpath.

so we can simplify the function signature = as
static void jsonb_subscript_make_jsonpath(pstate, indirection, sbsref= )

Within jsonb_subscript_make_jsonpath we are going to populate
r= efupperindexpr, reflowerindexpr, refjsonbpath.
=C2=A0<= /div>
You are right. I applied your suggestion.
=C2=A0
<= div>On Thu, Jun 26, 2025 at 7:10=E2=80=AFPM jian he <jian.universality@gmail.com> wrote:
The attached patch addre= sses both of these issues, along with additional related
refactoring.=C2= =A0 It consolidates all the changes I think are appropriate, based on
pa= tches v1-0001 to v1-0006. This will include patches previously I sent inthe earlier thread.
=C2=A0
Thanks again for= the patch! It was really helpful! I didn't directly
apply it as I m= ade a few different choices, but I think I have
addressed all the points= you covered in it.

Let me know your thought= s!

Best,
Alex
--00000000000029f71306397a7f93-- --00000000000029f71506397a7f95 Content-Type: application/octet-stream; name="v12-0006-Implement-Jsonb-subscripting-with-slicing.patch" Content-Disposition: attachment; filename="v12-0006-Implement-Jsonb-subscripting-with-slicing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcvnjmn42 RnJvbSBlODQzNzNmMDJiMjYzNTFkMWRmOGI2NmQyNzJlNTBkMWQ4ZDZhZWZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCA4IEp1bCAyMDI1IDIyOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgNi83XSBJbXBsZW1lbnQgSnNvbmIgc3Vic2NyaXB0aW5nIHdpdGggc2xpY2luZwoK UHJldmlvdXNseSwgc2xpY2luZyB3YXMgbm90IHN1cHBvcnRlZCBmb3IganNvbmIgc3Vic2NyaXB0 aW5nLiBUaGlzIGNvbW1pdAppbXBsZW1lbnRzIHN1YnNjcmlwdGluZyB3aXRoIHNsaWNpbmcgYXMg cGFydCBvZiB0aGUgSlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yCnN5bnRheCBzcGVjaWZpZWQgaW4g U1FMOjIwMjMuCgpDby1hdXRob3JlZC1ieTogTmlraXRhIEdsdWtob3YgPGdsdWtob3Yubi5hQGdt YWlsLmNvbT4KQ28tYXV0aG9yZWQtYnk6IEFsZXhhbmRyYSBXYW5nIDxhbGV4YW5kcmEud2FuZy5v c3NAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IER1bnN0YW4gPGFuZHJld0BkdW5zbGFu ZS5uZXQ+ClJldmlld2VkLWJ5OiBNYXRoZXVzIEFsY2FudGFyYSA8bWF0aGV1c3NzaWx2OTdAZ21h aWwuY29tPgpSZXZpZXdlZC1ieTogTWFyayBEaWxnZXIgPG1hcmsuZGlsZ2VyQGVudGVycHJpc2Vk Yi5jb20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBWaWsgRmVhcmluZyA8dmlrQHBvc3RncmVzZnJpZW5kcy5vcmc+ClJldmll d2VkLWJ5OiBOaWtpdGEgTWFsYWtob3YgPGh1a3V0b2NAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog UGV0ZXIgRWlzZW50cmF1dCA8cGV0ZXJAZWlzZW50cmF1dC5vcmc+ClRlc3RlZC1ieTogTWFyayBE aWxnZXIgPG1hcmsuZGlsZ2VyQGVudGVycHJpc2VkYi5jb20+ClRlc3RlZC1ieTogSmlhbiBIZSA8 amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uYnN1YnMuYyAgICAgICAgICAgICB8ICAzMyArKystCiAuLi4vZWNwZy90ZXN0L2V4cGVjdGVk L3NxbC1zcWxqc29uLmMgICAgICAgICAgfCAgMTYgKy0KIC4uLi9lY3BnL3Rlc3QvZXhwZWN0ZWQv c3FsLXNxbGpzb24uc3RkZXJyICAgICB8ICAyNiArKy0tCiAuLi4vZWNwZy90ZXN0L2V4cGVjdGVk L3NxbC1zcWxqc29uLnN0ZG91dCAgICAgfCAgIDMgKwogc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0 L3NxbC9zcWxqc29uLnBnYyAgICAgIHwgICA3ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2pzb25iLm91dCAgICAgICAgICAgfCAxNDUgKysrKysrKysrKysrKysrKy0tCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9qc29uYi5zcWwgICAgICAgICAgICAgICAgfCAgNTMgKysrKysrLQogNyBmaWxl cyBjaGFuZ2VkLCAyNDMgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25ic3Vicy5jCmluZGV4IDgyY2Y2MGRmODIyLi5jMzVkMjA5MzNlYSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29uYnN1YnMuYwpAQCAtMTkyLDkgKzE5MiwxMCBAQCBtYWtlX2pzb25wYXRoX2l0 ZW1faW50KGludDMyIHZhbCwgTGlzdCAqKmV4cHJzKQogICogLSBwc3RhdGU6IHBhcnNlIHN0YXRl IGNvbnRleHQKICAqIC0gZXhwcjogaW5wdXQgZXhwcmVzc2lvbiBub2RlCiAgKiAtIGV4cHJzOiBs aXN0IG9mIGV4cHJlc3Npb24gbm9kZXMgKHVwZGF0ZWQgaW4gcGxhY2UpCisgKiAtIG5vX2Vycm9y OiByZXR1cm5zIE5VTEwgd2hlbiB0aGUgZGF0YSB0eXBlIGRvZXNuJ3QgbWF0Y2guIE90aGVyd2lz ZSwgZW1pdHMgYW4gRVJST1IuCiAgKi8KIHN0YXRpYyBKc29uUGF0aFBhcnNlSXRlbSAqCi1tYWtl X2pzb25wYXRoX2l0ZW1fZXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIExpc3Qg KipleHBycykKK21ha2VfanNvbnBhdGhfaXRlbV9leHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9k ZSAqZXhwciwgTGlzdCAqKmV4cHJzLCBib29sIG5vX2Vycm9yKQogewogCUNvbnN0CSAgICpjbnN0 OwogCkBAIC0yMDcsNyArMjA4LDE0IEBAIG1ha2VfanNvbnBhdGhfaXRlbV9leHByKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgTGlzdCAqKmV4cHJzKQogCQkJcmV0dXJuIG1ha2VfanNv bnBhdGhfaXRlbV9pbnQoRGF0dW1HZXRJbnQzMihjbnN0LT5jb25zdHZhbHVlKSwgZXhwcnMpOwog CX0KIAotCXJldHVybiBOVUxMOworCWlmIChub19lcnJvcikKKwkJcmV0dXJuIE5VTEw7CisJZWxz ZQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRD SCksCisJCQkJZXJybXNnKCJvbmx5IG5vbi1udWxsIGludGVnZXIgY29uc3RhbnRzIGFyZSBzdXBw b3J0ZWQgZm9yIGpzb25iIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3Vic2NyaXB0aW5nIiksCisJCQkJ ZXJyaGludCgidXNlIGludCBkYXRhIHR5cGUgZm9yIHN1YnNjcmlwdGluZyB3aXRoIHNsaWNpbmcu IiksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGV4cHIpKSk7 CiB9CiAKIC8qCkBAIC0yNzksMTkgKzI4NywyOCBAQCBqc29uYl9zdWJzY3JpcHRfbWFrZV9qc29u cGF0aChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKippbmRpcmVjdGlvbiwgU3Vic2NyaXB0aQog CiAJCQlpZiAoYWktPmlzX3NsaWNlKQogCQkJewotCQkJCU5vZGUJICAgKmV4cHIgPSBhaS0+dWlk eCA/IGFpLT51aWR4IDogYWktPmxpZHg7CisJCQkJd2hpbGUgKGxpc3RfbGVuZ3RoKHNic3JlZi0+ cmVmbG93ZXJpbmRleHByKSA8IGxpc3RfbGVuZ3RoKHNic3JlZi0+cmVmdXBwZXJpbmRleHByKSkK KwkJCQkJc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIgPSBsYXBwZW5kKHNic3JlZi0+cmVmbG93ZXJp bmRleHByLCBOVUxMKTsKKworCQkJCWlmIChhaS0+bGlkeCkKKwkJCQkJanBpLT52YWx1ZS5hcnJh eS5lbGVtc1swXS5mcm9tID0gbWFrZV9qc29ucGF0aF9pdGVtX2V4cHIocHN0YXRlLCBhaS0+bGlk eCwgJnNic3JlZi0+cmVmbG93ZXJpbmRleHByLCBmYWxzZSk7CisJCQkJZWxzZQorCQkJCQlqcGkt PnZhbHVlLmFycmF5LmVsZW1zWzBdLmZyb20gPSBtYWtlX2pzb25wYXRoX2l0ZW1faW50KDAsICZz YnNyZWYtPnJlZmxvd2VyaW5kZXhwcik7CiAKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCi0JCQkJCQkgZXJybXNnKCJqc29uYiBz dWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMiKSwKLQkJCQkJCSBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oZXhwcikpKSk7CisJCQkJaWYgKGFpLT51aWR4KQor CQkJCQlqcGktPnZhbHVlLmFycmF5LmVsZW1zWzBdLnRvID0gbWFrZV9qc29ucGF0aF9pdGVtX2V4 cHIocHN0YXRlLCBhaS0+dWlkeCwgJnNic3JlZi0+cmVmdXBwZXJpbmRleHByLCBmYWxzZSk7CisJ CQkJZWxzZQorCQkJCXsKKwkJCQkJanBpLT52YWx1ZS5hcnJheS5lbGVtc1swXS50byA9IG1ha2Vf anNvbnBhdGhfaXRlbShqcGlMYXN0KTsKKwkJCQkJc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIgPSBs YXBwZW5kKHNic3JlZi0+cmVmdXBwZXJpbmRleHByLCBOVUxMKTsKKwkJCQl9CiAJCQl9CiAJCQll bHNlCiAJCQl7CiAJCQkJSnNvblBhdGhQYXJzZUl0ZW0gKmpwaV9mcm9tID0gTlVMTDsKIAogCQkJ CUFzc2VydChhaS0+dWlkeCAmJiAhYWktPmxpZHgpOwotCQkJCWpwaV9mcm9tID0gbWFrZV9qc29u cGF0aF9pdGVtX2V4cHIocHN0YXRlLCBhaS0+dWlkeCwgJnNic3JlZi0+cmVmdXBwZXJpbmRleHBy KTsKKwkJCQlqcGlfZnJvbSA9IG1ha2VfanNvbnBhdGhfaXRlbV9leHByKHBzdGF0ZSwgYWktPnVp ZHgsICZzYnNyZWYtPnJlZnVwcGVyaW5kZXhwciwgdHJ1ZSk7CiAJCQkJaWYgKGpwaV9mcm9tID09 IE5VTEwpCiAJCQkJewogCQkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90 ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLmMgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhw ZWN0ZWQvc3FsLXNxbGpzb24uYwppbmRleCBlNmE3ZWNlNmRhYi4uOTM1YjQ3YTNiOWEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5jCisr KyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5jCkBAIC01 MDUsNyArNTA1LDcgQEAgaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KIGlmIChz cWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CiAjbGluZSAxNDIgInNxbGpzb24ucGdjIgog Ci0JLy8gZXJyb3IKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOwogCiAJeyBFQ1BH ZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QganNvbiAo ICggJ3tcImFcIjoge1wiYlwiOiAxLCBcImNcIjogMn0sIFwiYlwiOiBbe1wieFwiOiAxfSwge1wi eFwiOiBbMTIsIHtcInlcIjoxfV19XX0nIDo6IGpzb25iICkgLiAqICkiLCBFQ1BHdF9FT0lULCAK IAlFQ1BHdF9jaGFyLChqc29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFy KSwgCkBAIC01MjUsMTQgKzUyNSwyNCBAQCBpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50 KCk7fQogaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KICNsaW5lIDE0OCAic3Fs anNvbi5wZ2MiCiAKLQkvLyBlcnJvcgorCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7 CiAKLSAgeyBFQ1BHZGlzY29ubmVjdChfX0xJTkVfXywgIkNVUlJFTlQiKTsKKwl7IEVDUEdkbyhf X0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBqc29uICggKCAn e1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfSwgXCJiXCI6IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6 IFsxMiwge1wieVwiOjF9XX1dfScgOjoganNvbmIgKSAuIGIgWyA6IF0gKSIsIEVDUEd0X0VPSVQs IAorCUVDUEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNo YXIpLCAKKwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JU KTsKICNsaW5lIDE1MSAic3FsanNvbi5wZ2MiCiAKIGlmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3Fs cHJpbnQoKTt9CiAjbGluZSAxNTEgInNxbGpzb24ucGdjIgogCisJcHJpbnRmKCJGb3VuZCBqc29u PSVzXG4iLCBqc29uKTsKKworICB7IEVDUEdkaXNjb25uZWN0KF9fTElORV9fLCAiQ1VSUkVOVCIp OworI2xpbmUgMTU0ICJzcWxqc29uLnBnYyIKKworaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxw cmludCgpO30KKyNsaW5lIDE1NCAic3FsanNvbi5wZ2MiCisKIAogICByZXR1cm4gMDsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5z dGRlcnIgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3Rk ZXJyCmluZGV4IDE5ZjhjNThhZjA2Li5mM2Y4OTljNmQ4NyAxMDA2NDQKLS0tIGEvc3JjL2ludGVy ZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0ZGVycgorKysgYi9zcmMvaW50 ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3RkZXJyCkBAIC0zMzksMTMg KzMzOSwxMCBAQCBTUUwgZXJyb3I6IHNjaGVtYSAianNvbmIiIGRvZXMgbm90IGV4aXN0IG9uIGxp bmUgMTIxCiBbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAogW05PX1BJRF06 IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDE0MjogdXNpbmcgUFFleGVjCiBbTk9fUElEXTogc3FsY2E6 IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAotW05PX1BJRF06IGVjcGdfY2hlY2tfUFFyZXN1bHQgb24g bGluZSAxNDI6IGJhZCByZXNwb25zZSAtIEVSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90 IHN1cHBvcnQgc2xpY2VzCi1MSU5FIDE6IC4uLiwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfScgOjog anNvbmIgKSAuIGIgWyAxIF0gLiB4IFsgMCA6IF0gKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1tOT19QSURdOiBlY3Bn X3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMTQyOiBjb3JyZWN0bHkgZ290IDEgdHVwbGVzIHdpdGgg MSBmaWVsZHMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElE XTogZWNwZ19nZXRfZGF0YSBvbiBsaW5lIDE0MjogUkVTVUxUOiBbMTIsIHsieSI6IDF9XSBvZmZz ZXQ6IC0xOyBhcnJheTogbm8KIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAw Ci1bTk9fUElEXTogcmFpc2luZyBzcWxzdGF0ZSA0MjgwNCAoc3FsY29kZSAtNDAwKToganNvbmIg c3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzIG9uIGxpbmUgMTQyCi1bTk9fUElEXTog c3FsY2E6IGNvZGU6IC00MDAsIHN0YXRlOiA0MjgwNAotU1FMIGVycm9yOiBqc29uYiBzdWJzY3Jp cHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMgb24gbGluZSAxNDIKIFtOT19QSURdOiBlY3BnX2V4 ZWN1dGUgb24gbGluZSAxNDU6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEs ICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19JyA6OiBqc29u YiApIC4gKiApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVz c2lvbgogW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKIFtOT19QSURdOiBl Y3BnX2V4ZWN1dGUgb24gbGluZSAxNDU6IHVzaW5nIFBRZXhlYwpAQCAtMzYxLDEyICszNTgsMTcg QEAgU1FMIGVycm9yOiByb3cgZXhwYW5zaW9uIHZpYSAiKiIgaXMgbm90IHN1cHBvcnRlZCBoZXJl IG9uIGxpbmUgMTQ1CiBbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAogW05P X1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDE0ODogdXNpbmcgUFFleGVjCiBbTk9fUElEXTog c3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAotW05PX1BJRF06IGVjcGdfY2hlY2tfUFFyZXN1 bHQgb24gbGluZSAxNDg6IGJhZCByZXNwb25zZSAtIEVSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRv ZXMgbm90IHN1cHBvcnQgc2xpY2VzCi1MSU5FIDE6IC4uLngiOiAxfSwgeyJ4IjogWzEyLCB7Inki OjF9XX1dfScgOjoganNvbmIgKSBbICdiJyBdIFsgMCA6IF0gKQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1tOT19QSURd OiBlY3BnX3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMTQ4OiBjb3JyZWN0bHkgZ290IDEgdHVwbGVz IHdpdGggMSBmaWVsZHMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitb Tk9fUElEXTogZWNwZ19nZXRfZGF0YSBvbiBsaW5lIDE0ODogUkVTVUxUOiBbeyJ4IjogMX0sIHsi eCI6IFsxMiwgeyJ5IjogMX1dfV0gb2Zmc2V0OiAtMTsgYXJyYXk6IG5vCitbTk9fUElEXTogc3Fs Y2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5l IDE1MTogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIi OiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nIDo6IGpzb25iICkgLiBiIFsgOiBd ICk7IHdpdGggMCBwYXJhbWV0ZXIocykgb24gY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uCitb Tk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhl Y3V0ZSBvbiBsaW5lIDE1MTogdXNpbmcgUFFleGVjCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAs IHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfcHJvY2Vzc19vdXRwdXQgb24gbGluZSAxNTE6 IGNvcnJlY3RseSBnb3QgMSB0dXBsZXMgd2l0aCAxIGZpZWxkcworW05PX1BJRF06IHNxbGNhOiBj b2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2dldF9kYXRhIG9uIGxpbmUgMTUx OiBSRVNVTFQ6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOiAxfV19XSBvZmZzZXQ6IC0xOyBh cnJheTogbm8KIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCi1bTk9fUElE XTogcmFpc2luZyBzcWxzdGF0ZSA0MjgwNCAoc3FsY29kZSAtNDAwKToganNvbmIgc3Vic2NyaXB0 IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzIG9uIGxpbmUgMTQ4Ci1bTk9fUElEXTogc3FsY2E6IGNv ZGU6IC00MDAsIHN0YXRlOiA0MjgwNAotU1FMIGVycm9yOiBqc29uYiBzdWJzY3JpcHQgZG9lcyBu b3Qgc3VwcG9ydCBzbGljZXMgb24gbGluZSAxNDgKIFtOT19QSURdOiBlY3BnX2ZpbmlzaDogY29u bmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uIGNsb3NlZAogW05PX1BJRF06IHNxbGNhOiBjb2RlOiAw LCBzdGF0ZTogMDAwMDAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBl Y3RlZC9zcWwtc3FsanNvbi5zdGRvdXQgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0 ZWQvc3FsLXNxbGpzb24uc3Rkb3V0CmluZGV4IDQ0MmQzNjkzMWYxLi5kMDFhODQ1N2YwMSAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0 ZG91dAorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24u c3Rkb3V0CkBAIC0zNSwzICszNSw2IEBAIEZvdW5kIGpzb249bnVsbAogRm91bmQganNvbj17Ingi OiAxfQogRm91bmQganNvbj1bMSwgWzEyLCB7InkiOiAxfV1dCiBGb3VuZCBqc29uPXsieCI6IDF9 CitGb3VuZCBqc29uPVsxMiwgeyJ5IjogMX1dCitGb3VuZCBqc29uPVt7IngiOiAxfSwgeyJ4Ijog WzEyLCB7InkiOiAxfV19XQorRm91bmQganNvbj1beyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5Ijog MX1dfV0KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbi5w Z2MgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb24ucGdjCmluZGV4IDU3YTli ZmY0MjRkLi45NDIzZDI1ZmQwYiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0 L3NxbC9zcWxqc29uLnBnYworKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpz b24ucGdjCkBAIC0xNDAsMTMgKzE0MCwxNiBAQCBFWEVDIFNRTCBFTkQgREVDTEFSRSBTRUNUSU9O OwogCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CiAKIAlFWEVDIFNRTCBTRUxFQ1Qg SlNPTigoJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIs IHsieSI6MX1dfV19Jzo6anNvbmIpLmJbMV0ueFswOl0pIElOVE8gOmpzb247Ci0JLy8gZXJyb3IK KwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOwogCiAJRVhFQyBTUUwgU0VMRUNUIEpT T04oKCd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7 InkiOjF9XX1dfSc6Ompzb25iKS4qKSBJTlRPIDpqc29uOwogCS8vIGVycm9yCiAKIAlFWEVDIFNR TCBTRUxFQ1QgSlNPTigoJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7 IngiOiBbMTIsIHsieSI6MX1dfV19Jzo6anNvbmIpWydiJ11bMDpdKSBJTlRPIDpqc29uOwotCS8v IGVycm9yCisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCUVYRUMgU1FMIFNF TEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6 IFsxMiwgeyJ5IjoxfV19XX0nOjpqc29uYikuYls6XSkgSU5UTyA6anNvbjsKKwlwcmludGYoIkZv dW5kIGpzb249JXNcbiIsIGpzb24pOwogCiAgIEVYRUMgU1FMIERJU0NPTk5FQ1Q7CiAKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9qc29uYi5vdXQKaW5kZXggMzBhNzAyMzUxM2QuLjRiM2E1OTZlNjk3IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dApAQCAtNTI1NSwyMyArNTI1NSwzNCBAQCBz ZWxlY3QgKCd7ImEiOiBbImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIsICJjY2MiXX1dLCAiYiI6 ICJiYiJ9Jzo6anNvbmIpLmFbMV0uYgogKDEgcm93KQogCiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompz b25iKVsnYSc6J2InXTsgLS0gZmFpbHMKLUVSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90 IHN1cHBvcnQgc2xpY2VzCitFUlJPUjogIG9ubHkgbm9uLW51bGwgaW50ZWdlciBjb25zdGFudHMg YXJlIHN1cHBvcnRlZCBmb3IganNvbmIgc2ltcGxpZmllZCBhY2Nlc3NvciBzdWJzY3JpcHRpbmcK IExJTkUgMTogc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ2EnOidiJ107Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK0hJTlQ6ICB1c2UgaW50IGRhdGEgdHlwZSBmb3Igc3Vic2NyaXB0aW5nIHdp dGggc2xpY2luZy4KIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzE6Ml07Ci1FUlJP UjogIGpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcwotTElORSAxOiBzZWxl Y3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsxOjJdOwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICBqc29uYiAgICAKKy0tLS0tLS0tLS0tLS0KKyBb IjIiLCBudWxsXQorKDEgcm93KQorCiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVs6 Ml07Ci1FUlJPUjogIGpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcwotTElO RSAxOiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVs6Ml07Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgIGpzb25iICAgICAgCistLS0tLS0t LS0tLS0tLS0tCisgWzEsICIyIiwgbnVsbF0KKygxIHJvdykKKwogc2VsZWN0ICgnWzEsICIyIiwg bnVsbF0nOjpqc29uYilbMTpdOwotRVJST1I6ICBqc29uYiBzdWJzY3JpcHQgZG9lcyBub3Qgc3Vw cG9ydCBzbGljZXMKLUxJTkUgMTogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMTpd OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAganNvbmIg ICAgCistLS0tLS0tLS0tLS0tCisgWyIyIiwgbnVsbF0KKygxIHJvdykKKwogc2VsZWN0ICgnWzEs ICIyIiwgbnVsbF0nOjpqc29uYilbOl07Ci1FUlJPUjogIGpzb25iIHN1YnNjcmlwdCBkb2VzIG5v dCBzdXBwb3J0IHNsaWNlcworICAgICBqc29uYiAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIFsx LCAiMiIsIG51bGxdCisoMSByb3cpCisKIGNyZWF0ZSBURU1QIFRBQkxFIHRlc3RfanNvbmJfc3Vi c2NyaXB0ICgKICAgICAgICBpZCBpbnQsCiAgICAgICAgdGVzdF9qc29uIGpzb25iCkBAIC02MDEz LDggKzYwMjQsNDIgQEAgU0VMRUNUIChqYikuYS5iLmMgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKICAKICgxIHJvdykKIAotU0VMRUNUICgoamIpLmIpWzpdLnggRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbiB0OyAtLSBmYWlscwotRVJST1I6ICBqc29uYiBzdWJzY3JpcHQgZG9lcyBu b3Qgc3VwcG9ydCBzbGljZXMKK1NFTEVDVCAoKGpiKS5iKVs6XS54IEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb24gdDsKKyAgICAgICAgICAgIHggICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHsieSI6ICJZWVkiLCAieiI6ICJaWloifQorKDEgcm93KQorCitTRUxF Q1QgKGpiKS5hWzI6M10uYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICBiICAg ICAgCistLS0tLS0tLS0tLS0KKyBbImMiLCAiZCJdCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmFb MjpdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgYiAgICAgIAorLS0tLS0t LS0tLS0tCisgWyJjIiwgImQiXQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hWzoyXS5iIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgIGIgIAorLS0tLS0KKyAiYyIKKygxIHJvdykKKwor U0VMRUNUIChqYikuYVs6XS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgIGIg ICAgICAKKy0tLS0tLS0tLS0tLQorIFsiYyIsICJkIl0KKygxIHJvdykKKworU0VMRUNUICgoamIp LmIpWzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworICAgICAgICAgICAgeCAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ5IjogIllZWSIsICJ6 IjogIlpaWiJ9CisoMSByb3cpCisKIFNFTEVDVCAoamIpLmEuKiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOyAtLSBmYWlscwogRVJST1I6ICB0eXBlIGpzb25iIGlzIG5vdCBjb21wb3NpdGUK IC0tIGV4cGxhaW5zIHNob3VsZCB3b3JrCkBAIC02MDUwLDYgKzYwOTUsMjggQEAgQ1JFQVRFIFZJ RVcgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMgU0VMRUNUIChqYikuYVszXS54LnkgRlJP TSB0ZXN0X2pzb25iX2QKIENSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnRlc3RfanNvbmJf ZG90X25vdGF0aW9uX3YxIEFTCiAgU0VMRUNUIChqYikuYVszXS54LnkgQVMgeQogICAgRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorQ1JFQVRFIFZJRVcgdjIgQVMgU0VMRUNUIChqYikuYVsz Ol0ueC55WzotMV0gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB2MgorQ1JFQVRF IE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudjIgQVMKKyBTRUxFQ1QgKGpiKS5hWzM6XS54LnlbMDon LTEnOjppbnRlZ2VyXSBBUyB5CisgICBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uCitTRUxF Q1QgKiBmcm9tIHYyOworIHkgCistLS0KKyAKKygxIHJvdykKKworQ1JFQVRFIFZJRVcgdjMgQVMg U0VMRUNUIChqYikuYVs6M10ueC55Wy0xOl0gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK K1xzdiB2MworQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudjMgQVMKKyBTRUxFQ1QgKGpi KS5hWzA6M10ueC55WyctMSc6OmludGVnZXI6XSBBUyB5CisgICBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uCitTRUxFQ1QgKiBmcm9tIHYzOworICAgeSAgIAorLS0tLS0tLQorICJ5eXkiCiso MSByb3cpCisKIC0tIG1peGVkIHN5bnRheAogRFJPUCBWSUVXIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uX3YxOwogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYSddLmIg RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKQEAgLTYyOTQsNSArNjM2MSw1NSBAQCBTRUxF Q1QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOwogKDEgcm93KQogCiBEUk9QIFZJ RVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworLS0ganNvbmIgYXJyYXkgYWNj ZXNzIGluIHBscGdzcWwKK0RPICQkCisgICAgREVDTEFSRQorICAgICAgICBhIGpzb25iIDo9ICdb MSwyLDMsNCw1LDYsN10nOjpqc29uYjsKKyAgICBCRUdJTgorICAgICAgICBXSElMRSBhIElTIE5P VCBOVUxMCisgICAgICAgICAgICBMT09QCisgICAgICAgICAgICAgICAgUkFJU0UgTk9USUNFICcl JywgYTsKKyAgICAgICAgICAgICAgICBhIDo9IGFbMjpdOworICAgICAgICAgICAgRU5EIExPT1A7 CisgICAgRU5ECiskJCBMQU5HVUFHRSBwbHBnc3FsOworTk9USUNFOiAgWzEsIDIsIDMsIDQsIDUs IDYsIDddCitOT1RJQ0U6ICBbMywgNCwgNSwgNiwgN10KK05PVElDRTogIFs1LCA2LCA3XQorTk9U SUNFOiAgNworLS0ganNvbmIgZG90IGFjY2VzcyBpbiBwbHBnc3FsCitETyAkJAorICAgIERFQ0xB UkUKKyAgICAgICAgYSBqc29uYiA6PSAneyIiOiA2LCAiTlUiOiBbeyIiOiBbWzNdXX0sIFs2XSwg WzJdLCAiYkNpIl0sICJhYWYiOiBbLTYsIC04XX0nOjpqc29uYjsKKyAgICBCRUdJTgorICAgICAg ICBXSElMRSBhIElTIE5PVCBOVUxMCisgICAgICAgICAgICBMT09QCisgICAgICAgICAgICAgICAg UkFJU0UgTk9USUNFICclJywgYTsKKyAgICAgICAgICAgICAgICBhIDo9IENPQUxFU0NFKGEuIk5V IiwgYVsyXSk7IC0tIGZhaWxzCisgICAgICAgICAgICBFTkQgTE9PUDsKKyAgICBFTkQKKyQkIExB TkdVQUdFIHBscGdzcWw7CitOT1RJQ0U6ICB7IiI6IDYsICJOVSI6IFt7IiI6IFtbM11dfSwgWzZd LCBbMl0sICJiQ2kiXSwgImFhZiI6IFstNiwgLThdfQorRVJST1I6ICBtaXNzaW5nIEZST00tY2xh dXNlIGVudHJ5IGZvciB0YWJsZSAiYSIKK0xJTkUgMTogYSA6PSBDT0FMRVNDRShhLiJOVSIsIGFb Ml0pCisgICAgICAgICAgICAgICAgICAgICAgXgorUVVFUlk6ICBhIDo9IENPQUxFU0NFKGEuIk5V IiwgYVsyXSkKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBpbmxpbmVfY29kZV9ibG9jayBs aW5lIDggYXQgYXNzaWdubWVudAorRE8gJCQKKyAgICBERUNMQVJFCisgICAgICAgIGEganNvbmIg Oj0gJ3siIjogNiwgIk5VIjogW3siIjogW1szXV19LCBbNl0sIFsyXSwgImJDaSJdLCAiYWFmIjog Wy02LCAtOF19Jzo6anNvbmI7CisgICAgQkVHSU4KKyAgICAgICAgV0hJTEUgYSBJUyBOT1QgTlVM TAorICAgICAgICAgICAgTE9PUAorICAgICAgICAgICAgICAgIFJBSVNFIE5PVElDRSAnJScsIGE7 CisgICAgICAgICAgICAgICAgYSA6PSBDT0FMRVNDRSgoYSkuIk5VIiwgYVsyXSk7IC0tIHN1Y2Nl ZWRzCisgICAgICAgICAgICBFTkQgTE9PUDsKKyAgICBFTkQKKyQkIExBTkdVQUdFIHBscGdzcWw7 CitOT1RJQ0U6ICB7IiI6IDYsICJOVSI6IFt7IiI6IFtbM11dfSwgWzZdLCBbMl0sICJiQ2kiXSwg ImFhZiI6IFstNiwgLThdfQorTk9USUNFOiAgW3siIjogW1szXV19LCBbNl0sIFsyXSwgImJDaSJd CitOT1RJQ0U6ICBbMl0KIC0tIGNsZWFuIHVwCitEUk9QIFZJRVcgdjI7CitEUk9QIFZJRVcgdjM7 CiBEUk9QIFRBQkxFIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvanNvbmIuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3Fs CmluZGV4IGEwZmFkOTBhOWQ1Li5iOGVjZWZkYTA0ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvanNvbmIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbApA QCAtMTYyMyw3ICsxNjIzLDEyIEBAIFNFTEVDVCAoamIpLmFbMl0uYiBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOwogU0VMRUNUIChqYikuYS54LnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKIFNFTEVDVCAoamIpLmIueC56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CiBT RUxFQ1QgKGpiKS5hLmIuYyBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwotU0VMRUNUICgo amIpLmIpWzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OyAtLSBmYWlscworU0VM RUNUICgoamIpLmIpWzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworU0VMRUNU IChqYikuYVsyOjNdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIp LmFbMjpdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmFbOjJd LmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmFbOl0uYiBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUICgoamIpLmIpWzpdLnggRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbiB0OwogU0VMRUNUIChqYikuYS4qIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247IC0tIGZhaWxzCiAKIC0tIGV4cGxhaW5zIHNob3VsZCB3b3JrCkBAIC0xNjM1 LDYgKzE2NDAsMTIgQEAgU0VMRUNUIChqYikuYVsxXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOwogLS0gdmlld3Mgc2hvdWxkIHdvcmsKIENSRUFURSBWSUVXIHRlc3RfanNvbmJfZG90X25v dGF0aW9uX3YxIEFTIFNFTEVDVCAoamIpLmFbM10ueC55IEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247CiBcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEKK0NSRUFURSBWSUVXIHYyIEFT IFNFTEVDVCAoamIpLmFbMzpdLngueVs6LTFdIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 Citcc3YgdjIKK1NFTEVDVCAqIGZyb20gdjI7CitDUkVBVEUgVklFVyB2MyBBUyBTRUxFQ1QgKGpi KS5hWzozXS54LnlbLTE6XSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHYzCitT RUxFQ1QgKiBmcm9tIHYzOwogCiAtLSBtaXhlZCBzeW50YXgKIERST1AgVklFVyB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbl92MTsKQEAgLTE2OTUsNSArMTcwNiw0NSBAQCBTRUxFQ1QgKGpiKVsnYidd Wyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwogU0VMRUNUICogZnJvbSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKIERST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rf bm90YXRpb25fdjE7CiAKKy0tIGpzb25iIGFycmF5IGFjY2VzcyBpbiBwbHBnc3FsCitETyAkJAor ICAgIERFQ0xBUkUKKyAgICAgICAgYSBqc29uYiA6PSAnWzEsMiwzLDQsNSw2LDddJzo6anNvbmI7 CisgICAgQkVHSU4KKyAgICAgICAgV0hJTEUgYSBJUyBOT1QgTlVMTAorICAgICAgICAgICAgTE9P UAorICAgICAgICAgICAgICAgIFJBSVNFIE5PVElDRSAnJScsIGE7CisgICAgICAgICAgICAgICAg YSA6PSBhWzI6XTsKKyAgICAgICAgICAgIEVORCBMT09QOworICAgIEVORAorJCQgTEFOR1VBR0Ug cGxwZ3NxbDsKKworLS0ganNvbmIgZG90IGFjY2VzcyBpbiBwbHBnc3FsCitETyAkJAorICAgIERF Q0xBUkUKKyAgICAgICAgYSBqc29uYiA6PSAneyIiOiA2LCAiTlUiOiBbeyIiOiBbWzNdXX0sIFs2 XSwgWzJdLCAiYkNpIl0sICJhYWYiOiBbLTYsIC04XX0nOjpqc29uYjsKKyAgICBCRUdJTgorICAg ICAgICBXSElMRSBhIElTIE5PVCBOVUxMCisgICAgICAgICAgICBMT09QCisgICAgICAgICAgICAg ICAgUkFJU0UgTk9USUNFICclJywgYTsKKyAgICAgICAgICAgICAgICBhIDo9IENPQUxFU0NFKGEu Ik5VIiwgYVsyXSk7IC0tIGZhaWxzCisgICAgICAgICAgICBFTkQgTE9PUDsKKyAgICBFTkQKKyQk IExBTkdVQUdFIHBscGdzcWw7CisKK0RPICQkCisgICAgREVDTEFSRQorICAgICAgICBhIGpzb25i IDo9ICd7IiI6IDYsICJOVSI6IFt7IiI6IFtbM11dfSwgWzZdLCBbMl0sICJiQ2kiXSwgImFhZiI6 IFstNiwgLThdfSc6Ompzb25iOworICAgIEJFR0lOCisgICAgICAgIFdISUxFIGEgSVMgTk9UIE5V TEwKKyAgICAgICAgICAgIExPT1AKKyAgICAgICAgICAgICAgICBSQUlTRSBOT1RJQ0UgJyUnLCBh OworICAgICAgICAgICAgICAgIGEgOj0gQ09BTEVTQ0UoKGEpLiJOVSIsIGFbMl0pOyAtLSBzdWNj ZWVkcworICAgICAgICAgICAgRU5EIExPT1A7CisgICAgRU5ECiskJCBMQU5HVUFHRSBwbHBnc3Fs OworCiAtLSBjbGVhbiB1cAorRFJPUCBWSUVXIHYyOworRFJPUCBWSUVXIHYzOwogRFJPUCBUQUJM RSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0t IAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --00000000000029f71506397a7f95 Content-Type: application/octet-stream; name="v12-0004-Extract-coerce_jsonpath_subscript.patch" Content-Disposition: attachment; filename="v12-0004-Extract-coerce_jsonpath_subscript.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcvnjmn74 RnJvbSBkZmFhNTE5MzA2YzUyOGNjMWNlMGVmNjdkYTFjYzhmMWIxZTA1OTNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCA4IEp1bCAyMDI1IDIyOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgNC83XSBFeHRyYWN0IGNvZXJjZV9qc29ucGF0aF9zdWJzY3JpcHQoKQoKVGhpcyBp cyBhIHByZXBhcmF0aW9uIHN0ZXAgZm9yIGEgZnV0dXJlIGNvbW1pdCB0aGF0IHdpbGwgcmV1c2Ug dGhlCmFmb3JlbWVudGlvbmVkIGZ1bmN0aW9uLgoKQ28tYXV0aG9yZWQtYnk6IE5pa2l0YSBHbHVr aG92IDxnbHVraG92Lm4uYUBnbWFpbC5jb20+CkNvLWF1dGhvcmVkLWJ5OiBBbGV4YW5kcmEgV2Fu ZyA8YWxleGFuZHJhLndhbmcub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBEdW5z dGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRhcmEg PG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEppYW4gSGUgPGppYW4udW5p dmVyc2FsaXR5QGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJz LmMgfCAxMzAgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg NjUgaW5zZXJ0aW9ucygrKSwgNjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vi cy5jCmluZGV4IGEwZDM4YTBmZDgwLi41ZDBlYzZiZjJmYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u YnN1YnMuYwpAQCAtMzIsNiArMzIsNjkgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbmJTdWJXb3Jrc3Bh Y2UKIAlEYXR1bQkgICAqaW5kZXg7CQkJLyogU3Vic2NyaXB0IHZhbHVlcyBpbiBEYXR1bSBmb3Jt YXQgKi8KIH0gSnNvbmJTdWJXb3Jrc3BhY2U7CiAKK3N0YXRpYyBOb2RlICoKK2NvZXJjZV9qc29u cGF0aF9zdWJzY3JpcHQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpzdWJFeHByLCBPaWQgbnVt dHlwZSkKK3sKKwlPaWQJCQlzdWJFeHByVHlwZSA9IGV4cHJUeXBlKHN1YkV4cHIpOworCU9pZAkJ CXRhcmdldFR5cGUgPSBVTktOT1dOT0lEOworCisJaWYgKHN1YkV4cHJUeXBlICE9IFVOS05PV05P SUQpCisJeworCQlPaWQJCQl0YXJnZXRzWzJdID0ge251bXR5cGUsIFRFWFRPSUR9OworCisJCS8q CisJCSAqIEpzb25iIGNhbiBoYW5kbGUgbXVsdGlwbGUgc3Vic2NyaXB0IHR5cGVzLCBidXQgY2Fz ZXMgd2hlbiBhCisJCSAqIHN1YnNjcmlwdCBjb3VsZCBiZSBjb2VyY2VkIHRvIG11bHRpcGxlIHRh cmdldCB0eXBlcyBtdXN0IGJlCisJCSAqIGF2b2lkZWQsIHNpbWlsYXIgdG8gb3ZlcmxvYWRlZCBm dW5jdGlvbnMuIEl0IGNvdWxkIGJlIHBvc3NpYmx5CisJCSAqIGV4dGVuZCB3aXRoIGpzb25wYXRo IGluIHRoZSBmdXR1cmUuCisJCSAqLworCQlmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykKKwkJ eworCQkJaWYgKGNhbl9jb2VyY2VfdHlwZSgxLCAmc3ViRXhwclR5cGUsICZ0YXJnZXRzW2ldLCBD T0VSQ0lPTl9JTVBMSUNJVCkpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBPbmUgdHlwZSBoYXMgYWxy ZWFkeSBzdWNjZWVkZWQsIGl0IG1lYW5zIHRoZXJlIGFyZSB0d28KKwkJCQkgKiBjb2VyY2lvbiB0 YXJnZXRzIHBvc3NpYmxlLCBmYWlsdXJlLgorCQkJCSAqLworCQkJCWlmICh0YXJnZXRUeXBlICE9 IFVOS05PV05PSUQpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCQkJIGVycm1zZygic3Vic2NyaXB0IHR5cGUgJXMg aXMgbm90IHN1cHBvcnRlZCIsIGZvcm1hdF90eXBlX2JlKHN1YkV4cHJUeXBlKSksCisJCQkJCQkJ IGVycmhpbnQoImpzb25iIHN1YnNjcmlwdCBtdXN0IGJlIGNvZXJjaWJsZSB0byBvbmx5IG9uZSB0 eXBlLCBpbnRlZ2VyIG9yIHRleHQuIiksCisJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGV4cHJMb2NhdGlvbihzdWJFeHByKSkpKTsKKworCQkJCXRhcmdldFR5cGUgPSB0YXJnZXRz W2ldOworCQkJfQorCQl9CisKKwkJLyoKKwkJICogTm8gc3VpdGFibGUgdHlwZXMgd2VyZSBmb3Vu ZCwgZmFpbHVyZS4KKwkJICovCisJCWlmICh0YXJnZXRUeXBlID09IFVOS05PV05PSUQpCisJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwK KwkJCQkJIGVycm1zZygic3Vic2NyaXB0IHR5cGUgJXMgaXMgbm90IHN1cHBvcnRlZCIsIGZvcm1h dF90eXBlX2JlKHN1YkV4cHJUeXBlKSksCisJCQkJCSBlcnJoaW50KCJqc29uYiBzdWJzY3JpcHQg bXVzdCBiZSBjb2VyY2libGUgdG8gZWl0aGVyIGludGVnZXIgb3IgdGV4dC4iKSwKKwkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihzdWJFeHByKSkpKTsKKwl9CisJ ZWxzZQorCQl0YXJnZXRUeXBlID0gVEVYVE9JRDsKKworCS8qCisJICogV2Uga25vd24gZnJvbSBj YW5fY29lcmNlX3R5cGUgdGhhdCBjb2VyY2lvbiB3aWxsIHN1Y2NlZWQsIHNvCisJICogY29lcmNl X3R5cGUgY291bGQgYmUgdXNlZC4gTm90ZSB0aGUgaW1wbGljaXQgY29lcmNpb24gY29udGV4dCwg d2hpY2ggaXMKKwkgKiByZXF1aXJlZCB0byBoYW5kbGUgc3Vic2NyaXB0cyBvZiBkaWZmZXJlbnQg dHlwZXMsIHNpbWlsYXIgdG8gb3ZlcmxvYWRlZAorCSAqIGZ1bmN0aW9ucy4KKwkgKi8KKwlzdWJF eHByID0gY29lcmNlX3R5cGUocHN0YXRlLAorCQkJCQkJICBzdWJFeHByLCBzdWJFeHByVHlwZSwK KwkJCQkJCSAgdGFyZ2V0VHlwZSwgLTEsCisJCQkJCQkgIENPRVJDSU9OX0lNUExJQ0lULAorCQkJ CQkJICBDT0VSQ0VfSU1QTElDSVRfQ0FTVCwKKwkJCQkJCSAgLTEpOworCisJcmV0dXJuIHN1YkV4 cHI7Cit9CiAKIC8qCiAgKiBGaW5pc2ggcGFyc2UgYW5hbHlzaXMgb2YgYSBTdWJzY3JpcHRpbmdS ZWYgZXhwcmVzc2lvbiBmb3IgYSBqc29uYi4KQEAgLTUxLDcgKzExNCw3IEBAIGpzb25iX3N1YnNj cmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAKIAkvKgogCSAqIFRyYW5z Zm9ybSBhbmQgY29udmVydCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb25zLiBKc29uYiBzdWJzY3Jp cHRpbmcKLQkgKiBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcywgbG9vayBvbmx5IGFuZCB0aGUgdXBw ZXIgaW5kZXguCisJICogZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMsIGxvb2sgb25seSBhdCB0aGUg dXBwZXIgaW5kZXguCiAJICovCiAJZm9yZWFjaChpZHgsICppbmRpcmVjdGlvbikKIAl7CkBAIC03 NSw3MSArMTM4LDggQEAganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYg KnNic3JlZiwKIAogCQlpZiAoYWktPnVpZHgpCiAJCXsKLQkJCU9pZAkJCXN1YkV4cHJUeXBlID0g SW52YWxpZE9pZCwKLQkJCQkJCXRhcmdldFR5cGUgPSBVTktOT1dOT0lEOwotCiAJCQlzdWJFeHBy ID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIGFpLT51aWR4LCBwc3RhdGUtPnBfZXhwcl9raW5kKTsK LQkJCXN1YkV4cHJUeXBlID0gZXhwclR5cGUoc3ViRXhwcik7Ci0KLQkJCWlmIChzdWJFeHByVHlw ZSAhPSBVTktOT1dOT0lEKQotCQkJewotCQkJCU9pZAkJCXRhcmdldHNbMl0gPSB7SU5UNE9JRCwg VEVYVE9JRH07Ci0KLQkJCQkvKgotCQkJCSAqIEpzb25iIGNhbiBoYW5kbGUgbXVsdGlwbGUgc3Vi c2NyaXB0IHR5cGVzLCBidXQgY2FzZXMgd2hlbiBhCi0JCQkJICogc3Vic2NyaXB0IGNvdWxkIGJl IGNvZXJjZWQgdG8gbXVsdGlwbGUgdGFyZ2V0IHR5cGVzIG11c3QgYmUKLQkJCQkgKiBhdm9pZGVk LCBzaW1pbGFyIHRvIG92ZXJsb2FkZWQgZnVuY3Rpb25zLiBJdCBjb3VsZCBiZQotCQkJCSAqIHBv c3NpYmx5IGV4dGVuZCB3aXRoIGpzb25wYXRoIGluIHRoZSBmdXR1cmUuCi0JCQkJICovCi0JCQkJ Zm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspCi0JCQkJewotCQkJCQlpZiAoY2FuX2NvZXJjZV90 eXBlKDEsICZzdWJFeHByVHlwZSwgJnRhcmdldHNbaV0sIENPRVJDSU9OX0lNUExJQ0lUKSkKLQkJ CQkJewotCQkJCQkJLyoKLQkJCQkJCSAqIE9uZSB0eXBlIGhhcyBhbHJlYWR5IHN1Y2NlZWRlZCwg aXQgbWVhbnMgdGhlcmUgYXJlCi0JCQkJCQkgKiB0d28gY29lcmNpb24gdGFyZ2V0cyBwb3NzaWJs ZSwgZmFpbHVyZS4KLQkJCQkJCSAqLwotCQkJCQkJaWYgKHRhcmdldFR5cGUgIT0gVU5LTk9XTk9J RCkKLQkJCQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRB VFlQRV9NSVNNQVRDSCksCi0JCQkJCQkJCQkgZXJybXNnKCJzdWJzY3JpcHQgdHlwZSAlcyBpcyBu b3Qgc3VwcG9ydGVkIiwgZm9ybWF0X3R5cGVfYmUoc3ViRXhwclR5cGUpKSwKLQkJCQkJCQkJCSBl cnJoaW50KCJqc29uYiBzdWJzY3JpcHQgbXVzdCBiZSBjb2VyY2libGUgdG8gb25seSBvbmUgdHlw ZSwgaW50ZWdlciBvciB0ZXh0LiIpLAotCQkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGV4cHJMb2NhdGlvbihzdWJFeHByKSkpKTsKLQotCQkJCQkJdGFyZ2V0VHlwZSA9IHRhcmdl dHNbaV07Ci0JCQkJCX0KLQkJCQl9Ci0KLQkJCQkvKgotCQkJCSAqIE5vIHN1aXRhYmxlIHR5cGVz IHdlcmUgZm91bmQsIGZhaWx1cmUuCi0JCQkJICovCi0JCQkJaWYgKHRhcmdldFR5cGUgPT0gVU5L Tk9XTk9JRCkKLQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RB VEFUWVBFX01JU01BVENIKSwKLQkJCQkJCQkgZXJybXNnKCJzdWJzY3JpcHQgdHlwZSAlcyBpcyBu b3Qgc3VwcG9ydGVkIiwgZm9ybWF0X3R5cGVfYmUoc3ViRXhwclR5cGUpKSwKLQkJCQkJCQkgZXJy aGludCgianNvbmIgc3Vic2NyaXB0IG11c3QgYmUgY29lcmNpYmxlIHRvIGVpdGhlciBpbnRlZ2Vy IG9yIHRleHQuIiksCi0JCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2Nh dGlvbihzdWJFeHByKSkpKTsKLQkJCX0KLQkJCWVsc2UKLQkJCQl0YXJnZXRUeXBlID0gVEVYVE9J RDsKLQotCQkJLyoKLQkJCSAqIFdlIGtub3duIGZyb20gY2FuX2NvZXJjZV90eXBlIHRoYXQgY29l cmNpb24gd2lsbCBzdWNjZWVkLCBzbwotCQkJICogY29lcmNlX3R5cGUgY291bGQgYmUgdXNlZC4g Tm90ZSB0aGUgaW1wbGljaXQgY29lcmNpb24gY29udGV4dCwKLQkJCSAqIHdoaWNoIGlzIHJlcXVp cmVkIHRvIGhhbmRsZSBzdWJzY3JpcHRzIG9mIGRpZmZlcmVudCB0eXBlcywKLQkJCSAqIHNpbWls YXIgdG8gb3ZlcmxvYWRlZCBmdW5jdGlvbnMuCi0JCQkgKi8KLQkJCXN1YkV4cHIgPSBjb2VyY2Vf dHlwZShwc3RhdGUsCi0JCQkJCQkJCSAgc3ViRXhwciwgc3ViRXhwclR5cGUsCi0JCQkJCQkJCSAg dGFyZ2V0VHlwZSwgLTEsCi0JCQkJCQkJCSAgQ09FUkNJT05fSU1QTElDSVQsCi0JCQkJCQkJCSAg Q09FUkNFX0lNUExJQ0lUX0NBU1QsCi0JCQkJCQkJCSAgLTEpOwotCQkJaWYgKHN1YkV4cHIgPT0g TlVMTCkKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQ RV9NSVNNQVRDSCksCi0JCQkJCQkgZXJybXNnKCJqc29uYiBzdWJzY3JpcHQgbXVzdCBoYXZlIHRl eHQgdHlwZSIpLAotCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlv bihzdWJFeHByKSkpKTsKKwkJCXN1YkV4cHIgPSBjb2VyY2VfanNvbnBhdGhfc3Vic2NyaXB0KHBz dGF0ZSwgc3ViRXhwciwgSU5UNE9JRCk7CiAJCX0KIAkJZWxzZQogCQl7Ci0tIAoyLjM5LjUgKEFw cGxlIEdpdC0xNTQpCgo= --00000000000029f71506397a7f95 Content-Type: application/octet-stream; name="v12-0001-Allow-transformation-of-only-a-sublist-of-subscr.patch" Content-Disposition: attachment; filename="v12-0001-Allow-transformation-of-only-a-sublist-of-subscr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcvnjmmv0 RnJvbSAxOGYwZjA4NmQ1NWViNDRhZDZkMjg1M2JjMzk5OGE0M2RkYzczYWJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFR1ZSwgOCBKdWwgMjAyNSAyMjoxODowNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg djEyIDEvN10gQWxsb3cgdHJhbnNmb3JtYXRpb24gb2Ygb25seSBhIHN1Ymxpc3Qgb2Ygc3Vic2Ny aXB0cwoKVGhpcyBpcyBhIHByZXBhcmF0aW9uIHN0ZXAgZm9yIGFsbG93aW5nIHN1YnNjcmlwdGlu ZyBjb250YWluZXJzIHRvCnRyYW5zZm9ybSBvbmx5IGEgcHJlZml4IG9mIGFuIGluZGlyZWN0aW9u IGxpc3QgYW5kIG1vZGlmeSB0aGUgbGlzdAppbi1wbGFjZSBieSByZW1vdmluZyB0aGUgcHJvY2Vz c2VkIGVsZW1lbnRzLiBDdXJyZW50bHksIGFsbCBlbGVtZW50cwphcmUgY29uc3VtZWQsIGFuZCB0 aGUgbGlzdCBpcyBzZXQgdG8gTklMIGFmdGVyIHRyYW5zZm9ybWF0aW9uLgoKSW4gdGhlIGZvbGxv d2luZyBjb21taXQsIHN1YnNjcmlwdGluZyBjb250YWluZXJzIHdpbGwgZ2FpbiB0aGUKZmxleGli aWxpdHkgdG8gc3RvcCB0cmFuc2Zvcm1hdGlvbiB3aGVuIGVuY291bnRlcmluZyBhbiB1bnN1cHBv cnRlZAppbmRpcmVjdGlvbiBhbmQgcmV0dXJuIHRoZSByZW1haW5pbmcgaW5kaXJlY3Rpb25zIHRv IHRoZSBjYWxsZXIuCgpSZXZpZXdlZC1ieTogQWxleGFuZHJhIFdhbmcgPGFsZXhhbmRyYS53YW5n Lm9zc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNs YW5lLm5ldD4KUmV2aWV3ZWQtYnk6IE1hdGhldXMgQWxjYW50YXJhIDxtYXRoZXVzc3NpbHY5N0Bn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5j b20+Ci0tLQogY29udHJpYi9oc3RvcmUvaHN0b3JlX3N1YnMuYyAgICAgIHwgMTAgKysrKysrLS0t LQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgIHwgIDkgKysrKy0tLS0tCiBzcmMv YmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdGFyZ2V0LmMgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vi cy5jIHwgIDYgKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMgfCAgNiAr KysrLS0KIHNyYy9pbmNsdWRlL25vZGVzL3N1YnNjcmlwdGluZy5oICB8ICA3ICsrKysrKy0KIHNy Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggICB8ICAyICstCiA4IGZpbGVzIGNoYW5nZWQs IDI4IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIv aHN0b3JlL2hzdG9yZV9zdWJzLmMgYi9jb250cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jCmluZGV4 IDNkMDNmNjZmYTBkLi4xYjI5NTQzYWI2NyAxMDA2NDQKLS0tIGEvY29udHJpYi9oc3RvcmUvaHN0 b3JlX3N1YnMuYworKysgYi9jb250cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jCkBAIC00MCw3ICs0 MCw3IEBACiAgKi8KIHN0YXRpYyB2b2lkCiBoc3RvcmVfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJz Y3JpcHRpbmdSZWYgKnNic3JlZiwKLQkJCQkJCSAgIExpc3QgKmluZGlyZWN0aW9uLAorCQkJCQkJ ICAgTGlzdCAqKmluZGlyZWN0aW9uLAogCQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJ CQkJICAgYm9vbCBpc1NsaWNlLAogCQkJCQkJICAgYm9vbCBpc0Fzc2lnbm1lbnQpCkBAIC00OSwx NSArNDksMTUgQEAgaHN0b3JlX3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpz YnNyZWYsCiAJTm9kZQkgICAqc3ViZXhwcjsKIAogCS8qIFdlIHN1cHBvcnQgb25seSBzaW5nbGUt c3Vic2NyaXB0LCBub24tc2xpY2UgY2FzZXMgKi8KLQlpZiAoaXNTbGljZSB8fCBsaXN0X2xlbmd0 aChpbmRpcmVjdGlvbikgIT0gMSkKKwlpZiAoaXNTbGljZSB8fCBsaXN0X2xlbmd0aCgqaW5kaXJl Y3Rpb24pICE9IDEpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coImhzdG9yZSBhbGxvd3Mgb25seSBvbmUg c3Vic2NyaXB0IiksCiAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCi0JCQkJCQkJCQll eHByTG9jYXRpb24oKE5vZGUgKikgaW5kaXJlY3Rpb24pKSkpOworCQkJCQkJCQkJZXhwckxvY2F0 aW9uKChOb2RlICopICppbmRpcmVjdGlvbikpKSk7CiAKIAkvKiBUcmFuc2Zvcm0gdGhlIHN1YnNj cmlwdCBleHByZXNzaW9uIHRvIHR5cGUgdGV4dCAqLwotCWFpID0gbGluaXRpYWxfbm9kZShBX0lu ZGljZXMsIGluZGlyZWN0aW9uKTsKKwlhaSA9IGxpbml0aWFsX25vZGUoQV9JbmRpY2VzLCAqaW5k aXJlY3Rpb24pOwogCUFzc2VydChhaS0+dWlkeCAhPSBOVUxMICYmIGFpLT5saWR4ID09IE5VTEwg JiYgIWFpLT5pc19zbGljZSk7CiAKIAlzdWJleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIGFp LT51aWR4LCBwc3RhdGUtPnBfZXhwcl9raW5kKTsKQEAgLTgxLDYgKzgxLDggQEAgaHN0b3JlX3N1 YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJLyogRGV0ZXJtaW5l IHRoZSByZXN1bHQgdHlwZSBvZiB0aGUgc3Vic2NyaXB0aW5nIG9wZXJhdGlvbjsgYWx3YXlzIHRl eHQgKi8KIAlzYnNyZWYtPnJlZnJlc3R5cGUgPSBURVhUT0lEOwogCXNic3JlZi0+cmVmdHlwbW9k ID0gLTE7CisKKwkqaW5kaXJlY3Rpb24gPSBOSUw7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYwppbmRleCBkNjYyNzY4MDFjNi4uZTE1NjVlMTFkMDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYwpAQCAtNDY2LDE0ICs0NjYsMTMgQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0 ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJCQlBc3NlcnQoSXNBKG4sIFN0cmluZykp OwogCiAJCQkvKiBwcm9jZXNzIHN1YnNjcmlwdHMgYmVmb3JlIHRoaXMgZmllbGQgc2VsZWN0aW9u ICovCi0JCQlpZiAoc3Vic2NyaXB0cykKKwkJCXdoaWxlIChzdWJzY3JpcHRzKQogCQkJCXJlc3Vs dCA9IChOb2RlICopIHRyYW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMocHN0YXRlLAogCQkJCQkJ CQkJCQkJCQkJICAgcmVzdWx0LAogCQkJCQkJCQkJCQkJCQkJICAgZXhwclR5cGUocmVzdWx0KSwK IAkJCQkJCQkJCQkJCQkJCSAgIGV4cHJUeXBtb2QocmVzdWx0KSwKLQkJCQkJCQkJCQkJCQkJCSAg IHN1YnNjcmlwdHMsCisJCQkJCQkJCQkJCQkJCQkgICAmc3Vic2NyaXB0cywKIAkJCQkJCQkJCQkJ CQkJCSAgIGZhbHNlKTsKLQkJCXN1YnNjcmlwdHMgPSBOSUw7CiAKIAkJCW5ld3Jlc3VsdCA9IFBh cnNlRnVuY09yQ29sdW1uKHBzdGF0ZSwKIAkJCQkJCQkJCQkgIGxpc3RfbWFrZTEobiksCkBAIC00 ODgsMTIgKzQ4NywxMiBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUs IEFfSW5kaXJlY3Rpb24gKmluZCkKIAkJfQogCX0KIAkvKiBwcm9jZXNzIHRyYWlsaW5nIHN1YnNj cmlwdHMsIGlmIGFueSAqLwotCWlmIChzdWJzY3JpcHRzKQorCXdoaWxlIChzdWJzY3JpcHRzKQog CQlyZXN1bHQgPSAoTm9kZSAqKSB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKHBzdGF0ZSwK IAkJCQkJCQkJCQkJCQkgICByZXN1bHQsCiAJCQkJCQkJCQkJCQkJICAgZXhwclR5cGUocmVzdWx0 KSwKIAkJCQkJCQkJCQkJCQkgICBleHByVHlwbW9kKHJlc3VsdCksCi0JCQkJCQkJCQkJCQkJICAg c3Vic2NyaXB0cywKKwkJCQkJCQkJCQkJCQkgICAmc3Vic2NyaXB0cywKIAkJCQkJCQkJCQkJCQkg ICBmYWxzZSk7CiAKIAlyZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX25vZGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ub2RlLmMKaW5kZXgg ZDZmZWIxNmFlZjMuLjE5YTZiNjc4ZTY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2Vfbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ub2RlLmMKQEAgLTI0 NCw3ICsyNDQsNyBAQCB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJCQkJCQkgTm9kZSAqY29udGFpbmVyQmFzZSwKIAkJCQkJCQkgT2lkIGNvbnRhaW5l clR5cGUsCiAJCQkJCQkJIGludDMyIGNvbnRhaW5lclR5cE1vZCwKLQkJCQkJCQkgTGlzdCAqaW5k aXJlY3Rpb24sCisJCQkJCQkJIExpc3QgKippbmRpcmVjdGlvbiwKIAkJCQkJCQkgYm9vbCBpc0Fz c2lnbm1lbnQpCiB7CiAJU3Vic2NyaXB0aW5nUmVmICpzYnNyZWY7CkBAIC0yODAsNyArMjgwLDcg QEAgdHJhbnNmb3JtQ29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJICog ZWxlbWVudC4gIElmIGFueSBvZiB0aGUgaXRlbXMgYXJlIHNsaWNlIHNwZWNpZmllcnMgKGxvd2Vy OnVwcGVyKSwgdGhlbgogCSAqIHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbiBtZWFucyBhIGNvbnRh aW5lciBzbGljZSBvcGVyYXRpb24uCiAJICovCi0JZm9yZWFjaChpZHgsIGluZGlyZWN0aW9uKQor CWZvcmVhY2goaWR4LCAqaW5kaXJlY3Rpb24pCiAJewogCQlBX0luZGljZXMgICphaSA9IGxmaXJz dF9ub2RlKEFfSW5kaWNlcywgaWR4KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCmluZGV4 IDRhYmEwZDlkNGQ1Li40Njc1YTUyMzA0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwpA QCAtOTM2LDcgKzkzNiw3IEBAIHRyYW5zZm9ybUFzc2lnbm1lbnRTdWJzY3JpcHRzKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkgIGJhc2Vub2RlLAogCQkJCQkJCQkJCSAgY29udGFpbmVy VHlwZSwKIAkJCQkJCQkJCQkgIGNvbnRhaW5lclR5cE1vZCwKLQkJCQkJCQkJCQkgIHN1YnNjcmlw dHMsCisJCQkJCQkJCQkJICAmc3Vic2NyaXB0cywKIAkJCQkJCQkJCQkgIHRydWUpOwogCiAJdHlw ZU5lZWRlZCA9IHNic3JlZi0+cmVmcmVzdHlwZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9hcnJheXN1YnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYwpp bmRleCAyOTQwZmI4ZThkNy4uMjM0YzJjMjc4YzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9hcnJheXN1YnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlzdWJz LmMKQEAgLTU0LDcgKzU0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQXJyYXlTdWJXb3Jrc3BhY2UKICAq Lwogc3RhdGljIHZvaWQKIGFycmF5X3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVm ICpzYnNyZWYsCi0JCQkJCQkgIExpc3QgKmluZGlyZWN0aW9uLAorCQkJCQkJICBMaXN0ICoqaW5k aXJlY3Rpb24sCiAJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSAgYm9vbCBpc1Ns aWNlLAogCQkJCQkJICBib29sIGlzQXNzaWdubWVudCkKQEAgLTcxLDcgKzcxLDcgQEAgYXJyYXlf c3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAkgKiBpbmRpcmVj dGlvbiBpdGVtcyB0byBzbGljZXMgYnkgdHJlYXRpbmcgdGhlIHNpbmdsZSBzdWJzY3JpcHQgYXMg dGhlCiAJICogdXBwZXIgYm91bmQgYW5kIHN1cHBseWluZyBhbiBhc3N1bWVkIGxvd2VyIGJvdW5k IG9mIDEuCiAJICovCi0JZm9yZWFjaChpZHgsIGluZGlyZWN0aW9uKQorCWZvcmVhY2goaWR4LCAq aW5kaXJlY3Rpb24pCiAJewogCQlBX0luZGljZXMgICphaSA9IGxmaXJzdF9ub2RlKEFfSW5kaWNl cywgaWR4KTsKIAkJTm9kZQkgICAqc3ViZXhwcjsKQEAgLTE1Miw2ICsxNTIsOCBAQCBhcnJheV9z dWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCQkJCQkJbGlzdF9s ZW5ndGgodXBwZXJJbmRleHByKSwgTUFYRElNKSkpOwogCS8qIFdlIG5lZWQgbm90IGNoZWNrIGxv d2VySW5kZXhwciBzZXBhcmF0ZWx5ICovCiAKKwkqaW5kaXJlY3Rpb24gPSBOSUw7CisKIAkvKgog CSAqIERldGVybWluZSB0aGUgcmVzdWx0IHR5cGUgb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVyYXRp b24uICBJdCdzIHRoZSBzYW1lCiAJICogYXMgdGhlIGFycmF5IHR5cGUgaWYgd2UncmUgc2xpY2lu ZywgZWxzZSBpdCdzIHRoZSBlbGVtZW50IHR5cGUuICBJbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vi cy5jCmluZGV4IGRlNjRkNDk4NTEyLi44YWQ2YWExYWQ0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u YnN1YnMuYwpAQCAtNDEsNyArNDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBKc29uYlN1YldvcmtzcGFj ZQogICovCiBzdGF0aWMgdm9pZAoganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRp bmdSZWYgKnNic3JlZiwKLQkJCQkJCSAgTGlzdCAqaW5kaXJlY3Rpb24sCisJCQkJCQkgIExpc3Qg KippbmRpcmVjdGlvbiwKIAkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJICBib29s IGlzU2xpY2UsCiAJCQkJCQkgIGJvb2wgaXNBc3NpZ25tZW50KQpAQCAtNTMsNyArNTMsNyBAQCBq c29uYl9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCSAqIFRy YW5zZm9ybSBhbmQgY29udmVydCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb25zLiBKc29uYiBzdWJz Y3JpcHRpbmcKIAkgKiBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcywgbG9vayBvbmx5IGFuZCB0aGUg dXBwZXIgaW5kZXguCiAJICovCi0JZm9yZWFjaChpZHgsIGluZGlyZWN0aW9uKQorCWZvcmVhY2go aWR4LCAqaW5kaXJlY3Rpb24pCiAJewogCQlBX0luZGljZXMgICphaSA9IGxmaXJzdF9ub2RlKEFf SW5kaWNlcywgaWR4KTsKIAkJTm9kZQkgICAqc3ViRXhwcjsKQEAgLTE1OSw2ICsxNTksOCBAQCBq c29uYl9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCS8qIERl dGVybWluZSB0aGUgcmVzdWx0IHR5cGUgb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVyYXRpb247IGFs d2F5cyBqc29uYiAqLwogCXNic3JlZi0+cmVmcmVzdHlwZSA9IEpTT05CT0lEOwogCXNic3JlZi0+ cmVmdHlwbW9kID0gLTE7CisKKwkqaW5kaXJlY3Rpb24gPSBOSUw7CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9zdWJzY3JpcHRpbmcuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3N1YnNjcmlwdGluZy5oCmluZGV4IDIzNGU4YWQ4MDEyLi41ZDU3NmFmMzQ2ZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvc3Vic2NyaXB0aW5nLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvc3Vic2NyaXB0aW5nLmgKQEAgLTcxLDYgKzcxLDExIEBAIHN0cnVjdCBTdWJzY3JpcHRFeGVj U3RlcHM7CiAgKiBkb2VzIG5vdCBjYXJlIHRvIHN1cHBvcnQgc2xpY2luZywgaXQgY2FuIGp1c3Qg dGhyb3cgYW4gZXJyb3IgaWYgaXNTbGljZS4pCiAgKiBTZWUgYXJyYXlfc3Vic2NyaXB0X3RyYW5z Zm9ybSgpIGZvciBzYW1wbGUgY29kZS4KICAqCisgKiBUaGUgdHJhbnNmb3JtIG1ldGhvZCByZWNl aXZlcyBhIHBvaW50ZXIgdG8gYSBsaXN0IG9mIHJhdyBpbmRpcmVjdGlvbnMuCisgKiBUaGlzIGFs bG93cyB0aGUgbWV0aG9kIHRvIHBhcnNlIGEgc3VibGlzdCBvZiB0aGUgaW5kaXJlY3Rpb25zICh0 eXBpY2FsbHkKKyAqIHRoZSBwcmVmaXgpIGFuZCBtb2RpZnkgdGhlIG9yaWdpbmFsIGxpc3QgaW4g cGxhY2UsIGVuYWJsaW5nIHRoZSBjYWxsZXIgdG8KKyAqIGVpdGhlciBwcm9jZXNzIHRoZSByZW1h aW5pbmcgaW5kaXJlY3Rpb25zIGRpZmZlcmVudGx5IG9yIHJhaXNlIGFuIGVycm9yLgorICoKICAq IFRoZSB0cmFuc2Zvcm0gbWV0aG9kIGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGlkZW50aWZ5aW5n IHRoZSByZXN1bHQgdHlwZQogICogb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVyYXRpb24uICBBdCBj YWxsLCByZWZjb250YWluZXJ0eXBlIGFuZCByZWZ0eXBtb2QKICAqIGRlc2NyaWJlIHRoZSBjb250 YWluZXIgdHlwZSAodGhpcyB3aWxsIGJlIGEgYmFzZSB0eXBlIG5vdCBhIGRvbWFpbiksIGFuZApA QCAtOTMsNyArOTgsNyBAQCBzdHJ1Y3QgU3Vic2NyaXB0RXhlY1N0ZXBzOwogICogYXNzaWdubWVu dCBtdXN0IHJldHVybi4KICAqLwogdHlwZWRlZiB2b2lkICgqU3Vic2NyaXB0VHJhbnNmb3JtKSAo U3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCi0JCQkJCQkJCQlMaXN0ICppbmRpcmVjdGlvbiwKKwkJ CQkJCQkJCUxpc3QgKippbmRpcmVjdGlvbiwKIAkJCQkJCQkJCXN0cnVjdCBQYXJzZVN0YXRlICpw c3RhdGUsCiAJCQkJCQkJCQlib29sIGlzU2xpY2UsCiAJCQkJCQkJCQlib29sIGlzQXNzaWdubWVu dCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCBmN2QwN2M4NDU0Mi4uNThhNGI5ZGYxNTcg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtMzYxLDcgKzM2MSw3IEBAIGV4dGVybiBTdWJz Y3JpcHRpbmdSZWYgKnRyYW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCQkJCQkJCQkJCSBOb2RlICpjb250YWluZXJCYXNlLAogCQkJCQkJCQkJCQkJCSBP aWQgY29udGFpbmVyVHlwZSwKIAkJCQkJCQkJCQkJCQkgaW50MzIgY29udGFpbmVyVHlwTW9kLAot CQkJCQkJCQkJCQkJCSBMaXN0ICppbmRpcmVjdGlvbiwKKwkJCQkJCQkJCQkJCQkgTGlzdCAqKmlu ZGlyZWN0aW9uLAogCQkJCQkJCQkJCQkJCSBib29sIGlzQXNzaWdubWVudCk7CiBleHRlcm4gQ29u c3QgKm1ha2VfY29uc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0NvbnN0ICphY29uc3QpOwogCi0t IAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --00000000000029f71506397a7f95 Content-Type: application/octet-stream; name="v12-0007-Implement-jsonb-wildcard-member-accessor.patch" Content-Disposition: attachment; filename="v12-0007-Implement-jsonb-wildcard-member-accessor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcvnjmn21 RnJvbSA0MDE5OWExY2E2Y2U0ZmI5NzUxOTBkZjk5Yjc0NjIwNWIxZWJiNWI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFR1ZSwgOCBKdWwgMjAyNSAyMjoxODowNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg djEyIDcvN10gSW1wbGVtZW50IGpzb25iIHdpbGRjYXJkIG1lbWJlciBhY2Nlc3NvcgoKVGhpcyBj b21taXQgYWRkcyBzdXBwb3J0IGZvciB3aWxkY2FyZCBtZW1iZXIgYWNjZXNzIGluIGpzb25iLCBh cwpzcGVjaWZpZWQgYnkgdGhlIEpTT04gc2ltcGxpZmllZCBhY2Nlc3NvciBzeW50YXggaW4gU1FM OjIwMjMuCgpDby1hdXRob3JlZC1ieTogTmlraXRhIEdsdWtob3YgPGdsdWtob3Yubi5hQGdtYWls LmNvbT4KQ28tYXV0aG9yZWQtYnk6IEFsZXhhbmRyYSBXYW5nIDxhbGV4YW5kcmEud2FuZy5vc3NA Z21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IER1bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5u ZXQ+ClJldmlld2VkLWJ5OiBNYXRoZXVzIEFsY2FudGFyYSA8bWF0aGV1c3NzaWx2OTdAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogTWFyayBEaWxnZXIgPG1hcmsuZGlsZ2VyQGVudGVycHJpc2VkYi5j b20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJl dmlld2VkLWJ5OiBWaWsgRmVhcmluZyA8dmlrQHBvc3RncmVzZnJpZW5kcy5vcmc+ClJldmlld2Vk LWJ5OiBOaWtpdGEgTWFsYWtob3YgPGh1a3V0b2NAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogUGV0 ZXIgRWlzZW50cmF1dCA8cGV0ZXJAZWlzZW50cmF1dC5vcmc+ClJldmlld2VkLWJ5OiBKZWx0ZSBG ZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5sPgpUZXN0ZWQtYnk6IEplbHRlIEZlbm5lbWEt TmlvIDxwb3N0Z3Jlc0BqZWx0ZWYubmw+Ci0tLQogc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNz LmMgICAgICAgICAgICAgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAg ICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j ICAgICAgICAgICAgICAgfCAgMzQgKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0 LmMgICAgICAgICAgICAgfCAgNjcgKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJz dWJzLmMgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYyAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgg ICAgICAgICAgICAgICAgIHwgIDEyICsKIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9leHByLmgg ICAgICAgICAgICAgICB8ICAgMyArCiAuLi4vZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29u LmMgICAgICAgICAgfCAgMTggKy0KIC4uLi9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24u c3RkZXJyICAgICB8ICAyMyArLQogLi4uL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5z dGRvdXQgICAgIHwgICAyICsKIHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbi5w Z2MgICAgICB8ICAgNSArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgICAg ICAgICAgIHwgMjIyICsrKysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNv bmIuc3FsICAgICAgICAgICAgICAgIHwgIDQyICsrKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDQwNSBp bnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9ub2RlRnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IGQx YmQ1NzVkOWJkLi41ZjMwMzhhMWMyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9k ZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTI5MSw2ICsy OTEsOSBAQCBleHByVHlwZShjb25zdCBOb2RlICpleHByKQogCQkJICovCiAJCQl0eXBlID0gVEVY VE9JRDsKIAkJCWJyZWFrOworCQljYXNlIFRfU3RhcjoKKwkJCXR5cGUgPSBVTktOT1dOT0lEOwor CQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUg dHlwZTogJWQiLCAoaW50KSBub2RlVGFnKGV4cHIpKTsKIAkJCXR5cGUgPSBJbnZhbGlkT2lkOwkv KiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCkBAIC0xMTU2LDYgKzExNTksOSBAQCBleHByU2V0Q29s bGF0aW9uKE5vZGUgKmV4cHIsIE9pZCBjb2xsYXRpb24pCiAJCWNhc2UgVF9GaWVsZEFjY2Vzc29y RXhwcjoKIAkJCSgoRmllbGRBY2Nlc3NvckV4cHIgKikgZXhwciktPmZhZWNvbGxpZCA9IGNvbGxh dGlvbjsKIAkJCWJyZWFrOworCQljYXNlIFRfU3RhcjoKKwkJCUFzc2VydCghT2lkSXNWYWxpZChj b2xsYXRpb24pKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfU3Vic2NyaXB0aW5nUmVmOgogCQkJKChT dWJzY3JpcHRpbmdSZWYgKikgZXhwciktPnJlZmNvbGxpZCA9IGNvbGxhdGlvbjsKIAkJCWJyZWFr OwpAQCAtMjE0MCw2ICsyMTQ2LDcgQEAgZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUg Km5vZGUsCiAJCWNhc2UgVF9DVEVTZWFyY2hDbGF1c2U6CiAJCWNhc2UgVF9NZXJnZVN1cHBvcnRG dW5jOgogCQljYXNlIFRfRmllbGRBY2Nlc3NvckV4cHI6CisJCWNhc2UgVF9TdGFyOgogCQkJLyog cHJpbWl0aXZlIG5vZGUgdHlwZXMgd2l0aCBubyBleHByZXNzaW9uIHN1Ym5vZGVzICovCiAJCQli cmVhazsKIAkJY2FzZSBUX1dpdGhDaGVja09wdGlvbjoKQEAgLTMwMjAsNiArMzAyNyw3IEBAIGV4 cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwKIAkJY2FzZSBUX0NURVNlYXJj aENsYXVzZToKIAkJY2FzZSBUX01lcmdlU3VwcG9ydEZ1bmM6CiAJCWNhc2UgVF9GaWVsZEFjY2Vz c29yRXhwcjoKKwkJY2FzZSBUX1N0YXI6CiAJCQlyZXR1cm4gY29weU9iamVjdChub2RlKTsKIAkJ Y2FzZSBUX1dpdGhDaGVja09wdGlvbjoKIAkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDcwYTBkODMyYTEx Li41MzIyMTc0MjViNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0xODk4NCw2ICsxODk4NCw3IEBAIGNoZWNr X2Z1bmNfbmFtZShMaXN0ICpuYW1lcywgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiBzdGF0aWMg TGlzdCAqCiBjaGVja19pbmRpcmVjdGlvbihMaXN0ICppbmRpcmVjdGlvbiwgY29yZV95eXNjYW5f dCB5eXNjYW5uZXIpCiB7CisjaWYgMAogCUxpc3RDZWxsICAgKmw7CiAKIAlmb3JlYWNoKGwsIGlu ZGlyZWN0aW9uKQpAQCAtMTg5OTQsNiArMTg5OTUsNyBAQCBjaGVja19pbmRpcmVjdGlvbihMaXN0 ICppbmRpcmVjdGlvbiwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJCQkJcGFyc2VyX3l5ZXJy b3IoImltcHJvcGVyIHVzZSBvZiBcIipcIiIpOwogCQl9CiAJfQorI2VuZGlmCiAJcmV0dXJuIGlu ZGlyZWN0aW9uOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhw ci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCAwN2Q0Njc0NzgxMS4u ZDkxNzAwZWJmMzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNzQsNyArNzQsNiBAQCBz dGF0aWMgTm9kZSAqdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1u UmVmICpjcmVmKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1XaG9sZVJvd1JlZihQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkJCQkJCSAgUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW0sCiAJCQkJCQkJ CSAgaW50IHN1YmxldmVsc191cCwgaW50IGxvY2F0aW9uKTsKLXN0YXRpYyBOb2RlICp0cmFuc2Zv cm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCk7CiBz dGF0aWMgTm9kZSAqdHJhbnNmb3JtVHlwZUNhc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUeXBlQ2Fz dCAqdGMpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUNvbGxhdGVDbGF1c2UoUGFyc2VTdGF0ZSAq cHN0YXRlLCBDb2xsYXRlQ2xhdXNlICpjKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uT2Jq ZWN0Q29uc3RydWN0b3IoUGFyc2VTdGF0ZSAqcHN0YXRlLApAQCAtMTU4LDcgKzE1Nyw3IEBAIHRy YW5zZm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJCWJy ZWFrOwogCiAJCWNhc2UgVF9BX0luZGlyZWN0aW9uOgotCQkJcmVzdWx0ID0gdHJhbnNmb3JtSW5k aXJlY3Rpb24ocHN0YXRlLCAoQV9JbmRpcmVjdGlvbiAqKSBleHByKTsKKwkJCXJlc3VsdCA9IHRy YW5zZm9ybUluZGlyZWN0aW9uKHBzdGF0ZSwgKEFfSW5kaXJlY3Rpb24gKikgZXhwciwgTlVMTCk7 CiAJCQlicmVhazsKIAogCQljYXNlIFRfQV9BcnJheUV4cHI6CkBAIC00MzIsOCArNDMxLDkgQEAg dW5rbm93bl9hdHRyaWJ1dGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpyZWxyZWYsIGNvbnN0 IGNoYXIgKmF0dG5hbWUsCiAJfQogfQogCi1zdGF0aWMgTm9kZSAqCi10cmFuc2Zvcm1JbmRpcmVj dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKK05vZGUgKgordHJh bnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQs CisJCQkJCSBib29sICp0cmFpbGluZ19zdGFyX2V4cGFuc2lvbikKIHsKIAlOb2RlCSAgICpsYXN0 X3NyZiA9IHBzdGF0ZS0+cF9sYXN0X3NyZjsKIAlOb2RlCSAgICpyZXN1bHQgPSB0cmFuc2Zvcm1F eHByUmVjdXJzZShwc3RhdGUsIGluZC0+YXJnKTsKQEAgLTQ1NCwxMiArNDU0LDcgQEAgdHJhbnNm b3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJ CWlmIChJc0EobiwgQV9JbmRpY2VzKSkKIAkJCXN1YnNjcmlwdHMgPSBsYXBwZW5kKHN1YnNjcmlw dHMsIG4pOwogCQllbHNlIGlmIChJc0EobiwgQV9TdGFyKSkKLQkJewotCQkJZXJlcG9ydChFUlJP UiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkg ZXJybXNnKCJyb3cgZXhwYW5zaW9uIHZpYSBcIipcIiBpcyBub3Qgc3VwcG9ydGVkIGhlcmUiKSwK LQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOwotCQl9CisJCQlz dWJzY3JpcHRzID0gbGFwcGVuZChzdWJzY3JpcHRzLCBuKTsKIAkJZWxzZQogCQl7CiAJCQlBc3Nl cnQoSXNBKG4sIFN0cmluZykpOwpAQCAtNDkxLDcgKzQ4NiwyMSBAQCB0cmFuc2Zvcm1JbmRpcmVj dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAogCQkJbiA9IGxp bml0aWFsKHN1YnNjcmlwdHMpOwogCi0JCQlpZiAoIUlzQShuLCBTdHJpbmcpKQorCQkJaWYgKElz QShuLCBBX1N0YXIpKQorCQkJeworCQkJCS8qIFN1Y2Nlc3MsIGlmIHRyYWlsaW5nIHN0YXIgZXhw YW5zaW9uIGlzIGFsbG93ZWQgKi8KKwkJCQlpZiAodHJhaWxpbmdfc3Rhcl9leHBhbnNpb24gJiYg bGlzdF9sZW5ndGgoc3Vic2NyaXB0cykgPT0gMSkKKwkJCQl7CisJCQkJCSp0cmFpbGluZ19zdGFy X2V4cGFuc2lvbiA9IHRydWU7CisJCQkJCXJldHVybiByZXN1bHQ7CisJCQkJfQorCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQkJCSBlcnJtc2coInJvdyBleHBhbnNpb24gdmlhIFwiKlwiIGlzIG5vdCBzdXBwb3J0 ZWQgaGVyZSIpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkp OworCQkJfQorCQkJZWxzZSBpZiAoIUlzQShuLCBTdHJpbmcpKQogCQkJCWVyZXBvcnQoRVJST1Is CiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKIAkJCQkJCSBlcnJt c2coImNhbm5vdCBzdWJzY3JpcHQgdHlwZSAlcyBiZWNhdXNlIGl0IGRvZXMgbm90IHN1cHBvcnQg c3Vic2NyaXB0aW5nIiwKQEAgLTUxNyw2ICs1MjYsOSBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAkJcmVzdWx0ID0gbmV3cmVz dWx0OwogCX0KIAorCWlmICh0cmFpbGluZ19zdGFyX2V4cGFuc2lvbikKKwkJKnRyYWlsaW5nX3N0 YXJfZXhwYW5zaW9uID0gZmFsc2U7CisKIAlyZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdGFyZ2V0LmMKaW5kZXggM2VmNTg5N2YyZWIuLjE0MWZjMWRmZWIxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3RhcmdldC5jCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zv cm1Bc3NpZ25tZW50U3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiBzdGF0aWMgTGlzdCAq RXhwYW5kQ29sdW1uUmVmU3RhcihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZiwK IAkJCQkJCQkJIGJvb2wgbWFrZV90YXJnZXRfZW50cnkpOwogc3RhdGljIExpc3QgKkV4cGFuZEFs bFRhYmxlcyhQYXJzZVN0YXRlICpwc3RhdGUsIGludCBsb2NhdGlvbik7Ci1zdGF0aWMgTGlzdCAq RXhwYW5kSW5kaXJlY3Rpb25TdGFyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAq aW5kLAorc3RhdGljIE5vZGUgKkV4cGFuZEluZGlyZWN0aW9uU3RhcihQYXJzZVN0YXRlICpwc3Rh dGUsIEFfSW5kaXJlY3Rpb24gKmluZCwKIAkJCQkJCQkJICAgYm9vbCBtYWtlX3RhcmdldF9lbnRy eSwgUGFyc2VFeHByS2luZCBleHByS2luZCk7CiBzdGF0aWMgTGlzdCAqRXhwYW5kU2luZ2xlVGFi bGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbSwKIAkJCQkJ CQkgICBpbnQgc3VibGV2ZWxzX3VwLCBpbnQgbG9jYXRpb24sCkBAIC0xMzQsNiArMTM0LDcgQEAg dHJhbnNmb3JtVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnRhcmdldGxpc3Qs CiAJZm9yZWFjaChvX3RhcmdldCwgdGFyZ2V0bGlzdCkKIAl7CiAJCVJlc1RhcmdldCAgKnJlcyA9 IChSZXNUYXJnZXQgKikgbGZpcnN0KG9fdGFyZ2V0KTsKKwkJTm9kZQkgICAqdHJhbnNmb3JtZWQg PSBOVUxMOwogCiAJCS8qCiAJCSAqIENoZWNrIGZvciAic29tZXRoaW5nLioiLiAgRGVwZW5kaW5n IG9uIHRoZSBjb21wbGV4aXR5IG9mIHRoZQpAQCAtMTYyLDEzICsxNjMsMTkgQEAgdHJhbnNmb3Jt VGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnRhcmdldGxpc3QsCiAKIAkJCQlp ZiAoSXNBKGxsYXN0KGluZC0+aW5kaXJlY3Rpb24pLCBBX1N0YXIpKQogCQkJCXsKLQkJCQkJLyog SXQgaXMgc29tZXRoaW5nLiosIGV4cGFuZCBpbnRvIG11bHRpcGxlIGl0ZW1zICovCi0JCQkJCXBf dGFyZ2V0ID0gbGlzdF9jb25jYXQocF90YXJnZXQsCi0JCQkJCQkJCQkJICAgRXhwYW5kSW5kaXJl Y3Rpb25TdGFyKHBzdGF0ZSwKLQkJCQkJCQkJCQkJCQkJCQkgaW5kLAotCQkJCQkJCQkJCQkJCQkJ CSB0cnVlLAotCQkJCQkJCQkJCQkJCQkJCSBleHByS2luZCkpOwotCQkJCQljb250aW51ZTsKKwkJ CQkJTm9kZQkgICAqY29sdW1ucyA9IEV4cGFuZEluZGlyZWN0aW9uU3Rhcihwc3RhdGUsCisJCQkJ CQkJCQkJCQkJCQkJaW5kLAorCQkJCQkJCQkJCQkJCQkJCXRydWUsCisJCQkJCQkJCQkJCQkJCQkJ ZXhwcktpbmQpOworCisJCQkJCWlmIChJc0EoY29sdW1ucywgTGlzdCkpCisJCQkJCXsKKwkJCQkJ CS8qIEl0IGlzIHNvbWV0aGluZy4qLCBleHBhbmQgaW50byBtdWx0aXBsZSBpdGVtcyAqLworCQkJ CQkJcF90YXJnZXQgPSBsaXN0X2NvbmNhdChwX3RhcmdldCwgKExpc3QgKikgY29sdW1ucyk7CisJ CQkJCQljb250aW51ZTsKKwkJCQkJfQorCisJCQkJCXRyYW5zZm9ybWVkID0gKE5vZGUgKikgY29s dW1uczsKIAkJCQl9CiAJCQl9CiAJCX0KQEAgLTE4MCw3ICsxODcsNyBAQCB0cmFuc2Zvcm1UYXJn ZXRMaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqdGFyZ2V0bGlzdCwKIAkJcF90YXJnZXQg PSBsYXBwZW5kKHBfdGFyZ2V0LAogCQkJCQkJICAgdHJhbnNmb3JtVGFyZ2V0RW50cnkocHN0YXRl LAogCQkJCQkJCQkJCQkJcmVzLT52YWwsCi0JCQkJCQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkJ dHJhbnNmb3JtZWQsCiAJCQkJCQkJCQkJCQlleHByS2luZCwKIAkJCQkJCQkJCQkJCXJlcy0+bmFt ZSwKIAkJCQkJCQkJCQkJCWZhbHNlKSk7CkBAIC0yNTEsMTAgKzI1OCwxNSBAQCB0cmFuc2Zvcm1F eHByZXNzaW9uTGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmV4cHJsaXN0LAogCiAJCQlp ZiAoSXNBKGxsYXN0KGluZC0+aW5kaXJlY3Rpb24pLCBBX1N0YXIpKQogCQkJewotCQkJCS8qIEl0 IGlzIHNvbWV0aGluZy4qLCBleHBhbmQgaW50byBtdWx0aXBsZSBpdGVtcyAqLwotCQkJCXJlc3Vs dCA9IGxpc3RfY29uY2F0KHJlc3VsdCwKLQkJCQkJCQkJCSBFeHBhbmRJbmRpcmVjdGlvblN0YXIo cHN0YXRlLCBpbmQsCi0JCQkJCQkJCQkJCQkJCSAgIGZhbHNlLCBleHByS2luZCkpOworCQkJCU5v ZGUJICAgKmNvbHMgPSBFeHBhbmRJbmRpcmVjdGlvblN0YXIocHN0YXRlLCBpbmQsCisJCQkJCQkJ CQkJCQkJCSBmYWxzZSwgZXhwcktpbmQpOworCisJCQkJaWYgKCFjb2xzIHx8IElzQShjb2xzLCBM aXN0KSkKKwkJCQkJLyogSXQgaXMgc29tZXRoaW5nLiosIGV4cGFuZCBpbnRvIG11bHRpcGxlIGl0 ZW1zICovCisJCQkJCXJlc3VsdCA9IGxpc3RfY29uY2F0KHJlc3VsdCwgKExpc3QgKikgY29scyk7 CisJCQkJZWxzZQorCQkJCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgY29scyk7CisKIAkJCQlj b250aW51ZTsKIAkJCX0KIAkJfQpAQCAtMTM0NSwyMiArMTM1NywzMCBAQCBFeHBhbmRBbGxUYWJs ZXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBpbnQgbG9jYXRpb24pCiAgKiBGb3Igcm9idXN0bmVzcywg d2UgdXNlIGEgc2VwYXJhdGUgIm1ha2VfdGFyZ2V0X2VudHJ5IiBmbGFnIHRvIGNvbnRyb2wKICAq IHRoaXMgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBleHByS2luZC4KICAqLwotc3RhdGljIExpc3Qg Kgorc3RhdGljIE5vZGUgKgogRXhwYW5kSW5kaXJlY3Rpb25TdGFyKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQV9JbmRpcmVjdGlvbiAqaW5kLAogCQkJCQkgIGJvb2wgbWFrZV90YXJnZXRfZW50cnksIFBh cnNlRXhwcktpbmQgZXhwcktpbmQpCiB7CiAJTm9kZQkgICAqZXhwcjsKKwlQYXJzZUV4cHJLaW5k IHN2X2V4cHJfa2luZDsKKwlib29sCQl0cmFpbGluZ19zdGFyX2V4cGFuc2lvbiA9IGZhbHNlOwor CisJLyogU2F2ZSBhbmQgcmVzdG9yZSBpZGVudGl0eSBvZiBleHByZXNzaW9uIHR5cGUgd2UncmUg cGFyc2luZyAqLworCUFzc2VydChleHByS2luZCAhPSBFWFBSX0tJTkRfTk9ORSk7CisJc3ZfZXhw cl9raW5kID0gcHN0YXRlLT5wX2V4cHJfa2luZDsKKwlwc3RhdGUtPnBfZXhwcl9raW5kID0gZXhw cktpbmQ7CiAKIAkvKiBTdHJpcCBvZmYgdGhlICcqJyB0byBjcmVhdGUgYSByZWZlcmVuY2UgdG8g dGhlIHJvd3R5cGUgb2JqZWN0ICovCi0JaW5kID0gY29weU9iamVjdChpbmQpOwotCWluZC0+aW5k aXJlY3Rpb24gPSBsaXN0X3RydW5jYXRlKGluZC0+aW5kaXJlY3Rpb24sCi0JCQkJCQkJCQkgbGlz dF9sZW5ndGgoaW5kLT5pbmRpcmVjdGlvbikgLSAxKTsKKwlleHByID0gdHJhbnNmb3JtSW5kaXJl Y3Rpb24ocHN0YXRlLCBpbmQsICZ0cmFpbGluZ19zdGFyX2V4cGFuc2lvbik7CisKKwlwc3RhdGUt PnBfZXhwcl9raW5kID0gc3ZfZXhwcl9raW5kOwogCi0JLyogQW5kIHRyYW5zZm9ybSB0aGF0ICov Ci0JZXhwciA9IHRyYW5zZm9ybUV4cHIocHN0YXRlLCAoTm9kZSAqKSBpbmQsIGV4cHJLaW5kKTsK KwkvKiAnKicgd2FzIGNvbnN1bWVkIGJ5IGdlbmVyaWMgdHlwZSBzdWJzY3JpcHRpbmcgKi8KKwlp ZiAoIXRyYWlsaW5nX3N0YXJfZXhwYW5zaW9uKQorCQlyZXR1cm4gZXhwcjsKIAogCS8qIEV4cGFu ZCB0aGUgcm93dHlwZSBleHByZXNzaW9uIGludG8gaW5kaXZpZHVhbCBmaWVsZHMgKi8KLQlyZXR1 cm4gRXhwYW5kUm93UmVmZXJlbmNlKHBzdGF0ZSwgZXhwciwgbWFrZV90YXJnZXRfZW50cnkpOwor CXJldHVybiAoTm9kZSAqKSBFeHBhbmRSb3dSZWZlcmVuY2UocHN0YXRlLCBleHByLCBtYWtlX3Rh cmdldF9lbnRyeSk7CiB9CiAKIC8qCkBAIC0xNzg1LDEzICsxODA1LDE4IEBAIEZpZ3VyZUNvbG5h bWVJbnRlcm5hbChOb2RlICpub2RlLCBjaGFyICoqbmFtZSkKIAkJCQljaGFyCSAgICpmbmFtZSA9 IE5VTEw7CiAJCQkJTGlzdENlbGwgICAqbDsKIAotCQkJCS8qIGZpbmQgbGFzdCBmaWVsZCBuYW1l LCBpZiBhbnksIGlnbm9yaW5nICIqIiBhbmQgc3Vic2NyaXB0cyAqLworCQkJCS8qCisJCQkJICog ZmluZCBsYXN0IGZpZWxkIG5hbWUsIGlmIGFueSwgaWdub3Jpbmcgc3Vic2NyaXB0cywgYW5kIHVz ZQorCQkJCSAqICc/Y29sdW1uPycgd2hlbiB0aGVyZSdzIGEgdHJhaWxpbmcgJyonLgorCQkJCSAq LwogCQkJCWZvcmVhY2gobCwgaW5kLT5pbmRpcmVjdGlvbikKIAkJCQl7CiAJCQkJCU5vZGUJICAg KmkgPSBsZmlyc3QobCk7CiAKIAkJCQkJaWYgKElzQShpLCBTdHJpbmcpKQogCQkJCQkJZm5hbWUg PSBzdHJWYWwoaSk7CisJCQkJCWVsc2UgaWYgKElzQShpLCBBX1N0YXIpKQorCQkJCQkJZm5hbWUg PSAiP2NvbHVtbj8iOwogCQkJCX0KIAkJCQlpZiAoZm5hbWUpCiAJCQkJewpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25ic3Vicy5jCmluZGV4IGMzNWQyMDkzM2VhLi5hMjk4MDhiNmU3NiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uYnN1YnMuYwpAQCAtMTI0LDcgKzEyNCw3IEBAIGpzb25iX2NoZWNrX2pzb25wYXRo X25lZWRlZChMaXN0ICppbmRpcmVjdGlvbikKIAl7CiAJCU5vZGUJICAgKmFjY2Vzc29yID0gbGZp cnN0KGxjKTsKIAotCQlpZiAoSXNBKGFjY2Vzc29yLCBTdHJpbmcpKQorCQlpZiAoSXNBKGFjY2Vz c29yLCBTdHJpbmcpIHx8IElzQShhY2Nlc3NvciwgQV9TdGFyKSkKIAkJCXJldHVybiB0cnVlOwog CQllbHNlCiAJCXsKQEAgLTMyNSw2ICszMjUsMTYgQEAganNvbmJfc3Vic2NyaXB0X21ha2VfanNv bnBhdGgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICoqaW5kaXJlY3Rpb24sIFN1YnNjcmlwdGkK IAkJCQlqcGktPnZhbHVlLmFycmF5LmVsZW1zWzBdLnRvID0gTlVMTDsKIAkJCX0KIAkJfQorCQll bHNlIGlmIChJc0EoYWNjZXNzb3IsIEFfU3RhcikpCisJCXsKKwkJCVN0YXIgKnN0YXJfbm9kZTsK KwkJCWpwaSA9IG1ha2VfanNvbnBhdGhfaXRlbShqcGlBbnlLZXkpOworCisJCQlzdGFyX25vZGUg PSBtYWtlTm9kZShTdGFyKTsKKwkJCXN0YXJfbm9kZS0+dHlwZSA9IFRfU3RhcjsKKworCQkJc2Jz cmVmLT5yZWZ1cHBlcmluZGV4cHIgPSBsYXBwZW5kKHNic3JlZi0+cmVmdXBwZXJpbmRleHByLCBz dGFyX25vZGUpOworCQl9CiAJCWVsc2UKIAogCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YwppbmRleCBiYWEzYWU5N2Q1Ny4uYWNlMGVmZjUyZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMKQEAgLTEzMDEwLDcgKzEzMDEwLDExIEBAIHByaW50U3Vic2NyaXB0cyhTdWJzY3JpcHRp bmdSZWYgKnNic3JlZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCXsKIAkJTm9kZSAqdXBw ZXIgPSAoTm9kZSAqKSBsZmlyc3QodXBsaXN0X2l0ZW0pOwogCi0JCWlmICh1cHBlciAmJiBJc0Eo dXBwZXIsIEZpZWxkQWNjZXNzb3JFeHByKSkKKwkJaWYgKHVwcGVyICYmIElzQSh1cHBlciwgU3Rh cikpCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLioiKTsKKwkJfQorCQll bHNlIGlmICh1cHBlciAmJiBJc0EodXBwZXIsIEZpZWxkQWNjZXNzb3JFeHByKSkKIAkJewogCQkJ RmllbGRBY2Nlc3NvckV4cHIgKmZhZSA9IChGaWVsZEFjY2Vzc29yRXhwciAqKSB1cHBlcjsKIApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9wcmltbm9kZXMuaAppbmRleCBiMjA4ZDc5NDliMS4uNjM0NDZlZGFhZDcgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3ByaW1ub2Rlcy5oCkBAIC0yNDIwLDQgKzI0MjAsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgRmllbGRB Y2Nlc3NvckV4cHIKIAlpbnQJCQlsb2NhdGlvbjsKIH0JCQlGaWVsZEFjY2Vzc29yRXhwcjsKIAor LyoKKyAqIFN0YXIgLSByZXByZXNlbnRzIGEgd2lsZGNhcmQgbWVtYmVyIGFjY2Vzc29yIChlLmcu LCAiLioiKSB1c2VkIGluIEpTT05CIHNpbXBsaWZpZWQgYWNjZXNzb3IuCisgKgorICogVGhpcyBu b2RlIHNlcnZlcyBhcyBhIHN5bnRhY3RpYyBwbGFjZWhvbGRlciBpbiB0aGUgZXhwcmVzc2lvbiB0 cmVlIGFuZCBkb2VzIG5vdCBnZXQgZXZhbHVhdGVkLCBoZW5jZSBpdAorICogaGFzIG5vIGFzc29j aWF0ZWQgdHlwZSBvciBjb2xsYXRpb24uCisgKi8KK3R5cGVkZWYgc3RydWN0IFN0YXIKK3sKKwlO b2RlVGFnCQl0eXBlOworfQkJCVN0YXI7CisKKwogI2VuZGlmCQkJCQkJCS8qIFBSSU1OT0RFU19I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhwci5oIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaAppbmRleCBlZmJhZmY4ZTcxMC4uYzlmNmE3NzI0YzAg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9leHByLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaApAQCAtMjIsNCArMjIsNyBAQCBleHRlcm4gTm9kZSAq dHJhbnNmb3JtRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIFBhcnNlRXhwcktp bmQgZXhwcktpbgogCiBleHRlcm4gY29uc3QgY2hhciAqUGFyc2VFeHByS2luZE5hbWUoUGFyc2VF eHByS2luZCBleHByS2luZCk7CiAKK2V4dGVybiBOb2RlICp0cmFuc2Zvcm1JbmRpcmVjdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCwKKwkJCQkJCQkJICBib29sICp0 cmFpbGluZ19zdGFyX2V4cGFuc2lvbik7CisKICNlbmRpZgkJCQkJCQkvKiBQQVJTRV9FWFBSX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3Fs anNvbi5jIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLmMK aW5kZXggOTM1YjQ3YTNiOWEuLjU4NWQ5YjE0NDQ1IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uYworKysgYi9zcmMvaW50ZXJmYWNlcy9l Y3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uYwpAQCAtNTE1LDkgKzUxNSw5IEBAIGlmIChz cWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CiBpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNx bHByaW50KCk7fQogI2xpbmUgMTQ1ICJzcWxqc29uLnBnYyIKIAotCS8vIGVycm9yCisJcHJpbnRm KCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKIAotCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBO VUxMLCAwLCBFQ1BHc3Rfbm9ybWFsLCAic2VsZWN0IGpzb24gKCAoICd7XCJhXCI6IHtcImJcIjog MSwgXCJjXCI6IDJ9LCBcImJcIjogW3tcInhcIjogMX0sIHtcInhcIjogWzEyLCB7XCJ5XCI6MX1d fV19JyA6OiBqc29uYiApIFsgJ2InIF0gWyAwIDogXSApIiwgRUNQR3RfRU9JVCwgCisJeyBFQ1BH ZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QganNvbiAo ICggJ3tcImFcIjoge1wiYlwiOiAxLCBcImNcIjogMn0sIFwiYlwiOiBbe1wieFwiOiAxfSwge1wi eFwiOiBbMTIsIHtcInlcIjoxfV19XX0nIDo6IGpzb25iICkgLiAqIC4geCApIiwgRUNQR3RfRU9J VCwgCiAJRUNQR3RfY2hhciwoanNvbiksKGxvbmcpMTAyNCwobG9uZykxLCgxMDI0KSpzaXplb2Yo Y2hhciksIAogCUVDUEd0X05PX0lORElDQVRPUiwgTlVMTCAsIDBMLCAwTCwgMEwsIEVDUEd0X0VP UlQpOwogI2xpbmUgMTQ4ICJzcWxqc29uLnBnYyIKQEAgLTUyNyw3ICs1MjcsNyBAQCBpZiAoc3Fs Y2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQogCiAJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4i LCBqc29uKTsKIAotCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9y bWFsLCAic2VsZWN0IGpzb24gKCAoICd7XCJhXCI6IHtcImJcIjogMSwgXCJjXCI6IDJ9LCBcImJc IjogW3tcInhcIjogMX0sIHtcInhcIjogWzEyLCB7XCJ5XCI6MX1dfV19JyA6OiBqc29uYiApIC4g YiBbIDogXSApIiwgRUNQR3RfRU9JVCwgCisJeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5VTEws IDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QganNvbiAoICggJ3tcImFcIjoge1wiYlwiOiAxLCBc ImNcIjogMn0sIFwiYlwiOiBbe1wieFwiOiAxfSwge1wieFwiOiBbMTIsIHtcInlcIjoxfV19XX0n IDo6IGpzb25iICkgWyAnYicgXSBbIDAgOiBdICkiLCBFQ1BHdF9FT0lULCAKIAlFQ1BHdF9jaGFy LChqc29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCiAJRUNQR3Rf Tk9fSU5ESUNBVE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7CiAjbGluZSAxNTEg InNxbGpzb24ucGdjIgpAQCAtNTM3LDEyICs1MzcsMjIgQEAgaWYgKHNxbGNhLnNxbGNvZGUgPCAw KSBzcWxwcmludCgpO30KIAogCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CiAKLSAg eyBFQ1BHZGlzY29ubmVjdChfX0xJTkVfXywgIkNVUlJFTlQiKTsKKwl7IEVDUEdkbyhfX0xJTkVf XywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBqc29uICggKCAne1wiYVwi OiB7XCJiXCI6IDEsIFwiY1wiOiAyfSwgXCJiXCI6IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6IFsxMiwg e1wieVwiOjF9XX1dfScgOjoganNvbmIgKSAuIGIgWyA6IF0gKSIsIEVDUEd0X0VPSVQsIAorCUVD UEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAK KwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKICNs aW5lIDE1NCAic3FsanNvbi5wZ2MiCiAKIGlmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQo KTt9CiAjbGluZSAxNTQgInNxbGpzb24ucGdjIgogCisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4i LCBqc29uKTsKKworICB7IEVDUEdkaXNjb25uZWN0KF9fTElORV9fLCAiQ1VSUkVOVCIpOworI2xp bmUgMTU3ICJzcWxqc29uLnBnYyIKKworaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgp O30KKyNsaW5lIDE1NyAic3FsanNvbi5wZ2MiCisKIAogICByZXR1cm4gMDsKIH0KZGlmZiAtLWdp dCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5zdGRlcnIg Yi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3RkZXJyCmlu ZGV4IGYzZjg5OWM2ZDg3Li40YjkwODg1NDVkNiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMv ZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0ZGVycgorKysgYi9zcmMvaW50ZXJmYWNl cy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3RkZXJyCkBAIC0zNDcsMjIgKzM0Nywx OSBAQCBTUUwgZXJyb3I6IHNjaGVtYSAianNvbmIiIGRvZXMgbm90IGV4aXN0IG9uIGxpbmUgMTIx CiBbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAogW05PX1BJRF06IGVjcGdf ZXhlY3V0ZSBvbiBsaW5lIDE0NTogdXNpbmcgUFFleGVjCiBbTk9fUElEXTogc3FsY2E6IGNvZGU6 IDAsIHN0YXRlOiAwMDAwMAotW05PX1BJRF06IGVjcGdfY2hlY2tfUFFyZXN1bHQgb24gbGluZSAx NDU6IGJhZCByZXNwb25zZSAtIEVSUk9SOiAgcm93IGV4cGFuc2lvbiB2aWEgIioiIGlzIG5vdCBz dXBwb3J0ZWQgaGVyZQotTElORSAxOiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJj IjogMn0sICJiIjogW3sieCI6IDF9LCB7InguLi4KLSAgICAgICAgICAgICAgICAgICAgICAgIF4K K1tOT19QSURdOiBlY3BnX3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMTQ1OiBjb3JyZWN0bHkgZ290 IDEgdHVwbGVzIHdpdGggMSBmaWVsZHMKIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6 IDAwMDAwCi1bTk9fUElEXTogcmFpc2luZyBzcWxzdGF0ZSAwQTAwMCAoc3FsY29kZSAtNDAwKTog cm93IGV4cGFuc2lvbiB2aWEgIioiIGlzIG5vdCBzdXBwb3J0ZWQgaGVyZSBvbiBsaW5lIDE0NQot W05PX1BJRF06IHNxbGNhOiBjb2RlOiAtNDAwLCBzdGF0ZTogMEEwMDAKLVNRTCBlcnJvcjogcm93 IGV4cGFuc2lvbiB2aWEgIioiIGlzIG5vdCBzdXBwb3J0ZWQgaGVyZSBvbiBsaW5lIDE0NQotW05P X1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDE0ODogcXVlcnk6IHNlbGVjdCBqc29uICggKCAn eyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5Ijox fV19XX0nIDo6IGpzb25iICkgWyAnYicgXSBbIDAgOiBdICk7IHdpdGggMCBwYXJhbWV0ZXIocykg b24gY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uCitbTk9fUElEXTogZWNwZ19nZXRfZGF0YSBv biBsaW5lIDE0NTogUkVTVUxUOiBbeyJiIjogMSwgImMiOiAyfSwgW3sieCI6IDF9LCB7IngiOiBb MTIsIHsieSI6IDF9XX1dXSBvZmZzZXQ6IC0xOyBhcnJheTogbm8KK1tOT19QSURdOiBzcWxjYTog Y29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTQ4 OiBxdWVyeTogc2VsZWN0IGpzb24gKCAoICd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7 IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfScgOjoganNvbmIgKSAuICogLiB4ICk7IHdp dGggMCBwYXJhbWV0ZXIocykgb24gY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uCiBbTk9fUElE XTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAogW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBv biBsaW5lIDE0ODogdXNpbmcgUFFleGVjCiBbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRl OiAwMDAwMAogW05PX1BJRF06IGVjcGdfcHJvY2Vzc19vdXRwdXQgb24gbGluZSAxNDg6IGNvcnJl Y3RseSBnb3QgMSB0dXBsZXMgd2l0aCAxIGZpZWxkcwogW05PX1BJRF06IHNxbGNhOiBjb2RlOiAw LCBzdGF0ZTogMDAwMDAKLVtOT19QSURdOiBlY3BnX2dldF9kYXRhIG9uIGxpbmUgMTQ4OiBSRVNV TFQ6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOiAxfV19XSBvZmZzZXQ6IC0xOyBhcnJheTog bm8KK1tOT19QSURdOiBlY3BnX2dldF9kYXRhIG9uIGxpbmUgMTQ4OiBSRVNVTFQ6IFsxLCBbMTIs IHsieSI6IDF9XV0gb2Zmc2V0OiAtMTsgYXJyYXk6IG5vCiBbTk9fUElEXTogc3FsY2E6IGNvZGU6 IDAsIHN0YXRlOiAwMDAwMAotW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDE1MTogcXVl cnk6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4Ijog MX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nIDo6IGpzb25iICkgLiBiIFsgOiBdICk7IHdpdGgg MCBwYXJhbWV0ZXIocykgb24gY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uCitbTk9fUElEXTog ZWNwZ19leGVjdXRlIG9uIGxpbmUgMTUxOiBxdWVyeTogc2VsZWN0IGpzb24gKCAoICd7ImEiOiB7 ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfScg OjoganNvbmIgKSBbICdiJyBdIFsgMCA6IF0gKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBjb25u ZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24KIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6 IDAwMDAwCiBbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTUxOiB1c2luZyBQUWV4ZWMK IFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCkBAIC0zNzAsNSArMzY3LDEz IEBAIFNRTCBlcnJvcjogcm93IGV4cGFuc2lvbiB2aWEgIioiIGlzIG5vdCBzdXBwb3J0ZWQgaGVy ZSBvbiBsaW5lIDE0NQogW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKIFtO T19QSURdOiBlY3BnX2dldF9kYXRhIG9uIGxpbmUgMTUxOiBSRVNVTFQ6IFt7IngiOiAxfSwgeyJ4 IjogWzEyLCB7InkiOiAxfV19XSBvZmZzZXQ6IC0xOyBhcnJheTogbm8KIFtOT19QSURdOiBzcWxj YTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUg MTU0OiBxdWVyeTogc2VsZWN0IGpzb24gKCAoICd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6 IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfScgOjoganNvbmIgKSAuIGIgWyA6IF0g KTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBjb25uZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24KK1tO T19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19leGVj dXRlIG9uIGxpbmUgMTU0OiB1c2luZyBQUWV4ZWMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwg c3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19wcm9jZXNzX291dHB1dCBvbiBsaW5lIDE1NDog Y29ycmVjdGx5IGdvdCAxIHR1cGxlcyB3aXRoIDEgZmllbGRzCitbTk9fUElEXTogc3FsY2E6IGNv ZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZ2V0X2RhdGEgb24gbGluZSAxNTQ6 IFJFU1VMVDogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6IDF9XX1dIG9mZnNldDogLTE7IGFy cmF5OiBubworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKIFtOT19QSURd OiBlY3BnX2ZpbmlzaDogY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uIGNsb3NlZAogW05PX1BJ RF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5zdGRvdXQgYi9zcmMvaW50ZXJmYWNl cy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3Rkb3V0CmluZGV4IGQwMWE4NDU3ZjAx Li4xNDVkYzk1ZDQzMCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVj dGVkL3NxbC1zcWxqc29uLnN0ZG91dAorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhw ZWN0ZWQvc3FsLXNxbGpzb24uc3Rkb3V0CkBAIC0zNiw1ICszNiw3IEBAIEZvdW5kIGpzb249eyJ4 IjogMX0KIEZvdW5kIGpzb249WzEsIFsxMiwgeyJ5IjogMX1dXQogRm91bmQganNvbj17IngiOiAx fQogRm91bmQganNvbj1bMTIsIHsieSI6IDF9XQorRm91bmQganNvbj1beyJiIjogMSwgImMiOiAy fSwgW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6IDF9XX1dXQorRm91bmQganNvbj1bMSwgWzEy LCB7InkiOiAxfV1dCiBGb3VuZCBqc29uPVt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOiAxfV19 XQogRm91bmQganNvbj1beyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjogMX1dfV0KZGlmZiAtLWdp dCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbi5wZ2MgYi9zcmMvaW50ZXJm YWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb24ucGdjCmluZGV4IDk0MjNkMjVmZDBiLi4yYWY1MGI1 ZGE0YiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9zcWxqc29uLnBn YworKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb24ucGdjCkBAIC0xNDMs NyArMTQzLDEwIEBAIEVYRUMgU1FMIEVORCBERUNMQVJFIFNFQ1RJT047CiAJcHJpbnRmKCJGb3Vu ZCBqc29uPSVzXG4iLCBqc29uKTsKIAogCUVYRUMgU1FMIFNFTEVDVCBKU09OKCgneyJhIjogeyJi IjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nOjpq c29uYikuKikgSU5UTyA6anNvbjsKLQkvLyBlcnJvcgorCXByaW50ZigiRm91bmQganNvbj0lc1xu IiwganNvbik7CisKKwlFWEVDIFNRTCBTRUxFQ1QgSlNPTigoJ3siYSI6IHsiYiI6IDEsICJjIjog Mn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19Jzo6anNvbmIpLioueCkg SU5UTyA6anNvbjsKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOwogCiAJRVhFQyBT UUwgU0VMRUNUIEpTT04oKCd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwg eyJ4IjogWzEyLCB7InkiOjF9XX1dfSc6Ompzb25iKVsnYiddWzA6XSkgSU5UTyA6anNvbjsKIAlw cmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9qc29uYi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25i Lm91dAppbmRleCA0YjNhNTk2ZTY5Ny4uNzQxNTA1ZDNiNmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvanNvbmIub3V0CkBAIC02MDYwLDggKzYwNjAsMTc1IEBAIFNFTEVDVCAoKGpiKS5iKVs6XS54 IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKICB7InkiOiAiWVlZIiwgInoiOiAiWlpa In0KICgxIHJvdykKIAotU0VMRUNUIChqYikuYS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRp b247IC0tIGZhaWxzCi1FUlJPUjogIHR5cGUganNvbmIgaXMgbm90IGNvbXBvc2l0ZQorLyogd2ls ZCBjYXJkIG1lbWJlciBhY2Nlc3MgKi8KK1NFTEVDVCAoamIpLmEuKiBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICA/Y29sdW1uPyAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsiYyIsICJk IiwgImYiLCB7InkiOiAieXl5IiwgInoiOiAienp6In1dCisoMSByb3cpCisKK1NFTEVDVCAoamIp LiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgW1sxLCAyLCB7ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6 ICJ5eXkiLCAieiI6ICJ6enoifX1dLCBbMywgNCwgeyJiIjogImciLCAieCI6IHsieSI6ICJZWVki LCAieiI6ICJaWloifX1dXQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS4qIEZST00gdGVzdF9qc29u Yl9kb3Rfbm90YXRpb24gdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgW1sxLCAyLCB7 ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6 enoifX1dLCBbMywgNCwgeyJiIjogImciLCAieCI6IHsieSI6ICJZWVkiLCAieiI6ICJaWloifX1d XQorKDEgcm93KQorCitTRUxFQ1QgKHQuamIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv biB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA/Y29sdW1uPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbWzEsIDIsIHsiYiI6ICJjIn0sIHsi YiI6ICJkIiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0sIFszLCA0 LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV1dCisoMSByb3cpCisK K1NFTEVDVCAoamIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2NvbHVtbj8g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgW1sxLCAyLCB7ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYi LCAieCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1dLCBbMywgNCwgeyJiIjogImciLCAieCI6 IHsieSI6ICJZWVkiLCAieiI6ICJaWloifX1dXQorKDEgcm93KQorCitTRUxFQ1QgKHQuamIpLiog RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK0VSUk9SOiAgbWlzc2luZyBGUk9NLWNsYXVz ZSBlbnRyeSBmb3IgdGFibGUgInQiCitMSU5FIDE6IFNFTEVDVCAodC5qYikuKiBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgIF4KK1NFTEVDVCAodC5qYikuKiBG Uk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9jb2x1bW4/ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFtbMSwgMiwgeyJiIjogImMifSwgeyJiIjogImQiLCAiZSI6ICJmIiwgIngiOiB7InkiOiAi eXl5IiwgInoiOiAienp6In19XSwgWzMsIDQsIHsiYiI6ICJnIiwgIngiOiB7InkiOiAiWVlZIiwg InoiOiAiWlpaIn19XV0KKygxIHJvdykKKworU0VMRUNUIChqYikuYS4qIEZST00gdGVzdF9qc29u Yl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAgID9jb2x1bW4/ICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWyJjIiwg ImQiLCAiZiIsIHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifV0KKygxIHJvdykKKworU0VMRUNUIChq YikuYS4qLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyBiIAorLS0tCisgCisoMSBy b3cpCisKK1NFTEVDVCAoamIpLmEuKi54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Cisg eCAKKy0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hLioueSBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOworICAgeSAgIAorLS0tLS0tLQorICJ5eXkiCisoMSByb3cpCisKK1NFTEVD VCAoamIpLmEuKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgP2NvbHVtbj8g ICAgCistLS0tLS0tLS0tLS0tLS0tCisgWyJ5eXkiLCAienp6Il0KKygxIHJvdykKKworU0VMRUNU IChqYikuKi54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAg ICAgICAgICAgIHggICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFt7InkiOiAieXl5IiwgInoi OiAienp6In0sIHsieSI6ICJZWVkiLCAieiI6ICJaWloifV0KKygxIHJvdykKKworU0VMRUNUIChq YikuKi54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgeCAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgW3sieSI6ICJ5eXkiLCAieiI6 ICJ6enoifSwgeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9XQorKDEgcm93KQorCitTRUxFQ1QgKChq YikuKikueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CisgeCAKKy0tLQorIAorKDEg cm93KQorCitTRUxFQ1QgKChqYikuKikueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7 CisgeCAKKy0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKChqYikuKilbOl0ueCBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uIHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHggICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFt7InkiOiAieXl5IiwgInoiOiAienp6In0sIHsieSI6ICJZ WVkiLCAieiI6ICJaWloifV0KKygxIHJvdykKKworU0VMRUNUIChqYikuKi54IEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgIHggICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFt7InkiOiAieXl5IiwgInoiOiAienp6In0sIHsieSI6ICJZWVki LCAieiI6ICJaWloifV0KKygxIHJvdykKKworU0VMRUNUIChqYikuKi54LiogRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWyJ5eXkiLCAienp6IiwgIllZWSIsICJaWloiXQor KDEgcm93KQorCitTRUxFQ1QgKGpiKS4qLngueSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OworICAgICAgIHkgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIFsieXl5IiwgIllZWSJdCiso MSByb3cpCisKK1NFTEVDVCAoamIpLioueC56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 CisgICAgICAgeiAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tCisgWyJ6enoiLCAiWlpaIl0KKygx IHJvdykKKworU0VMRUNUIChqYikuKi4qLnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK KyAgICAgICB5ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyBbInl5eSIsICJZWVkiXQorKDEg cm93KQorCitTRUxFQ1QgKGpiKS4qLiouKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwor ICAgICAgICAgICA/Y29sdW1uPyAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBbInl5eSIsICJ6enoiLCAiWVlZIiwgIlpaWiJdCisoMSByb3cpCisKK1NFTEVDVCAo amIpLiouKi4qLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyA/Y29sdW1uPyAKKy0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIChqYikuYS5iLmMuKiBGUk9NIHRlc3RfanNv bmJfZG90X25vdGF0aW9uOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgKGpiKS5hLiouKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgID9jb2x1 bW4/ICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIFsieXl5IiwgInp6eiJdCisoMSByb3cpCisKK1NF TEVDVCAoamIpLmEuKls6XS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgP2Nv bHVtbj8gICAgCistLS0tLS0tLS0tLS0tLS0tCisgWyJ5eXkiLCAienp6Il0KKygxIHJvdykKKwor U0VMRUNUIChqYikuYS4qWypdLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gbm90 IHN1cHBvcnRlZAorRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiKiIKK0xJTkUgMTog U0VMRUNUIChqYikuYS4qWypdLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAg ICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCAoamIpLmEuKioueCBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOyAtLSBub3Qgc3VwcG9ydGVkCitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBv ciBuZWFyICIqKiIKK0xJTkUgMTogU0VMRUNUIChqYikuYS4qKi54IEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAgICAgICAgXgogLS0gZXhwbGFpbnMgc2hvdWxk IHdvcmsKIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0LmpiKS5hIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAKQEAgLTYwODksNiArNjI1Niw0NSBAQCBTRUxFQ1QgKGpiKS5hWzFd IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CiAgMgogKDEgcm93KQogCitFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmEuKiBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24g cHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCisgICBPdXRwdXQ6IChqYikuYS4qCisoMiBy b3dzKQorCitTRUxFQ1QgKGpiKS5hLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAg ICAgICAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbImMiLCAiZCIsICJmIiwgeyJ5IjogInl5 eSIsICJ6IjogInp6eiJ9XQorKDEgcm93KQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp IFNFTEVDVCAoamIpLmEuKlsxOl0uKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVibGljLnRlc3Rf anNvbmJfZG90X25vdGF0aW9uCisgICBPdXRwdXQ6IChqYikuYS4qWzpdLioKKygyIHJvd3MpCisK K1NFTEVDVCAoamIpLmEuKlsxOl0uKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworID9j b2x1bW4/IAorLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAoamIpLmEuKlsxOjJdLiouYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVi bGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCisgICBPdXRwdXQ6IChqYikuYS4qWzoyXS4qLmIK KygyIHJvd3MpCisKK1NFTEVDVCAoamIpLmEuKlsxOjJdLiouYiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOworIGIgCistLS0KKyAKKygxIHJvdykKKwogLS0gdmlld3Mgc2hvdWxkIHdvcmsK IENSRUFURSBWSUVXIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTIFNFTEVDVCAoamIpLmFb M10ueC55IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CiBcc3YgdGVzdF9qc29uYl9kb3Rf bm90YXRpb25fdjEKQEAgLTYxMTcsNiArNjMyMywxNyBAQCBTRUxFQ1QgKiBmcm9tIHYzOwogICJ5 eXkiCiAoMSByb3cpCiAKK0NSRUFURSBWSUVXIHY0IEFTIFNFTEVDVCAoamIpLmEuKls6XS4qIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Citcc3YgdjQKK0NSRUFURSBPUiBSRVBMQUNFIFZJ RVcgcHVibGljLnY0IEFTCisgU0VMRUNUIChqYikuYS4qWzpdLiogQVMgIj9jb2x1bW4/IgorICAg RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorU0VMRUNUICogZnJvbSB2NDsKKyAgICA/Y29s dW1uPyAgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyBbInl5eSIsICJ6enoiXQorKDEgcm93KQorCiAt LSBtaXhlZCBzeW50YXgKIERST1AgVklFVyB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKIEVY UExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYilbJ2EnXS5iIEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb247CkBAIC02NDEyLDQgKzY2MjksNSBAQCBOT1RJQ0U6ICBbMl0KIC0t IGNsZWFuIHVwCiBEUk9QIFZJRVcgdjI7CiBEUk9QIFZJRVcgdjM7CitEUk9QIFZJRVcgdjQ7CiBE Uk9QIFRBQkxFIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvanNvbmIuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCmlu ZGV4IGI4ZWNlZmRhMDRkLi40NDBlYTFjNjU0OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvanNvbmIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbApAQCAt MTYyOSwxMyArMTYyOSw0OSBAQCBTRUxFQ1QgKGpiKS5hWzI6XS5iIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247CiBTRUxFQ1QgKGpiKS5hWzoyXS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247CiBTRUxFQ1QgKGpiKS5hWzpdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK IFNFTEVDVCAoKGpiKS5iKVs6XS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKLVNF TEVDVCAoamIpLmEuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBmYWlscworCisv KiB3aWxkIGNhcmQgbWVtYmVyIGFjY2VzcyAqLworU0VMRUNUIChqYikuYS4qIEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247CitTRUxFQ1QgKGpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NF TEVDVCAodC5qYikuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgKGpi KS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKHQuamIpLiogRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAodC5qYikuKiBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgKGpiKS5hLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKK1NFTEVDVCAoamIpLmEuKi5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitT RUxFQ1QgKGpiKS5hLioueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChq YikuYS4qLnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmEuKi4q IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLioueCBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uIHQ7CitTRUxFQ1QgKChqYikuKikueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uIHQ7CitTRUxFQ1QgKChqYikuKikueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7 CitTRUxFQ1QgKChqYikuKilbOl0ueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitT RUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIp LioueC4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS4qLngueSBG Uk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuKi54LnogRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLiouKi55IEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS4qLiouKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOworU0VMRUNUIChqYikuKi4qLiouKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwor U0VMRUNUIChqYikuYS5iLmMuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNU IChqYikuYS4qLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmEu Kls6XS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLipbKl0u KiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBub3Qgc3VwcG9ydGVkCitTRUxFQ1Qg KGpiKS5hLioqLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gbm90IHN1cHBvcnRl ZAogCiAtLSBleHBsYWlucyBzaG91bGQgd29yawogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KSBTRUxFQ1QgKHQuamIpLmEgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OwogU0VMRUNU ICh0LmpiKS5hIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKIEVYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYVsxXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOwogU0VMRUNUIChqYikuYVsxXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hLiogRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmEuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hLipbMTpdLiog RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmEuKlsxOl0uKiBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBT RUxFQ1QgKGpiKS5hLipbMToyXS4qLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NF TEVDVCAoamIpLmEuKlsxOjJdLiouYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwogCiAt LSB2aWV3cyBzaG91bGQgd29yawogQ1JFQVRFIFZJRVcgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25f djEgQVMgU0VMRUNUIChqYikuYVszXS54LnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK QEAgLTE2NDYsNiArMTY4Miw5IEBAIFNFTEVDVCAqIGZyb20gdjI7CiBDUkVBVEUgVklFVyB2MyBB UyBTRUxFQ1QgKGpiKS5hWzozXS54LnlbLTE6XSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OwogXHN2IHYzCiBTRUxFQ1QgKiBmcm9tIHYzOworQ1JFQVRFIFZJRVcgdjQgQVMgU0VMRUNUIChq YikuYS4qWzpdLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB2NAorU0VMRUNU ICogZnJvbSB2NDsKIAogLS0gbWl4ZWQgc3ludGF4CiBEUk9QIFZJRVcgdGVzdF9qc29uYl9kb3Rf bm90YXRpb25fdjE7CkBAIC0xNzQ3LDQgKzE3ODYsNSBAQCAkJCBMQU5HVUFHRSBwbHBnc3FsOwog LS0gY2xlYW4gdXAKIERST1AgVklFVyB2MjsKIERST1AgVklFVyB2MzsKK0RST1AgVklFVyB2NDsK IERST1AgVEFCTEUgdGVzdF9qc29uYl9kb3Rfbm90YXRpb247ClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --00000000000029f71506397a7f95 Content-Type: application/octet-stream; name="v12-0005-Implement-read-only-dot-notation-for-jsonb.patch" Content-Disposition: attachment; filename="v12-0005-Implement-read-only-dot-notation-for-jsonb.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcvnjmn63 RnJvbSAxMmI3Yjk4YTNkYzVhNzg0YTcxNzg4NDZiNTQ5MTVlYTFiZTZlNGU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCA4IEp1bCAyMDI1IDIyOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgNS83XSBJbXBsZW1lbnQgcmVhZC1vbmx5IGRvdCBub3RhdGlvbiBmb3IganNvbmIK ClRoaXMgcGF0Y2ggaW50cm9kdWNlcyBKU09OQiBtZW1iZXIgYWNjZXNzIHVzaW5nIGRvdCBub3Rh dGlvbiB0aGF0CmFsaWducyB3aXRoIHRoZSBKU09OIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3BlY2lm aWVkIGluIFNRTDoyMDIzLgoKRXhhbXBsZXM6CgotLSBTZXR1cApjcmVhdGUgdGFibGUgdCh4IGlu dCwgeSBqc29uYik7Cmluc2VydCBpbnRvIHQgc2VsZWN0IDEsICd7ImEiOiAxLCAiYiI6IDQyfSc6 Ompzb25iOwppbnNlcnQgaW50byB0IHNlbGVjdCAxLCAneyJhIjogMiwgImIiOiB7ImMiOiA0Mn19 Jzo6anNvbmI7Cmluc2VydCBpbnRvIHQgc2VsZWN0IDEsICd7ImEiOiAzLCAiYiI6IHsiYyI6ICI0 MiJ9LCAiZCI6WzExLCAxMl19Jzo6anNvbmI7CgotLSBFeGlzdGluZyBzeW50YXggaW4gUG9zdGdy ZVNRTCB0aGF0IHByZWRhdGVzIHRoZSBTUUwgc3RhbmRhcmQ6CnNlbGVjdCAodC55KS0+J2InIGZy b20gdDsKc2VsZWN0ICh0LnkpLT4nYictPidjJyBmcm9tIHQ7CnNlbGVjdCAodC55KS0+J2QnLT4w IGZyb20gdDsKCi0tIEpTT04gc2ltcGxpZmllZCBhY2Nlc3NvciBzcGVjaWZpZWQgYnkgdGhlIFNR TCBzdGFuZGFyZDoKc2VsZWN0ICh0LnkpLmIgZnJvbSB0OwpzZWxlY3QgKHQueSkuYi5jIGZyb20g dDsKc2VsZWN0ICh0LnkpLmRbMF0gZnJvbSB0OwoKVGhlIFNRTCBzdGFuZGFyZCBzdGF0ZXMgdGhh dCBzaW1wbGlmaWVkIGFjY2VzcyBpcyBlcXVpdmFsZW50IHRvOgpKU09OX1FVRVJZIChWRVAsICds YXggJC5KQycgV0lUSCBDT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSIE5VTEwgT04gRU1QVFkgTlVM TCBPTiBFUlJPUikKCndoZXJlOgogIFZFUCA9IDx2YWx1ZSBleHByZXNzaW9uIHByaW1hcnk+CiAg SkMgPSA8SlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yIG9wIGNoYWluPgoKRm9yIGV4YW1wbGUsIHRo ZSBKU09OX1FVRVJZIGVxdWl2YWxlbnRzIG9mIHRoZSBhYm92ZSBxdWVyaWVzIGFyZToKCnNlbGVj dCBqc29uX3F1ZXJ5KHksICdsYXggJC5iJyBXSVRIIENPTkRJVElPTkFMIEFSUkFZIFdSQVBQRVIg TlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVSUk9SKSBmcm9tIHQ7CnNlbGVjdCBqc29uX3F1ZXJ5KHks ICdsYXggJC5iLmMnIFdJVEggQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUiBOVUxMIE9OIEVNUFRZ IE5VTEwgT04gRVJST1IpIGZyb20gdDsKc2VsZWN0IGpzb25fcXVlcnkoeSwgJ2xheCAkLmRbMF0n IFdJVEggQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUiBOVUxMIE9OIEVNUFRZIE5VTEwgT04gRVJS T1IpIGZyb20gdDsKCkltcGxlbWVudGF0aW9uIGRldGFpbHM6CgpFeHRlbmRzIHRoZSBleGlzdGlu ZyBjb250YWluZXIgc3Vic2NyaXB0aW5nIGludGVyZmFjZSB0byBzdXBwb3J0CmNvbnRhaW5lci1z cGVjaWZpYyBpbmZvcm1hdGlvbiwgc3BlY2lmaWNhbGx5IGEgSlNPTlBhdGggZXhwcmVzc2lvbiBm b3IKanNvbmIuCgpEdXJpbmcgcXVlcnkgdHJhbnNmb3JtYXRpb24sIGlmIGRvdC1ub3RhdGlvbiBp cyBwcmVzZW50LCBjb25zdHJ1Y3RzIGEKSlNPTlBhdGggZXhwcmVzc2lvbiByZXByZXNlbnRpbmcg dGhlIGFjY2VzcyBjaGFpbi4KCkR1cmluZyBleGVjdXRpb24sIGlmIGEgSlNPTlBhdGggZXhwcmVz c2lvbiBpcyBwcmVzZW50IGluCkpzb25iU3ViV29ya3NwYWNlLCBleGVjdXRlcyBpdCB2aWEgSnNv blBhdGhRdWVyeSgpLgoKRG9lcyBub3QgdHJhbnNmb3JtIGFjY2Vzc29ycyBkaXJlY3RseSBpbnRv IEpTT05fUVVFUlkgZHVyaW5nCnRyYW5zZm9ybWF0aW9uIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5h bCBxdWVyeSBzdHJ1Y3R1cmUgZm9yIEVYUExBSU4KYW5kIENSRUFURSBWSUVXLgoKQ28tYXV0aG9y ZWQtYnk6IE5pa2l0YSBHbHVraG92IDxnbHVraG92Lm4uYUBnbWFpbC5jb20+CkNvLWF1dGhvcmVk LWJ5OiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdtYWlsLmNvbT4KUmV2aWV3 ZWQtYnk6IEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1ieTog TWF0aGV1cyBBbGNhbnRhcmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IE1hcmsgRGlsZ2VyIDxtYXJrLmRpbGdlckBlbnRlcnByaXNlZGIuY29tPgpSZXZpZXdlZC1ieTog SmlhbiBIZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogVmlrIEZl YXJpbmcgPHZpa0Bwb3N0Z3Jlc2ZyaWVuZHMub3JnPgpSZXZpZXdlZC1ieTogTmlraXRhIE1hbGFr aG92IDxodWt1dG9jQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFBldGVyIEVpc2VudHJhdXQgPHBl dGVyQGVpc2VudHJhdXQub3JnPgpUZXN0ZWQtYnk6IEplbHRlIEZlbm5lbWEtTmlvIDxwb3N0Z3Jl c0BqZWx0ZWYubmw+Ci0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0ICAg ICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jICAgICAgICAg ICAgICAgfCAgNzYgKy0tCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAg ICAgICAgfCAgMTIgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jICAgICAgICAg ICAgIHwgMzQxICsrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YyAgICAgICAgICAgICB8ICA0MyArLQogc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggICAg ICAgICAgICAgICAgIHwgIDU1ICstCiAuLi4vZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29u LmMgICAgICAgICAgfCAxMTIgKysrKy0KIC4uLi9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpz b24uc3RkZXJyICAgICB8IDEwMCArKysrCiAuLi4vZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxq c29uLnN0ZG91dCAgICAgfCAgIDcgKwogc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9zcWxq c29uLnBnYyAgICAgIHwgIDMzICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91 dCAgICAgICAgICAgfCA0NjkgKysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9qc29uYi5zcWwgICAgICAgICAgICAgICAgfCAxMTEgKysrKy0KIDEyIGZpbGVzIGNoYW5nZWQs IDEyNjMgaW5zZXJ0aW9ucygrKSwgMTAwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3Fs X2ZlYXR1cmVzLnR4dAppbmRleCBlYmU4NTMzN2MyOC4uNDU3ZTk5MzMwNWUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAorKysgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKQEAgLTU2OCw4ICs1NjgsOCBAQCBUODM4CUpTT05fVEFC TEU6IFBMQU4gREVGQVVMVCBjbGF1c2UJCQlOTwogVDgzOQlGb3JtYXR0ZWQgY2FzdCBvZiBkYXRl dGltZXMgdG8vZnJvbSBjaGFyYWN0ZXIgc3RyaW5ncwkJCU5PCQogVDg0MAlIZXggaW50ZWdlciBs aXRlcmFscyBpbiBTUUwvSlNPTiBwYXRoIGxhbmd1YWdlCQkJWUVTCQogVDg1MQlTUUwvSlNPTjog b3B0aW9uYWwga2V5d29yZHMgZm9yIGRlZmF1bHQgc3ludGF4CQkJWUVTCQotVDg2MAlTUUwvSlNP TiBzaW1wbGlmaWVkIGFjY2Vzc29yOiBjb2x1bW4gcmVmZXJlbmNlIG9ubHkJCQlOTwkKLVQ4NjEJ U1FML0pTT04gc2ltcGxpZmllZCBhY2Nlc3NvcjogY2FzZS1zZW5zaXRpdmUgSlNPTiBtZW1iZXIg YWNjZXNzb3IJCQlOTwkKK1Q4NjAJU1FML0pTT04gc2ltcGxpZmllZCBhY2Nlc3NvcjogY29sdW1u IHJlZmVyZW5jZSBvbmx5CQkJWUVTCQorVDg2MQlTUUwvSlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29y OiBjYXNlLXNlbnNpdGl2ZSBKU09OIG1lbWJlciBhY2Nlc3NvcgkJCVlFUwkKIFQ4NjIJU1FML0pT T04gc2ltcGxpZmllZCBhY2Nlc3Nvcjogd2lsZGNhcmQgbWVtYmVyIGFjY2Vzc29yCQkJTk8JCiBU ODYzCVNRTC9KU09OIHNpbXBsaWZpZWQgYWNjZXNzb3I6IHNpbmdsZS1xdW90ZWQgc3RyaW5nIGxp dGVyYWwgYXMgbWVtYmVyIGFjY2Vzc29yCQkJTk8JCiBUODY0CVNRTC9KU09OIHNpbXBsaWZpZWQg YWNjZXNzb3IJCQlOTwkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBy LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCmluZGV4IGYxNTY5ODc5YjUyLi43 NWU1N2NhMGM3OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCkBAIC0zMzIwLDUwICszMzIwLDUy IEBAIEV4ZWNJbml0U3Vic2NyaXB0aW5nUmVmKEV4cHJFdmFsU3RlcCAqc2NyYXRjaCwgU3Vic2Ny aXB0aW5nUmVmICpzYnNyZWYsCiAJCQkJCQkJCSAgIHN0YXRlLT5zdGVwc19sZW4gLSAxKTsKIAl9 CiAKLQkvKiBFdmFsdWF0ZSB1cHBlciBzdWJzY3JpcHRzICovCi0JaSA9IDA7Ci0JZm9yZWFjaChs Yywgc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIpCisJLyogRXZhbHVhdGUgdXBwZXIgc3Vic2NyaXB0 cywgdW5sZXNzIHJlZmpzb25icGF0aCBpcyB1c2VkIGZvciBleGVjdXRpb24gKi8KKwlpZiAoIXNi c3JlZi0+cmVmanNvbmJwYXRoKQogCXsKLQkJRXhwcgkgICAqZSA9IChFeHByICopIGxmaXJzdChs Yyk7Ci0KLQkJLyogV2hlbiBzbGljaW5nLCBpbmRpdmlkdWFsIHN1YnNjcmlwdCBib3VuZHMgY2Fu IGJlIG9taXR0ZWQgKi8KLQkJaWYgKCFlKQotCQl7Ci0JCQlzYnNyZWZzdGF0ZS0+dXBwZXJwcm92 aWRlZFtpXSA9IGZhbHNlOwotCQkJc2JzcmVmc3RhdGUtPnVwcGVyaW5kZXhudWxsW2ldID0gdHJ1 ZTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCXNic3JlZnN0YXRlLT51cHBlcnByb3ZpZGVkW2ldID0g dHJ1ZTsKLQkJCS8qIEVhY2ggc3Vic2NyaXB0IGlzIGV2YWx1YXRlZCBpbnRvIGFwcHJvcHJpYXRl IGFycmF5IGVudHJ5ICovCi0JCQlFeGVjSW5pdEV4cHJSZWMoZSwgc3RhdGUsCi0JCQkJCQkJJnNi c3JlZnN0YXRlLT51cHBlcmluZGV4W2ldLAotCQkJCQkJCSZzYnNyZWZzdGF0ZS0+dXBwZXJpbmRl eG51bGxbaV0pOworCQlpID0gMDsKKwkJZm9yZWFjaChsYywgc2JzcmVmLT5yZWZ1cHBlcmluZGV4 cHIpIHsKKwkJCUV4cHIgKmUgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCisJCQkvKiBXaGVuIHNs aWNpbmcsIGluZGl2aWR1YWwgc3Vic2NyaXB0IGJvdW5kcyBjYW4gYmUgb21pdHRlZCAqLworCQkJ aWYgKCFlKSB7CisJCQkJc2JzcmVmc3RhdGUtPnVwcGVycHJvdmlkZWRbaV0gPSBmYWxzZTsKKwkJ CQlzYnNyZWZzdGF0ZS0+dXBwZXJpbmRleG51bGxbaV0gPSB0cnVlOworCQkJfSBlbHNlIHsKKwkJ CQlzYnNyZWZzdGF0ZS0+dXBwZXJwcm92aWRlZFtpXSA9IHRydWU7CisJCQkJLyogRWFjaCBzdWJz Y3JpcHQgaXMgZXZhbHVhdGVkIGludG8gYXBwcm9wcmlhdGUgYXJyYXkgZW50cnkgKi8KKwkJCQlF eGVjSW5pdEV4cHJSZWMoZSwgc3RhdGUsCisJCQkJCQkJCSZzYnNyZWZzdGF0ZS0+dXBwZXJpbmRl eFtpXSwKKwkJCQkJCQkJJnNic3JlZnN0YXRlLT51cHBlcmluZGV4bnVsbFtpXSk7CisJCQl9CisJ CQlpKys7CiAJCX0KLQkJaSsrOwogCX0KIAotCS8qIEV2YWx1YXRlIGxvd2VyIHN1YnNjcmlwdHMg c2ltaWxhcmx5ICovCi0JaSA9IDA7Ci0JZm9yZWFjaChsYywgc2JzcmVmLT5yZWZsb3dlcmluZGV4 cHIpCisJLyogRXZhbHVhdGUgbG93ZXIgc3Vic2NyaXB0cyBzaW1pbGFybHksIHVubGVzcyByZWZq c29uYnBhdGggaXMgdXNlZCBmb3IgZXhlY3V0aW9uICAqLworCWlmICghc2JzcmVmLT5yZWZqc29u YnBhdGgpCiAJewotCQlFeHByCSAgICplID0gKEV4cHIgKikgbGZpcnN0KGxjKTsKLQotCQkvKiBX aGVuIHNsaWNpbmcsIGluZGl2aWR1YWwgc3Vic2NyaXB0IGJvdW5kcyBjYW4gYmUgb21pdHRlZCAq LwotCQlpZiAoIWUpCisJCWkgPSAwOworCQlmb3JlYWNoKGxjLCBzYnNyZWYtPnJlZmxvd2VyaW5k ZXhwcikKIAkJewotCQkJc2JzcmVmc3RhdGUtPmxvd2VycHJvdmlkZWRbaV0gPSBmYWxzZTsKLQkJ CXNic3JlZnN0YXRlLT5sb3dlcmluZGV4bnVsbFtpXSA9IHRydWU7Ci0JCX0KLQkJZWxzZQotCQl7 Ci0JCQlzYnNyZWZzdGF0ZS0+bG93ZXJwcm92aWRlZFtpXSA9IHRydWU7Ci0JCQkvKiBFYWNoIHN1 YnNjcmlwdCBpcyBldmFsdWF0ZWQgaW50byBhcHByb3ByaWF0ZSBhcnJheSBlbnRyeSAqLwotCQkJ RXhlY0luaXRFeHByUmVjKGUsIHN0YXRlLAotCQkJCQkJCSZzYnNyZWZzdGF0ZS0+bG93ZXJpbmRl eFtpXSwKLQkJCQkJCQkmc2JzcmVmc3RhdGUtPmxvd2VyaW5kZXhudWxsW2ldKTsKKwkJCUV4cHIJ ICAgKmUgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCisJCQkvKiBXaGVuIHNsaWNpbmcsIGluZGl2 aWR1YWwgc3Vic2NyaXB0IGJvdW5kcyBjYW4gYmUgb21pdHRlZCAqLworCQkJaWYgKCFlKQorCQkJ eworCQkJCXNic3JlZnN0YXRlLT5sb3dlcnByb3ZpZGVkW2ldID0gZmFsc2U7CisJCQkJc2JzcmVm c3RhdGUtPmxvd2VyaW5kZXhudWxsW2ldID0gdHJ1ZTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJ CQlzYnNyZWZzdGF0ZS0+bG93ZXJwcm92aWRlZFtpXSA9IHRydWU7CisJCQkJLyogRWFjaCBzdWJz Y3JpcHQgaXMgZXZhbHVhdGVkIGludG8gYXBwcm9wcmlhdGUgYXJyYXkgZW50cnkgKi8KKwkJCQlF eGVjSW5pdEV4cHJSZWMoZSwgc3RhdGUsCisJCQkJCQkJCSZzYnNyZWZzdGF0ZS0+bG93ZXJpbmRl eFtpXSwKKwkJCQkJCQkJJnNic3JlZnN0YXRlLT5sb3dlcmluZGV4bnVsbFtpXSk7CisJCQl9CisJ CQlpKys7CiAJCX0KLQkJaSsrOwogCX0KIAogCS8qIFNCU1JFRl9TVUJTQ1JJUFRTIGNoZWNrcyBh bmQgY29udmVydHMgYWxsIHRoZSBzdWJzY3JpcHRzIGF0IG9uY2UgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNz LmMKaW5kZXggN2JjODIzNTA3ZjEuLmQxYmQ1NzVkOWJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpA QCAtMjg0LDYgKzI4NCwxMyBAQCBleHByVHlwZShjb25zdCBOb2RlICpleHByKQogCQljYXNlIFRf UGxhY2VIb2xkZXJWYXI6CiAJCQl0eXBlID0gZXhwclR5cGUoKE5vZGUgKikgKChjb25zdCBQbGFj ZUhvbGRlclZhciAqKSBleHByKS0+cGhleHByKTsKIAkJCWJyZWFrOworCQljYXNlIFRfRmllbGRB Y2Nlc3NvckV4cHI6CisJCQkvKgorCQkJICogRmllbGRBY2Nlc3NvckV4cHIgaXMgbm90IGV2YWx1 YWJsZS4gVHJlYXQgaXQgYXMgVEVYVCBmb3IgY29sbGF0aW9uLAorCQkJICogZGVwYXJzaW5nLCBh bmQgc2ltaWxhciBwdXJwb3Nlcywgc2luY2UgaXQgcmVwcmVzZW50cyBhIEpTT04gZmllbGQgbmFt ZS4KKwkJCSAqLworCQkJdHlwZSA9IFRFWFRPSUQ7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsIChpbnQpIG5vZGVUYWco ZXhwcikpOwogCQkJdHlwZSA9IEludmFsaWRPaWQ7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8K QEAgLTExNDYsNiArMTE1Myw5IEBAIGV4cHJTZXRDb2xsYXRpb24oTm9kZSAqZXhwciwgT2lkIGNv bGxhdGlvbikKIAkJY2FzZSBUX01lcmdlU3VwcG9ydEZ1bmM6CiAJCQkoKE1lcmdlU3VwcG9ydEZ1 bmMgKikgZXhwciktPm1zZmNvbGxpZCA9IGNvbGxhdGlvbjsKIAkJCWJyZWFrOworCQljYXNlIFRf RmllbGRBY2Nlc3NvckV4cHI6CisJCQkoKEZpZWxkQWNjZXNzb3JFeHByICopIGV4cHIpLT5mYWVj b2xsaWQgPSBjb2xsYXRpb247CisJCQlicmVhazsKIAkJY2FzZSBUX1N1YnNjcmlwdGluZ1JlZjoK IAkJCSgoU3Vic2NyaXB0aW5nUmVmICopIGV4cHIpLT5yZWZjb2xsaWQgPSBjb2xsYXRpb247CiAJ CQlicmVhazsKQEAgLTIxMjksNiArMjEzOSw3IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1w bChOb2RlICpub2RlLAogCQljYXNlIFRfU29ydEdyb3VwQ2xhdXNlOgogCQljYXNlIFRfQ1RFU2Vh cmNoQ2xhdXNlOgogCQljYXNlIFRfTWVyZ2VTdXBwb3J0RnVuYzoKKwkJY2FzZSBUX0ZpZWxkQWNj ZXNzb3JFeHByOgogCQkJLyogcHJpbWl0aXZlIG5vZGUgdHlwZXMgd2l0aCBubyBleHByZXNzaW9u IHN1Ym5vZGVzICovCiAJCQlicmVhazsKIAkJY2FzZSBUX1dpdGhDaGVja09wdGlvbjoKQEAgLTMw MDgsNiArMzAxOSw3IEBAIGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwK IAkJY2FzZSBUX1NvcnRHcm91cENsYXVzZToKIAkJY2FzZSBUX0NURVNlYXJjaENsYXVzZToKIAkJ Y2FzZSBUX01lcmdlU3VwcG9ydEZ1bmM6CisJCWNhc2UgVF9GaWVsZEFjY2Vzc29yRXhwcjoKIAkJ CXJldHVybiBjb3B5T2JqZWN0KG5vZGUpOwogCQljYXNlIFRfV2l0aENoZWNrT3B0aW9uOgogCQkJ ewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCmluZGV4IDVkMGVjNmJmMmZhLi44MmNmNjBkZjgy MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYwpAQCAtMTUsMjEgKzE1LDMwIEBACiAjaW5j bHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgiCisjaW5j bHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAj aW5jbHVkZSAibm9kZXMvc3Vic2NyaXB0aW5nLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2Nv ZXJjZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9leHByLmgiCiAjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgorI2luY2x1ZGUgInV0aWxzL2pz b25wYXRoLmgiCiAKIAotLyogU3Vic2NyaXB0aW5nUmVmU3RhdGUud29ya3NwYWNlIGZvciBqc29u YiBzdWJzY3JpcHRpbmcgZXhlY3V0aW9uICovCisvKgorICogU3Vic2NyaXB0aW5nUmVmU3RhdGUu d29ya3NwYWNlIGZvciBnZW5lcmljIGpzb25iIHN1YnNjcmlwdGluZyBleGVjdXRpb24uCisgKgor ICogU3RvcmVzIHN0YXRlIGZvciBib3RoIGpzb25iIHNpbXBsZSBzdWJzY3JpcHRpbmcgYW5kIGRv dCBub3RhdGlvbiBhY2Nlc3MuCisgKiBEb3Qgbm90YXRpb24gYWRkaXRpb25hbGx5IHVzZXMgYGpz b25wYXRoYCBmb3IgSnNvblBhdGggZXZhbHVhdGlvbi4KKyAqLwogdHlwZWRlZiBzdHJ1Y3QgSnNv bmJTdWJXb3Jrc3BhY2UKIHsKIAlib29sCQlleHBlY3RBcnJheTsJLyoganNvbmIgcm9vdCBpcyBl eHBlY3RlZCB0byBiZSBhbiBhcnJheSAqLwogCU9pZAkJICAgKmluZGV4T2lkOwkJLyogT0lEIG9m IGNvZXJjZWQgc3Vic2NyaXB0IGV4cHJlc3Npb24sIGNvdWxkCiAJCQkJCQkJCSAqIGJlIG9ubHkg aW50ZWdlciBvciB0ZXh0ICovCiAJRGF0dW0JICAgKmluZGV4OwkJCS8qIFN1YnNjcmlwdCB2YWx1 ZXMgaW4gRGF0dW0gZm9ybWF0ICovCisJSnNvblBhdGggICAqanNvbnBhdGg7CQkvKiBKc29uUGF0 aCBmb3IgZG90IG5vdGF0aW9uIGV4ZWN1dGlvbiB2aWEKKwkJCQkJCQkJICogSnNvblBhdGhRdWVy eSgpICovCiB9IEpzb25iU3ViV29ya3NwYWNlOwogCiBzdGF0aWMgTm9kZSAqCkBAIC05Niw2ICsx MDUsMjQ0IEBAIGNvZXJjZV9qc29ucGF0aF9zdWJzY3JpcHQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpzdWJFeHByLCBPaWQgbnVtdHlwZSkKIAlyZXR1cm4gc3ViRXhwcjsKIH0KIAorLyoKKyAq IER1cmluZyB0cmFuc2Zvcm1hdGlvbiwgZGV0ZXJtaW5lIHdoZXRoZXIgdG8gYnVpbGQgYSBKc29u UGF0aAorICogZm9yIEpzb25QYXRoUXVlcnkoKSBleGVjdXRpb24uCisgKgorICogSnNvblBhdGgg aXMgbmVlZGVkIGlmIHRoZSBpbmRpcmVjdGlvbiBsaXN0IGluY2x1ZGVzOgorICogLSBTdHJpbmct YmFzZWQgYWNjZXNzIChkb3Qgbm90YXRpb24pCisgKiAtIFNsaWNlLWJhc2VkIHN1YnNjcmlwdGlu ZworICoKKyAqIE90aGVyd2lzZSwgc2ltcGxlIGpzb25iIHN1YnNjcmlwdGluZyBpcyBlbm91Z2gu CisgKi8KK3N0YXRpYyBib29sCitqc29uYl9jaGVja19qc29ucGF0aF9uZWVkZWQoTGlzdCAqaW5k aXJlY3Rpb24pCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBpbmRpcmVjdGlv bikKKwl7CisJCU5vZGUJICAgKmFjY2Vzc29yID0gbGZpcnN0KGxjKTsKKworCQlpZiAoSXNBKGFj Y2Vzc29yLCBTdHJpbmcpKQorCQkJcmV0dXJuIHRydWU7CisJCWVsc2UKKwkJeworCQkJQXNzZXJ0 KElzQShhY2Nlc3NvciwgQV9JbmRpY2VzKSk7CisKKwkJCWlmIChjYXN0Tm9kZShBX0luZGljZXMs IGFjY2Vzc29yKS0+aXNfc2xpY2UpCisJCQkJcmV0dXJuIHRydWU7CisJCX0KKwl9CisKKwlyZXR1 cm4gZmFsc2U7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBjb25zdHJ1Y3Rpbmcg SnNvblBhdGggZXhwcmVzc2lvbnMuCisgKgorICogVGhlIG1ha2VfanNvbnBhdGhfaXRlbV8qIGZ1 bmN0aW9ucyBjcmVhdGUgdmFyaW91cyB0eXBlcyBvZiBKc29uUGF0aFBhcnNlSXRlbQorICogbm9k ZXMsIHdoaWNoIGFyZSB1c2VkIHRvIGJ1aWxkIEpzb25QYXRoIGV4cHJlc3Npb25zIGZvciBqc29u YiBzaW1wbGlmaWVkCisgKiBhY2Nlc3Nvci4KKyAqLworCitzdGF0aWMgSnNvblBhdGhQYXJzZUl0 ZW0gKgorbWFrZV9qc29ucGF0aF9pdGVtKEpzb25QYXRoSXRlbVR5cGUgdHlwZSkKK3sKKwlKc29u UGF0aFBhcnNlSXRlbSAqdiA9IHBhbGxvYyhzaXplb2YoKnYpKTsKKworCXYtPnR5cGUgPSB0eXBl OworCXYtPm5leHQgPSBOVUxMOworCisJcmV0dXJuIHY7Cit9CisKKy8qCisgKiBCdWlsZCBhIEpz b25QYXRoUGFyc2VJdGVtIGZvciBhIGNvbnN0YW50IGludGVnZXIgdmFsdWUuCisgKgorICogVGhp cyBmdW5jdGlvbiBjb25zdHJ1Y3RzIGEganBpTnVtZXJpYyBpdGVtIGZvciB1c2UgaW4gSnNvblBh dGgsCisgKiBhbmQgYXBwZW5kcyBhIG1hdGNoaW5nIENvbnN0KElOVDQpIG5vZGUgdG8gdGhlIGdp dmVuIGV4cHJlc3Npb24gbGlzdAorICogZm9yIHVzZSBpbiBFWFBMQUlOLCB2aWV3cywgZXRjLgor ICoKKyAqIFBhcmFtZXRlcnM6CisgKiAtIHZhbDogaW50ZWdlciBjb25zdGFudCB2YWx1ZQorICog LSBleHByczogbGlzdCBvZiBleHByZXNzaW9uIG5vZGVzICh1cGRhdGVkIGluIHBsYWNlKQorICov CitzdGF0aWMgSnNvblBhdGhQYXJzZUl0ZW0gKgorbWFrZV9qc29ucGF0aF9pdGVtX2ludChpbnQz MiB2YWwsIExpc3QgKipleHBycykKK3sKKwlKc29uUGF0aFBhcnNlSXRlbSAqanBpID0gbWFrZV9q c29ucGF0aF9pdGVtKGpwaU51bWVyaWMpOworCisJanBpLT52YWx1ZS5udW1lcmljID0KKwkJRGF0 dW1HZXROdW1lcmljKERpcmVjdEZ1bmN0aW9uQ2FsbDEoaW50NF9udW1lcmljLCBJbnQzMkdldERh dHVtKHZhbCkpKTsKKworCSpleHBycyA9IGxhcHBlbmQoKmV4cHJzLCBtYWtlQ29uc3QoSU5UNE9J RCwgLTEsIEludmFsaWRPaWQsIDQsCisJCQkJCQkJCQkgICBJbnQzMkdldERhdHVtKHZhbCksIGZh bHNlLCB0cnVlKSk7CisKKwlyZXR1cm4ganBpOworfQorCisvKgorICogQ29udmVydCBhIGNvbnN0 YW50IGludGVnZXIgZXhwcmVzc2lvbiBpbnRvIGEgSnNvblBhdGhQYXJzZUl0ZW0uCisgKgorICog VGhlIGlucHV0IGV4cHJlc3Npb24gbXVzdCBiZSBhIG5vbi1udWxsIGNvbnN0YW50IG9mIHR5cGUg SU5UNC4gUmV0dXJucyBOVUxMIG90aGVyd2lzZS4KKyAqIFRoZSBmdW5jdGlvbiBleHRyYWN0cyB0 aGUgdmFsdWUgYW5kIGRlbGVnYXRlcyBpdCB0byBtYWtlX2pzb25wYXRoX2l0ZW1faW50KCkuCisg KgorICogUGFyYW1ldGVyczoKKyAqIC0gcHN0YXRlOiBwYXJzZSBzdGF0ZSBjb250ZXh0CisgKiAt IGV4cHI6IGlucHV0IGV4cHJlc3Npb24gbm9kZQorICogLSBleHByczogbGlzdCBvZiBleHByZXNz aW9uIG5vZGVzICh1cGRhdGVkIGluIHBsYWNlKQorICovCitzdGF0aWMgSnNvblBhdGhQYXJzZUl0 ZW0gKgorbWFrZV9qc29ucGF0aF9pdGVtX2V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpl eHByLCBMaXN0ICoqZXhwcnMpCit7CisJQ29uc3QJICAgKmNuc3Q7CisKKwlleHByID0gdHJhbnNm b3JtRXhwcihwc3RhdGUsIGV4cHIsIHBzdGF0ZS0+cF9leHByX2tpbmQpOworCisJaWYgKElzQShl eHByLCBDb25zdCkpCisJeworCQljbnN0ID0gKENvbnN0ICopIGV4cHI7CisJCWlmIChjbnN0LT5j b25zdHR5cGUgPT0gSU5UNE9JRCAmJiAhKGNuc3QtPmNvbnN0aXNudWxsKSkKKwkJCXJldHVybiBt YWtlX2pzb25wYXRoX2l0ZW1faW50KERhdHVtR2V0SW50MzIoY25zdC0+Y29uc3R2YWx1ZSksIGV4 cHJzKTsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIENvbnN0cnVjdHMgYSBKc29u UGF0aCBleHByZXNzaW9uIGZyb20gYSBsaXN0IG9mIGluZGlyZWN0aW9ucy4KKyAqIFRoaXMgZnVu Y3Rpb24gaXMgdXNlZCB3aGVuIGpzb25iIHN1YnNjcmlwdGluZyBpbnZvbHZlcyBkb3Qgbm90YXRp b24sCisgKiByZXF1aXJpbmcgSnNvblBhdGgtYmFzZWQgZXZhbHVhdGlvbi4KKyAqCisgKiBUaGUg ZnVuY3Rpb24gbW9kaWZpZXMgdGhlIGluZGlyZWN0aW9uIGxpc3QgaW4gcGxhY2UsIHJlbW92aW5n IHByb2Nlc3NlZAorICogZWxlbWVudHMgYXMgaXQgY29udmVydHMgdGhlbSBpbnRvIEpzb25QYXRo IGNvbXBvbmVudHMsIGFzIGZvbGxvd3M6CisgKiAtIFN0cmluZyBrZXlzIChkb3Qgbm90YXRpb24p IC0+IGpwaUtleSBpdGVtcy4KKyAqIC0gQXJyYXkgaW5kaWNlcyAtPiBqcGlJbmRleEFycmF5IGl0 ZW1zLgorICoKKyAqIEluIGFkZGl0aW9uIHRvIGJ1aWxkaW5nIHRoZSBKc29uUGF0aCBleHByZXNz aW9uLCB0aGlzIGZ1bmN0aW9uIHBvcHVsYXRlcworICogdGhlIGZvbGxvd2luZyBmaWVsZHMgb2Yg dGhlIGdpdmVuIFN1YnNjcmlwdGluZ1JlZjoKKyAqIC0gcmVmanNvbmJwYXRoOiB0aGUgZ2VuZXJh dGVkIEpzb25QYXRoCisgKiAtIHJlZnVwcGVyaW5kZXhwcjogdXBwZXIgaW5kZXggZXhwcmVzc2lv bnMgKG9iamVjdCBrZXlzIG9yIGFycmF5IGluZGV4ZXMpCisgKiAtIHJlZmxvd2VyaW5kZXhwcjog bG93ZXIgaW5kZXggZXhwcmVzc2lvbnMsIHJlbWFpbnMgTklMIGFzIHNsaWNlcyBhcmUgbm90IHll dCBzdXBwb3J0ZWQuCisgKgorICogUGFyYW1ldGVyczoKKyAqIC0gcHN0YXRlOiBQYXJzZSBzdGF0 ZSBjb250ZXh0LgorICogLSBpbmRpcmVjdGlvbjogTGlzdCBvZiBzdWJzY3JpcHRpbmcgZXhwcmVz c2lvbnMgKG1vZGlmaWVkIGluLXBsYWNlKS4KKyAqIC0gc2JzcmVmOiBTdWJzY3JpcHRpbmdSZWYg bm9kZSB0byB1cGRhdGUKKyAqLworc3RhdGljIHZvaWQKK2pzb25iX3N1YnNjcmlwdF9tYWtlX2pz b25wYXRoKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqKmluZGlyZWN0aW9uLCBTdWJzY3JpcHRp bmdSZWYgKnNic3JlZikKK3sKKwlKc29uUGF0aFBhcnNlUmVzdWx0IGpwcmVzOworCUpzb25QYXRo UGFyc2VJdGVtICpwYXRoID0gbWFrZV9qc29ucGF0aF9pdGVtKGpwaVJvb3QpOworCUxpc3RDZWxs ICAgKmxjOworCURhdHVtCQlqc3A7CisJaW50CQkJcGF0aGxlbiA9IDA7CisJaW50CQkJd2Fybmlu Z19sb2NhdGlvbiA9IC0xOworCisJc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIgPSBOSUw7CisJc2Jz cmVmLT5yZWZsb3dlcmluZGV4cHIgPSBOSUw7CisJc2JzcmVmLT5yZWZqc29uYnBhdGggPSBOVUxM OworCisJanByZXMuZXhwciA9IHBhdGg7CisJanByZXMubGF4ID0gdHJ1ZTsKKworCWZvcmVhY2go bGMsICppbmRpcmVjdGlvbikKKwl7CisJCU5vZGUJICAgKmFjY2Vzc29yID0gbGZpcnN0KGxjKTsK KwkJSnNvblBhdGhQYXJzZUl0ZW0gKmpwaTsKKworCQlpZiAoSXNBKGFjY2Vzc29yLCBTdHJpbmcp KQorCQl7CisJCQljaGFyCSAgICpmaWVsZCA9IHN0clZhbChhY2Nlc3Nvcik7CisJCQlGaWVsZEFj Y2Vzc29yRXhwciAqYWNjZXNzb3JfZXhwcjsKKworCQkJanBpID0gbWFrZV9qc29ucGF0aF9pdGVt KGpwaUtleSk7CisJCQlqcGktPnZhbHVlLnN0cmluZy52YWwgPSBmaWVsZDsKKwkJCWpwaS0+dmFs dWUuc3RyaW5nLmxlbiA9IHN0cmxlbihmaWVsZCk7CisKKwkJCWFjY2Vzc29yX2V4cHIgPSBtYWtl Tm9kZShGaWVsZEFjY2Vzc29yRXhwcik7CisJCQlhY2Nlc3Nvcl9leHByLT54cHIudHlwZSA9IFRf RmllbGRBY2Nlc3NvckV4cHI7CisJCQlhY2Nlc3Nvcl9leHByLT5maWVsZG5hbWUgPSBmaWVsZDsK KwkJCWFjY2Vzc29yX2V4cHItPmxvY2F0aW9uID0gLTE7CisKKwkJCXNic3JlZi0+cmVmdXBwZXJp bmRleHByID0gbGFwcGVuZChzYnNyZWYtPnJlZnVwcGVyaW5kZXhwciwgYWNjZXNzb3JfZXhwcik7 CisJCX0KKwkJZWxzZSBpZiAoSXNBKGFjY2Vzc29yLCBBX0luZGljZXMpKQorCQl7CisJCQlBX0lu ZGljZXMgICphaSA9IGNhc3ROb2RlKEFfSW5kaWNlcywgYWNjZXNzb3IpOworCisJCQlqcGkgPSBt YWtlX2pzb25wYXRoX2l0ZW0oanBpSW5kZXhBcnJheSk7CisJCQlqcGktPnZhbHVlLmFycmF5Lm5l bGVtcyA9IDE7CisJCQlqcGktPnZhbHVlLmFycmF5LmVsZW1zID0gcGFsbG9jKHNpemVvZihqcGkt PnZhbHVlLmFycmF5LmVsZW1zWzBdKSk7CisKKwkJCWlmIChhaS0+aXNfc2xpY2UpCisJCQl7CisJ CQkJTm9kZQkgICAqZXhwciA9IGFpLT51aWR4ID8gYWktPnVpZHggOiBhaS0+bGlkeDsKKworCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENI KSwKKwkJCQkJCSBlcnJtc2coImpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNl cyIpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihleHBy KSkpKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlKc29uUGF0aFBhcnNlSXRlbSAqanBpX2Zy b20gPSBOVUxMOworCisJCQkJQXNzZXJ0KGFpLT51aWR4ICYmICFhaS0+bGlkeCk7CisJCQkJanBp X2Zyb20gPSBtYWtlX2pzb25wYXRoX2l0ZW1fZXhwcihwc3RhdGUsIGFpLT51aWR4LCAmc2JzcmVm LT5yZWZ1cHBlcmluZGV4cHIpOworCQkJCWlmIChqcGlfZnJvbSA9PSBOVUxMKQorCQkJCXsKKwkJ CQkJLyoKKwkJCQkJICogcG9zdHBvbmUgZW1pdHRpbmcgdGhlIHdhcm5pbmcgdW50aWwgdGhlIGVu ZCBvZiB0aGlzCisJCQkJCSAqIGZ1bmN0aW9uCisJCQkJCSAqLworCQkJCQl3YXJuaW5nX2xvY2F0 aW9uID0gZXhwckxvY2F0aW9uKGFpLT51aWR4KTsKKwkJCQkJcGZyZWUoanBpLT52YWx1ZS5hcnJh eS5lbGVtcyk7CisJCQkJCXBmcmVlKGpwaSk7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJCWpw aS0+dmFsdWUuYXJyYXkuZWxlbXNbMF0uZnJvbSA9IGpwaV9mcm9tOworCQkJCWpwaS0+dmFsdWUu YXJyYXkuZWxlbXNbMF0udG8gPSBOVUxMOworCQkJfQorCQl9CisJCWVsc2UKKworCQkJLyoKKwkJ CSAqIFVuc3VwcG9ydGVkIG5vZGUgdHlwZSBmb3IgY3JlYXRpbmcganNvbnBhdGguIEluc3RlYWQg b2YKKwkJCSAqIHRocm93aW5nIGFuIEVSUk9SLCBicmVhayBoZXJlIHNvIHRoYXQgd2UgY3JlYXRl IGEganNvbnBhdGggZnJvbQorCQkJICogYXMgbWFueSBpbmRpcmVjdGlvbiBlbGVtZW50cyBhcyB3 ZSBjYW4gYW5kIGxldAorCQkJICogdHJhbnNmb3JtSW5kaXJlY3Rpb24oKSBmYWxsYmFjayB0byBh bHRlcm5hdGl2ZSBsb2dpYyB0byBoYW5kbGUKKwkJCSAqIHRoZSByZW1haW5pbmcgaW5kaXJlY3Rp b24gZWxlbWVudHMuCisJCQkgKi8KKwkJCWJyZWFrOworCisJCS8qIGFwcGVuZCBwYXRoIGl0ZW0g Ki8KKwkJcGF0aC0+bmV4dCA9IGpwaTsKKwkJcGF0aCA9IGpwaTsKKwkJcGF0aGxlbisrOworCX0K KworCWlmIChwYXRobGVuID09IDApCisJCXJldHVybjsKKworCSppbmRpcmVjdGlvbiA9IGxpc3Rf ZGVsZXRlX2ZpcnN0X24oKmluZGlyZWN0aW9uLCBwYXRobGVuKTsKKworCS8qIGVtaXQgd2Fybmlu ZyBjb25kaXRpb25hbGx5IHRvIG1pbmltaXplIGR1cGxpY2F0ZSB3YXJuaW5ncyAqLworCWlmIChs aXN0X2xlbmd0aCgqaW5kaXJlY3Rpb24pID4gMCkKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCWVy cmNvZGUoRVJSQ09ERV9XQVJOSU5HKSwKKwkJCQllcnJtc2coIm1peGVkIHVzYWdlIG9mIGpzb25i IHNpbXBsaWZpZWQgYWNjZXNzb3Igc3ludGF4IGFuZCBqc29uYiBzdWJzY3JpcHRpbmcuIiksCisJ CQkJZXJyaGludCgidXNlIGRvdC1ub3RhdGlvbiBmb3IgbWVtYmVyIGFjY2Vzcywgb3IgdXNlIG5v bi1udWxsIGludGVnZXIgY29uc3RhbnRzIHN1YnNjcmlwdGluZyBmb3IgYXJyYXkgYWNjZXNzLiIp LAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHdhcm5pbmdfbG9jYXRpb24pKTsKKwor CWpzcCA9IGpzb25QYXRoRnJvbVBhcnNlUmVzdWx0KCZqcHJlcywgMCwgTlVMTCk7CisKKwlzYnNy ZWYtPnJlZmpzb25icGF0aCA9IChOb2RlICopIG1ha2VDb25zdChKU09OUEFUSE9JRCwgLTEsIElu dmFsaWRPaWQsIC0xLCBqc3AsIGZhbHNlLCBmYWxzZSk7Cit9CisKIC8qCiAgKiBGaW5pc2ggcGFy c2UgYW5hbHlzaXMgb2YgYSBTdWJzY3JpcHRpbmdSZWYgZXhwcmVzc2lvbiBmb3IgYSBqc29uYi4K ICAqCkBAIC0xMTIsNDcgKzM1OSw0MyBAQCBqc29uYl9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNj cmlwdGluZ1JlZiAqc2JzcmVmLAogCUxpc3QJICAgKnVwcGVySW5kZXhwciA9IE5JTDsKIAlMaXN0 Q2VsbCAgICppZHg7CiAKKwkvKiBEZXRlcm1pbmUgdGhlIHJlc3VsdCB0eXBlIG9mIHRoZSBzdWJz Y3JpcHRpbmcgb3BlcmF0aW9uOyBhbHdheXMganNvbmIgKi8KKwlzYnNyZWYtPnJlZnJlc3R5cGUg PSBKU09OQk9JRDsKKwlzYnNyZWYtPnJlZnR5cG1vZCA9IC0xOworCisJaWYgKGpzb25iX2NoZWNr X2pzb25wYXRoX25lZWRlZCgqaW5kaXJlY3Rpb24pKQorCXsKKwkJanNvbmJfc3Vic2NyaXB0X21h a2VfanNvbnBhdGgocHN0YXRlLCBpbmRpcmVjdGlvbiwgc2JzcmVmKTsKKwkJaWYgKHNic3JlZi0+ cmVmanNvbmJwYXRoKQorCQkJcmV0dXJuOworCX0KKwogCS8qCi0JICogVHJhbnNmb3JtIGFuZCBj b252ZXJ0IHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbnMuIEpzb25iIHN1YnNjcmlwdGluZwotCSAq IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzLCBsb29rIG9ubHkgYXQgdGhlIHVwcGVyIGluZGV4Lgor CSAqIFdlIHdvdWxkIG9ubHkgcmVhY2ggaGVyZSBpZiBqc29uIHNpbXBsaWZpZWQgYWNjZXNzb3Ig aXMgbm90IG5lZWRlZCwgb3IKKwkgKiBpZiBqc29uYl9zdWJzY3JpcHRfbWFrZV9qc29ucGF0aCgp IGRpZG4ndCBjb25zdW1lIGFueSBpbmRpcmVjdGlvbgorCSAqIGVsZW1lbnQg4oCUIGVpdGhlciB3 YXksIHRoZSBmaXJzdCBpbmRpcmVjdGlvbiBlbGVtZW50IGNvdWxkIG5vdCBiZQorCSAqIGNvbnZl cnRlZCBpbnRvIGEgSnNvblBhdGggY29tcG9uZW50LiBUaGlzIGhhcHBlbnMgd2hlbiBpdCdzIGEg bm9uLXNsaWNlCisJICogQV9JbmRpY2VzIHdpdGggYSBub24taW50ZWdlciB1cHBlciBpbmRleC4g VGhlIGNvZGUgYmVsb3cgZmFsbHMgYmFjayB0bworCSAqIHRyYWRpdGlvbmFsIGpzb25iIHN1YnNj cmlwdGluZyBmb3Igc3VjaCBjYXNlcy4KIAkgKi8KIAlmb3JlYWNoKGlkeCwgKmluZGlyZWN0aW9u KQogCXsKKwkJTm9kZQkgICAqaSA9IGxmaXJzdChpZHgpOwogCQlBX0luZGljZXMgICphaTsKIAkJ Tm9kZQkgICAqc3ViRXhwcjsKIAogCQlpZiAoIUlzQShsZmlyc3QoaWR4KSwgQV9JbmRpY2VzKSkK IAkJCWJyZWFrOwogCi0JCWFpID0gbGZpcnN0X25vZGUoQV9JbmRpY2VzLCBpZHgpOworCQlhaSA9 IGNhc3ROb2RlKEFfSW5kaWNlcywgaSk7CiAKLQkJaWYgKGlzU2xpY2UpCi0JCXsKLQkJCU5vZGUJ ICAgKmV4cHIgPSBhaS0+dWlkeCA/IGFpLT51aWR4IDogYWktPmxpZHg7CisJCWlmIChhaS0+aXNf c2xpY2UpCisJCQlicmVhazsKIAotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJS Q09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCi0JCQkJCSBlcnJtc2coImpzb25iIHN1YnNjcmlwdCBk b2VzIG5vdCBzdXBwb3J0IHNsaWNlcyIpLAotCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgZXhwckxvY2F0aW9uKGV4cHIpKSkpOwotCQl9CisJCUFzc2VydCghYWktPmxpZHggJiYgYWkt PnVpZHgpOwogCi0JCWlmIChhaS0+dWlkeCkKLQkJewotCQkJc3ViRXhwciA9IHRyYW5zZm9ybUV4 cHIocHN0YXRlLCBhaS0+dWlkeCwgcHN0YXRlLT5wX2V4cHJfa2luZCk7Ci0JCQlzdWJFeHByID0g Y29lcmNlX2pzb25wYXRoX3N1YnNjcmlwdChwc3RhdGUsIHN1YkV4cHIsIElOVDRPSUQpOwotCQl9 Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFNsaWNlIHdpdGggb21pdHRlZCB1cHBlciBib3Vu ZC4gU2hvdWxkIG5vdCBoYXBwZW4gYXMgd2UgYWxyZWFkeQotCQkJICogZXJyb3JlZCBvdXQgb24g c2xpY2UgZWFybGllciwgYnV0IGhhbmRsZSB0aGlzIGp1c3QgaW4gY2FzZS4KLQkJCSAqLwotCQkJ QXNzZXJ0KGlzU2xpY2UgJiYgYWktPmlzX3NsaWNlKTsKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJ CShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAotCQkJCQkgZXJybXNnKCJqc29u YiBzdWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMiKSwKLQkJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihhaS0+dWlkeCkpKSk7Ci0JCX0KKwkJc3ViRXhw ciA9IHRyYW5zZm9ybUV4cHIocHN0YXRlLCBhaS0+dWlkeCwgcHN0YXRlLT5wX2V4cHJfa2luZCk7 CisJCXN1YkV4cHIgPSBjb2VyY2VfanNvbnBhdGhfc3Vic2NyaXB0KHBzdGF0ZSwgc3ViRXhwciwg SU5UNE9JRCk7CiAKIAkJdXBwZXJJbmRleHByID0gbGFwcGVuZCh1cHBlckluZGV4cHIsIHN1YkV4 cHIpOwogCX0KQEAgLTE2MSwxMCArNDA0LDYgQEAganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShT dWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAlzYnNyZWYtPnJlZnVwcGVyaW5kZXhwciA9IHVwcGVy SW5kZXhwcjsKIAlzYnNyZWYtPnJlZmxvd2VyaW5kZXhwciA9IE5JTDsKIAotCS8qIERldGVybWlu ZSB0aGUgcmVzdWx0IHR5cGUgb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVyYXRpb247IGFsd2F5cyBq c29uYiAqLwotCXNic3JlZi0+cmVmcmVzdHlwZSA9IEpTT05CT0lEOwotCXNic3JlZi0+cmVmdHlw bW9kID0gLTE7Ci0KIAkvKiBSZW1vdmUgcHJvY2Vzc2VkIGVsZW1lbnRzICovCiAJaWYgKHVwcGVy SW5kZXhwcikKIAkJKmluZGlyZWN0aW9uID0gbGlzdF9kZWxldGVfZmlyc3RfbigqaW5kaXJlY3Rp b24sIGxpc3RfbGVuZ3RoKHVwcGVySW5kZXhwcikpOwpAQCAtMjE5LDcgKzQ1OCw3IEBAIGpzb25i X3N1YnNjcmlwdF9jaGVja19zdWJzY3JpcHRzKEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkgKiBGb3Ig anNvbmIgZmV0Y2ggYW5kIGFzc2lnbiBmdW5jdGlvbnMgd2UgbmVlZCB0byBwcm92aWRlIHBhdGgg aW4KIAkJCSAqIHRleHQgZm9ybWF0LiBDb252ZXJ0IGlmIGl0J3Mgbm90IGFscmVhZHkgdGV4dC4K IAkJCSAqLwotCQkJaWYgKHdvcmtzcGFjZS0+aW5kZXhPaWRbaV0gPT0gSU5UNE9JRCkKKwkJCWlm ICghd29ya3NwYWNlLT5qc29ucGF0aCAmJiB3b3Jrc3BhY2UtPmluZGV4T2lkW2ldID09IElOVDRP SUQpCiAJCQl7CiAJCQkJRGF0dW0JCWRhdHVtID0gc2JzcmVmc3RhdGUtPnVwcGVyaW5kZXhbaV07 CiAJCQkJY2hhcgkgICAqY3MgPSBEYXR1bUdldENTdHJpbmcoRGlyZWN0RnVuY3Rpb25DYWxsMShp bnQ0b3V0LCBkYXR1bSkpOwpAQCAtMjQ3LDE3ICs0ODYsMzIgQEAganNvbmJfc3Vic2NyaXB0X2Zl dGNoKEV4cHJTdGF0ZSAqc3RhdGUsCiB7CiAJU3Vic2NyaXB0aW5nUmVmU3RhdGUgKnNic3JlZnN0 YXRlID0gb3AtPmQuc2JzcmVmLnN0YXRlOwogCUpzb25iU3ViV29ya3NwYWNlICp3b3Jrc3BhY2Ug PSAoSnNvbmJTdWJXb3Jrc3BhY2UgKikgc2JzcmVmc3RhdGUtPndvcmtzcGFjZTsKLQlKc29uYgkg ICAqanNvbmJTb3VyY2U7CiAKIAkvKiBTaG91bGQgbm90IGdldCBoZXJlIGlmIHNvdXJjZSBqc29u YiAob3IgYW55IHN1YnNjcmlwdCkgaXMgbnVsbCAqLwogCUFzc2VydCghKCpvcC0+cmVzbnVsbCkp OwogCi0JanNvbmJTb3VyY2UgPSBEYXR1bUdldEpzb25iUCgqb3AtPnJlc3ZhbHVlKTsKLQkqb3At PnJlc3ZhbHVlID0ganNvbmJfZ2V0X2VsZW1lbnQoanNvbmJTb3VyY2UsCi0JCQkJCQkJCQkgIHdv cmtzcGFjZS0+aW5kZXgsCi0JCQkJCQkJCQkgIHNic3JlZnN0YXRlLT5udW11cHBlciwKLQkJCQkJ CQkJCSAgb3AtPnJlc251bGwsCi0JCQkJCQkJCQkgIGZhbHNlKTsKKwlpZiAod29ya3NwYWNlLT5q c29ucGF0aCkKKwl7CisJCWJvb2wJCWVtcHR5ID0gZmFsc2U7CisJCWJvb2wJCWVycm9yID0gZmFs c2U7CisKKwkJKm9wLT5yZXN2YWx1ZSA9IEpzb25QYXRoUXVlcnkoKm9wLT5yZXN2YWx1ZSwgd29y a3NwYWNlLT5qc29ucGF0aCwKKwkJCQkJCQkJCSAgSlNXX0NPTkRJVElPTkFMLAorCQkJCQkJCQkJ ICAmZW1wdHksICZlcnJvciwgTlVMTCwKKwkJCQkJCQkJCSAgTlVMTCk7CisKKwkJKm9wLT5yZXNu dWxsID0gZW1wdHkgfHwgZXJyb3I7CisJfQorCWVsc2UKKwl7CisJCUpzb25iCSAgICpqc29uYlNv dXJjZSA9IERhdHVtR2V0SnNvbmJQKCpvcC0+cmVzdmFsdWUpOworCisJCSpvcC0+cmVzdmFsdWUg PSBqc29uYl9nZXRfZWxlbWVudChqc29uYlNvdXJjZSwKKwkJCQkJCQkJCQkgIHdvcmtzcGFjZS0+ aW5kZXgsCisJCQkJCQkJCQkJICBzYnNyZWZzdGF0ZS0+bnVtdXBwZXIsCisJCQkJCQkJCQkJICBv cC0+cmVzbnVsbCwKKwkJCQkJCQkJCQkgIGZhbHNlKTsKKwl9CiB9CiAKIC8qCkBAIC0zNjUsNyAr NjE5LDcgQEAganNvbmJfZXhlY19zZXR1cChjb25zdCBTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwK IHsKIAlKc29uYlN1YldvcmtzcGFjZSAqd29ya3NwYWNlOwogCUxpc3RDZWxsICAgKmxjOwotCWlu dAkJCW51cHBlciA9IHNic3JlZi0+cmVmdXBwZXJpbmRleHByLT5sZW5ndGg7CisJaW50CQkJbnVw cGVyID0gbGlzdF9sZW5ndGgoc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIpOwogCWNoYXIJICAgKnB0 cjsKIAogCS8qIEFsbG9jYXRlIHR5cGUtc3BlY2lmaWMgd29ya3NwYWNlIHdpdGggc3BhY2UgZm9y IHBlci1zdWJzY3JpcHQgZGF0YSAqLwpAQCAtMzc0LDYgKzYyOCw5IEBAIGpzb25iX2V4ZWNfc2V0 dXAoY29uc3QgU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJd29ya3NwYWNlLT5leHBlY3RBcnJh eSA9IGZhbHNlOwogCXB0ciA9ICgoY2hhciAqKSB3b3Jrc3BhY2UpICsgTUFYQUxJR04oc2l6ZW9m KEpzb25iU3ViV29ya3NwYWNlKSk7CiAKKwlpZiAoc2JzcmVmLT5yZWZqc29uYnBhdGgpCisJCXdv cmtzcGFjZS0+anNvbnBhdGggPSBEYXR1bUdldEpzb25QYXRoUChjYXN0Tm9kZShDb25zdCwgc2Jz cmVmLT5yZWZqc29uYnBhdGgpLT5jb25zdHZhbHVlKTsKKwogCS8qCiAJICogVGhpcyBjb2Rpbmcg YXNzdW1lcyBzaXplb2YoRGF0dW0pID49IHNpemVvZihPaWQpLCBlbHNlIHdlIG1pZ2h0CiAJICog bWlzYWxpZ24gdGhlIGluZGV4T2lkIHBvaW50ZXIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpp bmRleCAzZDZlNmJkYmZkMi4uYmFhM2FlOTdkNTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMKQEAgLTkzMjksMTAgKzkzMjksMTMgQEAgZ2V0X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBh cnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJICogUGFyZW50aGVzaXplIHRoZSBhcmd1bWVudCB1 bmxlc3MgaXQncyBhIHNpbXBsZSBWYXIgb3IgYQogCQkJCSAqIEZpZWxkU2VsZWN0LiAgKEluIHBh cnRpY3VsYXIsIGlmIGl0J3MgYW5vdGhlcgogCQkJCSAqIFN1YnNjcmlwdGluZ1JlZiwgd2UgKm11 c3QqIHBhcmVudGhlc2l6ZSB0byBhdm9pZAotCQkJCSAqIGNvbmZ1c2lvbi4pCisJCQkJICogY29u ZnVzaW9uLikgQWx3YXlzIGFkZCBwYXJlbnRoZXNpcyBpZiBKU09OIHNpbXBsaWZpZWQKKwkJCQkg KiBhY2Nlc3NvciBpcyB1c2VkLCBmb3Igbm93LgogCQkJCSAqLwotCQkJCW5lZWRfcGFyZW5zID0g IUlzQShzYnNyZWYtPnJlZmV4cHIsIFZhcikgJiYKLQkJCQkJIUlzQShzYnNyZWYtPnJlZmV4cHIs IEZpZWxkU2VsZWN0KTsKKwkJCQluZWVkX3BhcmVucyA9ICghSXNBKHNic3JlZi0+cmVmZXhwciwg VmFyKSAmJgorCQkJCQkhSXNBKHNic3JlZi0+cmVmZXhwciwgRmllbGRTZWxlY3QpKSB8fAorCQkJ CQkJc2JzcmVmLT5yZWZqc29uYnBhdGg7CisKIAkJCQlpZiAobmVlZF9wYXJlbnMpCiAJCQkJCWFw cGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJygnKTsKIAkJCQlnZXRfcnVsZV9leHByKChOb2RlICop IHNic3JlZi0+cmVmZXhwciwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKQEAgLTEzMDA1LDE3ICsx MzAwOCwzNSBAQCBwcmludFN1YnNjcmlwdHMoU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsIGRlcGFy c2VfY29udGV4dCAqY29udGV4dCkKIAlsb3dsaXN0X2l0ZW0gPSBsaXN0X2hlYWQoc2JzcmVmLT5y ZWZsb3dlcmluZGV4cHIpOwkvKiBjb3VsZCBiZSBOVUxMICovCiAJZm9yZWFjaCh1cGxpc3RfaXRl bSwgc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIpCiAJewotCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihi dWYsICdbJyk7Ci0JCWlmIChsb3dsaXN0X2l0ZW0pCisJCU5vZGUgKnVwcGVyID0gKE5vZGUgKikg bGZpcnN0KHVwbGlzdF9pdGVtKTsKKworCQlpZiAodXBwZXIgJiYgSXNBKHVwcGVyLCBGaWVsZEFj Y2Vzc29yRXhwcikpCiAJCXsKKwkJCUZpZWxkQWNjZXNzb3JFeHByICpmYWUgPSAoRmllbGRBY2Nl c3NvckV4cHIgKikgdXBwZXI7CisKKwkJCS8qIFVzZSBkb3Qtbm90YXRpb24gZm9yIGZpZWxkIGFj Y2VzcyAqLworCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnLicpOworCQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIoZmFlLT5maWVsZG5hbWUpKTsKKwor CQkJLyogU2tpcCBtYXRjaGluZyBsb3cgaW5kZXgg4oCUIGZpZWxkIGFjY2VzcyBkb2Vzbid0IHVz ZSBzbGljZXMgKi8KKwkJCWlmIChsb3dsaXN0X2l0ZW0pCisJCQkJbG93bGlzdF9pdGVtID0gbG5l eHQoc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIsIGxvd2xpc3RfaXRlbSk7CisJCX0KKwkJZWxzZQor CQl7CisJCQkvKiBVc2UgSlNPTkIgYXJyYXkgc3Vic2NyaXB0aW5nICovCisJCQlhcHBlbmRTdHJp bmdJbmZvQ2hhcihidWYsICdbJyk7CisJCQlpZiAobG93bGlzdF9pdGVtKQorCQkJeworCQkJCS8q IElmIHN1YmV4cHJlc3Npb24gaXMgTlVMTCwgZ2V0X3J1bGVfZXhwciBwcmludHMgbm90aGluZyAq LworCQkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgbGZpcnN0KGxvd2xpc3RfaXRlbSksIGNvbnRl eHQsIGZhbHNlKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICc6Jyk7CisJCQkJbG93 bGlzdF9pdGVtID0gbG5leHQoc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIsIGxvd2xpc3RfaXRlbSk7 CisJCQl9CiAJCQkvKiBJZiBzdWJleHByZXNzaW9uIGlzIE5VTEwsIGdldF9ydWxlX2V4cHIgcHJp bnRzIG5vdGhpbmcgKi8KLQkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgbGZpcnN0KGxvd2xpc3Rf aXRlbSksIGNvbnRleHQsIGZhbHNlKTsKLQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJzon KTsKLQkJCWxvd2xpc3RfaXRlbSA9IGxuZXh0KHNic3JlZi0+cmVmbG93ZXJpbmRleHByLCBsb3ds aXN0X2l0ZW0pOworCQkJZ2V0X3J1bGVfZXhwcih1cHBlciwgY29udGV4dCwgZmFsc2UpOworCQkJ YXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnXScpOwogCQl9Ci0JCS8qIElmIHN1YmV4cHJlc3Np b24gaXMgTlVMTCwgZ2V0X3J1bGVfZXhwciBwcmludHMgbm90aGluZyAqLwotCQlnZXRfcnVsZV9l eHByKChOb2RlICopIGxmaXJzdCh1cGxpc3RfaXRlbSksIGNvbnRleHQsIGZhbHNlKTsKLQkJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnXScpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApp bmRleCA2ZGZjYTNjYjM1Yi4uYjIwOGQ3OTQ5YjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC03 MDgsMTggKzcwOCwzMCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpbmdSZWYKIAlpbnQzMgkJ cmVmdHlwbW9kIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkvKiBjb2xsYXRp b24gb2YgcmVzdWx0LCBvciBJbnZhbGlkT2lkIGlmIG5vbmUgKi8KIAlPaWQJCQlyZWZjb2xsaWQg cGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwotCS8qIGV4cHJlc3Npb25zIHRoYXQg ZXZhbHVhdGUgdG8gdXBwZXIgY29udGFpbmVyIGluZGV4ZXMgKi8KKworCS8qCisJICogZXhwcmVz c2lvbnMgdGhhdCBldmFsdWF0ZSB0byB1cHBlciBjb250YWluZXIgaW5kZXhlcyBvciBleHByZXNz aW9ucworCSAqIHRoYXQgYXJlIGNvbGxlY3RlZCBidXQgbm90IGV2YWx1YXRlZCB3aGVuIHJlZmpz b25icGF0aCBpcyBzZXQuCisJICovCiAJTGlzdAkgICAqcmVmdXBwZXJpbmRleHByOwogCiAJLyoK LQkgKiBleHByZXNzaW9ucyB0aGF0IGV2YWx1YXRlIHRvIGxvd2VyIGNvbnRhaW5lciBpbmRleGVz LCBvciBOSUwgZm9yIHNpbmdsZQotCSAqIGNvbnRhaW5lciBlbGVtZW50LgorCSAqIGV4cHJlc3Np b25zIHRoYXQgZXZhbHVhdGUgdG8gbG93ZXIgY29udGFpbmVyIGluZGV4ZXMsIG9yIE5JTCBmb3Ig YQorCSAqIHNpbmdsZSBjb250YWluZXIgZWxlbWVudCwgb3IgZXhwcmVzc2lvbnMgdGhhdCBhcmUg Y29sbGVjdGVkIGJ1dCBub3QKKwkgKiBldmFsdWF0ZWQgd2hlbiByZWZqc29uYnBhdGggaXMgc2V0 LgogCSAqLwogCUxpc3QJICAgKnJlZmxvd2VyaW5kZXhwcjsKIAkvKiB0aGUgZXhwcmVzc2lvbiB0 aGF0IGV2YWx1YXRlcyB0byBhIGNvbnRhaW5lciB2YWx1ZSAqLwogCUV4cHIJICAgKnJlZmV4cHI7 CiAJLyogZXhwcmVzc2lvbiBmb3IgdGhlIHNvdXJjZSB2YWx1ZSwgb3IgTlVMTCBpZiBmZXRjaCAq LwogCUV4cHIJICAgKnJlZmFzc2duZXhwcjsKKworCS8qCisJICogY29udGFpbmVyLXNwZWNpZmlj IGV4dHJhIGluZm9ybWF0aW9uLCBjdXJyZW50bHkgdXNlZCBvbmx5IGJ5IGpzb25iLgorCSAqIHN0 b3JlcyBhIEpzb25QYXRoIGV4cHJlc3Npb24gd2hlbiBqc29uYiBkb3Qgbm90YXRpb24gaXMgdXNl ZC4gTlVMTCBmb3IKKwkgKiBzaW1wbGUgc3Vic2NyaXB0aW5nLgorCSAqLworCU5vZGUJICAgKnJl Zmpzb25icGF0aDsKIH0gU3Vic2NyaXB0aW5nUmVmOwogCiAvKgpAQCAtMjM3MSw0ICsyMzgzLDQx IEBAIHR5cGVkZWYgc3RydWN0IE9uQ29uZmxpY3RFeHByCiAJTGlzdAkgICAqZXhjbFJlbFRsaXN0 OwkvKiB0bGlzdCBvZiB0aGUgRVhDTFVERUQgcHNldWRvIHJlbGF0aW9uICovCiB9IE9uQ29uZmxp Y3RFeHByOwogCisvKgorICogRmllbGRBY2Nlc3NvckV4cHIgLSByZXByZXNlbnRzIGEgc2luZ2xl IG9iamVjdCBtZW1iZXIgYWNjZXNzIHVzaW5nIGRvdC1ub3RhdGlvbgorICoJCWluIEpTT04gc2lt cGxpZmllZCBhY2Nlc3NvciBzeW50YXggKGUuZy4sIGpzb25iX2NvbC5hKS4KKyAqCisgKiBUaGVz ZSBub2RlcyBhcHBlYXIgYXMgbGlzdCBlbGVtZW50cyBpbiBTdWJzY3JpcHRpbmdSZWYucmVmdXBw ZXJpbmRleHByIHRvCisgKiBpbmRpY2F0ZSBKU09OIG9iamVjdCBrZXkgYWNjZXNzLiBUaGV5IGFy ZSBub3QgZXZhbHVhYmxlIGV4cHJlc3Npb25zIGJ5CisgKiB0aGVtc2VsdmVzIGJ1dCBzZXJ2ZSBh cyBwbGFjZWhvbGRlcnMgdG8gcHJlc2VydmUgc291cmNlLWxldmVsIHN5bnRheCBmb3IKKyAqIHJ1 bGUgcmV3cml0aW5nIGFuZCBkZXBhcnNpbmcgKGUuZy4sIGluIEVYUExBSU4gYW5kIHZpZXcgZGVm aW5pdGlvbnMpLgorICogRXhlY3V0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIGVuY2xvc2luZyBTdWJz Y3JpcHRpbmdSZWYuCisgKgorICogSWYgZG90LW5vdGF0aW9uIGlzIHVzZWQgaW4gYSBTdWJzY3Jp cHRpbmdSZWYsIHRoZSBKU09OIHBhdGggaXMgcmVwcmVzZW50ZWQKKyAqIGFzIGEgZmxhdCBsaXN0 IG9mIEZpZWxkQWNjZXNzb3JFeHByIG5vZGVzIChmb3Igb2JqZWN0IGZpZWxkIGFjY2VzcyksIENv bnN0CisgKiBub2RlcyAoZm9yIGFycmF5IGluZGV4ZXMpLCBhbmQgTlVMTHMgKGZvciBvbWl0dGVk IHNsaWNlIGJvdW5kcyksIHJhdGhlciB0aGFuCisgKiB0aHJvdWdoIG5lc3RlZCBleHByZXNzaW9u IHRyZWVzLgorICoKKyAqIE5vdGU6IFRoZSBmbGF0IHJlcHJlc2VudGF0aW9uIGF2b2lkcyBuZXN0 ZWQgRmllbGRBY2Nlc3NvckV4cHIgY2hhaW5zLAorICogc2ltcGxpZnlpbmcgZXZhbHVhdGlvbiBh bmQgZW5hYmxpbmcgc3RhbmRhcmQtY29tcGxpYW50IGJlaGF2aW9yIHN1Y2ggYXMKKyAqIGNvbmRp dGlvbmFsIGFycmF5IHdyYXBwaW5nLiBUaGlzIGF2b2lkcyB0aGUgbmVlZCBmb3IgcG9zaXRpb24t YXdhcmUKKyAqIHdyYXBwaW5nL3Vud3JhcHBpbmcgbG9naWMgZHVyaW5nIGV4ZWN1dGlvbi4KKyAq CisgKiBGb3IgZXhhbXBsZSwgaW4gdGhlIGV4cHJlc3Npb246CisgKgkJKCd7ImEiOiBbeyJiIjog MX1dfSc6Ompzb25iKS5hWzBdLmIKKyAqIHRoZSBTdWJzY3JpcHRpbmdSZWYgd2lsbCBjb250YWlu OgorICoJCS0gcmVmZXhwcjogdGhlIGJhc2UgZXhwcmVzc2lvbiAodGhlIGpzb25iIHZhbHVlKQor ICoJCS0gcmVmdXBwZXJpbmRleHByOiBbRmllbGRBY2Nlc3NvckV4cHIoImEiKSwgQ29uc3QoMCks CisgKgkJCUZpZWxkQWNjZXNzb3JFeHByKCJiIildCisgKgkJLSByZWZsb3dlcmluZGV4cHI6IFtO VUxMLCBOVUxMLCBOVUxMXSAoc2xpY2UgbG93ZXIgYm91bmRzIG5vdCB1c2VkIGhlcmUpCisgKi8K K3R5cGVkZWYgc3RydWN0IEZpZWxkQWNjZXNzb3JFeHByCit7CisJRXhwcgkJeHByOworCWNoYXIJ ICAgKmZpZWxkbmFtZTsJCS8qIG5hbWUgb2YgdGhlIEpTT05CIG9iamVjdCBmaWVsZCBhY2Nlc3Nl ZCB2aWEKKwkJCQkJCQkJICogZG90IG5vdGF0aW9uICovCisJT2lkCQkJZmFlY29sbGlkIHBnX25v ZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKKwlpbnQJCQlsb2NhdGlvbjsKK30JCQlGaWVs ZEFjY2Vzc29yRXhwcjsKKwogI2VuZGlmCQkJCQkJCS8qIFBSSU1OT0RFU19IICovCmRpZmYgLS1n aXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uYyBiL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5jCmluZGV4IDM5MjIx ZjllYTVkLi5lNmE3ZWNlNmRhYiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0 L2V4cGVjdGVkL3NxbC1zcWxqc29uLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4 cGVjdGVkL3NxbC1zcWxqc29uLmMKQEAgLTQxNywxMiArNDE3LDEyMiBAQCBpZiAoc3FsY2Euc3Fs Y29kZSA8IDApIHNxbHByaW50KCk7fQogCSAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YoaXNf anNvbik7IGkrKykKIAkJICBwcmludGYoIkZvdW5kIGlzX2pzb25bJWRdOiAlc1xuIiwgaSwgaXNf anNvbltpXSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogCi0gIHsgRUNQR2Rpc2Nvbm5lY3QoX19MSU5F X18sICJDVVJSRU5UIik7CisJeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdz dF9ub3JtYWwsICJzZWxlY3QganNvbiAoICggJ3tcImFcIjoge1wiYlwiOiAxLCBcImNcIjogMn19 JyA6OiBqc29uYiApIC4gXCJhXCIgKSIsIEVDUEd0X0VPSVQsIAorCUVDUEd0X2NoYXIsKGpzb24p LChsb25nKTEwMjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BHdF9OT19JTkRJ Q0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKICNsaW5lIDExOCAic3FsanNv bi5wZ2MiCiAKIGlmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CiAjbGluZSAxMTgg InNxbGpzb24ucGdjIgogCisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCXsg RUNQR2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9ybWFsLCAic2VsZWN0IGpz b24gKCAne1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfX0nIDo6IGpzb25iIC4gXCJhXCIgKSIs IEVDUEd0X0VPSVQsIAorCUVDUEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQsKGxvbmcpMSwoMTAy NCkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBM LCBFQ1BHdF9FT1JUKTsKKyNsaW5lIDEyMSAic3FsanNvbi5wZ2MiCisKK2lmIChzcWxjYS5zcWxj b2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxMjEgInNxbGpzb24ucGdjIgorCisJLy8gZXJy b3IKKworCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9ybWFsLCAi c2VsZWN0IGpzb24gKCAoICd7XCJhXCI6IHtcImJcIjogMSwgXCJjXCI6IDJ9fScgOjoganNvbmIg KSAuIGEgKSIsIEVDUEd0X0VPSVQsIAorCUVDUEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQsKGxv bmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAw TCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKKyNsaW5lIDEyNCAic3FsanNvbi5wZ2MiCisKK2lmIChz cWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxMjQgInNxbGpzb24ucGdjIgor CisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCXsgRUNQR2RvKF9fTElORV9f LCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9ybWFsLCAic2VsZWN0IGpzb24gKCAoICd7XCJhXCI6 IHtcImJcIjogMSwgXCJjXCI6IDJ9fScgOjoganNvbmIgKSAuIGEgLiBiICkiLCBFQ1BHdF9FT0lU LCAKKwlFQ1BHdF9jaGFyLChqc29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihj aGFyKSwgCisJRUNQR3RfTk9fSU5ESUNBVE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9S VCk7CisjbGluZSAxMjcgInNxbGpzb24ucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNx bHByaW50KCk7fQorI2xpbmUgMTI3ICJzcWxqc29uLnBnYyIKKworCXByaW50ZigiRm91bmQganNv bj0lc1xuIiwganNvbik7CisKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQ R3N0X25vcm1hbCwgInNlbGVjdCBqc29uICggY29hbGVzY2UgKCBqc29uICggKCAne1wiYVwiOiB7 XCJiXCI6IDEsIFwiY1wiOiAyfX0nIDo6IGpzb25iICkgLiBjICkgLCAnbnVsbCcgKSApIiwgRUNQ R3RfRU9JVCwgCisJRUNQR3RfY2hhciwoanNvbiksKGxvbmcpMTAyNCwobG9uZykxLCgxMDI0KSpz aXplb2YoY2hhciksIAorCUVDUEd0X05PX0lORElDQVRPUiwgTlVMTCAsIDBMLCAwTCwgMEwsIEVD UEd0X0VPUlQpOworI2xpbmUgMTMwICJzcWxqc29uLnBnYyIKKworaWYgKHNxbGNhLnNxbGNvZGUg PCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDEzMCAic3FsanNvbi5wZ2MiCisKKwlwcmludGYoIkZv dW5kIGpzb249JXNcbiIsIGpzb24pOworCisJeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5VTEws IDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QganNvbiAoICggJ3tcImFcIjoge1wiYlwiOiAxLCBc ImNcIjogMn0sIFwiYlwiOiBbe1wieFwiOiAxfSwge1wieFwiOiBbMTIsIHtcInlcIjoxfV19XX0n IDo6IGpzb25iICkgLiBiIFsgMCBdICkiLCBFQ1BHdF9FT0lULCAKKwlFQ1BHdF9jaGFyLChqc29u KSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCisJRUNQR3RfTk9fSU5E SUNBVE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7CisjbGluZSAxMzMgInNxbGpz b24ucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUgMTMz ICJzcWxqc29uLnBnYyIKKworCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CisKKwl7 IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBq c29uICggKCAne1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfSwgXCJiXCI6IFt7XCJ4XCI6IDF9 LCB7XCJ4XCI6IFsxMiwge1wieVwiOjF9XX1dfScgOjoganNvbmIgKSAuIGIgLiB4ICkiLCBFQ1BH dF9FT0lULCAKKwlFQ1BHdF9jaGFyLChqc29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNp emVvZihjaGFyKSwgCisJRUNQR3RfTk9fSU5ESUNBVE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQ R3RfRU9SVCk7CisjbGluZSAxMzYgInNxbGpzb24ucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8 IDApIHNxbHByaW50KCk7fQorI2xpbmUgMTM2ICJzcWxqc29uLnBnYyIKKworCXByaW50ZigiRm91 bmQganNvbj0lc1xuIiwganNvbik7CisKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwgTlVMTCwg MCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBqc29uICggKCAne1wiYVwiOiB7XCJiXCI6IDEsIFwi Y1wiOiAyfSwgXCJiXCI6IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6IFsxMiwge1wieVwiOjF9XX1dfScg OjoganNvbmIgKSBbICdiJyBdIFsgMCBdICkiLCBFQ1BHdF9FT0lULCAKKwlFQ1BHdF9jaGFyLChq c29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCisJRUNQR3RfTk9f SU5ESUNBVE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7CisjbGluZSAxMzkgInNx bGpzb24ucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUg MTM5ICJzcWxqc29uLnBnYyIKKworCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CisK Kwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVj dCBqc29uICggKCAne1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfSwgXCJiXCI6IFt7XCJ4XCI6 IDF9LCB7XCJ4XCI6IFsxMiwge1wieVwiOjF9XX1dfScgOjoganNvbmIgKSAuIGIgWyAxIF0gLiB4 IFsgMCA6IF0gKSIsIEVDUEd0X0VPSVQsIAorCUVDUEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQs KGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwg LCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKKyNsaW5lIDE0MiAic3FsanNvbi5wZ2MiCisKK2lm IChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxNDIgInNxbGpzb24ucGdj IgorCisJLy8gZXJyb3IKKworCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BH c3Rfbm9ybWFsLCAic2VsZWN0IGpzb24gKCAoICd7XCJhXCI6IHtcImJcIjogMSwgXCJjXCI6IDJ9 LCBcImJcIjogW3tcInhcIjogMX0sIHtcInhcIjogWzEyLCB7XCJ5XCI6MX1dfV19JyA6OiBqc29u YiApIC4gKiApIiwgRUNQR3RfRU9JVCwgCisJRUNQR3RfY2hhciwoanNvbiksKGxvbmcpMTAyNCwo bG9uZykxLCgxMDI0KSpzaXplb2YoY2hhciksIAorCUVDUEd0X05PX0lORElDQVRPUiwgTlVMTCAs IDBMLCAwTCwgMEwsIEVDUEd0X0VPUlQpOworI2xpbmUgMTQ1ICJzcWxqc29uLnBnYyIKKworaWYg KHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDE0NSAic3FsanNvbi5wZ2Mi CisKKwkvLyBlcnJvcgorCisJeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdz dF9ub3JtYWwsICJzZWxlY3QganNvbiAoICggJ3tcImFcIjoge1wiYlwiOiAxLCBcImNcIjogMn0s IFwiYlwiOiBbe1wieFwiOiAxfSwge1wieFwiOiBbMTIsIHtcInlcIjoxfV19XX0nIDo6IGpzb25i ICkgWyAnYicgXSBbIDAgOiBdICkiLCBFQ1BHdF9FT0lULCAKKwlFQ1BHdF9jaGFyLChqc29uKSwo bG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCisJRUNQR3RfTk9fSU5ESUNB VE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7CisjbGluZSAxNDggInNxbGpzb24u cGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUgMTQ4ICJz cWxqc29uLnBnYyIKKworCS8vIGVycm9yCisKKyAgeyBFQ1BHZGlzY29ubmVjdChfX0xJTkVfXywg IkNVUlJFTlQiKTsKKyNsaW5lIDE1MSAic3FsanNvbi5wZ2MiCisKK2lmIChzcWxjYS5zcWxjb2Rl IDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxNTEgInNxbGpzb24ucGdjIgorCiAKICAgcmV0dXJu IDA7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3Fs LXNxbGpzb24uc3RkZXJyIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1z cWxqc29uLnN0ZGVycgppbmRleCBlNTVhOTVkZDcxMS4uMTlmOGM1OGFmMDYgMTAwNjQ0Ci0tLSBh L3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5zdGRlcnIKKysr IGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0ZGVycgpA QCAtMjY4LDUgKzI2OCwxMDUgQEAgU1FMIGVycm9yOiBjYW5ub3QgdXNlIHR5cGUganNvbmIgaW4g UkVUVVJOSU5HIGNsYXVzZSBvZiBKU09OX1NFUklBTElaRSgpIG9uIGxpbmUKIFtOT19QSURdOiBz cWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCiBbTk9fUElEXTogZWNwZ19nZXRfZGF0YSBvbiBs aW5lIDEwMjogUkVTVUxUOiBmIG9mZnNldDogLTE7IGFycmF5OiBubwogW05PX1BJRF06IHNxbGNh OiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAx MTg6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn19JyA6OiBq c29uYiApIC4gImEiICk7IHdpdGggMCBwYXJhbWV0ZXIocykgb24gY29ubmVjdGlvbiBlY3BnMV9y ZWdyZXNzaW9uCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJ RF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDExODogdXNpbmcgUFFleGVjCitbTk9fUElEXTogc3Fs Y2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfcHJvY2Vzc19vdXRwdXQg b24gbGluZSAxMTg6IGNvcnJlY3RseSBnb3QgMSB0dXBsZXMgd2l0aCAxIGZpZWxkcworW05PX1BJ RF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2dldF9kYXRh IG9uIGxpbmUgMTE4OiBSRVNVTFQ6IHsiYiI6IDEsICJjIjogMn0gb2Zmc2V0OiAtMTsgYXJyYXk6 IG5vCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVj cGdfZXhlY3V0ZSBvbiBsaW5lIDEyMTogcXVlcnk6IHNlbGVjdCBqc29uICggJ3siYSI6IHsiYiI6 IDEsICJjIjogMn19JyA6OiBqc29uYiAuICJhIiApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNv bm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0 ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMjE6IHVzaW5nIFBRZXhl YworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3Bn X2NoZWNrX1BRcmVzdWx0IG9uIGxpbmUgMTIxOiBiYWQgcmVzcG9uc2UgLSBFUlJPUjogIHNjaGVt YSAianNvbmIiIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IHNlbGVjdCBqc29uICggJ3siYSI6IHsi YiI6IDEsICJjIjogMn19JyA6OiBqc29uYiAuICJhIiApCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAs IHN0YXRlOiAwMDAwMAorW05PX1BJRF06IHJhaXNpbmcgc3Fsc3RhdGUgM0YwMDAgKHNxbGNvZGUg LTQwMCk6IHNjaGVtYSAianNvbmIiIGRvZXMgbm90IGV4aXN0IG9uIGxpbmUgMTIxCitbTk9fUElE XTogc3FsY2E6IGNvZGU6IC00MDAsIHN0YXRlOiAzRjAwMAorU1FMIGVycm9yOiBzY2hlbWEgImpz b25iIiBkb2VzIG5vdCBleGlzdCBvbiBsaW5lIDEyMQorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBv biBsaW5lIDEyNDogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJiIjogMSwgImMiOiAy fX0nIDo6IGpzb25iICkgLiBhICk7IHdpdGggMCBwYXJhbWV0ZXIocykgb24gY29ubmVjdGlvbiBl Y3BnMV9yZWdyZXNzaW9uCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAor W05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEyNDogdXNpbmcgUFFleGVjCitbTk9fUElE XTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfcHJvY2Vzc19v dXRwdXQgb24gbGluZSAxMjQ6IGNvcnJlY3RseSBnb3QgMSB0dXBsZXMgd2l0aCAxIGZpZWxkcwor W05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2dl dF9kYXRhIG9uIGxpbmUgMTI0OiBSRVNVTFQ6IHsiYiI6IDEsICJjIjogMn0gb2Zmc2V0OiAtMTsg YXJyYXk6IG5vCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJ RF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEyNzogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJh IjogeyJiIjogMSwgImMiOiAyfX0nIDo6IGpzb25iICkgLiBhIC4gYiApOyB3aXRoIDAgcGFyYW1l dGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBj b2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMjc6 IHVzaW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tO T19QSURdOiBlY3BnX3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMTI3OiBjb3JyZWN0bHkgZ290IDEg dHVwbGVzIHdpdGggMSBmaWVsZHMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAw MDAwCitbTk9fUElEXTogZWNwZ19nZXRfZGF0YSBvbiBsaW5lIDEyNzogUkVTVUxUOiAxIG9mZnNl dDogLTE7IGFycmF5OiBubworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAK K1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMzA6IHF1ZXJ5OiBzZWxlY3QganNvbiAo IGNvYWxlc2NlICgganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn19JyA6OiBqc29uYiAp IC4gYyApICwgJ251bGwnICkgKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBjb25uZWN0aW9uIGVj cGcxX3JlZ3Jlc3Npb24KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitb Tk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTMwOiB1c2luZyBQUWV4ZWMKK1tOT19QSURd OiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19wcm9jZXNzX291 dHB1dCBvbiBsaW5lIDEzMDogY29ycmVjdGx5IGdvdCAxIHR1cGxlcyB3aXRoIDEgZmllbGRzCitb Tk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZ2V0 X2RhdGEgb24gbGluZSAxMzA6IFJFU1VMVDogbnVsbCBvZmZzZXQ6IC0xOyBhcnJheTogbm8KK1tO T19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19leGVj dXRlIG9uIGxpbmUgMTMzOiBxdWVyeTogc2VsZWN0IGpzb24gKCAoICd7ImEiOiB7ImIiOiAxLCAi YyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfScgOjoganNvbmIg KSAuIGIgWyAwIF0gKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBjb25uZWN0aW9uIGVjcGcxX3Jl Z3Jlc3Npb24KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElE XTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTMzOiB1c2luZyBQUWV4ZWMKK1tOT19QSURdOiBzcWxj YTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19wcm9jZXNzX291dHB1dCBv biBsaW5lIDEzMzogY29ycmVjdGx5IGdvdCAxIHR1cGxlcyB3aXRoIDEgZmllbGRzCitbTk9fUElE XTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZ2V0X2RhdGEg b24gbGluZSAxMzM6IFJFU1VMVDogeyJ4IjogMX0gb2Zmc2V0OiAtMTsgYXJyYXk6IG5vCitbTk9f UElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0 ZSBvbiBsaW5lIDEzNjogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJiIjogMSwgImMi OiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nIDo6IGpzb25iICkg LiBiIC4geCApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVz c2lvbgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBl Y3BnX2V4ZWN1dGUgb24gbGluZSAxMzY6IHVzaW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNhOiBj b2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX3Byb2Nlc3Nfb3V0cHV0IG9uIGxp bmUgMTM2OiBjb3JyZWN0bHkgZ290IDEgdHVwbGVzIHdpdGggMSBmaWVsZHMKK1tOT19QSURdOiBz cWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19nZXRfZGF0YSBvbiBs aW5lIDEzNjogUkVTVUxUOiBbMSwgWzEyLCB7InkiOiAxfV1dIG9mZnNldDogLTE7IGFycmF5OiBu bworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3Bn X2V4ZWN1dGUgb24gbGluZSAxMzk6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6 IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19JyA6OiBq c29uYiApIFsgJ2InIF0gWyAwIF0gKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBjb25uZWN0aW9u IGVjcGcxX3JlZ3Jlc3Npb24KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAw CitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTM5OiB1c2luZyBQUWV4ZWMKK1tOT19Q SURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19wcm9jZXNz X291dHB1dCBvbiBsaW5lIDEzOTogY29ycmVjdGx5IGdvdCAxIHR1cGxlcyB3aXRoIDEgZmllbGRz CitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdf Z2V0X2RhdGEgb24gbGluZSAxMzk6IFJFU1VMVDogeyJ4IjogMX0gb2Zmc2V0OiAtMTsgYXJyYXk6 IG5vCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVj cGdfZXhlY3V0ZSBvbiBsaW5lIDE0MjogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJi IjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nIDo6 IGpzb25iICkgLiBiIFsgMSBdIC4geCBbIDAgOiBdICk7IHdpdGggMCBwYXJhbWV0ZXIocykgb24g Y29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0 YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDE0MjogdXNpbmcgUFFl eGVjCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVj cGdfY2hlY2tfUFFyZXN1bHQgb24gbGluZSAxNDI6IGJhZCByZXNwb25zZSAtIEVSUk9SOiAganNv bmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzCitMSU5FIDE6IC4uLiwgeyJ4Ijog WzEyLCB7InkiOjF9XX1dfScgOjoganNvbmIgKSAuIGIgWyAxIF0gLiB4IFsgMCA6IF0gKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTog cmFpc2luZyBzcWxzdGF0ZSA0MjgwNCAoc3FsY29kZSAtNDAwKToganNvbmIgc3Vic2NyaXB0IGRv ZXMgbm90IHN1cHBvcnQgc2xpY2VzIG9uIGxpbmUgMTQyCitbTk9fUElEXTogc3FsY2E6IGNvZGU6 IC00MDAsIHN0YXRlOiA0MjgwNAorU1FMIGVycm9yOiBqc29uYiBzdWJzY3JpcHQgZG9lcyBub3Qg c3VwcG9ydCBzbGljZXMgb24gbGluZSAxNDIKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGlu ZSAxNDU6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJi IjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19JyA6OiBqc29uYiApIC4gKiApOyB3 aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJ RF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUg b24gbGluZSAxNDU6IHVzaW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0 ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2NoZWNrX1BRcmVzdWx0IG9uIGxpbmUgMTQ1OiBiYWQg cmVzcG9uc2UgLSBFUlJPUjogIHJvdyBleHBhbnNpb24gdmlhICIqIiBpcyBub3Qgc3VwcG9ydGVk IGhlcmUKK0xJTkUgMTogc2VsZWN0IGpzb24gKCAoICd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAi YiI6IFt7IngiOiAxfSwgeyJ4Li4uCisgICAgICAgICAgICAgICAgICAgICAgICBeCitbTk9fUElE XTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IHJhaXNpbmcgc3Fsc3Rh dGUgMEEwMDAgKHNxbGNvZGUgLTQwMCk6IHJvdyBleHBhbnNpb24gdmlhICIqIiBpcyBub3Qgc3Vw cG9ydGVkIGhlcmUgb24gbGluZSAxNDUKK1tOT19QSURdOiBzcWxjYTogY29kZTogLTQwMCwgc3Rh dGU6IDBBMDAwCitTUUwgZXJyb3I6IHJvdyBleHBhbnNpb24gdmlhICIqIiBpcyBub3Qgc3VwcG9y dGVkIGhlcmUgb24gbGluZSAxNDUKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNDg6 IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3si eCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19JyA6OiBqc29uYiApIFsgJ2InIF0gWyAwIDog XSApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgor W05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4 ZWN1dGUgb24gbGluZSAxNDg6IHVzaW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAw LCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2NoZWNrX1BRcmVzdWx0IG9uIGxpbmUgMTQ4 OiBiYWQgcmVzcG9uc2UgLSBFUlJPUjogIGpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0 IHNsaWNlcworTElORSAxOiAuLi54IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nIDo6IGpz b25iICkgWyAnYicgXSBbIDAgOiBdICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitbTk9fUElEXTogc3FsY2E6IGNvZGU6 IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IHJhaXNpbmcgc3Fsc3RhdGUgNDI4MDQgKHNxbGNv ZGUgLTQwMCk6IGpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcyBvbiBsaW5l IDE0OAorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAtNDAwLCBzdGF0ZTogNDI4MDQKK1NRTCBlcnJv cjoganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzIG9uIGxpbmUgMTQ4CiBb Tk9fUElEXTogZWNwZ19maW5pc2g6IGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbiBjbG9zZWQK IFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCmRpZmYgLS1naXQgYS9zcmMv aW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3Rkb3V0IGIvc3JjL2lu dGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0ZG91dAppbmRleCA4M2Y4 ZGYxM2U1YS4uNDQyZDM2OTMxZjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVz dC9leHBlY3RlZC9zcWwtc3FsanNvbi5zdGRvdXQKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90 ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0ZG91dApAQCAtMjgsMyArMjgsMTAgQEAgRm91bmQg aXNfanNvbls0XTogZmFsc2UKIEZvdW5kIGlzX2pzb25bNV06IGZhbHNlCiBGb3VuZCBpc19qc29u WzZdOiB0cnVlCiBGb3VuZCBpc19qc29uWzddOiBmYWxzZQorRm91bmQganNvbj17ImIiOiAxLCAi YyI6IDJ9CitGb3VuZCBqc29uPXsiYiI6IDEsICJjIjogMn0KK0ZvdW5kIGpzb249MQorRm91bmQg anNvbj1udWxsCitGb3VuZCBqc29uPXsieCI6IDF9CitGb3VuZCBqc29uPVsxLCBbMTIsIHsieSI6 IDF9XV0KK0ZvdW5kIGpzb249eyJ4IjogMX0KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2Vj cGcvdGVzdC9zcWwvc3FsanNvbi5wZ2MgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3Nx bGpzb24ucGdjCmluZGV4IGRkY2JjYzNiM2NiLi41N2E5YmZmNDI0ZCAxMDA2NDQKLS0tIGEvc3Jj L2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9zcWxqc29uLnBnYworKysgYi9zcmMvaW50ZXJmYWNl cy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb24ucGdjCkBAIC0xMTUsNiArMTE1LDM5IEBAIEVYRUMgU1FM IEVORCBERUNMQVJFIFNFQ1RJT047CiAJICBmb3IgKGludCBpID0gMDsgaSA8IHNpemVvZihpc19q c29uKTsgaSsrKQogCQkgIHByaW50ZigiRm91bmQgaXNfanNvblslZF06ICVzXG4iLCBpLCBpc19q c29uW2ldID8gInRydWUiIDogImZhbHNlIik7CiAKKwlFWEVDIFNRTCBTRUxFQ1QgSlNPTigoJ3si YSI6IHsiYiI6IDEsICJjIjogMn19Jzo6anNvbmIpLiJhIikgSU5UTyA6anNvbjsKKwlwcmludGYo IkZvdW5kIGpzb249JXNcbiIsIGpzb24pOworCisJRVhFQyBTUUwgU0VMRUNUIEpTT04oJ3siYSI6 IHsiYiI6IDEsICJjIjogMn19Jzo6anNvbmIuImEiKSBJTlRPIDpqc29uOworCS8vIGVycm9yCisK KwlFWEVDIFNRTCBTRUxFQ1QgSlNPTigoJ3siYSI6IHsiYiI6IDEsICJjIjogMn19Jzo6anNvbmIp LmEpIElOVE8gOmpzb247CisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCUVY RUMgU1FMIFNFTEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfX0nOjpqc29uYikuYS5i KSBJTlRPIDpqc29uOworCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CisKKwlFWEVD IFNRTCBTRUxFQ1QgSlNPTihDT0FMRVNDRShKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfX0n Ojpqc29uYikuYyksICdudWxsJykpIElOVE8gOmpzb247CisJcHJpbnRmKCJGb3VuZCBqc29uPSVz XG4iLCBqc29uKTsKKworCUVYRUMgU1FMIFNFTEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMi OiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nOjpqc29uYikuYlsw XSkgSU5UTyA6anNvbjsKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOworCisJRVhF QyBTUUwgU0VMRUNUIEpTT04oKCd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAx fSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfSc6Ompzb25iKS5iLngpIElOVE8gOmpzb247CisJcHJp bnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCUVYRUMgU1FMIFNFTEVDVCBKU09OKCgn eyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5Ijox fV19XX0nOjpqc29uYilbJ2InXVswXSkgSU5UTyA6anNvbjsKKwlwcmludGYoIkZvdW5kIGpzb249 JXNcbiIsIGpzb24pOworCisJRVhFQyBTUUwgU0VMRUNUIEpTT04oKCd7ImEiOiB7ImIiOiAxLCAi YyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfSc6Ompzb25iKS5i WzFdLnhbMDpdKSBJTlRPIDpqc29uOworCS8vIGVycm9yCisKKwlFWEVDIFNRTCBTRUxFQ1QgSlNP TigoJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsi eSI6MX1dfV19Jzo6anNvbmIpLiopIElOVE8gOmpzb247CisJLy8gZXJyb3IKKworCUVYRUMgU1FM IFNFTEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsi eCI6IFsxMiwgeyJ5IjoxfV19XX0nOjpqc29uYilbJ2InXVswOl0pIElOVE8gOmpzb247CisJLy8g ZXJyb3IKKwogICBFWEVDIFNRTCBESVNDT05ORUNUOwogCiAgIHJldHVybiAwOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2pzb25iLm91dAppbmRleCA1YTFlYjE4YWJhMi4uMzBhNzAyMzUxM2QgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CkBAIC00OTg5LDYgKzQ5ODksMTIgQEAgc2VsZWN0 ICgnMTIzJzo6anNvbmIpWydhJ107CiAgCiAoMSByb3cpCiAKK3NlbGVjdCAoJzEyMyc6Ompzb25i KS5hOworIGEgCistLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgnMTIzJzo6anNvbmIpWzBdOwog IGpzb25iIAogLS0tLS0tLQpAQCAtNTAwMSwxMiArNTAwNywyNCBAQCBzZWxlY3QgKCcxMjMnOjpq c29uYilbTlVMTF07CiAgCiAoMSByb3cpCiAKK3NlbGVjdCAoJzEyMyc6Ompzb25iKS5OVUxMOwor IG51bGwgCistLS0tLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilb J2EnXTsKICBqc29uYiAKIC0tLS0tLS0KICAxCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IDF9 Jzo6anNvbmIpLmE7CisgYSAKKy0tLQorIDEKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogMX0n Ojpqc29uYilbMF07CiAganNvbmIgCiAtLS0tLS0tCkBAIC01MDE5LDYgKzUwMzcsMTIgQEAgc2Vs ZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ25vdF9leGlzdCddOwogIAogKDEgcm93KQogCitzZWxl Y3QgKCd7ImEiOiAxfSc6Ompzb25iKS4ibm90X2V4aXN0IjsKKyBub3RfZXhpc3QgCistLS0tLS0t LS0tLQorIAorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKVtOVUxMXTsKICBq c29uYiAKIC0tLS0tLS0KQEAgLTUwMzEsNiArNTA1NSwxMiBAQCBzZWxlY3QgKCdbMSwgIjIiLCBu dWxsXSc6Ompzb25iKVsnYSddOwogIAogKDEgcm93KQogCitzZWxlY3QgKCdbMSwgIjIiLCBudWxs XSc6Ompzb25iKS5hOworIGEgCistLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgnWzEsICIyIiwg bnVsbF0nOjpqc29uYilbMF07CiAganNvbmIgCiAtLS0tLS0tCkBAIC01MDQzLDYgKzUwNzMsMTIg QEAgc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbJzEnXTsKICAiMiIKICgxIHJvdykK IAorc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYikuIjEiOworIDEgCistLS0KKyAKKygx IHJvdykKKwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMS4wXTsKIEVSUk9SOiAg c3Vic2NyaXB0IHR5cGUgbnVtZXJpYyBpcyBub3Qgc3VwcG9ydGVkCiBMSU5FIDE6IHNlbGVjdCAo J1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzEuMF07CkBAIC01MDcyLDYgKzUxMDgsMTIgQEAgc2Vs ZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMV1bJ2EnXTsKICAKICgxIHJvdykKIAorc2Vs ZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMV0uYTsKKyBhIAorLS0tCisgCisoMSByb3cp CisKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzFdWzBdOwogIGpzb25iIAogLS0t LS0tLQpAQCAtNTA4NCw1NiArNTEyNiwxMzUgQEAgc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIs ICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnYiddOwogICJjIgogKDEgcm93KQogCitzZWxlY3Qg KCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpLmI7CisgIGIgIAor LS0tLS0KKyAiYyIKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjog WzEsIDIsIDNdfSc6Ompzb25iKVsnZCddOwogICAganNvbmIgICAKIC0tLS0tLS0tLS0tCiAgWzEs IDIsIDNdCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAy LCAzXX0nOjpqc29uYikuZDsKKyAgICAgZCAgICAgCistLS0tLS0tLS0tLQorIFsxLCAyLCAzXQor KDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6 anNvbmIpWydkJ11bMV07CiAganNvbmIgCiAtLS0tLS0tCiAgMgogKDEgcm93KQogCitzZWxlY3Qg KCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpLmRbMV07CisgZCAK Ky0tLQorIDIKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEs IDIsIDNdfSc6Ompzb25iKVsnZCddWydhJ107CiAganNvbmIgCiAtLS0tLS0tCiAgCiAoMSByb3cp CiAKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYiku ZFsnYSddOworV0FSTklORzogIG1peGVkIHVzYWdlIG9mIGpzb25iIHNpbXBsaWZpZWQgYWNjZXNz b3Igc3ludGF4IGFuZCBqc29uYiBzdWJzY3JpcHRpbmcuCitMSU5FIDE6IHNlbGVjdCAoJ3siYSI6 IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYikuZFsnYSddOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor SElOVDogIHVzZSBkb3Qtbm90YXRpb24gZm9yIG1lbWJlciBhY2Nlc3MsIG9yIHVzZSBub24tbnVs bCBpbnRlZ2VyIGNvbnN0YW50cyBzdWJzY3JpcHRpbmcgZm9yIGFycmF5IGFjY2Vzcy4KKyBkIAor LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAy LCAzXX0nOjpqc29uYikuZC5hOworIGEgCistLS0KKyAKKygxIHJvdykKKworc2VsZWN0ICgneyJh IjogMSwgImIiOiAiYyIsICJkIjogeyJhIjogWzEsIDIsIDNdfX0nOjpqc29uYikuZFsnYSddWzBd OworV0FSTklORzogIG1peGVkIHVzYWdlIG9mIGpzb25iIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3lu dGF4IGFuZCBqc29uYiBzdWJzY3JpcHRpbmcuCitMSU5FIDE6IC4uLiJhIjogMSwgImIiOiAiYyIs ICJkIjogeyJhIjogWzEsIDIsIDNdfX0nOjpqc29uYikuZFsnYSddWzBdOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElO VDogIHVzZSBkb3Qtbm90YXRpb24gZm9yIG1lbWJlciBhY2Nlc3MsIG9yIHVzZSBub24tbnVsbCBp bnRlZ2VyIGNvbnN0YW50cyBzdWJzY3JpcHRpbmcgZm9yIGFycmF5IGFjY2Vzcy4KKyBkIAorLS0t CisgMQorKDEgcm93KQorCitzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiB7ImEiOiBb MSwgMiwgM119fSc6Ompzb25iKS5kLmFbMF07CisgYSAKKy0tLQorIDEKKygxIHJvdykKKwogc2Vs ZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2Mi fSc6Ompzb25iKVsnYSddWydhMSddOwogICAgICBqc29uYiAgICAgCiAtLS0tLS0tLS0tLS0tLS0K ICB7ImEyIjogImFhYSJ9CiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEyIjog ImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYikuYS5hMTsKKyAgICAgIGEx ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tCisgeyJhMiI6ICJhYWEifQorKDEgcm93KQorCiBzZWxl Y3QgKCd7ImEiOiB7ImExIjogeyJhMiI6ICJhYWEifX0sICJiIjogImJiYiIsICJjIjogImNjYyJ9 Jzo6anNvbmIpWydhJ11bJ2ExJ11bJ2EyJ107CiAganNvbmIgCiAtLS0tLS0tCiAgImFhYSIKICgx IHJvdykKIAorc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIi LCAiYyI6ICJjY2MifSc6Ompzb25iKS5hLmExLmEyOworICBhMiAgIAorLS0tLS0tLQorICJhYWEi CisoMSByb3cpCisKIHNlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAi YmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYilbJ2EnXVsnYTEnXVsnYTInXVsnYTMnXTsKICBqc29u YiAKIC0tLS0tLS0KICAKICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAi YWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKS5hLmExLmEyLmEzOworIGEz IAorLS0tLQorIAorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiBbImExIiwgeyJiMSI6IFsiYWFh IiwgImJiYiIsICJjY2MiXX1dLCAiYiI6ICJiYiJ9Jzo6anNvbmIpWydhJ11bMV1bJ2IxJ107CiAg ICAgICAgICBqc29uYiAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBbImFhYSIs ICJiYmIiLCAiY2NjIl0KICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjogWyJhMSIsIHsiYjEiOiBb ImFhYSIsICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIifSc6Ompzb25iKS5hWzFdLmIxOworICAg ICAgICAgIGIxICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWyJhYWEiLCAi YmJiIiwgImNjYyJdCisoMSByb3cpCisKIHNlbGVjdCAoJ3siYSI6IFsiYTEiLCB7ImIxIjogWyJh YWEiLCAiYmJiIiwgImNjYyJdfV0sICJiIjogImJiIn0nOjpqc29uYilbJ2EnXVsxXVsnYjEnXVsy XTsKICBqc29uYiAKIC0tLS0tLS0KICAiY2NjIgogKDEgcm93KQogCi0tLSBzbGljZXMgYXJlIG5v dCBzdXBwb3J0ZWQKLXNlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpWydhJzonYiddOworc2VsZWN0 ICgneyJhIjogWyJhMSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIi fSc6Ompzb25iKS5hWzFdLmIxWzJdOworICBiMSAgIAorLS0tLS0tLQorICJjY2MiCisoMSByb3cp CisKK3NlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpWydhJzonYiddOyAtLSBmYWlscwogRVJST1I6 ICBqc29uYiBzdWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMKIExJTkUgMTogc2VsZWN0 ICgneyJhIjogMX0nOjpqc29uYilbJ2EnOidiJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCkBAIC01ODMxLDMgKzU5NTIsMzQ3IEBAIHNlbGVjdCAnMTIzNDUuMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjppbnQ4 OwogIDEyMzQ1CiAoMSByb3cpCiAKKy0tIGRvdCBub3RhdGlvbgorQ1JFQVRFIFRBQkxFIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uIEFTCitTRUxFQ1QgJ3siYSI6IFsxLCAyLCB7ImIiOiAiYyJ9LCB7 ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1dLCAiYiI6 IFszLCA0LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV19Jzo6anNv bmIgamI7CitTRUxFQ1QgKGpiKS5hIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWzEsIDIsIHsiYiI6ICJjIn0sIHsiYiI6 ICJkIiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0KKygxIHJvdykK KworU0VMRUNUIChqYikuImEiIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIGRvdWJs ZSBxdW90ZSBzaG91bGQgd29yaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFsxLCAyLCB7ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXki LCAieiI6ICJ6enoifX1dCisoMSByb3cpCisKK1NFTEVDVCAoamIpLidhJyBGUk9NIHRlc3RfanNv bmJfZG90X25vdGF0aW9uOyAtLSBzaW5nbGUgcXVvdGUgc2hvdWxkIG5vdCB3b3JrCitFUlJPUjog IHN5bnRheCBlcnJvciBhdCBvciBuZWFyICInYSciCitMSU5FIDE6IFNFTEVDVCAoamIpLidhJyBG Uk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICAgICBeCitTRUxF Q1QgKGpiKS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAg ICAgICAgICAgYiAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFszLCA0LCB7ImIiOiAiZyIsICJ4Ijog eyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV0KKygxIHJvdykKKworU0VMRUNUIChqYikuYyBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworIGMgCistLS0KKyAKKygxIHJvdykKKworU0VMRUNU IChqYikuYS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgIGIgICAgICAKKy0t LS0tLS0tLS0tLQorIFsiYyIsICJkIl0KKygxIHJvdykKKworU0VMRUNUIChqYikuYVsyXS5iIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgIGIgIAorLS0tLS0KKyAiYyIKKygxIHJvdykK KworU0VMRUNUIChqYikuYS54LnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgIHkg ICAKKy0tLS0tLS0KKyAieXl5IgorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5iLngueiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworICAgeiAgIAorLS0tLS0tLQorICJaWloiCisoMSByb3cp CisKK1NFTEVDVCAoamIpLmEuYi5jIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgYyAK Ky0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKChqYikuYilbOl0ueCBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uIHQ7IC0tIGZhaWxzCitFUlJPUjogIGpzb25iIHN1YnNjcmlwdCBkb2VzIG5v dCBzdXBwb3J0IHNsaWNlcworU0VMRUNUIChqYikuYS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247IC0tIGZhaWxzCitFUlJPUjogIHR5cGUganNvbmIgaXMgbm90IGNvbXBvc2l0ZQorLS0g ZXhwbGFpbnMgc2hvdWxkIHdvcmsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNU ICh0LmpiKS5hIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKKyAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9k b3Rfbm90YXRpb24gdAorICAgT3V0cHV0OiAoamIpLmEKKygyIHJvd3MpCisKK1NFTEVDVCAodC5q YikuYSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgWzEsIDIsIHsiYiI6ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAiZiIs ICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0KKygxIHJvdykKKworRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hWzFdIEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247CisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBw dWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb24KKyAgIE91dHB1dDogKGpiKS5hWzFdCisoMiBy b3dzKQorCitTRUxFQ1QgKGpiKS5hWzFdIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Cisg YSAKKy0tLQorIDIKKygxIHJvdykKKworLS0gdmlld3Mgc2hvdWxkIHdvcmsKK0NSRUFURSBWSUVX IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTIFNFTEVDVCAoamIpLmFbM10ueC55IEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEK K0NSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3Yx IEFTCisgU0VMRUNUIChqYikuYVszXS54LnkgQVMgeQorICAgRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbgorLS0gbWl4ZWQgc3ludGF4CitEUk9QIFZJRVcgdGVzdF9qc29uYl9kb3Rfbm90YXRp b25fdjE7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpWydhJ10uYiBG Uk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCisgICBP dXRwdXQ6IChqYlsnYSc6OnRleHRdKS5iCisoMiByb3dzKQorCitTRUxFQ1QgKGpiKVsnYSddLmIg RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gcmV0dXJucyBhbiBhcnJheSBkdWUgdG8g bGF4IG1vZGUKKyAgICAgYiAgICAgIAorLS0tLS0tLS0tLS0tCisgWyJjIiwgImQiXQorKDEgcm93 KQorCitDUkVBVEUgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMKK1NF TEVDVCAoamIpWydhJ10uYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHRlc3Rf anNvbmJfZG90X25vdGF0aW9uX3YxCitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy50ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworIFNFTEVDVCAoamJbJ2EnOjp0ZXh0XSkuYiBBUyBi CisgICBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uCitTRUxFQ1QgKiBmcm9tIHRlc3RfanNv bmJfZG90X25vdGF0aW9uX3YxOworICAgICBiICAgICAgCistLS0tLS0tLS0tLS0KKyBbImMiLCAi ZCJdCisoMSByb3cpCisKK0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25f djE7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmFbJ2InXSBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworV0FSTklORzogIG1peGVkIHVzYWdlIG9mIGpzb25i IHNpbXBsaWZpZWQgYWNjZXNzb3Igc3ludGF4IGFuZCBqc29uYiBzdWJzY3JpcHRpbmcuCitMSU5F IDE6IEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYVsnYiddIEZST00g dGVzdF9qcy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorSElOVDogIHVzZSBkb3Qtbm90YXRpb24gZm9yIG1lbWJlciBhY2Nlc3MsIG9yIHVz ZSBub24tbnVsbCBpbnRlZ2VyIGNvbnN0YW50cyBzdWJzY3JpcHRpbmcgZm9yIGFycmF5IGFjY2Vz cy4KKyAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1Ymxp Yy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorICAgT3V0cHV0OiAoKGpiKS5hKVsnYic6OnRleHRd CisoMiByb3dzKQorCitTRUxFQ1QgKGpiKS5hWydiJ10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsgLS0gcmV0dXJucyBOVUxMIGR1ZSB0byBzdHJpY3QgbW9kZSB3aXRoIHdhcm5pbmdzCitX QVJOSU5HOiAgbWl4ZWQgdXNhZ2Ugb2YganNvbmIgc2ltcGxpZmllZCBhY2Nlc3NvciBzeW50YXgg YW5kIGpzb25iIHN1YnNjcmlwdGluZy4KK0xJTkUgMTogU0VMRUNUIChqYikuYVsnYiddIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDog IHVzZSBkb3Qtbm90YXRpb24gZm9yIG1lbWJlciBhY2Nlc3MsIG9yIHVzZSBub24tbnVsbCBpbnRl Z2VyIGNvbnN0YW50cyBzdWJzY3JpcHRpbmcgZm9yIGFycmF5IGFjY2Vzcy4KKyBhIAorLS0tCisg CisoMSByb3cpCisKK0NSRUFURSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92 MSBBUworU0VMRUNUIChqYikuYVsnYiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitX QVJOSU5HOiAgbWl4ZWQgdXNhZ2Ugb2YganNvbmIgc2ltcGxpZmllZCBhY2Nlc3NvciBzeW50YXgg YW5kIGpzb25iIHN1YnNjcmlwdGluZy4KK0xJTkUgMjogU0VMRUNUIChqYikuYVsnYiddIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDog IHVzZSBkb3Qtbm90YXRpb24gZm9yIG1lbWJlciBhY2Nlc3MsIG9yIHVzZSBub24tbnVsbCBpbnRl Z2VyIGNvbnN0YW50cyBzdWJzY3JpcHRpbmcgZm9yIGFycmF5IGFjY2Vzcy4KK1xzdiB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbl92MQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudGVzdF9q c29uYl9kb3Rfbm90YXRpb25fdjEgQVMKKyBTRUxFQ1QgKChqYikuYSlbJ2InOjp0ZXh0XSBBUyBh CisgICBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uCitTRUxFQ1QgKiBmcm9tIHRlc3RfanNv bmJfZG90X25vdGF0aW9uX3YxOworIGEgCistLS0KKyAKKygxIHJvdykKKworRFJPUCBWSUVXIHB1 YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikgU0VMRUNUIChqYikuYi54Wyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK K1dBUk5JTkc6ICBtaXhlZCB1c2FnZSBvZiBqc29uYiBzaW1wbGlmaWVkIGFjY2Vzc29yIHN5bnRh eCBhbmQganNvbmIgc3Vic2NyaXB0aW5nLgorTElORSAxOiBFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAoamIpLmIueFsneiddIEZST00gdGVzdF8uLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIHVzZSBkb3Qt bm90YXRpb24gZm9yIG1lbWJlciBhY2Nlc3MsIG9yIHVzZSBub24tbnVsbCBpbnRlZ2VyIGNvbnN0 YW50cyBzdWJzY3JpcHRpbmcgZm9yIGFycmF5IGFjY2Vzcy4KKyAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlv bgorICAgT3V0cHV0OiAoKGpiKS5iLngpWyd6Jzo6dGV4dF0KKygyIHJvd3MpCisKK1NFTEVDVCAo amIpLmIueFsneiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIHdhcm5pbmdzCitX QVJOSU5HOiAgbWl4ZWQgdXNhZ2Ugb2YganNvbmIgc2ltcGxpZmllZCBhY2Nlc3NvciBzeW50YXgg YW5kIGpzb25iIHN1YnNjcmlwdGluZy4KK0xJTkUgMTogU0VMRUNUIChqYikuYi54Wyd6J10gRlJP TSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJ TlQ6ICB1c2UgZG90LW5vdGF0aW9uIGZvciBtZW1iZXIgYWNjZXNzLCBvciB1c2Ugbm9uLW51bGwg aW50ZWdlciBjb25zdGFudHMgc3Vic2NyaXB0aW5nIGZvciBhcnJheSBhY2Nlc3MuCisgICB4ICAg CistLS0tLS0tCisgIlpaWiIKKygxIHJvdykKKworQ1JFQVRFIFZJRVcgcHVibGljLnRlc3RfanNv bmJfZG90X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpiKS5iLnhbJ3onXSBGUk9NIHRlc3RfanNv bmJfZG90X25vdGF0aW9uOworV0FSTklORzogIG1peGVkIHVzYWdlIG9mIGpzb25iIHNpbXBsaWZp ZWQgYWNjZXNzb3Igc3ludGF4IGFuZCBqc29uYiBzdWJzY3JpcHRpbmcuCitMSU5FIDI6IFNFTEVD VCAoamIpLmIueFsneiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAg ICAgICAgICAgICAgICBeCitISU5UOiAgdXNlIGRvdC1ub3RhdGlvbiBmb3IgbWVtYmVyIGFjY2Vz cywgb3IgdXNlIG5vbi1udWxsIGludGVnZXIgY29uc3RhbnRzIHN1YnNjcmlwdGluZyBmb3IgYXJy YXkgYWNjZXNzLgorXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCitDUkVBVEUgT1IgUkVQ TEFDRSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworIFNFTEVDVCAo KGpiKS5iLngpWyd6Jzo6dGV4dF0gQVMgeAorICAgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv bgorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKKyAgIHggICAKKy0t LS0tLS0KKyAiWlpaIgorKDEgcm93KQorCitEUk9QIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90 X25vdGF0aW9uX3YxOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKVsn YiddLnhbJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworV0FSTklORzogIG1peGVk IHVzYWdlIG9mIGpzb25iIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3ludGF4IGFuZCBqc29uYiBzdWJz Y3JpcHRpbmcuCitMSU5FIDE6IEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChq YilbJ2InXS54Wyd6J10gRlJPTSB0ZS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgdXNlIGRvdC1ub3RhdGlvbiBmb3Ig bWVtYmVyIGFjY2Vzcywgb3IgdXNlIG5vbi1udWxsIGludGVnZXIgY29uc3RhbnRzIHN1YnNjcmlw dGluZyBmb3IgYXJyYXkgYWNjZXNzLgorICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCisgICBPdXRwdXQ6 ICgoamJbJ2InOjp0ZXh0XSkueClbJ3onOjp0ZXh0XQorKDIgcm93cykKKworU0VMRUNUIChqYilb J2InXS54Wyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgIC0tIHdhcm5pbmdzCitX QVJOSU5HOiAgbWl4ZWQgdXNhZ2Ugb2YganNvbmIgc2ltcGxpZmllZCBhY2Nlc3NvciBzeW50YXgg YW5kIGpzb25iIHN1YnNjcmlwdGluZy4KK0xJTkUgMTogU0VMRUNUIChqYilbJ2InXS54Wyd6J10g RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KK0hJTlQ6ICB1c2UgZG90LW5vdGF0aW9uIGZvciBtZW1iZXIgYWNjZXNzLCBvciB1c2Ugbm9u LW51bGwgaW50ZWdlciBjb25zdGFudHMgc3Vic2NyaXB0aW5nIGZvciBhcnJheSBhY2Nlc3MuCisg ICB4ICAgCistLS0tLS0tCisgIlpaWiIKKygxIHJvdykKKworQ1JFQVRFIFZJRVcgcHVibGljLnRl c3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpiKVsnYiddLnhbJ3onXSBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworV0FSTklORzogIG1peGVkIHVzYWdlIG9mIGpzb25i IHNpbXBsaWZpZWQgYWNjZXNzb3Igc3ludGF4IGFuZCBqc29uYiBzdWJzY3JpcHRpbmcuCitMSU5F IDI6IFNFTEVDVCAoamIpWydiJ10ueFsneiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 CisgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgdXNlIGRvdC1ub3RhdGlvbiBm b3IgbWVtYmVyIGFjY2Vzcywgb3IgdXNlIG5vbi1udWxsIGludGVnZXIgY29uc3RhbnRzIHN1YnNj cmlwdGluZyBmb3IgYXJyYXkgYWNjZXNzLgorXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3Yx CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92 MSBBUworIFNFTEVDVCAoKGpiWydiJzo6dGV4dF0pLngpWyd6Jzo6dGV4dF0gQVMgeAorICAgRlJP TSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbl92MTsKKyAgIHggICAKKy0tLS0tLS0KKyAiWlpaIgorKDEgcm93KQorCitEUk9QIFZJ RVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5iWyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOworV0FSTklORzogIG1peGVkIHVzYWdlIG9mIGpzb25iIHNpbXBsaWZpZWQgYWNjZXNzb3Ig c3ludGF4IGFuZCBqc29uYiBzdWJzY3JpcHRpbmcuCitMSU5FIDE6IEVYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikgU0VMRUNUIChqYikuYlsneCddLnogRlJPTSB0ZXN0Xy4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIHVzZSBk b3Qtbm90YXRpb24gZm9yIG1lbWJlciBhY2Nlc3MsIG9yIHVzZSBub24tbnVsbCBpbnRlZ2VyIGNv bnN0YW50cyBzdWJzY3JpcHRpbmcgZm9yIGFycmF5IGFjY2Vzcy4KKyAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbgorICAgT3V0cHV0OiAoKChqYikuYilbJ3gnOjp0ZXh0XSkuegorKDIgcm93cykKKworU0VM RUNUIChqYikuYlsneCddLnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gcmV0dXJu cyBOVUxMIHdpdGggd2FybmluZ3MKK1dBUk5JTkc6ICBtaXhlZCB1c2FnZSBvZiBqc29uYiBzaW1w bGlmaWVkIGFjY2Vzc29yIHN5bnRheCBhbmQganNvbmIgc3Vic2NyaXB0aW5nLgorTElORSAxOiBT RUxFQ1QgKGpiKS5iWyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAg ICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICB1c2UgZG90LW5vdGF0aW9uIGZvciBtZW1iZXIgYWNj ZXNzLCBvciB1c2Ugbm9uLW51bGwgaW50ZWdlciBjb25zdGFudHMgc3Vic2NyaXB0aW5nIGZvciBh cnJheSBhY2Nlc3MuCisgeiAKKy0tLQorIAorKDEgcm93KQorCitDUkVBVEUgVklFVyBwdWJsaWMu dGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIpLmJbJ3gnXS56IEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitXQVJOSU5HOiAgbWl4ZWQgdXNhZ2Ugb2YganNvbmIg c2ltcGxpZmllZCBhY2Nlc3NvciBzeW50YXggYW5kIGpzb25iIHN1YnNjcmlwdGluZy4KK0xJTkUg MjogU0VMRUNUIChqYikuYlsneCddLnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAg ICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgdXNlIGRvdC1ub3RhdGlvbiBmb3IgbWVtYmVy IGFjY2Vzcywgb3IgdXNlIG5vbi1udWxsIGludGVnZXIgY29uc3RhbnRzIHN1YnNjcmlwdGluZyBm b3IgYXJyYXkgYWNjZXNzLgorXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCitDUkVBVEUg T1IgUkVQTEFDRSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworIFNF TEVDVCAoKChqYikuYilbJ3gnOjp0ZXh0XSkueiBBUyB6CisgICBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uCitTRUxFQ1QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworIHog CistLS0KKyAKKygxIHJvdykKKworRFJPUCBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbl92MTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYlsneCdd Wyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1dBUk5JTkc6ICBtaXhlZCB1c2Fn ZSBvZiBqc29uYiBzaW1wbGlmaWVkIGFjY2Vzc29yIHN5bnRheCBhbmQganNvbmIgc3Vic2NyaXB0 aW5nLgorTElORSAxOiBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmJb J3gnXVsneiddIEZST00gdGUuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICB1c2UgZG90LW5vdGF0aW9uIGZvciBtZW1iZXIgYWNj ZXNzLCBvciB1c2Ugbm9uLW51bGwgaW50ZWdlciBjb25zdGFudHMgc3Vic2NyaXB0aW5nIGZvciBh cnJheSBhY2Nlc3MuCisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2Nh biBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb24KKyAgIE91dHB1dDogKChqYikuYilb J3gnOjp0ZXh0XVsneic6OnRleHRdCisoMiByb3dzKQorCitTRUxFQ1QgKGpiKS5iWyd4J11bJ3on XSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSByZXR1cm5zIE5VTEwgd2l0aCB3YXJu aW5ncworV0FSTklORzogIG1peGVkIHVzYWdlIG9mIGpzb25iIHNpbXBsaWZpZWQgYWNjZXNzb3Ig c3ludGF4IGFuZCBqc29uYiBzdWJzY3JpcHRpbmcuCitMSU5FIDE6IFNFTEVDVCAoamIpLmJbJ3gn XVsneiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAgICAg ICAgXgorSElOVDogIHVzZSBkb3Qtbm90YXRpb24gZm9yIG1lbWJlciBhY2Nlc3MsIG9yIHVzZSBu b24tbnVsbCBpbnRlZ2VyIGNvbnN0YW50cyBzdWJzY3JpcHRpbmcgZm9yIGFycmF5IGFjY2Vzcy4K KyBiIAorLS0tCisgCisoMSByb3cpCisKK0NSRUFURSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbl92MSBBUworU0VMRUNUIChqYikuYlsneCddWyd6J10gRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbjsKK1dBUk5JTkc6ICBtaXhlZCB1c2FnZSBvZiBqc29uYiBzaW1wbGlmaWVk IGFjY2Vzc29yIHN5bnRheCBhbmQganNvbmIgc3Vic2NyaXB0aW5nLgorTElORSAyOiBTRUxFQ1Qg KGpiKS5iWyd4J11bJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAg ICAgICAgICAgICAgIF4KK0hJTlQ6ICB1c2UgZG90LW5vdGF0aW9uIGZvciBtZW1iZXIgYWNjZXNz LCBvciB1c2Ugbm9uLW51bGwgaW50ZWdlciBjb25zdGFudHMgc3Vic2NyaXB0aW5nIGZvciBhcnJh eSBhY2Nlc3MuCitcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEKK0NSRUFURSBPUiBSRVBM QUNFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCisgU0VMRUNUICgo amIpLmIpWyd4Jzo6dGV4dF1bJ3onOjp0ZXh0XSBBUyBiCisgICBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uCitTRUxFQ1QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworIGIg CistLS0KKyAKKygxIHJvdykKKworRFJPUCBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbl92MTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYilbJ2InXVsn eCddLnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlv bgorICAgT3V0cHV0OiAoamJbJ2InOjp0ZXh0XVsneCc6OnRleHRdKS56CisoMiByb3dzKQorCitT RUxFQ1QgKGpiKVsnYiddWyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBy ZXR1cm5zIE5VTEwgd2l0aCB3YXJuaW5ncworIHogCistLS0KKyAKKygxIHJvdykKKworQ1JFQVRF IFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpiKVsn YiddWyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJf ZG90X25vdGF0aW9uX3YxCitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy50ZXN0X2pzb25i X2RvdF9ub3RhdGlvbl92MSBBUworIFNFTEVDVCAoamJbJ2InOjp0ZXh0XVsneCc6OnRleHRdKS56 IEFTIHoKKyAgIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24KK1NFTEVDVCAqIGZyb20gdGVz dF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CisgeiAKKy0tLQorIAorKDEgcm93KQorCitEUk9QIFZJ RVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworLS0gY2xlYW4gdXAKK0RST1Ag VEFCTEUgdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9qc29uYi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKaW5kZXgg NTdjMTFhY2RkZmUuLmEwZmFkOTBhOWQ1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9qc29uYi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCkBAIC0xMzA0 LDMzICsxMzA0LDUxIEBAIHNlbGVjdCBqc29uYl9pbnNlcnQoJ3siYSI6IHsiYiI6ICJ2YWx1ZSJ9 fScsICd7YSwgYn0nLCAnIm5ld192YWx1ZSInLCB0cnVlKTsKIAogLS0ganNvbmIgc3Vic2NyaXB0 CiBzZWxlY3QgKCcxMjMnOjpqc29uYilbJ2EnXTsKK3NlbGVjdCAoJzEyMyc6Ompzb25iKS5hOwog c2VsZWN0ICgnMTIzJzo6anNvbmIpWzBdOwogc2VsZWN0ICgnMTIzJzo6anNvbmIpW05VTExdOwor c2VsZWN0ICgnMTIzJzo6anNvbmIpLk5VTEw7CiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKVsn YSddOworc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYikuYTsKIHNlbGVjdCAoJ3siYSI6IDF9Jzo6 anNvbmIpWzBdOwogc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ25vdF9leGlzdCddOworc2Vs ZWN0ICgneyJhIjogMX0nOjpqc29uYikuIm5vdF9leGlzdCI7CiBzZWxlY3QgKCd7ImEiOiAxfSc6 Ompzb25iKVtOVUxMXTsKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWydhJ107Citz ZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKS5hOwogc2VsZWN0ICgnWzEsICIyIiwgbnVs bF0nOjpqc29uYilbMF07CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsnMSddOwor c2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYikuIjEiOwogc2VsZWN0ICgnWzEsICIyIiwg bnVsbF0nOjpqc29uYilbMS4wXTsKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzJd Owogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbM107CiBzZWxlY3QgKCdbMSwgIjIi LCBudWxsXSc6Ompzb25iKVstMl07CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsx XVsnYSddOworc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMV0uYTsKIHNlbGVjdCAo J1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzFdWzBdOwogc2VsZWN0ICgneyJhIjogMSwgImIiOiAi YyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnYiddOworc2VsZWN0ICgneyJhIjogMSwgImIi OiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5iOwogc2VsZWN0ICgneyJhIjogMSwgImIi OiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnZCddOworc2VsZWN0ICgneyJhIjogMSwg ImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5kOwogc2VsZWN0ICgneyJhIjogMSwg ImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnZCddWzFdOworc2VsZWN0ICgneyJh IjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5kWzFdOwogc2VsZWN0ICgn eyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnZCddWydhJ107Citz ZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpLmRbJ2En XTsKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYiku ZC5hOworc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogeyJhIjogWzEsIDIsIDNdfX0n Ojpqc29uYikuZFsnYSddWzBdOworc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogeyJh IjogWzEsIDIsIDNdfX0nOjpqc29uYikuZC5hWzBdOwogc2VsZWN0ICgneyJhIjogeyJhMSI6IHsi YTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKVsnYSddWydhMSdd Oworc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6 ICJjY2MifSc6Ompzb25iKS5hLmExOwogc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFh In19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKVsnYSddWydhMSddWydhMiddOwor c2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJj Y2MifSc6Ompzb25iKS5hLmExLmEyOwogc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFh In19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKVsnYSddWydhMSddWydhMiddWydh MyddOworc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAi YyI6ICJjY2MifSc6Ompzb25iKS5hLmExLmEyLmEzOwogc2VsZWN0ICgneyJhIjogWyJhMSIsIHsi YjEiOiBbImFhYSIsICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIifSc6Ompzb25iKVsnYSddWzFd WydiMSddOworc2VsZWN0ICgneyJhIjogWyJhMSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2Nj Il19XSwgImIiOiAiYmIifSc6Ompzb25iKS5hWzFdLmIxOwogc2VsZWN0ICgneyJhIjogWyJhMSIs IHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIifSc6Ompzb25iKVsnYSdd WzFdWydiMSddWzJdOworc2VsZWN0ICgneyJhIjogWyJhMSIsIHsiYjEiOiBbImFhYSIsICJiYmIi LCAiY2NjIl19XSwgImIiOiAiYmIifSc6Ompzb25iKS5hWzFdLmIxWzJdOwogCi0tLSBzbGljZXMg YXJlIG5vdCBzdXBwb3J0ZWQKLXNlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpWydhJzonYiddOwor c2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ2EnOidiJ107IC0tIGZhaWxzCiBzZWxlY3QgKCdb MSwgIjIiLCBudWxsXSc6Ompzb25iKVsxOjJdOwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpq c29uYilbOjJdOwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMTpdOwpAQCAtMTU5 MCwzICsxNjA4LDkyIEBAIHNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjpmbG9hdDg7CiBzZWxlY3QgJzEyMzQ1LjAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6aW50MjsK IHNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwNSc6Ompzb25iOjppbnQ0Owogc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDg7CisKKy0tIGRvdCBub3RhdGlv bgorQ1JFQVRFIFRBQkxFIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIEFTCitTRUxFQ1QgJ3siYSI6 IFsxLCAyLCB7ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXki LCAieiI6ICJ6enoifX1dLCAiYiI6IFszLCA0LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIs ICJ6IjogIlpaWiJ9fV19Jzo6anNvbmIgamI7CisKK1NFTEVDVCAoamIpLmEgRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLiJhIiBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOyAtLSBkb3VibGUgcXVvdGUgc2hvdWxkIHdvcmsKK1NFTEVDVCAoamIpLidhJyBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBzaW5nbGUgcXVvdGUgc2hvdWxkIG5vdCB3b3Jr CitTRUxFQ1QgKGpiKS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpi KS5jIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLmIgRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmFbMl0uYiBGUk9NIHRlc3RfanNv bmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYS54LnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbjsKK1NFTEVDVCAoamIpLmIueC56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 CitTRUxFQ1QgKGpiKS5hLmIuYyBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNU ICgoamIpLmIpWzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OyAtLSBmYWlscwor U0VMRUNUIChqYikuYS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIGZhaWxzCisK Ky0tIGV4cGxhaW5zIHNob3VsZCB3b3JrCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNF TEVDVCAodC5qYikuYSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgKHQu amIpLmEgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hWzFdIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 CitTRUxFQ1QgKGpiKS5hWzFdIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisKKy0tIHZp ZXdzIHNob3VsZCB3b3JrCitDUkVBVEUgVklFVyB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBB UyBTRUxFQ1QgKGpiKS5hWzNdLngueSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2 IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCisKKy0tIG1peGVkIHN5bnRheAorRFJPUCBWSUVX IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpIFNFTEVDVCAoamIpWydhJ10uYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VM RUNUIChqYilbJ2EnXS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIHJldHVybnMg YW4gYXJyYXkgZHVlIHRvIGxheCBtb2RlCitDUkVBVEUgVklFVyBwdWJsaWMudGVzdF9qc29uYl9k b3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIpWydhJ10uYiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCitTRUxFQ1QgKiBmcm9t IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRFJPUCBWSUVXIHB1YmxpYy50ZXN0X2pzb25i X2RvdF9ub3RhdGlvbl92MTsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KGpiKS5hWydiJ10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmFb J2InXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSByZXR1cm5zIE5VTEwgZHVlIHRv IHN0cmljdCBtb2RlIHdpdGggd2FybmluZ3MKK0NSRUFURSBWSUVXIHB1YmxpYy50ZXN0X2pzb25i X2RvdF9ub3RhdGlvbl92MSBBUworU0VMRUNUIChqYikuYVsnYiddIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEKK1NFTEVDVCAqIGZy b20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CitEUk9QIFZJRVcgcHVibGljLnRlc3RfanNv bmJfZG90X25vdGF0aW9uX3YxOworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVD VCAoamIpLmIueFsneiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpi KS5iLnhbJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSB3YXJuaW5ncworQ1JF QVRFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpi KS5iLnhbJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJf ZG90X25vdGF0aW9uX3YxCitTRUxFQ1QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3Yx OworRFJPUCBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKKworRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYiddLnhbJ3onXSBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYilbJ2InXS54Wyd6J10gRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsgIC0tIHdhcm5pbmdzCitDUkVBVEUgVklFVyBwdWJsaWMudGVzdF9q c29uYl9kb3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIpWydiJ10ueFsneiddIEZST00gdGVz dF9qc29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEKK1NF TEVDVCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CitEUk9QIFZJRVcgcHVibGlj LnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpIFNFTEVDVCAoamIpLmJbJ3gnXS56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitT RUxFQ1QgKGpiKS5iWyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSByZXR1 cm5zIE5VTEwgd2l0aCB3YXJuaW5ncworQ1JFQVRFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90 X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpiKS5iWyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCitTRUxFQ1QgKiBmcm9t IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRFJPUCBWSUVXIHB1YmxpYy50ZXN0X2pzb25i X2RvdF9ub3RhdGlvbl92MTsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KGpiKS5iWyd4J11bJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChq YikuYlsneCddWyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gcmV0dXJucyBO VUxMIHdpdGggd2FybmluZ3MKK0NSRUFURSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbl92MSBBUworU0VMRUNUIChqYikuYlsneCddWyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbjsKK1xzdiB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MQorU0VMRUNUICogZnJvbSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKK0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9k b3Rfbm90YXRpb25fdjE7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChq YilbJ2InXVsneCddLnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIp WydiJ11bJ3gnXS56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIHJldHVybnMgTlVM TCB3aXRoIHdhcm5pbmdzCitDUkVBVEUgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRp b25fdjEgQVMKK1NFTEVDVCAoamIpWydiJ11bJ3gnXS56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEKK1NFTEVDVCAqIGZyb20gdGVz dF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CitEUk9QIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90 X25vdGF0aW9uX3YxOworCistLSBjbGVhbiB1cAorRFJPUCBUQUJMRSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbjsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0tIAoyLjM5LjUgKEFwcGxlIEdp dC0xNTQpCgo= --00000000000029f71506397a7f95 Content-Type: application/octet-stream; name="v12-0003-Export-jsonPathFromParseResult.patch" Content-Disposition: attachment; filename="v12-0003-Export-jsonPathFromParseResult.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcvnjmn95 RnJvbSBiYTExMjIxM2RmYWI1NjJlYTc5MGM4MjVjODU3ZmUwZGYzMjQxOTI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFR1ZSwgOCBKdWwgMjAyNSAyMjoxODowNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg djEyIDMvN10gRXhwb3J0IGpzb25QYXRoRnJvbVBhcnNlUmVzdWx0KCkKClRoaXMgaXMgYSBwcmVw YXJhdGlvbiBzdGVwIGZvciBhIGZ1dHVyZSBjb21taXQgdGhhdCB3aWxsIHJldXNlIHRoZQphZm9y ZW1lbnRpb25lZCBmdW5jdGlvbi4KCkF1dGhvcmVkLWJ5OiBOaWtpdGEgR2x1a2hvdiA8Z2x1a2hv di5uLmFAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQWxleGFuZHJhIFdhbmcgPGFsZXhhbmRyYS53 YW5nLm9zc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1 bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IE1hdGhldXMgQWxjYW50YXJhIDxtYXRoZXVzc3NpbHY5 N0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFp bC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMgfCAxOSArKysrKysr KysrKysrKystLS0tCiBzcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oICAgICB8ICA0ICsrKysK IDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29ucGF0aC5jCmluZGV4IDc2MmY3ZThhMDlkLi45NzZhZWU4NGNmMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25wYXRoLmMKQEAgLTE2NiwxNSArMTY2LDEzIEBAIGpzb25wYXRoX3NlbmQo UEdfRlVOQ1RJT05fQVJHUykKICAqIENvbnZlcnRzIEMtc3RyaW5nIHRvIGEganNvbnBhdGggdmFs dWUuCiAgKgogICogVXNlcyBqc29ucGF0aCBwYXJzZXIgdG8gdHVybiBzdHJpbmcgaW50byBhbiBB U1QsIHRoZW4KLSAqIGZsYXR0ZW5Kc29uUGF0aFBhcnNlSXRlbSgpIGRvZXMgc2Vjb25kIHBhc3Mg dHVybmluZyBBU1QgaW50byBiaW5hcnkKKyAqIGpzb25QYXRoRnJvbVBhcnNlUmVzdWx0KCkgZG9l cyBzZWNvbmQgcGFzcyB0dXJuaW5nIEFTVCBpbnRvIGJpbmFyeQogICogcmVwcmVzZW50YXRpb24g b2YganNvbnBhdGguCiAgKi8KIHN0YXRpYyBEYXR1bQoganNvblBhdGhGcm9tQ3N0cmluZyhjaGFy ICppbiwgaW50IGxlbiwgc3RydWN0IE5vZGUgKmVzY29udGV4dCkKIHsKIAlKc29uUGF0aFBhcnNl UmVzdWx0ICpqc29ucGF0aCA9IHBhcnNlanNvbnBhdGgoaW4sIGxlbiwgZXNjb250ZXh0KTsKLQlK c29uUGF0aCAgICpyZXM7Ci0JU3RyaW5nSW5mb0RhdGEgYnVmOwogCiAJaWYgKFNPRlRfRVJST1Jf T0NDVVJSRUQoZXNjb250ZXh0KSkKIAkJcmV0dXJuIChEYXR1bSkgMDsKQEAgLTE4NSw4ICsxODMs MjEgQEAganNvblBhdGhGcm9tQ3N0cmluZyhjaGFyICppbiwgaW50IGxlbiwgc3RydWN0IE5vZGUg KmVzY29udGV4dCkKIAkJCQkgZXJybXNnKCJpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSAl czogXCIlc1wiIiwgImpzb25wYXRoIiwKIAkJCQkJCWluKSkpOwogCisJcmV0dXJuIGpzb25QYXRo RnJvbVBhcnNlUmVzdWx0KGpzb25wYXRoLCA0ICogbGVuLCBlc2NvbnRleHQpOworfQorCisvKgor ICogQ29udmVydHMganNvbnBhdGggQWJzdHJhY3QgU3ludGF4IFRyZWUgKEFTVCkgaW50byBqc29u cGF0aCB2YWx1ZSBpbiBiaW5hcnkuCisgKi8KK0RhdHVtCitqc29uUGF0aEZyb21QYXJzZVJlc3Vs dChKc29uUGF0aFBhcnNlUmVzdWx0ICpqc29ucGF0aCwgaW50IGVzdGltYXRlZF9sZW4sCisJCQkJ CQlzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0KQoreworCUpzb25QYXRoICAgKnJlczsKKwlTdHJpbmdJ bmZvRGF0YSBidWY7CisKIAlpbml0U3RyaW5nSW5mbygmYnVmKTsKLQllbmxhcmdlU3RyaW5nSW5m bygmYnVmLCA0ICogbGVuIC8qIGVzdGltYXRpb24gKi8gKTsKKwllbmxhcmdlU3RyaW5nSW5mbygm YnVmLCBlc3RpbWF0ZWRfbGVuKTsKIAogCWFwcGVuZFN0cmluZ0luZm9TcGFjZXMoJmJ1ZiwgSlNP TlBBVEhfSERSU1opOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaAppbmRleCAyM2E3NmQyMzNlOS4uZTA1OTQx NjIzZTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaApAQCAtMjgxLDYgKzI4MSwxMCBAQCBleHRlcm4gSnNv blBhdGhQYXJzZVJlc3VsdCAqcGFyc2Vqc29ucGF0aChjb25zdCBjaGFyICpzdHIsIGludCBsZW4s CiBleHRlcm4gYm9vbCBqc3BDb252ZXJ0UmVnZXhGbGFncyh1aW50MzIgeGZsYWdzLCBpbnQgKnJl c3VsdCwKIAkJCQkJCQkJIHN0cnVjdCBOb2RlICplc2NvbnRleHQpOwogCitleHRlcm4gRGF0dW0g anNvblBhdGhGcm9tUGFyc2VSZXN1bHQoSnNvblBhdGhQYXJzZVJlc3VsdCAqanNvbnBhdGgsCisJ CQkJCQkJCQkgaW50IGVzdGltYXRlZF9sZW4sCisJCQkJCQkJCQkgc3RydWN0IE5vZGUgKmVzY29u dGV4dCk7CisKIC8qCiAgKiBTdHJ1Y3QgZm9yIGRldGFpbHMgYWJvdXQgZXh0ZXJuYWwgdmFyaWFi bGVzIHBhc3NlZCBpbnRvIGpzb25wYXRoIGV4ZWN1dG9yCiAgKi8KLS0gCjIuMzkuNSAoQXBwbGUg R2l0LTE1NCkKCg== --00000000000029f71506397a7f95 Content-Type: application/octet-stream; name="v12-0002-Allow-Generic-Type-Subscripting-to-Accept-Dot-No.patch" Content-Disposition: attachment; filename="v12-0002-Allow-Generic-Type-Subscripting-to-Accept-Dot-No.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcvnjmna6 RnJvbSAyMTQ2NGFlNGYyMDUzNjM2NmZmYzA2ZWRhZGFlNWU3NjQwN2E0ZjExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFR1ZSwgOCBKdWwgMjAyNSAyMjoxODowNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg djEyIDIvN10gQWxsb3cgR2VuZXJpYyBUeXBlIFN1YnNjcmlwdGluZyB0byBBY2NlcHQgRG90CiBO b3RhdGlvbiAoLikgYXMgSW5wdXQKClRoaXMgY2hhbmdlIGV4dGVuZHMgZ2VuZXJpYyB0eXBlIHN1 YnNjcmlwdGluZyB0byByZWNvZ25pemUgZG90Cm5vdGF0aW9uICguKSBpbiBhZGRpdGlvbiB0byBi cmFja2V0IG5vdGF0aW9uIChbXSkuIFdoaWxlIHRoaXMgZG9lcyBub3QKeWV0IHByb3ZpZGUgZnVs bCBzdXBwb3J0IGZvciBkb3Qgbm90YXRpb24sIGl0IGVuYWJsZXMgc3Vic2NyaXB0aW5nCmNvbnRh aW5lcnMgdG8gcHJvY2VzcyBpdCBpbiB0aGUgZnV0dXJlLgoKRm9yIG5vdywgY29udGFpbmVyLXNw ZWNpZmljIHRyYW5zZm9ybSBmdW5jdGlvbnMgb25seSBoYW5kbGUKc3Vic2NyaXB0aW5nIGluZGlj ZXMgYW5kIHN0b3AgcHJvY2Vzc2luZyB3aGVuIGVuY291bnRlcmluZyBkb3QKbm90YXRpb24uIEl0 IGlzIHVwIHRvIGluZGl2aWR1YWwgY29udGFpbmVycyB0byBkZWNpZGUgaG93IHRvIHRyYW5zZm9y bQpkb3Qgbm90YXRpb24gaW4gc3Vic2VxdWVudCB1cGRhdGVzLgoKQXV0aG9yZWQtYnk6IE5pa2l0 YSBHbHVraG92IDxnbHVraG92Lm4uYUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbGV4YW5kcmEg V2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBE dW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRh cmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEppYW4gSGUgPGppYW4u dW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhw ci5jICAgfCA2NiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9w YXJzZXIvcGFyc2Vfbm9kZS5jICAgfCA0MSArKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgfCAgMyArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Fy cmF5c3Vicy5jIHwgMTMgKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMg fCAxMSArKysrKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggICB8ICAzICstCiA2 IGZpbGVzIGNoYW5nZWQsIDEwNSBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2V4cHIuYwppbmRleCBlMTU2NWUxMWQwOS4uMDdkNDY3NDc4MTEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2V4cHIuYwpAQCAtNDQyLDggKzQ0Miw5IEBAIHRyYW5zZm9ybUluZGlyZWN0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kKQogCUxpc3RDZWxsICAgKmk7 CiAKIAkvKgotCSAqIFdlIGhhdmUgdG8gc3BsaXQgYW55IGZpZWxkLXNlbGVjdGlvbiBvcGVyYXRp b25zIGFwYXJ0IGZyb20KLQkgKiBzdWJzY3JpcHRpbmcuICBBZGphY2VudCBBX0luZGljZXMgbm9k ZXMgaGF2ZSB0byBiZSB0cmVhdGVkIGFzIGEgc2luZ2xlCisJICogQ29tYmluZSBmaWVsZCBuYW1l cyBhbmQgc3Vic2NyaXB0cyBpbnRvIGEgc2luZ2xlIGluZGlyZWN0aW9uIGxpc3QsIGFzCisJICog c29tZSBzdWJzY3JpcHRpbmcgY29udGFpbmVycywgc3VjaCBhcyBqc29uYiwgc3VwcG9ydCBmaWVs ZCBhY2Nlc3MgdXNpbmcKKwkgKiBkb3Qgbm90YXRpb24uIEFkamFjZW50IEFfSW5kaWNlcyBub2Rl cyBoYXZlIHRvIGJlIHRyZWF0ZWQgYXMgYSBzaW5nbGUKIAkgKiBtdWx0aWRpbWVuc2lvbmFsIHN1 YnNjcmlwdCBvcGVyYXRpb24uCiAJICovCiAJZm9yZWFjaChpLCBpbmQtPmluZGlyZWN0aW9uKQpA QCAtNDYxLDE5ICs0NjIsNDMgQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlOb2RlCSAgICpu ZXdyZXN1bHQ7Ci0KIAkJCUFzc2VydChJc0EobiwgU3RyaW5nKSk7CisJCQlzdWJzY3JpcHRzID0g bGFwcGVuZChzdWJzY3JpcHRzLCBuKTsKKwkJfQorCX0KKworCXdoaWxlIChzdWJzY3JpcHRzKQor CXsKKwkJLyogdHJ5IHByb2Nlc3NpbmcgY29udGFpbmVyIHN1YnNjcmlwdHMgZmlyc3QgKi8KKwkJ Tm9kZQkgICAqbmV3cmVzdWx0ID0gKE5vZGUgKikKKwkJCXRyYW5zZm9ybUNvbnRhaW5lclN1YnNj cmlwdHMocHN0YXRlLAorCQkJCQkJCQkJCSByZXN1bHQsCisJCQkJCQkJCQkJIGV4cHJUeXBlKHJl c3VsdCksCisJCQkJCQkJCQkJIGV4cHJUeXBtb2QocmVzdWx0KSwKKwkJCQkJCQkJCQkgJnN1YnNj cmlwdHMsCisJCQkJCQkJCQkJIGZhbHNlLAorCQkJCQkJCQkJCSB0cnVlKTsKKworCQlpZiAoIW5l d3Jlc3VsdCkKKwkJeworCQkJLyoKKwkJCSAqIGdlbmVyaWMgc3Vic2NyaXB0aW5nIGZhaWxlZDsg ZmFsbGluZyBiYWNrIHRvIGZ1bmN0aW9uIGNhbGwgb3IKKwkJCSAqIGZpZWxkIHNlbGVjdGlvbiBm b3IgYSBjb21wb3NpdGUgdHlwZS4KKwkJCSAqLworCQkJTm9kZQkgICAqbjsKKworCQkJQXNzZXJ0 KHN1YnNjcmlwdHMpOwogCi0JCQkvKiBwcm9jZXNzIHN1YnNjcmlwdHMgYmVmb3JlIHRoaXMgZmll bGQgc2VsZWN0aW9uICovCi0JCQl3aGlsZSAoc3Vic2NyaXB0cykKLQkJCQlyZXN1bHQgPSAoTm9k ZSAqKSB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKHBzdGF0ZSwKLQkJCQkJCQkJCQkJCQkJ CSAgIHJlc3VsdCwKLQkJCQkJCQkJCQkJCQkJCSAgIGV4cHJUeXBlKHJlc3VsdCksCi0JCQkJCQkJ CQkJCQkJCQkgICBleHByVHlwbW9kKHJlc3VsdCksCi0JCQkJCQkJCQkJCQkJCQkgICAmc3Vic2Ny aXB0cywKLQkJCQkJCQkJCQkJCQkJCSAgIGZhbHNlKTsKKwkJCW4gPSBsaW5pdGlhbChzdWJzY3Jp cHRzKTsKKworCQkJaWYgKCFJc0EobiwgU3RyaW5nKSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCQkgZXJybXNnKCJj YW5ub3Qgc3Vic2NyaXB0IHR5cGUgJXMgYmVjYXVzZSBpdCBkb2VzIG5vdCBzdXBwb3J0IHN1YnNj cmlwdGluZyIsCisJCQkJCQkJCWZvcm1hdF90eXBlX2JlKGV4cHJUeXBlKHJlc3VsdCkpKSwKKwkJ CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24ocmVzdWx0KSkpKTsK IAorCQkJLyogdHJ5IHRvIGZpbmQgZnVuY3Rpb24gZm9yIGZpZWxkIHNlbGVjdGlvbiAqLwogCQkJ bmV3cmVzdWx0ID0gUGFyc2VGdW5jT3JDb2x1bW4ocHN0YXRlLAogCQkJCQkJCQkJCSAgbGlzdF9t YWtlMShuKSwKIAkJCQkJCQkJCQkgIGxpc3RfbWFrZTEocmVzdWx0KSwKQEAgLTQ4MSwxOSArNTA2 LDE2IEBAIHRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVj dGlvbiAqaW5kKQogCQkJCQkJCQkJCSAgTlVMTCwKIAkJCQkJCQkJCQkgIGZhbHNlLAogCQkJCQkJ CQkJCSAgbG9jYXRpb24pOwotCQkJaWYgKG5ld3Jlc3VsdCA9PSBOVUxMKQorCisJCQlpZiAoIW5l d3Jlc3VsdCkKIAkJCQl1bmtub3duX2F0dHJpYnV0ZShwc3RhdGUsIHJlc3VsdCwgc3RyVmFsKG4p LCBsb2NhdGlvbik7Ci0JCQlyZXN1bHQgPSBuZXdyZXN1bHQ7CisKKwkJCS8qIGNvbnN1bWUgZmll bGQgc2VsZWN0ICovCisJCQlzdWJzY3JpcHRzID0gbGlzdF9kZWxldGVfZmlyc3Qoc3Vic2NyaXB0 cyk7CiAJCX0KKworCQlyZXN1bHQgPSBuZXdyZXN1bHQ7CiAJfQotCS8qIHByb2Nlc3MgdHJhaWxp bmcgc3Vic2NyaXB0cywgaWYgYW55ICovCi0Jd2hpbGUgKHN1YnNjcmlwdHMpCi0JCXJlc3VsdCA9 IChOb2RlICopIHRyYW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMocHN0YXRlLAotCQkJCQkJCQkJ CQkJCSAgIHJlc3VsdCwKLQkJCQkJCQkJCQkJCQkgICBleHByVHlwZShyZXN1bHQpLAotCQkJCQkJ CQkJCQkJCSAgIGV4cHJUeXBtb2QocmVzdWx0KSwKLQkJCQkJCQkJCQkJCQkgICAmc3Vic2NyaXB0 cywKLQkJCQkJCQkJCQkJCQkgICBmYWxzZSk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX25vZGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9ub2RlLmMKaW5kZXggMTlhNmI2NzhlNjcuLmIzZTQ3NmViMTgxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9ub2RlLmMKQEAgLTIzOCw2ICsyMzgsOCBAQCB0cmFuc2Zvcm1Db250YWluZXJUeXBl KE9pZCAqY29udGFpbmVyVHlwZSwgaW50MzIgKmNvbnRhaW5lclR5cG1vZCkKICAqIGNvbnRhaW5l clR5cE1vZAl0eXBtb2QgZm9yIHRoZSBjb250YWluZXIKICAqIGluZGlyZWN0aW9uCQlVbnRyYW5z Zm9ybWVkIGxpc3Qgb2Ygc3Vic2NyaXB0cyAobXVzdCBub3QgYmUgTklMKQogICogaXNBc3NpZ25t ZW50CQlUcnVlIGlmIHRoaXMgd2lsbCBiZWNvbWUgYSBjb250YWluZXIgYXNzaWdubWVudC4KKyAq IG5vRXJyb3IJCQlUcnVlIGZvciByZXR1cm4gTlVMTCB3aXRoIG5vIGVycm9yLCBpZiB0aGUgY29u dGFpbmVyIHR5cGUKKyAqIAkJCQkJaXMgbm90IHN1YnNjcmlwdGFibGUuCiAgKi8KIFN1YnNjcmlw dGluZ1JlZiAqCiB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKQEAgLTI0NSwxMyArMjQ3LDE1IEBAIHRyYW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCSBPaWQgY29udGFpbmVyVHlwZSwKIAkJCQkJCQkgaW50 MzIgY29udGFpbmVyVHlwTW9kLAogCQkJCQkJCSBMaXN0ICoqaW5kaXJlY3Rpb24sCi0JCQkJCQkJ IGJvb2wgaXNBc3NpZ25tZW50KQorCQkJCQkJCSBib29sIGlzQXNzaWdubWVudCwKKwkJCQkJCQkg Ym9vbCBub0Vycm9yKQogewogCVN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmOwogCWNvbnN0IFN1YnNj cmlwdFJvdXRpbmVzICpzYnNyb3V0aW5lczsKIAlPaWQJCQllbGVtZW50VHlwZTsKIAlib29sCQlp c1NsaWNlID0gZmFsc2U7CiAJTGlzdENlbGwgICAqaWR4OworCWludAkJCWluZGlyZWN0aW9uX2xl bmd0aCA9IGxpc3RfbGVuZ3RoKCppbmRpcmVjdGlvbik7CiAKIAkvKgogCSAqIERldGVybWluZSB0 aGUgYWN0dWFsIGNvbnRhaW5lciB0eXBlLCBzbWFzaGluZyBhbnkgZG9tYWluLiAgSW4gdGhlCkBA IC0yNjcsMTEgKzI3MSwxNiBAQCB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkgKi8KIAlzYnNyb3V0aW5lcyA9IGdldFN1YnNjcmlwdGluZ1JvdXRpbmVz KGNvbnRhaW5lclR5cGUsICZlbGVtZW50VHlwZSk7CiAJaWYgKCFzYnNyb3V0aW5lcykKKwl7CisJ CWlmIChub0Vycm9yKQorCQkJcmV0dXJuIE5VTEw7CisKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKIAkJCQkgZXJybXNnKCJjYW5ub3Qg c3Vic2NyaXB0IHR5cGUgJXMgYmVjYXVzZSBpdCBkb2VzIG5vdCBzdXBwb3J0IHN1YnNjcmlwdGlu ZyIsCiAJCQkJCQlmb3JtYXRfdHlwZV9iZShjb250YWluZXJUeXBlKSksCiAJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihjb250YWluZXJCYXNlKSkpKTsKKwl9CiAK IAkvKgogCSAqIERldGVjdCB3aGV0aGVyIGFueSBvZiB0aGUgaW5kaXJlY3Rpb24gaXRlbXMgYXJl IHNsaWNlIHNwZWNpZmllcnMuCkBAIC0yODIsOSArMjkxLDkgQEAgdHJhbnNmb3JtQ29udGFpbmVy U3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJICovCiAJZm9yZWFjaChpZHgsICppbmRp cmVjdGlvbikKIAl7Ci0JCUFfSW5kaWNlcyAgKmFpID0gbGZpcnN0X25vZGUoQV9JbmRpY2VzLCBp ZHgpOworCQlOb2RlCSAgICphaSA9IGxmaXJzdChpZHgpOwogCi0JCWlmIChhaS0+aXNfc2xpY2Up CisJCWlmIChJc0EoYWksIEFfSW5kaWNlcykgJiYgY2FzdE5vZGUoQV9JbmRpY2VzLCBhaSktPmlz X3NsaWNlKQogCQl7CiAJCQlpc1NsaWNlID0gdHJ1ZTsKIAkJCWJyZWFrOwpAQCAtMzEyLDYgKzMy MSwzMiBAQCB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAlzYnNyb3V0aW5lcy0+dHJhbnNmb3JtKHNic3JlZiwgaW5kaXJlY3Rpb24sIHBzdGF0ZSwKIAkJ CQkJCSAgIGlzU2xpY2UsIGlzQXNzaWdubWVudCk7CiAKKwkvKgorCSAqIEVycm9yIG91dCwgaWYg ZGF0YXR5cGUgZmFpbGVkIHRvIGNvbnN1bWUgYW55IGluZGlyZWN0aW9uIGVsZW1lbnRzLgorCSAq LworCWlmIChsaXN0X2xlbmd0aCgqaW5kaXJlY3Rpb24pID09IGluZGlyZWN0aW9uX2xlbmd0aCkK Kwl7CisJCU5vZGUJICAgKmluZCA9IGxpbml0aWFsKCppbmRpcmVjdGlvbik7CisKKwkJaWYgKG5v RXJyb3IpCisJCQlyZXR1cm4gTlVMTDsKKworCQlpZiAoSXNBKGluZCwgU3RyaW5nKSkKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAor CQkJCQkgZXJybXNnKCJ0eXBlICVzIGRvZXMgbm90IHN1cHBvcnQgZG90IG5vdGF0aW9uIiwKKwkJ CQkJCQlmb3JtYXRfdHlwZV9iZShjb250YWluZXJUeXBlKSksCisJCQkJCSBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oY29udGFpbmVyQmFzZSkpKSk7CisJCWVsc2UgaWYg KElzQShpbmQsIEFfSW5kaWNlcykpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygidHlwZSAlcyBkb2VzIG5v dCBzdXBwb3J0IGFycmF5IHN1YnNjcmlwdGluZyIsCisJCQkJCQkJZm9ybWF0X3R5cGVfYmUoY29u dGFpbmVyVHlwZSkpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0 aW9uKGNvbnRhaW5lckJhc2UpKSkpOworCQllbHNlCisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBp bmRpcmVjdGlvbiBvcGVyYXRpb246ICVkIiwgbm9kZVRhZyhpbmQpKTsKKwl9CisKIAkvKgogCSAq IFZlcmlmeSB3ZSBnb3QgYSB2YWxpZCB0eXBlICh0aGlzIGRlZmVuZHMsIGZvciBleGFtcGxlLCBh Z2FpbnN0IHNvbWVvbmUKIAkgKiB1c2luZyBhcnJheV9zdWJzY3JpcHRfaGFuZGxlciBhcyB0eXBz dWJzY3JpcHQgd2l0aG91dCBzZXR0aW5nIHR5cGVsZW0pLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Rhcmdl dC5jCmluZGV4IDQ2NzVhNTIzMDQ1Li4zZWY1ODk3ZjJlYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90 YXJnZXQuYwpAQCAtOTM3LDcgKzkzNyw4IEBAIHRyYW5zZm9ybUFzc2lnbm1lbnRTdWJzY3JpcHRz KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkgIGNvbnRhaW5lclR5cGUsCiAJCQkJCQkJ CQkJICBjb250YWluZXJUeXBNb2QsCiAJCQkJCQkJCQkJICAmc3Vic2NyaXB0cywKLQkJCQkJCQkJ CQkgIHRydWUpOworCQkJCQkJCQkJCSAgdHJ1ZSwKKwkJCQkJCQkJCQkgIGZhbHNlKTsKIAogCXR5 cGVOZWVkZWQgPSBzYnNyZWYtPnJlZnJlc3R5cGU7CiAJdHlwbW9kTmVlZGVkID0gc2JzcmVmLT5y ZWZ0eXBtb2Q7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlzdWJzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlzdWJzLmMKaW5kZXggMjM0YzJjMjc4YzEuLmQw M2QzNTE5ZGZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlzdWJzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vicy5jCkBAIC02Miw2ICs2Miw3IEBA IGFycmF5X3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJTGlz dAkgICAqdXBwZXJJbmRleHByID0gTklMOwogCUxpc3QJICAgKmxvd2VySW5kZXhwciA9IE5JTDsK IAlMaXN0Q2VsbCAgICppZHg7CisJaW50CQkJbmRpbTsKIAogCS8qCiAJICogVHJhbnNmb3JtIHRo ZSBzdWJzY3JpcHQgZXhwcmVzc2lvbnMsIGFuZCBzZXBhcmF0ZSB1cHBlciBhbmQgbG93ZXIKQEAg LTczLDkgKzc0LDE0IEBAIGFycmF5X3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVm ICpzYnNyZWYsCiAJICovCiAJZm9yZWFjaChpZHgsICppbmRpcmVjdGlvbikKIAl7Ci0JCUFfSW5k aWNlcyAgKmFpID0gbGZpcnN0X25vZGUoQV9JbmRpY2VzLCBpZHgpOworCQlBX0luZGljZXMgICph aTsKIAkJTm9kZQkgICAqc3ViZXhwcjsKIAorCQlpZiAoIUlzQShsZmlyc3QoaWR4KSwgQV9JbmRp Y2VzKSkKKwkJCWJyZWFrOworCisJCWFpID0gbGZpcnN0X25vZGUoQV9JbmRpY2VzLCBpZHgpOwor CiAJCWlmIChpc1NsaWNlKQogCQl7CiAJCQlpZiAoYWktPmxpZHgpCkBAIC0xNDUsMTQgKzE1MSwx NSBAQCBhcnJheV9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAog CXNic3JlZi0+cmVmbG93ZXJpbmRleHByID0gbG93ZXJJbmRleHByOwogCiAJLyogVmVyaWZ5IHN1 YnNjcmlwdCBsaXN0IGxlbmd0aHMgYXJlIHdpdGhpbiBpbXBsZW1lbnRhdGlvbiBsaW1pdCAqLwot CWlmIChsaXN0X2xlbmd0aCh1cHBlckluZGV4cHIpID4gTUFYRElNKQorCW5kaW0gPSBsaXN0X2xl bmd0aCh1cHBlckluZGV4cHIpOworCWlmIChuZGltID4gTUFYRElNKQogCQllcmVwb3J0KEVSUk9S LAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVy cm1zZygibnVtYmVyIG9mIGFycmF5IGRpbWVuc2lvbnMgKCVkKSBleGNlZWRzIHRoZSBtYXhpbXVt IGFsbG93ZWQgKCVkKSIsCiAJCQkJCQlsaXN0X2xlbmd0aCh1cHBlckluZGV4cHIpLCBNQVhESU0p KSk7CiAJLyogV2UgbmVlZCBub3QgY2hlY2sgbG93ZXJJbmRleHByIHNlcGFyYXRlbHkgKi8KIAot CSppbmRpcmVjdGlvbiA9IE5JTDsKKwkqaW5kaXJlY3Rpb24gPSBsaXN0X2RlbGV0ZV9maXJzdF9u KCppbmRpcmVjdGlvbiwgbmRpbSk7CiAKIAkvKgogCSAqIERldGVybWluZSB0aGUgcmVzdWx0IHR5 cGUgb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVyYXRpb24uICBJdCdzIHRoZSBzYW1lCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvanNvbmJzdWJzLmMKaW5kZXggOGFkNmFhMWFkNGYuLmEwZDM4YTBmZDgwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25ic3Vicy5jCkBAIC01NSw5ICs1NSwxNCBAQCBqc29uYl9zdWJzY3JpcHRf dHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCSAqLwogCWZvcmVhY2goaWR4LCAq aW5kaXJlY3Rpb24pCiAJewotCQlBX0luZGljZXMgICphaSA9IGxmaXJzdF9ub2RlKEFfSW5kaWNl cywgaWR4KTsKKwkJQV9JbmRpY2VzICAqYWk7CiAJCU5vZGUJICAgKnN1YkV4cHI7CiAKKwkJaWYg KCFJc0EobGZpcnN0KGlkeCksIEFfSW5kaWNlcykpCisJCQlicmVhazsKKworCQlhaSA9IGxmaXJz dF9ub2RlKEFfSW5kaWNlcywgaWR4KTsKKwogCQlpZiAoaXNTbGljZSkKIAkJewogCQkJTm9kZQkg ICAqZXhwciA9IGFpLT51aWR4ID8gYWktPnVpZHggOiBhaS0+bGlkeDsKQEAgLTE2MCw3ICsxNjUs OSBAQCBqc29uYl9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAog CXNic3JlZi0+cmVmcmVzdHlwZSA9IEpTT05CT0lEOwogCXNic3JlZi0+cmVmdHlwbW9kID0gLTE7 CiAKLQkqaW5kaXJlY3Rpb24gPSBOSUw7CisJLyogUmVtb3ZlIHByb2Nlc3NlZCBlbGVtZW50cyAq LworCWlmICh1cHBlckluZGV4cHIpCisJCSppbmRpcmVjdGlvbiA9IGxpc3RfZGVsZXRlX2ZpcnN0 X24oKmluZGlyZWN0aW9uLCBsaXN0X2xlbmd0aCh1cHBlckluZGV4cHIpKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggYi9zcmMvaW5jbHVkZS9w YXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IDU4YTRiOWRmMTU3Li41Y2MzY2U1OGMzMCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9w YXJzZXIvcGFyc2Vfbm9kZS5oCkBAIC0zNjIsNyArMzYyLDggQEAgZXh0ZXJuIFN1YnNjcmlwdGlu Z1JlZiAqdHJhbnNmb3JtQ29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJCQkJCQkJCQkJIE9pZCBjb250YWluZXJUeXBlLAogCQkJCQkJCQkJCQkJCSBpbnQzMiBjb250 YWluZXJUeXBNb2QsCiAJCQkJCQkJCQkJCQkJIExpc3QgKippbmRpcmVjdGlvbiwKLQkJCQkJCQkJ CQkJCQkgYm9vbCBpc0Fzc2lnbm1lbnQpOworCQkJCQkJCQkJCQkJCSBib29sIGlzQXNzaWdubWVu dCwKKwkJCQkJCQkJCQkJCQkgYm9vbCBub0Vycm9yKTsKIGV4dGVybiBDb25zdCAqbWFrZV9jb25z dChQYXJzZVN0YXRlICpwc3RhdGUsIEFfQ29uc3QgKmFjb25zdCk7CiAKICNlbmRpZgkJCQkJCQkv KiBQQVJTRV9OT0RFX0ggKi8KLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --00000000000029f71506397a7f95--