Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wLcLc-001uCv-39 for pgsql-hackers@arkaria.postgresql.org; Sat, 09 May 2026 07:43:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wLcLb-00CfuH-1M for pgsql-hackers@arkaria.postgresql.org; Sat, 09 May 2026 07:43:39 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wLcLa-00Cfu9-2s for pgsql-hackers@lists.postgresql.org; Sat, 09 May 2026 07:43:39 +0000 Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wLcLW-00000001Mil-1Lxc for pgsql-hackers@postgresql.org; Sat, 09 May 2026 07:43:38 +0000 Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-67be871ed3fso5297308a12.1 for ; Sat, 09 May 2026 00:43:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1778312612; cv=none; d=google.com; s=arc-20240605; b=NDs5WvXHG8LwtbYYzXqhV7aaYIT2TuckZHozMcoWtw2SOirgsGeqx1yOo/ANMMO04d AlUcgJ9QtaISzBdU3YjhgvSK0L4pdcJsL1BroWTX1S5OYGEHsqIrkkRkDh6MQPQU9m7p pJlnG+c44Xa8uuJQS2tVHNCtmX9aTOFma673Wennp5WKd2ZFwbjvJ8fC+UFBGM/C6Xz8 IHCeGqrgkiVvmtFiBRQR+C7yzK2EZls1xImF5pL6Lbylr0oZyK0z+eiaA+AXscAlU90T LktQGpgWvyqWmwWMXH25ExuUMqh5LXJ8Ie4L6PR7DhIVJ4W7hOEGA62XVq+U4FbZxXHd M9VQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:dkim-signature; bh=kdrTaxGNFUFej/90/dzhRVy+bkPcRphCUVUSEtH+YEM=; fh=cLqqqM3q/3XkUt3zRjrIvIU0qMoyRnJJ4azLzlbP1aw=; b=dVb4QMGTTVoAdzeEbfA+uvHO47zKpWBRY48x1NPfdVSoGsli0egnpu8NoKRPBt7lww JQ/HSOlNVeG+0/T3N1WtY/QYNl8hO3/ElHakqF/2PQU5g66V8XqXb5rlMTNneDeAPRha iZ0z76MfHNsIbALJk3WIVLqVee3AoIT5qv3W8C4/e3Rz01bVbS9YD3I1pN2Orqe/VEny p9iytZO/fcgMelTtJ1593wqFN14LsOOibOefzD7aBzjWSYXQcAwPAQaXljJB8Zjvxajd Tn7poY9qr4oEHNxRNGbihl3ckR4/YEkgWopIGJR/hfUm233DqWLfO7fVycdRil0pO6U+ P00g==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778312612; x=1778917412; darn=postgresql.org; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=kdrTaxGNFUFej/90/dzhRVy+bkPcRphCUVUSEtH+YEM=; b=ASE5pYt70u0uV9e9ouUZC7hK3qGYevtOiiMrDIMjhkwXbSbKkDpj6xgBgRHF3Ye/3Z Q5ZlH0ZLzu9r59TXUYM8Aobrdpu7paXieYejwfC797fMkKkyyoUiQPCqgmBXmHTUgNHG xifimc9j1LH42bEnl0lATuLz5rP+nWbul3RYq/05ACJbU+T0HhAyHiDdexx9RKS4X4hp Kv8RcoIOlJGfWFy49Y9941iTkLCWrwBVkIF47nitHitzoeqZqQmcg0mtuAgrVH5LJmkq QViMB3s93MucGvhO1ynkaNjU4bazQAwUk1Blpjfg/S1SaFAD/pTZbZrJKal+2VjRuuhT g5Gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778312612; x=1778917412; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=kdrTaxGNFUFej/90/dzhRVy+bkPcRphCUVUSEtH+YEM=; b=h0s9jA/lOTRUdcYTg5+X0adfHfkVvt5RIeF9m2Y9hTGcWg6eMjI03SOaOEx9SItAWP nOkKtwJXkzcLPdtGeXseBGE63iuh/ukG7FlXnOF8pfdTmbo5d3mAupqUtkP8jAwAY1pi MqXL2pOHEndKT3Fny67ptAp5fJpuYeXv7dadtgcttVngsVGkBq6n0DN1h6aF+QVbHzcJ +Xpbj6gEUGPEj5G5VFgvY05IaL3g0HIzGAdVZ6P87V4wDoY7HxE4oD4UWcVpeXjpcCQa Jt0h9Tyqu888KKGUILAWtZWdF99mE+v1SnFDSLD9Mm/bLyggK6rdG1f53E9rQFbtO5bv ijkQ== X-Forwarded-Encrypted: i=1; AFNElJ9d4zkeFpeN9uXuhVwc0YXUHgyIl6YwaxpqcuanWiCPiOVuTXpPseX+hXatssSDnWSGws2I3ni9V/EyHzDe@postgresql.org X-Gm-Message-State: AOJu0YxfuUC0AMoctS7bCz75Ka50DGfK1ILUCeLdlGdeLfdHlBOsU93d pVmC8+koMa2vwhjB74fY72ka1TR09fMMmMus1D8oP0M1O5m0vbfOCpr177V9NaIQliLAv+iKLXN 8425cxTj+ClN7Lq/4DEiFlSHEgbwRqHI= X-Gm-Gg: Acq92OFgnVuD7CigevjuSjFotqFz2/LoE6/dKd5QGj3yZSAnwnWj9P4cp6LFylF61hm da6zIQYMmnfXgJZjUK8RxbCraJWAM42yX943dqkl2JtTFMRSFguHs93zNWP2rZOv9kunEnbxYS4 DgoOVKrr8OA/8TdNNm7Jwv28QkCQ3gd4gqtVI7lbnRXjGS1m7Ldz6gXmErT0f9m9nBsKeBb+rS0 qREpSXF0cPw00gwE8q27i51H/Zr83mHjJzXgfyWwZeese+0O6xgOzyXo3YtwMenQ6cFDmoN9u3G eQgLm8eSvTieTbk8H7DKiHIalTbbkNKWZuEoi0XuXiLLOw== X-Received: by 2002:a05:6402:504e:b0:670:d548:da79 with SMTP id 4fb4d7f45d1cf-67f706f51bdmr434433a12.3.1778312611541; Sat, 09 May 2026 00:43:31 -0700 (PDT) MIME-Version: 1.0 References: <20260505.170845.1271951360939093763.ishii@postgresql.org> <20260505.184228.594389150715346967.ishii@postgresql.org> In-Reply-To: Reply-To: assam258@gmail.com From: Henson Choi Date: Sat, 9 May 2026 16:43:18 +0900 X-Gm-Features: AVHnY4IbWdiODGR9K2cmMLUzU1V1izJe48kPnqneaYuf8FqVdrzfvir50QxmBEo Message-ID: Subject: Re: Row pattern recognition To: Tatsuo Ishii Cc: zsolt.parragi@percona.com, sjjang112233@gmail.com, vik@postgresfriends.org, er@xs4all.nl, jacob.champion@enterprisedb.com, david.g.johnston@gmail.com, peter@eisentraut.org, li.evan.chao@gmail.com, jian he , pgsql-hackers Content-Type: multipart/mixed; boundary="00000000000083509906515dabc6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000083509906515dabc6 Content-Type: multipart/alternative; boundary="00000000000083509706515dabc4" --00000000000083509706515dabc4 Content-Type: text/plain; charset="UTF-8" Hi Tatsuo, Eleven incremental patches on top of v47. Patches 0001-0010 are the same set I posted on 2026-05-07, with cosmetic touches only. Patch 0011 is new and tightens the consistency of how this code base cites the SQL standard. So far I have been pushing ahead narrowly on the feature implementation itself. I am aware I still have much to learn about the PostgreSQL project's culture and conventions, and your continued guidance would be very much appreciated. Patch summary: - 0001 Add DEFINE non-volatile baseline to rpr_integration B9 Adds a STABLE/IMMUTABLE baseline ahead of the volatile case so the rejection in 0002 is visible against a working reference. - 0002 Unify RPR DEFINE walkers and reject volatile callees [A]. Collapses the four DEFINE walkers (parser / planner / executor) into one phase-tagged traversal and, on that base, rejects volatile / NextValueExpr at parse-analysis. STABLE / IMMUTABLE accepted. The offset runtime-constant check is folded in; B9 flips to error-case and its XXX is dropped. - 0003 Cover RPR empty-match path with EXPLAIN tests; fix stale XXX comments [B]. Adds rpr_explain coverage that surfaces "NFA: N matched (len 0/0/0.0)" so the NFA-found-but-empty-frame path is regression-visible; replaces stale rpr_nfa XXXs. - 0004 Reclassify DEFINE qualifier check and reword diagnostic to "expression" [D]. Tri-classifies (pattern var / range var / fall- through) so unknown qualifiers fall through to the standard "column does not exist" diagnostic. Reworded to "expression" since the quoted token may include indirection on composite types (e.g. (A.items).amount). - 0005 Sync stale comments on DEFINE/PATTERN handling validateRPRPatternVarCount() rejects DEFINE names not in PATTERN, but comments / SELECT doc described it as "collection" / "filtered during planning". Wording aligned; XXX note's "column references" bumped to "expressions" to match 0004. Comment + doc only. - 0006 Add trailing commas to RPR enum definitions Per Jian. RPRNavKind, RPRNavOffsetKind, RPRPatternNodeType. - 0007 Remove optional outer parentheses from ereport() calls in RPR files Per Jian + your gram.y patch. 19 sites in parse_rpr.c / optimizer/plan/rpr.c plus the gram.y sites. - 0008 Add high-water mark tracking to NFA visited bitmap reset [C]. Resets only the touched span (O(span_words) instead of O(numElements/64)), at the cost of two int16 comparisons per visit. Semantics unchanged; happy to drop if you prefer the simpler bulk reset. - 0009 Document DEFINE subquery rejection as intentional over-rejection Comment-only. Records that SQL/RPR permits a non-RPR, non-pattern-var-correlated subquery in DEFINE (see 0011 for the normalized citation), and that our blanket rejection is deliberate over-rejection. The case distinction (walk subquery Query for nested RPR; match ColumnRef qualifiers against ancestor p_rpr_pattern_vars) is doable with existing infrastructure and left as future work, not blocked on any other feature. - 0010 Remove duplicate #include in nodeWindowAgg.c "common/int.h" was included twice and the first occurrence was misplaced between catalog/* headers. Drops the misplaced first; the second sits at the correct alphabetical position. - 0011 Normalize SQL/RPR standard references across code, comments, and tests Doc/comment/test-header hygiene. Standardizes citations to ISO/IEC 19075-5 (SQL Technical Report Part 5, "Row pattern recognition in SQL"); earlier comments mixed bare "19075-5", "9075-2", "SQL standard", and "SQL:2016 STR06" forms. Where Chapter 4 (FROM / R010) and Chapter 6 (WINDOW / R020) describe parallel material, cites the Chapter 6 subclause first since this implementation targets R020. Pins "STR06" to its source (Subclause 7.2.8) in the rpr_nfa / rpr_explain commentary; replaces ad-hoc section / arrow glyphs with ASCII. Adds a short normative-reference paragraph to executor/README.rpr so future patches inherit the policy. Comments / docs / test headers only. Still deferred: - B7 Recursive CTE XXX: pending community input on the ISO/IEC 19075-5 6.17.5 / 4.18.5 interpretation. Best regards, Henson --00000000000083509706515dabc4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Tatsuo,


Eleven incremental patches on top of= v47.=C2=A0 Patches 0001-0010
are the same set I posted on 2026-05-07, w= ith cosmetic touches
only.=C2=A0 Patch 0011 is new and tightens the cons= istency of how
this code base cites the SQL standard.

So far I ha= ve been pushing ahead narrowly on the feature
implementation itself.=C2= =A0 I am aware I still have much to learn
about the PostgreSQL project&#= 39;s culture and conventions, and
your continued guidance would be very = much appreciated.


Patch summary:


=C2=A0 - 0001 Add DE= FINE non-volatile baseline to rpr_integration B9
=C2=A0 =C2=A0 =C2=A0 Ad= ds a STABLE/IMMUTABLE baseline ahead of the volatile
=C2=A0 =C2=A0 =C2= =A0 case so the rejection in 0002 is visible against a working
=C2=A0 = =C2=A0 =C2=A0 reference.


=C2=A0 - 0002 Unify RPR DEFINE walkers = and reject volatile callees
=C2=A0 =C2=A0 =C2=A0 [A].=C2=A0 Collapses th= e four DEFINE walkers (parser / planner
=C2=A0 =C2=A0 =C2=A0 / executor)= into one phase-tagged traversal and, on that
=C2=A0 =C2=A0 =C2=A0 base,= rejects volatile / NextValueExpr at parse-analysis.
=C2=A0 =C2=A0 =C2= =A0 STABLE / IMMUTABLE accepted.=C2=A0 The offset runtime-constant
=C2= =A0 =C2=A0 =C2=A0 check is folded in; B9 flips to error-case and its XXX is=
=C2=A0 =C2=A0 =C2=A0 dropped.


=C2=A0 - 0003 Cover RPR empty-= match path with EXPLAIN tests; fix
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sta= le XXX comments
=C2=A0 =C2=A0 =C2=A0 [B].=C2=A0 Adds rpr_explain coverag= e that surfaces "NFA: N
=C2=A0 =C2=A0 =C2=A0 matched (len 0/0/0.0)&= quot; so the NFA-found-but-empty-frame
=C2=A0 =C2=A0 =C2=A0 path is regr= ession-visible; replaces stale rpr_nfa XXXs.


=C2=A0 - 0004 Recla= ssify DEFINE qualifier check and reword
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0diagnostic to "expression"
=C2=A0 =C2=A0 =C2=A0 [D].=C2=A0 = Tri-classifies (pattern var / range var / fall-
=C2=A0 =C2=A0 =C2=A0 thr= ough) so unknown qualifiers fall through to the
=C2=A0 =C2=A0 =C2=A0 sta= ndard "column does not exist" diagnostic.=C2=A0 Reworded to
= =C2=A0 =C2=A0 =C2=A0 "expression" since the quoted token may incl= ude
=C2=A0 =C2=A0 =C2=A0 indirection on composite types (e.g. (A.items).= amount).


=C2=A0 - 0005 Sync stale comments on DEFINE/PATTERN han= dling
=C2=A0 =C2=A0 =C2=A0 validateRPRPatternVarCount() rejects DEFINE n= ames not in
=C2=A0 =C2=A0 =C2=A0 PATTERN, but comments / SELECT doc desc= ribed it as
=C2=A0 =C2=A0 =C2=A0 "collection" / "filtered= during planning".=C2=A0 Wording
=C2=A0 =C2=A0 =C2=A0 aligned; XXX = note's "column references" bumped to
=C2=A0 =C2=A0 =C2=A0 = "expressions" to match 0004.=C2=A0 Comment + doc only.

=C2=A0 - 0006 Add trailing commas to RPR enum definitions
=C2=A0 =C2=A0= =C2=A0 Per Jian.=C2=A0 RPRNavKind, RPRNavOffsetKind, RPRPatternNodeType.

=C2=A0 - 0007 Remove optional outer parentheses from ereport() ca= lls
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0in RPR files
=C2=A0 =C2=A0 =C2= =A0 Per Jian + your gram.y patch. =C2=A019 sites in parse_rpr.c /
=C2=A0= =C2=A0 =C2=A0 optimizer/plan/rpr.c plus the gram.y sites.


=C2= =A0 - 0008 Add high-water mark tracking to NFA visited bitmap
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0reset
=C2=A0 =C2=A0 =C2=A0 [C].=C2=A0 Resets onl= y the touched span (O(span_words) instead
=C2=A0 =C2=A0 =C2=A0 of O(numE= lements/64)), at the cost of two int16 comparisons
=C2=A0 =C2=A0 =C2=A0 = per visit.=C2=A0 Semantics unchanged; happy to drop if you
=C2=A0 =C2=A0= =C2=A0 prefer the simpler bulk reset.


=C2=A0 - 0009 Document DE= FINE subquery rejection as intentional
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0over-rejection
=C2=A0 =C2=A0 =C2=A0 Comment-only.=C2=A0 Records that = SQL/RPR permits a non-RPR,
=C2=A0 =C2=A0 =C2=A0 non-pattern-var-correlat= ed subquery in DEFINE (see 0011
=C2=A0 =C2=A0 =C2=A0 for the normalized = citation), and that our blanket
=C2=A0 =C2=A0 =C2=A0 rejection is delibe= rate over-rejection.=C2=A0 The case
=C2=A0 =C2=A0 =C2=A0 distinction (wa= lk subquery Query for nested RPR; match
=C2=A0 =C2=A0 =C2=A0 ColumnRef q= ualifiers against ancestor p_rpr_pattern_vars)
=C2=A0 =C2=A0 =C2=A0 is d= oable with existing infrastructure and left as future
=C2=A0 =C2=A0 =C2= =A0 work, not blocked on any other feature.


=C2=A0 - 0010 Remove= duplicate #include in nodeWindowAgg.c
=C2=A0 =C2=A0 =C2=A0 "common= /int.h" was included twice and the first occurrence
=C2=A0 =C2=A0 = =C2=A0 was misplaced between catalog/* headers.=C2=A0 Drops the
=C2=A0 = =C2=A0 =C2=A0 misplaced first; the second sits at the correct
=C2=A0 =C2= =A0 =C2=A0 alphabetical position.


=C2=A0 - 0011 Normalize SQL/RP= R standard references across code,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0com= ments, and tests
=C2=A0 =C2=A0 =C2=A0 Doc/comment/test-header hygiene.= =C2=A0 Standardizes citations
=C2=A0 =C2=A0 =C2=A0 to ISO/IEC 19075-5 (S= QL Technical Report Part 5, "Row
=C2=A0 =C2=A0 =C2=A0 pattern recog= nition in SQL"); earlier comments mixed bare
=C2=A0 =C2=A0 =C2=A0 &= quot;19075-5", "9075-2", "SQL standard", and "= ;SQL:2016 STR06"
=C2=A0 =C2=A0 =C2=A0 forms.=C2=A0 Where Chapter 4 = (FROM / R010) and Chapter 6
=C2=A0 =C2=A0 =C2=A0 (WINDOW / R020) describ= e parallel material, cites the
=C2=A0 =C2=A0 =C2=A0 Chapter 6 subclause = first since this implementation
=C2=A0 =C2=A0 =C2=A0 targets R020.=C2=A0= Pins "STR06" to its source (Subclause
=C2=A0 =C2=A0 =C2=A0 7.= 2.8) in the rpr_nfa / rpr_explain commentary; replaces
=C2=A0 =C2=A0 =C2= =A0 ad-hoc section / arrow glyphs with ASCII.=C2=A0 Adds a short
=C2=A0 = =C2=A0 =C2=A0 normative-reference paragraph to executor/README.rpr so
= =C2=A0 =C2=A0 =C2=A0 future patches inherit the policy.=C2=A0 Comments / do= cs /
=C2=A0 =C2=A0 =C2=A0 test headers only.


Still deferred:<= br>=C2=A0 - B7 Recursive CTE XXX: pending community input on the
=C2=A0 = =C2=A0 ISO/IEC 19075-5 6.17.5 / 4.18.5 interpretation.


Best rega= rds,
Henson
--00000000000083509706515dabc4-- --00000000000083509906515dabc6 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0001-DEFINE-non-volatile-baseline.txt" Content-Disposition: attachment; filename="nocfbot-0001-DEFINE-non-volatile-baseline.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moy1chis0 RnJvbSBhYmE2YzU2YTY4NTRlOGYxMDE4NDZhYTAzZTQyMjA0ZmFjYzAyNDg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBNb24sIDQgTWF5IDIwMjYgMTk6MDk6MzQgKzA5MDAKU3ViamVjdDogW1BBVENIIDAxLzExXSBB ZGQgREVGSU5FIG5vbi12b2xhdGlsZSBiYXNlbGluZSB0byBycHJfaW50ZWdyYXRpb24gQjkKCkI5 IGluIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwgdG9kYXkgb25seSBl eGVyY2lzZXMgYQp2b2xhdGlsZSBjYWxsZWUgKHJhbmRvbSgpKSBpbnNpZGUgREVGSU5FLiAgQWRk IGEgYmFzZWxpbmUgcXVlcnkgaW4gdGhlCnNhbWUgc2VjdGlvbiB0aGF0IHVzZXMgU1RBQkxFICh0 b19jaGFyKSBhbmQgSU1NVVRBQkxFIChsZW5ndGgpIGNhbGxlZXMsCndoaWNoIG11c3QgcmVtYWlu IGFjY2VwdGVkIHdoZW4gdGhlIHVwY29taW5nIHZvbGF0aWxlLW9ubHkgcHJvaGliaXRpb24KbGFu ZHMuICBUaGlzIGd1YXJkcyBhZ2FpbnN0IHRoZSBwcm9oaWJpdGlvbiBiZWluZyBicm9hZGVuZWQg YnkgYWNjaWRlbnQKKGUuZy4gY29udGFpbl92b2xhdGlsZV9mdW5jdGlvbnMgLT4gY29udGFpbl9t dXRhYmxlX2Z1bmN0aW9ucyk7IHRoZQp2b2xhdGlsZSBjYXNlIGFsb25lIHdvdWxkIG5vdCBjYXRj aCBvdmVyLXJlamVjdGlvbi4KCk9yZGVyZWQgYmFzZWxpbmUtZmlyc3QgdGhlbiB2b2xhdGlsZSwg bWF0Y2hpbmcgb3RoZXIgQiBzZWN0aW9ucy4KLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3Jwcl9pbnRlZ3JhdGlvbi5vdXQgfCAyNiArKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9ycHJfaW50ZWdyYXRpb24uc3FsICAgICAgfCAxMyArKysrKysrKysrCiAyIGZp bGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3Jwcl9pbnRlZ3JhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Jwcl9pbnRlZ3JhdGlvbi5vdXQKaW5kZXggMGNjNzliNzU2MDEuLmVmNmExNTdmNDVkIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9pbnRlZ3JhdGlvbi5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfaW50ZWdyYXRpb24ub3V0CkBAIC0x NDIxLDYgKzE0MjEsMzIgQEAgRFJPUCBJTkRFWCBycHJfaW50ZWdfaWRfaWR4OwogLS0gcGF0dGVy biBtYXRjaGluZyBub24tZGV0ZXJtaW5pc3RpYy4gIFdoZW4gdGhlIHByb2hpYml0aW9uIGxhbmRz LAogLS0gdGhpcyB0ZXN0IG11c3QgYmUgcmVwbGFjZWQgd2l0aCBhbiBlcnJvci1jYXNlIHRlc3Qg dGhhdCBleHBlY3RzCiAtLSByYW5kb20oKSBpbiBERUZJTkUgdG8gYmUgcmVqZWN0ZWQuCistLSBC YXNlbGluZTogU1RBQkxFICh0b19jaGFyKSBhbmQgSU1NVVRBQkxFIChsZW5ndGgpIGNhbGxlZXMg YXJlIGFjY2VwdGVkLgorLS0gVGhpcyBsb2NrcyB0aGUgYm91bmRhcnkgb2YgdGhlIHZvbGF0aWxl LW9ubHkgcHJvaGliaXRpb24uCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNu dAorRlJPTSBycHJfaW50ZWcKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEg QispCisgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpCisgICAgICAgICAgICAgICAgQU5E IGxlbmd0aCgneCcpID0gMQorICAgICAgICAgICAgICAgIEFORCB0b19jaGFyKGRhdGUgJzIwMjYt MDEtMDEnLCAnWVlZWScpID0gJzIwMjYnKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQg CistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDIKKyAgMiB8ICAyMCB8ICAgMAorICAz IHwgIDE1IHwgICAyCisgIDQgfCAgMjUgfCAgIDAKKyAgNSB8ICAgNSB8ICAgMworICA2IHwgIDMw IHwgICAwCisgIDcgfCAgMzUgfCAgIDAKKyAgOCB8ICAyMCB8ICAgMworICA5IHwgIDQwIHwgICAw CisgMTAgfCAgNDUgfCAgIDAKKygxMCByb3dzKQorCistLSBWb2xhdGlsZSAocmFuZG9tKSBpcyB0 aGUgcHJvaGliaXRpb24gdGFyZ2V0OyB0b2RheSBzdGlsbCBhY2NlcHRlZC4KIFNFTEVDVCBpZCwg dmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CiBGUk9NIHJwcl9pbnRlZwogV0lORE9XIHcgQVMg KE9SREVSIEJZIGlkCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfaW50ZWdy YXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2ludGVncmF0aW9uLnNxbAppbmRl eCA2ZDQ3NzI4ZTkxMS4uZDk3NDg5NzlkNTQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2lu dGVncmF0aW9uLnNxbApAQCAtODg0LDYgKzg4NCwxOSBAQCBEUk9QIElOREVYIHJwcl9pbnRlZ19p ZF9pZHg7CiAtLSB0aGlzIHRlc3QgbXVzdCBiZSByZXBsYWNlZCB3aXRoIGFuIGVycm9yLWNhc2Ug dGVzdCB0aGF0IGV4cGVjdHMKIC0tIHJhbmRvbSgpIGluIERFRklORSB0byBiZSByZWplY3RlZC4K IAorLS0gQmFzZWxpbmU6IFNUQUJMRSAodG9fY2hhcikgYW5kIElNTVVUQUJMRSAobGVuZ3RoKSBj YWxsZWVzIGFyZSBhY2NlcHRlZC4KKy0tIFRoaXMgbG9ja3MgdGhlIGJvdW5kYXJ5IG9mIHRoZSB2 b2xhdGlsZS1vbmx5IHByb2hpYml0aW9uLgorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIg dyBBUyBjbnQKK0ZST00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKQorICAgICAgICAgICAg ICAgIEFORCBsZW5ndGgoJ3gnKSA9IDEKKyAgICAgICAgICAgICAgICBBTkQgdG9fY2hhcihkYXRl ICcyMDI2LTAxLTAxJywgJ1lZWVknKSA9ICcyMDI2JykKK09SREVSIEJZIGlkOworCistLSBWb2xh dGlsZSAocmFuZG9tKSBpcyB0aGUgcHJvaGliaXRpb24gdGFyZ2V0OyB0b2RheSBzdGlsbCBhY2Nl cHRlZC4KIFNFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CiBGUk9NIHJwcl9p bnRlZwogV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUp Cgo= --00000000000083509906515dabc6 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0002-Unify-DEFINE-walkers-reject-volatile.txt" Content-Disposition: attachment; filename="nocfbot-0002-Unify-DEFINE-walkers-reject-volatile.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moy1ciq91 RnJvbSA4NGNkOTgwNzIxODRlYzYzYmIyZjc5NDc3ZjAzYmJlODFjNjU5YjgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBNb24sIDQgTWF5IDIwMjYgMjE6Mzc6NTkgKzA5MDAKU3ViamVjdDogW1BBVENIIDAyLzExXSBV bmlmeSBSUFIgREVGSU5FIHdhbGtlcnMgYW5kIHJlamVjdCB2b2xhdGlsZSBjYWxsZWVzCgpQbGFu bmVyL2V4ZWN1dG9yOiBzaGFyZWQgbmF2X3RyYXZlcnNhbF93YWxrZXIgKyB2aXNpdF9uYXZfcGxh biAvCnZpc2l0X25hdl9leGVjIHJlcGxhY2UgZm91ciBwcmUtZXhpc3Rpbmcgd2Fsa2VyczsgZWFj aCBERUZJTkUKdmFyaWFibGUgaXMgd2Fsa2VkIG9uY2UgcGVyIHBoYXNlLgoKUGFyc2VyOiBzaW5n bGUgZGVmaW5lX3dhbGtlciB3aXRoIHBoYXNlIHRhZyAoQk9EWSAvIE5BVl9BUkcgLwpOQVZfT0ZG U0VUKSByZXBsYWNlcyB0d28gcHJlLWV4aXN0aW5nIHdhbGtlcnMgYW5kIGVuZm9yY2VzIGFsbCBy dWxlcwppbiBvbmUgdHJhdmVyc2FsLiAgVm9sYXRpbGUgYW5kIE5leHRWYWx1ZUV4cHIgYXJlIHJl amVjdGVkIChSUFIncyBORkEKbWF5IHJlLWV2YWx1YXRlIHByZWRpY2F0ZXMgZHVyaW5nIGJhY2t0 cmFja2luZywgbWFraW5nIHZvbGF0aWxlCnJlc3VsdHMgbm9uLWRldGVybWluaXN0aWM7IFNUQUJM RSBhbmQgSU1NVVRBQkxFIGFyZSBhY2NlcHRlZCkuCgpUaGUgY29uc3RhbnQtb2Zmc2V0IHJ1bGUg bm93IGFsc28gY2F0Y2hlcyBjb2x1bW4gcmVmZXJlbmNlcyBpbiB0aGUKaW5uZXIgb2Zmc2V0IG9m IGNvbXBvdW5kIGZvcm1zLgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAg ICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5j ICAgICAgICAgIHwgMjgyICsrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v Y3JlYXRlcGxhbi5jICAgICAgIHwgNDM0ICsrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcnByLmMgICAgICAgICAgICAgIHwgIDM0ICsrCiBzcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfcnByLmMgICAgICAgICAgICAgICAgfCAzOTMgKysrKysrKysrKy0tLS0tLQog c3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5oICAgICAgICAgICAgICAgICAgIHwgIDIyICsKIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dCAgICAgICAgICAgICB8ICA3NCArLS0KIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0ICAgICB8ICAxMSArLQogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfaW50ZWdyYXRpb24ub3V0IHwgIDQwICstCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsICAgICAgICAgICAgICAgICAgfCAgMzUgKy0KIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbCAgICAgICAgICB8ICAgNyArLQogc3JjL3Rl c3QvcmVncmVzcy9zcWwvcnByX2ludGVncmF0aW9uLnNxbCAgICAgIHwgIDIzICstCiBzcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgMTAgKy0KIDEzIGZpbGVz IGNoYW5nZWQsIDc1OCBpbnNlcnRpb25zKCspLCA2MTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXhwbGFpbi5jCmluZGV4IDk5ZGUzNmI1N2YyLi4xYTc1NGJjZGFjNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYwpAQCAtMzMxMiw4ICszMzEyLDEyIEBAIHNob3dfd2luZG93X2RlZihXaW5kb3dBZ2dT dGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsIEV4cGxhaW5TdGF0ZSAqZXMpCiAJCQkJ CQkJCQkJCWVzKTsKIAkJCQkJCWJyZWFrOwogCQkJCQljYXNlIFJQUl9OQVZfT0ZGU0VUX0ZJWEVE OgotCQkJCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiTmF2IE1hcmsgTG9va2FoZWFkIiwgTlVM TCwKLQkJCQkJCQkJCQkJICAgZmlyc3RPZmZzZXQsIGVzKTsKKwkJCQkJCWlmIChmaXJzdE9mZnNl dCA9PSBJTlQ2NF9NQVgpCisJCQkJCQkJRXhwbGFpblByb3BlcnR5VGV4dCgiTmF2IE1hcmsgTG9v a2FoZWFkIiwgImluZmluaXRlIiwKKwkJCQkJCQkJCQkJCWVzKTsKKwkJCQkJCWVsc2UKKwkJCQkJ CQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJOYXYgTWFyayBMb29rYWhlYWQiLCBOVUxMLAorCQkJ CQkJCQkJCQkJICAgZmlyc3RPZmZzZXQsIGVzKTsKIAkJCQkJCWJyZWFrOwogCQkJCQlkZWZhdWx0 OgogCQkJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBSUFIgbmF2IG9mZnNldCBraW5kOiAl ZCIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKaW5kZXggOTNjYjliYmRkMTEuLmFm MjM1MWJjY2I4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdn LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC0yNDYsOCAr MjQ2LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlX3JlZHVjZWRfZnJhbWUoV2luZG93T2JqZWN0IHdp bm9iaiwgaW50NjQgcG9zKTsKIHN0YXRpYyBib29sIG5mYV9ldmFsdWF0ZV9yb3coV2luZG93T2Jq ZWN0IHdpbm9iaiwgaW50NjQgcG9zLCBib29sICp2YXJNYXRjaGVkKTsKIAogLyogRm9yd2FyZCBk ZWNsYXJhdGlvbnMgLSBuYXZpZ2F0aW9uIG9mZnNldCBldmFsdWF0aW9uICovCi1zdGF0aWMgdm9p ZCBldmFsX25hdl9tYXhfb2Zmc2V0KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgTGlzdCAqZGVm aW5lQ2xhdXNlKTsKLXN0YXRpYyB2b2lkIGV2YWxfbmF2X2ZpcnN0X29mZnNldChXaW5kb3dBZ2dT dGF0ZSAqd2luc3RhdGUsIExpc3QgKmRlZmluZUNsYXVzZSk7CitzdGF0aWMgdm9pZCBldmFsX2Rl ZmluZV9vZmZzZXRzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgTGlzdCAqZGVmaW5lQ2xhdXNl KTsKIAogLyoKICAqIE5vdCBudWxsIGluZm8gYml0IGFycmF5IGNvbnNpc3RzIG9mIDItYml0IGl0 ZW1zCkBAIC0yNTc5LDEyICsyNTc4LDEwIEBAIEV4ZWNXaW5kb3dBZ2coUGxhblN0YXRlICpwc3Rh dGUpCiAJCQl7CiAJCQkJaW50NjQJCWZpcnN0cmVhY2g7CiAKLQkJCQlpZiAod2luc3RhdGUtPm5h dkZpcnN0T2Zmc2V0ID4gLXdpbnN0YXRlLT5uZmFDb250ZXh0LT5tYXRjaFN0YXJ0Um93KQotCQkJ CQlmaXJzdHJlYWNoID0gd2luc3RhdGUtPm5mYUNvbnRleHQtPm1hdGNoU3RhcnRSb3cKLQkJCQkJ CSsgd2luc3RhdGUtPm5hdkZpcnN0T2Zmc2V0OwotCQkJCWVsc2UKLQkJCQkJZmlyc3RyZWFjaCA9 IDA7Ci0JCQkJbmF2bWFya3BvcyA9IE1pbihuYXZtYXJrcG9zLCBmaXJzdHJlYWNoKTsKKwkJCQlp ZiAoIXBnX2FkZF9zNjRfb3ZlcmZsb3cod2luc3RhdGUtPm5mYUNvbnRleHQtPm1hdGNoU3RhcnRS b3csCisJCQkJCQkJCQkJIHdpbnN0YXRlLT5uYXZGaXJzdE9mZnNldCwKKwkJCQkJCQkJCQkgJmZp cnN0cmVhY2gpKQorCQkJCQluYXZtYXJrcG9zID0gTWluKG5hdm1hcmtwb3MsIE1heChmaXJzdHJl YWNoLCAwKSk7CiAJCQl9CiAKIAkJCWlmIChuYXZtYXJrcG9zID4gd2luc3RhdGUtPm5hdl93aW5v YmotPm1hcmtwb3MpCkBAIC0zMDM3LDE3ICszMDM0LDEzIEBAIEV4ZWNJbml0V2luZG93QWdnKFdp bmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJd2luc3RhdGUtPnJw U2tpcFRvID0gbm9kZS0+cnBTa2lwVG87CiAJLyogU2V0IHVwIHJvdyBwYXR0ZXJuIHJlY29nbml0 aW9uIFBBVFRFUk4gY2xhdXNlIChjb21waWxlZCBORkEpICovCiAJd2luc3RhdGUtPnJwUGF0dGVy biA9IG5vZGUtPnJwUGF0dGVybjsKLQkvKiBTZXQgdXAgbmF2IG9mZnNldHMgZm9yIHR1cGxlc3Rv cmUgdHJpbSAqLworCS8qIFNldCB1cCBuYXYgb2Zmc2V0cyBmb3IgdHVwbGVzdG9yZSB0cmltOyBy ZXNvbHZlIGFueSBORUVEU19FVkFMIGtpbmRzICovCiAJd2luc3RhdGUtPm5hdk1heE9mZnNldEtp bmQgPSBub2RlLT5uYXZNYXhPZmZzZXRLaW5kOwogCXdpbnN0YXRlLT5uYXZNYXhPZmZzZXQgPSBu b2RlLT5uYXZNYXhPZmZzZXQ7Ci0JaWYgKHdpbnN0YXRlLT5uYXZNYXhPZmZzZXRLaW5kID09IFJQ Ul9OQVZfT0ZGU0VUX05FRURTX0VWQUwpCi0JCWV2YWxfbmF2X21heF9vZmZzZXQod2luc3RhdGUs IG5vZGUtPmRlZmluZUNsYXVzZSk7CiAJd2luc3RhdGUtPmhhc0ZpcnN0TmF2ID0gbm9kZS0+aGFz Rmlyc3ROYXY7CiAJd2luc3RhdGUtPm5hdkZpcnN0T2Zmc2V0S2luZCA9IG5vZGUtPm5hdkZpcnN0 T2Zmc2V0S2luZDsKIAl3aW5zdGF0ZS0+bmF2Rmlyc3RPZmZzZXQgPSBub2RlLT5uYXZGaXJzdE9m ZnNldDsKLQlpZiAod2luc3RhdGUtPmhhc0ZpcnN0TmF2ICYmCi0JCXdpbnN0YXRlLT5uYXZGaXJz dE9mZnNldEtpbmQgPT0gUlBSX05BVl9PRkZTRVRfTkVFRFNfRVZBTCkKLQkJZXZhbF9uYXZfZmly c3Rfb2Zmc2V0KHdpbnN0YXRlLCBub2RlLT5kZWZpbmVDbGF1c2UpOworCWV2YWxfZGVmaW5lX29m ZnNldHMod2luc3RhdGUsIG5vZGUtPmRlZmluZUNsYXVzZSk7CiAKIAkvKiBDb3B5IG1hdGNoX3N0 YXJ0IGRlcGVuZGVuY3kgYml0bWFwc2V0IGZvciBwZXItY29udGV4dCBldmFsdWF0aW9uICovCiAJ d2luc3RhdGUtPmRlZmluZU1hdGNoU3RhcnREZXBlbmRlbnQgPSBibXNfY29weShub2RlLT5kZWZp bmVNYXRjaFN0YXJ0RGVwZW5kZW50KTsKQEAgLTM5OTcsNDIgKzM5OTAsNjQgQEAgZXZhbF9uYXZf b2Zmc2V0X2hlbHBlcihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIEV4cHIgKm9mZnNldF9leHBy LAogdHlwZWRlZiBzdHJ1Y3QKIHsKIAlXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGU7Ci0JaW50NjQJ CW1heE9mZnNldDsKLQlib29sCQlvdmVyZmxvdzsJCS8qIHRydWUgaWYgb3ZlcmZsb3cgZGV0ZWN0 ZWQgKi8KLX0gRXZhbE5hdk1heENvbnRleHQ7CisJaW50NjQJCW1heE9mZnNldDsJCS8qIG1heCBi YWNrd2FyZC1yZWFjaCBvZmZzZXQgYWNyb3NzIGFsbCBuYXYKKwkJCQkJCQkJICogZXhwcnMgKi8K Kwlib29sCQltYXhPdmVyZmxvdzsJLyogdHJ1ZSBpZiBiYWNrd2FyZC1yZWFjaCBvdmVyZmxvdyBk ZXRlY3RlZCAqLworCWludDY0CQltaW5GaXJzdE9mZnNldDsgLyogbWluIGZvcndhcmQtZnJvbS1t YXRjaF9zdGFydCBvZmZzZXQ7IG1heSBiZQorCQkJCQkJCQkgKiBuZWdhdGl2ZSAoUFJFVl9GSVJT VDogaW5uZXIgLSBvdXRlciA8IDApICovCit9IEV2YWxEZWZpbmVPZmZzZXRzQ29udGV4dDsKIAog LyoKLSAqIGV2YWxfbmF2X21heF9vZmZzZXRfd2Fsa2VyCi0gKgkJV2FsayBleHByZXNzaW9uIHRy ZWUgZXZhbHVhdGluZyBiYWNrd2FyZC1yZWFjaCBvZmZzZXRzIGF0IHJ1bnRpbWUuCisgKiB2aXNp dF9uYXZfZXhlYworICoJCW5hdl90cmF2ZXJzYWxfd2Fsa2VyIGNhbGxiYWNrIChOYXZWaXNpdEZu KSBmb3IgdGhlIGV4ZWN1dG9yIHNpZGUuCisgKgkJQXQgZWFjaCBSUFJOYXZFeHByLCBldmFsdWF0 ZXMgdGhlIG5hdidzIG9mZnNldCBleHByZXNzaW9uKHMpIGF0CisgKgkJcnVudGltZSB2aWEgZXZh bF9uYXZfb2Zmc2V0X2hlbHBlciBhbmQgYWNjdW11bGF0ZXM6CisgKgorICoJCSAgLSBtYXhPZmZz ZXQgKGJhY2t3YXJkIHJlYWNoKTogUFJFViwgTEFTVC13aXRoLW9mZnNldCwgY29tcG91bmQKKyAq CQkJUFJFVl9MQVNUIChzZXRzIG1heE92ZXJmbG93IG9uIGludDY0IG92ZXJmbG93KSwgY29tcG91 bmQKKyAqCQkJTkVYVF9MQVNUICg9IG1heChpbm5lciAtIG91dGVyLCAwKSkKKyAqCQkgIC0gbWlu Rmlyc3RPZmZzZXQgKGZvcndhcmQgcmVhY2ggZnJvbSBtYXRjaF9zdGFydCk6IEZJUlNULAorICoJ CQljb21wb3VuZCBQUkVWX0ZJUlNUICg9IGlubmVyIC0gb3V0ZXIsIG1heSBiZSBuZWdhdGl2ZSks CisgKgkJCWNvbXBvdW5kIE5FWFRfRklSU1QgKD0gaW5uZXIgKyBvdXRlciwgY2xhbXBlZCB0byBJ TlQ2NF9NQVggb24KKyAqCQkJb3ZlcmZsb3c7IGFsd2F5cyA+PSAwIHNvIG5ldmVyIHVwZGF0ZXMg bWluRmlyc3RPZmZzZXQgaW4gcHJhY3RpY2UpCiAgKgotICogSGFuZGxlcyBzaW1wbGUgUFJFViwg TEFTVC13aXRoLW9mZnNldCwgYW5kIGNvbXBvdW5kIFBSRVZfTEFTVC9ORVhUX0xBU1QuCisgKiBD b3VudGVycGFydCBvZiB2aXNpdF9uYXZfcGxhbiBidXQgdXNpbmcgcnVudGltZSBldmFsdWF0aW9u IGluc3RlYWQgb2YKKyAqIENvbnN0IGZvbGRpbmc7IHJ1bnMgb25seSBmb3Igb2Zmc2V0cyB0aGUg cGxhbm5lciBtYXJrZWQgTkVFRFNfRVZBTC4KKyAqIE1hdGNoLXN0YXJ0IGRlcGVuZGVuY3kgaXMg bm90IHJlY29tcHV0ZWQgaGVyZSAtLSB0aGUgcGxhbm5lcidzIGJpdG1hcHNldAorICogaXMgcmV1 c2VkIHZpYSB3aW5zdGF0ZS0+ZGVmaW5lTWF0Y2hTdGFydERlcGVuZGVudC4KICAqLwotc3RhdGlj IGJvb2wKLWV2YWxfbmF2X21heF9vZmZzZXRfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmN0eCkK K3N0YXRpYyB2b2lkCit2aXNpdF9uYXZfZXhlYyhOYXZUcmF2ZXJzYWwgKnQsIFJQUk5hdkV4cHIg Km5hdikKIHsKLQlFdmFsTmF2TWF4Q29udGV4dCAqY29udGV4dCA9IChFdmFsTmF2TWF4Q29udGV4 dCAqKSBjdHg7Ci0KLQlpZiAobm9kZSA9PSBOVUxMKQotCQlyZXR1cm4gZmFsc2U7CisJRXZhbERl ZmluZU9mZnNldHNDb250ZXh0ICpjb250ZXh0ID0gKEV2YWxEZWZpbmVPZmZzZXRzQ29udGV4dCAq KSB0LT5kYXRhOwogCi0JLyogU2hvcnQtY2lyY3VpdCBpZiBvdmVyZmxvdyBhbHJlYWR5IGRldGVj dGVkICovCi0JaWYgKGNvbnRleHQtPm92ZXJmbG93KQotCQlyZXR1cm4gZmFsc2U7CisJLyoKKwkg KiBQYXJzZXIgZ3VhcmFudGVlIChtaXJyb3JzIHZpc2l0X25hdl9wbGFuKTogbmF2J3MgZGlyZWN0 IGNoaWxkcmVuIGFyZQorCSAqIG5ldmVyIFJQUk5hdkV4cHIgLS0gY29tcG91bmQgbmVzdGluZyBp cyBmbGF0dGVuZWQgaW4gcGxhY2UgYW5kIGFueQorCSAqIG90aGVyIG5lc3RpbmcgaXMgcmVqZWN0 ZWQuICBPdXRlci1raW5kIGRpc3BhdGNoIGlzIHN1ZmZpY2llbnQuCisJICovCisJQXNzZXJ0KG5h di0+YXJnID09IE5VTEwgfHwgIUlzQShuYXYtPmFyZywgUlBSTmF2RXhwcikpOworCUFzc2VydChu YXYtPm9mZnNldF9hcmcgPT0gTlVMTCB8fCAhSXNBKG5hdi0+b2Zmc2V0X2FyZywgUlBSTmF2RXhw cikpOworCUFzc2VydChuYXYtPmNvbXBvdW5kX29mZnNldF9hcmcgPT0gTlVMTCB8fAorCQkgICAh SXNBKG5hdi0+Y29tcG91bmRfb2Zmc2V0X2FyZywgUlBSTmF2RXhwcikpOwogCi0JaWYgKElzQShu b2RlLCBSUFJOYXZFeHByKSkKKwkvKiBCYWNrd2FyZCByZWFjaDogUFJFViwgTEFTVC13aXRoLW9m ZnNldCAqLworCWlmICghY29udGV4dC0+bWF4T3ZlcmZsb3cpCiAJewotCQlSUFJOYXZFeHByICpu YXYgPSAoUlBSTmF2RXhwciAqKSBub2RlOwogCQlpbnQ2NAkJcmVhY2ggPSAwOworCQlib29sCQln b3RSZWFjaCA9IGZhbHNlOwogCiAJCWlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWKQogCQl7 CiAJCQlyZWFjaCA9IGV2YWxfbmF2X29mZnNldF9oZWxwZXIoY29udGV4dC0+d2luc3RhdGUsCiAJ CQkJCQkJCQkJICAgbmF2LT5vZmZzZXRfYXJnLCAxKTsKKwkJCWdvdFJlYWNoID0gdHJ1ZTsKIAkJ fQogCQllbHNlIGlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9MQVNUICYmIG5hdi0+b2Zmc2V0X2Fy ZyAhPSBOVUxMKQogCQl7CiAJCQlyZWFjaCA9IGV2YWxfbmF2X29mZnNldF9oZWxwZXIoY29udGV4 dC0+d2luc3RhdGUsCiAJCQkJCQkJCQkJICAgbmF2LT5vZmZzZXRfYXJnLCAwKTsKKwkJCWdvdFJl YWNoID0gdHJ1ZTsKIAkJfQogCQllbHNlIGlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWX0xB U1QgfHwKIAkJCQkgbmF2LT5raW5kID09IFJQUl9OQVZfTkVYVF9MQVNUKQpAQCAtNDA0NSwxNjgg KzQwNjAsMTIzIEBAIGV2YWxfbmF2X21heF9vZmZzZXRfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQg KmN0eCkKIAkJCWlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWX0xBU1QpCiAJCQl7CiAJCQkJ aWYgKHBnX2FkZF9zNjRfb3ZlcmZsb3coaW5uZXIsIG91dGVyLCAmcmVhY2gpKQotCQkJCXsKLQkJ CQkJY29udGV4dC0+b3ZlcmZsb3cgPSB0cnVlOwotCQkJCQlyZXR1cm4gZmFsc2U7Ci0JCQkJfQor CQkJCQljb250ZXh0LT5tYXhPdmVyZmxvdyA9IHRydWU7CisJCQkJZWxzZQorCQkJCQlnb3RSZWFj aCA9IHRydWU7CiAJCQl9CiAJCQllbHNlCi0JCQkJcmVhY2ggPSAoaW5uZXIgPiBvdXRlcikgPyBp bm5lciAtIG91dGVyIDogMDsKKwkJCXsKKwkJCQlyZWFjaCA9IE1heChpbm5lciAtIG91dGVyLCAw KTsKKwkJCQlnb3RSZWFjaCA9IHRydWU7CisJCQl9CiAJCX0KIAotCQljb250ZXh0LT5tYXhPZmZz ZXQgPSBNYXgoY29udGV4dC0+bWF4T2Zmc2V0LCByZWFjaCk7Ci0KLQkJcmV0dXJuIGZhbHNlOwkJ CS8qIGRvbid0IHdhbGsgaW50byBjaGlsZHJlbiAqLworCQlpZiAoZ290UmVhY2gpCisJCQljb250 ZXh0LT5tYXhPZmZzZXQgPSBNYXgoY29udGV4dC0+bWF4T2Zmc2V0LCByZWFjaCk7CiAJfQogCi0J cmV0dXJuIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgZXZhbF9uYXZfbWF4X29mZnNldF93 YWxrZXIsIGN0eCk7Ci19Ci0KLS8qCi0gKiBldmFsX25hdl9tYXhfb2Zmc2V0Ci0gKgkJRXZhbHVh dGUgbm9uLWNvbnN0YW50IGJhY2t3YXJkLXJlYWNoIG9mZnNldHMgYXQgZXhlY3V0b3IgaW5pdCB0 aW1lLgotICoKLSAqIENhbGxlZCB3aGVuIHRoZSBwbGFubmVyIHNldCBuYXZNYXhPZmZzZXRLaW5k IHRvIFJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUwKLSAqIGJlY2F1c2Ugc29tZSBvZmZzZXQgaW4g UFJFViwgTEFTVC13aXRoLW9mZnNldCwgb3IgY29tcG91bmQgUFJFVl9MQVNULwotICogTkVYVF9M QVNUIGNvbnRhaW5zIGEgcGFyYW1ldGVyIG9yIG5vbi1mb2xkYWJsZSBleHByZXNzaW9uLgotICoK LSAqIE9uIG92ZXJmbG93LCBzZXRzIG5hdk1heE9mZnNldEtpbmQgdG8gUlBSX05BVl9PRkZTRVRf UkVUQUlOX0FMTCBzbyB0aGF0Ci0gKiB0dXBsZXN0b3JlIHRyaW0gaXMgZGlzYWJsZWQgZm9yIGJh Y2t3YXJkIG5hdmlnYXRpb24uCi0gKi8KLXN0YXRpYyB2b2lkCi1ldmFsX25hdl9tYXhfb2Zmc2V0 KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgTGlzdCAqZGVmaW5lQ2xhdXNlKQotewotCUV2YWxO YXZNYXhDb250ZXh0IGN0eDsKLQlMaXN0Q2VsbCAgICpsYzsKLQotCWN0eC53aW5zdGF0ZSA9IHdp bnN0YXRlOwotCWN0eC5tYXhPZmZzZXQgPSAwOwotCWN0eC5vdmVyZmxvdyA9IGZhbHNlOwotCi0J Zm9yZWFjaChsYywgZGVmaW5lQ2xhdXNlKQorCS8qIEZvcndhcmQgcmVhY2ggZnJvbSBtYXRjaF9z dGFydDogRklSU1QsIGNvbXBvdW5kIFBSRVZfRklSU1QvTkVYVF9GSVJTVCAqLworCWlmIChuYXYt PmtpbmQgPT0gUlBSX05BVl9GSVJTVCkKIAl7Ci0JCVRhcmdldEVudHJ5ICp0ZSA9IChUYXJnZXRF bnRyeSAqKSBsZmlyc3QobGMpOworCQlpbnQ2NAkJcmVhY2g7CiAKLQkJZXZhbF9uYXZfbWF4X29m ZnNldF93YWxrZXIoKE5vZGUgKikgdGUtPmV4cHIsICZjdHgpOwotCX0KLQotCWlmIChjdHgub3Zl cmZsb3cpCi0JewotCQl3aW5zdGF0ZS0+bmF2TWF4T2Zmc2V0S2luZCA9IFJQUl9OQVZfT0ZGU0VU X1JFVEFJTl9BTEw7Ci0JCXdpbnN0YXRlLT5uYXZNYXhPZmZzZXQgPSAwOworCQlyZWFjaCA9IGV2 YWxfbmF2X29mZnNldF9oZWxwZXIoY29udGV4dC0+d2luc3RhdGUsCisJCQkJCQkJCQkgICBuYXYt Pm9mZnNldF9hcmcsIDApOworCQljb250ZXh0LT5taW5GaXJzdE9mZnNldCA9IE1pbihjb250ZXh0 LT5taW5GaXJzdE9mZnNldCwgcmVhY2gpOwogCX0KLQllbHNlCisJZWxzZSBpZiAobmF2LT5raW5k ID09IFJQUl9OQVZfUFJFVl9GSVJTVCB8fAorCQkJIG5hdi0+a2luZCA9PSBSUFJfTkFWX05FWFRf RklSU1QpCiAJewotCQl3aW5zdGF0ZS0+bmF2TWF4T2Zmc2V0S2luZCA9IFJQUl9OQVZfT0ZGU0VU X0ZJWEVEOwotCQl3aW5zdGF0ZS0+bmF2TWF4T2Zmc2V0ID0gY3R4Lm1heE9mZnNldDsKLQl9Ci19 CisJCWludDY0CQlpbm5lciA9IGV2YWxfbmF2X29mZnNldF9oZWxwZXIoY29udGV4dC0+d2luc3Rh dGUsCisJCQkJCQkJCQkJCQkgICBuYXYtPm9mZnNldF9hcmcsIDApOworCQlpbnQ2NAkJb3V0ZXIg PSBldmFsX25hdl9vZmZzZXRfaGVscGVyKGNvbnRleHQtPndpbnN0YXRlLAorCQkJCQkJCQkJCQkJ ICAgbmF2LT5jb21wb3VuZF9vZmZzZXRfYXJnLCAxKTsKKwkJaW50NjQJCXJlYWNoOwogCi10eXBl ZGVmIHN0cnVjdAotewotCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZTsKLQlpbnQ2NAkJbWluT2Zm c2V0OwotCWJvb2wJCWZvdW5kOwotfSBFdmFsTmF2Rmlyc3RDb250ZXh0OwotCi0vKgotICogZXZh bF9uYXZfZmlyc3Rfb2Zmc2V0X3dhbGtlcgotICoJCVdhbGsgZXhwcmVzc2lvbiB0cmVlIGV2YWx1 YXRpbmcgZm9yd2FyZC1mcm9tLW1hdGNoX3N0YXJ0IG9mZnNldHMuCi0gKgotICogSGFuZGxlcyBz aW1wbGUgRklSU1QgYW5kIGNvbXBvdW5kIFBSRVZfRklSU1QvTkVYVF9GSVJTVC4KLSAqLwotc3Rh dGljIGJvb2wKLWV2YWxfbmF2X2ZpcnN0X29mZnNldF93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAq Y3R4KQotewotCUV2YWxOYXZGaXJzdENvbnRleHQgKmNvbnRleHQgPSAoRXZhbE5hdkZpcnN0Q29u dGV4dCAqKSBjdHg7Ci0KLQlpZiAobm9kZSA9PSBOVUxMKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlp ZiAoSXNBKG5vZGUsIFJQUk5hdkV4cHIpKQotCXsKLQkJUlBSTmF2RXhwciAqbmF2ID0gKFJQUk5h dkV4cHIgKikgbm9kZTsKLQkJaW50NjQJCWNvbWJpbmVkID0gSU5UNjRfTUFYOwotCi0JCWlmIChu YXYtPmtpbmQgPT0gUlBSX05BVl9GSVJTVCkKKwkJaWYgKG5hdi0+a2luZCA9PSBSUFJfTkFWX1BS RVZfRklSU1QpCiAJCXsKLQkJCWNvbnRleHQtPmZvdW5kID0gdHJ1ZTsKLQkJCWNvbWJpbmVkID0g ZXZhbF9uYXZfb2Zmc2V0X2hlbHBlcihjb250ZXh0LT53aW5zdGF0ZSwKLQkJCQkJCQkJCQkJICBu YXYtPm9mZnNldF9hcmcsIDApOworCQkJLyoKKwkJCSAqIHJlYWNoID0gaW5uZXIgLSBvdXRlci4g IEJvdGggYXJlIG5vbi1uZWdhdGl2ZSwgc28gdGhlIHJlc3VsdCA+PQorCQkJICogLUlOVDY0X01B WCwgd2hpY2ggY2Fubm90IHVuZGVyZmxvdyBpbnQ2NC4KKwkJCSAqLworCQkJcmVhY2ggPSBpbm5l ciAtIG91dGVyOwogCQl9Ci0JCWVsc2UgaWYgKG5hdi0+a2luZCA9PSBSUFJfTkFWX1BSRVZfRklS U1QgfHwKLQkJCQkgbmF2LT5raW5kID09IFJQUl9OQVZfTkVYVF9GSVJTVCkKKwkJZWxzZQogCQl7 Ci0JCQlpbnQ2NAkJaW5uZXIgPSBldmFsX25hdl9vZmZzZXRfaGVscGVyKGNvbnRleHQtPndpbnN0 YXRlLAotCQkJCQkJCQkJCQkJCSAgIG5hdi0+b2Zmc2V0X2FyZywgMCk7Ci0JCQlpbnQ2NAkJb3V0 ZXIgPSBldmFsX25hdl9vZmZzZXRfaGVscGVyKGNvbnRleHQtPndpbnN0YXRlLAotCQkJCQkJCQkJ CQkJCSAgIG5hdi0+Y29tcG91bmRfb2Zmc2V0X2FyZywgMSk7Ci0KLQkJCWNvbnRleHQtPmZvdW5k ID0gdHJ1ZTsKLQkJCWlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWX0ZJUlNUKQotCQkJewot CQkJCS8qCi0JCQkJICogY29tYmluZWQgPSBpbm5lciAtIG91dGVyLiAgQm90aCBhcmUgbm9uLW5l Z2F0aXZlLCBzbyB0aGUKLQkJCQkgKiByZXN1bHQgPj0gLUlOVDY0X01BWCwgd2hpY2ggY2Fubm90 IHVuZGVyZmxvdyBpbnQ2NC4KLQkJCQkgKi8KLQkJCQljb21iaW5lZCA9IGlubmVyIC0gb3V0ZXI7 Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBORVhUX0ZJUlNUOiBjb21iaW5l ZCA9IGlubmVyICsgb3V0ZXIuICBUaGlzIGNhbiBvdmVyZmxvdywKLQkJCQkgKiBidXQgdGhlIHJl c3VsdCBpcyBhbHdheXMgPj0gMCwgc28gaXQgbmV2ZXIgdXBkYXRlcwotCQkJCSAqIG1pbk9mZnNl dCAod2hpY2ggdHJhY2tzIHRoZSBtaW5pbXVtKS4gIENsYW1wIHRvIElOVDY0X01BWAotCQkJCSAq IG9uIG92ZXJmbG93LgotCQkJCSAqLwotCQkJCWlmIChwZ19hZGRfczY0X292ZXJmbG93KGlubmVy LCBvdXRlciwgJmNvbWJpbmVkKSkKLQkJCQkJY29tYmluZWQgPSBJTlQ2NF9NQVg7Ci0JCQl9CisJ CQkvKgorCQkJICogTkVYVF9GSVJTVDogcmVhY2ggPSBpbm5lciArIG91dGVyLiAgVGhpcyBjYW4g b3ZlcmZsb3csIGJ1dCB0aGUKKwkJCSAqIHJlc3VsdCBpcyBhbHdheXMgPj0gMCwgc28gaXQgbmV2 ZXIgdXBkYXRlcyBtaW5GaXJzdE9mZnNldAorCQkJICogKHdoaWNoIHRyYWNrcyB0aGUgbWluaW11 bSkuICBDbGFtcCB0byBJTlQ2NF9NQVggb24gb3ZlcmZsb3cuCisJCQkgKi8KKwkJCWlmIChwZ19h ZGRfczY0X292ZXJmbG93KGlubmVyLCBvdXRlciwgJnJlYWNoKSkKKwkJCQlyZWFjaCA9IElOVDY0 X01BWDsKIAkJfQotCi0JCWNvbnRleHQtPm1pbk9mZnNldCA9IE1pbihjb250ZXh0LT5taW5PZmZz ZXQsIGNvbWJpbmVkKTsKLQotCQlyZXR1cm4gZmFsc2U7CisJCWNvbnRleHQtPm1pbkZpcnN0T2Zm c2V0ID0gTWluKGNvbnRleHQtPm1pbkZpcnN0T2Zmc2V0LCByZWFjaCk7CiAJfQotCi0JcmV0dXJu IGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgZXZhbF9uYXZfZmlyc3Rfb2Zmc2V0X3dhbGtl ciwgY3R4KTsKIH0KIAogLyoKLSAqIGV2YWxfbmF2X2ZpcnN0X29mZnNldAotICoJCUV2YWx1YXRl IG5vbi1jb25zdGFudCBmb3J3YXJkLWZyb20tbWF0Y2hfc3RhcnQgb2Zmc2V0cyBhdCBleGVjdXRv cgotICoJCWluaXQgdGltZS4KKyAqIGV2YWxfZGVmaW5lX29mZnNldHMKKyAqCQlFdmFsdWF0ZSBu b24tY29uc3RhbnQgbmF2IG9mZnNldHMgYXQgZXhlY3V0b3IgaW5pdCB0aW1lLgorICoKKyAqIENh bGxlZCB3aGVuIHRoZSBwbGFubmVyIHNldCBuYXZNYXhPZmZzZXRLaW5kIGFuZC9vciBuYXZGaXJz dE9mZnNldEtpbmQKKyAqIHRvIFJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUwgYmVjYXVzZSBzb21l IG9mZnNldCBjb250YWlucyBhIHBhcmFtZXRlcgorICogb3Igbm9uLWZvbGRhYmxlIGV4cHJlc3Np b24uICBVcGRhdGVzIG9ubHkgdGhlIGZpZWxkcyB3aG9zZSBraW5kIHdhcworICogTkVFRFNfRVZB TDsgRklYRUQga2luZHMgYXJlIGxlZnQgdW5jaGFuZ2VkLgogICoKLSAqIENhbGxlZCB3aGVuIHRo ZSBwbGFubmVyIHNldCBuYXZGaXJzdE9mZnNldEtpbmQgdG8gUlBSX05BVl9PRkZTRVRfTkVFRFNf RVZBTAotICogYmVjYXVzZSBzb21lIG9mZnNldCBpbiBGSVJTVCBvciBjb21wb3VuZCBQUkVWX0ZJ UlNUL05FWFRfRklSU1QgY29udGFpbnMKLSAqIGEgcGFyYW1ldGVyIG9yIG5vbi1mb2xkYWJsZSBl eHByZXNzaW9uLgorICogT24gYmFja3dhcmQtcmVhY2ggb3ZlcmZsb3csIHNldHMgbmF2TWF4T2Zm c2V0S2luZCB0bworICogUlBSX05BVl9PRkZTRVRfUkVUQUlOX0FMTCBzbyB0aGF0IHR1cGxlc3Rv cmUgdHJpbSBpcyBkaXNhYmxlZCBmb3IKKyAqIGJhY2t3YXJkIG5hdmlnYXRpb24uCiAgKi8KIHN0 YXRpYyB2b2lkCi1ldmFsX25hdl9maXJzdF9vZmZzZXQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRl LCBMaXN0ICpkZWZpbmVDbGF1c2UpCitldmFsX2RlZmluZV9vZmZzZXRzKFdpbmRvd0FnZ1N0YXRl ICp3aW5zdGF0ZSwgTGlzdCAqZGVmaW5lQ2xhdXNlKQogewotCUV2YWxOYXZGaXJzdENvbnRleHQg Y3R4OworCUV2YWxEZWZpbmVPZmZzZXRzQ29udGV4dCBjdHg7CisJTmF2VHJhdmVyc2FsIHRyYXY7 CiAJTGlzdENlbGwgICAqbGM7CisJYm9vbAkJbmVlZHNNYXggPSAod2luc3RhdGUtPm5hdk1heE9m ZnNldEtpbmQgPT0gUlBSX05BVl9PRkZTRVRfTkVFRFNfRVZBTCk7CisJYm9vbAkJbmVlZHNGaXJz dCA9ICh3aW5zdGF0ZS0+aGFzRmlyc3ROYXYgJiYKKwkJCQkJCQkgIHdpbnN0YXRlLT5uYXZGaXJz dE9mZnNldEtpbmQgPT0gUlBSX05BVl9PRkZTRVRfTkVFRFNfRVZBTCk7CisKKwlpZiAoIW5lZWRz TWF4ICYmICFuZWVkc0ZpcnN0KQorCQlyZXR1cm47CiAKIAljdHgud2luc3RhdGUgPSB3aW5zdGF0 ZTsKLQljdHgubWluT2Zmc2V0ID0gSU5UNjRfTUFYOwotCWN0eC5mb3VuZCA9IGZhbHNlOworCWN0 eC5tYXhPZmZzZXQgPSAwOworCWN0eC5tYXhPdmVyZmxvdyA9IGZhbHNlOworCWN0eC5taW5GaXJz dE9mZnNldCA9IElOVDY0X01BWDsKKworCXRyYXYudmlzaXQgPSB2aXNpdF9uYXZfZXhlYzsKKwl0 cmF2LmRhdGEgPSAmY3R4OwogCiAJZm9yZWFjaChsYywgZGVmaW5lQ2xhdXNlKQogCXsKIAkJVGFy Z2V0RW50cnkgKnRlID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdChsYyk7CiAKLQkJZXZhbF9uYXZf Zmlyc3Rfb2Zmc2V0X3dhbGtlcigoTm9kZSAqKSB0ZS0+ZXhwciwgJmN0eCk7CisJCW5hdl90cmF2 ZXJzYWxfd2Fsa2VyKChOb2RlICopIHRlLT5leHByLCAmdHJhdik7CiAJfQogCi0JaWYgKGN0eC5m b3VuZCAmJiBjdHgubWluT2Zmc2V0IDwgSU5UNjRfTUFYKQorCWlmIChuZWVkc01heCkKIAl7Ci0J CXdpbnN0YXRlLT5uYXZGaXJzdE9mZnNldEtpbmQgPSBSUFJfTkFWX09GRlNFVF9GSVhFRDsKLQkJ d2luc3RhdGUtPm5hdkZpcnN0T2Zmc2V0ID0gY3R4Lm1pbk9mZnNldDsKKwkJaWYgKGN0eC5tYXhP dmVyZmxvdykKKwkJeworCQkJd2luc3RhdGUtPm5hdk1heE9mZnNldEtpbmQgPSBSUFJfTkFWX09G RlNFVF9SRVRBSU5fQUxMOworCQkJd2luc3RhdGUtPm5hdk1heE9mZnNldCA9IDA7CisJCX0KKwkJ ZWxzZQorCQl7CisJCQl3aW5zdGF0ZS0+bmF2TWF4T2Zmc2V0S2luZCA9IFJQUl9OQVZfT0ZGU0VU X0ZJWEVEOworCQkJd2luc3RhdGUtPm5hdk1heE9mZnNldCA9IGN0eC5tYXhPZmZzZXQ7CisJCX0K IAl9Ci0JZWxzZQorCisJaWYgKG5lZWRzRmlyc3QpCiAJewogCQl3aW5zdGF0ZS0+bmF2Rmlyc3RP ZmZzZXRLaW5kID0gUlBSX05BVl9PRkZTRVRfRklYRUQ7Ci0JCXdpbnN0YXRlLT5uYXZGaXJzdE9m ZnNldCA9IDA7CisJCWlmIChjdHgubWluRmlyc3RPZmZzZXQgPCBJTlQ2NF9NQVgpCisJCQl3aW5z dGF0ZS0+bmF2Rmlyc3RPZmZzZXQgPSBjdHgubWluRmlyc3RPZmZzZXQ7CisJCWVsc2UKKwkJCXdp bnN0YXRlLT5uYXZGaXJzdE9mZnNldCA9IElOVDY0X01BWDsKIAl9CiB9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCA1MjIwNWNjNzE1OS4uYzhlY2FlZWE3Y2Yg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTI5NCw2ICsyOTQs OSBAQCBzdGF0aWMgV2luZG93QWdnICptYWtlX3dpbmRvd2FnZyhMaXN0ICp0bGlzdCwgV2luZG93 Q2xhdXNlICp3YywKIAkJCQkJCQkJIFJQUlBhdHRlcm4gKmNvbXBpbGVkUGF0dGVybiwKIAkJCQkJ CQkJIExpc3QgKmRlZmluZUNsYXVzZSwKIAkJCQkJCQkJIEJpdG1hcHNldCAqZGVmaW5lTWF0Y2hT dGFydERlcGVuZGVudCwKKwkJCQkJCQkJIFJQUk5hdk9mZnNldEtpbmQgbmF2TWF4T2Zmc2V0S2lu ZCwgaW50NjQgbmF2TWF4T2Zmc2V0LAorCQkJCQkJCQkgYm9vbCBoYXNGaXJzdE5hdiwKKwkJCQkJ CQkJIFJQUk5hdk9mZnNldEtpbmQgbmF2Rmlyc3RPZmZzZXRLaW5kLCBpbnQ2NCBuYXZGaXJzdE9m ZnNldCwKIAkJCQkJCQkJIExpc3QgKnF1YWwsIGJvb2wgdG9wV2luZG93LAogCQkJCQkJCQkgUGxh biAqbGVmdHRyZWUpOwogc3RhdGljIEdyb3VwICptYWtlX2dyb3VwKExpc3QgKnRsaXN0LCBMaXN0 ICpxdWFsLCBpbnQgbnVtR3JvdXBDb2xzLApAQCAtMjQ2NCwxMyArMjQ2NywyMCBAQCBjcmVhdGVf bWlubWF4YWdnX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1pbk1heEFnZ1BhdGggKmJlc3RfcGF0 aCkKIH0KIAogLyoKLSAqIE5hdk9mZnNldENvbnRleHQgLSBjb250ZXh0IGZvciBjb21wdXRlX25h dl9vZmZzZXRzIHdhbGtlci4KKyAqIERlZmluZU1ldGFkYXRhQ29udGV4dCAtIGNvbnRleHQgZm9y IGNvbXB1dGVfZGVmaW5lX21ldGFkYXRhIHdhbGtlci4KICAqCi0gKiBDb2xsZWN0cyBib3RoIGJh Y2t3YXJkIHJlYWNoIChQUkVWLCBMQVNULXdpdGgtb2Zmc2V0LCBjb21wb3VuZAotICogUFJFVl9M QVNUL05FWFRfTEFTVCkgYW5kIGZvcndhcmQtZnJvbS1tYXRjaC1zdGFydCByZWFjaCAoRklSU1Qs Ci0gKiBjb21wb3VuZCBQUkVWX0ZJUlNUL05FWFRfRklSU1QpIGluIGEgc2luZ2xlIHRyZWUgd2Fs ay4KKyAqIENvbGxlY3RzIHRocmVlIHBpZWNlcyBvZiBtZXRhZGF0YSBmcm9tIHRoZSBERUZJTkUg Y2xhdXNlIGluIGEgc2luZ2xlCisgKiB0cmVlIHdhbGsgcGVyIHZhcmlhYmxlOgorICogICAtIGJh Y2t3YXJkIHJlYWNoIChQUkVWLCBMQVNULXdpdGgtb2Zmc2V0LCBjb21wb3VuZCBQUkVWX0xBU1Qv TkVYVF9MQVNUKQorICogICAtIGZvcndhcmQtZnJvbS1tYXRjaC1zdGFydCByZWFjaCAoRklSU1Qs IGNvbXBvdW5kIFBSRVZfRklSU1QvTkVYVF9GSVJTVCkKKyAqICAgLSBwZXItdmFyaWFibGUgbWF0 Y2hfc3RhcnQgZGVwZW5kZW5jeSAodmFyaWFibGVzIGNvbnRhaW5pbmcgRklSU1QsCisgKiAgICAg TEFTVC13aXRoLW9mZnNldCwgb3IgY29tcG91bmQgUFJFVl9GSVJTVC9ORVhUX0ZJUlNUL1BSRVZf TEFTVC8KKyAqICAgICBORVhUX0xBU1Qtd2l0aC1vZmZzZXQgcmVxdWlyZSBwZXItY29udGV4dCBy ZS1ldmFsdWF0aW9uKQorICoKKyAqIFRoZSBkcml2ZXIgc2V0cyBjdXJWYXJJZHggdG8gdGhlIGlu ZGV4IG9mIHRoZSB2YXJpYWJsZSBiZWluZyB3YWxrZWQKKyAqIGJlZm9yZSBlYWNoIGludm9jYXRp b247IHRoZSB3YWxrZXIgdXNlcyBpdCB0byBwb3B1bGF0ZSBtYXRjaFN0YXJ0RGVwZW5kZW50Lgog ICovCi10eXBlZGVmIHN0cnVjdCBOYXZPZmZzZXRDb250ZXh0Cit0eXBlZGVmIHN0cnVjdCBEZWZp bmVNZXRhZGF0YUNvbnRleHQKIHsKIAlpbnQ2NAkJbWF4T2Zmc2V0OwkJLyogbWF4IFBSRVYvTEFT VCBiYWNrd2FyZCBvZmZzZXQgKD49IDApICovCiAJYm9vbAkJbWF4TmVlZHNFdmFsOwkvKiBub24t Y29uc3RhbnQgUFJFVi9MQVNUIG9mZnNldCBmb3VuZCAqLwpAQCAtMjQ3OSw3ICsyNDg5LDEwIEBA IHR5cGVkZWYgc3RydWN0IE5hdk9mZnNldENvbnRleHQKIAkJCQkJCQkJICogUFJFVl9GSVJTVCkg Ki8KIAlib29sCQloYXNGaXJzdDsJCS8qIGFueSBGSVJTVCBub2RlIGZvdW5kICovCiAJYm9vbAkJ Zmlyc3ROZWVkc0V2YWw7IC8qIG5vbi1jb25zdGFudCBGSVJTVCBvZmZzZXQgZm91bmQgKi8KLX0g TmF2T2Zmc2V0Q29udGV4dDsKKwlpbnQJCQljdXJWYXJJZHg7CQkvKiBERUZJTkUgdmFyaWFibGUg Y3VycmVudGx5IGJlaW5nIHdhbGtlZCAqLworCUJpdG1hcHNldCAgKm1hdGNoU3RhcnREZXBlbmRl bnQ7CS8qIHZhcmlhYmxlcyB0aGF0IGRlcGVuZCBvbgorCQkJCQkJCQkJCSAqIG1hdGNoX3N0YXJ0 ICovCit9IERlZmluZU1ldGFkYXRhQ29udGV4dDsKIAogLyoKICAqIEhlbHBlcjogZXh0cmFjdCBj b25zdGFudCBvZmZzZXQgZnJvbSBhbiBleHByZXNzaW9uLCBoYW5kbGluZyBOVUxML25lZ2F0aXZl LgpAQCAtMjUxNCwxNzUgKzI1MjcsMjA3IEBAIGV4dHJhY3RfY29uc3Rfb2Zmc2V0KEV4cHIgKmV4 cHIsIGludDY0IGRlZmF1bHRPZmZzZXQsIGludDY0ICpyZXN1bHQpCiB9CiAKIC8qCi0gKiBuYXZf b2Zmc2V0X3dhbGtlcgotICoJCUV4cHJlc3Npb24gdHJlZSB3YWxrZXIgZm9yIGNvbXB1dGVfbmF2 X29mZnNldHMuCisgKiB2aXNpdF9uYXZfcGxhbgorICoJCW5hdl90cmF2ZXJzYWxfd2Fsa2VyIGNh bGxiYWNrIChOYXZWaXNpdEZuKSBmb3IgdGhlIHBsYW5uZXIgc2lkZS4KKyAqCQlBdCBlYWNoIFJQ Uk5hdkV4cHIgaW4gYSBERUZJTkUgZXhwcmVzc2lvbiwgY29tcHV0ZXM6CisgKgorICoJCSAgMS4g YmFja3dhcmQgcmVhY2ggKG1heE9mZnNldCkgZm9yIHR1cGxlc3RvcmUgdHJpbToKKyAqCQkJIC0g UFJFVih2LCBOKSwgTEFTVCh2LCBOKSAgICAgICAgICAgICAgLT4gTiAoZGVmYXVsdCAxKQorICoJ CQkgLSBjb21wb3VuZCBQUkVWX0xBU1QodiwgTiwgTSkgICAgICAgICAtPiBOICsgTSAob3ZlcmZs b3cgLT4gbWF4T3ZlcmZsb3cpCisgKgkJCSAtIGNvbXBvdW5kIE5FWFRfTEFTVCh2LCBOLCBNKSAg ICAgICAgIC0+IG1heChOIC0gTSwgMCkKICAqCi0gKiBGb3IgZWFjaCBSUFJOYXZFeHByIGZvdW5k LCBleHRyYWN0IGl0cyBjb25zdGFudCBvZmZzZXQocykgYW5kIHVwZGF0ZSB0aGUKLSAqIE5hdk9m ZnNldENvbnRleHQgd2l0aCB0aGUgbWF4aW11bSBiYWNrd2FyZCByZWFjaCAobWF4T2Zmc2V0KSBh bmQgbWluaW11bQotICogZm9yd2FyZCByZWFjaCAoZmlyc3RPZmZzZXQpLiAgSGFuZGxlcyBzaW1w bGUgbmF2aWdhdGlvbiAoUFJFViwgTkVYVCwKLSAqIEZJUlNULCBMQVNUKSBhbmQgY29tcG91bmQg Zm9ybXMgKFBSRVZfRklSU1QsIE5FWFRfRklSU1QsIFBSRVZfTEFTVCwKLSAqIE5FWFRfTEFTVCkg YnkgY29tYmluaW5nIGlubmVyIGFuZCBvdXRlciBvZmZzZXRzLgorICoJCSAgMi4gZm9yd2FyZCBy ZWFjaCAoZmlyc3RPZmZzZXQpIGZvciB0dXBsZXN0b3JlIHRyaW06CisgKgkJCSAtIEZJUlNUKHYs IE4pICAgICAgICAgICAgICAgICAgICAgICAgIC0+IE4gKGRlZmF1bHQgMCkKKyAqCQkJIC0gY29t cG91bmQgUFJFVl9GSVJTVCh2LCBOLCBNKSAgICAgICAgLT4gTiAtIE0gKG1heSBiZSBuZWdhdGl2 ZSkKKyAqCQkJIC0gY29tcG91bmQgTkVYVF9GSVJTVCh2LCBOLCBNKSAgICAgICAgLT4gTiArIE0K ICAqCi0gKiBOb24tY29uc3RhbnQgb2Zmc2V0cyBzZXQgbWF4TmVlZHNFdmFsIG9yIGZpcnN0TmVl ZHNFdmFsLiAgT3ZlcmZsb3cgc2V0cwotICogbWF4T3ZlcmZsb3cgb3IgZmlyc3RPdmVyZmxvdyBm b3IgUkVUQUlOX0FMTCBmYWxsYmFjay4KKyAqCQkgIDMuIHBlci12YXJpYWJsZSBtYXRjaF9zdGFy dCBkZXBlbmRlbmN5IGZvciBhYnNvcnB0aW9uIHN1cHByZXNzaW9uOgorICoJCQkgb3V0ZXIgbmF2 IGtpbmRzIHRoYXQgcmVhY2ggbWF0Y2hfc3RhcnQgKEZJUlNULCBMQVNULXdpdGgtb2Zmc2V0LAor ICoJCQkgUFJFVl9GSVJTVCwgTkVYVF9GSVJTVCwgUFJFVl9MQVNUL05FWFRfTEFTVC13aXRoLW9m ZnNldCkgYWRkCisgKgkJCSBjdXJWYXJJZHggdG8gbWF0Y2hTdGFydERlcGVuZGVudC4KKyAqCisg KiBDb25zdGFudCBvZmZzZXRzIGFyZSBleHRyYWN0ZWQgdmlhIGV4dHJhY3RfY29uc3Rfb2Zmc2V0 OyBub24tY29uc3RhbnQKKyAqIG9mZnNldHMgc2V0IG1heE5lZWRzRXZhbCAvIGZpcnN0TmVlZHNF dmFsIHNvIHRoZSBleGVjdXRvciBjYW4gcmVzb2x2ZQorICogdGhlbSBhdCBpbml0IHRpbWUgKHNl ZSB2aXNpdF9uYXZfZXhlYykuICBDbGFzc2lmaWNhdGlvbiB1c2VzIG9ubHkgdGhlCisgKiBvdXRl ciBuYXYga2luZDogcGFyc2VyIG5lc3RpbmcgcmVzdHJpY3Rpb25zIHByZXZlbnQgRklSU1QvTEFT VCBpbnNpZGUKKyAqIGEgUFJFVi9ORVhUIHZhbHVlIHN1YmV4cHJlc3Npb24uCiAgKi8KLXN0YXRp YyBib29sCi1uYXZfb2Zmc2V0X3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjdHgpCitzdGF0aWMg dm9pZAordmlzaXRfbmF2X3BsYW4oTmF2VHJhdmVyc2FsICp0LCBSUFJOYXZFeHByICpuYXYpCiB7 Ci0JTmF2T2Zmc2V0Q29udGV4dCAqY29udGV4dCA9IChOYXZPZmZzZXRDb250ZXh0ICopIGN0eDsK KwlEZWZpbmVNZXRhZGF0YUNvbnRleHQgKmNvbnRleHQgPSAoRGVmaW5lTWV0YWRhdGFDb250ZXh0 ICopIHQtPmRhdGE7CiAKLQlpZiAobm9kZSA9PSBOVUxMKQotCQlyZXR1cm4gZmFsc2U7CisJLyoK KwkgKiBQYXJzZXIgZ3VhcmFudGVlOiBieSB0aGUgdGltZSB0aGUgcGxhbm5lciBzZWVzIGEgREVG SU5FIGV4cHJlc3Npb24sCisJICogY29tcG91bmQgbmVzdGluZyBoYXMgYmVlbiBmbGF0dGVuZWQg aW50byBhIHNpbmdsZSBSUFJOYXZFeHByIGFuZCBhbnkKKwkgKiBvdGhlciBSUFJOYXZFeHByIG5l c3RpbmcgaGFzIGJlZW4gcmVqZWN0ZWQuICBTbyBuYXYncyBkaXJlY3QgY2hpbGQKKwkgKiBmaWVs ZHMgYXJlIG5vdCB0aGVtc2VsdmVzIFJQUk5hdkV4cHIgbm9kZXMsIGFuZCBvdXRlci1raW5kIGRp c3BhdGNoCisJICogYmVsb3cgaXMgc3VmZmljaWVudC4KKwkgKi8KKwlBc3NlcnQobmF2LT5hcmcg PT0gTlVMTCB8fCAhSXNBKG5hdi0+YXJnLCBSUFJOYXZFeHByKSk7CisJQXNzZXJ0KG5hdi0+b2Zm c2V0X2FyZyA9PSBOVUxMIHx8ICFJc0EobmF2LT5vZmZzZXRfYXJnLCBSUFJOYXZFeHByKSk7CisJ QXNzZXJ0KG5hdi0+Y29tcG91bmRfb2Zmc2V0X2FyZyA9PSBOVUxMIHx8CisJCSAgICFJc0EobmF2 LT5jb21wb3VuZF9vZmZzZXRfYXJnLCBSUFJOYXZFeHByKSk7CiAKLQlpZiAoSXNBKG5vZGUsIFJQ Uk5hdkV4cHIpKQorCS8qCisJICogU2ltcGxlIFBSRVYodiwgTikgYW5kIExBU1QodiwgTik6IGJh Y2t3YXJkIHJlYWNoIGZyb20gY3VycmVudHBvcy4gTEFTVAorCSAqIHdpdGhvdXQgb2Zmc2V0ID0g Y3VycmVudHBvcywgbm8gYmFja3dhcmQgcmVhY2guIE5FWFQ6IGZvcndhcmQgb25seSwKKwkgKiBp cnJlbGV2YW50IGZvciB0cmltLgorCSAqLworCWlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVW IHx8CisJCShuYXYtPmtpbmQgPT0gUlBSX05BVl9MQVNUICYmIG5hdi0+b2Zmc2V0X2FyZyAhPSBO VUxMKSkKIAl7Ci0JCVJQUk5hdkV4cHIgKm5hdiA9IChSUFJOYXZFeHByICopIG5vZGU7Ci0KLQkJ LyoKLQkJICogU2ltcGxlIFBSRVYodiwgTikgYW5kIExBU1QodiwgTik6IGJhY2t3YXJkIHJlYWNo IGZyb20gY3VycmVudHBvcy4KLQkJICogTEFTVCB3aXRob3V0IG9mZnNldCA9IGN1cnJlbnRwb3Ms IG5vIGJhY2t3YXJkIHJlYWNoLiBORVhUOiBmb3J3YXJkCi0JCSAqIG9ubHksIGlycmVsZXZhbnQg Zm9yIHRyaW0uCi0JCSAqLwotCQlpZiAobmF2LT5raW5kID09IFJQUl9OQVZfUFJFViB8fAotCQkJ KG5hdi0+a2luZCA9PSBSUFJfTkFWX0xBU1QgJiYgbmF2LT5vZmZzZXRfYXJnICE9IE5VTEwpKQor CQlpZiAoIWNvbnRleHQtPm1heE5lZWRzRXZhbCkKIAkJewotCQkJaWYgKCFjb250ZXh0LT5tYXhO ZWVkc0V2YWwpCi0JCQl7Ci0JCQkJaW50NjQJCW9mZnNldDsKKwkJCWludDY0CQlvZmZzZXQ7CiAK LQkJCQlpZiAoZXh0cmFjdF9jb25zdF9vZmZzZXQobmF2LT5vZmZzZXRfYXJnLCAxLCAmb2Zmc2V0 KSkKLQkJCQkJY29udGV4dC0+bWF4T2Zmc2V0ID0gTWF4KGNvbnRleHQtPm1heE9mZnNldCwgb2Zm c2V0KTsKLQkJCQllbHNlCi0JCQkJCWNvbnRleHQtPm1heE5lZWRzRXZhbCA9IHRydWU7Ci0JCQl9 CisJCQlpZiAoZXh0cmFjdF9jb25zdF9vZmZzZXQobmF2LT5vZmZzZXRfYXJnLCAxLCAmb2Zmc2V0 KSkKKwkJCQljb250ZXh0LT5tYXhPZmZzZXQgPSBNYXgoY29udGV4dC0+bWF4T2Zmc2V0LCBvZmZz ZXQpOworCQkJZWxzZQorCQkJCWNvbnRleHQtPm1heE5lZWRzRXZhbCA9IHRydWU7CiAJCX0KKwl9 CiAKLQkJLyoKLQkJICogU2ltcGxlIEZJUlNUKHYsIE4pOiBmb3J3YXJkIHJlYWNoIGZyb20gbWF0 Y2hfc3RhcnQuIFNtYWxsZXIgTiBtZWFucwotCQkgKiBvbGRlciByb3dzIG5lZWRlZC4KLQkJICov Ci0JCWlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9GSVJTVCkKLQkJewotCQkJY29udGV4dC0+aGFz Rmlyc3QgPSB0cnVlOworCS8qCisJICogU2ltcGxlIEZJUlNUKHYsIE4pOiBmb3J3YXJkIHJlYWNo IGZyb20gbWF0Y2hfc3RhcnQuIFNtYWxsZXIgTiBtZWFucworCSAqIG9sZGVyIHJvd3MgbmVlZGVk LgorCSAqLworCWlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9GSVJTVCkKKwl7CisJCWNvbnRleHQt Pmhhc0ZpcnN0ID0gdHJ1ZTsKIAotCQkJaWYgKCFjb250ZXh0LT5maXJzdE5lZWRzRXZhbCkKLQkJ CXsKLQkJCQlpbnQ2NAkJb2Zmc2V0OworCQlpZiAoIWNvbnRleHQtPmZpcnN0TmVlZHNFdmFsKQor CQl7CisJCQlpbnQ2NAkJb2Zmc2V0OwogCi0JCQkJaWYgKGV4dHJhY3RfY29uc3Rfb2Zmc2V0KG5h di0+b2Zmc2V0X2FyZywgMCwgJm9mZnNldCkpCi0JCQkJCWNvbnRleHQtPmZpcnN0T2Zmc2V0ID0g TWluKGNvbnRleHQtPmZpcnN0T2Zmc2V0LCBvZmZzZXQpOwotCQkJCWVsc2UKLQkJCQkJY29udGV4 dC0+Zmlyc3ROZWVkc0V2YWwgPSB0cnVlOwotCQkJfQorCQkJaWYgKGV4dHJhY3RfY29uc3Rfb2Zm c2V0KG5hdi0+b2Zmc2V0X2FyZywgMCwgJm9mZnNldCkpCisJCQkJY29udGV4dC0+Zmlyc3RPZmZz ZXQgPSBNaW4oY29udGV4dC0+Zmlyc3RPZmZzZXQsIG9mZnNldCk7CisJCQllbHNlCisJCQkJY29u dGV4dC0+Zmlyc3ROZWVkc0V2YWwgPSB0cnVlOwogCQl9CisJfQogCi0JCS8qCi0JCSAqIENvbXBv dW5kIFBSRVZfTEFTVCAvIE5FWFRfTEFTVDogYmFzZSA9IGN1cnJlbnRwb3MuIFBSRVZfTEFTVCh2 LCBOLAotCQkgKiBNKTogdGFyZ2V0ID0gY3VycmVudHBvcyAtIE4gLSBNIC0+IGxvb2tiYWNrID0g TiArIE0gTkVYVF9MQVNUKHYsIE4sCi0JCSAqIE0pOiB0YXJnZXQgPSBjdXJyZW50cG9zIC0gTiAr IE0gLT4gbG9va2JhY2sgPSBtYXgoTiAtIE0sIDApCi0JCSAqLwotCQlpZiAobmF2LT5raW5kID09 IFJQUl9OQVZfUFJFVl9MQVNUIHx8Ci0JCQluYXYtPmtpbmQgPT0gUlBSX05BVl9ORVhUX0xBU1Qp CisJLyoKKwkgKiBDb21wb3VuZCBQUkVWX0xBU1QgLyBORVhUX0xBU1Q6IGJhc2UgPSBjdXJyZW50 cG9zLiBQUkVWX0xBU1QodiwgTiwgTSk6CisJICogdGFyZ2V0ID0gY3VycmVudHBvcyAtIE4gLSBN IC0+IGxvb2tiYWNrID0gTiArIE0gTkVYVF9MQVNUKHYsIE4sIE0pOgorCSAqIHRhcmdldCA9IGN1 cnJlbnRwb3MgLSBOICsgTSAtPiBsb29rYmFjayA9IG1heChOIC0gTSwgMCkKKwkgKi8KKwlpZiAo bmF2LT5raW5kID09IFJQUl9OQVZfUFJFVl9MQVNUIHx8CisJCW5hdi0+a2luZCA9PSBSUFJfTkFW X05FWFRfTEFTVCkKKwl7CisJCWlmICghY29udGV4dC0+bWF4TmVlZHNFdmFsKQogCQl7Ci0JCQlp ZiAoIWNvbnRleHQtPm1heE5lZWRzRXZhbCkKLQkJCXsKLQkJCQlpbnQ2NAkJaW5uZXIsCi0JCQkJ CQkJb3V0ZXIsCi0JCQkJCQkJY29tYmluZWQ7CisJCQlpbnQ2NAkJaW5uZXI7CisJCQlpbnQ2NAkJ b3V0ZXI7CisJCQlpbnQ2NAkJcmVhY2g7CiAKLQkJCQlpZiAoZXh0cmFjdF9jb25zdF9vZmZzZXQo bmF2LT5vZmZzZXRfYXJnLCAwLCAmaW5uZXIpICYmCi0JCQkJCWV4dHJhY3RfY29uc3Rfb2Zmc2V0 KG5hdi0+Y29tcG91bmRfb2Zmc2V0X2FyZywgMSwgJm91dGVyKSkKKwkJCWlmIChleHRyYWN0X2Nv bnN0X29mZnNldChuYXYtPm9mZnNldF9hcmcsIDAsICZpbm5lcikgJiYKKwkJCQlleHRyYWN0X2Nv bnN0X29mZnNldChuYXYtPmNvbXBvdW5kX29mZnNldF9hcmcsIDEsICZvdXRlcikpCisJCQl7CisJ CQkJaWYgKG5hdi0+a2luZCA9PSBSUFJfTkFWX1BSRVZfTEFTVCkKIAkJCQl7Ci0JCQkJCWlmIChu YXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWX0xBU1QpCi0JCQkJCXsKLQkJCQkJCWlmIChwZ19hZGRf czY0X292ZXJmbG93KGlubmVyLCBvdXRlciwgJmNvbWJpbmVkKSkKLQkJCQkJCXsKLQkJCQkJCQlj b250ZXh0LT5tYXhPdmVyZmxvdyA9IHRydWU7Ci0JCQkJCQkJcmV0dXJuIGZhbHNlOwotCQkJCQkJ fQotCQkJCQl9CisJCQkJCWlmIChwZ19hZGRfczY0X292ZXJmbG93KGlubmVyLCBvdXRlciwgJnJl YWNoKSkKKwkJCQkJCWNvbnRleHQtPm1heE92ZXJmbG93ID0gdHJ1ZTsKIAkJCQkJZWxzZQotCQkJ CQkJY29tYmluZWQgPSAoaW5uZXIgPiBvdXRlcikgPyBpbm5lciAtIG91dGVyIDogMDsKLQotCQkJ CQljb250ZXh0LT5tYXhPZmZzZXQgPSBNYXgoY29udGV4dC0+bWF4T2Zmc2V0LCBjb21iaW5lZCk7 CisJCQkJCQljb250ZXh0LT5tYXhPZmZzZXQgPSBNYXgoY29udGV4dC0+bWF4T2Zmc2V0LCByZWFj aCk7CiAJCQkJfQogCQkJCWVsc2UKLQkJCQkJY29udGV4dC0+bWF4TmVlZHNFdmFsID0gdHJ1ZTsK KwkJCQl7CisJCQkJCXJlYWNoID0gTWF4KGlubmVyIC0gb3V0ZXIsIDApOworCQkJCQljb250ZXh0 LT5tYXhPZmZzZXQgPSBNYXgoY29udGV4dC0+bWF4T2Zmc2V0LCByZWFjaCk7CisJCQkJfQogCQkJ fQorCQkJZWxzZQorCQkJCWNvbnRleHQtPm1heE5lZWRzRXZhbCA9IHRydWU7CiAJCX0KKwl9CiAK LQkJLyoKLQkJICogQ29tcG91bmQgUFJFVl9GSVJTVCAvIE5FWFRfRklSU1Q6IGJhc2UgPSBtYXRj aF9zdGFydC4gUFJFVl9GSVJTVCh2LAotCQkgKiBOLCBNKTogdGFyZ2V0ID0gbWF0Y2hfc3RhcnQg KyBOIC0gTSBORVhUX0ZJUlNUKHYsIE4sIE0pOiB0YXJnZXQgPQotCQkgKiBtYXRjaF9zdGFydCAr IE4gKyBNIFRoZSBjb21iaW5lZCBvZmZzZXQgKE4rLy1NKSBmcm9tIG1hdGNoX3N0YXJ0Ci0JCSAq IGNhbiBiZSBuZWdhdGl2ZSwgbWVhbmluZyByb3dzIGJlZm9yZSBtYXRjaF9zdGFydCBhcmUgbmVl ZGVkLgotCQkgKi8KLQkJaWYgKG5hdi0+a2luZCA9PSBSUFJfTkFWX1BSRVZfRklSU1QgfHwKLQkJ CW5hdi0+a2luZCA9PSBSUFJfTkFWX05FWFRfRklSU1QpCisJLyoKKwkgKiBDb21wb3VuZCBQUkVW X0ZJUlNUIC8gTkVYVF9GSVJTVDogYmFzZSA9IG1hdGNoX3N0YXJ0LiBQUkVWX0ZJUlNUKHYsIE4s CisJICogTSk6IHRhcmdldCA9IG1hdGNoX3N0YXJ0ICsgTiAtIE0gTkVYVF9GSVJTVCh2LCBOLCBN KTogdGFyZ2V0ID0KKwkgKiBtYXRjaF9zdGFydCArIE4gKyBNIFRoZSBjb21iaW5lZCBvZmZzZXQg KE4rLy1NKSBmcm9tIG1hdGNoX3N0YXJ0IGNhbiBiZQorCSAqIG5lZ2F0aXZlLCBtZWFuaW5nIHJv d3MgYmVmb3JlIG1hdGNoX3N0YXJ0IGFyZSBuZWVkZWQuCisJICovCisJaWYgKG5hdi0+a2luZCA9 PSBSUFJfTkFWX1BSRVZfRklSU1QgfHwKKwkJbmF2LT5raW5kID09IFJQUl9OQVZfTkVYVF9GSVJT VCkKKwl7CisJCWNvbnRleHQtPmhhc0ZpcnN0ID0gdHJ1ZTsKKworCQlpZiAoIWNvbnRleHQtPmZp cnN0TmVlZHNFdmFsKQogCQl7Ci0JCQljb250ZXh0LT5oYXNGaXJzdCA9IHRydWU7CisJCQlpbnQ2 NAkJaW5uZXI7CisJCQlpbnQ2NAkJb3V0ZXI7CisJCQlpbnQ2NAkJcmVhY2g7CiAKLQkJCWlmICgh Y29udGV4dC0+Zmlyc3ROZWVkc0V2YWwpCisJCQlpZiAoZXh0cmFjdF9jb25zdF9vZmZzZXQobmF2 LT5vZmZzZXRfYXJnLCAwLCAmaW5uZXIpICYmCisJCQkJZXh0cmFjdF9jb25zdF9vZmZzZXQobmF2 LT5jb21wb3VuZF9vZmZzZXRfYXJnLCAxLCAmb3V0ZXIpKQogCQkJewotCQkJCWludDY0CQlpbm5l ciwKLQkJCQkJCQlvdXRlciwKLQkJCQkJCQljb21iaW5lZDsKLQotCQkJCWlmIChleHRyYWN0X2Nv bnN0X29mZnNldChuYXYtPm9mZnNldF9hcmcsIDAsICZpbm5lcikgJiYKLQkJCQkJZXh0cmFjdF9j b25zdF9vZmZzZXQobmF2LT5jb21wb3VuZF9vZmZzZXRfYXJnLCAxLCAmb3V0ZXIpKQorCQkJCWlm IChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWX0ZJUlNUKQogCQkJCXsKLQkJCQkJaWYgKG5hdi0+ a2luZCA9PSBSUFJfTkFWX1BSRVZfRklSU1QpCi0JCQkJCXsKLQkJCQkJCS8qCi0JCQkJCQkgKiBj b21iaW5lZCA9IGlubmVyIC0gb3V0ZXIuICBCb3RoIGFyZSBub24tbmVnYXRpdmUsCi0JCQkJCQkg KiBzbyB0aGUgcmVzdWx0ID49IC1JTlQ2NF9NQVgsIHdoaWNoIGNhbm5vdCB1bmRlcmZsb3cKLQkJ CQkJCSAqIGludDY0LiAgTm8gb3ZlcmZsb3cgY2hlY2sgbmVlZGVkLgotCQkJCQkJICovCi0JCQkJ CQljb21iaW5lZCA9IGlubmVyIC0gb3V0ZXI7Ci0JCQkJCX0KLQkJCQkJZWxzZQotCQkJCQl7Ci0J CQkJCQkvKgotCQkJCQkJICogTkVYVF9GSVJTVDogY29tYmluZWQgPSBpbm5lciArIG91dGVyLiAg VGhpcyBjYW4KLQkJCQkJCSAqIG92ZXJmbG93LCBidXQgdGhlIHJlc3VsdCBpcyBhbHdheXMgPj0g MCwgc28gaXQKLQkJCQkJCSAqIG5ldmVyIHVwZGF0ZXMgZmlyc3RPZmZzZXQgKHdoaWNoIHRyYWNr cyB0aGUKLQkJCQkJCSAqIG1pbmltdW0pLiAgQ2xhbXAgdG8gSU5UNjRfTUFYIG9uIG92ZXJmbG93 LgotCQkJCQkJICovCi0JCQkJCQlpZiAocGdfYWRkX3M2NF9vdmVyZmxvdyhpbm5lciwgb3V0ZXIs ICZjb21iaW5lZCkpCi0JCQkJCQkJY29tYmluZWQgPSBJTlQ2NF9NQVg7Ci0JCQkJCX0KLQotCQkJ CQljb250ZXh0LT5maXJzdE9mZnNldCA9IE1pbihjb250ZXh0LT5maXJzdE9mZnNldCwgY29tYmlu ZWQpOworCQkJCQkvKgorCQkJCQkgKiByZWFjaCA9IGlubmVyIC0gb3V0ZXIuICBCb3RoIGFyZSBu b24tbmVnYXRpdmUsIHNvIHRoZQorCQkJCQkgKiByZXN1bHQgPj0gLUlOVDY0X01BWCwgd2hpY2gg Y2Fubm90IHVuZGVyZmxvdyBpbnQ2NC4gTm8KKwkJCQkJICogb3ZlcmZsb3cgY2hlY2sgbmVlZGVk LgorCQkJCQkgKi8KKwkJCQkJcmVhY2ggPSBpbm5lciAtIG91dGVyOwogCQkJCX0KIAkJCQllbHNl Ci0JCQkJCWNvbnRleHQtPmZpcnN0TmVlZHNFdmFsID0gdHJ1ZTsKKwkJCQl7CisJCQkJCS8qCisJ CQkJCSAqIE5FWFRfRklSU1Q6IHJlYWNoID0gaW5uZXIgKyBvdXRlci4gIFRoaXMgY2FuIG92ZXJm bG93LAorCQkJCQkgKiBidXQgdGhlIHJlc3VsdCBpcyBhbHdheXMgPj0gMCwgc28gaXQgbmV2ZXIg dXBkYXRlcworCQkJCQkgKiBmaXJzdE9mZnNldCAod2hpY2ggdHJhY2tzIHRoZSBtaW5pbXVtKS4g IENsYW1wIHRvCisJCQkJCSAqIElOVDY0X01BWCBvbiBvdmVyZmxvdy4KKwkJCQkJICovCisJCQkJ CWlmIChwZ19hZGRfczY0X292ZXJmbG93KGlubmVyLCBvdXRlciwgJnJlYWNoKSkKKwkJCQkJCXJl YWNoID0gSU5UNjRfTUFYOworCQkJCX0KKworCQkJCWNvbnRleHQtPmZpcnN0T2Zmc2V0ID0gTWlu KGNvbnRleHQtPmZpcnN0T2Zmc2V0LCByZWFjaCk7CiAJCQl9CisJCQllbHNlCisJCQkJY29udGV4 dC0+Zmlyc3ROZWVkc0V2YWwgPSB0cnVlOwogCQl9Ci0KLQkJLyogRG9uJ3Qgd2FsayBpbnRvIFJQ Uk5hdkV4cHIgY2hpbGRyZW4gKi8KLQkJcmV0dXJuIGZhbHNlOwogCX0KIAotCXJldHVybiBleHBy ZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIG5hdl9vZmZzZXRfd2Fsa2VyLCBjdHgpOworCS8qIE1h dGNoLXN0YXJ0IGRlcGVuZGVuY3k6IGNsYXNzaWZ5IHRoZSBvdXRlciBuYXYga2luZC4gKi8KKwlp ZiAobmF2LT5raW5kID09IFJQUl9OQVZfRklSU1QgfHwKKwkJKG5hdi0+a2luZCA9PSBSUFJfTkFW X0xBU1QgJiYgbmF2LT5vZmZzZXRfYXJnICE9IE5VTEwpIHx8CisJCW5hdi0+a2luZCA9PSBSUFJf TkFWX1BSRVZfRklSU1QgfHwKKwkJbmF2LT5raW5kID09IFJQUl9OQVZfTkVYVF9GSVJTVCB8fAor CQkoKG5hdi0+a2luZCA9PSBSUFJfTkFWX1BSRVZfTEFTVCB8fAorCQkgIG5hdi0+a2luZCA9PSBS UFJfTkFWX05FWFRfTEFTVCkgJiYKKwkJIG5hdi0+b2Zmc2V0X2FyZyAhPSBOVUxMKSkKKwkJY29u dGV4dC0+bWF0Y2hTdGFydERlcGVuZGVudCA9CisJCQlibXNfYWRkX21lbWJlcihjb250ZXh0LT5t YXRjaFN0YXJ0RGVwZW5kZW50LAorCQkJCQkJICAgY29udGV4dC0+Y3VyVmFySWR4KTsKIH0KIAog LyoKLSAqIGNvbXB1dGVfbmF2X29mZnNldHMKLSAqCQlDb21wdXRlIG5hdmlnYXRpb24gb2Zmc2V0 cyBmb3IgdHVwbGVzdG9yZSB0cmltIGluIGEgc2luZ2xlIHBhc3MuCisgKiBjb21wdXRlX2RlZmlu ZV9tZXRhZGF0YQorICoJCUNvbXB1dGUgbmF2aWdhdGlvbiBvZmZzZXRzIGFuZCBtYXRjaF9zdGFy dCBkZXBlbmRlbmN5IGZvciB0aGUKKyAqCQlERUZJTkUgY2xhdXNlIGluIGEgc2luZ2xlIHBhc3Mg cGVyIHZhcmlhYmxlLgogICoKLSAqIFdhbGtzIGFsbCBERUZJTkUgY2xhdXNlIGV4cHJlc3Npb25z IG9uY2UsIGNvbXB1dGluZzoKKyAqIFdhbGtzIGVhY2ggREVGSU5FIHZhcmlhYmxlIGV4cHJlc3Np b24gb25jZSwgY29tcHV0aW5nOgogICogICAtIG1heE9mZnNldDogbWF4IGJhY2t3YXJkIHJlYWNo IGZyb20gUFJFViwgTEFTVC13aXRoLW9mZnNldCwKICAqICAgICBjb21wb3VuZCBQUkVWX0xBU1Qv TkVYVF9MQVNUCiAgKiAgIC0gaGFzRmlyc3QvZmlyc3RPZmZzZXQ6IG1pbiBmb3J3YXJkLWZyb20t bWF0Y2gtc3RhcnQgcmVhY2ggZnJvbQogICogICAgIEZJUlNULCBjb21wb3VuZCBQUkVWX0ZJUlNU L05FWFRfRklSU1QKKyAqICAgLSBtYXRjaFN0YXJ0RGVwZW5kZW50OiBiaXRtYXBzZXQgb2YgdmFy aWFibGUgaW5kaWNlcyB3aG9zZQorICogICAgIGV4cHJlc3Npb25zIGNvbnRhaW4gbmF2aWdhdGlv biB0aGF0IGRlcGVuZHMgb24gbWF0Y2hfc3RhcnQKKyAqICAgICAoRklSU1QsIExBU1Qtd2l0aC1v ZmZzZXQsIG9yIGNvbXBvdW5kIFBSRVZfRklSU1QvTkVYVF9GSVJTVC8KKyAqICAgICBQUkVWX0xB U1QvTkVYVF9MQVNULXdpdGgtb2Zmc2V0KS4gIFN1Y2ggdmFyaWFibGVzIHJlcXVpcmUKKyAqICAg ICBwZXItY29udGV4dCByZS1ldmFsdWF0aW9uIGR1cmluZyBORkEgcHJvY2Vzc2luZy4KICAqLwog c3RhdGljIHZvaWQKLWNvbXB1dGVfbmF2X29mZnNldHMoTGlzdCAqZGVmaW5lQ2xhdXNlLAotCQkJ CQlSUFJOYXZPZmZzZXRLaW5kICptYXhLaW5kLCBpbnQ2NCAqbWF4UmVzdWx0LAotCQkJCQlib29s ICpoYXNGaXJzdCwKLQkJCQkJUlBSTmF2T2Zmc2V0S2luZCAqZmlyc3RLaW5kLCBpbnQ2NCAqZmly c3RSZXN1bHQpCitjb21wdXRlX2RlZmluZV9tZXRhZGF0YShMaXN0ICpkZWZpbmVDbGF1c2UsCisJ CQkJCQlSUFJOYXZPZmZzZXRLaW5kICptYXhLaW5kLCBpbnQ2NCAqbWF4UmVzdWx0LAorCQkJCQkJ Ym9vbCAqaGFzRmlyc3QsCisJCQkJCQlSUFJOYXZPZmZzZXRLaW5kICpmaXJzdEtpbmQsIGludDY0 ICpmaXJzdFJlc3VsdCwKKwkJCQkJCUJpdG1hcHNldCAqKm1hdGNoU3RhcnREZXBlbmRlbnQpCiB7 Ci0JTmF2T2Zmc2V0Q29udGV4dCBjdHg7CisJRGVmaW5lTWV0YWRhdGFDb250ZXh0IGN0eDsKKwlO YXZUcmF2ZXJzYWwgdHJhdjsKIAlMaXN0Q2VsbCAgICpsYzsKIAogCWN0eC5tYXhPZmZzZXQgPSAw OwpAQCAtMjY5MSwxNCArMjczNiwyMiBAQCBjb21wdXRlX25hdl9vZmZzZXRzKExpc3QgKmRlZmlu ZUNsYXVzZSwKIAljdHguZmlyc3RPZmZzZXQgPSBJTlQ2NF9NQVg7CS8qIHNlbnRpbmVsOiBubyBG SVJTVCBmb3VuZCB5ZXQgKi8KIAljdHguaGFzRmlyc3QgPSBmYWxzZTsKIAljdHguZmlyc3ROZWVk c0V2YWwgPSBmYWxzZTsKKwljdHguY3VyVmFySWR4ID0gMDsKKwljdHgubWF0Y2hTdGFydERlcGVu ZGVudCA9IE5VTEw7CisKKwl0cmF2LnZpc2l0ID0gdmlzaXRfbmF2X3BsYW47CisJdHJhdi5kYXRh ID0gJmN0eDsKIAogCWZvcmVhY2gobGMsIGRlZmluZUNsYXVzZSkKIAl7CiAJCVRhcmdldEVudHJ5 ICp0ZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QobGMpOwogCi0JCW5hdl9vZmZzZXRfd2Fsa2Vy KChOb2RlICopIHRlLT5leHByLCAmY3R4KTsKKwkJbmF2X3RyYXZlcnNhbF93YWxrZXIoKE5vZGUg KikgdGUtPmV4cHIsICZ0cmF2KTsKKwkJY3R4LmN1clZhcklkeCsrOwogCX0KIAorCSptYXRjaFN0 YXJ0RGVwZW5kZW50ID0gY3R4Lm1hdGNoU3RhcnREZXBlbmRlbnQ7CisKIAkvKiBNYXggYmFja3dh cmQgb2Zmc2V0ICovCiAJaWYgKGN0eC5tYXhPdmVyZmxvdykKIAl7CkBAIC0yNzI1LDE1ICsyNzc4 LDExIEBAIGNvbXB1dGVfbmF2X29mZnNldHMoTGlzdCAqZGVmaW5lQ2xhdXNlLAogCQkJKmZpcnN0 S2luZCA9IFJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUw7CiAJCQkqZmlyc3RSZXN1bHQgPSAwOwog CQl9Ci0JCWVsc2UgaWYgKGN0eC5maXJzdE9mZnNldCA9PSBJTlQ2NF9NQVgpCi0JCXsKLQkJCSpm aXJzdEtpbmQgPSBSUFJfTkFWX09GRlNFVF9GSVhFRDsKLQkJCSpmaXJzdFJlc3VsdCA9IDA7CS8q IG9ubHkgaW1wbGljaXQgRklSU1QodikgKi8KLQkJfQogCQllbHNlCiAJCXsKIAkJCSpmaXJzdEtp bmQgPSBSUFJfTkFWX09GRlNFVF9GSVhFRDsKLQkJCSpmaXJzdFJlc3VsdCA9IGN0eC5maXJzdE9m ZnNldDsgLyogbWF5IGJlIG5lZ2F0aXZlICovCisJCQkqZmlyc3RSZXN1bHQgPSBjdHguZmlyc3RP ZmZzZXQ7IC8qIG1heSBiZSBuZWdhdGl2ZTsgSU5UNjRfTUFYIGlmCisJCQkJCQkJCQkJCSAqIG92 ZXJmbG93ZWQgKi8KIAkJfQogCX0KIAllbHNlCkBAIC0yNzQzLDgzICsyNzkyLDYgQEAgY29tcHV0 ZV9uYXZfb2Zmc2V0cyhMaXN0ICpkZWZpbmVDbGF1c2UsCiAJfQogfQogCi0vKgotICogaGFzX21h dGNoX3N0YXJ0X2RlcGVuZGVuY3kKLSAqCQlDaGVjayBpZiBhbiBleHByZXNzaW9uIHRyZWUgY29u dGFpbnMgbmF2aWdhdGlvbiB0aGF0IGRlcGVuZHMgb24KLSAqCQltYXRjaF9zdGFydDogRklSU1Qs IExBU1Qtd2l0aC1vZmZzZXQsIG9yIGNvbXBvdW5kIFBSRVZfRklSU1QvCi0gKgkJTkVYVF9GSVJT VC9QUkVWX0xBU1QvTkVYVF9MQVNUIHdpdGggb2Zmc2V0LiAgU3VjaCBleHByZXNzaW9ucwotICoJ CXJlcXVpcmUgcGVyLWNvbnRleHQgcmUtZXZhbHVhdGlvbiBkdXJpbmcgTkZBIHByb2Nlc3Npbmcu Ci0gKgotICogTEFTVCB3aXRob3V0IG9mZnNldCBhbHdheXMgcmVzb2x2ZXMgdG8gY3VycmVudHBv cyBhbmQgaXMKLSAqIG1hdGNoX3N0YXJ0LWluZGVwZW5kZW50LgotICovCi1zdGF0aWMgYm9vbAot aGFzX21hdGNoX3N0YXJ0X2RlcGVuZGVuY3koTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKLXsK LQlpZiAobm9kZSA9PSBOVUxMKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlpZiAoSXNBKG5vZGUsIFJQ Uk5hdkV4cHIpKQotCXsKLQkJUlBSTmF2RXhwciAqbmF2ID0gKFJQUk5hdkV4cHIgKikgbm9kZTsK LQotCQlpZiAobmF2LT5raW5kID09IFJQUl9OQVZfRklSU1QpCi0JCQlyZXR1cm4gdHJ1ZTsKLQkJ aWYgKG5hdi0+a2luZCA9PSBSUFJfTkFWX0xBU1QgJiYgbmF2LT5vZmZzZXRfYXJnICE9IE5VTEwp Ci0JCQlyZXR1cm4gdHJ1ZTsKLQotCQkvKiBDb21wb3VuZCBraW5kcyB3aXRoIEZJUlNUIGJhc2Ug ZGVwZW5kIG9uIG1hdGNoX3N0YXJ0ICovCi0JCWlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVW X0ZJUlNUIHx8Ci0JCQluYXYtPmtpbmQgPT0gUlBSX05BVl9ORVhUX0ZJUlNUKQotCQkJcmV0dXJu IHRydWU7Ci0KLQkJLyoKLQkJICogUFJFVl9MQVNUL05FWFRfTEFTVDogaW5uZXIgaXMgTEFTVCwg d2hpY2ggdXNlcyBjdXJyZW50cG9zLgotCQkgKiBtYXRjaF9zdGFydC1kZXBlbmRlbnQgb25seSBp ZiBpbm5lciBoYXMgb2Zmc2V0IChjbGFtcGVkIHRvCi0JCSAqIG1hdGNoX3N0YXJ0KS4KLQkJICov Ci0JCWlmICgobmF2LT5raW5kID09IFJQUl9OQVZfUFJFVl9MQVNUIHx8Ci0JCQkgbmF2LT5raW5k ID09IFJQUl9OQVZfTkVYVF9MQVNUKSAmJgotCQkJbmF2LT5vZmZzZXRfYXJnICE9IE5VTEwpCi0J CQlyZXR1cm4gdHJ1ZTsKLQotCQkvKiBDaGVjayBjaGlsZHJlbiAoYXJnIG1heSBjb250YWluIGZ1 cnRoZXIgbmF2IGV4cHJlc3Npb25zKSAqLwotCQlyZXR1cm4gaGFzX21hdGNoX3N0YXJ0X2RlcGVu ZGVuY3koKE5vZGUgKikgbmF2LT5hcmcsIGNvbnRleHQpOwotCX0KLQotCXJldHVybiBleHByZXNz aW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGhhc19tYXRjaF9zdGFydF9kZXBlbmRlbmN5LCBOVUxMKTsK LX0KLQotLyoKLSAqIGNvbXB1dGVfbWF0Y2hfc3RhcnRfZGVwZW5kZW50Ci0gKgkJQnVpbGQgYSBC aXRtYXBzZXQgb2YgREVGSU5FIHZhcmlhYmxlIGluZGljZXMgd2hvc2UgZXhwcmVzc2lvbnMKLSAq CQlkZXBlbmQgb24gbWF0Y2hfc3RhcnQgKGNvbnRhaW4gRklSU1QsIExBU1Qtd2l0aC1vZmZzZXQs IG9yCi0gKgkJY29tcG91bmQgUFJFVl9GSVJTVC9ORVhUX0ZJUlNUL1BSRVZfTEFTVC9ORVhUX0xB U1Qgd2l0aCBvZmZzZXQpLgotICoKLSAqIFZhcmlhYmxlcyBpbiB0aGlzIHNldCByZXF1aXJlIHBl ci1jb250ZXh0IHJlLWV2YWx1YXRpb24gZHVyaW5nIE5GQQotICogcHJvY2Vzc2luZywgYmVjYXVz ZSBkaWZmZXJlbnQgY29udGV4dHMgbWF5IGhhdmUgZGlmZmVyZW50IG1hdGNoX3N0YXJ0Ci0gKiB2 YWx1ZXMuCi0gKi8KLXN0YXRpYyBCaXRtYXBzZXQgKgotY29tcHV0ZV9tYXRjaF9zdGFydF9kZXBl bmRlbnQoTGlzdCAqZGVmaW5lQ2xhdXNlKQotewotCUJpdG1hcHNldCAgKnJlc3VsdCA9IE5VTEw7 Ci0JTGlzdENlbGwgICAqbGM7Ci0JaW50CQkJdmFySWR4ID0gMDsKLQotCWZvcmVhY2gobGMsIGRl ZmluZUNsYXVzZSkKLQl7Ci0JCVRhcmdldEVudHJ5ICp0ZSA9IChUYXJnZXRFbnRyeSAqKSBsZmly c3QobGMpOwotCi0JCWlmIChoYXNfbWF0Y2hfc3RhcnRfZGVwZW5kZW5jeSgoTm9kZSAqKSB0ZS0+ ZXhwciwgTlVMTCkpCi0JCQlyZXN1bHQgPSBibXNfYWRkX21lbWJlcihyZXN1bHQsIHZhcklkeCk7 Ci0KLQkJdmFySWR4Kys7Ci0JfQotCi0JcmV0dXJuIHJlc3VsdDsKLX0KLQogLyoKICAqIGNyZWF0 ZV93aW5kb3dhZ2dfcGxhbgogICoKQEAgLTI4NDgsNiArMjgyMCwxMSBAQCBjcmVhdGVfd2luZG93 YWdnX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIFdpbmRvd0FnZ1BhdGggKmJlc3RfcGF0aCkKIAlM aXN0CSAgICpmaWx0ZXJlZERlZmluZUNsYXVzZSA9IE5JTDsKIAlSUFJQYXR0ZXJuICpjb21waWxl ZFBhdHRlcm4gPSBOVUxMOwogCUJpdG1hcHNldCAgKm1hdGNoU3RhcnREZXBlbmRlbnQgPSBOVUxM OworCVJQUk5hdk9mZnNldEtpbmQgbmF2TWF4T2Zmc2V0S2luZCA9IFJQUl9OQVZfT0ZGU0VUX0ZJ WEVEOworCWludDY0CQluYXZNYXhPZmZzZXQgPSAwOworCWJvb2wJCWhhc0ZpcnN0TmF2ID0gZmFs c2U7CisJUlBSTmF2T2Zmc2V0S2luZCBuYXZGaXJzdE9mZnNldEtpbmQgPSBSUFJfTkFWX09GRlNF VF9GSVhFRDsKKwlpbnQ2NAkJbmF2Rmlyc3RPZmZzZXQgPSAwOwogCiAKIAkvKgpAQCAtMjkxMCw4 ICsyODg3LDE2IEBAIGNyZWF0ZV93aW5kb3dhZ2dfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgV2lu ZG93QWdnUGF0aCAqYmVzdF9wYXRoKQogCQlidWlsZERlZmluZVZhcmlhYmxlTGlzdCh3Yy0+ZGVm aW5lQ2xhdXNlLCAmZGVmaW5lVmFyaWFibGVMaXN0KTsKIAkJZmlsdGVyZWREZWZpbmVDbGF1c2Ug PSB3Yy0+ZGVmaW5lQ2xhdXNlOwogCi0JCS8qIElkZW50aWZ5IG1hdGNoX3N0YXJ0LWRlcGVuZGVu dCBERUZJTkUgdmFyaWFibGVzICovCi0JCW1hdGNoU3RhcnREZXBlbmRlbnQgPSBjb21wdXRlX21h dGNoX3N0YXJ0X2RlcGVuZGVudCh3Yy0+ZGVmaW5lQ2xhdXNlKTsKKwkJLyoKKwkJICogV2FsayBE RUZJTkUgb25jZTogY29sbGVjdCBuYXYgb2Zmc2V0cyAoZm9yIHR1cGxlc3RvcmUgdHJpbSkgYW5k IHRoZQorCQkgKiBiaXRtYXBzZXQgb2YgbWF0Y2hfc3RhcnQtZGVwZW5kZW50IHZhcmlhYmxlcyAo Zm9yIGFic29ycHRpb24KKwkJICogc3VwcHJlc3Npb24gaW4gYnVpbGRSUFJQYXR0ZXJuKS4KKwkJ ICovCisJCWNvbXB1dGVfZGVmaW5lX21ldGFkYXRhKHdjLT5kZWZpbmVDbGF1c2UsCisJCQkJCQkJ CSZuYXZNYXhPZmZzZXRLaW5kLCAmbmF2TWF4T2Zmc2V0LAorCQkJCQkJCQkmaGFzRmlyc3ROYXYs CisJCQkJCQkJCSZuYXZGaXJzdE9mZnNldEtpbmQsICZuYXZGaXJzdE9mZnNldCwKKwkJCQkJCQkJ Jm1hdGNoU3RhcnREZXBlbmRlbnQpOwogCiAJCS8qIENvbXBpbGUgYW5kIG9wdGltaXplIFJQUiBw YXR0ZXJucyAqLwogCQljb21waWxlZFBhdHRlcm4gPSBidWlsZFJQUlBhdHRlcm4od2MtPnJwUGF0 dGVybiwKQEAgLTI5MzcsNiArMjkyMiw5IEBAIGNyZWF0ZV93aW5kb3dhZ2dfcGxhbihQbGFubmVy SW5mbyAqcm9vdCwgV2luZG93QWdnUGF0aCAqYmVzdF9wYXRoKQogCQkJCQkJICBjb21waWxlZFBh dHRlcm4sCiAJCQkJCQkgIGZpbHRlcmVkRGVmaW5lQ2xhdXNlLAogCQkJCQkJICBtYXRjaFN0YXJ0 RGVwZW5kZW50LAorCQkJCQkJICBuYXZNYXhPZmZzZXRLaW5kLCBuYXZNYXhPZmZzZXQsCisJCQkJ CQkgIGhhc0ZpcnN0TmF2LAorCQkJCQkJICBuYXZGaXJzdE9mZnNldEtpbmQsIG5hdkZpcnN0T2Zm c2V0LAogCQkJCQkJICBiZXN0X3BhdGgtPnF1YWwsCiAJCQkJCQkgIGJlc3RfcGF0aC0+dG9wd2lu ZG93LAogCQkJCQkJICBzdWJwbGFuKTsKQEAgLTcwMTEsNiArNjk5OSw5IEBAIG1ha2Vfd2luZG93 YWdnKExpc3QgKnRsaXN0LCBXaW5kb3dDbGF1c2UgKndjLAogCQkJICAgUlBSUGF0dGVybiAqY29t cGlsZWRQYXR0ZXJuLAogCQkJICAgTGlzdCAqZGVmaW5lQ2xhdXNlLAogCQkJICAgQml0bWFwc2V0 ICpkZWZpbmVNYXRjaFN0YXJ0RGVwZW5kZW50LAorCQkJICAgUlBSTmF2T2Zmc2V0S2luZCBuYXZN YXhPZmZzZXRLaW5kLCBpbnQ2NCBuYXZNYXhPZmZzZXQsCisJCQkgICBib29sIGhhc0ZpcnN0TmF2 LAorCQkJICAgUlBSTmF2T2Zmc2V0S2luZCBuYXZGaXJzdE9mZnNldEtpbmQsIGludDY0IG5hdkZp cnN0T2Zmc2V0LAogCQkJICAgTGlzdCAqcXVhbCwgYm9vbCB0b3BXaW5kb3csIFBsYW4gKmxlZnR0 cmVlKQogewogCVdpbmRvd0FnZyAgKm5vZGUgPSBtYWtlTm9kZShXaW5kb3dBZ2cpOwpAQCAtNzA0 OCwxMSArNzAzOSwxMiBAQCBtYWtlX3dpbmRvd2FnZyhMaXN0ICp0bGlzdCwgV2luZG93Q2xhdXNl ICp3YywKIAkvKiBTdG9yZSBwcmUtY29tcHV0ZWQgbWF0Y2hfc3RhcnQgZGVwZW5kZW5jeSBiaXRt YXBzZXQgKi8KIAlub2RlLT5kZWZpbmVNYXRjaFN0YXJ0RGVwZW5kZW50ID0gZGVmaW5lTWF0Y2hT dGFydERlcGVuZGVudDsKIAotCS8qIENvbXB1dGUgbmF2IG9mZnNldHMgZm9yIHR1cGxlc3RvcmUg dHJpbSBvcHRpbWl6YXRpb24gKi8KLQljb21wdXRlX25hdl9vZmZzZXRzKGRlZmluZUNsYXVzZSwK LQkJCQkJCSZub2RlLT5uYXZNYXhPZmZzZXRLaW5kLCAmbm9kZS0+bmF2TWF4T2Zmc2V0LAotCQkJ CQkJJm5vZGUtPmhhc0ZpcnN0TmF2LAotCQkJCQkJJm5vZGUtPm5hdkZpcnN0T2Zmc2V0S2luZCwg Jm5vZGUtPm5hdkZpcnN0T2Zmc2V0KTsKKwkvKiBTdG9yZSBwcmUtY29tcHV0ZWQgbmF2IG9mZnNl dHMgZm9yIHR1cGxlc3RvcmUgdHJpbSBvcHRpbWl6YXRpb24gKi8KKwlub2RlLT5uYXZNYXhPZmZz ZXRLaW5kID0gbmF2TWF4T2Zmc2V0S2luZDsKKwlub2RlLT5uYXZNYXhPZmZzZXQgPSBuYXZNYXhP ZmZzZXQ7CisJbm9kZS0+aGFzRmlyc3ROYXYgPSBoYXNGaXJzdE5hdjsKKwlub2RlLT5uYXZGaXJz dE9mZnNldEtpbmQgPSBuYXZGaXJzdE9mZnNldEtpbmQ7CisJbm9kZS0+bmF2Rmlyc3RPZmZzZXQg PSBuYXZGaXJzdE9mZnNldDsKIAogCXBsYW4tPnRhcmdldGxpc3QgPSB0bGlzdDsKIAlwbGFuLT5s ZWZ0dHJlZSA9IGxlZnR0cmVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcnByLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYwppbmRleCAyNTQzMTcw YzM3NC4uYTgxN2ViNGE2M2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3Jwci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jCkBAIC00MSw2ICs0 MSw3IEBACiAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVu Y3MuaCIKKyNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIv cnByLmgiCiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zIC0gcGF0dGVybiBjb21wYXJpc29uICov CkBAIC0xOTkxLDMgKzE5OTIsMzYgQEAgYnVpbGRSUFJQYXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpw YXR0ZXJuLCBMaXN0ICpkZWZpbmVWYXJpYWJsZUxpc3QsCiAKIAlyZXR1cm4gcmVzdWx0OwogfQor CisvKgorICogbmF2X3RyYXZlcnNhbF93YWxrZXIKKyAqCQlTaGFyZWQgZXhwcmVzc2lvbi10cmVl IHdhbGtlciB0aGF0IGxvY2F0ZXMgUlBSTmF2RXhwciBub2RlcyBpbiBhCisgKgkJREVGSU5FIGV4 cHJlc3Npb24gYW5kIGRpc3BhdGNoZXMgZWFjaCBvbmUgdG8gYSBjYWxsZXItc3VwcGxpZWQKKyAq CQl2aXNpdG9yLiAgVXNlZCBieToKKyAqCQkgIC0gcGxhbm5lciAodmlzaXRfbmF2X3BsYW4gaW4g Y3JlYXRlcGxhbi5jKSB0byBjb2xsZWN0IHR1cGxlc3RvcmUKKyAqCQkgICAgdHJpbSBvZmZzZXRz IGFuZCBwZXItdmFyaWFibGUgbWF0Y2hfc3RhcnQgZGVwZW5kZW5jeQorICoJCSAgLSBleGVjdXRv ciAodmlzaXRfbmF2X2V4ZWMgaW4gbm9kZVdpbmRvd0FnZy5jKSB0byBldmFsdWF0ZQorICoJCSAg ICBub24tY29uc3RhbnQgbmF2IG9mZnNldHMgYXQgV2luZG93QWdnU3RhdGUgaW5pdCB0aW1lCisg KgorICogVGhlIGRyaXZlciB3cmFwcyBhIG1vZGUtc3BlY2lmaWMgY29udGV4dCBpbiBhIE5hdlRy YXZlcnNhbCBhbmQgcGFzc2VzCisgKiBpdCBhcyBjdHg7IHRoZSB2aXNpdG9yIGNhc3RzIHQtPmRh dGEgdG8gaXRzIG93biBjb250ZXh0IHR5cGUuICBDaGlsZHJlbgorICogb2YgYW4gUlBSTmF2RXhw ciBhcmUgbm90IHdhbGtlZDogdGhlIHBhcnNlcidzIG5lc3RpbmcgcmVzdHJpY3Rpb25zCisgKiBl bnN1cmUgb2Zmc2V0cyBhbmQgZGVwZW5kZW5jaWVzIGFyZSBmdWxseSBjYXB0dXJlZCBieSB0aGUg b3V0ZXIgbmF2CisgKiBraW5kLCBzbyB0aGUgdmlzaXRvciBvbmx5IG5lZWRzIHRvIGluc3BlY3Qg dGhlIFJQUk5hdkV4cHIgaXRzZWxmLgorICovCitib29sCituYXZfdHJhdmVyc2FsX3dhbGtlcihO b2RlICpub2RlLCB2b2lkICpjdHgpCit7CisJaWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIGZh bHNlOworCisJaWYgKElzQShub2RlLCBSUFJOYXZFeHByKSkKKwl7CisJCU5hdlRyYXZlcnNhbCAq dCA9IChOYXZUcmF2ZXJzYWwgKikgY3R4OworCisJCXQtPnZpc2l0KHQsIChSUFJOYXZFeHByICop IG5vZGUpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIGV4cHJlc3Npb25fdHJlZV93 YWxrZXIobm9kZSwgbmF2X3RyYXZlcnNhbF93YWxrZXIsIGN0eCk7Cit9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf cnByLmMKaW5kZXggZjU2YjdkYjViYzguLjg3NDExYWJjYmUyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jw ci5jCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVk ZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi bm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCkBAIC0zNSwx NCArMzYsMzMgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZXhwci5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZV9ycHIuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdGFyZ2V0LmgiCisjaW5j bHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisKKy8qIERFRklORSBjbGF1c2Ugd2Fsa2VyIGNvbnRl eHQgLS0gc2VlIGRlZmluZV93YWxrZXIgZm9yIHVzYWdlLiAqLwordHlwZWRlZiBlbnVtCit7CisJ REVGSU5FX1BIQVNFX0JPRFksCQkJLyogdG9wLWxldmVsIERFRklORSBleHByZXNzaW9uICovCisJ REVGSU5FX1BIQVNFX05BVl9BUkcsCQkvKiBpbnNpZGUgYW4gb3V0ZXIgbmF2J3MgYXJnIHN1YnRy ZWUgKi8KKwlERUZJTkVfUEhBU0VfTkFWX09GRlNFVCwJLyogaW5zaWRlIGFuIG91dGVyIG5hdidz IG9mZnNldF9hcmcgLworCQkJCQkJCQkgKiBjb21wb3VuZF9vZmZzZXRfYXJnICovCit9IERlZmlu ZVBoYXNlOworCit0eXBlZGVmIHN0cnVjdAoreworCVBhcnNlU3RhdGUgKnBzdGF0ZTsKKwlEZWZp bmVQaGFzZSBwaGFzZTsKKwlpbnQJCQluYXZfY291bnQ7CQkvKiBSUFJOYXZFeHByIG5vZGVzIHNl ZW4gaW4gY3VycmVudCBuYXYuYXJnICovCisJYm9vbAkJaGFzX2NvbHVtbl9yZWY7IC8qIFZhciBz ZWVuIGluIGN1cnJlbnQgbmF2IHNjb3BlICovCisJUlBSTmF2S2luZAlpbm5lcl9raW5kOwkJLyog a2luZCBvZiBmaXJzdCBuZXN0ZWQgbmF2IGluIGN1cnJlbnQgYXJnICovCit9IERlZmluZVdhbGtD dHg7CiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCiBzdGF0aWMgdm9pZCB2YWxpZGF0ZVJQ UlBhdHRlcm5WYXJDb3VudChQYXJzZVN0YXRlICpwc3RhdGUsIFJQUlBhdHRlcm5Ob2RlICpub2Rl LAogCQkJCQkJCQkJICAgTGlzdCAqcnBEZWZzLCBMaXN0ICoqdmFyTmFtZXMpOwogc3RhdGljIExp c3QgKnRyYW5zZm9ybURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVz ZSAqd2MsCiAJCQkJCQkJCSAgIFdpbmRvd0RlZiAqd2luZGVmLCBMaXN0ICoqdGFyZ2V0bGlzdCk7 Ci1zdGF0aWMgdm9pZCBjaGVja19ycHJfbmF2X2V4cHIoUlBSTmF2RXhwciAqbmF2LCBQYXJzZVN0 YXRlICpwc3RhdGUpOwotc3RhdGljIGJvb2wgY2hlY2tfcnByX25hdl9uZXN0aW5nX3dhbGtlcihO b2RlICpub2RlLCB2b2lkICpjb250ZXh0KTsKK3N0YXRpYyBib29sIGRlZmluZV93YWxrZXIoTm9k ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CitzdGF0aWMgYm9vbCBuYXZfdm9sYXRpbGVfZnVuY19j aGVja2VyKE9pZCBmdW5jaWQsIHZvaWQgKmNvbnRleHQpOwogCiAvKgogICogdHJhbnNmb3JtUlBS CkBAIC00MTIsOSArNDMyLDIyIEBAIHRyYW5zZm9ybURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpw c3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRvd0RlZiAqd2luZGVmLAogCWZvcmVhY2hfcHRy KFRhcmdldEVudHJ5LCB0ZSwgZGVmaW5lQ2xhdXNlKQogCQl0ZS0+ZXhwciA9IChFeHByICopIGNv ZXJjZV90b19ib29sZWFuKHBzdGF0ZSwgKE5vZGUgKikgdGUtPmV4cHIsICJERUZJTkUiKTsKIAot CS8qIGNoZWNrIGZvciBuZXN0ZWQgUFJFVi9ORVhUIGFuZCBtaXNzaW5nIGNvbHVtbiByZWZlcmVu Y2VzICovCisJLyoKKwkgKiBWYWxpZGF0ZSBERUZJTkUgZXhwcmVzc2lvbnM6IG5lc3RlZCBQUkVW L05FWFQsIGNvbHVtbiByZWZlcmVuY2VzLAorCSAqIGNvbXBvdW5kIGZsYXR0ZW4sIHZvbGF0aWxl IGNhbGxlZXMgLS0gYWxsIGluIGEgc2luZ2xlIHdhbGsgcGVyCisJICogdmFyaWFibGUuCisJICov CiAJZm9yZWFjaF9wdHIoVGFyZ2V0RW50cnksIHRlLCBkZWZpbmVDbGF1c2UpCi0JCSh2b2lkKSBj aGVja19ycHJfbmF2X25lc3Rpbmdfd2Fsa2VyKChOb2RlICopIHRlLT5leHByLCBwc3RhdGUpOwor CXsKKwkJRGVmaW5lV2Fsa0N0eCBjdHg7CisKKwkJY3R4LnBzdGF0ZSA9IHBzdGF0ZTsKKwkJY3R4 LnBoYXNlID0gREVGSU5FX1BIQVNFX0JPRFk7CisJCWN0eC5uYXZfY291bnQgPSAwOworCQljdHgu aGFzX2NvbHVtbl9yZWYgPSBmYWxzZTsKKwkJY3R4LmlubmVyX2tpbmQgPSAwOworCQkodm9pZCkg ZGVmaW5lX3dhbGtlcigoTm9kZSAqKSB0ZS0+ZXhwciwgJmN0eCk7CisJfQogCiAJLyogbWFyayBj b2x1bW4gb3JpZ2lucyAqLwogCW1hcmtUYXJnZXRMaXN0T3JpZ2lucyhwc3RhdGUsIGRlZmluZUNs YXVzZSk7CkBAIC00MjYsMTY5ICs0NTksMjM5IEBAIHRyYW5zZm9ybURlZmluZUNsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRvd0RlZiAqd2luZGVmLAogfQog CiAvKgotICogY2hlY2tfcnByX25hdl9leHByCi0gKgkJVmFsaWRhdGUgYSBzaW5nbGUgUlBSTmF2 RXhwciBub2RlIGJ5IHdhbGtpbmcgaXRzIGFyZyBhbmQgb2Zmc2V0X2FyZwotICoJCXN1YnRyZWVz IGluIGEgc2luZ2xlIHBhc3MgZWFjaC4gIENoZWNrIGZvciBpbGxlZ2FsIG5lc3RpbmcsIG1pc3Np bmcKLSAqCQljb2x1bW4gcmVmZXJlbmNlcywgYW5kIG5vbi1jb25zdGFudCBvZmZzZXQgZXhwcmVz c2lvbnMuCisgKiBTaW5nbGUtcGFzcyBERUZJTkUgY2xhdXNlIHZhbGlkYXRvci4KICAqCi0gKiBO ZXN0aW5nIHJ1bGVzIChTUUwgc3RhbmRhcmQgNS42LjQpOgotICogICAtIFBSRVYvTkVYVCB3cmFw cGluZyBGSVJTVC9MQVNUOiBhbGxvd2VkIChjb21wb3VuZCBuYXZpZ2F0aW9uKQotICogICAtIEZJ UlNUL0xBU1Qgd3JhcHBpbmcgUFJFVi9ORVhUOiBwcm9oaWJpdGVkCi0gKiAgIC0gU2FtZS1jYXRl Z29yeSBuZXN0aW5nIChQUkVWIGluc2lkZSBQUkVWLCBGSVJTVCBpbnNpZGUgRklSU1QsIGV0Yy4p OgotICogICAgIHByb2hpYml0ZWQKKyAqIE9uZSB3YWxrZXIgZnVuY3Rpb24gKGRlZmluZV93YWxr ZXIpIHZpc2l0cyBldmVyeSBub2RlIGluIGEgREVGSU5FCisgKiBleHByZXNzaW9uIGV4YWN0bHkg b25jZSBhbmQgZW5mb3JjZXMgZXZlcnkgcnVsZToKKyAqICAgLSBWb2xhdGlsZSBjYWxsZWVzIGFu ZCBOZXh0VmFsdWVFeHByIGFyZSByZWplY3RlZCBhdCBwYXJzZSB0aW1lCisgKiAgICAgKFJQUidz IE5GQSBtYXkgZXZhbHVhdGUgdGhlIHNhbWUgcm93J3MgcHJlZGljYXRlIG11bHRpcGxlIHRpbWVz CisgKiAgICAgZHVyaW5nIGJhY2t0cmFja2luZywgc28gYSB2b2xhdGlsZSByZXN1bHQgd291bGQg bWFrZSBtYXRjaGluZworICogICAgIG5vbi1kZXRlcm1pbmlzdGljKS4KKyAqICAgLSBGb3IgZWFj aCBvdXRlciBSUFJOYXZFeHByIChwZXIgU1FMIDUuNi40IG5lc3RpbmcgcnVsZXMpOgorICogICAg ICogYXJnIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgY29sdW1uIHJlZmVyZW5jZQorICogICAg ICogUFJFVi9ORVhUIHdyYXBwaW5nIEZJUlNUL0xBU1QgZmxhdHRlbnMgdG8gYSBjb21wb3VuZCBr aW5kCisgKiAgICAgKiBPdGhlciBuZXN0aW5ncyBhcmUgcmVqZWN0ZWQgKEZJUlNUKFBSRVYoKSks IFBSRVYoUFJFVigpKSwgLi4uKQorICogICAgICogb2Zmc2V0X2FyZyAvIGNvbXBvdW5kX29mZnNl dF9hcmcgbXVzdCBub3QgY29udGFpbiBjb2x1bW4gcmVmcworICoKKyAqIFRoZSB3YWxrZXIgdXNl cyBhIHBoYXNlIHRhZyB0byBrbm93IHdoaWNoIHN1YnRyZWUgaXQgaXMgaW46IERFRklORQorICog Ym9keSAodG9wLWxldmVsKSwgaW5zaWRlIGEgbmF2LmFyZywgb3IgaW5zaWRlIGEgbmF2Lm9mZnNl dF9hcmcgLworICogY29tcG91bmRfb2Zmc2V0X2FyZy4gIFdoZW4gZW50ZXJpbmcgYW4gb3V0ZXIg bmF2IChQSEFTRV9CT0RZKSwgaXQKKyAqIHdhbGtzIG5hdi5hcmcgaW4gUEhBU0VfTkFWX0FSRyB0 byBjb2xsZWN0IG5lc3RpbmcvY29sdW1uLXJlZiBzdGF0ZSwKKyAqIGFwcGxpZXMgY29tcG91bmQg ZmxhdHRlbiBvciByYWlzZXMgYSBuZXN0aW5nIGVycm9yLCB0aGVuIHdhbGtzIHRoZQorICogKHBv c3QtZmxhdHRlbikgb2Zmc2V0KHMpIGluIFBIQVNFX05BVl9PRkZTRVQgdG8gZW5mb3JjZSB0aGUK KyAqIGNvbnN0YW50LW9mZnNldCBydWxlLiAgTm8gc3VidHJlZSBpcyB3YWxrZWQgdHdpY2UuCiAg Ki8KLXR5cGVkZWYgc3RydWN0CisKKy8qCisgKiBuYXZfdm9sYXRpbGVfZnVuY19jaGVja2VyCisg KgkJY2hlY2tfZnVuY3Rpb25zX2luX25vZGUgY2FsbGJhY2s6IHRydWUgaWYgZnVuY2lkIGlzIFZP TEFUSUxFLgorICovCitzdGF0aWMgYm9vbAorbmF2X3ZvbGF0aWxlX2Z1bmNfY2hlY2tlcihPaWQg ZnVuY2lkLCB2b2lkICpjb250ZXh0KQogewotCWludAkJCW5hdl9jb3VudDsJCS8qIG51bWJlciBv ZiBSUFJOYXZFeHByIG5vZGVzIGZvdW5kICovCi0JYm9vbAkJaGFzX2NvbHVtbl9yZWY7IC8qIFZh ciBmb3VuZCAqLwotCVJQUk5hdktpbmQJaW5uZXJfa2luZDsJCS8qIGtpbmQgb2YgZmlyc3QgKG91 dGVybW9zdCkgbmVzdGVkIFJQUk5hdkV4cHIgKi8KLX0gTmF2Q2hlY2tSZXN1bHQ7CisJcmV0dXJu IChmdW5jX3ZvbGF0aWxlKGZ1bmNpZCkgPT0gUFJPVk9MQVRJTEVfVk9MQVRJTEUpOworfQogCisv KgorICogZGVmaW5lX3dhbGtlcgorICoJCVNpbmdsZS1wYXNzIERFRklORSBjbGF1c2UgdmFsaWRh dG9yLiAgQXQgZWFjaCBub2RlLCBlbmZvcmNlczoKKyAqCisgKgkJICBbMV0gbm8gdm9sYXRpbGUg Y2FsbGVlcyAoYW5kIG5vIE5leHRWYWx1ZUV4cHIpIC0tIGFueXdoZXJlIGluCisgKgkJCSAgdGhl IHRyZWUsIHJlZ2FyZGxlc3Mgb2YgcGhhc2UKKyAqCQkgIFsyXSBmb3IgZWFjaCBvdXRlciBSUFJO YXZFeHByIChQSEFTRV9CT0RZIC0+IFBIQVNFX05BVl9BUkcpOgorICoJCQkgIC0gbmF2LmFyZyBt dXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGNvbHVtbiByZWZlcmVuY2UKKyAqCQkJICAtIFBSRVYv TkVYVCB3cmFwcGluZyBGSVJTVC9MQVNUIGlzIGZsYXR0ZW5lZCBpbiBwbGFjZQorICoJCQkJdG8g YSBjb21wb3VuZCBraW5kIChQUkVWX0ZJUlNULCBQUkVWX0xBU1QsIE5FWFRfRklSU1QsCisgKgkJ CQlORVhUX0xBU1QpCisgKgkJCSAgLSBhbnkgb3RoZXIgbmVzdGluZyBpcyByZWplY3RlZCAoRklS U1QoUFJFVigpKSwKKyAqCQkJCVBSRVYoUFJFVigpKSwgRklSU1QoRklSU1QoKSksIHRocmVlLW9y LW1vcmUgZGVlcCkKKyAqCQkgIFszXSBmb3IgZWFjaCBuYXYgb2Zmc2V0IChQSEFTRV9OQVZfT0ZG U0VUKToKKyAqCQkJICAtIG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFudCAobm8gY29sdW1uIHJl ZmVyZW5jZXMpCisgKgorICogVmFyIHNpZ2h0aW5ncyBmZWVkIHRoZSBjb2x1bW4tcmVmIHJ1bGUg Zm9yIHRoZSBlbmNsb3NpbmcgbmF2IHNjb3BlOworICogUlBSTmF2RXhwciBzaWdodGluZ3MgaW5z aWRlIFBIQVNFX05BVl9BUkcgZmVlZCB0aGUgbmVzdGluZyBkZWNpc2lvbi4KKyAqIFNlZSB0aGUg Y29tbWVudCBibG9jayBhYm92ZSBEZWZpbmVQaGFzZSBmb3IgdGhlIG92ZXJhbGwgZGVzaWduIGFu ZAorICogaG93IGVhY2ggc3VidHJlZSBpcyB3YWxrZWQgZXhhY3RseSBvbmNlLgorICovCiBzdGF0 aWMgYm9vbAotbmF2X2NoZWNrX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQorZGVm aW5lX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQogewotCU5hdkNoZWNrUmVzdWx0 ICpyZXN1bHQgPSAoTmF2Q2hlY2tSZXN1bHQgKikgY29udGV4dDsKKwlEZWZpbmVXYWxrQ3R4ICpj dHggPSAoRGVmaW5lV2Fsa0N0eCAqKSBjb250ZXh0OwogCiAJaWYgKG5vZGUgPT0gTlVMTCkKIAkJ cmV0dXJuIGZhbHNlOwotCWlmIChJc0Eobm9kZSwgUlBSTmF2RXhwcikpCi0JewotCQlpZiAocmVz dWx0LT5uYXZfY291bnQgPT0gMCkKLQkJCXJlc3VsdC0+aW5uZXJfa2luZCA9ICgoUlBSTmF2RXhw ciAqKSBub2RlKS0+a2luZDsKLQkJcmVzdWx0LT5uYXZfY291bnQrKzsKLQl9Ci0JaWYgKElzQShu b2RlLCBWYXIpKQotCQlyZXN1bHQtPmhhc19jb2x1bW5fcmVmID0gdHJ1ZTsKLQotCXJldHVybiBl eHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIG5hdl9jaGVja193YWxrZXIsIGNvbnRleHQpOwot fQogCi1zdGF0aWMgdm9pZAotY2hlY2tfcnByX25hdl9leHByKFJQUk5hdkV4cHIgKm5hdiwgUGFy c2VTdGF0ZSAqcHN0YXRlKQotewotCU5hdkNoZWNrUmVzdWx0IHJlc3VsdDsKLQlib29sCQlvdXRl cl9pc19waHlzaWNhbCA9IChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWIHx8Ci0JCQkJCQkJCQkg bmF2LT5raW5kID09IFJQUl9OQVZfTkVYVCk7CisJLyoKKwkgKiBSZWplY3Qgdm9sYXRpbGUgY2Fs bGVlcyBhbmQgc2VxdWVuY2Ugb3BlcmF0aW9ucyBhbnl3aGVyZSBpbiB0aGUgREVGSU5FCisJICog Y2xhdXNlOiB0aGV5IGFyZSBub24tZGV0ZXJtaW5pc3RpYyBhY3Jvc3MgdGhlIG11bHRpcGxlIHBy ZWRpY2F0ZQorCSAqIGV2YWx1YXRpb25zIHRoYXQgTkZBIGJhY2t0cmFja2luZyBhbmQgUFJFVi9O RVhUIG5hdmlnYXRpb24gbWF5IHRyaWdnZXIKKwkgKiBmb3IgYSBzaW5nbGUgcm93LgorCSAqLwor CWlmIChjaGVja19mdW5jdGlvbnNfaW5fbm9kZShub2RlLCBuYXZfdm9sYXRpbGVfZnVuY19jaGVj a2VyLCBOVUxMKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygidm9sYXRpbGUgZnVuY3Rpb25zIGFyZSBu b3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlIiksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihj dHgtPnBzdGF0ZSwgZXhwckxvY2F0aW9uKG5vZGUpKSkpOworCWlmIChJc0Eobm9kZSwgTmV4dFZh bHVlRXhwcikpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coInNlcXVlbmNlIG9wZXJhdGlvbnMgYXJlIG5v dCBhbGxvd2VkIGluIERFRklORSBjbGF1c2UiKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN0 eC0+cHN0YXRlLCBleHByTG9jYXRpb24obm9kZSkpKSk7CiAKLQkvKiBDaGVjayBhcmcgc3VidHJl ZTogbmVzdGluZyArIGNvbHVtbiByZWZlcmVuY2UgaW4gb25lIHdhbGsgKi8KLQltZW1zZXQoJnJl c3VsdCwgMCwgc2l6ZW9mKHJlc3VsdCkpOwotCSh2b2lkKSBuYXZfY2hlY2tfd2Fsa2VyKChOb2Rl ICopIG5hdi0+YXJnLCAmcmVzdWx0KTsKKwkvKiBWYXIgc2lnaHRpbmcgZmVlZHMgdGhlIGNvbHVt bi1yZWYgcnVsZSBmb3IgdGhlIGVuY2xvc2luZyBuYXYgc2NvcGUuICovCisJaWYgKElzQShub2Rl LCBWYXIpICYmCisJCShjdHgtPnBoYXNlID09IERFRklORV9QSEFTRV9OQVZfQVJHIHx8CisJCSBj dHgtPnBoYXNlID09IERFRklORV9QSEFTRV9OQVZfT0ZGU0VUKSkKKwkJY3R4LT5oYXNfY29sdW1u X3JlZiA9IHRydWU7CiAKLQlpZiAocmVzdWx0Lm5hdl9jb3VudCA+IDApCisJaWYgKElzQShub2Rl LCBSUFJOYXZFeHByKSkKIAl7Ci0JCWJvb2wJCWlubmVyX2lzX3BoeXNpY2FsID0gKHJlc3VsdC5p bm5lcl9raW5kID09IFJQUl9OQVZfUFJFViB8fAotCQkJCQkJCQkJCSByZXN1bHQuaW5uZXJfa2lu ZCA9PSBSUFJfTkFWX05FWFQpOworCQlSUFJOYXZFeHByICpuYXYgPSAoUlBSTmF2RXhwciAqKSBu b2RlOwogCi0JCWlmIChvdXRlcl9pc19waHlzaWNhbCAmJiAhaW5uZXJfaXNfcGh5c2ljYWwpCisJ CWlmIChjdHgtPnBoYXNlID09IERFRklORV9QSEFTRV9OQVZfQVJHKQogCQl7CiAJCQkvKgotCQkJ ICogUFJFVi9ORVhUIHdyYXBwaW5nIEZJUlNUL0xBU1Q6IGNvbXBvdW5kIG5hdmlnYXRpb24gcGVy IFNRTAotCQkJICogc3RhbmRhcmQgNS42LjQuICBGbGF0dGVuIHRoZSBuZXN0ZWQgUlBSTmF2RXhw ciBpbnRvIGEgc2luZ2xlCi0JCQkgKiBjb21wb3VuZCBub2RlLiAgVGhlIGlubmVyIFJQUk5hdkV4 cHIgbXVzdCBiZSB0aGUgZGlyZWN0IGFyZyBvZgotCQkJICogdGhlIG91dGVyOyBleHByZXNzaW9u cyBsaWtlIFBSRVYodmFsICsgRklSU1QodikpIGFyZSBub3QgdmFsaWQKLQkJCSAqIGNvbXBvdW5k IG5hdmlnYXRpb24uCisJCQkgKiBOZXN0ZWQgbmF2IGluc2lkZSBhbiBvdXRlciBuYXYuYXJnOiBy ZWNvcmQgZm9yIHRoZSBvdXRlcidzCisJCQkgKiBjb21wb3VuZCAvIG5lc3RpbmcgZGVjaXNpb24s IHRoZW4ga2VlcCByZWN1cnNpbmcgc28gZGVlcGVyIFZhcnMKKwkJCSAqIGFuZCB2b2xhdGlsZSBj YWxsZWVzIGFyZSBzdGlsbCBvYnNlcnZlZC4KIAkJCSAqLwotCQkJUlBSTmF2RXhwciAqaW5uZXI7 Ci0KLQkJCS8qIFJlamVjdCB0cmlwbGUtb3ItZGVlcGVyIG5lc3RpbmcgKGUuZy4gUFJFVihGSVJT VChQUkVWKHgpKSkpICovCi0JCQlpZiAocmVzdWx0Lm5hdl9jb3VudCA+IDEpCi0JCQkJZXJlcG9y dChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQkJCSBl cnJtc2coImNhbm5vdCBuZXN0IHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gbW9yZSB0aGFuIHR3byBs ZXZlbHMgZGVlcCIpLAotCQkJCQkJIGVycmhpbnQoIk9ubHkgUFJFVihGSVJTVCgpKSwgUFJFVihM QVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFy ZSBhbGxvd2VkLiIpLAotCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG5hdi0+bG9j YXRpb24pKSk7Ci0KLQkJCWlmICghSXNBKG5hdi0+YXJnLCBSUFJOYXZFeHByKSkKLQkJCQllcmVw b3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkJ IGVycm1zZygicm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvcGVyYXRpb24gbXVzdCBiZSBhIGRpcmVj dCBhcmd1bWVudCBvZiB0aGUgb3V0ZXIgbmF2aWdhdGlvbiIpLAotCQkJCQkJIGVycmhpbnQoIk9u bHkgUFJFVihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChM QVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIpLAotCQkJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIG5hdi0+bG9jYXRpb24pKSk7Ci0JCQlpbm5lciA9IChSUFJOYXZFeHBy ICopIG5hdi0+YXJnOwotCi0JCQkvKiBEZXRlcm1pbmUgY29tcG91bmQga2luZCAqLwotCQkJaWYg KG5hdi0+a2luZCA9PSBSUFJfTkFWX1BSRVYgJiYgaW5uZXItPmtpbmQgPT0gUlBSX05BVl9GSVJT VCkKLQkJCQluYXYtPmtpbmQgPSBSUFJfTkFWX1BSRVZfRklSU1Q7Ci0JCQllbHNlIGlmIChuYXYt PmtpbmQgPT0gUlBSX05BVl9QUkVWICYmIGlubmVyLT5raW5kID09IFJQUl9OQVZfTEFTVCkKLQkJ CQluYXYtPmtpbmQgPSBSUFJfTkFWX1BSRVZfTEFTVDsKLQkJCWVsc2UgaWYgKG5hdi0+a2luZCA9 PSBSUFJfTkFWX05FWFQgJiYgaW5uZXItPmtpbmQgPT0gUlBSX05BVl9GSVJTVCkKLQkJCQluYXYt PmtpbmQgPSBSUFJfTkFWX05FWFRfRklSU1Q7Ci0JCQllbHNlIGlmIChuYXYtPmtpbmQgPT0gUlBS X05BVl9ORVhUICYmIGlubmVyLT5raW5kID09IFJQUl9OQVZfTEFTVCkKLQkJCQluYXYtPmtpbmQg PSBSUFJfTkFWX05FWFRfTEFTVDsKLQotCQkJLyogTW92ZSBvdXRlciBvZmZzZXQgdG8gY29tcG91 bmRfb2Zmc2V0X2FyZyAqLwotCQkJbmF2LT5jb21wb3VuZF9vZmZzZXRfYXJnID0gbmF2LT5vZmZz ZXRfYXJnOwotCi0JCQkvKiBNb3ZlIGlubmVyIG9mZnNldCBhbmQgYXJnIHVwICovCi0JCQluYXYt Pm9mZnNldF9hcmcgPSBpbm5lci0+b2Zmc2V0X2FyZzsKLQkJCW5hdi0+YXJnID0gaW5uZXItPmFy ZzsKLQotCQkJLyogTm8gZnVydGhlciBuZXN0aW5nIGNoZWNrIG5lZWRlZCAtIGFscmVhZHkgdmFs aWRhdGVkICovCi0JCQlyZXR1cm47Ci0JCX0KLQkJZWxzZSBpZiAoIW91dGVyX2lzX3BoeXNpY2Fs ICYmIGlubmVyX2lzX3BoeXNpY2FsKQotCQl7Ci0JCQkvKiBGSVJTVC9MQVNUIHdyYXBwaW5nIFBS RVYvTkVYVDogcHJvaGliaXRlZCBieSBzdGFuZGFyZCAqLwotCQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkgZXJybXNnKCJGSVJTVCBh bmQgTEFTVCBjYW5ub3QgY29udGFpbiBQUkVWIG9yIE5FWFQiKSwKLQkJCQkJIGVycmhpbnQoIk9u bHkgUFJFVihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChM QVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIpLAotCQkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpKTsKKwkJCWlmIChjdHgtPm5hdl9jb3VudCA9 PSAwKQorCQkJCWN0eC0+aW5uZXJfa2luZCA9IG5hdi0+a2luZDsKKwkJCWN0eC0+bmF2X2NvdW50 Kys7CisJCQlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dhbGtlcihub2RlLCBkZWZpbmVfd2Fsa2Vy LCBjdHgpOwogCQl9Ci0JCWVsc2UgaWYgKG91dGVyX2lzX3BoeXNpY2FsICYmIGlubmVyX2lzX3Bo eXNpY2FsKQorCisJCWlmIChjdHgtPnBoYXNlID09IERFRklORV9QSEFTRV9OQVZfT0ZGU0VUKQog CQl7Ci0JCQkvKiBQUkVWL05FWFQgd3JhcHBpbmcgUFJFVi9ORVhUOiBwcm9oaWJpdGVkICovCi0J CQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0J CQkJCSBlcnJtc2coIlBSRVYgYW5kIE5FWFQgY2Fubm90IGNvbnRhaW4gUFJFViBvciBORVhUIiks Ci0JCQkJCSBlcnJoaW50KCJPbmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChG SVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4iKSwK LQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG5hdi0+bG9jYXRpb24pKSk7CisJCQkv KgorCQkJICogTmF2cyBpbnNpZGUgb2Zmc2V0X2FyZyBhcmUgdW51c3VhbCBidXQgbm90IGRpcmVj dGx5IGJhbm5lZDsgdGhlCisJCQkgKiBjb25zdGFudC1vZmZzZXQgcnVsZSB3aWxsIGNhdGNoIGFu eSBWYXIgb3Igdm9sYXRpbGUgdGhleQorCQkJICogY29udGFpbi4KKwkJCSAqLworCQkJcmV0dXJu IGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgZGVmaW5lX3dhbGtlciwgY3R4KTsKIAkJfQot CQllbHNlCisKKwkJLyoKKwkJICogUEhBU0VfQk9EWTogdGhpcyBpcyBhbiBvdXRlciBuYXYgYXQg dG9wIGxldmVsLiAgV2FsayBhcmcgZmlyc3QgdG8KKwkJICogY29sbGVjdCBuZXN0aW5nIC8gY29s dW1uLXJlZiBzdGF0ZSwgdGhlbiB2YWxpZGF0ZSBhbmQgKGZvciBjb21wb3VuZAorCQkgKiBmb3Jt cykgZmxhdHRlbiwgdGhlbiB3YWxrIG9mZnNldChzKS4KKwkJICovCiAJCXsKLQkJCS8qIEZJUlNU L0xBU1Qgd3JhcHBpbmcgRklSU1QvTEFTVDogcHJvaGliaXRlZCAqLwotCQkJZXJlcG9ydChFUlJP UiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkgZXJybXNnKCJG SVJTVCBhbmQgTEFTVCBjYW5ub3QgY29udGFpbiBGSVJTVCBvciBMQVNUIiksCi0JCQkJCSBlcnJo aW50KCJPbmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5k IE5FWFQoTEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4iKSwKLQkJCQkJIHBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIG5hdi0+bG9jYXRpb24pKSk7Ci0JCX0KLQl9Ci0JaWYgKCFy ZXN1bHQuaGFzX2NvbHVtbl9yZWYpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAotCQkJCSBlcnJtc2coImFyZ3VtZW50IG9mIHJvdyBwYXR0ZXJu IG5hdmlnYXRpb24gb3BlcmF0aW9uIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgY29sdW1uIHJl ZmVyZW5jZSIpLAotCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBuYXYtPmxvY2F0aW9u KSkpOworCQkJRGVmaW5lV2Fsa0N0eCBzYXZlZCA9ICpjdHg7CisJCQlib29sCQlvdXRlcl9waHlz ID0gKG5hdi0+a2luZCA9PSBSUFJfTkFWX1BSRVYgfHwKKwkJCQkJCQkJCSAgbmF2LT5raW5kID09 IFJQUl9OQVZfTkVYVCk7CisJCQlib29sCQlmbGF0dGVuZWQgPSBmYWxzZTsKKworCQkJY3R4LT5w aGFzZSA9IERFRklORV9QSEFTRV9OQVZfQVJHOworCQkJY3R4LT5uYXZfY291bnQgPSAwOworCQkJ Y3R4LT5oYXNfY29sdW1uX3JlZiA9IGZhbHNlOworCQkJY3R4LT5pbm5lcl9raW5kID0gMDsKKwkJ CSh2b2lkKSBkZWZpbmVfd2Fsa2VyKChOb2RlICopIG5hdi0+YXJnLCBjdHgpOworCisJCQlpZiAo Y3R4LT5uYXZfY291bnQgPiAwKQorCQkJeworCQkJCWJvb2wJCWlubmVyX3BoeXMgPSAoY3R4LT5p bm5lcl9raW5kID09IFJQUl9OQVZfUFJFViB8fAorCQkJCQkJCQkJCSAgY3R4LT5pbm5lcl9raW5k ID09IFJQUl9OQVZfTkVYVCk7CiAKLQkvKiBDaGVjayBvZmZzZXRfYXJnOiBjb2x1bW4gcmVmICsg dm9sYXRpbGUgaW4gb25lIHdhbGsgKi8KLQlpZiAobmF2LT5vZmZzZXRfYXJnICE9IE5VTEwpCi0J ewotCQltZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKHJlc3VsdCkpOwotCQkodm9pZCkgbmF2X2No ZWNrX3dhbGtlcigoTm9kZSAqKSBuYXYtPm9mZnNldF9hcmcsICZyZXN1bHQpOwotCi0JCWlmIChy ZXN1bHQuaGFzX2NvbHVtbl9yZWYgfHwKLQkJCWNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zKChO b2RlICopIG5hdi0+b2Zmc2V0X2FyZykpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCSBlcnJtc2coInJvdyBwYXR0 ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFudCIpLAotCQkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpKTsKLQl9Ci19CisJ CQkJaWYgKG91dGVyX3BoeXMgJiYgIWlubmVyX3BoeXMpCisJCQkJeworCQkJCQlSUFJOYXZFeHBy ICppbm5lcjsKIAotLyoKLSAqIGNoZWNrX3Jwcl9uYXZfbmVzdGluZ193YWxrZXIKLSAqCQlXYWxr IHRoZSBERUZJTkUgY2xhdXNlIGV4cHJlc3Npb24gdHJlZSBhbmQgdmFsaWRhdGUgZWFjaCBSUFJO YXZFeHByLgotICovCi1zdGF0aWMgYm9vbAotY2hlY2tfcnByX25hdl9uZXN0aW5nX3dhbGtlcihO b2RlICpub2RlLCB2b2lkICpjb250ZXh0KQotewotCWlmIChub2RlID09IE5VTEwpCi0JCXJldHVy biBmYWxzZTsKLQlpZiAoSXNBKG5vZGUsIFJQUk5hdkV4cHIpKQotCXsKLQkJY2hlY2tfcnByX25h dl9leHByKChSUFJOYXZFeHByICopIG5vZGUsIChQYXJzZVN0YXRlICopIGNvbnRleHQpOwotCQkv KiBkb24ndCByZWN1cnNlIGludG8gYXJnOyBuZXN0aW5nIGFscmVhZHkgY2hlY2tlZCBhYm92ZSAq LwotCQlyZXR1cm4gZmFsc2U7CisJCQkJCS8qIFJlamVjdCB0cmlwbGUtb3ItZGVlcGVyIG5lc3Rp bmcgKi8KKwkJCQkJaWYgKGN0eC0+bmF2X2NvdW50ID4gMSkKKwkJCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1z ZygiY2Fubm90IG5lc3Qgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBtb3JlIHRoYW4gdHdvIGxldmVs cyBkZWVwIiksCisJCQkJCQkJCSBlcnJoaW50KCJPbmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFT VCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUg YWxsb3dlZC4iKSwKKwkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjdHgtPnBzdGF0ZSwgbmF2 LT5sb2NhdGlvbikpKTsKKworCQkJCQlpZiAoIUlzQShuYXYtPmFyZywgUlBSTmF2RXhwcikpCisJ CQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJCQkJCSBlcnJtc2coInJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uIG11 c3QgYmUgYSBkaXJlY3QgYXJndW1lbnQgb2YgdGhlIG91dGVyIG5hdmlnYXRpb24iKSwKKwkJCQkJ CQkJIGVycmhpbnQoIk9ubHkgUFJFVihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNU KCkpLCBhbmQgTkVYVChMQVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIpLAorCQkJ CQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN0eC0+cHN0YXRlLCBuYXYtPmxvY2F0aW9uKSkpOwor CisJCQkJCWlubmVyID0gKFJQUk5hdkV4cHIgKikgbmF2LT5hcmc7CisKKwkJCQkJaWYgKG5hdi0+ a2luZCA9PSBSUFJfTkFWX1BSRVYgJiYgaW5uZXItPmtpbmQgPT0gUlBSX05BVl9GSVJTVCkKKwkJ CQkJCW5hdi0+a2luZCA9IFJQUl9OQVZfUFJFVl9GSVJTVDsKKwkJCQkJZWxzZSBpZiAobmF2LT5r aW5kID09IFJQUl9OQVZfUFJFViAmJiBpbm5lci0+a2luZCA9PSBSUFJfTkFWX0xBU1QpCisJCQkJ CQluYXYtPmtpbmQgPSBSUFJfTkFWX1BSRVZfTEFTVDsKKwkJCQkJZWxzZSBpZiAobmF2LT5raW5k ID09IFJQUl9OQVZfTkVYVCAmJiBpbm5lci0+a2luZCA9PSBSUFJfTkFWX0ZJUlNUKQorCQkJCQkJ bmF2LT5raW5kID0gUlBSX05BVl9ORVhUX0ZJUlNUOworCQkJCQllbHNlIGlmIChuYXYtPmtpbmQg PT0gUlBSX05BVl9ORVhUICYmIGlubmVyLT5raW5kID09IFJQUl9OQVZfTEFTVCkKKwkJCQkJCW5h di0+a2luZCA9IFJQUl9OQVZfTkVYVF9MQVNUOworCisJCQkJCW5hdi0+Y29tcG91bmRfb2Zmc2V0 X2FyZyA9IG5hdi0+b2Zmc2V0X2FyZzsKKwkJCQkJbmF2LT5vZmZzZXRfYXJnID0gaW5uZXItPm9m ZnNldF9hcmc7CisJCQkJCW5hdi0+YXJnID0gaW5uZXItPmFyZzsKKwkJCQkJZmxhdHRlbmVkID0g dHJ1ZTsKKwkJCQl9CisJCQkJZWxzZSBpZiAoIW91dGVyX3BoeXMgJiYgaW5uZXJfcGh5cykKKwkJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiks CisJCQkJCQkJIGVycm1zZygiRklSU1QgYW5kIExBU1QgY2Fubm90IGNvbnRhaW4gUFJFViBvciBO RVhUIiksCisJCQkJCQkJIGVycmhpbnQoIk9ubHkgUFJFVihGSVJTVCgpKSwgUFJFVihMQVNUKCkp LCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxv d2VkLiIpLAorCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3R4LT5wc3RhdGUsIG5hdi0+bG9j YXRpb24pKSk7CisJCQkJZWxzZSBpZiAob3V0ZXJfcGh5cyAmJiBpbm5lcl9waHlzKQorCQkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJ CQkJCQkgZXJybXNnKCJQUkVWIGFuZCBORVhUIGNhbm5vdCBjb250YWluIFBSRVYgb3IgTkVYVCIp LAorCQkJCQkJCSBlcnJoaW50KCJPbmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVY VChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4i KSwKKwkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN0eC0+cHN0YXRlLCBuYXYtPmxvY2F0aW9u KSkpOworCQkJCWVsc2UKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJD T0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJIGVycm1zZygiRklSU1QgYW5kIExBU1QgY2Fubm90 IGNvbnRhaW4gRklSU1Qgb3IgTEFTVCIpLAorCQkJCQkJCSBlcnJoaW50KCJPbmx5IFBSRVYoRklS U1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBjb21w b3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4iKSwKKwkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN0 eC0+cHN0YXRlLCBuYXYtPmxvY2F0aW9uKSkpOworCQkJfQorCQkJZWxzZSBpZiAoIWN0eC0+aGFz X2NvbHVtbl9yZWYpCisJCQl7CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImFyZ3VtZW50IG9mIHJvdyBwYXR0 ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgY29sdW1u IHJlZmVyZW5jZSIpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjdHgtPnBzdGF0ZSwgbmF2 LT5sb2NhdGlvbikpKTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIFdhbGsgb2Zmc2V0IGFyZyhzKSBp biBQSEFTRV9OQVZfT0ZGU0VUIHRvIGVuZm9yY2UgdGhlCisJCQkgKiBjb25zdGFudC1vZmZzZXQg cnVsZS4gIEZvciBjb21wb3VuZCBmb3JtcywgYm90aCB0aGUgaW5uZXIKKwkJCSAqIChwb3N0LWZs YXR0ZW4gbmF2LT5vZmZzZXRfYXJnKSBhbmQgb3V0ZXIgKGNvbXBvdW5kX29mZnNldF9hcmcpCisJ CQkgKiBvZmZzZXRzIG11c3QgYmUgY29uc3RhbnRzOyB0aGUgaW5uZXIncyBjb2x1bW4tcmVmIHN0 YXR1cyB3YXMKKwkJCSAqIG5vdCBzZXBhcmF0ZWx5IHRyYWNrZWQgZHVyaW5nIHRoZSBQSEFTRV9O QVZfQVJHIHdhbGsgKHdoaWNoCisJCQkgKiBvbmx5IGNoZWNrcyB0aGF0IG5hdi5hcmcgYXMgYSB3 aG9sZSBoYXMgYXQgbGVhc3Qgb25lIFZhciksIHNvCisJCQkgKiBpdCBpcyByZS13YWxrZWQgaGVy ZSB0byBjYXRjaCBjb2x1bW4gcmVmZXJlbmNlcyB0aGUgaW5uZXIKKwkJCSAqIG9mZnNldCB3b3Vs ZCBoYXZlIGxlYWtlZC4KKwkJCSAqLworCQkJY3R4LT5waGFzZSA9IERFRklORV9QSEFTRV9OQVZf T0ZGU0VUOworCisJCQlpZiAobmF2LT5vZmZzZXRfYXJnICE9IE5VTEwpCisJCQl7CisJCQkJY3R4 LT5oYXNfY29sdW1uX3JlZiA9IGZhbHNlOworCQkJCSh2b2lkKSBkZWZpbmVfd2Fsa2VyKChOb2Rl ICopIG5hdi0+b2Zmc2V0X2FyZywgY3R4KTsKKwkJCQlpZiAoY3R4LT5oYXNfY29sdW1uX3JlZikK KwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9U X1NVUFBPUlRFRCksCisJCQkJCQkJIGVycm1zZygicm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZz ZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50IiksCisJCQkJCQkJIHBhcnNlcl9lcnJwb3Np dGlvbihjdHgtPnBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIG5hdi0+b2Zmc2V0X2FyZykp KSk7CisJCQl9CisJCQlpZiAoZmxhdHRlbmVkICYmIG5hdi0+Y29tcG91bmRfb2Zmc2V0X2FyZyAh PSBOVUxMKQorCQkJeworCQkJCWN0eC0+aGFzX2NvbHVtbl9yZWYgPSBmYWxzZTsKKwkJCQkodm9p ZCkgZGVmaW5lX3dhbGtlcigoTm9kZSAqKSBuYXYtPmNvbXBvdW5kX29mZnNldF9hcmcsIGN0eCk7 CisJCQkJaWYgKGN0eC0+aGFzX2NvbHVtbl9yZWYpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJCSBlcnJt c2coInJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25z dGFudCIpLAorCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3R4LT5wc3RhdGUsIGV4cHJMb2Nh dGlvbigoTm9kZSAqKSBuYXYtPmNvbXBvdW5kX29mZnNldF9hcmcpKSkpOworCQkJfQorCisJCQkq Y3R4ID0gc2F2ZWQ7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KIAl9Ci0JcmV0dXJuIGV4cHJlc3Np b25fdHJlZV93YWxrZXIobm9kZSwgY2hlY2tfcnByX25hdl9uZXN0aW5nX3dhbGtlciwgY29udGV4 dCk7CisKKwlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dhbGtlcihub2RlLCBkZWZpbmVfd2Fsa2Vy LCBjdHgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5oIGIvc3Jj L2luY2x1ZGUvb3B0aW1pemVyL3Jwci5oCmluZGV4IDBhMTRjZmFkNzliLi42M2M0YjA5ZGFmZiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5oCisrKyBiL3NyYy9pbmNsdWRl L29wdGltaXplci9ycHIuaApAQCAtNjIsNCArNjIsMjYgQEAgZXh0ZXJuIFJQUlBhdHRlcm4gKmJ1 aWxkUlBSUGF0dGVybihSUFJQYXR0ZXJuTm9kZSAqcGF0dGVybiwgTGlzdCAqZGVmaW5lVmFyaWFi bGUKIAkJCQkJCQkJICAgUlBTa2lwVG8gcnBTa2lwVG8sIGludCBmcmFtZU9wdGlvbnMsCiAJCQkJ CQkJCSAgIGJvb2wgaGFzTWF0Y2hTdGFydERlcGVuZGVudCk7CiAKKy8qCisgKiBTaGFyZWQgdHJh dmVyc2FsIHdhbGtlciBmb3IgREVGSU5FIGNsYXVzZSBSUFJOYXZFeHByIGNvbGxlY3Rpb24uCisg KgorICogQm90aCBwbGFubmVyIChuYXYtb2Zmc2V0IC8gbWF0Y2hfc3RhcnQgZGVwZW5kZW5jeSBh bmFseXNpcykgYW5kIGV4ZWN1dG9yCisgKiAocnVudGltZSBvZmZzZXQgZXZhbHVhdGlvbikgbmVl ZCB0byB3YWxrIERFRklORSBleHByZXNzaW9ucyBhbmQgZGlzcGF0Y2gKKyAqIHBlciBSUFJOYXZF eHByLiAgVGhleSBkaWZmZXIgb25seSBpbiB3aGF0IHRoZXkgZG8gYXQgZWFjaCBuYXYgbm9kZSwg c28KKyAqIHRoZSB0cmF2ZXJzYWwgZnJhbWUgaXMgc2hhcmVkIChuYXZfdHJhdmVyc2FsX3dhbGtl ciwgZGVmaW5lZCBpbiBycHIuYykKKyAqIGFuZCB0aGUgcGVyLW5hdiBhY3Rpb24gaXMgc3VwcGxp ZWQgYXMgYSBjYWxsYmFjay4gIFRoZSBkcml2ZXIgYWxsb2NhdGVzCisgKiBhIG1vZGUtc3BlY2lm aWMgY29udGV4dCwgcG9pbnRzIE5hdlRyYXZlcnNhbC5kYXRhIGF0IGl0LCBhbmQgY2FzdHMKKyAq IGluc2lkZSBpdHMgdmlzaXRvci4KKyAqLworc3RydWN0IE5hdlRyYXZlcnNhbDsKK3R5cGVkZWYg dm9pZCAoKk5hdlZpc2l0Rm4pIChzdHJ1Y3QgTmF2VHJhdmVyc2FsICp0LCBSUFJOYXZFeHByICpu YXYpOworCit0eXBlZGVmIHN0cnVjdCBOYXZUcmF2ZXJzYWwKK3sKKwlOYXZWaXNpdEZuCXZpc2l0 OworCXZvaWQJICAgKmRhdGE7CQkJLyogbW9kZS1zcGVjaWZpYyBjb250ZXh0ICovCit9IE5hdlRy YXZlcnNhbDsKKworZXh0ZXJuIGJvb2wgbmF2X3RyYXZlcnNhbF93YWxrZXIoTm9kZSAqbm9kZSwg dm9pZCAqY3R4KTsKKwogI2VuZGlmCQkJCQkJCS8qIE9QVElNSVpFUl9SUFJfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ycHIub3V0CmluZGV4IDg1Mzg0ZjZiMDk2Li44NzkzZGRhM2NjMyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcnByLm91dApAQCAtMTE0NCw3ICsxMTQ0LDMxIEBAIFdJTkRPVyB3IEFT ICgKICk7CiBFUlJPUjogIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3QgYmUgYSBy dW4tdGltZSBjb25zdGFudAogTElORSA3OiAgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgcHJp Y2UpID4gMAotICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorLS0gTm9uLWNvbnN0YW50IG9mZnNldDogY29sdW1uIHJlZmVyZW5j ZSBpbiBjb21wb3VuZCBpbm5lciBvZmZzZXQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5E T1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVS TiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKExBU1QocHJpY2UsIHByaWNlKSwgMikgPiAwCisp OworRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEgcnVuLXRp bWUgY29uc3RhbnQKK0xJTkUgNzogICAgIERFRklORSBBIEFTIFBSRVYoTEFTVChwcmljZSwgcHJp Y2UpLCAyKSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor LS0gTm9uLWNvbnN0YW50IG9mZnNldDogY29sdW1uIHJlZmVyZW5jZSBpbiBjb21wb3VuZCBvdXRl ciBvZmZzZXQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFS VElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUg QSBBUyBQUkVWKExBU1QocHJpY2UsIDEpLCBwcmljZSkgPiAwCispOworRVJST1I6ICByb3cgcGF0 dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEgcnVuLXRpbWUgY29uc3RhbnQKK0xJTkUg NzogICAgIERFRklORSBBIEFTIFBSRVYoTEFTVChwcmljZSwgMSksIHByaWNlKSA+IDAKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIC0tIE5vbi1jb25zdGFu dCBvZmZzZXQ6IHZvbGF0aWxlIGZ1bmN0aW9uIGFzIG9mZnNldAogU0VMRUNUIHByaWNlIEZST00g c3RvY2sKIFdJTkRPVyB3IEFTICgKQEAgLTExNTQsOSArMTE3OCw5IEBAIFdJTkRPVyB3IEFTICgK ICAgICBQQVRURVJOIChBKQogICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIHJhbmRvbSgpOjpp bnQpID4gMAogKTsKLUVSUk9SOiAgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBi ZSBhIHJ1bi10aW1lIGNvbnN0YW50CitFUlJPUjogIHZvbGF0aWxlIGZ1bmN0aW9ucyBhcmUgbm90 IGFsbG93ZWQgaW4gREVGSU5FIGNsYXVzZQogTElORSA3OiAgICAgREVGSU5FIEEgQVMgUFJFVihw cmljZSwgcmFuZG9tKCk6OmludCkgPiAwCi0gICAgICAgICAgICAgICAgICAgICAgICBeCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiAtLSBOb24tY29uc3RhbnQgb2Zmc2V0 OiBzdWJxdWVyeSBhcyBvZmZzZXQKIFNFTEVDVCBwcmljZSBGUk9NIHN0b2NrCiBXSU5ET1cgdyBB UyAoCkBAIC0xMTgxLDcgKzEyMDUsNyBAQCBXSU5ET1cgdyBBUyAoCiBFUlJPUjogIGNhbm5vdCB1 c2Ugc3VicXVlcnkgaW4gREVGSU5FIGV4cHJlc3Npb24KIExJTkUgNzogICAgIERFRklORSBBIEFT IFBSRVYocHJpY2UgKyAoU0VMRUNUIDEpKSA+IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCi0tLSBGaXJzdCBhcmc6IHZvbGF0aWxlIGZ1bmN0aW9uIGlzIGFsbG93ZWQg KGV2YWx1YXRlZCBvbiB0YXJnZXQgcm93KQorLS0gVm9sYXRpbGUgZnVuY3Rpb24gaW5zaWRlIG5h di5hcmcgaXMgcmVqZWN0ZWQgYXQgcGFyc2UgdGltZQogU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBw cmljZSwKICAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNl KSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdwogRlJPTSBzdG9jawpAQCAtMTE5MSwzMCArMTIxNSwy NCBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSspCiAgICAgREVGSU5FIEEgQVMgUFJF VihwcmljZSArIHJhbmRvbSgpICogMCkgPj0gMAogKTsKLSBjb21wYW55ICB8ICAgdGRhdGUgICAg fCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSB8IGNvdW50IAotLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCi0g Y29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgMAotIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAyMDAgfCAg ICAgICAgMTMwIHwgICAgIDkKLSBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCi0gY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAx NDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAotIGNvbXBhbnkxIHwgMDctMDUt MjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKLSBjb21wYW55 MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAw Ci0gY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgMAotIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgIDAKLSBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCi0gY29tcGFueTEgfCAwNy0xMC0yMDIzIHwg ICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAotIGNvbXBhbnkyIHwgMDct MDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKLSBjb21w YW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAyMDAwIHwgICAgICAgMTMwMCB8ICAg ICA5Ci0gY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAotIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgIDAKLSBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCi0gY29tcGFueTIgfCAwNy0wNi0yMDIz IHwgICAgNjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAotIGNvbXBhbnkyIHwg MDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKLSBj b21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAwCi0gY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAotIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKLSgyMCByb3dzKQotCitFUlJPUjogIHZvbGF0aWxl IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gREVGSU5FIGNsYXVzZQorTElORSA4OiAgICAg REVGSU5FIEEgQVMgUFJFVihwcmljZSArIHJhbmRvbSgpICogMCkgPj0gMAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIG5leHR2YWwgaXMgdm9sYXRpbGUgKHBlciBw Z19wcm9jKSwgc28gaXQgaXMgcmVqZWN0ZWQgdmlhIHRoZSBGdW5jRXhwcgorLS0gcGF0aCB3aXRo IHRoZSAidm9sYXRpbGUgZnVuY3Rpb25zIiBtZXNzYWdlCitDUkVBVEUgU0VRVUVOQ0UgcnByX3Nl cTsKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9O IEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBw cmljZSA+IG5leHR2YWwoJ3Jwcl9zZXEnKQorKTsKK0VSUk9SOiAgdm9sYXRpbGUgZnVuY3Rpb25z IGFyZSBub3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlCitMSU5FIDc6ICAgICBERUZJTkUgQSBB UyBwcmljZSA+IG5leHR2YWwoJ3Jwcl9zZXEnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCitEUk9QIFNFUVVFTkNFIHJwcl9zZXE7CiAtLQogLS0gMi1hcmcgUFJFVi9ORVhUOiBm dW5jdGlvbmFsIHRlc3RzCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ycHJfZXhwbGFpbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWlu Lm91dAppbmRleCBkYzM1MjJmOTMwZi4uMGEwNDlkMWJlYmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CkBAIC00NzQ0LDkgKzQ3NDQsOCBAQCBXSU5ET1cgdyBB UyAoCiAgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcwogKDUgcm93cykK IAotLS0gQ29tcG91bmQgTkVYVChGSVJTVCh2YWwsIE4pLCBNKTogY29uc3RhbnQgbG9va2FoZWFk IG92ZXJmbG93IC0+IG5vIHRyaW0gaW1wYWN0Ci0tLSBOICsgTSBvdmVyZmxvd3MgaW50NjQsIGJ1 dCB0YXJnZXQgaXMgZm9yd2FyZCBmcm9tIG1hdGNoX3N0YXJ0IHNvIGl0IG5ldmVyCi0tLSBjb25z dHJhaW5zIHRyaW0uICBMb29rYWhlYWQgcmVtYWlucyBhdCBkZWZhdWx0ICgwKS4KKy0tIENvbXBv dW5kIE5FWFQoRklSU1QodmFsLCBOKSwgTSk6IGNvbnN0YW50IGxvb2thaGVhZCBvdmVyZmxvdyAt PiBpbmZpbml0ZQorLS0gTiArIE0gb3ZlcmZsb3dzIGludDY0OyBmb3J3YXJkIHJlYWNoIGlzIHVu Ym91bmRlZCwgZGlzcGxheWVkIGFzIGluZmluaXRlLgogRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxF Q1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCiBXSU5E T1cgdyBBUyAoCkBAIC00NzYwLDcgKzQ3NTksNyBAQCBXSU5ET1cgdyBBUyAoCiAgICBXaW5kb3c6 IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykK ICAgIFBhdHRlcm46IGErCiAgICBOYXYgTWFyayBMb29rYmFjazogMAotICAgTmF2IE1hcmsgTG9v a2FoZWFkOiAwCisgICBOYXYgTWFyayBMb29rYWhlYWQ6IGluZmluaXRlCiAgICAtPiAgRnVuY3Rp b24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcwogKDYgcm93cykKIApAQCAtNDgwMyw3ICs0ODAy LDcgQEAgRVhQTEFJTiAoQ09TVFMgT0ZGLCBBTkFMWVpFLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKIAogUkVTRVQgcGxhbl9jYWNoZV9tb2RlOwogREVBTExPQ0FURSB0ZXN0X292ZXJmbG93X2xv b2tiYWNrOwotLS0gQ29tcG91bmQgTkVYVChGSVJTVCh2YWwsICQxKSwgJDIpOiBwYXJhbWV0ZXIg bG9va2FoZWFkIG92ZXJmbG93IC0+IG5vIHRyaW0gaW1wYWN0CistLSBDb21wb3VuZCBORVhUKEZJ UlNUKHZhbCwgJDEpLCAkMik6IHBhcmFtZXRlciBsb29rYWhlYWQgb3ZlcmZsb3cgLT4gaW5maW5p dGUKIFBSRVBBUkUgdGVzdF9vdmVyZmxvd19sb29rYWhlYWQoaW50OCwgaW50OCkgQVMKIFNFTEVD VCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKQEAgLTQ4 MjEsNyArNDgyMCw3IEBAIEVYUExBSU4gKENPU1RTIE9GRiwgQU5BTFlaRSwgVElNSU5HIE9GRiwg U1VNTUFSWSBPRkYpCiAgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKICAgIFBhdHRlcm46IGErCiAgICBOYXYgTWFyayBMb29r YmFjazogMAotICAgTmF2IE1hcmsgTG9va2FoZWFkOiAwCisgICBOYXYgTWFyayBMb29rYWhlYWQ6 IGluZmluaXRlCiAgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogMTdrQgogICAg TkZBIFN0YXRlczogMSBwZWFrLCAxMSB0b3RhbCwgMCBtZXJnZWQKICAgIE5GQSBDb250ZXh0czog MiBwZWFrLCAxMSB0b3RhbCwgMTAgcHJ1bmVkCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3Jwcl9pbnRlZ3JhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3Jwcl9pbnRlZ3JhdGlvbi5vdXQKaW5kZXggZWY2YTE1N2Y0NWQuLjkwNWJkMzUzOGRlIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9pbnRlZ3JhdGlvbi5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfaW50ZWdyYXRpb24ub3V0CkBAIC0xNDA2 LDIzICsxNDA2LDEyIEBAIERST1AgSU5ERVggcnByX2ludGVnX2lkX2lkeDsKIC0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0g QjkuIFJQUiArIFZvbGF0aWxlIGZ1bmN0aW9uIGluIERFRklORQogLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBSZWNvcmRz IHRoZSBjdXJyZW50IGJlaGF2aW91cjogREVGSU5FIHRvZGF5IGFjY2VwdHMgdm9sYXRpbGUKLS0t IGZ1bmN0aW9ucyBzdWNoIGFzIHJhbmRvbSgpIGFuZCB0aGUgcXVlcnkgcnVucyB0byBjb21wbGV0 aW9uLgotLS0gVG8ga2VlcCB0aGUgZXhwZWN0ZWQgb3V0cHV0IGRldGVybWluaXN0aWMgdGhlIHBy ZWRpY2F0ZSB1c2VzCi0tLSAicmFuZG9tKCkgPj0gMC4wIiwgd2hpY2ggaXMgc3RydWN0dXJhbGx5 IGVxdWl2YWxlbnQgdG8gVFJVRSBhbmQKLS0tIHRoZXJlZm9yZSBkb2VzIG5vdCBwZXJ0dXJiIHRo ZSBtYXRjaCByZXN1bHQuICBUaGUgaW50ZXJlc3RpbmcKLS0tIHByb3BlcnR5IGlzIHRoYXQgdm9s YXRpbGUgaW52b2NhdGlvbiBkb2VzIG5vdCBjcmFzaCBvciBzaG9ydC0KLS0tIGNpcmN1aXQgcGF0 dGVybiBtYXRjaGluZy4KLS0tCi0tLSBYWFg6IHZvbGF0aWxlIGZ1bmN0aW9ucyBpbiBERUZJTkUg YXJlIHNsYXRlZCB0byBiZSByZWplY3RlZCBhdAotLS0gcGFyc2UgdGltZS4gIFVuZGVyIFJQUidz IE5GQSBlbmdpbmUgdGhlIHNhbWUgcm93J3MgREVGSU5FCi0tLSBwcmVkaWNhdGUgbWF5IGJlIGV2 YWx1YXRlZCBtdWx0aXBsZSB0aW1lcyAoYmFja3RyYWNraW5nLAotLS0gUFJFVi9ORVhUIG5hdmln YXRpb24pLCBzbyBhIHRydWx5IHZvbGF0aWxlIHJlc3VsdCB3b3VsZCBtYWtlCi0tLSBwYXR0ZXJu IG1hdGNoaW5nIG5vbi1kZXRlcm1pbmlzdGljLiAgV2hlbiB0aGUgcHJvaGliaXRpb24gbGFuZHMs Ci0tLSB0aGlzIHRlc3QgbXVzdCBiZSByZXBsYWNlZCB3aXRoIGFuIGVycm9yLWNhc2UgdGVzdCB0 aGF0IGV4cGVjdHMKLS0tIHJhbmRvbSgpIGluIERFRklORSB0byBiZSByZWplY3RlZC4KKy0tIFZv bGF0aWxlIGZ1bmN0aW9ucyBpbiBERUZJTkUgYXJlIHJlamVjdGVkIGF0IHBhcnNlIHRpbWUuICBV bmRlcgorLS0gUlBSJ3MgTkZBIGVuZ2luZSB0aGUgc2FtZSByb3cncyBERUZJTkUgcHJlZGljYXRl IG1heSBiZSBldmFsdWF0ZWQKKy0tIG11bHRpcGxlIHRpbWVzIChiYWNrdHJhY2tpbmcsIFBSRVYv TkVYVCBuYXZpZ2F0aW9uKSwgc28gYSB2b2xhdGlsZQorLS0gcmVzdWx0IHdvdWxkIG1ha2UgcGF0 dGVybiBtYXRjaGluZyBub24tZGV0ZXJtaW5pc3RpYy4gIFNUQUJMRSBhbmQKKy0tIElNTVVUQUJM RSBjYWxsZWVzIGFyZSBhY2NlcHRlZC4KIC0tIEJhc2VsaW5lOiBTVEFCTEUgKHRvX2NoYXIpIGFu ZCBJTU1VVEFCTEUgKGxlbmd0aCkgY2FsbGVlcyBhcmUgYWNjZXB0ZWQuCi0tLSBUaGlzIGxvY2tz IHRoZSBib3VuZGFyeSBvZiB0aGUgdm9sYXRpbGUtb25seSBwcm9oaWJpdGlvbi4KIFNFTEVDVCBp ZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CiBGUk9NIHJwcl9pbnRlZwogV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkCkBAIC0xNDQ2LDcgKzE0MzUsNyBAQCBPUkRFUiBCWSBpZDsKICAxMCB8 ICA0NSB8ICAgMAogKDEwIHJvd3MpCiAKLS0tIFZvbGF0aWxlIChyYW5kb20pIGlzIHRoZSBwcm9o aWJpdGlvbiB0YXJnZXQ7IHRvZGF5IHN0aWxsIGFjY2VwdGVkLgorLS0gVm9sYXRpbGUgKHJhbmRv bSkgaXMgcmVqZWN0ZWQuCiBTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAog RlJPTSBycHJfaW50ZWcKIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZApAQCAtMTQ1NCwyMCArMTQ0 Myw5IEBAIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAogICAgIFBBVFRFUk4gKEEgQispCiAgICAg REVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpIEFORCByYW5kb20oKSA+PSAwLjApCiBPUkRFUiBC WSBpZDsKLSBpZCB8IHZhbCB8IGNudCAKLS0tLS0rLS0tLS0rLS0tLS0KLSAgMSB8ICAxMCB8ICAg MgotICAyIHwgIDIwIHwgICAwCi0gIDMgfCAgMTUgfCAgIDIKLSAgNCB8ICAyNSB8ICAgMAotICA1 IHwgICA1IHwgICAzCi0gIDYgfCAgMzAgfCAgIDAKLSAgNyB8ICAzNSB8ICAgMAotICA4IHwgIDIw IHwgICAzCi0gIDkgfCAgNDAgfCAgIDAKLSAxMCB8ICA0NSB8ICAgMAotKDEwIHJvd3MpCi0KK0VS Uk9SOiAgdm9sYXRpbGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNl CitMSU5FIDY6ICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkgQU5EIHJhbmRvbSgpID49 IDAuMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiAtLSBCMTAuIFJQUiArIENvcnJlbGF0ZWQgc3VicXVlcnkgaW4gV0hFUkUKIC0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3Jwci5zcWwKaW5kZXggNTU2M2UwNjJjZGUuLmU0NzkwZjc1YjBhIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3Jwci5zcWwKQEAgLTU0MSw2ICs1NDEsMjYgQEAgV0lORE9XIHcgQVMgKAogICAgIERFRklORSBB IEFTIFBSRVYocHJpY2UsIHByaWNlKSA+IDAKICk7CiAKKy0tIE5vbi1jb25zdGFudCBvZmZzZXQ6 IGNvbHVtbiByZWZlcmVuY2UgaW4gY29tcG91bmQgaW5uZXIgb2Zmc2V0CitTRUxFQ1QgcHJpY2Ug RlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5J VElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVihMQVNUKHByaWNlLCBw cmljZSksIDIpID4gMAorKTsKKworLS0gTm9uLWNvbnN0YW50IG9mZnNldDogY29sdW1uIHJlZmVy ZW5jZSBpbiBjb21wb3VuZCBvdXRlciBvZmZzZXQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitX SU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFU VEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKExBU1QocHJpY2UsIDEpLCBwcmljZSkgPiAw CispOworCiAtLSBOb24tY29uc3RhbnQgb2Zmc2V0OiB2b2xhdGlsZSBmdW5jdGlvbiBhcyBvZmZz ZXQKIFNFTEVDVCBwcmljZSBGUk9NIHN0b2NrCiBXSU5ET1cgdyBBUyAoCkBAIC01NzEsNyArNTkx LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UgKyAoU0VMRUNU IDEpKSA+IDAKICk7CiAKLS0tIEZpcnN0IGFyZzogdm9sYXRpbGUgZnVuY3Rpb24gaXMgYWxsb3dl ZCAoZXZhbHVhdGVkIG9uIHRhcmdldCByb3cpCistLSBWb2xhdGlsZSBmdW5jdGlvbiBpbnNpZGUg bmF2LmFyZyBpcyByZWplY3RlZCBhdCBwYXJzZSB0aW1lCiBTRUxFQ1QgY29tcGFueSwgdGRhdGUs IHByaWNlLAogICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJp Y2UpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CiBGUk9NIHN0b2NrCkBAIC01ODIsNiArNjAyLDE5 IEBAIFdJTkRPVyB3IEFTICgKICAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlICsgcmFuZG9tKCkg KiAwKSA+PSAwCiApOwogCistLSBuZXh0dmFsIGlzIHZvbGF0aWxlIChwZXIgcGdfcHJvYyksIHNv IGl0IGlzIHJlamVjdGVkIHZpYSB0aGUgRnVuY0V4cHIKKy0tIHBhdGggd2l0aCB0aGUgInZvbGF0 aWxlIGZ1bmN0aW9ucyIgbWVzc2FnZQorQ1JFQVRFIFNFUVVFTkNFIHJwcl9zZXE7CitTRUxFQ1Qg cHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55 CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBuZXh0 dmFsKCdycHJfc2VxJykKKyk7CitEUk9QIFNFUVVFTkNFIHJwcl9zZXE7CisKIC0tCiAtLSAyLWFy ZyBQUkVWL05FWFQ6IGZ1bmN0aW9uYWwgdGVzdHMKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhw bGFpbi5zcWwKaW5kZXggYTM3ODllOTI2MzEuLmUxMjNiZTYwYWVhIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcnByX2V4cGxhaW4uc3FsCkBAIC0yNjk5LDkgKzI2OTksOCBAQCBXSU5ET1cgdyBBUyAoCiAg ICAgREVGSU5FIEEgQVMgUFJFVihMQVNUKHYsIDQ2MTE2ODYwMTg0MjczODc5MDQpLCA0NjExNjg2 MDE4NDI3Mzg3OTA0KSBJUyBOT1QgTlVMTAogKTsKIAotLS0gQ29tcG91bmQgTkVYVChGSVJTVCh2 YWwsIE4pLCBNKTogY29uc3RhbnQgbG9va2FoZWFkIG92ZXJmbG93IC0+IG5vIHRyaW0gaW1wYWN0 Ci0tLSBOICsgTSBvdmVyZmxvd3MgaW50NjQsIGJ1dCB0YXJnZXQgaXMgZm9yd2FyZCBmcm9tIG1h dGNoX3N0YXJ0IHNvIGl0IG5ldmVyCi0tLSBjb25zdHJhaW5zIHRyaW0uICBMb29rYWhlYWQgcmVt YWlucyBhdCBkZWZhdWx0ICgwKS4KKy0tIENvbXBvdW5kIE5FWFQoRklSU1QodmFsLCBOKSwgTSk6 IGNvbnN0YW50IGxvb2thaGVhZCBvdmVyZmxvdyAtPiBpbmZpbml0ZQorLS0gTiArIE0gb3ZlcmZs b3dzIGludDY0OyBmb3J3YXJkIHJlYWNoIGlzIHVuYm91bmRlZCwgZGlzcGxheWVkIGFzIGluZmlu aXRlLgogRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdl bmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yNzI4LDcgKzI3Mjcs NyBAQCBFWFBMQUlOIChDT1NUUyBPRkYsIEFOQUxZWkUsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZG KQogUkVTRVQgcGxhbl9jYWNoZV9tb2RlOwogREVBTExPQ0FURSB0ZXN0X292ZXJmbG93X2xvb2ti YWNrOwogCi0tLSBDb21wb3VuZCBORVhUKEZJUlNUKHZhbCwgJDEpLCAkMik6IHBhcmFtZXRlciBs b29rYWhlYWQgb3ZlcmZsb3cgLT4gbm8gdHJpbSBpbXBhY3QKKy0tIENvbXBvdW5kIE5FWFQoRklS U1QodmFsLCAkMSksICQyKTogcGFyYW1ldGVyIGxvb2thaGVhZCBvdmVyZmxvdyAtPiBpbmZpbml0 ZQogUFJFUEFSRSB0ZXN0X292ZXJmbG93X2xvb2thaGVhZChpbnQ4LCBpbnQ4KSBBUwogU0VMRUNU IGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2ludGVncmF0aW9uLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwKaW5kZXggZDk3NDg5NzlkNTQuLjI5YjJk YjJmN2JiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfaW50ZWdyYXRpb24u c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwKQEAgLTg2 OCwyNCArODY4LDEzIEBAIERST1AgSU5ERVggcnByX2ludGVnX2lkX2lkeDsKIC0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0g QjkuIFJQUiArIFZvbGF0aWxlIGZ1bmN0aW9uIGluIERFRklORQogLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBSZWNvcmRz IHRoZSBjdXJyZW50IGJlaGF2aW91cjogREVGSU5FIHRvZGF5IGFjY2VwdHMgdm9sYXRpbGUKLS0t IGZ1bmN0aW9ucyBzdWNoIGFzIHJhbmRvbSgpIGFuZCB0aGUgcXVlcnkgcnVucyB0byBjb21wbGV0 aW9uLgotLS0gVG8ga2VlcCB0aGUgZXhwZWN0ZWQgb3V0cHV0IGRldGVybWluaXN0aWMgdGhlIHBy ZWRpY2F0ZSB1c2VzCi0tLSAicmFuZG9tKCkgPj0gMC4wIiwgd2hpY2ggaXMgc3RydWN0dXJhbGx5 IGVxdWl2YWxlbnQgdG8gVFJVRSBhbmQKLS0tIHRoZXJlZm9yZSBkb2VzIG5vdCBwZXJ0dXJiIHRo ZSBtYXRjaCByZXN1bHQuICBUaGUgaW50ZXJlc3RpbmcKLS0tIHByb3BlcnR5IGlzIHRoYXQgdm9s YXRpbGUgaW52b2NhdGlvbiBkb2VzIG5vdCBjcmFzaCBvciBzaG9ydC0KLS0tIGNpcmN1aXQgcGF0 dGVybiBtYXRjaGluZy4KLS0tCi0tLSBYWFg6IHZvbGF0aWxlIGZ1bmN0aW9ucyBpbiBERUZJTkUg YXJlIHNsYXRlZCB0byBiZSByZWplY3RlZCBhdAotLS0gcGFyc2UgdGltZS4gIFVuZGVyIFJQUidz IE5GQSBlbmdpbmUgdGhlIHNhbWUgcm93J3MgREVGSU5FCi0tLSBwcmVkaWNhdGUgbWF5IGJlIGV2 YWx1YXRlZCBtdWx0aXBsZSB0aW1lcyAoYmFja3RyYWNraW5nLAotLS0gUFJFVi9ORVhUIG5hdmln YXRpb24pLCBzbyBhIHRydWx5IHZvbGF0aWxlIHJlc3VsdCB3b3VsZCBtYWtlCi0tLSBwYXR0ZXJu IG1hdGNoaW5nIG5vbi1kZXRlcm1pbmlzdGljLiAgV2hlbiB0aGUgcHJvaGliaXRpb24gbGFuZHMs Ci0tLSB0aGlzIHRlc3QgbXVzdCBiZSByZXBsYWNlZCB3aXRoIGFuIGVycm9yLWNhc2UgdGVzdCB0 aGF0IGV4cGVjdHMKLS0tIHJhbmRvbSgpIGluIERFRklORSB0byBiZSByZWplY3RlZC4KKy0tIFZv bGF0aWxlIGZ1bmN0aW9ucyBpbiBERUZJTkUgYXJlIHJlamVjdGVkIGF0IHBhcnNlIHRpbWUuICBV bmRlcgorLS0gUlBSJ3MgTkZBIGVuZ2luZSB0aGUgc2FtZSByb3cncyBERUZJTkUgcHJlZGljYXRl IG1heSBiZSBldmFsdWF0ZWQKKy0tIG11bHRpcGxlIHRpbWVzIChiYWNrdHJhY2tpbmcsIFBSRVYv TkVYVCBuYXZpZ2F0aW9uKSwgc28gYSB2b2xhdGlsZQorLS0gcmVzdWx0IHdvdWxkIG1ha2UgcGF0 dGVybiBtYXRjaGluZyBub24tZGV0ZXJtaW5pc3RpYy4gIFNUQUJMRSBhbmQKKy0tIElNTVVUQUJM RSBjYWxsZWVzIGFyZSBhY2NlcHRlZC4KIAogLS0gQmFzZWxpbmU6IFNUQUJMRSAodG9fY2hhcikg YW5kIElNTVVUQUJMRSAobGVuZ3RoKSBjYWxsZWVzIGFyZSBhY2NlcHRlZC4KLS0tIFRoaXMgbG9j a3MgdGhlIGJvdW5kYXJ5IG9mIHRoZSB2b2xhdGlsZS1vbmx5IHByb2hpYml0aW9uLgogU0VMRUNU IGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKIEZST00gcnByX2ludGVnCiBXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQKQEAgLTg5Niw3ICs4ODUsNyBAQCBXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQKICAgICAgICAgICAgICAgICBBTkQgdG9fY2hhcihkYXRlICcyMDI2LTAxLTAxJywgJ1lZ WVknKSA9ICcyMDI2JykKIE9SREVSIEJZIGlkOwogCi0tLSBWb2xhdGlsZSAocmFuZG9tKSBpcyB0 aGUgcHJvaGliaXRpb24gdGFyZ2V0OyB0b2RheSBzdGlsbCBhY2NlcHRlZC4KKy0tIFZvbGF0aWxl IChyYW5kb20pIGlzIHJlamVjdGVkLgogU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBB UyBjbnQKIEZST00gcnByX2ludGVnCiBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKaW5kZXggOGU4ODlhYjVlMGYuLmQyM2IzOTI4MDBlIDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtNjYzLDcgKzY2MywxMCBAQCBEZWNvZGluZ1dvcmtlclNoYXJl ZAogRGVmRWxlbQogRGVmRWxlbUFjdGlvbgogRGVmYXVsdEFDTEluZm8KK0RlZmluZU1ldGFkYXRh Q29udGV4dAorRGVmaW5lUGhhc2UKIERlZmluZVN0bXQKK0RlZmluZVdhbGtDdHgKIERlZm5EdW1w ZXJQdHIKIERlbGV0ZVN0bXQKIERlcGVuZGVuY2llc1BhcnNlU3RhdGUKQEAgLTc2Miw4ICs3NjUs NyBAQCBFcnJvckRhdGEKIEVycm9yU2F2ZUNvbnRleHQKIEVzdGltYXRlRFNNRm9yZWlnblNjYW5f ZnVuY3Rpb24KIEVzdGltYXRpb25JbmZvCi1FdmFsTmF2Rmlyc3RDb250ZXh0Ci1FdmFsTmF2TWF4 Q29udGV4dAorRXZhbERlZmluZU9mZnNldHNDb250ZXh0CiBFdmVudFRyaWdnZXJDYWNoZUVudHJ5 CiBFdmVudFRyaWdnZXJDYWNoZUl0ZW0KIEV2ZW50VHJpZ2dlckNhY2hlU3RhdGVUeXBlCkBAIC0x ODI0LDggKzE4MjYsOCBAQCBOYW1lZExXTG9ja1RyYW5jaGVSZXF1ZXN0CiBOYW1lZFR1cGxlc3Rv cmVTY2FuCiBOYW1lZFR1cGxlc3RvcmVTY2FuU3RhdGUKIE5hbWVzcGFjZUluZm8KLU5hdkNoZWNr UmVzdWx0Ci1OYXZPZmZzZXRDb250ZXh0CitOYXZUcmF2ZXJzYWwKK05hdlZpc2l0Rm4KIE5lc3RM b29wCiBOZXN0TG9vcFBhcmFtCiBOZXN0TG9vcFN0YXRlCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0x NTUpCgo= --00000000000083509906515dabc6 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0003-Empty-match-EXPLAIN-coverage.txt" Content-Disposition: attachment; filename="nocfbot-0003-Empty-match-EXPLAIN-coverage.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moy1ckew2 RnJvbSA1NmViYjFhZDcwYTE1MmNiMjJkNGFkYjYwMDY5YjQ2MjU2NTk0MjFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUaHUsIDcgTWF5IDIwMjYgMTQ6Mjk6MTQgKzA5MDAKU3ViamVjdDogW1BBVENIIDAzLzExXSBD b3ZlciBSUFIgZW1wdHktbWF0Y2ggcGF0aCB3aXRoIEVYUExBSU4gdGVzdHM7IGZpeAogc3RhbGUg WFhYIGNvbW1lbnRzCgpUaGUgdGVzdF83MjhfKiBjYXNlcyBpbiBycHJfbmZhLnNxbCBjbGFpbWVk ICh2aWEgWFhYKSB0aGF0IHRoZSB2aXNpdGVkCmJpdG1hcCBibG9ja3MgZW1wdHkgaXRlcmF0aW9u cy4gIEluIGZhY3QgdGhlIE5GQSBmaW5kcyB0aGUgZW1wdHkKbWF0Y2hlczsgd2luZG93IGFnZ3Jl Z2F0ZXMganVzdCByZXR1cm4gMCAvIE5VTEwgb3ZlciB0aGUgbGVuZ3RoLTAKZnJhbWUsIGluZGlz dGluZ3Vpc2hhYmxlIGZyb20gIm5vIG1hdGNoIiB3aXRob3V0IE1BVENIX05VTUJFUigpLgoKUmVw bGFjZSB0aGUgWFhYIGNvbW1lbnRzIHdpdGggdGhlIGFjdHVhbCBiZWhhdmlvciwgYW5kIGFkZCBw YWlyZWQKRVhQTEFJTiBBTkFMWVpFIHRlc3RzIGluIHJwcl9leHBsYWluLnNxbCB0aGF0IGxvY2sg aW4KIk5GQTogMyBtYXRjaGVkIChsZW4gMC8wLzAuMCkiIGFzIG9ic2VydmFibGUgcmVncmVzc2lv biBjb3ZlcmFnZS4KLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91 dCB8IDIwMCArKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3Jwcl9uZmEub3V0ICAgICB8ICAyOSArKy0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhw bGFpbi5zcWwgICAgICB8IDExNiArKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9y cHJfbmZhLnNxbCAgICAgICAgICB8ICAyOSArKy0tCiA0IGZpbGVzIGNoYW5nZWQsIDM0MCBpbnNl cnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3Jwcl9leHBsYWluLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnBy X2V4cGxhaW4ub3V0CmluZGV4IDBhMDQ5ZDFiZWJhLi5jNDUxNmQzYzc1NiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQKQEAgLTIxMDIsNiArMjEwMiwyMDYgQEAg V0lORE9XIHcgQVMgKAogICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMg KGFjdHVhbCByb3dzPTAuMDAgbG9vcHM9MSkKICg1IHJvd3MpCiAKKy0tIEVtcHR5IG1hdGNoZXMg KGxlbmd0aCAwKTogbWlycm9yIHRoZSB0ZXN0XzcyOF8qIGNhc2VzIGluIHJwcl9uZmEuc3FsLgor LS0gV2luZG93IGFnZ3JlZ2F0ZXMgb3ZlciBhIGxlbmd0aC0wIGZyYW1lIHJldHVybiAwIC8gTlVM TCwgc28gdGhlIFNFTEVDVAorLS0gcmVzdWx0IGFsb25lIGNhbm5vdCBkaXN0aW5ndWlzaCAibm8g bWF0Y2giIGZyb20gImVtcHR5IG1hdGNoIjsgdGhlCistLSAiTkZBOiBOIG1hdGNoZWQgKGxlbiAw LzAvMC4wKSIgbGluZSBpbiBFWFBMQUlOIGlzIHRoZSBvbmx5IG9ic2VydmFibGUKKy0tIHByb29m IHRoYXQgdGhlIGVtcHR5IG1hdGNoZXMgd2VyZSBmb3VuZC4KKy0tIChBPyl7MCwzfTogbWluPTAs IEEgbmV2ZXIgbWF0Y2hlcyAtPiAzIGxlbmd0aC0wIG1hdGNoZXMKK0NSRUFURSBWSUVXIHJwcl9l dl9lZGdlX2VtcHR5X21hdGNoX21pbjAgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDMpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXswLDN9KQorICAgIERFRklORSBB IEFTIEZBTFNFCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBn X2dldF92aWV3ZGVmKCdycHJfZXZfZWRnZV9lbXB0eV9tYXRjaF9taW4wJyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgIGxpbmUgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhPyl7MCwzfSkgCisoMSByb3cp CisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyl7MCwz fSkKKyAgICBERUZJTkUgQSBBUyBGQUxTRQorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0zLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcg QVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAg IFBhdHRlcm46IChhPyl7MCwzfQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6 IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDYgcGVhaywgMjAg dG90YWwsIDQgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgNCB0b3RhbCwgMCBwcnVu ZWQKKyAgIE5GQTogMyBtYXRjaGVkIChsZW4gMC8wLzAuMCksIDAgbWlzbWF0Y2hlZAorICAgLT4g IEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTMuMDAgbG9v cHM9MSkKKyg5IHJvd3MpCisKKy0tIChBPyl7MSwzfTogbWluPTEsIG9uZSBlbXB0eSBpdGVyYXRp b24gc2F0aXNmaWVzIG1pbiAtPiAzIGxlbmd0aC0wIG1hdGNoZXMKK0NSRUFURSBWSUVXIHJwcl9l dl9lZGdlX2VtcHR5X21hdGNoX21pbjEgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDMpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXsxLDN9KQorICAgIERFRklORSBB IEFTIEZBTFNFCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBn X2dldF92aWV3ZGVmKCdycHJfZXZfZWRnZV9lbXB0eV9tYXRjaF9taW4xJyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgIGxpbmUgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhPyl7MSwzfSkgCisoMSByb3cp CisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyl7MSwz fSkKKyAgICBERUZJTkUgQSBBUyBGQUxTRQorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0zLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcg QVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAg IFBhdHRlcm46IChhPyl7MSwzfQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6 IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDUgcGVhaywgMTYg dG90YWwsIDQgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgNCB0b3RhbCwgMCBwcnVu ZWQKKyAgIE5GQTogMyBtYXRjaGVkIChsZW4gMC8wLzAuMCksIDAgbWlzbWF0Y2hlZAorICAgLT4g IEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTMuMDAgbG9v cHM9MSkKKyg5IHJvd3MpCisKKy0tIChBPyl7MiwzfTogbWluPTIgKFNRTDoyMDE2IFNUUjA2ID0g U1RSRSBTVFJFKSAtPiAzIGxlbmd0aC0wIG1hdGNoZXMKK0NSRUFURSBWSUVXIHJwcl9ldl9lZGdl X2VtcHR5X21hdGNoX21pbjIgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDMpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXsyLDN9KQorICAgIERFRklORSBBIEFTIEZB TFNFCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfZXZfZWRnZV9lbXB0eV9tYXRjaF9taW4yJyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgIGxpbmUgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhPyl7MiwzfSkgCisoMSByb3cpCisKK1NF TEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYs IENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyl7MiwzfSkKKyAg ICBERUZJTkUgQSBBUyBGQUxTRQorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBycHJf ZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg V2luZG93QWdnIChhY3R1YWwgcm93cz0zLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRl cm46IChhPyl7MiwzfQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9y eSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDUgcGVhaywgMTYgdG90YWws IDQgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgNCB0b3RhbCwgMCBwcnVuZWQKKyAg IE5GQTogMyBtYXRjaGVkIChsZW4gMC8wLzAuMCksIDAgbWlzbWF0Y2hlZAorICAgLT4gIEZ1bmN0 aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTMuMDAgbG9vcHM9MSkK Kyg5IHJvd3MpCisKKy0tIChBPyl7MiwzfSBtaXhlZDogcm93cyAxLTIgbWF0Y2ggQSAocmVhbCks IHJvd3MgMy00IGZhbGwgYmFjayB0byBlbXB0eQorQ1JFQVRFIFZJRVcgcnByX2V2X2VkZ2VfZW1w dHlfbWF0Y2hfbWl4ZWQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDQpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRP IE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXsyLDN9KQorICAgIERFRklORSBBIEFTIHYgPD0g MgorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbWl4ZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgbGluZSAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGE/KXsyLDN9KSAKKygxIHJvdykKKworU0VM RUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwg Q09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXsyLDN9KQorICAg IERFRklORSBBIEFTIHYgPD0gMgorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBycHJf ZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg V2luZG93QWdnIChhY3R1YWwgcm93cz00LjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRl cm46IChhPyl7MiwzfQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9y eSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDggcGVhaywgMjYgdG90YWws IDUgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDQgcGVhaywgNSB0b3RhbCwgMSBwcnVuZWQKKyAg IE5GQTogMyBtYXRjaGVkIChsZW4gMC8yLzEuMCksIDAgbWlzbWF0Y2hlZAorICAgLT4gIEZ1bmN0 aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTQuMDAgbG9vcHM9MSkK Kyg5IHJvd3MpCisKKy0tIChBPyBCPyl7MiwzfTogcHVyZSBlbXB0eSBtdWx0aS1lbGVtZW50IGJv ZHkgLT4gMyBsZW5ndGgtMCBtYXRjaGVzCitDUkVBVEUgVklFVyBycHJfZXZfZWRnZV9lbXB0eV9t YXRjaF9tdWx0aSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMykgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVY VCBST1cKKyAgICBQQVRURVJOICgoQT8gQj8pezIsM30pCisgICAgREVGSU5FIEEgQVMgRkFMU0Us IEIgQVMgRkFMU0UKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9lZGdlX2VtcHR5X21hdGNoX211bHRpJyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICBsaW5lICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhPyBiPyl7Miwz fSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5B TFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRF Uk4gKChBPyBCPyl7MiwzfSkKKyAgICBERUZJTkUgQSBBUyBGQUxTRSwgQiBBUyBGQUxTRQorKTsn KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0z LjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhPyBiPyl7MiwzfQorICAgTmF2 IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBO a0IKKyAgIE5GQSBTdGF0ZXM6IDYgcGVhaywgMjAgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29u dGV4dHM6IDIgcGVhaywgNCB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMyBtYXRjaGVkIChsZW4g MC8wLzAuMCksIDAgbWlzbWF0Y2hlZAorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVf c2VyaWVzIHMgKGFjdHVhbCByb3dzPTMuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKIC0tIFNpbmds ZSByb3cKIENSRUFURSBWSUVXIHJwcl9ldl9lZGdlX3NpbmdsZV9yb3cgQVMKIFNFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX25m YS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEub3V0CmluZGV4IGExOWIy NmMzYjk0Li40Y2ZmN2NmYmJkNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ycHJfbmZhLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEub3V0 CkBAIC00Mzk1LDkgKzQzOTUsOSBAQCBXSU5ET1cgdyBBUyAoCiAoMyByb3dzKQogCiAtLSAoQT8p ezAsM306IG1pbj0wLCBudWxsYWJsZSBpbm5lci4KLS0tIEEgbmV2ZXIgbWF0Y2hlcy4gQT8gbWF0 Y2hlcyBlbXB0eSwgbWluPTAgc2F0aXNmaWVkIGltbWVkaWF0ZWx5LgotLS0gUGVyIHN0YW5kYXJk OiBlbXB0eSBtYXRjaCBleHBlY3RlZCBmb3IgZXZlcnkgcm93LgotLS0gWFhYOiB2aXNpdGVkIGJp dG1hcCBibG9ja3MgZW1wdHkgaXRlcmF0aW9uIC0+IG5vIG1hdGNoIChzYW1lIGFzIHsyLDN9KQor LS0gQSBuZXZlciBtYXRjaGVzIGJ1dCBBPyBtYXRjaGVzIGVtcHR5LCBzYXRpc2Z5aW5nIG1pbj0w IGltbWVkaWF0ZWx5LgorLS0gTkZBIHJlcG9ydHMgMyBsZW5ndGgtMCBtYXRjaGVzIChvbmUgcGVy IHJvdyk7IGZpcnN0X3ZhbHVlIC8gbGFzdF92YWx1ZQorLS0gYXJlIE5VTEwgYmVjYXVzZSB0aGUg d2luZG93IGZyYW1lIGZvciBhbiBlbXB0eSBtYXRjaCBoYXMgbm8gcm93cy4KIFdJVEggdGVzdF83 MjhfbWluMCBBUyAoCiAgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCiAgICAgICAgICgxLCBBUlJB WVsnQiddKSwKQEAgLTQ0MjUsOSArNDQyNSw4IEBAIFdJTkRPVyB3IEFTICgKICgzIHJvd3MpCiAK IC0tIChBPyl7MSwzfTogbWluPTEsIG51bGxhYmxlIGlubmVyLgotLS0gQSBuZXZlciBtYXRjaGVz LiBOZWVkIDEgZW1wdHkgaXRlcmF0aW9uIHRvIHNhdGlzZnkgbWluPTEuCi0tLSBQZXIgc3RhbmRh cmQ6IGVtcHR5IG1hdGNoIGV4cGVjdGVkIGZvciBldmVyeSByb3cuCi0tLSBYWFg6IHZpc2l0ZWQg Yml0bWFwIGJsb2NrcyBlbXB0eSBpdGVyYXRpb24gLT4gbm8gbWF0Y2ggKHNhbWUgYXMgezIsM30p CistLSBBIG5ldmVyIG1hdGNoZXM7IG9uZSBlbXB0eSBpdGVyYXRpb24gc2F0aXNmaWVzIG1pbj0x LgorLS0gTkZBIHJlcG9ydHMgMyBsZW5ndGgtMCBtYXRjaGVzOyBmaXJzdC9sYXN0X3ZhbHVlIE5V TEwgb3ZlciBlbXB0eSBmcmFtZS4KIFdJVEggdGVzdF83MjhfbWluMSBBUyAoCiAgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCiAgICAgICAgICgxLCBBUlJBWVsnQiddKSwKQEAgLTQ0NTQsMTEgKzQ0 NTMsOSBAQCBXSU5ET1cgdyBBUyAoCiAgIDMgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCiAoMyByb3dzKQogCi0tLSAoQT8pezIsM306IG1pbj0yLCBudWxsYWJsZSBpbm5lci4KLS0t IEEgbmV2ZXIgbWF0Y2hlcy4gTmVlZCAyIGVtcHR5IGl0ZXJhdGlvbnMgdG8gc2F0aXNmeSBtaW49 Mi4KLS0tIFBlciBzdGFuZGFyZDogU1RSMDY9KFNUUkUgU1RSRSkgaXMgdmFsaWQgZm9yIG1pbj0y LgotLS0gRXhwZWN0ZWQ6IGVtcHR5IG1hdGNoIGZvciBldmVyeSByb3cKLS0tIFhYWDogdmlzaXRl ZCBiaXRtYXAgYmxvY2tzIHNlY29uZCBlbXB0eSBpdGVyYXRpb24gLT4gbWF0Y2ggZmFpbHVyZQor LS0gKEE/KXsyLDN9OiBtaW49MiwgbnVsbGFibGUgaW5uZXIuICBQZXIgU1FMOjIwMTYgU1RSMDYg PSAoU1RSRSBTVFJFKQorLS0gaXMgdmFsaWQ6IHR3byBlbXB0eSBpdGVyYXRpb25zIHNhdGlzZnkg bWluPTIuCistLSBORkEgcmVwb3J0cyAzIGxlbmd0aC0wIG1hdGNoZXM7IGZpcnN0L2xhc3RfdmFs dWUgTlVMTCBvdmVyIGVtcHR5IGZyYW1lLgogV0lUSCB0ZXN0XzcyOF9taW4yIEFTICgKICAgICBT RUxFQ1QgKiBGUk9NIChWQUxVRVMKICAgICAgICAgKDEsIEFSUkFZWydCJ10pLApAQCAtNDQ4Niw5 ICs0NDgzLDggQEAgV0lORE9XIHcgQVMgKAogKDMgcm93cykKIAogLS0gKEE/KXsyLDN9IG1peGVk OiBzb21lIHJvd3MgbWF0Y2ggQSwgc29tZSBkb24ndAotLS0gUm93cyAxLTI6IEEgbWF0Y2hlcywg Z3JlZWR5IHRha2VzIDIgLT4gbWluIHNhdGlzZmllZAotLS0gUm93IDM6IEEgZG9lc24ndCBtYXRj aCwgbmVlZHMgMiBlbXB0eSBpdGVyYXRpb25zIGZvciBtaW49MgotLS0gWFhYOiBSb3cgMyBmYWls cyBkdWUgdG8gdmlzaXRlZCBiaXRtYXAgKHNhbWUgYXMgcHVyZSBlbXB0eSB7MiwzfSkKKy0tIFJv d3MgMS0yOiBBIG1hdGNoZXMsIGdyZWVkeSB0YWtlcyAyIC0+IG1pbiBzYXRpc2ZpZWQgKHJlYWwg bWF0Y2gpCistLSBSb3cgMzogQSBkb2Vzbid0IG1hdGNoLCB0d28gZW1wdHkgaXRlcmF0aW9ucyBz YXRpc2Z5IG1pbj0yIChsZW5ndGgtMCBtYXRjaCkKIC0tIFJvdyA0OiBBIG1hdGNoZXMgMSByZWFs IGl0ZXIgKyAxIGZmIGVtcHR5IGV4aXQgLT4gbWF0Y2ggNC00CiBXSVRIIHRlc3RfNzI4X21pbjJf bWl4ZWQgQVMgKAogICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwpAQCAtNDU1OSw5ICs0NTU1LDgg QEAgV0lORE9XIHcgQVMgKAogICA2IHwge0J9ICAgfCAgICAgICAgICAgNiB8ICAgICAgICAgNgog KDYgcm93cykKIAotLS0gKEE/IEI/KXsyLDN9OiBwdXJlIGVtcHR5IGJvZHkgKG5vdGhpbmcgbWF0 Y2hlcykKLS0tIFhYWDogQWxsIE5VTEw6IHNhbWUgaXNzdWUgYXMgdGVzdF83MjhfbWluMiAoZW1w dHkgbWF0Y2ggYXQgY29udGV4dAotLS0gc3RhcnQgeWllbGRzIFVOTUFUQ0hFRCB2aWEgc3RhcnRQ b3MtMSBpbml0aWFsIGFkdmFuY2UpCistLSAoQT8gQj8pezIsM306IHB1cmUgZW1wdHkgYm9keSAo bm90aGluZyBtYXRjaGVzIEEgb3IgQikuCistLSBORkEgcmVwb3J0cyAzIGxlbmd0aC0wIG1hdGNo ZXM7IGZpcnN0L2xhc3RfdmFsdWUgTlVMTCBvdmVyIGVtcHR5IGZyYW1lLgogV0lUSCB0ZXN0Xzcy OF9tdWx0aV9lbXB0eSBBUyAoCiAgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCiAgICAgICAgICgx LCBBUlJBWVsnQyddKSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBs YWluLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbAppbmRleCBlMTIz YmU2MGFlYS4uZDMzOWE4MGE2NzMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jw cl9leHBsYWluLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwK QEAgLTExNzgsNiArMTE3OCwxMjIgQEAgV0lORE9XIHcgQVMgKAogICAgIERFRklORSBBIEFTIHYg PSAxLCBCIEFTIHYgPSAyCiApOycpOwogCistLSBFbXB0eSBtYXRjaGVzIChsZW5ndGggMCk6IG1p cnJvciB0aGUgdGVzdF83MjhfKiBjYXNlcyBpbiBycHJfbmZhLnNxbC4KKy0tIFdpbmRvdyBhZ2dy ZWdhdGVzIG92ZXIgYSBsZW5ndGgtMCBmcmFtZSByZXR1cm4gMCAvIE5VTEwsIHNvIHRoZSBTRUxF Q1QKKy0tIHJlc3VsdCBhbG9uZSBjYW5ub3QgZGlzdGluZ3Vpc2ggIm5vIG1hdGNoIiBmcm9tICJl bXB0eSBtYXRjaCI7IHRoZQorLS0gIk5GQTogTiBtYXRjaGVkIChsZW4gMC8wLzAuMCkiIGxpbmUg aW4gRVhQTEFJTiBpcyB0aGUgb25seSBvYnNlcnZhYmxlCistLSBwcm9vZiB0aGF0IHRoZSBlbXB0 eSBtYXRjaGVzIHdlcmUgZm91bmQuCisKKy0tIChBPyl7MCwzfTogbWluPTAsIEEgbmV2ZXIgbWF0 Y2hlcyAtPiAzIGxlbmd0aC0wIG1hdGNoZXMKK0NSRUFURSBWSUVXIHJwcl9ldl9lZGdlX2VtcHR5 X21hdGNoX21pbjAgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDMpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5F WFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXswLDN9KQorICAgIERFRklORSBBIEFTIEZBTFNFCisp OworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfZXZfZWRnZV9lbXB0eV9tYXRjaF9taW4wJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFU VEVSTiAoKEE/KXswLDN9KQorICAgIERFRklORSBBIEFTIEZBTFNFCispOycpOworCistLSAoQT8p ezEsM306IG1pbj0xLCBvbmUgZW1wdHkgaXRlcmF0aW9uIHNhdGlzZmllcyBtaW4gLT4gMyBsZW5n dGgtMCBtYXRjaGVzCitDUkVBVEUgVklFVyBycHJfZXZfZWRnZV9lbXB0eV9tYXRjaF9taW4xIEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKChBPyl7MSwzfSkKKyAgICBERUZJTkUgQSBBUyBGQUxTRQorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2VkZ2Vf ZW1wdHlfbWF0Y2hfbWluMScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJO JzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyl7MSwz fSkKKyAgICBERUZJTkUgQSBBUyBGQUxTRQorKTsnKTsKKworLS0gKEE/KXsyLDN9OiBtaW49MiAo U1FMOjIwMTYgU1RSMDYgPSBTVFJFIFNUUkUpIC0+IDMgbGVuZ3RoLTAgbWF0Y2hlcworQ1JFQVRF IFZJRVcgcnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbWluMiBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8pezIsM30pCisg ICAgREVGSU5FIEEgQVMgRkFMU0UKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9lZGdlX2VtcHR5X21hdGNoX21pbjInKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8pezIsM30pCisgICAgREVGSU5FIEEgQVMg RkFMU0UKKyk7Jyk7CisKKy0tIChBPyl7MiwzfSBtaXhlZDogcm93cyAxLTIgbWF0Y2ggQSAocmVh bCksIHJvd3MgMy00IGZhbGwgYmFjayB0byBlbXB0eQorQ1JFQVRFIFZJRVcgcnByX2V2X2VkZ2Vf ZW1wdHlfbWF0Y2hfbWl4ZWQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDQpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXsyLDN9KQorICAgIERFRklORSBBIEFTIHYg PD0gMgorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbWl4ZWQnKSwgRSdcbicpKSBBUyBsaW5l IFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VY UExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1B UlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cK KyAgICBQQVRURVJOICgoQT8pezIsM30pCisgICAgREVGSU5FIEEgQVMgdiA8PSAyCispOycpOwor CistLSAoQT8gQj8pezIsM306IHB1cmUgZW1wdHkgbXVsdGktZWxlbWVudCBib2R5IC0+IDMgbGVu Z3RoLTAgbWF0Y2hlcworQ1JFQVRFIFZJRVcgcnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbXVsdGkg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAg UEFUVEVSTiAoKEE/IEI/KXsyLDN9KQorICAgIERFRklORSBBIEFTIEZBTFNFLCBCIEFTIEZBTFNF CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXZfZWRnZV9lbXB0eV9tYXRjaF9tdWx0aScpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAg IFBBVFRFUk4gKChBPyBCPyl7MiwzfSkKKyAgICBERUZJTkUgQSBBUyBGQUxTRSwgQiBBUyBGQUxT RQorKTsnKTsKKwogLS0gU2luZ2xlIHJvdwogQ1JFQVRFIFZJRVcgcnByX2V2X2VkZ2Vfc2luZ2xl X3JvdyBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcnByX25mYS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfbmZhLnNxbApp bmRleCAxZDI3ZTBkYzA5ZS4uMjllYzRhOWRhY2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3Jwcl9uZmEuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9uZmEuc3Fs CkBAIC0zMjM0LDkgKzMyMzQsOSBAQCBXSU5ET1cgdyBBUyAoCiApOwogCiAtLSAoQT8pezAsM306 IG1pbj0wLCBudWxsYWJsZSBpbm5lci4KLS0tIEEgbmV2ZXIgbWF0Y2hlcy4gQT8gbWF0Y2hlcyBl bXB0eSwgbWluPTAgc2F0aXNmaWVkIGltbWVkaWF0ZWx5LgotLS0gUGVyIHN0YW5kYXJkOiBlbXB0 eSBtYXRjaCBleHBlY3RlZCBmb3IgZXZlcnkgcm93LgotLS0gWFhYOiB2aXNpdGVkIGJpdG1hcCBi bG9ja3MgZW1wdHkgaXRlcmF0aW9uIC0+IG5vIG1hdGNoIChzYW1lIGFzIHsyLDN9KQorLS0gQSBu ZXZlciBtYXRjaGVzIGJ1dCBBPyBtYXRjaGVzIGVtcHR5LCBzYXRpc2Z5aW5nIG1pbj0wIGltbWVk aWF0ZWx5LgorLS0gTkZBIHJlcG9ydHMgMyBsZW5ndGgtMCBtYXRjaGVzIChvbmUgcGVyIHJvdyk7 IGZpcnN0X3ZhbHVlIC8gbGFzdF92YWx1ZQorLS0gYXJlIE5VTEwgYmVjYXVzZSB0aGUgd2luZG93 IGZyYW1lIGZvciBhbiBlbXB0eSBtYXRjaCBoYXMgbm8gcm93cy4KIFdJVEggdGVzdF83MjhfbWlu MCBBUyAoCiAgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCiAgICAgICAgICgxLCBBUlJBWVsnQidd KSwKQEAgLTMyNTgsOSArMzI1OCw4IEBAIFdJTkRPVyB3IEFTICgKICk7CiAKIC0tIChBPyl7MSwz fTogbWluPTEsIG51bGxhYmxlIGlubmVyLgotLS0gQSBuZXZlciBtYXRjaGVzLiBOZWVkIDEgZW1w dHkgaXRlcmF0aW9uIHRvIHNhdGlzZnkgbWluPTEuCi0tLSBQZXIgc3RhbmRhcmQ6IGVtcHR5IG1h dGNoIGV4cGVjdGVkIGZvciBldmVyeSByb3cuCi0tLSBYWFg6IHZpc2l0ZWQgYml0bWFwIGJsb2Nr cyBlbXB0eSBpdGVyYXRpb24gLT4gbm8gbWF0Y2ggKHNhbWUgYXMgezIsM30pCistLSBBIG5ldmVy IG1hdGNoZXM7IG9uZSBlbXB0eSBpdGVyYXRpb24gc2F0aXNmaWVzIG1pbj0xLgorLS0gTkZBIHJl cG9ydHMgMyBsZW5ndGgtMCBtYXRjaGVzOyBmaXJzdC9sYXN0X3ZhbHVlIE5VTEwgb3ZlciBlbXB0 eSBmcmFtZS4KIFdJVEggdGVzdF83MjhfbWluMSBBUyAoCiAgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCiAgICAgICAgICgxLCBBUlJBWVsnQiddKSwKQEAgLTMyODEsMTEgKzMyODAsOSBAQCBXSU5E T1cgdyBBUyAoCiAgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQogKTsKIAotLS0gKEE/KXsy LDN9OiBtaW49MiwgbnVsbGFibGUgaW5uZXIuCi0tLSBBIG5ldmVyIG1hdGNoZXMuIE5lZWQgMiBl bXB0eSBpdGVyYXRpb25zIHRvIHNhdGlzZnkgbWluPTIuCi0tLSBQZXIgc3RhbmRhcmQ6IFNUUjA2 PShTVFJFIFNUUkUpIGlzIHZhbGlkIGZvciBtaW49Mi4KLS0tIEV4cGVjdGVkOiBlbXB0eSBtYXRj aCBmb3IgZXZlcnkgcm93Ci0tLSBYWFg6IHZpc2l0ZWQgYml0bWFwIGJsb2NrcyBzZWNvbmQgZW1w dHkgaXRlcmF0aW9uIC0+IG1hdGNoIGZhaWx1cmUKKy0tIChBPyl7MiwzfTogbWluPTIsIG51bGxh YmxlIGlubmVyLiAgUGVyIFNRTDoyMDE2IFNUUjA2ID0gKFNUUkUgU1RSRSkKKy0tIGlzIHZhbGlk OiB0d28gZW1wdHkgaXRlcmF0aW9ucyBzYXRpc2Z5IG1pbj0yLgorLS0gTkZBIHJlcG9ydHMgMyBs ZW5ndGgtMCBtYXRjaGVzOyBmaXJzdC9sYXN0X3ZhbHVlIE5VTEwgb3ZlciBlbXB0eSBmcmFtZS4K IFdJVEggdGVzdF83MjhfbWluMiBBUyAoCiAgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCiAgICAg ICAgICgxLCBBUlJBWVsnQiddKSwKQEAgLTMzMDcsOSArMzMwNCw4IEBAIFdJTkRPVyB3IEFTICgK ICk7CiAKIC0tIChBPyl7MiwzfSBtaXhlZDogc29tZSByb3dzIG1hdGNoIEEsIHNvbWUgZG9uJ3QK LS0tIFJvd3MgMS0yOiBBIG1hdGNoZXMsIGdyZWVkeSB0YWtlcyAyIC0+IG1pbiBzYXRpc2ZpZWQK LS0tIFJvdyAzOiBBIGRvZXNuJ3QgbWF0Y2gsIG5lZWRzIDIgZW1wdHkgaXRlcmF0aW9ucyBmb3Ig bWluPTIKLS0tIFhYWDogUm93IDMgZmFpbHMgZHVlIHRvIHZpc2l0ZWQgYml0bWFwIChzYW1lIGFz IHB1cmUgZW1wdHkgezIsM30pCistLSBSb3dzIDEtMjogQSBtYXRjaGVzLCBncmVlZHkgdGFrZXMg MiAtPiBtaW4gc2F0aXNmaWVkIChyZWFsIG1hdGNoKQorLS0gUm93IDM6IEEgZG9lc24ndCBtYXRj aCwgdHdvIGVtcHR5IGl0ZXJhdGlvbnMgc2F0aXNmeSBtaW49MiAobGVuZ3RoLTAgbWF0Y2gpCiAt LSBSb3cgNDogQSBtYXRjaGVzIDEgcmVhbCBpdGVyICsgMSBmZiBlbXB0eSBleGl0IC0+IG1hdGNo IDQtNAogV0lUSCB0ZXN0XzcyOF9taW4yX21peGVkIEFTICgKICAgICBTRUxFQ1QgKiBGUk9NIChW QUxVRVMKQEAgLTMzNjQsOSArMzM2MCw4IEBAIFdJTkRPVyB3IEFTICgKICAgICAgICAgQiBBUyAn QicgPSBBTlkoZmxhZ3MpCiApOwogCi0tLSAoQT8gQj8pezIsM306IHB1cmUgZW1wdHkgYm9keSAo bm90aGluZyBtYXRjaGVzKQotLS0gWFhYOiBBbGwgTlVMTDogc2FtZSBpc3N1ZSBhcyB0ZXN0Xzcy OF9taW4yIChlbXB0eSBtYXRjaCBhdCBjb250ZXh0Ci0tLSBzdGFydCB5aWVsZHMgVU5NQVRDSEVE IHZpYSBzdGFydFBvcy0xIGluaXRpYWwgYWR2YW5jZSkKKy0tIChBPyBCPyl7MiwzfTogcHVyZSBl bXB0eSBib2R5IChub3RoaW5nIG1hdGNoZXMgQSBvciBCKS4KKy0tIE5GQSByZXBvcnRzIDMgbGVu Z3RoLTAgbWF0Y2hlczsgZmlyc3QvbGFzdF92YWx1ZSBOVUxMIG92ZXIgZW1wdHkgZnJhbWUuCiBX SVRIIHRlc3RfNzI4X211bHRpX2VtcHR5IEFTICgKICAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMK ICAgICAgICAgKDEsIEFSUkFZWydDJ10pLAotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --00000000000083509906515dabc6 Content-Type: text/plain; charset="UTF-8"; name="nocfbot-0004-Reclassify-DEFINE-qualifier-check.txt" Content-Disposition: attachment; filename="nocfbot-0004-Reclassify-DEFINE-qualifier-check.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moy1cn7c3 RnJvbSBhZjlmNTBlZDE1MjJiZGE3MTZkMTBlZGY5MzJiYzVhZWI0YjBjYjM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDUgTWF5IDIwMjYgMTE6MzY6NTMgKzA5MDAKU3ViamVjdDogW1BBVENIIDA0LzExXSBS ZWNsYXNzaWZ5IERFRklORSBxdWFsaWZpZXIgY2hlY2sgYW5kIHJld29yZCBkaWFnbm9zdGljCiB0 byAiZXhwcmVzc2lvbiIKClNwbGl0IHRoZSBwcmUtY2hlY2sgaW50byB0aHJlZSBicmFuY2hlczog cGF0dGVybiB2YXJpYWJsZSAtPgpGRUFUVVJFX05PVF9TVVBQT1JURUQsIHJhbmdlIHZhcmlhYmxl ICh2aWEgcmVmbmFtZU5hbWVzcGFjZUl0ZW0pIC0+ClNZTlRBWF9FUlJPUiwgYW55dGhpbmcgZWxz ZSAtPiBmYWxsIHRocm91Z2ggdG8gbm9ybWFsIHJlc29sdXRpb24uClJld29yZCAicXVhbGlmaWVk IGNvbHVtbiByZWZlcmVuY2UiIHRvICJxdWFsaWZpZWQgZXhwcmVzc2lvbiIgc2luY2UKdGhlIHF1 b3RlZCB0b2tlbiBtYXkgaW5jbHVkZSBhbiBpbmRpcmVjdGlvbiB0YXJnZXQgb24gY29tcG9zaXRl CnR5cGVzIChlLmcuIChBLml0ZW1zKS5hbW91bnQpLgotLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9leHByLmMgICAgICAgIHwgMzEgKysrKysrKy0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ycHJfYmFzZS5vdXQgfCA4MCArKysrKysrKysrKysrKysrKysrKysrKy0tLQogc3JjL3Rl c3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsICAgICAgfCA2MSArKysrKysrKysrKysrKysrKyst LQogMyBmaWxlcyBjaGFuZ2VkLCAxNTMgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggZjE0NTM0MmUxZmIuLjY5MTQ4MzI4NzE5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTYyOCwxMSArNjI4LDI0IEBAIHRyYW5zZm9ybUNvbHVt blJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAlpZiAobm9kZSAhPSBO VUxMKQogCQlyZXR1cm4gbm9kZTsKIAotCS8qCi0JICogUXVhbGlmaWVkIGNvbHVtbiByZWZlcmVu Y2VzIGluIERFRklORSBhcmUgbm90IHN1cHBvcnRlZC4gIFRoaXMgY292ZXJzCi0JICogYm90aCBG Uk9NLWNsYXVzZSByYW5nZSB2YXJpYWJsZXMgKHByb2hpYml0ZWQgYnkgwqc2LjUpIGFuZCBwYXR0 ZXJuCi0JICogdmFyaWFibGUgcXVhbGlmaWVkIG5hbWVzIChlLmcuIFVQLnByaWNlKSwgd2hpY2gg YXJlIHZhbGlkIHBlciDCpzQuMTYKLQkgKiBidXQgbm90IHlldCBpbXBsZW1lbnRlZC4KKwkvKi0t LS0tLS0tLS0KKwkgKiBRdWFsaWZpZWQgcmVmZXJlbmNlcyBpbiBERUZJTkUgbmVlZCBhIHRyaS1j bGFzc2lmaWNhdGlvbjoKKwkgKgorCSAqCSAgcGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZXIgKGUu Zy4gVVAucHJpY2UpOiB2YWxpZCBwZXIgMTkwNzUtNSA0LjE2CisJICoJICBidXQgbm90IHlldCBp bXBsZW1lbnRlZCAtLSByYWlzZSBGRUFUVVJFX05PVF9TVVBQT1JURUQuCisJICoKKwkgKgkgIEZS T00tY2xhdXNlIHJhbmdlIHZhcmlhYmxlIHF1YWxpZmllcjogcHJvaGliaXRlZCBieSAxOTA3NS01 IDYuNQorCSAqCSAgLS0gcmFpc2UgU1lOVEFYX0VSUk9SLgorCSAqCisJICoJICBhbnkgb3RoZXIg cXVhbGlmaWVyICh0eXBvLCB1bmRlZmluZWQgbmFtZSk6IGZhbGwgdGhyb3VnaCBhbmQgbGV0CisJ ICoJICBub3JtYWwgY29sdW1uIHJlc29sdXRpb24gcHJvZHVjZSBhIHNlbnNpYmxlIGVycm9yLgor CSAqCisJICogVGhlIHF1b3RlZCB0ZXh0IHJlZmxlY3RzIG9ubHkgdGhlIENvbHVtblJlZiBwb3J0 aW9uOyBhIHRyYWlsaW5nIGZpZWxkCisJICogc2VsZWN0aW9uIG9uIGEgY29tcG9zaXRlIHR5cGUg KGUuZy4gIi5hbW91bnQiIGluICIoQS5pdGVtcykuYW1vdW50IikKKwkgKiBsaXZlcyBpbiB0aGUg c3Vycm91bmRpbmcgQV9JbmRpcmVjdGlvbiBub2RlIGFuZCBpcyBub3QgaW5jbHVkZWQgaGVyZS4K KwkgKiBUaGF0IGNhbiBiZSByZXZpc2l0ZWQgd2hlbiBNRUFTVVJFUyBzdXBwb3J0IGFkZHMgaW5k aXJlY3Rpb24tYXdhcmUKKwkgKiB0cmF2ZXJzYWwuCisJICotLS0tLS0tLS0tCiAJICovCiAJaWYg KHBzdGF0ZS0+cF9leHByX2tpbmQgPT0gRVhQUl9LSU5EX1JQUl9ERUZJTkUgJiYKIAkJbGlzdF9s ZW5ndGgoY3JlZi0+ZmllbGRzKSAhPSAxKQpAQCAtNjUzLDE1ICs2NjYsMTcgQEAgdHJhbnNmb3Jt Q29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCQlpZiAoaXNf cGF0dGVybl92YXIpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCSBlcnJtc2coInBhdHRlcm4gdmFyaWFibGUgcXVh bGlmaWVkIGNvbHVtbiByZWZlcmVuY2UgXCIlc1wiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gREVGSU5F IGNsYXVzZSIsCisJCQkJCSBlcnJtc2coInBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJl c3Npb24gXCIlc1wiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gREVGSU5FIGNsYXVzZSIsCiAJCQkJCQkJ TmFtZUxpc3RUb1N0cmluZyhjcmVmLT5maWVsZHMpKSwKIAkJCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsIGNyZWYtPmxvY2F0aW9uKSkpOwotCQllbHNlCisJCWVsc2UgaWYgKHJlZm5hbWVO YW1lc3BhY2VJdGVtKHBzdGF0ZSwgTlVMTCwgcXVhbGlmaWVyLAorCQkJCQkJCQkJICBjcmVmLT5s b2NhdGlvbiwgTlVMTCkgIT0gTlVMTCkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQkJIGVycm1zZygicmFuZ2UgdmFyaWFibGUgcXVh bGlmaWVkIGNvbHVtbiByZWZlcmVuY2UgXCIlc1wiIGlzIG5vdCBhbGxvd2VkIGluIERFRklORSBj bGF1c2UiLAorCQkJCQkgZXJybXNnKCJyYW5nZSB2YXJpYWJsZSBxdWFsaWZpZWQgZXhwcmVzc2lv biBcIiVzXCIgaXMgbm90IGFsbG93ZWQgaW4gREVGSU5FIGNsYXVzZSIsCiAJCQkJCQkJTmFtZUxp c3RUb1N0cmluZyhjcmVmLT5maWVsZHMpKSwKIAkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGNyZWYtPmxvY2F0aW9uKSkpOworCQkvKiBlbHNlOiB1bmtub3duIHF1YWxpZmllciAtLSBm YWxsIHRocm91Z2ggdG8gbm9ybWFsIHJlc29sdXRpb24gKi8KIAl9CiAKIAkvKi0tLS0tLS0tLS0K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKaW5kZXggYTYzMjExZmYzNjQuLjg2 YWJiOTZjMTc3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNl Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dApAQCAtMzA3 NCwxMCArMzA3NCwxMCBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSspCiAgICAgREVG SU5FIEEgQVMgQS52YWwgPiAwCiApOwotRVJST1I6ICBwYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmll ZCBjb2x1bW4gcmVmZXJlbmNlICJhLnZhbCIgaXMgbm90IHN1cHBvcnRlZCBpbiBERUZJTkUgY2xh dXNlCitFUlJPUjogIHBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb24gImEudmFs IiBpcyBub3Qgc3VwcG9ydGVkIGluIERFRklORSBjbGF1c2UKIExJTkUgNzogICAgIERFRklORSBB IEFTIEEudmFsID4gMAogICAgICAgICAgICAgICAgICAgICAgICAgXgotLS0gRXhwZWN0ZWQ6IEVS Uk9SOiBwYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllZCBjb2x1bW4gcmVmZXJlbmNlICJhLnZhbCIg aXMgbm90IHN1cHBvcnRlZAorLS0gRXhwZWN0ZWQ6IEVSUk9SOiBwYXR0ZXJuIHZhcmlhYmxlIHF1 YWxpZmllZCBleHByZXNzaW9uICJhLnZhbCIgaXMgbm90IHN1cHBvcnRlZAogLS0gUEFUVEVSTi1v bmx5IHZhcmlhYmxlIHF1YWxpZmllZCBuYW1lOiBub3Qgc3VwcG9ydGVkIGV2ZW4gd2l0aG91dCBE RUZJTkUgZW50cnkKIFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcKIEZST00gcnByX2VycgpAQCAtMzA4 NywxMCArMzA4NywxMCBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSsgQispCiAgICAg REVGSU5FIEEgQVMgQi52YWwgPiAwCiApOwotRVJST1I6ICBwYXR0ZXJuIHZhcmlhYmxlIHF1YWxp ZmllZCBjb2x1bW4gcmVmZXJlbmNlICJiLnZhbCIgaXMgbm90IHN1cHBvcnRlZCBpbiBERUZJTkUg Y2xhdXNlCitFUlJPUjogIHBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb24gImIu dmFsIiBpcyBub3Qgc3VwcG9ydGVkIGluIERFRklORSBjbGF1c2UKIExJTkUgNzogICAgIERFRklO RSBBIEFTIEIudmFsID4gMAogICAgICAgICAgICAgICAgICAgICAgICAgXgotLS0gRXhwZWN0ZWQ6 IEVSUk9SOiBwYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllZCBjb2x1bW4gcmVmZXJlbmNlICJiLnZh bCIgaXMgbm90IHN1cHBvcnRlZAorLS0gRXhwZWN0ZWQ6IEVSUk9SOiBwYXR0ZXJuIHZhcmlhYmxl IHF1YWxpZmllZCBleHByZXNzaW9uICJiLnZhbCIgaXMgbm90IHN1cHBvcnRlZAogLS0gREVGSU5F LW9ubHkgdmFyaWFibGUgcXVhbGlmaWVkIG5hbWU6IHN0aWxsIGEgcGF0dGVybiB2YXJpYWJsZSwg bm90IGEgcmFuZ2UgdmFyaWFibGUKIFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcKIEZST00gcnByX2Vy cgpAQCAtMzEwMyw3ICszMTAzLDcgQEAgV0lORE9XIHcgQVMgKAogRVJST1I6ICBERUZJTkUgdmFy aWFibGUgImIiIGlzIG5vdCB1c2VkIGluIFBBVFRFUk4KIExJTkUgNzogICAgIERFRklORSBBIEFT IHZhbCA+IDAsIEIgQVMgQi52YWwgPiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCi0tLSBFeHBlY3RlZDogRVJST1I6IHBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIGNvbHVt biByZWZlcmVuY2UgImIudmFsIiBpcyBub3Qgc3VwcG9ydGVkCistLSBFeHBlY3RlZDogRVJST1I6 IHBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb24gImIudmFsIiBpcyBub3Qgc3Vw cG9ydGVkCiAtLSBGUk9NLWNsYXVzZSByYW5nZSB2YXJpYWJsZSBxdWFsaWZpZWQgbmFtZTogbm90 IGFsbG93ZWQgKHByb2hpYml0ZWQgYnkgU1FMIHN0YW5kYXJkIDYuNSkKIFNFTEVDVCBDT1VOVCgq KSBPVkVSIHcKIEZST00gcnByX2VycgpAQCAtMzExMywxMCArMzExMyw3NiBAQCBXSU5ET1cgdyBB UyAoCiAgICAgUEFUVEVSTiAoQSspCiAgICAgREVGSU5FIEEgQVMgcnByX2Vyci52YWwgPiAwCiAp OwotRVJST1I6ICByYW5nZSB2YXJpYWJsZSBxdWFsaWZpZWQgY29sdW1uIHJlZmVyZW5jZSAicnBy X2Vyci52YWwiIGlzIG5vdCBhbGxvd2VkIGluIERFRklORSBjbGF1c2UKK0VSUk9SOiAgcmFuZ2Ug dmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb24gInJwcl9lcnIudmFsIiBpcyBub3QgYWxsb3dl ZCBpbiBERUZJTkUgY2xhdXNlCiBMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBycHJfZXJyLnZhbCA+ IDAKICAgICAgICAgICAgICAgICAgICAgICAgIF4KLS0tIEV4cGVjdGVkOiBFUlJPUjogcmFuZ2Ug dmFyaWFibGUgcXVhbGlmaWVkIGNvbHVtbiByZWZlcmVuY2UgInJwcl9lcnIudmFsIiBpcyBub3Qg YWxsb3dlZAorLS0gRXhwZWN0ZWQ6IEVSUk9SOiByYW5nZSB2YXJpYWJsZSBxdWFsaWZpZWQgZXhw cmVzc2lvbiAicnByX2Vyci52YWwiIGlzIG5vdCBhbGxvd2VkCistLSBVbmtub3duIHF1YWxpZmll ciAobmVpdGhlciBwYXR0ZXJuIHZhciBub3IgcmFuZ2UgdmFyKTogdGhlIERFRklORSBwcmUtY2hl Y2sKKy0tIG11c3QgZmFsbCB0aHJvdWdoIHNvIHRoYXQgbm9ybWFsIGNvbHVtbiByZXNvbHV0aW9u IHByb2R1Y2VzIGEgc2Vuc2libGUgZXJyb3IuCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9N IHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQor ICAgIERFRklORSBBIEFTIG5vc3VjaC52YWwgPiAwCispOworRVJST1I6ICBtaXNzaW5nIEZST00t Y2xhdXNlIGVudHJ5IGZvciB0YWJsZSAibm9zdWNoIgorTElORSA3OiAgICAgREVGSU5FIEEgQVMg bm9zdWNoLnZhbCA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEV4cGVjdGVkOiBF UlJPUjogbWlzc2luZyBGUk9NLWNsYXVzZSBlbnRyeSBmb3IgdGFibGUgIm5vc3VjaCIKKy0tIFVu cXVhbGlmaWVkIGNvbXBvc2l0ZSBmaWVsZCBhY2Nlc3MgaW4gREVGSU5FIHdvcmtzOiBubyBxdWFs aWZpZXIgbWVhbnMgbm8KKy0tIHBhdHRlcm4vcmFuZ2UtdmFyIG5hdmlnYXRpb24sIHNvIHRoZSBw cmUtY2hlY2sgc2tpcHMgYW5kIG5vcm1hbCByZXNvbHV0aW9uCistLSBoYW5kbGVzICIoaXRlbXMp LmFtb3VudCIgdmlhIEFfSW5kaXJlY3Rpb24gb24gdGhlIGN1cnJlbnQgcm93LgorQ1JFQVRFIFRZ UEUgcnByX2l0ZW0gQVMgKG5hbWUgVEVYVCwgYW1vdW50IElOVCk7CitDUkVBVEUgVEVNUCBUQUJM RSBycHJfY29tcG9zaXRlIChpZCBpbnQsIGl0ZW1zIHJwcl9pdGVtKTsKK0lOU0VSVCBJTlRPIHJw cl9jb21wb3NpdGUgVkFMVUVTICgxLCBST1coJ2EnLDUpKSwgKDIsIFJPVygnYicsMTUpKSwgKDMs IFJPVygnYycsMjUpKTsKK1NFTEVDVCBpZCwgKGl0ZW1zKS5hbW91bnQsIENPVU5UKCopIE9WRVIg dyBBUyBjbnQKK0ZST00gcnByX2NvbXBvc2l0ZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAg IERFRklORSBBIEFTIChpdGVtcykuYW1vdW50ID4gMTAKKyk7CisgaWQgfCBhbW91bnQgfCBjbnQg CistLS0tKy0tLS0tLS0tKy0tLS0tCisgIDEgfCAgICAgIDUgfCAgIDAKKyAgMiB8ICAgICAxNSB8 ICAgMgorICAzIHwgICAgIDI1IHwgICAxCisoMyByb3dzKQorCistLSBFeHBlY3RlZDogcm93cyB3 aGVyZSAoaXRlbXMpLmFtb3VudCA+IDEwIGZvcm0gbWF0Y2hlczsgY291bnRzIHJlZmxlY3QgZnJh bWUgc2l6ZQorLS0gQ29tcG9zaXRlIHR5cGUgZmllbGQgc2VsZWN0aW9uIChxdWFsaWZpZWQgZm9y bXMpOiB0aGUgQ29sdW1uUmVmIHBvcnRpb24gKCJBLml0ZW1zIiBvcgorLS0gInJwcl9jb21wb3Np dGUuaXRlbXMiKSBpcyB3aGF0IGdldHMgcXVvdGVkOyB0aGUgdHJhaWxpbmcgIi5hbW91bnQiIGxp dmVzIGluCistLSB0aGUgc3Vycm91bmRpbmcgQV9JbmRpcmVjdGlvbiBub2RlIGFuZCBpcyBub3Qg dmlzaWJsZSB0byB0aGUgcHJlLWNoZWNrLgorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBy cHJfY29tcG9zaXRlCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB KykKKyAgICBERUZJTkUgQSBBUyAoQS5pdGVtcykuYW1vdW50ID4gMTAKKyk7CitFUlJPUjogIHBh dHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb24gImEuaXRlbXMiIGlzIG5vdCBzdXBw b3J0ZWQgaW4gREVGSU5FIGNsYXVzZQorTElORSA3OiAgICAgREVGSU5FIEEgQVMgKEEuaXRlbXMp LmFtb3VudCA+IDEwCisgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRXhwZWN0ZWQ6IEVS Uk9SOiBwYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllZCBleHByZXNzaW9uICJhLml0ZW1zIiBpcyBu b3Qgc3VwcG9ydGVkCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9jb21wb3NpdGUK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIChycHJfY29tcG9zaXRlLml0ZW1zKS5hbW91bnQgPiAxMAorKTsKK0VSUk9SOiAgcmFu Z2UgdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb24gInJwcl9jb21wb3NpdGUuaXRlbXMiIGlz IG5vdCBhbGxvd2VkIGluIERFRklORSBjbGF1c2UKK0xJTkUgNzogICAgIERFRklORSBBIEFTIChy cHJfY29tcG9zaXRlLml0ZW1zKS5hbW91bnQgPiAxMAorICAgICAgICAgICAgICAgICAgICAgICAg IF4KKy0tIEV4cGVjdGVkOiBFUlJPUjogcmFuZ2UgdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Np b24gInJwcl9jb21wb3NpdGUuaXRlbXMiIGlzIG5vdCBhbGxvd2VkCitEUk9QIFRBQkxFIHJwcl9j b21wb3NpdGU7CitEUk9QIFRZUEUgcnByX2l0ZW07CiAtLSBTZW1hbnRpYyBlcnJvcnMKIC0tIFVu ZGVmaW5lZCBjb2x1bW4gaW4gREVGSU5FCiBTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9ycHJfYmFzZS5zcWwKaW5kZXggODZlZDA2ZmVjNjguLmU4YzcyNzA2NzIwIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcnByX2Jhc2Uuc3FsCkBAIC0yMDkyLDcgKzIwOTIsNyBAQCBXSU5ET1cgdyBBUyAo CiAgICAgUEFUVEVSTiAoQSspCiAgICAgREVGSU5FIEEgQVMgQS52YWwgPiAwCiApOwotLS0gRXhw ZWN0ZWQ6IEVSUk9SOiBwYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllZCBjb2x1bW4gcmVmZXJlbmNl ICJhLnZhbCIgaXMgbm90IHN1cHBvcnRlZAorLS0gRXhwZWN0ZWQ6IEVSUk9SOiBwYXR0ZXJuIHZh cmlhYmxlIHF1YWxpZmllZCBleHByZXNzaW9uICJhLnZhbCIgaXMgbm90IHN1cHBvcnRlZAogCiAt LSBQQVRURVJOLW9ubHkgdmFyaWFibGUgcXVhbGlmaWVkIG5hbWU6IG5vdCBzdXBwb3J0ZWQgZXZl biB3aXRob3V0IERFRklORSBlbnRyeQogU0VMRUNUIENPVU5UKCopIE9WRVIgdwpAQCAtMjEwMyw3 ICsyMTAzLDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEErIEIrKQogICAgIERFRklO RSBBIEFTIEIudmFsID4gMAogKTsKLS0tIEV4cGVjdGVkOiBFUlJPUjogcGF0dGVybiB2YXJpYWJs ZSBxdWFsaWZpZWQgY29sdW1uIHJlZmVyZW5jZSAiYi52YWwiIGlzIG5vdCBzdXBwb3J0ZWQKKy0t IEV4cGVjdGVkOiBFUlJPUjogcGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZWQgZXhwcmVzc2lvbiAi Yi52YWwiIGlzIG5vdCBzdXBwb3J0ZWQKIAogLS0gREVGSU5FLW9ubHkgdmFyaWFibGUgcXVhbGlm aWVkIG5hbWU6IHN0aWxsIGEgcGF0dGVybiB2YXJpYWJsZSwgbm90IGEgcmFuZ2UgdmFyaWFibGUK IFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcKQEAgLTIxMTQsNyArMjExNCw3IEBAIFdJTkRPVyB3IEFT ICgKICAgICBQQVRURVJOIChBKykKICAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIEIudmFs ID4gMAogKTsKLS0tIEV4cGVjdGVkOiBFUlJPUjogcGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZWQg Y29sdW1uIHJlZmVyZW5jZSAiYi52YWwiIGlzIG5vdCBzdXBwb3J0ZWQKKy0tIEV4cGVjdGVkOiBF UlJPUjogcGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZWQgZXhwcmVzc2lvbiAiYi52YWwiIGlzIG5v dCBzdXBwb3J0ZWQKIAogLS0gRlJPTS1jbGF1c2UgcmFuZ2UgdmFyaWFibGUgcXVhbGlmaWVkIG5h bWU6IG5vdCBhbGxvd2VkIChwcm9oaWJpdGVkIGJ5IFNRTCBzdGFuZGFyZCA2LjUpCiBTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3CkBAIC0yMTI1LDcgKzIxMjUsNjAgQEAgV0lORE9XIHcgQVMgKAogICAg IFBBVFRFUk4gKEErKQogICAgIERFRklORSBBIEFTIHJwcl9lcnIudmFsID4gMAogKTsKLS0tIEV4 cGVjdGVkOiBFUlJPUjogcmFuZ2UgdmFyaWFibGUgcXVhbGlmaWVkIGNvbHVtbiByZWZlcmVuY2Ug InJwcl9lcnIudmFsIiBpcyBub3QgYWxsb3dlZAorLS0gRXhwZWN0ZWQ6IEVSUk9SOiByYW5nZSB2 YXJpYWJsZSBxdWFsaWZpZWQgZXhwcmVzc2lvbiAicnByX2Vyci52YWwiIGlzIG5vdCBhbGxvd2Vk CisKKy0tIFVua25vd24gcXVhbGlmaWVyIChuZWl0aGVyIHBhdHRlcm4gdmFyIG5vciByYW5nZSB2 YXIpOiB0aGUgREVGSU5FIHByZS1jaGVjaworLS0gbXVzdCBmYWxsIHRocm91Z2ggc28gdGhhdCBu b3JtYWwgY29sdW1uIHJlc29sdXRpb24gcHJvZHVjZXMgYSBzZW5zaWJsZSBlcnJvci4KK1NFTEVD VCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgbm9zdWNoLnZhbCA+IDAKKyk7 CistLSBFeHBlY3RlZDogRVJST1I6IG1pc3NpbmcgRlJPTS1jbGF1c2UgZW50cnkgZm9yIHRhYmxl ICJub3N1Y2giCisKKy0tIFVucXVhbGlmaWVkIGNvbXBvc2l0ZSBmaWVsZCBhY2Nlc3MgaW4gREVG SU5FIHdvcmtzOiBubyBxdWFsaWZpZXIgbWVhbnMgbm8KKy0tIHBhdHRlcm4vcmFuZ2UtdmFyIG5h dmlnYXRpb24sIHNvIHRoZSBwcmUtY2hlY2sgc2tpcHMgYW5kIG5vcm1hbCByZXNvbHV0aW9uCist LSBoYW5kbGVzICIoaXRlbXMpLmFtb3VudCIgdmlhIEFfSW5kaXJlY3Rpb24gb24gdGhlIGN1cnJl bnQgcm93LgorQ1JFQVRFIFRZUEUgcnByX2l0ZW0gQVMgKG5hbWUgVEVYVCwgYW1vdW50IElOVCk7 CitDUkVBVEUgVEVNUCBUQUJMRSBycHJfY29tcG9zaXRlIChpZCBpbnQsIGl0ZW1zIHJwcl9pdGVt KTsKK0lOU0VSVCBJTlRPIHJwcl9jb21wb3NpdGUgVkFMVUVTICgxLCBST1coJ2EnLDUpKSwgKDIs IFJPVygnYicsMTUpKSwgKDMsIFJPVygnYycsMjUpKTsKK1NFTEVDVCBpZCwgKGl0ZW1zKS5hbW91 bnQsIENPVU5UKCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2NvbXBvc2l0ZQorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAg IFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIChpdGVtcykuYW1vdW50ID4gMTAKKyk7Cist LSBFeHBlY3RlZDogcm93cyB3aGVyZSAoaXRlbXMpLmFtb3VudCA+IDEwIGZvcm0gbWF0Y2hlczsg Y291bnRzIHJlZmxlY3QgZnJhbWUgc2l6ZQorCistLSBDb21wb3NpdGUgdHlwZSBmaWVsZCBzZWxl Y3Rpb24gKHF1YWxpZmllZCBmb3Jtcyk6IHRoZSBDb2x1bW5SZWYgcG9ydGlvbiAoIkEuaXRlbXMi IG9yCistLSAicnByX2NvbXBvc2l0ZS5pdGVtcyIpIGlzIHdoYXQgZ2V0cyBxdW90ZWQ7IHRoZSB0 cmFpbGluZyAiLmFtb3VudCIgbGl2ZXMgaW4KKy0tIHRoZSBzdXJyb3VuZGluZyBBX0luZGlyZWN0 aW9uIG5vZGUgYW5kIGlzIG5vdCB2aXNpYmxlIHRvIHRoZSBwcmUtY2hlY2suCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3CitGUk9NIHJwcl9jb21wb3NpdGUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIChBLml0ZW1zKS5hbW91bnQg PiAxMAorKTsKKy0tIEV4cGVjdGVkOiBFUlJPUjogcGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZWQg ZXhwcmVzc2lvbiAiYS5pdGVtcyIgaXMgbm90IHN1cHBvcnRlZAorU0VMRUNUIENPVU5UKCopIE9W RVIgdworRlJPTSBycHJfY29tcG9zaXRlCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyAocnByX2NvbXBvc2l0ZS5pdGVtcykuYW1v dW50ID4gMTAKKyk7CistLSBFeHBlY3RlZDogRVJST1I6IHJhbmdlIHZhcmlhYmxlIHF1YWxpZmll ZCBleHByZXNzaW9uICJycHJfY29tcG9zaXRlLml0ZW1zIiBpcyBub3QgYWxsb3dlZAorRFJPUCBU QUJMRSBycHJfY29tcG9zaXRlOworRFJPUCBUWVBFIHJwcl9pdGVtOwogCiAtLSBTZW1hbnRpYyBl cnJvcnMKIAotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --00000000000083509906515dabc6 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0005-Sync-DEFINE-PATTERN-comments.txt" Content-Disposition: attachment; filename="nocfbot-0005-Sync-DEFINE-PATTERN-comments.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moy1cpgc4 RnJvbSBjM2NjYzAzN2NjMTI4ZjVhNjQwYTczNTc2NjlkYjQzZjFkY2RmNmY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDUgTWF5IDIwMjYgMTE6NDQ6NDUgKzA5MDAKU3ViamVjdDogW1BBVENIIDA1LzExXSBT eW5jIHN0YWxlIGNvbW1lbnRzIG9uIERFRklORS9QQVRURVJOIGhhbmRsaW5nCgp2YWxpZGF0ZVJQ UlBhdHRlcm5WYXJDb3VudCgpIHZhbGlkYXRlcyBERUZJTkUgbmFtZXMgYWdhaW5zdCB0aGUKUEFU VEVSTiBsaXN0IGFuZCByZWplY3RzIGFueSBub3QgdXNlZCBpbiBQQVRURVJOOyB0aGUgc3Vycm91 bmRpbmcKY29tbWVudHMgc2FpZCBpdCAiY29sbGVjdGVkIiB0aGVtLiAgQWxpZ24gdGhlIGZ1bmN0 aW9uIGhlYWRlciwKaW5saW5lIGJsb2NrIGNvbW1lbnQsIGFuZCB0aGUgY2FsbC1zaXRlIGNvbW1l bnQuICBBbHNvIGZpeCB0aGUKbWF0Y2hpbmcgU0VMRUNUIGRvYyAoImZpbHRlcmVkIGR1cmluZyBw bGFubmluZyIgLT4gInJlamVjdGVkIHdpdGgKYW4gZXJyb3IiKSBhbmQgdGhlIFhYWCBub3RlJ3Mg d29yZGluZy4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21sICAgfCAgNCArKy0tCiBz cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMgfCAyOCArKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvc2VsZWN0LnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL3NlbGVjdC5zZ21sCmluZGV4IDUyNzJkNmMwYmZhLi5lNDcwODMzMTQzOSAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9zZWxlY3Quc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L3NlbGVjdC5zZ21sCkBAIC0xMTkyLDggKzExOTIsOCBAQCBERUZJTkUgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmRlZmluaXRpb25fdmFyaWFibGVfbmFtZTwvcmVwbGFjZWFibGU+IEFT CiA8L3N5bm9wc2lzPgogCiAgICAgQ29udmVyc2VseSwgdmFyaWFibGVzIGRlZmluZWQgaW4gdGhl IDxsaXRlcmFsPkRFRklORTwvbGl0ZXJhbD4gY2xhdXNlCi0gICAgYnV0IG5vdCB1c2VkIGluIHRo ZSA8bGl0ZXJhbD5QQVRURVJOPC9saXRlcmFsPiBjbGF1c2UgYXJlIGZpbHRlcmVkIG91dAotICAg IGR1cmluZyBxdWVyeSBwbGFubmluZy4KKyAgICBidXQgbm90IHVzZWQgaW4gdGhlIDxsaXRlcmFs PlBBVFRFUk48L2xpdGVyYWw+IGNsYXVzZSBhcmUgcmVqZWN0ZWQKKyAgICB3aXRoIGFuIGVycm9y LgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9ycHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYwppbmRleCA4NzQx MWFiY2JlMi4uMmM2ZmNjZWJkNDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9ycHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKQEAgLTE4MywxMSAr MTgzLDExIEBAIHRyYW5zZm9ybVJQUihQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAq d2MsIFdpbmRvd0RlZiAqd2luZGVmLAogICogUmVjdXJzaXZlbHkgdHJhdmVyc2VzIHRoZSBwYXR0 ZXJuIHRyZWUsIGNvbGxlY3RpbmcgdW5pcXVlIHZhcmlhYmxlIG5hbWVzLgogICogVGhyb3dzIGFu IGVycm9yIGlmIHRoZSBudW1iZXIgb2YgdW5pcXVlIHZhcmlhYmxlcyBleGNlZWRzIFJQUl9WQVJJ RF9NQVguCiAgKgotICogSWYgcnBEZWZzIGlzIG5vbi1OVUxMLCBERUZJTkUgdmFyaWFibGUgbmFt ZXMgYXJlIGFsc28gY29sbGVjdGVkIGludG8KLSAqIHZhck5hbWVzIHNvIHRoYXQgdHJhbnNmb3Jt Q29sdW1uUmVmIGNhbiBkaXN0aW5ndWlzaCBwYXR0ZXJuIHZhcmlhYmxlCi0gKiBxdWFsaWZpZXJz IGZyb20gRlJPTS1jbGF1c2UgcmFuZ2UgdmFyaWFibGVzLgotICoKLSAqIHZhck5hbWVzIGlzIGJv dGggaW5wdXQgYW5kIG91dHB1dDogZXhpc3RpbmcgbmFtZXMgYXJlIHByZXNlcnZlZCwgbmV3IG9u ZXMgYWRkZWQuCisgKiBJZiBycERlZnMgaXMgbm9uLU5VTEwsIGVhY2ggREVGSU5FIHZhcmlhYmxl IG5hbWUgaXMgYWxzbyB2YWxpZGF0ZWQgYWdhaW5zdAorICogdmFyTmFtZXM7IGFueSBERUZJTkUg bmFtZSBub3QgcHJlc2VudCBpbiBQQVRURVJOIGlzIHJlamVjdGVkIHdpdGggYW4gZXJyb3IuCisg KiB2YXJOYW1lcyBpdHNlbGYgaXMgbm90IGV4dGVuZGVkIGJ5IHRoaXMgc3RlcCAtLSBpdCBjYXJy aWVzIG9ubHkgUEFUVEVSTgorICogdmFyaWFibGUgbmFtZXMsIHdoaWNoIGlzIHdoYXQgdHJhbnNm b3JtQ29sdW1uUmVmIGNoZWNrcyB2aWEKKyAqIHBfcnByX3BhdHRlcm5fdmFycyB0byBpZGVudGlm eSBwYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllcnMuCiAgKi8KIHN0YXRpYyB2b2lkCiB2YWxpZGF0 ZVJQUlBhdHRlcm5WYXJDb3VudChQYXJzZVN0YXRlICpwc3RhdGUsIFJQUlBhdHRlcm5Ob2RlICpu b2RlLApAQCAtMjQ0LDEwICsyNDQsMTAgQEAgdmFsaWRhdGVSUFJQYXR0ZXJuVmFyQ291bnQoUGFy c2VTdGF0ZSAqcHN0YXRlLCBSUFJQYXR0ZXJuTm9kZSAqbm9kZSwKIAl9CiAKIAkvKgotCSAqIEFm dGVyIHRoZSB0b3AtbGV2ZWwgY2FsbCwgYWxzbyBjb2xsZWN0IERFRklORSB2YXJpYWJsZSBuYW1l cyB0aGF0IGFyZQotCSAqIG5vdCBhbHJlYWR5IGluIHRoZSBsaXN0LiAgVGhpcyBpcyBvbmx5IGRv bmUgb25jZSBhdCB0aGUgb3V0ZXJtb3N0Ci0JICogcmVjdXJzaW9uIGxldmVsLCBkZXRlY3RlZCBi eSBycERlZnMgYmVpbmcgbm9uLU5VTEwgKHJlY3Vyc2l2ZSBjYWxscwotCSAqIHBhc3MgTlVMTCku CisJICogQWZ0ZXIgdGhlIHRvcC1sZXZlbCBjYWxsLCB2YWxpZGF0ZSB0aGF0IGV2ZXJ5IERFRklO RSB2YXJpYWJsZSBuYW1lIGlzCisJICogcHJlc2VudCBpbiB0aGUgUEFUVEVSTiB2YXJpYWJsZSBs aXN0OyByZWplY3QgbmFtZXMgbm90IHVzZWQgaW4gUEFUVEVSTi4KKwkgKiBUaGlzIGlzIG9ubHkg ZG9uZSBvbmNlIGF0IHRoZSBvdXRlcm1vc3QgcmVjdXJzaW9uIGxldmVsLCBkZXRlY3RlZCBieQor CSAqIHJwRGVmcyBiZWluZyBub24tTlVMTCAocmVjdXJzaXZlIGNhbGxzIHBhc3MgTlVMTCkuCiAJ ICovCiAJaWYgKHJwRGVmcykKIAl7CkBAIC0yOTMsOSArMjkzLDkgQEAgdmFsaWRhdGVSUFJQYXR0 ZXJuVmFyQ291bnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSUFJQYXR0ZXJuTm9kZSAqbm9kZSwKICAq IE5vdGU6IFZhcmlhYmxlcyBub3QgaW4gREVGSU5FIGFyZSBldmFsdWF0ZWQgYXMgVFJVRSBieSB0 aGUgZXhlY3V0b3IuCiAgKiBWYXJpYWJsZXMgaW4gREVGSU5FIGJ1dCBub3QgaW4gUEFUVEVSTiBh cmUgcmVqZWN0ZWQgYXMgYW4gZXJyb3IuCiAgKgotICogWFhYIFBhdHRlcm4gdmFyaWFibGUgcXVh bGlmaWVkIGNvbHVtbiByZWZlcmVuY2VzIGluIERFRklORSAoZS5nLgotICogIkEucHJpY2UiKSBh cmUgbm90IHlldCBzdXBwb3J0ZWQuICBDdXJyZW50bHkgcmVqZWN0ZWQgYnkKLSAqIHRyYW5zZm9y bUNvbHVtblJlZiBpbiBwYXJzZV9leHByLmMgdmlhIHRoZSBwX3Jwcl9wYXR0ZXJuX3ZhcnMgY2hl Y2suCisgKiBYWFggUGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZWQgZXhwcmVzc2lvbnMgaW4gREVG SU5FIChlLmcuICJBLnByaWNlIikKKyAqIGFyZSBub3QgeWV0IHN1cHBvcnRlZC4gIEN1cnJlbnRs eSByZWplY3RlZCBieSB0cmFuc2Zvcm1Db2x1bW5SZWYgaW4KKyAqIHBhcnNlX2V4cHIuYyB2aWEg dGhlIHBfcnByX3BhdHRlcm5fdmFycyBjaGVjay4KICAqLwogc3RhdGljIExpc3QgKgogdHJhbnNm b3JtRGVmaW5lQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93Q2xhdXNlICp3YywgV2lu ZG93RGVmICp3aW5kZWYsCkBAIC0zMTcsOCArMzE3LDggQEAgdHJhbnNmb3JtRGVmaW5lQ2xhdXNl KFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93Q2xhdXNlICp3YywgV2luZG93RGVmICp3aW5kZWYs CiAJQXNzZXJ0KHdpbmRlZi0+cnBDb21tb25TeW50YXgtPnJwRGVmcyAhPSBOVUxMKTsKIAogCS8q Ci0JICogVmFsaWRhdGUgUEFUVEVSTiB2YXJpYWJsZSBjb3VudCBhbmQgY29sbGVjdCBhbGwgUlBS IHZhcmlhYmxlIG5hbWVzCi0JICogKFBBVFRFUk4gKyBERUZJTkUpIGZvciB1c2UgaW4gdHJhbnNm b3JtQ29sdW1uUmVmLgorCSAqIFZhbGlkYXRlIFBBVFRFUk4gdmFyaWFibGUgY291bnQsIHJlamVj dCBERUZJTkUgdmFyaWFibGVzIG5vdCB1c2VkIGluCisJICogUEFUVEVSTiwgYW5kIGNvbGxlY3Qg UEFUVEVSTiB2YXJpYWJsZSBuYW1lcyBmb3IgdHJhbnNmb3JtQ29sdW1uUmVmLgogCSAqLwogCXZh bGlkYXRlUlBSUGF0dGVyblZhckNvdW50KHBzdGF0ZSwgd2luZGVmLT5ycENvbW1vblN5bnRheC0+ cnBQYXR0ZXJuLAogCQkJCQkJCSAgIHdpbmRlZi0+cnBDb21tb25TeW50YXgtPnJwRGVmcywKLS0g CjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --00000000000083509906515dabc6 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0006-Trailing-commas-RPR-enums.txt" Content-Disposition: attachment; filename="nocfbot-0006-Trailing-commas-RPR-enums.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moy1cqve5 RnJvbSAxYWJhNWE4YjYwNTAyM2VhMjk5M2ZhZjk4ODY5YjdiZTI4NjBmYzUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDUgTWF5IDIwMjYgMTc6MjE6NTYgKzA5MDAKU3ViamVjdDogW1BBVENIIDA2LzExXSBB ZGQgdHJhaWxpbmcgY29tbWFzIHRvIFJQUiBlbnVtIGRlZmluaXRpb25zCgpSUFJOYXZLaW5kLCBS UFJOYXZPZmZzZXRLaW5kLCBSUFJQYXR0ZXJuTm9kZVR5cGUgbGFja2VkIGEgdHJhaWxpbmcKY29t bWEgb24gdGhlIGxhc3QgZW51bWVyYXRvciwgY29udHJhcnkgdG8gcHJvamVjdCBjb2Rpbmcgc3R5 bGUuCi0tLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIHwgNCArKy0tCiBzcmMvaW5j bHVkZS9ub2Rlcy9wcmltbm9kZXMuaCAgfCAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0 aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggNDU1ZGIy Y2VjNjEuLmFkZWZiMWQ1YmFkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC02MDQsNyArNjA0 LDcgQEAgdHlwZWRlZiBlbnVtIFJQUk5hdk9mZnNldEtpbmQKIAlSUFJfTkFWX09GRlNFVF9GSVhF RCwJCS8qIHJlc29sdmVkIGNvbnN0YW50OyB1c2UgdGhlIG9mZnNldCB2YWx1ZSAqLwogCVJQUl9O QVZfT0ZGU0VUX05FRURTX0VWQUwsCS8qIG5vbi1jb25zdGFudCBvZmZzZXQ7IGV2YWx1YXRlIGF0 IGV4ZWN1dG9yCiAJCQkJCQkJCSAqIGluaXQgKi8KLQlSUFJfTkFWX09GRlNFVF9SRVRBSU5fQUxM CS8qIGNhbm5vdCBkZXRlcm1pbmU7IHJldGFpbiBhbGwgcm93cyAobm8gdHJpbSkgKi8KKwlSUFJf TkFWX09GRlNFVF9SRVRBSU5fQUxMLAkvKiBjYW5ub3QgZGV0ZXJtaW5lOyByZXRhaW4gYWxsIHJv d3MgKG5vIHRyaW0pICovCiB9IFJQUk5hdk9mZnNldEtpbmQ7CiAKIC8qCkBAIC02MTUsNyArNjE1 LDcgQEAgdHlwZWRlZiBlbnVtIFJQUlBhdHRlcm5Ob2RlVHlwZQogCVJQUl9QQVRURVJOX1ZBUiwJ CQkvKiB2YXJpYWJsZSByZWZlcmVuY2UgKi8KIAlSUFJfUEFUVEVSTl9TRVEsCQkJLyogc2VxdWVu Y2UgKGNvbmNhdGVuYXRpb24pICovCiAJUlBSX1BBVFRFUk5fQUxULAkJCS8qIGFsdGVybmF0aW9u ICh8KSAqLwotCVJQUl9QQVRURVJOX0dST1VQCQkJLyogZ3JvdXAgKHBhcmVudGhlc2VzKSAqLwor CVJQUl9QQVRURVJOX0dST1VQLAkJCS8qIGdyb3VwIChwYXJlbnRoZXNlcykgKi8KIH0gUlBSUGF0 dGVybk5vZGVUeXBlOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCA2NTZjNTUyYjBhOC4u ZDcxMzhmNTE0MWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC02ODQsNyArNjg0LDcgQEAgdHlw ZWRlZiBlbnVtIFJQUk5hdktpbmQKIAlSUFJfTkFWX1BSRVZfRklSU1QsCiAJUlBSX05BVl9QUkVW X0xBU1QsCiAJUlBSX05BVl9ORVhUX0ZJUlNULAotCVJQUl9OQVZfTkVYVF9MQVNUCisJUlBSX05B Vl9ORVhUX0xBU1QsCiB9IFJQUk5hdktpbmQ7CiAKIHR5cGVkZWYgc3RydWN0IFJQUk5hdkV4cHIK LS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --00000000000083509906515dabc6 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0007-ereport-outer-parens.txt" Content-Disposition: attachment; filename="nocfbot-0007-ereport-outer-parens.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moy1cscx6 RnJvbSAzN2NiOGE2ZTlkMzZhYzk4YjdjZDEwYmI4MWE5YTRmNzA3MjBkMDE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDUgTWF5IDIwMjYgMTc6Mjc6NTEgKzA5MDAKU3ViamVjdDogW1BBVENIIDA3LzExXSBS ZW1vdmUgb3B0aW9uYWwgb3V0ZXIgcGFyZW50aGVzZXMgZnJvbSBlcmVwb3J0KCkgY2FsbHMKIGlu IFJQUiBmaWxlcwoKUGVyIHByb2plY3QgY29kaW5nIHN0eWxlLCB0aGUgb3V0ZXIgcGFyZW50aGVz ZXMgd3JhcHBpbmcgZXJyY29kZS8KZXJybXNnL2V0Yy4gYXJndW1lbnRzIGluIGVyZXBvcnQoKSBh cmUgb3B0aW9uYWwgYW5kIHNob3VsZCBiZSBvbWl0dGVkLgpBcHBsaWVzIHRvIHBhcnNlX3Jwci5j LCBvcHRpbWl6ZXIvcGxhbi9ycHIuYywgYW5kIGdyYW0ueS4KLS0tCiBzcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9ycHIuYyB8ICAxNiArKy0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAg ICAgICB8ICA3MiArKysrKysrKy0tLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnBy LmMgICB8IDE0MCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5n ZWQsIDExNCBpbnNlcnRpb25zKCspLCAxMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9ycHIuYwppbmRleCBhODE3ZWI0YTYzZi4uZWQ4YjZjMzQxNGMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3Jwci5jCkBAIC0xMDI3LDEwICsxMDI3LDEwIEBAIHNjYW5SUFJQYXR0ZXJuUmVjdXJzaXZl KFJQUlBhdHRlcm5Ob2RlICpub2RlLCBjaGFyICoqdmFyTmFtZXMsIGludCAqbnVtVmFycywKIAkv KiBDaGVjayByZWN1cnNpb24gZGVwdGggbGltaXQgYmVmb3JlIG92ZXJmbG93IG9jY3VycyAqLwog CWlmIChkZXB0aCA+PSBSUFJfREVQVEhfTUFYKQogCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJj b2RlKEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENFRURFRCksCi0JCQkJIGVycm1zZygicGF0dGVy biBuZXN0aW5nIHRvbyBkZWVwIiksCi0JCQkJIGVycmRldGFpbCgiUGF0dGVybiBuZXN0aW5nIGRl cHRoICVkIGV4Y2VlZHMgbWF4aW11bSAlZC4iLAotCQkJCQkJICAgZGVwdGgsIFJQUl9ERVBUSF9N QVggLSAxKSkpOworCQkJCWVycmNvZGUoRVJSQ09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VFREVEKSwK KwkJCQllcnJtc2coInBhdHRlcm4gbmVzdGluZyB0b28gZGVlcCIpLAorCQkJCWVycmRldGFpbCgi UGF0dGVybiBuZXN0aW5nIGRlcHRoICVkIGV4Y2VlZHMgbWF4aW11bSAlZC4iLAorCQkJCQkJICBk ZXB0aCwgUlBSX0RFUFRIX01BWCAtIDEpKTsKIAogCS8qIFRyYWNrIG1heGltdW0gZGVwdGggKi8K IAlpZiAoZGVwdGggPiAqbWF4RGVwdGgpCkBAIC0xMTIwLDEwICsxMTIwLDEwIEBAIHNjYW5SUFJQ YXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpub2RlLCBjaGFyICoqdmFyTmFtZXMsIGludCAqbnVtVmFy cywKIAogCWlmICgqbnVtRWxlbWVudHMgPiBSUFJfRUxFTUlEWF9NQVgpCiAJCWVyZXBvcnQoRVJS T1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VFREVEKSwKLQkJCQkg ZXJybXNnKCJwYXR0ZXJuIHRvbyBjb21wbGV4IiksCi0JCQkJIGVycmRldGFpbCgiUGF0dGVybiBo YXMgJWQgZWxlbWVudHMsIG1heGltdW0gaXMgJWQuIiwKLQkJCQkJCSAgICpudW1FbGVtZW50cywg UlBSX0VMRU1JRFhfTUFYKSkpOworCQkJCWVycmNvZGUoRVJSQ09ERV9QUk9HUkFNX0xJTUlUX0VY Q0VFREVEKSwKKwkJCQllcnJtc2coInBhdHRlcm4gdG9vIGNvbXBsZXgiKSwKKwkJCQllcnJkZXRh aWwoIlBhdHRlcm4gaGFzICVkIGVsZW1lbnRzLCBtYXhpbXVtIGlzICVkLiIsCisJCQkJCQkgICpu dW1FbGVtZW50cywgUlBSX0VMRU1JRFhfTUFYKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBm M2NlZGZiYmIxOC4uYWE1ODdlNmFjZWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMTc2MTAsMTAgKzE3NjEw LDEwIEBAIG9wdF9yb3dfcGF0dGVybl9pbml0aWFsX29yX3NlZWs6CiAJCQl8IFNFRUsKIAkJCQl7 CiAJCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLAotCQkJCQkJCSBlcnJtc2coIlNFRUsgaXMgbm90IHN1cHBvcnRlZCIpLAot CQkJCQkJCSBlcnJoaW50KCJVc2UgSU5JVElBTCBpbnN0ZWFkLiIpLAotCQkJCQkJCSBwYXJzZXJf ZXJycG9zaXRpb24oQDEpKSk7CisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQkJCQkJZXJybXNnKCJTRUVLIGlzIG5vdCBzdXBwb3J0ZWQiKSwKKwkJCQkJ CQllcnJoaW50KCJVc2UgSU5JVElBTCBpbnN0ZWFkLiIpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3Np dGlvbihAMSkpOwogCQkJCX0KIAkJCXwgLypFTVBUWSovCQl7ICQkID0gdHJ1ZTsgfQogCQk7CkBA IC0xNzc0MCw0MCArMTc3NDAsNDAgQEAgcm93X3BhdHRlcm5fcXVhbnRpZmllcl9vcHQ6CiAJCQkJ CQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDAsIDEsIEAxICsgMSwgQDEsIHl5c2Nh bm5lcik7CiAJCQkJCWVsc2UKIAkJCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQkJCQkJIGVycm1zZygidW5zdXBwb3J0ZWQgcXVh bnRpZmllciBcIiVzXCIiLCAkMSksCi0JCQkJCQkJCSBlcnJoaW50KCJWYWxpZCBxdWFudGlmaWVy cyBhcmU6ICosICssID8sICo/LCArPywgPz8sIHtufSwge24sfSwgeyxtfSwge24sbX0gYW5kIHRo ZWlyIHJlbHVjdGFudCB2ZXJzaW9ucy4iKSwKLQkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihA MSkpKTsKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVy cm1zZygidW5zdXBwb3J0ZWQgcXVhbnRpZmllciBcIiVzXCIiLCAkMSksCisJCQkJCQkJCWVycmhp bnQoIlZhbGlkIHF1YW50aWZpZXJzIGFyZTogKiwgKywgPywgKj8sICs/LCA/Pywge259LCB7bix9 LCB7LG19LCB7bixtfSBhbmQgdGhlaXIgcmVsdWN0YW50IHZlcnNpb25zLiIpLAorCQkJCQkJCQlw YXJzZXJfZXJycG9zaXRpb24oQDEpKTsKIAkJCQl9CiAJCQkvKiBSRUxVQ1RBTlQgcXVhbnRpZmll cnMgKHdoZW4gbGV4ZXIgc2VwYXJhdGVzIHRva2VucykgKi8KIAkJCXwgJyonIE9wCiAJCQkJewog CQkJCQlpZiAoc3RyY21wKCQyLCAiPyIpICE9IDApCiAJCQkJCQllcmVwb3J0KEVSUk9SLAotCQkJ CQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCQkJCSBlcnJtc2coImlu dmFsaWQgdG9rZW4gYWZ0ZXIgXCIqXCIgcXVhbnRpZmllciIpLAotCQkJCQkJCQkgZXJyaGludCgi RGlkIHlvdSBtZWFuIFwiKj9cIiBmb3IgcmVsdWN0YW50IHF1YW50aWZpZXI/IiksCi0JCQkJCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24oQDIpKSk7CisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5U QVhfRVJST1IpLAorCQkJCQkJCQllcnJtc2coImludmFsaWQgdG9rZW4gYWZ0ZXIgXCIqXCIgcXVh bnRpZmllciIpLAorCQkJCQkJCQllcnJoaW50KCJEaWQgeW91IG1lYW4gXCIqP1wiIGZvciByZWx1 Y3RhbnQgcXVhbnRpZmllcj8iKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEAyKSk7CiAJ CQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoMCwgSU5UX01BWCwgQDIsIEAxLCB5 eXNjYW5uZXIpOwogCQkJCX0KIAkJCXwgJysnIE9wCiAJCQkJewogCQkJCQlpZiAoc3RyY21wKCQy LCAiPyIpICE9IDApCiAJCQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCQkoZXJyY29kZShFUlJD T0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCQkJCSBlcnJtc2coImludmFsaWQgdG9rZW4gYWZ0ZXIg XCIrXCIgcXVhbnRpZmllciIpLAotCQkJCQkJCQkgZXJyaGludCgiRGlkIHlvdSBtZWFuIFwiKz9c IiBmb3IgcmVsdWN0YW50IHF1YW50aWZpZXI/IiksCi0JCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRp b24oQDIpKSk7CisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJ CQllcnJtc2coImludmFsaWQgdG9rZW4gYWZ0ZXIgXCIrXCIgcXVhbnRpZmllciIpLAorCQkJCQkJ CQllcnJoaW50KCJEaWQgeW91IG1lYW4gXCIrP1wiIGZvciByZWx1Y3RhbnQgcXVhbnRpZmllcj8i KSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEAyKSk7CiAJCQkJCSQkID0gKE5vZGUgKikg bWFrZVJQUlF1YW50aWZpZXIoMSwgSU5UX01BWCwgQDIsIEAxLCB5eXNjYW5uZXIpOwogCQkJCX0K IAkJCXwgT3AgT3AKIAkJCQl7CiAJCQkJCWlmIChzdHJjbXAoJDEsICI/IikgIT0gMCB8fCBzdHJj bXAoJDIsICI/IikgIT0gMCkKIAkJCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQkJCQkJIGVycm1zZygiaW52YWxpZCBxdWFudGlm aWVyIGNvbWJpbmF0aW9uIiksCi0JCQkJCQkJCSBlcnJoaW50KCJEaWQgeW91IG1lYW4gXCI/P1wi IGZvciByZWx1Y3RhbnQgcXVhbnRpZmllcj8iKSwKLQkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihAMSkpKTsKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJ CWVycm1zZygiaW52YWxpZCBxdWFudGlmaWVyIGNvbWJpbmF0aW9uIiksCisJCQkJCQkJCWVycmhp bnQoIkRpZCB5b3UgbWVhbiBcIj8/XCIgZm9yIHJlbHVjdGFudCBxdWFudGlmaWVyPyIpLAorCQkJ CQkJCQlwYXJzZXJfZXJycG9zaXRpb24oQDEpKTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBS UXVhbnRpZmllcigwLCAxLCBAMiwgQDEsIHl5c2Nhbm5lcik7CiAJCQkJfQogCQkJLyoge259LCB7 bix9LCB7LG19LCB7bixtfSBxdWFudGlmaWVycyAqLwpAQCAtMTc4MjMsMTAgKzE3ODIzLDEwIEBA IHJvd19wYXR0ZXJuX3F1YW50aWZpZXJfb3B0OgogCQkJCXsKIAkJCQkJaWYgKHN0cmNtcCgkNCwg Ij8iKSAhPSAwKQogCQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9TWU5UQVhfRVJST1IpLAotCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIHRva2VuIGFmdGVyIHJh bmdlIHF1YW50aWZpZXIiKSwKLQkJCQkJCQkJIGVycmhpbnQoIk9ubHkgXCI/XCIgaXMgYWxsb3dl ZCBhZnRlciB7bn0gdG8gbWFrZSBpdCByZWx1Y3RhbnQuIiksCi0JCQkJCQkJCSBwYXJzZXJfZXJy cG9zaXRpb24oQDQpKSk7CisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAor CQkJCQkJCQllcnJtc2coImludmFsaWQgdG9rZW4gYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllciIpLAor CQkJCQkJCQllcnJoaW50KCJPbmx5IFwiP1wiIGlzIGFsbG93ZWQgYWZ0ZXIge259IHRvIG1ha2Ug aXQgcmVsdWN0YW50LiIpLAorCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oQDQpKTsKIAkJCQkJ aWYgKCQyIDw9IDAgfHwgJDIgPj0gSU5UX01BWCkKIAkJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJ CQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApAQCAtMTc4MzgsMTAgKzE3ODM4LDEw IEBAIHJvd19wYXR0ZXJuX3F1YW50aWZpZXJfb3B0OgogCQkJCXsKIAkJCQkJaWYgKHN0cmNtcCgk NSwgIj8iKSAhPSAwKQogCQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIHRva2VuIGFmdGVy IHJhbmdlIHF1YW50aWZpZXIiKSwKLQkJCQkJCQkJIGVycmhpbnQoIk9ubHkgXCI/XCIgaXMgYWxs b3dlZCBhZnRlciB7bix9IG9yIHssbX0gdG8gbWFrZSBpdCByZWx1Y3RhbnQuIiksCi0JCQkJCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24oQDUpKSk7CisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5U QVhfRVJST1IpLAorCQkJCQkJCQllcnJtc2coImludmFsaWQgdG9rZW4gYWZ0ZXIgcmFuZ2UgcXVh bnRpZmllciIpLAorCQkJCQkJCQllcnJoaW50KCJPbmx5IFwiP1wiIGlzIGFsbG93ZWQgYWZ0ZXIg e24sfSBvciB7LG19IHRvIG1ha2UgaXQgcmVsdWN0YW50LiIpLAorCQkJCQkJCQlwYXJzZXJfZXJy cG9zaXRpb24oQDUpKTsKIAkJCQkJaWYgKCQyIDwgMCB8fCAkMiA+PSBJTlRfTUFYKQogCQkJCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBA IC0xNzg1MywxMCArMTc4NTMsMTAgQEAgcm93X3BhdHRlcm5fcXVhbnRpZmllcl9vcHQ6CiAJCQkJ ewogCQkJCQlpZiAoc3RyY21wKCQ1LCAiPyIpICE9IDApCiAJCQkJCQllcmVwb3J0KEVSUk9SLAot CQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCQkJCSBlcnJtc2co ImludmFsaWQgdG9rZW4gYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllciIpLAotCQkJCQkJCQkgZXJyaGlu dCgiT25seSBcIj9cIiBpcyBhbGxvd2VkIGFmdGVyIHtuLH0gb3IgeyxtfSB0byBtYWtlIGl0IHJl bHVjdGFudC4iKSwKLQkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihANSkpKTsKKwkJCQkJCQkJ ZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygiaW52YWxpZCB0 b2tlbiBhZnRlciByYW5nZSBxdWFudGlmaWVyIiksCisJCQkJCQkJCWVycmhpbnQoIk9ubHkgXCI/ XCIgaXMgYWxsb3dlZCBhZnRlciB7bix9IG9yIHssbX0gdG8gbWFrZSBpdCByZWx1Y3RhbnQuIiks CisJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihANSkpOwogCQkJCQlpZiAoJDMgPD0gMCB8fCAk MyA+PSBJTlRfTUFYKQogCQkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkJZXJyY29kZShFUlJD T0RFX1NZTlRBWF9FUlJPUiksCkBAIC0xNzg2OCwxMCArMTc4NjgsMTAgQEAgcm93X3BhdHRlcm5f cXVhbnRpZmllcl9vcHQ6CiAJCQkJewogCQkJCQlpZiAoc3RyY21wKCQ2LCAiPyIpICE9IDApCiAJ CQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCi0JCQkJCQkJCSBlcnJtc2coImludmFsaWQgdG9rZW4gYWZ0ZXIgcmFuZ2UgcXVhbnRpZmll ciIpLAotCQkJCQkJCQkgZXJyaGludCgiT25seSBcIj9cIiBpcyBhbGxvd2VkIGFmdGVyIHtuLG19 IHRvIG1ha2UgaXQgcmVsdWN0YW50LiIpLAotCQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKEA2 KSkpOworCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJZXJy bXNnKCJpbnZhbGlkIHRva2VuIGFmdGVyIHJhbmdlIHF1YW50aWZpZXIiKSwKKwkJCQkJCQkJZXJy aGludCgiT25seSBcIj9cIiBpcyBhbGxvd2VkIGFmdGVyIHtuLG19IHRvIG1ha2UgaXQgcmVsdWN0 YW50LiIpLAorCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oQDYpKTsKIAkJCQkJaWYgKCQyIDwg MCB8fCAkNCA8PSAwIHx8ICQyID49IElOVF9NQVggfHwgJDQgPj0gSU5UX01BWCkKIAkJCQkJCWVy ZXBvcnQoRVJST1IsCiAJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3Jwci5jCmluZGV4IDJjNmZjY2ViZDQ3Li5iYmE4ODdmMTdjZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9ycHIuYwpAQCAtOTUsMjAgKzk1LDIwIEBAIHRyYW5zZm9ybVJQUihQYXJzZVN0YXRl ICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRvd0RlZiAqd2luZGVmLAogCS8qIEZyYW1l IHR5cGUgbXVzdCBiZSAiUk9XIiAqLwogCWlmICh3Yy0+ZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJ T05fR1JPVVBTKQogCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfV0lORE9X SU5HX0VSUk9SKSwKLQkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIEZSQU1FIG9wdGlvbiBHUk9VUFMg d2l0aCByb3cgcGF0dGVybiByZWNvZ25pdGlvbiIpLAotCQkJCSBlcnJoaW50KCJVc2UgUk9XUyBp bnN0ZWFkLiIpLAotCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLAotCQkJCQkJCQkJd2lu ZGVmLT5mcmFtZUxvY2F0aW9uID49IDAgPwotCQkJCQkJCQkJd2luZGVmLT5mcmFtZUxvY2F0aW9u IDogd2luZGVmLT5sb2NhdGlvbikpKTsKKwkJCQllcnJjb2RlKEVSUkNPREVfV0lORE9XSU5HX0VS Uk9SKSwKKwkJCQllcnJtc2coImNhbm5vdCB1c2UgRlJBTUUgb3B0aW9uIEdST1VQUyB3aXRoIHJv dyBwYXR0ZXJuIHJlY29nbml0aW9uIiksCisJCQkJZXJyaGludCgiVXNlIFJPV1MgaW5zdGVhZC4i KSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLAorCQkJCQkJCQkgICB3aW5kZWYtPmZy YW1lTG9jYXRpb24gPj0gMCA/CisJCQkJCQkJCSAgIHdpbmRlZi0+ZnJhbWVMb2NhdGlvbiA6IHdp bmRlZi0+bG9jYXRpb24pKTsKIAlpZiAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX1JB TkdFKQogCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfV0lORE9XSU5HX0VS Uk9SKSwKLQkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIEZSQU1FIG9wdGlvbiBSQU5HRSB3aXRoIHJv dyBwYXR0ZXJuIHJlY29nbml0aW9uIiksCi0JCQkJIGVycmhpbnQoIlVzZSBST1dTIGluc3RlYWQu IiksCi0JCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCi0JCQkJCQkJCQl3aW5kZWYtPmZy YW1lTG9jYXRpb24gPj0gMCA/Ci0JCQkJCQkJCQl3aW5kZWYtPmZyYW1lTG9jYXRpb24gOiB3aW5k ZWYtPmxvY2F0aW9uKSkpOworCQkJCWVycmNvZGUoRVJSQ09ERV9XSU5ET1dJTkdfRVJST1IpLAor CQkJCWVycm1zZygiY2Fubm90IHVzZSBGUkFNRSBvcHRpb24gUkFOR0Ugd2l0aCByb3cgcGF0dGVy biByZWNvZ25pdGlvbiIpLAorCQkJCWVycmhpbnQoIlVzZSBST1dTIGluc3RlYWQuIiksCisJCQkJ cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwKKwkJCQkJCQkJICAgd2luZGVmLT5mcmFtZUxvY2F0 aW9uID49IDAgPworCQkJCQkJCQkgICB3aW5kZWYtPmZyYW1lTG9jYXRpb24gOiB3aW5kZWYtPmxv Y2F0aW9uKSk7CiAKIAkvKiBGcmFtZSBtdXN0IHN0YXJ0IGF0IGN1cnJlbnQgcm93ICovCiAJaWYg KCh3Yy0+ZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fU1RBUlRfQ1VSUkVOVF9ST1cpID09IDAp CkBAIC0xMzAsMTEgKzEzMCwxMSBAQCB0cmFuc2Zvcm1SUFIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBX aW5kb3dDbGF1c2UgKndjLCBXaW5kb3dEZWYgKndpbmRlZiwKIAkJCSAgICh3Yy0+ZnJhbWVPcHRp b25zICYgRlJBTUVPUFRJT05fU1RBUlRfT0ZGU0VUX0ZPTExPV0lORykpOwogCiAJCWVyZXBvcnQo RVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9XSU5ET1dJTkdfRVJST1IpLAotCQkJCSBlcnJt c2coIkZSQU1FIG11c3Qgc3RhcnQgYXQgQ1VSUkVOVCBST1cgd2hlbiB1c2luZyByb3cgcGF0dGVy biByZWNvZ25pdGlvbiIpLAotCQkJCSBlcnJkZXRhaWwoIkN1cnJlbnQgZnJhbWUgc3RhcnRzIHdp dGggJXMuIiwgc3RhcnRCb3VuZCksCi0JCQkJIGVycmhpbnQoIlVzZTogJXMgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgLi4uIiwgZnJhbWVUeXBlKSwKLQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgd2luZGVmLT5mcmFtZUxvY2F0aW9uID49IDAgPyB3aW5kZWYtPmZyYW1lTG9jYXRpb24g OiB3aW5kZWYtPmxvY2F0aW9uKSkpOworCQkJCWVycmNvZGUoRVJSQ09ERV9XSU5ET1dJTkdfRVJS T1IpLAorCQkJCWVycm1zZygiRlJBTUUgbXVzdCBzdGFydCBhdCBDVVJSRU5UIFJPVyB3aGVuIHVz aW5nIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIiksCisJCQkJZXJyZGV0YWlsKCJDdXJyZW50IGZy YW1lIHN0YXJ0cyB3aXRoICVzLiIsIHN0YXJ0Qm91bmQpLAorCQkJCWVycmhpbnQoIlVzZTogJXMg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgLi4uIiwgZnJhbWVUeXBlKSwKKwkJCQlwYXJzZXJfZXJy cG9zaXRpb24ocHN0YXRlLCB3aW5kZWYtPmZyYW1lTG9jYXRpb24gPj0gMCA/IHdpbmRlZi0+ZnJh bWVMb2NhdGlvbiA6IHdpbmRlZi0+bG9jYXRpb24pKTsKIAl9CiAKIAkvKiBFWENMVURFIG9wdGlv bnMgYXJlIG5vdCBwZXJtaXR0ZWQgKi8KQEAgLTE1NiwxMSArMTU2LDExIEBAIHRyYW5zZm9ybVJQ UihQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRvd0RlZiAqd2luZGVm LAogCQkJICAgKHdjLT5mcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9FWENMVURFX1RJRVMpKTsK IAogCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfV0lORE9XSU5HX0VSUk9S KSwKLQkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIEVYQ0xVREUgb3B0aW9ucyB3aXRoIHJvdyBwYXR0 ZXJuIHJlY29nbml0aW9uIiksCi0JCQkJIGVycmRldGFpbCgiRnJhbWUgZGVmaW5pdGlvbiBpbmNs dWRlcyAlcy4iLCBleGNsdWRlVHlwZSksCi0JCQkJIGVycmhpbnQoIlJlbW92ZSB0aGUgRVhDTFVE RSBjbGF1c2UgZnJvbSB0aGUgd2luZG93IGRlZmluaXRpb24uIiksCi0JCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIHdpbmRlZi0+ZXhjbHVkZUxvY2F0aW9uID49IDAgPyB3aW5kZWYtPmV4 Y2x1ZGVMb2NhdGlvbiA6IHdpbmRlZi0+bG9jYXRpb24pKSk7CisJCQkJZXJyY29kZShFUlJDT0RF X1dJTkRPV0lOR19FUlJPUiksCisJCQkJZXJybXNnKCJjYW5ub3QgdXNlIEVYQ0xVREUgb3B0aW9u cyB3aXRoIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIiksCisJCQkJZXJyZGV0YWlsKCJGcmFtZSBk ZWZpbml0aW9uIGluY2x1ZGVzICVzLiIsIGV4Y2x1ZGVUeXBlKSwKKwkJCQllcnJoaW50KCJSZW1v dmUgdGhlIEVYQ0xVREUgY2xhdXNlIGZyb20gdGhlIHdpbmRvdyBkZWZpbml0aW9uLiIpLAorCQkJ CXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHdpbmRlZi0+ZXhjbHVkZUxvY2F0aW9uID49IDAg PyB3aW5kZWYtPmV4Y2x1ZGVMb2NhdGlvbiA6IHdpbmRlZi0+bG9jYXRpb24pKTsKIAl9CiAKIAkv KiBUcmFuc2Zvcm0gQUZURVIgTUFUQ0ggU0tJUCBUTyBjbGF1c2UgKi8KQEAgLTIyMCwxMSArMjIw LDExIEBAIHZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUlBS UGF0dGVybk5vZGUgKm5vZGUsCiAJCQkJCS8qIENoZWNrIGFnYWluc3QgUlBSX1ZBUklEX01BWCBi ZWZvcmUgYWRkaW5nICovCiAJCQkJCWlmIChsaXN0X2xlbmd0aCgqdmFyTmFtZXMpID49IFJQUl9W QVJJRF9NQVgpCiAJCQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCQkoZXJyY29kZShFUlJDT0RF X1BST0dSQU1fTElNSVRfRVhDRUVERUQpLAotCQkJCQkJCQkgZXJybXNnKCJ0b28gbWFueSBwYXR0 ZXJuIHZhcmlhYmxlcyIpLAotCQkJCQkJCQkgZXJyZGV0YWlsKCJNYXhpbXVtIGlzICVkLiIsIFJQ Ul9WQVJJRF9NQVgpLAotCQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwKLQkJCQkJ CQkJCQkJCQlleHByTG9jYXRpb24oKE5vZGUgKikgbm9kZSkpKSk7CisJCQkJCQkJCWVycmNvZGUo RVJSQ09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VFREVEKSwKKwkJCQkJCQkJZXJybXNnKCJ0b28gbWFu eSBwYXR0ZXJuIHZhcmlhYmxlcyIpLAorCQkJCQkJCQllcnJkZXRhaWwoIk1heGltdW0gaXMgJWQu IiwgUlBSX1ZBUklEX01BWCksCisJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCisJ CQkJCQkJCQkJCQkgICBleHByTG9jYXRpb24oKE5vZGUgKikgbm9kZSkpKTsKIAogCQkJCQkqdmFy TmFtZXMgPSBsYXBwZW5kKCp2YXJOYW1lcywgbWFrZVN0cmluZyhwc3RyZHVwKG5vZGUtPnZhck5h bWUpKSk7CiAJCQkJfQpAQCAtMjY3LDEwICsyNjcsMTAgQEAgdmFsaWRhdGVSUFJQYXR0ZXJuVmFy Q291bnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSUFJQYXR0ZXJuTm9kZSAqbm9kZSwKIAkJCX0KIAkJ CWlmICghZm91bmQpCiAJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKLQkJCQkJCSBlcnJtc2coIkRFRklORSB2YXJpYWJsZSBcIiVzXCIgaXMg bm90IHVzZWQgaW4gUEFUVEVSTiIsCi0JCQkJCQkJCXJ0LT5uYW1lKSwKLQkJCQkJCSBwYXJzZXJf ZXJycG9zaXRpb24ocHN0YXRlLCBydC0+bG9jYXRpb24pKSk7CisJCQkJCQllcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygiREVGSU5FIHZhcmlhYmxlIFwiJXNcIiBp cyBub3QgdXNlZCBpbiBQQVRURVJOIiwKKwkJCQkJCQkgICBydC0+bmFtZSksCisJCQkJCQlwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBydC0+bG9jYXRpb24pKTsKIAkJfQogCX0KIH0KQEAgLTM0 NywxMCArMzQ3LDEwIEBAIHRyYW5zZm9ybURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUs IFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRvd0RlZiAqd2luZGVmLAogCiAJCQlpZiAoIXN0cmNtcChu LCBuYW1lKSkKIAkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5U QVhfRVJST1IpLAotCQkJCQkJIGVycm1zZygiREVGSU5FIHZhcmlhYmxlIFwiJXNcIiBhcHBlYXJz IG1vcmUgdGhhbiBvbmNlIiwKLQkJCQkJCQkJbmFtZSksCi0JCQkJCQkgcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIHIpKSkpOworCQkJCQkJZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQllcnJtc2coIkRFRklORSB2YXJpYWJsZSBcIiVz XCIgYXBwZWFycyBtb3JlIHRoYW4gb25jZSIsCisJCQkJCQkJICAgbmFtZSksCisJCQkJCQlwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oKE5vZGUgKikgcikpKTsKIAkJfQog CiAJCXJlc3RhcmdldHMgPSBsYXBwZW5kKHJlc3RhcmdldHMsIHJlc3RhcmdldCk7CkBAIC01Mjks MTQgKzUyOSwxNCBAQCBkZWZpbmVfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCiAJ ICovCiAJaWYgKGNoZWNrX2Z1bmN0aW9uc19pbl9ub2RlKG5vZGUsIG5hdl92b2xhdGlsZV9mdW5j X2NoZWNrZXIsIE5VTEwpKQogCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkgZXJybXNnKCJ2b2xhdGlsZSBmdW5jdGlvbnMg YXJlIG5vdCBhbGxvd2VkIGluIERFRklORSBjbGF1c2UiKSwKLQkJCQkgcGFyc2VyX2VycnBvc2l0 aW9uKGN0eC0+cHN0YXRlLCBleHByTG9jYXRpb24obm9kZSkpKSk7CisJCQkJZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJZXJybXNnKCJ2b2xhdGlsZSBmdW5jdGlv bnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRklORSBjbGF1c2UiKSwKKwkJCQlwYXJzZXJfZXJycG9z aXRpb24oY3R4LT5wc3RhdGUsIGV4cHJMb2NhdGlvbihub2RlKSkpOwogCWlmIChJc0Eobm9kZSwg TmV4dFZhbHVlRXhwcikpCiAJCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJtc2coInNlcXVlbmNlIG9wZXJhdGlvbnMg YXJlIG5vdCBhbGxvd2VkIGluIERFRklORSBjbGF1c2UiKSwKLQkJCQkgcGFyc2VyX2VycnBvc2l0 aW9uKGN0eC0+cHN0YXRlLCBleHByTG9jYXRpb24obm9kZSkpKSk7CisJCQkJZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJZXJybXNnKCJzZXF1ZW5jZSBvcGVyYXRp b25zIGFyZSBub3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlIiksCisJCQkJcGFyc2VyX2VycnBv c2l0aW9uKGN0eC0+cHN0YXRlLCBleHByTG9jYXRpb24obm9kZSkpKTsKIAogCS8qIFZhciBzaWdo dGluZyBmZWVkcyB0aGUgY29sdW1uLXJlZiBydWxlIGZvciB0aGUgZW5jbG9zaW5nIG5hdiBzY29w ZS4gKi8KIAlpZiAoSXNBKG5vZGUsIFZhcikgJiYKQEAgLTYwMCwxNyArNjAwLDE3IEBAIGRlZmlu ZV93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIAkJCQkJLyogUmVqZWN0IHRyaXBs ZS1vci1kZWVwZXIgbmVzdGluZyAqLwogCQkJCQlpZiAoY3R4LT5uYXZfY291bnQgPiAxKQogCQkJ CQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAotCQkJCQkJCQkgZXJybXNnKCJjYW5ub3QgbmVzdCByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG1v cmUgdGhhbiB0d28gbGV2ZWxzIGRlZXAiKSwKLQkJCQkJCQkJIGVycmhpbnQoIk9ubHkgUFJFVihG SVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkpIGNv bXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIpLAotCQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KGN0eC0+cHN0YXRlLCBuYXYtPmxvY2F0aW9uKSkpOworCQkJCQkJCQllcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJZXJybXNnKCJjYW5ub3QgbmVzdCByb3cgcGF0dGVybiBu YXZpZ2F0aW9uIG1vcmUgdGhhbiB0d28gbGV2ZWxzIGRlZXAiKSwKKwkJCQkJCQkJZXJyaGludCgi T25seSBQUkVWKEZJUlNUKCkpLCBQUkVWKExBU1QoKSksIE5FWFQoRklSU1QoKSksIGFuZCBORVhU KExBU1QoKSkgY29tcG91bmQgZm9ybXMgYXJlIGFsbG93ZWQuIiksCisJCQkJCQkJCXBhcnNlcl9l cnJwb3NpdGlvbihjdHgtPnBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpOwogCiAJCQkJCWlmICghSXNB KG5hdi0+YXJnLCBSUFJOYXZFeHByKSkKIAkJCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQkJCQkJIGVycm1zZygicm93IHBhdHRl cm4gbmF2aWdhdGlvbiBvcGVyYXRpb24gbXVzdCBiZSBhIGRpcmVjdCBhcmd1bWVudCBvZiB0aGUg b3V0ZXIgbmF2aWdhdGlvbiIpLAotCQkJCQkJCQkgZXJyaGludCgiT25seSBQUkVWKEZJUlNUKCkp LCBQUkVWKExBU1QoKSksIE5FWFQoRklSU1QoKSksIGFuZCBORVhUKExBU1QoKSkgY29tcG91bmQg Zm9ybXMgYXJlIGFsbG93ZWQuIiksCi0JCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3R4LT5w c3RhdGUsIG5hdi0+bG9jYXRpb24pKSk7CisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhf RVJST1IpLAorCQkJCQkJCQllcnJtc2coInJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9u IG11c3QgYmUgYSBkaXJlY3QgYXJndW1lbnQgb2YgdGhlIG91dGVyIG5hdmlnYXRpb24iKSwKKwkJ CQkJCQkJZXJyaGludCgiT25seSBQUkVWKEZJUlNUKCkpLCBQUkVWKExBU1QoKSksIE5FWFQoRklS U1QoKSksIGFuZCBORVhUKExBU1QoKSkgY29tcG91bmQgZm9ybXMgYXJlIGFsbG93ZWQuIiksCisJ CQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihjdHgtPnBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpOwog CiAJCQkJCWlubmVyID0gKFJQUk5hdkV4cHIgKikgbmF2LT5hcmc7CiAKQEAgLTYzMCwyOSArNjMw LDI5IEBAIGRlZmluZV93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIAkJCQl9CiAJ CQkJZWxzZSBpZiAoIW91dGVyX3BoeXMgJiYgaW5uZXJfcGh5cykKIAkJCQkJZXJlcG9ydChFUlJP UiwKLQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCQkJIGVycm1z ZygiRklSU1QgYW5kIExBU1QgY2Fubm90IGNvbnRhaW4gUFJFViBvciBORVhUIiksCi0JCQkJCQkJ IGVycmhpbnQoIk9ubHkgUFJFVihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkp LCBhbmQgTkVYVChMQVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIpLAotCQkJCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24oY3R4LT5wc3RhdGUsIG5hdi0+bG9jYXRpb24pKSk7CisJCQkJ CQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJZXJybXNnKCJGSVJTVCBh bmQgTEFTVCBjYW5ub3QgY29udGFpbiBQUkVWIG9yIE5FWFQiKSwKKwkJCQkJCQllcnJoaW50KCJP bmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQo TEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4iKSwKKwkJCQkJCQlwYXJzZXJfZXJy cG9zaXRpb24oY3R4LT5wc3RhdGUsIG5hdi0+bG9jYXRpb24pKTsKIAkJCQllbHNlIGlmIChvdXRl cl9waHlzICYmIGlubmVyX3BoeXMpCiAJCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkJCSBlcnJtc2coIlBSRVYgYW5kIE5FWFQg Y2Fubm90IGNvbnRhaW4gUFJFViBvciBORVhUIiksCi0JCQkJCQkJIGVycmhpbnQoIk9ubHkgUFJF VihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkp IGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIpLAotCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRp b24oY3R4LT5wc3RhdGUsIG5hdi0+bG9jYXRpb24pKSk7CisJCQkJCQkJZXJyY29kZShFUlJDT0RF X1NZTlRBWF9FUlJPUiksCisJCQkJCQkJZXJybXNnKCJQUkVWIGFuZCBORVhUIGNhbm5vdCBjb250 YWluIFBSRVYgb3IgTkVYVCIpLAorCQkJCQkJCWVycmhpbnQoIk9ubHkgUFJFVihGSVJTVCgpKSwg UFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkpIGNvbXBvdW5kIGZv cm1zIGFyZSBhbGxvd2VkLiIpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihjdHgtPnBzdGF0 ZSwgbmF2LT5sb2NhdGlvbikpOwogCQkJCWVsc2UKIAkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJ CQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCQkJIGVycm1zZygiRklSU1Qg YW5kIExBU1QgY2Fubm90IGNvbnRhaW4gRklSU1Qgb3IgTEFTVCIpLAotCQkJCQkJCSBlcnJoaW50 KCJPbmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5F WFQoTEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4iKSwKLQkJCQkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKGN0eC0+cHN0YXRlLCBuYXYtPmxvY2F0aW9uKSkpOworCQkJCQkJCWVycmNv ZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCWVycm1zZygiRklSU1QgYW5kIExBU1Qg Y2Fubm90IGNvbnRhaW4gRklSU1Qgb3IgTEFTVCIpLAorCQkJCQkJCWVycmhpbnQoIk9ubHkgUFJF VihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkp IGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlv bihjdHgtPnBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpOwogCQkJfQogCQkJZWxzZSBpZiAoIWN0eC0+ aGFzX2NvbHVtbl9yZWYpCiAJCQl7CiAJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQkJCSBlcnJtc2coImFyZ3VtZW50IG9mIHJvdyBw YXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgY29s dW1uIHJlZmVyZW5jZSIpLAotCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjdHgtPnBzdGF0ZSwg bmF2LT5sb2NhdGlvbikpKTsKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAor CQkJCQkJZXJybXNnKCJhcmd1bWVudCBvZiByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlv biBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25lIGNvbHVtbiByZWZlcmVuY2UiKSwKKwkJCQkJCXBh cnNlcl9lcnJwb3NpdGlvbihjdHgtPnBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpOwogCQkJfQogCiAJ CQkvKgpAQCAtNjczLDkgKzY3Myw5IEBAIGRlZmluZV93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAq Y29udGV4dCkKIAkJCQkodm9pZCkgZGVmaW5lX3dhbGtlcigoTm9kZSAqKSBuYXYtPm9mZnNldF9h cmcsIGN0eCk7CiAJCQkJaWYgKGN0eC0+aGFzX2NvbHVtbl9yZWYpCiAJCQkJCWVyZXBvcnQoRVJS T1IsCi0JCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJ CQkJCSBlcnJtc2coInJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4t dGltZSBjb25zdGFudCIpLAotCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3R4LT5wc3RhdGUs IGV4cHJMb2NhdGlvbigoTm9kZSAqKSBuYXYtPm9mZnNldF9hcmcpKSkpOworCQkJCQkJCWVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJCWVycm1zZygicm93IHBh dHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50IiksCisJ CQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN0eC0+cHN0YXRlLCBleHByTG9jYXRpb24oKE5vZGUg KikgbmF2LT5vZmZzZXRfYXJnKSkpOwogCQkJfQogCQkJaWYgKGZsYXR0ZW5lZCAmJiBuYXYtPmNv bXBvdW5kX29mZnNldF9hcmcgIT0gTlVMTCkKIAkJCXsKQEAgLTY4Myw5ICs2ODMsOSBAQCBkZWZp bmVfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCiAJCQkJKHZvaWQpIGRlZmluZV93 YWxrZXIoKE5vZGUgKikgbmF2LT5jb21wb3VuZF9vZmZzZXRfYXJnLCBjdHgpOwogCQkJCWlmIChj dHgtPmhhc19jb2x1bW5fcmVmKQogCQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCShlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJCQkgZXJybXNnKCJyb3cgcGF0 dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEgcnVuLXRpbWUgY29uc3RhbnQiKSwKLQkJ CQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN0eC0+cHN0YXRlLCBleHByTG9jYXRpb24oKE5vZGUg KikgbmF2LT5jb21wb3VuZF9vZmZzZXRfYXJnKSkpKTsKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCQllcnJtc2coInJvdyBwYXR0ZXJuIG5hdmln YXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFudCIpLAorCQkJCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihjdHgtPnBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIG5hdi0+Y29t cG91bmRfb2Zmc2V0X2FyZykpKTsKIAkJCX0KIAogCQkJKmN0eCA9IHNhdmVkOwotLSAKMi41MC4x IChBcHBsZSBHaXQtMTU1KQoK --00000000000083509906515dabc6 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0008-NFA-visited-high-water-mark.txt" Content-Disposition: attachment; filename="nocfbot-0008-NFA-visited-high-water-mark.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moy1ctxw7 RnJvbSA4Zjg3YTM5NTIyNjhmZjNiNGNiN2ZkOGEwOWFmZjFkZjAxM2UxZDE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBNb24sIDQgTWF5IDIwMjYgMjI6MzE6MDYgKzA5MDAKU3ViamVjdDogW1BBVENIIDA4LzExXSBB ZGQgaGlnaC13YXRlciBtYXJrIHRyYWNraW5nIHRvIE5GQSB2aXNpdGVkIGJpdG1hcAogcmVzZXQK ClRyYWNrIHRoZSBtaW4vbWF4IGJpdG1hcHdvcmQgaW5kZXggdG91Y2hlZCBpbiBuZmFfbWFya192 aXNpdGVkIHNvIHRoZQpwZXItYWR2YW5jZSByZXNldCBtZW1zZXRzIG9ubHkgdGhlIHRvdWNoZWQg cmFuZ2UsIG5vdCB0aGUgZnVsbApuZmFWaXNpdGVkTldvcmRzIGFycmF5LgoKRWFjaCB2aXNpdGVk IG1hcmsgcGVyZm9ybXMgdHdvIGludDE2IGNvbXBhcmlzb25zLiAgRm9yIHNpbmdsZS13b3JkCmJp dG1hcHMgdGhpcyBvdmVyaGVhZCBpcyBhZGRlZCB3aXRoIG5vIHJlc2V0IHNhdmluZzsgZm9yIGxh cmdlciBORkFzCnRoZSByZXNldCB3YWxrcyBvbmx5IHRoZSBzbGljZSB0aGUgREZTIGFjdHVhbGx5 IHRvdWNoZWQsIHdoaWNoIGlzCndoZXJlIHRoZSB3aW4gY29tZXMgZnJvbS4gIEFwcGxpZWQgdW5j b25kaXRpb25hbGx5IGZvciBzaW1wbGljaXR5LgpTZW1hbnRpY3MgdW5jaGFuZ2VkLgotLS0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYyAgICAgICB8IDQxICsrKysrKysrKysrKysrKysr KysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyB8ICAzICsr CiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgfCAgNCArKysKIDMgZmlsZXMg Y2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UlBSLmMKaW5kZXggMjQyYWU5YzZkY2YuLjFlNjE5NmQ2OTYwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUlBSLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQ Ui5jCkBAIC0zOCw2ICszOCwyMSBAQAogI2RlZmluZSBXT1JETlVNKHgpCSgoeCkgLyBCSVRTX1BF Ul9CSVRNQVBXT1JEKQogI2RlZmluZSBCSVROVU0oeCkJKCh4KSAlIEJJVFNfUEVSX0JJVE1BUFdP UkQpCiAKKy8qCisgKiBTZXQgdGhlIHZpc2l0ZWQgYml0IGZvciBlbGVtSWR4IGFuZCB1cGRhdGUg dGhlIGhpZ2gtd2F0ZXIgbWFya3MKKyAqIChuZmFWaXNpdGVkTWluL01heFdvcmQpIHNvIHRoYXQg dGhlIG5leHQgcmVzZXQgb25seSBoYXMgdG8gY2xlYXIKKyAqIHRoZSB0b3VjaGVkIHJhbmdlIGlu c3RlYWQgb2YgdGhlIGZ1bGwgbmZhVmlzaXRlZE5Xb3JkcyBhcnJheS4KKyAqLworc3RhdGljIGlu bGluZSB2b2lkCituZmFfbWFya192aXNpdGVkKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50 MTYgZWxlbUlkeCkKK3sKKwlpbnQxNgkJdyA9IFdPUkROVU0oZWxlbUlkeCk7CisKKwl3aW5zdGF0 ZS0+bmZhVmlzaXRlZEVsZW1zW3ddIHw9ICgoYml0bWFwd29yZCkgMSA8PCBCSVROVU0oZWxlbUlk eCkpOworCXdpbnN0YXRlLT5uZmFWaXNpdGVkTWluV29yZCA9IE1pbih3aW5zdGF0ZS0+bmZhVmlz aXRlZE1pbldvcmQsIHcpOworCXdpbnN0YXRlLT5uZmFWaXNpdGVkTWF4V29yZCA9IE1heCh3aW5z dGF0ZS0+bmZhVmlzaXRlZE1heFdvcmQsIHcpOworfQorCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9u cyAtIE5GQSBzdGF0ZSBtYW5hZ2VtZW50ICovCiBzdGF0aWMgUlBSTkZBU3RhdGUgKm5mYV9zdGF0 ZV9hbGxvYyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpOwogc3RhdGljIHZvaWQgbmZhX3N0YXRl X2ZyZWUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFTdGF0ZSAqc3RhdGUpOwpAQCAt MzIwLDggKzMzNSw3IEBAIG5mYV9hZGRfc3RhdGVfdW5pcXVlKFdpbmRvd0FnZ1N0YXRlICp3aW5z dGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LCBSUFJORkFTdGF0ZSAqCiAJUlBSTkZBU3RhdGUgKnRh aWwgPSBOVUxMOwogCiAJLyogTWFyayBWQVIgaW4gdmlzaXRlZCBiZWZvcmUgZHVwbGljYXRlIGNo ZWNrIHRvIHByZXZlbnQgREZTIGxvb3BzICovCi0Jd2luc3RhdGUtPm5mYVZpc2l0ZWRFbGVtc1tX T1JETlVNKHN0YXRlLT5lbGVtSWR4KV0gfD0KLQkJKChiaXRtYXB3b3JkKSAxIDw8IEJJVE5VTShz dGF0ZS0+ZWxlbUlkeCkpOworCW5mYV9tYXJrX3Zpc2l0ZWQod2luc3RhdGUsIHN0YXRlLT5lbGVt SWR4KTsKIAogCS8qIENoZWNrIGZvciBkdXBsaWNhdGUgYW5kIGZpbmQgdGFpbCAqLwogCWZvciAo cyA9IGN0eC0+c3RhdGVzOyBzICE9IE5VTEw7IHMgPSBzLT5uZXh0KQpAQCAtMTM0MSw4ICsxMzU1 LDcgQEAgbmZhX2FkdmFuY2Vfc3RhdGUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFD b250ZXh0ICpjdHgsCiAJICogdGhlIHNhbWUgVkFSIGluIGEgbmV3IGl0ZXJhdGlvbi4KIAkgKi8K IAlpZiAoIVJQUkVsZW1Jc1ZhcihlbGVtKSkKLQkJd2luc3RhdGUtPm5mYVZpc2l0ZWRFbGVtc1tX T1JETlVNKHN0YXRlLT5lbGVtSWR4KV0gfD0KLQkJCSgoYml0bWFwd29yZCkgMSA8PCBCSVROVU0o c3RhdGUtPmVsZW1JZHgpKTsKKwkJbmZhX21hcmtfdmlzaXRlZCh3aW5zdGF0ZSwgc3RhdGUtPmVs ZW1JZHgpOwogCiAJc3dpdGNoIChlbGVtLT52YXJJZCkKIAl7CkBAIC0xMzk0LDkgKzE0MDcsMjMg QEAgbmZhX2FkdmFuY2UoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpj dHgsIGludDY0IGN1cnJlbnRQb3MpCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCXNhdmVk TWF0Y2hlZFN0YXRlID0gY3R4LT5tYXRjaGVkU3RhdGU7CiAKLQkJLyogQ2xlYXIgdmlzaXRlZCBi aXRtYXAgYmVmb3JlIGVhY2ggc3RhdGUncyBERlMgZXhwYW5zaW9uICovCi0JCW1lbXNldCh3aW5z dGF0ZS0+bmZhVmlzaXRlZEVsZW1zLCAwLAotCQkJICAgc2l6ZW9mKGJpdG1hcHdvcmQpICogd2lu c3RhdGUtPm5mYVZpc2l0ZWROV29yZHMpOworCQkvKgorCQkgKiBDbGVhciB2aXNpdGVkIGJpdG1h cCBiZWZvcmUgZWFjaCBzdGF0ZSdzIERGUyBleHBhbnNpb24uICBPbmx5IHRoZQorCQkgKiByYW5n ZSB0b3VjaGVkIHNpbmNlIHRoZSBwcmV2aW91cyByZXNldCAodHJhY2tlZCB2aWEgdGhlIGhpZ2gt d2F0ZXIKKwkJICogbWFya3MgdXBkYXRlZCBpbiBuZmFfbWFya192aXNpdGVkKSBuZWVkcyB0byBi ZSBjbGVhcmVkOyBmb3Igc21hbGwKKwkJICogTkZBcyB0aGlzIGlzIHRoZSB3aG9sZSBhcnJheSwg YnV0IGZvciBsYXJnZSBORkFzIHdob3NlIERGUyBvbmx5CisJCSAqIHJlYWNoZXMgYSBmZXcgZWxl bWVudHMgcGVyIGFkdmFuY2UgaXQgYXZvaWRzIHdhbGtpbmcgdGhlIGZ1bGwKKwkJICogYml0bWFw LgorCQkgKi8KKwkJaWYgKHdpbnN0YXRlLT5uZmFWaXNpdGVkTWF4V29yZCA+PSB3aW5zdGF0ZS0+ bmZhVmlzaXRlZE1pbldvcmQpCisJCXsKKwkJCW1lbXNldCgmd2luc3RhdGUtPm5mYVZpc2l0ZWRF bGVtc1t3aW5zdGF0ZS0+bmZhVmlzaXRlZE1pbldvcmRdLCAwLAorCQkJCSAgIHNpemVvZihiaXRt YXB3b3JkKSAqCisJCQkJICAgKHdpbnN0YXRlLT5uZmFWaXNpdGVkTWF4V29yZCAtCisJCQkJCXdp bnN0YXRlLT5uZmFWaXNpdGVkTWluV29yZCArIDEpKTsKKwkJCXdpbnN0YXRlLT5uZmFWaXNpdGVk TWluV29yZCA9IElOVDE2X01BWDsKKwkJCXdpbnN0YXRlLT5uZmFWaXNpdGVkTWF4V29yZCA9IC0x OworCQl9CiAKIAkJc3RhdGUgPSBzdGF0ZXM7CiAJCXN0YXRlcyA9IHN0YXRlcy0+bmV4dDsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwppbmRleCBhZjIzNTFiY2NiOC4uZDgyYWQ4ZDM4 OTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKQEAgLTMwNTQsNiArMzA1NCw5 IEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJCQkobm9kZS0+cnBQYXR0ZXJuLT5udW1FbGVtZW50cyAtIDEpIC8gQklUU19Q RVJfQklUTUFQV09SRCArIDE7CiAJCXdpbnN0YXRlLT5uZmFWaXNpdGVkRWxlbXMgPSBwYWxsb2Mw KHNpemVvZihiaXRtYXB3b3JkKSAqCiAJCQkJCQkJCQkJCXdpbnN0YXRlLT5uZmFWaXNpdGVkTldv cmRzKTsKKwkJLyogSGlnaC13YXRlciBtYXJrIHNlbnRpbmVsczogbm8gYml0cyBzZXQgeWV0LiAq LworCQl3aW5zdGF0ZS0+bmZhVmlzaXRlZE1pbldvcmQgPSBJTlQxNl9NQVg7CisJCXdpbnN0YXRl LT5uZmFWaXNpdGVkTWF4V29yZCA9IC0xOwogCX0KIAogCS8qIFNldCB1cCByb3cgcGF0dGVybiBy ZWNvZ25pdGlvbiBERUZJTkUgY2xhdXNlICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDBjYjAx YmFhOTQ5Li4xZmJhMTRiODkyZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTI2NzMsNiArMjY3 MywxMCBAQCB0eXBlZGVmIHN0cnVjdCBXaW5kb3dBZ2dTdGF0ZQogCQkJCQkJCQkJICogZGV0ZWN0 aW9uICovCiAJaW50CQkJbmZhVmlzaXRlZE5Xb3JkczsJLyogbnVtYmVyIG9mIGJpdG1hcHdvcmRz IGluCiAJCQkJCQkJCQkgKiBuZmFWaXNpdGVkRWxlbXMgKi8KKwlpbnQxNgkJbmZhVmlzaXRlZE1p bldvcmQ7CS8qIGxvd2VzdCBiaXRtYXB3b3JkIGluZGV4IHRvdWNoZWQgc2luY2UKKwkJCQkJCQkJ CSAqIGxhc3QgcmVzZXQgKElOVDE2X01BWCA9IG5vbmUpICovCisJaW50MTYJCW5mYVZpc2l0ZWRN YXhXb3JkOwkvKiBoaWdoZXN0IGJpdG1hcHdvcmQgaW5kZXggdG91Y2hlZCBzaW5jZQorCQkJCQkJ CQkJICogbGFzdCByZXNldCAoLTEgPSBub25lKSAqLwogCWludDY0CQluZmFMYXN0UHJvY2Vzc2Vk Um93OwkvKiBsYXN0IHJvdyBwcm9jZXNzZWQgYnkgTkZBICgtMSA9CiAJCQkJCQkJCQkJICogbm9u ZSkgKi8KIAotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --00000000000083509906515dabc6 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0009-Document-DEFINE-subquery-rejection.txt" Content-Disposition: attachment; filename="nocfbot-0009-Document-DEFINE-subquery-rejection.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moy1cvn38 RnJvbSAyNmZmODEyMmVhMDFjOTIwOGI4YzdjNDhiY2EzMzAxOTJjMThkMDhkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUaHUsIDcgTWF5IDIwMjYgMjE6MDA6NDggKzA5MDAKU3ViamVjdDogW1BBVENIIDA5LzExXSBE b2N1bWVudCBERUZJTkUgc3VicXVlcnkgcmVqZWN0aW9uIGFzIGludGVudGlvbmFsCiBvdmVyLXJl amVjdGlvbgoKVGhlIFN1Ykxpbmsgc3dpdGNoIGluIHRyYW5zZm9ybVN1YkxpbmsoKSByZWplY3Rz IGV2ZXJ5IHN1YnF1ZXJ5IGluCkVYUFJfS0lORF9SUFJfREVGSU5FIHdpdGggbm8gaW5saW5lIHJh dGlvbmFsZS4gIEFkZCBhbiBYWFggYmxvY2sKcmVjb3JkaW5nIHRoYXQgU1FML1JQUiAoMTkwNzUt NSA0LjE4LjQgLyA2LjE3LjQ7IFIwMTAgLwpSMDIwKSBhY3R1YWxseSBwZXJtaXRzIGEgbmVzdGVk IHN1YnF1ZXJ5IGluIERFRklORSBwcm92aWRlZCBpdApkb2VzIG5vdCBpdHNlbGYgcGVyZm9ybSBy b3cgcGF0dGVybiByZWNvZ25pdGlvbiBhbmQgZG9lcyBub3QKcmVmZXJlbmNlIGFuIG91dGVyIHBh dHRlcm4gdmFyaWFibGUsIGFuZCB0aGF0IHRoZSBibGFua2V0CnJlamVjdGlvbiBoZXJlIHN1YnN1 bWVzIGJvdGggcmVzdHJpY3Rpb25zIGJ5IG1ha2luZyB0aGUgc3VicXVlcnkKaXRzZWxmIHVucmVh Y2hhYmxlLgoKSW1wbGVtZW50aW5nIHRoZSBjYXNlIGRpc3RpbmN0aW9uIHdvdWxkIG1lYW4gd2Fs a2luZyB0aGUgYW5hbHl6ZWQKc3VicXVlcnkgUXVlcnkgdHJlZSBmb3IgbmVzdGVkIFJQUiBhbmQg d2Fsa2luZyBpdCBmb3IgQ29sdW1uUmVmCnF1YWxpZmllcnMgbWF0Y2hpbmcgYW55IGFuY2VzdG9y J3MgcF9ycHJfcGF0dGVybl92YXJzOyBib3RoIGFyZQpkb2FibGUgd2l0aCB0aGUgZXhpc3Rpbmcg aW5mcmFzdHJ1Y3R1cmUgYW5kIGFyZSBsZWZ0IGFzIGZ1dHVyZQp3b3JrLCBub3QgYmxvY2tlZCBv biBhbnkgb3RoZXIgZmVhdHVyZS4gIENvbW1lbnQtb25seSBjaGFuZ2UuCi0tLQogc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2V4cHIuYyB8IDIyICsrKysrKysrKysrKysrKysrKysrKysKIDEgZmls ZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXgg NjkxNDgzMjg3MTkuLjU4ZWJkN2QyNGI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTE5 NDQsNiArMTk0NCwyOCBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3Vi TGluayAqc3VibGluaykKIAkJY2FzZSBFWFBSX0tJTkRfRk9SX1BPUlRJT046CiAJCQllcnIgPSBf KCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24iKTsKIAkJ CWJyZWFrOworCisJCQkvKi0tLS0tLS0tLS0KKwkJCSAqIFhYWCBTUUwvUlBSICgxOTA3NS01IDQu MTguNCAvIDYuMTcuNDsgUjAxMCAvIFIwMjApCisJCQkgKiBwZXJtaXRzIGEgc3VicXVlcnkgbmVz dGVkIGluIGEgREVGSU5FIGV4cHJlc3Npb24gcHJvdmlkZWQKKwkJCSAqIHRoYXQ6CisJCQkgKiAg IChhKSB0aGUgc3VicXVlcnkgZG9lcyBub3QgaXRzZWxmIHBlcmZvcm0gcm93IHBhdHRlcm4KKwkJ CSAqICAgICAgIHJlY29nbml0aW9uLCBhbmQKKwkJCSAqICAgKGIpIHRoZSBzdWJxdWVyeSBkb2Vz IG5vdCByZWZlcmVuY2UgYSByb3cgcGF0dGVybiB2YXJpYWJsZQorCQkJICogICAgICAgb2YgdGhl IG91dGVyIHF1ZXJ5LgorCQkJICoKKwkJCSAqIFdlIHJlamVjdCBhbGwgc3VicXVlcmllcyBoZXJl IGZvciBub3cuICBJbXBsZW1lbnRpbmcgdGhlCisJCQkgKiBjYXNlIGRpc3RpbmN0aW9uIHdvdWxk IG1lYW4gd2Fsa2luZyB0aGUgYW5hbHl6ZWQgc3VicXVlcnkKKwkJCSAqIFF1ZXJ5IHRyZWUgZm9y IG5lc3RlZCBSUFIgd2luZG93IGNsYXVzZXMgdG8gZW5mb3JjZSAoYSksCisJCQkgKiBhbmQgd2Fs a2luZyBpdCBmb3IgQ29sdW1uUmVmIHF1YWxpZmllcnMgbWF0Y2hpbmcgYW55CisJCQkgKiBhbmNl c3RvcidzIHBfcnByX3BhdHRlcm5fdmFycyB0byBlbmZvcmNlIChiKS4gIEJvdGggY2hlY2tzCisJ CQkgKiBhcmUgZG9hYmxlIHdpdGggdGhlIGV4aXN0aW5nIGluZnJhc3RydWN0dXJlIC0tIHRoZXkg YXJlCisJCQkgKiBsZWZ0IGFzIGZ1dHVyZSB3b3JrLCBub3QgYmxvY2tlZCBvbiBhbnkgb3RoZXIg ZmVhdHVyZS4KKwkJCSAqIFVudGlsIHRoZW4gdGhpcyBibGFua2V0IHJlamVjdGlvbiBpcyBpbnRl bnRpb25hbAorCQkJICogb3Zlci1yZWplY3Rpb24sIG5vdCBhIHN0YW5kYXJkIGZpdDsgaXQgc3Vi c3VtZXMgYm90aCAoYSkKKwkJCSAqIGFuZCAoYikgYnkgbWFraW5nIHRoZSBzdWJxdWVyeSBpdHNl bGYgdW5yZWFjaGFibGUuCisJCQkgKi0tLS0tLS0tLS0KKwkJCSAqLwogCQljYXNlIEVYUFJfS0lO RF9SUFJfREVGSU5FOgogCQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBERUZJTkUg ZXhwcmVzc2lvbiIpOwogCQkJYnJlYWs7Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --00000000000083509906515dabc6 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0010-Remove-duplicate-include-nodeWindowAgg.txt" Content-Disposition: attachment; filename="nocfbot-0010-Remove-duplicate-include-nodeWindowAgg.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moy1cy8i9 RnJvbSAwYzY1ZmVkNDZiYWZlMTZmZjIyOGZlNDYwZDE1ZjJmYmRjYTQ1ZTNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUaHUsIDcgTWF5IDIwMjYgMjE6Mzc6NTEgKzA5MDAKU3ViamVjdDogW1BBVENIIDEwLzExXSBS ZW1vdmUgZHVwbGljYXRlICNpbmNsdWRlIGluIG5vZGVXaW5kb3dBZ2cuYwoKI2luY2x1ZGUgImNv bW1vbi9pbnQuaCIgd2FzIGluY2x1ZGVkIHR3aWNlOyB0aGUgZmlyc3Qgb2NjdXJyZW5jZQp3YXMg YWxzbyBtaXNwbGFjZWQgYmV0d2VlbiB0d28gY2F0YWxvZy8qIGhlYWRlcnMsIGJyZWFraW5nIHRo ZQphbHBoYWJldGljYWwgZ3JvdXBpbmcgb2Ygc3lzdGVtIGhlYWRlciBpbmNsdWRlcy4gIERyb3Ag dGhlCm1pc3BsYWNlZCBmaXJzdCBvY2N1cnJlbmNlOyB0aGUgc2Vjb25kIHNpdHMgaW4gdGhlIGNv cnJlY3QKYWxwaGFiZXRpY2FsIHBvc2l0aW9uIGJldHdlZW4gY2F0YWxvZy8gYW5kIGV4ZWN1dG9y LyBoZWFkZXJzLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyB8IDEg LQogMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2lu ZG93QWdnLmMKaW5kZXggZDgyYWQ4ZDM4OTcuLjJmODc0NDlhMGUwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiYWNjZXNzL2h0 dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWNjZXNzLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19hZ2dyZWdhdGUuaCIKLSNpbmNsdWRlICJjb21tb24vaW50LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgogI2luY2x1 ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --00000000000083509906515dabc6 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0011-Normalize-RPR-standard-refs.txt" Content-Disposition: attachment; filename="nocfbot-0011-Normalize-RPR-standard-refs.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moy1d09810 RnJvbSBiZDBmMTFhNmE4MDAwNDE2OGZmMGFlZjUxMmRhNThkMGYzZmUxMzdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBTYXQsIDkgTWF5IDIwMjYgMTM6NDc6NDkgKzA5MDAKU3ViamVjdDogW1BBVENIIDExLzExXSBO b3JtYWxpemUgU1FML1JQUiBzdGFuZGFyZCByZWZlcmVuY2VzCgpNYWtlIGV2ZXJ5IHJlZmVyZW5j ZSBjaXRlIElTTy9JRUMgMTkwNzUtNSBleHBsaWNpdGx5IGFjcm9zcyBSUFIgY29kZQphbmQgcmVn cmVzcyB0ZXN0cy4gIFByZWZpeCBiYXJlICIxOTA3NS01IiAvICJTUUwgc3RhbmRhcmQiIGZvcm1z LApwaW4gU1RSMDYgdG8gaXRzIHNvdXJjZSAoNy4yLjgpLCBhbmQgd2hlcmUgYSBjbGF1c2UgaXMg bWlycm9yZWQgaW4KYm90aCBDaGFwdGVyIDQgKEZST00pIGFuZCBDaGFwdGVyIDYgKFdJTkRPVyks IGNpdGUgdGhlIENoYXB0ZXIgNgpzdWJjbGF1c2UgZmlyc3QgYmVjYXVzZSB0aGlzIGltcGxlbWVu dGF0aW9uIHRhcmdldHMgRmVhdHVyZSBSMDIwLgpEb2N1bWVudCB0aGUgY2l0YXRpb24gcG9saWN5 IGluIFJFQURNRS5ycHIuCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLnJwciAgICAg ICAgICAgICAgIHwgIDggKysrKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYyAg ICAgICAgICAgICAgICB8ICA1ICsrKy0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIu YyAgICAgICAgICAgICAgfCAgOCArKysrLS0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYyAgICAgICAgICAgICAgIHwgMTEgKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9ycHIuYyAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Jwcl9iYXNlLm91dCAgICAgICAgfCAgNiArKystLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnByX2V4cGxhaW4ub3V0ICAgICB8ICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Jwcl9pbnRlZ3JhdGlvbi5vdXQgfCAgNCArKy0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Jwcl9uZmEub3V0ICAgICAgICAgfCAgNCArKy0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9y cHJfYmFzZS5zcWwgICAgICAgICAgICAgfCAgNiArKystLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3Jwcl9leHBsYWluLnNxbCAgICAgICAgICB8ICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9y cHJfaW50ZWdyYXRpb24uc3FsICAgICAgfCAgNCArKy0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9y cHJfbmZhLnNxbCAgICAgICAgICAgICAgfCAgNCArKy0tCiAxMyBmaWxlcyBjaGFuZ2VkLCAzNyBp bnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9SRUFETUUucnByIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLnJwcgppbmRl eCA1MmJjZDc3MzkwYy4uZTY0ZWZlMGM3ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL1JFQURNRS5ycHIKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLnJwcgpAQCAt MzgsNiArMzgsMTIgQEAgV2hhdCBpcyBhIEZsYXQtQXJyYXkgU3RyZWFtIE5GQT8KIENoYXB0ZXIg SSAgUm93IFBhdHRlcm4gUmVjb2duaXRpb24gT3ZlcnZpZXcKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IAorTm9ybWF0aXZlIHJlZmVyZW5jZTogSVNPL0lFQyAxOTA3NS01IChTUUwgVGVjaG5pY2FsIFJl cG9ydCwgUGFydCA1OiBSb3cKK3BhdHRlcm4gcmVjb2duaXRpb24gaW4gU1FMKS4gIFN1YmNsYXVz ZSBudW1iZXJzIGNpdGVkIHRocm91Z2hvdXQgdGhpcyBjb2RlCitiYXNlIHJlZmVyIHRvIHRoYXQg ZG9jdW1lbnQuICBXaGVyZSBDaGFwdGVycyA0IChGUk9NIGNsYXVzZSkgYW5kIDYgKFdJTkRPVwor Y2xhdXNlKSBkZXNjcmliZSBwYXJhbGxlbCBtYXRlcmlhbCwgdGhpcyBpbXBsZW1lbnRhdGlvbiBj aXRlcyB0aGUgQ2hhcHRlciA2CitzdWJjbGF1c2UgZmlyc3QgYmVjYXVzZSBpdCB0YXJnZXRzIEZl YXR1cmUgUjAyMC4KKwogUm93IFBhdHRlcm4gUmVjb2duaXRpb24gKGhlcmVhZnRlciBSUFIpIGlz IGEgZmVhdHVyZSBpbnRyb2R1Y2VkIGluIFNRTDoyMDE2CiB0aGF0IG1hdGNoZXMgcmVnZXgtYmFz ZWQgcGF0dGVybnMgYWdhaW5zdCBvcmRlcmVkIHJvdyBzZXRzLgogCkBAIC0xMDMzLDcgKzEwMzks NyBAQCBtYXRjaDoKIAogWC0zLiBJTklUSUFMIHZzIFNFRUsKIAotICBTdGFuZGFyZCBkZWZpbml0 aW9uIChzZWN0aW9uIDYuMTIpOgorICBTdGFuZGFyZCBkZWZpbml0aW9uIChJU08vSUVDIDE5MDc1 LTUgNi4xMik6CiAgIElOSVRJQUw6ICJpcyB1c2VkIHRvIGxvb2sgZm9yIGEgbWF0Y2ggd2hvc2Ug Zmlyc3Qgcm93IGlzIFIuIgogICBTRUVLOiAgICAiaXMgdXNlZCB0byBwZXJtaXQgYSBzZWFyY2gg Zm9yIHRoZSBmaXJzdCBtYXRjaCBhbnl3aGVyZQogICAgICAgICAgICBmcm9tIFIgdGhyb3VnaCB0 aGUgZW5kIG9mIHRoZSBmdWxsIHdpbmRvdyBmcmFtZS4iCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUlBSLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMKaW5k ZXggMWU2MTk2ZDY5NjAuLmUxY2FhN2JiNTI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUlBSLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCkBAIC03 MzYsOCArNzM2LDkgQEAgbmZhX2Fic29yYl9jb250ZXh0cyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3Rh dGUpCiAgKiBvbmNlIHBlciByb3cgYnkgZXZhbHVhdGluZyBhbGwgREVGSU5FIGV4cHJlc3Npb25z LiAgTlVMTCBtZWFucyBubyBERUZJTkUKICAqIGNsYXVzZXMgZXhpc3QgKG9ubHkgcG9zc2libGUg ZHVyaW5nIGVhcmx5IGRldmVsb3BtZW50L3Rlc3RpbmcpLgogICoKLSAqIFBlciBTUUw6MjAxNiBS MDIwLCBwYXR0ZXJuIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIERFRklORSBhcmUgaW1wbGljaXRs eQotICogVFJVRSAtLSB0aGV5IG1hdGNoIGV2ZXJ5IHJvdy4gIFRoaXMgaXMgY2hlY2tlZCB2aWEg dmFySWQgPj0gbGlzdF9sZW5ndGguCisgKiBQZXIgSVNPL0lFQyAxOTA3NS01IEZlYXR1cmUgUjAy MCwgcGF0dGVybiB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiBERUZJTkUKKyAqIGFyZSBpbXBsaWNp dGx5IFRSVUUgLS0gdGhleSBtYXRjaCBldmVyeSByb3cuICBUaGlzIGlzIGNoZWNrZWQgdmlhCisg KiB2YXJJZCA+PSBsaXN0X2xlbmd0aC4KICAqLwogc3RhdGljIGJvb2wKIG5mYV9ldmFsX3Zhcl9t YXRjaChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUlBhdHRlcm5FbGVtZW50ICplbGVtLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYwppbmRleCBlZDhiNmMzNDE0Yy4uYzY1NjgxNDYzYjMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3Jwci5jCkBAIC0xMDUwLDEwICsxMDUwLDEwIEBAIHNjYW5SUFJQ YXR0ZXJuUmVjdXJzaXZlKFJQUlBhdHRlcm5Ob2RlICpub2RlLCBjaGFyICoqdmFyTmFtZXMsIGlu dCAqbnVtVmFycywKIAkJCX0KIAogCQkJLyoKLQkJCSAqIFZhcmlhYmxlIG5vdCBpbiBERUZJTkUg Y2xhdXNlIC0gdGhpcyBpcyB2YWxpZCBwZXIgU1FMIHN0YW5kYXJkLgotCQkJICogU3VjaCB2YXJp YWJsZXMgYXJlIGltcGxpY2l0bHkgVFJVRS4gQWRkIHRvIHZhck5hbWVzIHNvIHRoZXkgZ2V0Ci0J CQkgKiBhIHZhcklkID49IGRlZmluZVZhcmlhYmxlTGlzdCBsZW5ndGgsIHdoaWNoIGV4ZWN1dG9y IHRyZWF0cyBhcwotCQkJICogVFJVRS4KKwkJCSAqIFZhcmlhYmxlIG5vdCBpbiBERUZJTkUgY2xh dXNlIC0gdGhpcyBpcyB2YWxpZCBwZXIgSVNPL0lFQworCQkJICogMTkwNzUtNSBGZWF0dXJlIFIw MjAuICBTdWNoIHZhcmlhYmxlcyBhcmUgaW1wbGljaXRseSBUUlVFLiBBZGQKKwkJCSAqIHRvIHZh ck5hbWVzIHNvIHRoZXkgZ2V0IGEgdmFySWQgPj0gZGVmaW5lVmFyaWFibGVMaXN0IGxlbmd0aCwK KwkJCSAqIHdoaWNoIGV4ZWN1dG9yIHRyZWF0cyBhcyBUUlVFLgogCQkJICovCiAJCQlBc3NlcnQo Km51bVZhcnMgPCBSUFJfVkFSSURfTUFYKTsKIAkJCXZhck5hbWVzWygqbnVtVmFycykrK10gPSBu b2RlLT52YXJOYW1lOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIu YyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggNThlYmQ3ZDI0YjguLjIy OGQzYjA2M2RiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTYzMSwxMSArNjMxLDEyIEBA IHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikK IAkvKi0tLS0tLS0tLS0KIAkgKiBRdWFsaWZpZWQgcmVmZXJlbmNlcyBpbiBERUZJTkUgbmVlZCBh IHRyaS1jbGFzc2lmaWNhdGlvbjoKIAkgKgotCSAqCSAgcGF0dGVybiB2YXJpYWJsZSBxdWFsaWZp ZXIgKGUuZy4gVVAucHJpY2UpOiB2YWxpZCBwZXIgMTkwNzUtNSA0LjE2Ci0JICoJICBidXQgbm90 IHlldCBpbXBsZW1lbnRlZCAtLSByYWlzZSBGRUFUVVJFX05PVF9TVVBQT1JURUQuCisJICoJICBw YXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllciAoZS5nLiBVUC5wcmljZSk6IHZhbGlkIHBlcgorCSAq CSAgSVNPL0lFQyAxOTA3NS01IDYuMTUgLyA0LjE2IGJ1dCBub3QgeWV0IGltcGxlbWVudGVkIC0t CisJICoJICByYWlzZSBGRUFUVVJFX05PVF9TVVBQT1JURUQuCiAJICoKLQkgKgkgIEZST00tY2xh dXNlIHJhbmdlIHZhcmlhYmxlIHF1YWxpZmllcjogcHJvaGliaXRlZCBieSAxOTA3NS01IDYuNQot CSAqCSAgLS0gcmFpc2UgU1lOVEFYX0VSUk9SLgorCSAqCSAgRlJPTS1jbGF1c2UgcmFuZ2UgdmFy aWFibGUgcXVhbGlmaWVyOiBwcm9oaWJpdGVkIGJ5CisJICoJICBJU08vSUVDIDE5MDc1LTUgNi41 IC0tIHJhaXNlIFNZTlRBWF9FUlJPUi4KIAkgKgogCSAqCSAgYW55IG90aGVyIHF1YWxpZmllciAo dHlwbywgdW5kZWZpbmVkIG5hbWUpOiBmYWxsIHRocm91Z2ggYW5kIGxldAogCSAqCSAgbm9ybWFs IGNvbHVtbiByZXNvbHV0aW9uIHByb2R1Y2UgYSBzZW5zaWJsZSBlcnJvci4KQEAgLTE5NDYsNyAr MTk0Nyw3IEBAIHRyYW5zZm9ybVN1YkxpbmsoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpz dWJsaW5rKQogCQkJYnJlYWs7CiAKIAkJCS8qLS0tLS0tLS0tLQotCQkJICogWFhYIFNRTC9SUFIg KDE5MDc1LTUgNC4xOC40IC8gNi4xNy40OyBSMDEwIC8gUjAyMCkKKwkJCSAqIFhYWCBTUUwvUlBS IChJU08vSUVDIDE5MDc1LTUgNi4xNy40IC8gNC4xOC40OyBSMDIwIC8gUjAxMCkKIAkJCSAqIHBl cm1pdHMgYSBzdWJxdWVyeSBuZXN0ZWQgaW4gYSBERUZJTkUgZXhwcmVzc2lvbiBwcm92aWRlZAog CQkJICogdGhhdDoKIAkJCSAqICAgKGEpIHRoZSBzdWJxdWVyeSBkb2VzIG5vdCBpdHNlbGYgcGVy Zm9ybSByb3cgcGF0dGVybgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jw ci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCmluZGV4IGJiYTg4N2YxN2NlLi5k MmVkNmMxNDgxMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYwpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHRy YW5zZm9ybURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2Ms IFdpbmRvd0RlZiAqd2luZGVmLAogICogICAgIChSUFIncyBORkEgbWF5IGV2YWx1YXRlIHRoZSBz YW1lIHJvdydzIHByZWRpY2F0ZSBtdWx0aXBsZSB0aW1lcwogICogICAgIGR1cmluZyBiYWNrdHJh Y2tpbmcsIHNvIGEgdm9sYXRpbGUgcmVzdWx0IHdvdWxkIG1ha2UgbWF0Y2hpbmcKICAqICAgICBu b24tZGV0ZXJtaW5pc3RpYykuCi0gKiAgIC0gRm9yIGVhY2ggb3V0ZXIgUlBSTmF2RXhwciAocGVy IFNRTCA1LjYuNCBuZXN0aW5nIHJ1bGVzKToKKyAqICAgLSBGb3IgZWFjaCBvdXRlciBSUFJOYXZF eHByIChwZXIgSVNPL0lFQyAxOTA3NS01IDUuNi40IG5lc3RpbmcgcnVsZXMpOgogICogICAgICog YXJnIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgY29sdW1uIHJlZmVyZW5jZQogICogICAgICog UFJFVi9ORVhUIHdyYXBwaW5nIEZJUlNUL0xBU1QgZmxhdHRlbnMgdG8gYSBjb21wb3VuZCBraW5k CiAgKiAgICAgKiBPdGhlciBuZXN0aW5ncyBhcmUgcmVqZWN0ZWQgKEZJUlNUKFBSRVYoKSksIFBS RVYoUFJFVigpKSwgLi4uKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9y cHJfYmFzZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dAppbmRl eCA4NmFiYjk2YzE3Ny4uY2ZkMjY0NWJiZWQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnByX2Jhc2Uub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnBy X2Jhc2Uub3V0CkBAIC0xLDYgKzEsNiBAQAogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSBSUFIgQmFzZSBUZXN0cwotLS0g VGVzdHMgZm9yIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIChJU08vSUVDIDE5MDc1LTU6MjAxNikK Ky0tIFRlc3RzIGZvciBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiAoSVNPL0lFQyAxOTA3NS01KQog LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CiAtLQogLS0gUGFyc2VyIExheWVyOgpAQCAtMzA2NSw3ICszMDY1LDcgQEAgTElORSA2 OiAgICAgREVGSU5FIEEgQVMgdmFsID4gMAogICAgICAgICAgICAgXgogLS0gRXhwZWN0ZWQ6IFN5 bnRheCBlcnJvcgogLS0gUXVhbGlmaWVkIGNvbHVtbiByZWZlcmVuY2VzIChOT1QgU1VQUE9SVEVE KQotLS0gUGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZWQgbmFtZTogbm90IHN1cHBvcnRlZCAodmFs aWQgcGVyIFNRTCBzdGFuZGFyZCA0LjE2LCBub3QgeWV0IGltcGxlbWVudGVkKQorLS0gUGF0dGVy biB2YXJpYWJsZSBxdWFsaWZpZWQgbmFtZTogbm90IHN1cHBvcnRlZCAodmFsaWQgcGVyIElTTy9J RUMgMTkwNzUtNSA2LjE1IC8gNC4xNiwgbm90IHlldCBpbXBsZW1lbnRlZCkKIFNFTEVDVCBDT1VO VCgqKSBPVkVSIHcKIEZST00gcnByX2VycgogV0lORE9XIHcgQVMgKApAQCAtMzEwNCw3ICszMTA0 LDcgQEAgRVJST1I6ICBERUZJTkUgdmFyaWFibGUgImIiIGlzIG5vdCB1c2VkIGluIFBBVFRFUk4K IExJTkUgNzogICAgIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgQi52YWwgPiAwCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCiAtLSBFeHBlY3RlZDogRVJST1I6IHBhdHRlcm4g dmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb24gImIudmFsIiBpcyBub3Qgc3VwcG9ydGVkCi0t LSBGUk9NLWNsYXVzZSByYW5nZSB2YXJpYWJsZSBxdWFsaWZpZWQgbmFtZTogbm90IGFsbG93ZWQg KHByb2hpYml0ZWQgYnkgU1FMIHN0YW5kYXJkIDYuNSkKKy0tIEZST00tY2xhdXNlIHJhbmdlIHZh cmlhYmxlIHF1YWxpZmllZCBuYW1lOiBub3QgYWxsb3dlZCAocHJvaGliaXRlZCBieSBJU08vSUVD IDE5MDc1LTUgNi41KQogU0VMRUNUIENPVU5UKCopIE9WRVIgdwogRlJPTSBycHJfZXJyCiBXSU5E T1cgdyBBUyAoCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBs YWluLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CmluZGV4 IGM0NTE2ZDNjNzU2Li43NzA3OWQ1ZThjOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9y cHJfZXhwbGFpbi5vdXQKQEAgLTIxODUsNyArMjE4NSw3IEBAIFdJTkRPVyB3IEFTICgKICAgIC0+ ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0zLjAwIGxv b3BzPTEpCiAoOSByb3dzKQogCi0tLSAoQT8pezIsM306IG1pbj0yIChTUUw6MjAxNiBTVFIwNiA9 IFNUUkUgU1RSRSkgLT4gMyBsZW5ndGgtMCBtYXRjaGVzCistLSAoQT8pezIsM306IG1pbj0yIChJ U08vSUVDIDE5MDc1LTUgNy4yLjggU1RSMDYgPSBTVFJFIFNUUkUpIC0+IDMgbGVuZ3RoLTAgbWF0 Y2hlcwogQ1JFQVRFIFZJRVcgcnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbWluMiBBUwogU0VMRUNU IGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfaW50ZWdyYXRpb24ub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfaW50ZWdyYXRpb24ub3V0CmluZGV4IDkwNWJk MzUzOGRlLi43Y2JlZWQzMzQ3ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ycHJfaW50ZWdyYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnBy X2ludGVncmF0aW9uLm91dApAQCAtMTI3OCw4ICsxMjc4LDggQEAgT1JERVIgQlkgby5pZCwgci5p ZDsKIC0tIFBvc3RncmVTUUwgcmVzdHJpY3Rpb24sIHNvIHRoaXMgaXMgdGhlIG5hdHVyYWwgcGxh Y2UgdG8gZXhlcmNpc2UKIC0tICJSUFIgdW5kZXIgUmVjdXJzaXZlIFVuaW9uIikuCiAtLQotLS0g WFhYOiBXaGV0aGVyIHRoaXMgY2FzZSBmYWxscyB1bmRlciB0aGUgSVNPL0lFQyA5MDc1LTIgNC4x OC41IC8KLS0tIDYuMTcuNSBwcm9oaWJpdGlvbiBpcyBub3Qgc29tZXRoaW5nIEkgY2FuIGp1ZGdl LiAgSWYgdGhpcyBjYXNlCistLSBYWFg6IFdoZXRoZXIgdGhpcyBjYXNlIGZhbGxzIHVuZGVyIHRo ZSBJU08vSUVDIDE5MDc1LTUgNi4xNy41IC8KKy0tIDQuMTguNSBwcm9oaWJpdGlvbiBpcyBub3Qg c29tZXRoaW5nIEkgY2FuIGp1ZGdlLiAgSWYgdGhpcyBjYXNlCiAtLSBpcyBub3QgcHJvaGliaXRl ZCwgdGhlIG9wZW4gcXVlc3Rpb24gaXMgd2hldGhlciBhIHF1ZXJ5IHRoYXQKIC0tIGRvZXMgdHJp Z2dlciB0aGUgcHJvaGliaXRpb24gY2FuIGJlIGNvbnN0cnVjdGVkIGF0IGFsbC4KIC0tIFdoZXRo ZXIgdG8gcHJvaGliaXQgdGhpcyBjYXNlIGlzIGxlZnQgdG8gdGhlIGNvbW11bml0eS4KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX25mYS5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEub3V0CmluZGV4IDRjZmY3Y2ZiYmQ3Li5mZTViYjMyNGRm MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfbmZhLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEub3V0CkBAIC00MDgzLDcgKzQwODMs NyBAQCBXSU5ET1cgdyBBUyAoCiAKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gU3RhbmRhcmQgQ2xhdXNlIDc6IEZvcm1h bCBQYXR0ZXJuIE1hdGNoaW5nIFJ1bGVzCi0tLSBJU08vSUVDIDE5MDc1LTU6MjAyMSwgQ2xhdXNl IDcKKy0tIElTTy9JRUMgMTkwNzUtNSwgQ2xhdXNlIDcKIC0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSA3LjIu MiBBbHRlcm5hdGlvbjogZmlyc3QgYWx0ZXJuYXRpdmUgaXMgcHJlZmVycmVkCkBAIC00NDUzLDcg KzQ0NTMsNyBAQCBXSU5ET1cgdyBBUyAoCiAgIDMgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCiAoMyByb3dzKQogCi0tLSAoQT8pezIsM306IG1pbj0yLCBudWxsYWJsZSBpbm5lci4g IFBlciBTUUw6MjAxNiBTVFIwNiA9IChTVFJFIFNUUkUpCistLSAoQT8pezIsM306IG1pbj0yLCBu dWxsYWJsZSBpbm5lci4gIFBlciBJU08vSUVDIDE5MDc1LTUgNy4yLjggU1RSMDYgPSAoU1RSRSBT VFJFKQogLS0gaXMgdmFsaWQ6IHR3byBlbXB0eSBpdGVyYXRpb25zIHNhdGlzZnkgbWluPTIuCiAt LSBORkEgcmVwb3J0cyAzIGxlbmd0aC0wIG1hdGNoZXM7IGZpcnN0L2xhc3RfdmFsdWUgTlVMTCBv dmVyIGVtcHR5IGZyYW1lLgogV0lUSCB0ZXN0XzcyOF9taW4yIEFTICgKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9iYXNlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jw cl9iYXNlLnNxbAppbmRleCBlOGM3MjcwNjcyMC4uZmQyODlkN2NmNjcgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9iYXNlLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9ycHJfYmFzZS5zcWwKQEAgLTEsNiArMSw2IEBACiAtLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIFJQUiBCYXNlIFRlc3Rz Ci0tLSBUZXN0cyBmb3IgUm93IFBhdHRlcm4gUmVjb2duaXRpb24gKElTTy9JRUMgMTkwNzUtNToy MDE2KQorLS0gVGVzdHMgZm9yIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIChJU08vSUVDIDE5MDc1 LTUpCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KIC0tCiAtLSBQYXJzZXIgTGF5ZXI6CkBAIC0yMDgzLDcgKzIwODMsNyBAQCBX SU5ET1cgdyBBUyAoCiAKIC0tIFF1YWxpZmllZCBjb2x1bW4gcmVmZXJlbmNlcyAoTk9UIFNVUFBP UlRFRCkKIAotLS0gUGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZWQgbmFtZTogbm90IHN1cHBvcnRl ZCAodmFsaWQgcGVyIFNRTCBzdGFuZGFyZCA0LjE2LCBub3QgeWV0IGltcGxlbWVudGVkKQorLS0g UGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZWQgbmFtZTogbm90IHN1cHBvcnRlZCAodmFsaWQgcGVy IElTTy9JRUMgMTkwNzUtNSA2LjE1IC8gNC4xNiwgbm90IHlldCBpbXBsZW1lbnRlZCkKIFNFTEVD VCBDT1VOVCgqKSBPVkVSIHcKIEZST00gcnByX2VycgogV0lORE9XIHcgQVMgKApAQCAtMjExNiw3 ICsyMTE2LDcgQEAgV0lORE9XIHcgQVMgKAogKTsKIC0tIEV4cGVjdGVkOiBFUlJPUjogcGF0dGVy biB2YXJpYWJsZSBxdWFsaWZpZWQgZXhwcmVzc2lvbiAiYi52YWwiIGlzIG5vdCBzdXBwb3J0ZWQK IAotLS0gRlJPTS1jbGF1c2UgcmFuZ2UgdmFyaWFibGUgcXVhbGlmaWVkIG5hbWU6IG5vdCBhbGxv d2VkIChwcm9oaWJpdGVkIGJ5IFNRTCBzdGFuZGFyZCA2LjUpCistLSBGUk9NLWNsYXVzZSByYW5n ZSB2YXJpYWJsZSBxdWFsaWZpZWQgbmFtZTogbm90IGFsbG93ZWQgKHByb2hpYml0ZWQgYnkgSVNP L0lFQyAxOTA3NS01IDYuNSkKIFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcKIEZST00gcnByX2Vycgog V0lORE9XIHcgQVMgKApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4cGxh aW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4cGxhaW4uc3FsCmluZGV4IGQzMzlh ODBhNjczLi5hNTI3NjE1ODQ5YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnBy X2V4cGxhaW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbApA QCAtMTIyOCw3ICsxMjI4LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIERFRklORSBBIEFTIEZBTFNF CiApOycpOwogCi0tLSAoQT8pezIsM306IG1pbj0yIChTUUw6MjAxNiBTVFIwNiA9IFNUUkUgU1RS RSkgLT4gMyBsZW5ndGgtMCBtYXRjaGVzCistLSAoQT8pezIsM306IG1pbj0yIChJU08vSUVDIDE5 MDc1LTUgNy4yLjggU1RSMDYgPSBTVFJFIFNUUkUpIC0+IDMgbGVuZ3RoLTAgbWF0Y2hlcwogQ1JF QVRFIFZJRVcgcnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbWluMiBBUwogU0VMRUNUIGNvdW50KCop IE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2ludGVncmF0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwKaW5kZXggMjliMmRiMmY3YmIuLmY0MjY3Yzc0NjQ1 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfaW50ZWdyYXRpb24uc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwKQEAgLTc5Miw4ICs3 OTIsOCBAQCBPUkRFUiBCWSBvLmlkLCByLmlkOwogLS0gUG9zdGdyZVNRTCByZXN0cmljdGlvbiwg c28gdGhpcyBpcyB0aGUgbmF0dXJhbCBwbGFjZSB0byBleGVyY2lzZQogLS0gIlJQUiB1bmRlciBS ZWN1cnNpdmUgVW5pb24iKS4KIC0tCi0tLSBYWFg6IFdoZXRoZXIgdGhpcyBjYXNlIGZhbGxzIHVu ZGVyIHRoZSBJU08vSUVDIDkwNzUtMiA0LjE4LjUgLwotLS0gNi4xNy41IHByb2hpYml0aW9uIGlz IG5vdCBzb21ldGhpbmcgSSBjYW4ganVkZ2UuICBJZiB0aGlzIGNhc2UKKy0tIFhYWDogV2hldGhl ciB0aGlzIGNhc2UgZmFsbHMgdW5kZXIgdGhlIElTTy9JRUMgMTkwNzUtNSA2LjE3LjUgLworLS0g NC4xOC41IHByb2hpYml0aW9uIGlzIG5vdCBzb21ldGhpbmcgSSBjYW4ganVkZ2UuICBJZiB0aGlz IGNhc2UKIC0tIGlzIG5vdCBwcm9oaWJpdGVkLCB0aGUgb3BlbiBxdWVzdGlvbiBpcyB3aGV0aGVy IGEgcXVlcnkgdGhhdAogLS0gZG9lcyB0cmlnZ2VyIHRoZSBwcm9oaWJpdGlvbiBjYW4gYmUgY29u c3RydWN0ZWQgYXQgYWxsLgogLS0gV2hldGhlciB0byBwcm9oaWJpdCB0aGlzIGNhc2UgaXMgbGVm dCB0byB0aGUgY29tbXVuaXR5LgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnBy X25mYS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfbmZhLnNxbAppbmRleCAyOWVjNGE5 ZGFjYi4uN2E1YjVjNDFiMjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9u ZmEuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9uZmEuc3FsCkBAIC0yOTc2LDcg KzI5NzYsNyBAQCBXSU5ET1cgdyBBUyAoCiAKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gU3RhbmRhcmQgQ2xhdXNlIDc6 IEZvcm1hbCBQYXR0ZXJuIE1hdGNoaW5nIFJ1bGVzCi0tLSBJU08vSUVDIDE5MDc1LTU6MjAyMSwg Q2xhdXNlIDcKKy0tIElTTy9JRUMgMTkwNzUtNSwgQ2xhdXNlIDcKIC0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAtLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K QEAgLTMyODAsNyArMzI4MCw3IEBAIFdJTkRPVyB3IEFTICgKICAgICAgICAgQSBBUyAnQScgPSBB TlkoZmxhZ3MpCiApOwogCi0tLSAoQT8pezIsM306IG1pbj0yLCBudWxsYWJsZSBpbm5lci4gIFBl ciBTUUw6MjAxNiBTVFIwNiA9IChTVFJFIFNUUkUpCistLSAoQT8pezIsM306IG1pbj0yLCBudWxs YWJsZSBpbm5lci4gIFBlciBJU08vSUVDIDE5MDc1LTUgNy4yLjggU1RSMDYgPSAoU1RSRSBTVFJF KQogLS0gaXMgdmFsaWQ6IHR3byBlbXB0eSBpdGVyYXRpb25zIHNhdGlzZnkgbWluPTIuCiAtLSBO RkEgcmVwb3J0cyAzIGxlbmd0aC0wIG1hdGNoZXM7IGZpcnN0L2xhc3RfdmFsdWUgTlVMTCBvdmVy IGVtcHR5IGZyYW1lLgogV0lUSCB0ZXN0XzcyOF9taW4yIEFTICgKLS0gCjIuNTAuMSAoQXBwbGUg R2l0LTE1NSkKCg== --00000000000083509906515dabc6--