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 1wec9c-004u3H-2Y for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Jun 2026 17:21:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wec9a-009Ns0-1A for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Jun 2026 17:21:46 +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 1wec9Z-009Nrs-03 for pgsql-hackers@lists.postgresql.org; Tue, 30 Jun 2026 17:21:45 +0000 Received: from fhigh-a3-smtp.messagingengine.com ([103.168.172.154]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wec9L-000000013Ng-2fyH for pgsql-hackers@postgresql.org; Tue, 30 Jun 2026 17:21:44 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfhigh.phl.internal (Postfix) with ESMTP id 104E914000AF for ; Tue, 30 Jun 2026 13:21:29 -0400 (EDT) Received: from phl-imap-02 ([10.202.2.81]) by phl-compute-02.internal (MEProxy); Tue, 30 Jun 2026 13:21:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc :content-type:content-type:date:date:from:from:in-reply-to :message-id:mime-version:reply-to:subject:subject:to:to; s=fm2; t=1782840088; x=1782926488; bh=7Lk4YV8CVoBYJrv9xGFSgDjc+HrJ/m1b mpV6Kh3HL/k=; b=fdfSFwmcDboLzpTBvesd+iwM0mIq5bG4GzZxh8+rwgkXHSaR IBJOspawcnjg3PdLmiQqnhin/hPn+WtIFhitvROIi23XDE5lucKllUR/Qog5Bb3E Vv1VZY6jORVL90scI5HloZCtAk7usaLiH23BsQc3LjQymghysnFN4DUK3WMXn+F/ 2WliRfIB4ACAKxFNOmcmtsAPfCK3HrythtpL8RcDPFqeMEGEBcDsbgKiNm0CD0Bg cS9yJ6ZNop2gxDKyOPOb+gTinKHL18ZfhOFGHKzCFibxG7pEOOOliyPlqWbUiZnv ITfukZp0Yyn0xqZwd2NAjw/nb8q1Msz0QxxOng== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:message-id :mime-version:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1782840088; x= 1782926488; bh=7Lk4YV8CVoBYJrv9xGFSgDjc+HrJ/m1bmpV6Kh3HL/k=; b=f /JsDk34zefdPCjT5+8gZPpBsW73SvpP0NA0m3TdwVn2mwpQO0cfUaEVW3aNN2T8o e47bHx/5oLFz557HAoEVpFzpn5I981a5z2M9/eRMjEbUgNeQg1u8D0TEZGxyuoXh rJpXy7IQ52wI+ArluVhuyG0whT0KFR20Msi3ZaNrBtC/oHxRHEhOUPrkJEarew+g HNIBGZzDDpKeSX86/0jYQuCkM4dfAcy/EhbC1/zHnyIUJq3kboDQWdvz/FcrVhQL bMPOKmShmw62OQr9TIr7nfQJWcCcH+LzEEHi3y71Ag/D09fm0Y9pBFGbypbYhUvT DsLlkZbK6QsHGvPX4czGQ== X-ME-Sender: X-ME-Proxy-Cause: dmFkZTGOqQFAlWwu43MG+Iz3SOjfJnxGjXc2lNlsLpT3W4rj8z0gxccRh4f6lPfQW5zVKP lBeep3aAVgbwwqyp3586CBgCludf7vJ+LJwjT/kekb3R6jQzM1s5TOTZgSRst4h8+C8Ugr Rw3IjotHljE5BwrxA2RkaIZkAU6r5bpsFjVL+DHzcCr6hsEzUIR1/qnIf9YhjGX7sW/fRj bTtl8tiiJzrDS5mny3/dXMZ0j+KcbkaSrNL/lUMSUGYbCIIo6i4pxzIMSvmC05IJgQpIOe nYLjhRQ22Hl1R49jOr3IA3hxFeJ2n2uxIRndl5A14nKr8W9IU4yTzqHqjFdxkPHRCrv5Xy ShqXNGAZ8NhbumEMQnde2WFt2poVosByANX9WoJd8NK631HnLz2KbuOL9HC3T6lPDKDE3y ZCV1/skyRbsDZS6MB6VdHtbA8lu5PZXKo8n5Rs7JWemItOW0MHGbOCchZ7YccVCKhN14S1 qtp0IJlaVnJUpCS6I0hSQr4e8R68aeu7RLisN1gLrOt13W+aSEgCFVVTxA+NGB+R9erVqO unwOkvI29xnc/PDJAqINLN9DCiu5OXkso5Ct5pW1HXxWeUlhU//owWqYZOXwyPkObLPQjN aL9WzyjkoCGET7ym7vmZPROZ7t8xQHhQIVrYnX3x56wiG8Kw6Z9jLb5YSZkA X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 939A0700065; Tue, 30 Jun 2026 13:21:28 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 Date: Tue, 30 Jun 2026 13:21:07 -0400 From: "Greg Burd" To: pgsql-hackers Message-Id: Subject: Tepid: selective index updates for heap relations Content-Type: multipart/mixed; boundary=98b017876237f005fe98a17b40ccb28dde987108 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --98b017876237f005fe98a17b40ccb28dde987108 Content-Type: text/plain Content-Transfer-Encoding: 7bit Hello Hackers, This is a set of patches that extend the heap-only tuple (HOT) update optimization model such that only those indexes directly impacted by the update need be updated. The motivation is simple, reduce "bloat" (read: reduce VACUUM overhead) and speed up heap updates by avoiding unnecessary index updates. I call this "tepid" because it is decidedly not Heap-only (HOT), nor is it "WARM", nor is "partially HOT (PHOT)"... it's "Tepid" :) This is a long one. Thank you in advance for any time you dedicate to this, I appreciate your help and look forward to working together to finish this feature. Overview ======== HOT keeps an UPDATE off the indexes only when no indexed column changes. Any update that touches an indexed column today becomes a non-HOT update: a new heap tuple (often on a new page) plus a fresh entry in *every* index, with the attendant WAL, bloat, and index write amplification. Selective Index Updates (SIU, internally "HOT-indexed") lets such an update stay a heap-only tuple on the same page and insert a fresh entry only into the indexes whose attributes actually changed. The pre-update index entries are left in place and become potentially *stale*: an entry for an old key still chain-leads to the live tuple, whose current key differs. The new tuple records, inline in its own tail, a small bitmap of which indexed attributes changed at its hop. A scan that walks the chain to the live tuple unions the bitmaps of the hops it crossed; if that union overlaps the arriving index's key columns, the entry is stale and is dropped, and the row is re-supplied by the fresh entry the same update planted. The crossed-attribute bitmap -- not a value recheck -- is the staleness authority. This is, deliberately, the same family of idea as WARM and PHOT. Performance =========== A/B run of two release (cassert=off) builds -- origin/master vs the SIU series -- on a single Apple Silicon laptop (macOS), pgbench, scale 5 (siu_table = 500k rows with 3 secondary indexes; wide_table = 5k rows with 16 secondary indexes + PK), 8 clients / 4 threads, 20 s per cell. pgbench runs for a fixed time, so each variant completes a different number of updates; the write-amplification signal is therefore reported as WAL bytes per update. workload (indexed cols changed) TPS master->tepid WAL/update master->tepid --------------------------------- -------------------- ------------------------ simple_update (control; HOT both) 32.6k -> 32.1k ( 0%) 265 -> 265 B ( 0%) hot_indexed_update (1 of 4) 58.2k -> 68.6k (+18%) 636 -> 487 B (-23%) wide, 1 of 17 indexes 33.6k -> 41.7k (+24%) 1466 -> 598 B (-59%) wide, 8 of 17 indexes 37.4k -> 47.3k (+26%) 1498 -> 1015 B (-32%) wide, 16 of 17 indexes 36.3k -> 37.3k ( +3%) 1530 -> 1490 B ( -3%) read_indexscan (read-only) 164.4k ->161.3k ( -2%) n/a (no writes) Design overview ================== On-disk marker. A HOT-indexed update makes the new version a heap-only tuple (HEAP_ONLY_TUPLE) and additionally sets the new infomask2 bit HEAP_INDEXED_UPDATED (0x0800, previously free). Appended after the tuple's attribute data, in the final ceil(natts/8) bytes of its line-pointer item, is a fixed-size bitmap of the indexed attributes that changed at this hop (relative to the prior chain member). Tuple deforming stops at natts and never sees it. The bitmap is sized by the tuple's OWN attribute count at write time (HeapTupleHeaderGetNatts), not the relation's current natts: ADD COLUMN raises the relation's natts without rewriting existing tuples, so a chain can hold hops whose bitmaps were sized for different (smaller) natts, and every consumer locates a hop's bitmap from that hop's own write-time natts. The bitmap is inline in the data-bearing tuple -- there is no separate "tombstone" line pointer. Write path. heap_update gains a third mode (HEAP_SELECTIVE_INDEX_UPDATE) alongside HEAP_UPDATE_ALL_INDEXES and HEAP_HEAP_ONLY_UPDATE. It keeps the new tuple heap-only with its inline bitmap, and the executor inserts fresh entries only into the indexes whose attributes changed (ExecSetIndexUnchanged); the fresh entry points at the new heap-only tuple, not at the chain root. If the page can't fit the new tuple, the update is downgraded to a normal non-HOT update. Read path. heap_hot_search_buffer walks the chain to the live tuple and unions the per-hop modified-attrs bitmaps of every hop crossed *after* the arriving entry's own tuple (its own producing hop does not count -- a fresh entry is never stale for its own index). The index-access layer tests that union against the arriving index's key columns: overlap => stale, drop; disjoint => current, return. No value comparison and no leaf key are needed, so scans never have to materialize the leaf IndexTuple for staleness purposes, and the mechanism is identical for every access method. Prune / collapse. A dead mid-chain HOT-indexed tuple cannot be reclaimed to LP_UNUSED while stale btree entries still point at its LP, and its bitmap is what later readers union. prune collapses a dead prefix: each preserved dead key tuple is rewritten in place as an xid-free "stub" (LP_NORMAL, HEAP_INDEXED_UPDATED, natts == 0, frozen, t_ctid.offnum forwarding to the next survivor, carrying the same inline bitmap), and a dead member whose attributes are wholly subsumed by later hops is reclaimed instead. The root is redirected to the first survivor. VACUUM's index cleanup sweeps the stale leaves, then a later prune reclaims the stubs and re-points the redirect, collapsing back to classic HOT. The collapse rides the existing prune/freeze WAL; logical decoding sees an ordinary UPDATE. On-disk format commitment ========================= This is a permanent format addition and we want explicit agreement before freezing it: - One infomask2 bit (0x0800). pg_upgrade is unaffected (clusters predating SIU have no such items); a pg_upgrade test carries chains, an ABA-cycled column, a TOASTed indexed column, and collapsed stubs across an upgrade. - A new interpretation of an LP_NORMAL item: * a data-bearing HOT-indexed tuple (HEAP_INDEXED_UPDATED, natts >= 1) with a trailing modified-attrs bitmap sized by the tuple's own natts; and * an xid-free collapse-survivor stub (HEAP_INDEXED_UPDATED, natts == 0) -- a signature no real tuple can produce. Because the stub overwrites natts with the 0 sentinel, it preserves its write-time natts (needed to size/locate the bitmap) in the otherwise-unused block-number half of t_ctid; the offset half holds the forward link. Every consumer of LP_NORMAL heap items must tolerate both. We have audited the in-tree consumers; visibility-gated paths (seqscan, bitmap, ANALYZE, index build) are inherently safe because stubs are XMIN_INVALID and the trailing bitmap is past natts; amcheck and VACUUM/prune are stub-aware; pg_surgery skips stubs (forcing a freeze/kill on one would corrupt the heap); pageinspect and pgstattuple are read-only and merely imprecise. - The bitmap is sized per-tuple by write-time natts, so ADD COLUMN over a relation with live chains is safe even when it crosses an 8-attribute boundary (which changes ceil(natts/8)); a regression test exercises CREATE INDEX / DROP INDEX / ADD COLUMN (boundary-crossing) / DROP COLUMN after a chain exists and reads back through it. Alternatives considered and rejected: a separate relation fork (heavy, and the marker must be co-located with the tuple for the chain walk); a separate adjacent "tombstone" LP per hop (doubles line-pointer pressure; the inline trailing bitmap needs no extra item); "redirect-with-data" LP_REDIRECT carrying the bitmap (LP_REDIRECT has no storage for a payload); a new line-pointer flavor (consumes scarce lp_flags space and touches far more code than reusing LP_NORMAL + an infomask2 bit). Eligibility =========== A non-summarizing indexed attribute changing -- under any access method -- yields HEAP_SELECTIVE_INDEX_UPDATE unless a carve-out (6.1) applies. The cases that DO work and are covered by tests are in 6.2; the distinction is deliberate, because several restrictions an earlier (value-recheck) draft needed turned out to be unnecessary once the crossed-attribute bitmap became the staleness authority. Carve-outs (deliberately conservative) -------------------------------------- - System catalogs. A catalog UPDATE that changes a non-summarizing indexed attribute stays classic HOT but never takes the HOT-indexed path: catalogs are reached through access paths (systable scans, SnapshotDirty unique checks, seqscans) we have not proven safe. - Expression indexes: an UPDATE that changes an attribute an expression index references. The bitmap is attribute-granular and cannot tell whether the expression's VALUE changed; expression-aware selective maintenance is not wired up. (This restriction may be liftable the same way the partial-index one was -- see 6.2 -- but is kept until tested.) - Every indexed attribute changed. Nothing can be skipped, so a plain non-HOT update is cheaper (it avoids the chain-walk and bitmap overhead). "Every" is an exact test; there is no percentage GUC. - The logical-replication apply path, gated per subscription by hot_indexed_on_apply (off / subset_only (default) / always): a HOT-indexed update of a replica-identity attribute leaves a stale leaf the apply worker's RI lookup must tolerate, which it does only when the indexed attributes are a subset of the primary key. State model: classic HOT and the HOT/SIU state changes ========================================================= This section catalogs every relevant state and traces the outcomes, because the correctness argument is entirely about which states a chain and its index entries pass through. Notation: LP[n] is the line pointer at offset n; "{a,b}" is a modified-attrs bitmap; "->" in t_ctid is the same-page successor offset. 8.1 Line-pointer (ItemId) states -------------------------------- LP_UNUSED Free slot, no storage. LP_NORMAL Points to an item (lp_off, lp_len). In SIU this item is one of: - a real tuple (classic); - a HOT-indexed tuple (HEAP_INDEXED_UPDATED, natts >= 1, with a trailing bitmap); or - a collapse-survivor stub (HEAP_INDEXED_UPDATED, natts == 0, xid-free, forwarding via t_ctid.offnum). [NEW in SIU] LP_REDIRECT Points to another offset; no tuple. Created by prune when a chain root dies but heap-only members remain. (Unchanged by SIU, but now there may be more than one redirect forwarding to the same live tuple after a collapse.) LP_DEAD Dead, reclaimable, no storage. Tuple flag states (t_infomask2) and chain roles ------------------------------------------------ HEAP_HOT_UPDATED This tuple was HOT-updated; its t_ctid successor is a heap-only tuple on the same page. (classic) HEAP_ONLY_TUPLE No index entry points *directly* at the chain root for this tuple's sake; it is reached by walking t_ctid. (classic) HEAP_INDEXED_UPDATED [NEW] This heap-only tuple belongs to a HOT-indexed chain and carries an inline trailing modified-attrs bitmap of the attributes that changed at this hop (the bitmap is empty for a classic-HOT update promoted to keep a HOT-indexed chain uniform). With natts == 0 the same bit marks a collapse-survivor stub. Root tuple First tuple in the chain; the tuple classic index entries point at. Not heap-only. Heap-only tuple A chain member reached via t_ctid. Under SIU a heap-only tuple may ALSO be pointed at directly by a fresh HOT-indexed index entry (this is the key departure from classic HOT, where only the root is pointed at). Index-entry states ------------------ Fresh entry Points at the heap-only tuple version whose indexed key it matched at insertion. Its walk to the live tuple crosses no later hop that changed its index's key, so the crossed union is disjoint from its key columns: kept. Stale entry A pre-update entry whose key the live tuple no longer holds (or holds again only by coincidence after a cycle). Its walk crosses a hop that changed its index's key: the union overlaps, so it is dropped. The live row is re-supplied by the fresh entry. Read-side transient state (per scan, not on disk) [NEW] ------------------------------------------------------- xs_hot_indexed_recheck The chain walk crossed a HOT-indexed hop after the arriving entry's own tuple. xs_hot_indexed_crossed The union of those crossed hops' modified-attrs bitmaps (complete -- see Section 7). xs_hot_indexed_stale Verdict: xs_hot_indexed_crossed overlaps the arriving index's key columns. The executor (and CLUSTER, IOS, and the apply RI lookups) drop the tuple. State transitions ----------------- INSERT LP_NORMAL root tuple, not heap-only. One entry per index. Classic HOT UPDATE (no indexed col changed) old tuple: +HEAP_HOT_UPDATED, t_ctid -> new; new tuple: HEAP_ONLY_TUPLE. No new index entries. HOT-indexed UPDATE (some, not all, indexed cols changed; eligible) old tuple: +HEAP_HOT_UPDATED, t_ctid -> new; new tuple: HEAP_ONLY_TUPLE + HEAP_INDEXED_UPDATED + inline bitmap of the changed attrs; fresh entries inserted only into the changed indexes, each pointing at the new tuple; unchanged indexes are untouched (their existing entries still resolve through the chain). Non-HOT UPDATE (ineligible, or page full) new tuple on a (possibly new) page; a fresh entry in *every* index. Prune/collapse dead prefix members -> reclaimed (bitmap subset of later hops) or rewritten to xid-free stubs (forwarding, bitmap-preserving); root -> LP_REDIRECT to first survivor. VACUUM ambulkdelete sweeps stale leaves; a later pass reclaims stubs and re-points the redirect -> classic HOT. Worked example 1 -- selective maintenance and a stale drop ----------------------------------------------------------- t(id PK, a, b, c), indexes t_a(a), t_b(b), t_c(c), fillfactor 50. INSERT (1,10,20,30); UPDATE a=11; UPDATE b=21; UPDATE c=31. Chain (the bitmap on a tuple = attrs changed on the hop INTO it): LP[1] v1(a=10,b=20,c=30) root, HEAP_HOT_UPDATED, ->2 dead LP[2] v2(a=11,b=20,c=30) heap-only, INDEXED_UPDATED{a}, ->3 dead LP[3] v3(a=11,b=21,c=30) heap-only, INDEXED_UPDATED{b}, ->4 dead LP[4] v4(a=11,b=21,c=31) heap-only, INDEXED_UPDATED{c} live Index entries (fresh point mid-chain at the tuple they matched): t_a: (10)->LP[1] stale (11)->LP[2] fresh t_b: (20)->LP[1] stale (21)->LP[3] fresh t_c: (30)->LP[1] stale (31)->LP[4] fresh Scan a=11 via t_a -> LP[2]: arrive AT LP[2] (own hop {a} not counted); cross ->3 {b}, ->4 {c}. crossed = {b,c}; t_a keys = {a}; {a} & {b,c} = {} => fresh => return v4. OK Scan a=10 via t_a -> LP[1] (stale): cross ->2 {a}, ->3 {b}, ->4 {c}. crossed = {a,b,c}; {a} & {a,b,c} = {a} => stale => drop. OK (v4 is supplied once, by the fresh (11)->LP[2] entry.) Scan b=21 via t_b -> LP[3]: crossed ->4 {c}; {b} & {c} = {} => return v4. OK Worked example 2 -- ABA (the case a value recheck gets wrong) ------------------------------------------------------------- INSERT (1,10,...); UPDATE a=11; UPDATE a=10. (a cycles 10 -> 11 -> 10) LP[1] v1(a=10) root ->2 dead LP[2] v2(a=11) {a} ->3 dead LP[3] v3(a=10) {a} live t_a: (10)->LP[1] stale (11)->LP[2] stale (10)->LP[3] fresh Scan a=10 finds TWO entries with key 10 (LP[1] and LP[3]): via LP[3]: zero hops crossed => fresh => return v3. OK via LP[1]: cross ->2 {a}, ->3 {a}; crossed={a}; {a}&{a}={a} => drop. OK Returned exactly once. A value recheck would compare leaf key 10 against live a=10 for BOTH entries and keep both -> duplicate. The bitmap drops the ancestor because a *changed* after LP[1], regardless of the coincident value. Worked example 3 -- REINDEX over the chain ------------------------------------------ REINDEX t_a after example 2 rebuilds one entry, pointing at the live tuple mid-chain: (10)->LP[3]. Zero hops crossed => fresh => returned once. OK (The rebuild points at the live member, not the root, so it is never seen as stale -- this is required for "drop on overlap" to be safe; a build that pointed at the root carrying the live value would be wrongly dropped.) Worked example 4 -- collapse to xid-free stubs ----------------------------------------------- From example 1, VACUUM finds LP[1..3] dead, LP[4] live. Walking the dead prefix from the live end, accumulating the union of later hops (laterattrs): seed laterattrs from the live remainder LP[4]: {c}. LP[3] {b}: {b} not-subset {c} -> still has a live fresh entry (21)->LP[3]; keep as stub forwarding ->4. laterattrs |= {b} => {b,c}. LP[2] {a}: {a} not-subset {b,c} -> keep as stub forwarding ->3. laterattrs => {a,b,c}. LP[1] root -> LP_REDIRECT ->2 (first survivor). Result: LP[1] redirect ->2 LP[2] stub{a} forward ->3 LP[3] stub{b} forward ->4 LP[4] live v4 Scan a=11 via t_a (11)->LP[2]: arrive AT LP[2] stub (own segment {a} not counted); forward ->3 stub {b}, ->4 {c}; crossed={b,c}; {a}&{b,c}={} => fresh => return v4. OK Scan a=10 via t_a (10)->LP[1] redirect ->2: follow redirect to LP[2] (now a crossed segment) {a}, ->3 {b}, ->4 {c}; crossed={a,b,c}; {a}&{a,b,c}={a} => stale => drop. OK Had a dead member's attributes been fully subsumed by later hops (e.g. a second a-changing hop after LP[2]), LP[2] would be reclaimed (LP_DEAD) rather than stubbed: its entries are already superseded, so no live entry references it, and its {a} is still carried by the later survivor the reader crosses. Once every entry pointing into the chain is swept by ambulkdelete and the whole chain is dead, VACUUM reclaims the stubs to LP_UNUSED and re-points the root redirect straight at the live tuple -- the page is back to classic HOT. Worked example 4a -- prune and vacuum, step by step ---------------------------------------------------- A fuller trace of the same chain, separating what PRUNE does (the collapse) from what VACUUM does (the index sweep and final reclaim). Note there is no "redirect-with-data": the root becomes a plain LP_REDIRECT and the per-hop bitmaps live on the stubs, which the reader crosses one by one. Table siu_collapse(id, a, b, c), indexes siu_coll_a(a), siu_coll_b(b), siu_coll_c(c): INSERT (1,10,20,30); UPDATE a=11; UPDATE b=21; UPDATE c=31; (0) Chain after the three HOT-indexed updates, before any prune. Each new version is a heap-only tuple carrying the bitmap of what changed at its hop; each changed index got a fresh entry at the new tuple's own TID, and the pre-update entries remain (now stale). LP[1] v1(a=10,b=20,c=30) root, HEAP_HOT_UPDATED, ->2 dead LP[2] v2(a=11,b=20,c=30) heap-only, {a}, ->3 dead LP[3] v3(a=11,b=21,c=30) heap-only, {b}, ->4 dead LP[4] v4(a=11,b=21,c=31) heap-only, {c} live siu_coll_a: (10)->LP[1] stale (11)->LP[2] fresh siu_coll_b: (20)->LP[1] stale (21)->LP[3] fresh siu_coll_c: (30)->LP[1] stale (31)->LP[4] fresh (1) PRUNE (on-access heap_page_prune_opt, or VACUUM's first pass) finds LP[1..3] dead and LP[4] live, and collapses the dead prefix. Walking from the live end, accumulating laterattrs (the union of later hops): seed laterattrs = LP[4] {c} LP[3] {b}: {b} not subset of {c} -> keep as stub ->4; laterattrs={b,c} LP[2] {a}: {a} not subset of {b,c} -> keep as stub ->3; laterattrs={a,b,c} LP[1] root -> LP_REDIRECT ->2 (first survivor) A dead member is reclaimed outright (LP_DEAD) instead of stubbed only when its bitmap is a subset of the later hops -- then no live entry references it and a later survivor still carries its attributes. Here none qualify, so all three are kept. Result: LP[1] redirect ->2 LP[2] stub {a} forward ->3 (xid-free: XMIN/XMAX_INVALID, natts==0) LP[3] stub {b} forward ->4 (xid-free) LP[4] live v4 The page is kept non-all-visible while a stub remains, so index-only scans heap-fetch through it. The stale leaves (10/20/30 ->LP[1]) and the fresh leaves still point where they did; only the heap changed. (2) Reads against the collapsed page: Query a=11 via siu_coll_a, fresh entry (11)->LP[2]: arrive AT LP[2] stub (its own {a} is the entry's own hop, not counted); cross ->3 {b}, ->4 {c}; crossed={b,c}; siu_coll_a key {a}; {a} & {b,c} = {} => current => return v4. OK Query b=21 via siu_coll_b, fresh entry (21)->LP[3]: arrive AT LP[3] stub; cross ->4 {c}; crossed={c}; {b}&{c}={} => current => return v4. OK Query a=10 via siu_coll_a, STALE entry (10)->LP[1]: LP[1] is a plain redirect -> follow to LP[2]; now crossing the collapsed segment: LP[2] {a}, ->3 {b}, ->4 {c}; crossed={a,b,c}; {a} & {a,b,c} = {a} => stale => drop (v4 is supplied once, by the fresh (11)->LP[2] entry). OK (3) VACUUM index cleanup (ambulkdelete) removes the now-removable stale leaves (10/20/30 ->LP[1]); kill_prior_tuple / bottom-up deletion also remove them opportunistically. VACUUM's heap second pass (lazy_vacuum_heap_page) does NOT collapse or re-point anything; it only turns LP_DEAD line pointers into LP_UNUSED. (4) Final reclaim. Once every entry into the chain has been swept and the whole chain is dead, a later PRUNE reclaims the stubs to LP_UNUSED and re-points the root redirect straight at the live tuple: LP[1] redirect ->4 (or reclaimed if no entry references the root) LP[2] LP_UNUSED LP[3] LP_UNUSED LP[4] live v4 No SIU metadata remains on the page; it is indistinguishable from a classic-HOT chain that has been pruned. Worked example 5 -- ADD COLUMN across a bitmap-size boundary ------------------------------------------------------------- The bitmap is ceil(natts/8) bytes, sized by the tuple's natts AT WRITE TIME. ADD COLUMN raises the relation's natts but does not rewrite existing tuples, so a chain can hold hops sized for different natts. The sharp case is crossing an 8-attribute boundary, where ceil(natts/8) grows by a byte; a reader that sized the bitmap from the relation's *current* natts would read the wrong trailing bytes. Every consumer instead uses the hop's own write-time natts (HotIndexedTupleBitmapNatts: HeapTupleHeaderGetNatts for a live tuple, the stub's stashed natts otherwise). t(c1 PK, c2, ..., c7, payload), exactly 8 attrs; indexes t_c2(c2), t_c7(c7). INSERT (...,c7=70,...); UPDATE c7=71; UPDATE c7=72. LP[1] v1(c7=70) root ->2 dead LP[2] v2(c7=71) {c7} ->3 dead bitmap 1 byte (natts=8) LP[3] v3(c7=72) {c7} live bitmap 1 byte (natts=8) Now ALTER TABLE t ADD COLUMN c9 int; -- relation natts 8 -> 9; ceil 1 -> 2 A subsequent UPDATE c7=73 appends a hop sized for natts=9 (2 bytes): LP[1] v1(c7=70) root ->2 dead (1-byte bitmap) LP[2] v2(c7=71) {c7} ->3 dead (1-byte bitmap) LP[3] v3(c7=72) {c7} ->4 dead (1-byte bitmap) LP[4] v4(c7=73) {c7} live (2-byte bitmap) Scan c2= via t_c2 -> LP[1] (stale): cross ->2 {c7}, ->3 {c7}, ->4 {c7}; each located by its own write-time natts (1 byte for LP[2,3], 2 bytes for LP[4]) and OR-ed into the relnatts-sized accumulator. crossed={c7}; {c2} & {c7} = {} => the c2 entry is current => return v4. OK (Sizing the LP[2,3] bitmaps with the relation's current natts=9 would read one byte of attribute data as bitmap and could spuriously set a bit, wrongly dropping the current c2 entry -- which the per-hop sizing avoids.) Scan c7=72 via t_c7 -> LP[3] (now stale): cross ->4 {c7}; {c7}&{c7}={c7} => drop. c7=73 via the fresh (73)->LP[4] entry => return v4. OK Collapse preserves this: a stub records its write-time natts in the unused block half of t_ctid (the offset half is the forward link), so a stubbed 1-byte hop and a live 2-byte hop coexist in one collapsed chain and each is read at its own size. DROP COLUMN keeps the attnum slot (no renumber), so bit positions and natts are unchanged and existing bitmaps stay aligned. Open questions for the list =========================== (a) Is the crossed-attribute-bitmap staleness model acceptable in principle? It adds a per-hop on-disk bitmap and a chain-walk union to the read path, and weakens the "an index entry accurately reflects the indexed value" contract. (b) Is the on-disk format (Section 5) acceptable? Fin === I hope (some of) you made it this far. :) I'd appreciate feedback or review of the code and/or approach. I'm sure (I hope!) there will be debate and constructive feedback. This patch start with the ideas from another thread [1] and may eventually end up addressing that thread's specific goal (expanding HOT for expression indexes), but does not do that yet. For those inclined, there's also a wiki page [2] where I hope to fully capture this idea for posterity. best. -greg [1] https://commitfest.postgresql.org/patch/5556/ [2] https://wiki.postgresql.org/wiki/Heap_HOT_Selective_Index_Updates --98b017876237f005fe98a17b40ccb28dde987108 Content-Disposition: attachment; filename*0="v48-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v48-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBlNGM0YjhjYjc1YmU0YTllMTA5NWUxOTAwN2I0MDAwZjUxOWRjZGZiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwOToyODoxNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ4IDEv OV0gQWRkIHRlc3RzIHRvIGNvdmVyIGEgdmFyaWV0eSBvZiBoZWFwIEhPVCB1cGRhdGUKIGJl aGF2aW9ycwoKQWRkIHJlZ3Jlc3Npb24gY292ZXJhZ2UgZm9yIGV4aXN0aW5nIGNsYXNzaWMg SGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0ZQpiZWhhdmlvciwgY29tbWl0dGVkIGZpcnN0 IHNvIHRoZSBiZWhhdmlvcmFsIGNoYW5nZXMgaW4gdGhlIGxhdGVyIEhPVC1pbmRleGVkCmNv bW1pdHMgYXJlIGRpZmZhYmxlIGFnYWluc3QgYSBrbm93bi1nb29kIGJhc2VsaW5lLiAgVGhp cyBjb21taXQgYWRkcwp0ZXN0cyBzbyBhcyB0byBjb2RpZnkgZXhwbGljaXRseSB0aGUgSE9U IGNvbnRyYWN0IGZvciB0aGUgaGVhcCBBTS4KClRoZSBuZXcgaG90X3VwZGF0ZXMgcmVncmVz c2lvbiB0ZXN0IGV4ZXJjaXNlczoKLSBCYXNpYyBIT1QgdnMgbm9uLUhPVCB1cGRhdGUgZGVj aXNpb25zCi0gVGhlIGFsbC1vci1ub25lIHByb3BlcnR5IGFjcm9zcyBtdWx0aXBsZSBpbmRl eGVzCi0gUGFydGlhbCBpbmRleGVzIGFuZCBwcmVkaWNhdGUgaGFuZGxpbmcKLSBCUklOIChz dW1tYXJpemluZykgaW5kZXhlcyBhbGxvd2luZyBIT1QgdXBkYXRlcwotIFRPQVNUIGNvbHVt biBoYW5kbGluZyB3aXRoIEhPVAotIFVuaXF1ZSBjb25zdHJhaW50IGJlaGF2aW9yCi0gTXVs dGktY29sdW1uIGluZGV4ZXMKLSBQYXJ0aXRpb25lZCB0YWJsZSBIT1QgdXBkYXRlcwotIEhP VCBjaGFpbiBmb3JtYXRpb24gYW5kIHRoZSBpbmRleC1zY2FuIHdhbGsgb3ZlciBhIGNoYWlu CgpBdXRob3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+Ci0tLQogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQgfCA3NDUgKysrKysrKysrKysrKysr KysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgfCAg IDUgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsICAgICAgfCA2MDUg KysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDEzNTUgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3Vw ZGF0ZXMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90 X3VwZGF0ZXMuc3FsCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9o b3RfdXBkYXRlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVz Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjczZmUzMzEw ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91 cGRhdGVzLm91dApAQCAtMCwwICsxLDc0NSBAQAorLS0KKy0tIEhPVF9VUERBVEVTCistLSBU ZXN0IEhlYXAtT25seSBUdXBsZSAoSE9UKSB1cGRhdGUgZGVjaXNpb25zCistLQorLS0gVGhp cyB0ZXN0IHN5c3RlbWF0aWNhbGx5IHZlcmlmaWVzIHRoYXQgSE9UIHVwZGF0ZXMgYXJlIHVz ZWQgd2hlbiBhcHByb3ByaWF0ZQorLS0gYW5kIGF2b2lkZWQgd2hlbiBuZWNlc3NhcnkgKGUu Zy4sIHdoZW4gaW5kZXhlZCBjb2x1bW5zIGFyZSBtb2RpZmllZCkuCistLQorLS0gV2UgdXNl IG11bHRpcGxlIHZhbGlkYXRpb24gbWV0aG9kczoKKy0tIDEuIFN0YXRpc3RpY3MgZnVuY3Rp b25zIChwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQpCistLSAyLiBwYWdlaW5zcGVj dCBleHRlbnNpb24gZm9yIEhPVCBjaGFpbiBleGFtaW5hdGlvbgorLS0gMy4gRVhQTEFJTiB0 byB2ZXJpZnkgaW5kZXggdXNhZ2UgYWZ0ZXIgdXBkYXRlcworLS0KKy0tIExvYWQgcmVxdWly ZWQgZXh0ZW5zaW9ucworQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHBhZ2VpbnNw ZWN0OworLS0gRnVuY3Rpb24gdG8gZ2V0IEhPVCB1cGRhdGUgY291bnQKK0NSRUFURSBPUiBS RVBMQUNFIEZVTkNUSU9OIGdldF9ob3RfY291bnQocmVsX25hbWUgdGV4dCkKK1JFVFVSTlMg VEFCTEUgKAorICAgIHVwZGF0ZXMgQklHSU5ULAorICAgIGhvdCBCSUdJTlQKKykgQVMgJCQK K0RFQ0xBUkUKKyAgcmVsX29pZCBvaWQ7CitCRUdJTgorICByZWxfb2lkIDo9IHJlbF9uYW1l OjpyZWdjbGFzczo6b2lkOworCisgIC0tIFJlYWQgYm90aCBjb21taXR0ZWQgYW5kIHRyYW5z YWN0aW9uLWxvY2FsIHN0YXRzCisgIC0tIEluIGF1dG9jb21taXQgbW9kZSAoZGVmYXVsdCBm b3IgcmVncmVzc2lvbiB0ZXN0cyksIHRoaXMgd29ya3MgY29ycmVjdGx5CisgIC0tIE5vdGU6 IEluIGV4cGxpY2l0IHRyYW5zYWN0aW9ucyAoQkVHSU4vQ09NTUlUKSwgY29tbWl0dGVkIHN0 YXRzIGFscmVhZHkKKyAgLS0gaW5jbHVkZSBmbHVzaGVkIHVwZGF0ZXMsIHNvIHRoaXMgd291 bGQgZG91YmxlLWNvdW50LiBGb3IgZXhwbGljaXQKKyAgLS0gdHJhbnNhY3Rpb24gdGVzdGlu ZywgY2FsbCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKSBiZWZvcmUgdGhpcyBmdW5jdGlv bi4KKyAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChy ZWxfb2lkKSwgMCkgKworICAgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3Rf dHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApOworICBob3QgOj0gQ09BTEVTQ0UocGdfc3Rh dF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICBDT0FM RVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7 CisKKyAgUkVUVVJOIE5FWFQ7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gQ2hl Y2sgaWYgYSB0dXBsZSBpcyBwYXJ0IG9mIGEgSE9UIGNoYWluIChoYXMgYSBwcmVkZWNlc3Nv ciBvbiBzYW1lIHBhZ2UpCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBoYXNfaG90X2No YWluKHJlbF9uYW1lIHRleHQsIHRhcmdldF9jdGlkIHRpZCkKK1JFVFVSTlMgYm9vbGVhbiBB UyAkJAorREVDTEFSRQorICBibG9ja19udW0gaW50OworICBwYWdlX2l0ZW0gcmVjb3JkOwor QkVHSU4KKyAgYmxvY2tfbnVtIDo9ICh0YXJnZXRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjpp bnQ7CisKKyAgLS0gTG9vayBmb3IgYSBkaWZmZXJlbnQgdHVwbGUgb24gdGhlIHNhbWUgcGFn ZSB0aGF0IHBvaW50cyB0byBvdXIgdGFyZ2V0IHR1cGxlCisgIEZPUiBwYWdlX2l0ZW0gSU4K KyAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICBGUk9NIGhlYXBfcGFnZV9p dGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgV0hFUkUgbHBf ZmxhZ3MgPSAxCisgICAgICBBTkQgdF9jdGlkIElTIE5PVCBOVUxMCisgICAgICBBTkQgdF9j dGlkID0gdGFyZ2V0X2N0aWQKKyAgICAgIEFORCAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8 fCAnLCcgfHwgbHA6OnRleHQgfHwgJyknKTo6dGlkICE9IHRhcmdldF9jdGlkCisgIExPT1AK KyAgICBSRVRVUk4gdHJ1ZTsKKyAgRU5EIExPT1A7CisKKyAgUkVUVVJOIGZhbHNlOworRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKy0tIFByaW50IHRoZSBIT1QgY2hhaW4gc3RhcnRp bmcgZnJvbSBhIGdpdmVuIHR1cGxlCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBwcmlu dF9ob3RfY2hhaW4ocmVsX25hbWUgdGV4dCwgc3RhcnRfY3RpZCB0aWQpCitSRVRVUk5TIFRB QkxFKGNoYWluX3Bvc2l0aW9uIGludCwgY3RpZCB0aWQsIGxwX2ZsYWdzIHRleHQsIHRfY3Rp ZCB0aWQsIGNoYWluX2VuZCBib29sZWFuKSBBUworJCQKKyN2YXJpYWJsZV9jb25mbGljdCB1 c2VfY29sdW1uCitERUNMQVJFCisgIGJsb2NrX251bSBpbnQ7CisgIGxpbmVfcHRyIGludDsK KyAgY3VycmVudF9jdGlkIHRpZCA6PSBzdGFydF9jdGlkOworICBuZXh0X2N0aWQgdGlkOwor ICBwb3NpdGlvbiBpbnQgOj0gMDsKKyAgbWF4X2l0ZXJhdGlvbnMgaW50IDo9IDEwMDsKKyAg cGFnZV9pdGVtIHJlY29yZDsKKyAgZm91bmRfcHJlZGVjZXNzb3IgYm9vbGVhbiA6PSBmYWxz ZTsKKyAgZmxhZ3NfbmFtZSB0ZXh0OworQkVHSU4KKyAgYmxvY2tfbnVtIDo9IChzdGFydF9j dGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKKworICAtLSBGaW5kIHRoZSBwcmVkZWNlc3Nv ciAob2xkIHR1cGxlIHBvaW50aW5nIHRvIG91ciBzdGFydF9jdGlkKQorICBGT1IgcGFnZV9p dGVtIElOCisgICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCisgICAgRlJPTSBoZWFw X3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgIFdI RVJFIGxwX2ZsYWdzID0gMQorICAgICAgQU5EIHRfY3RpZCA9IHN0YXJ0X2N0aWQKKyAgTE9P UAorICAgIGN1cnJlbnRfY3RpZCA6PSAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcg fHwgcGFnZV9pdGVtLmxwOjp0ZXh0IHx8ICcpJyk6OnRpZDsKKyAgICBmb3VuZF9wcmVkZWNl c3NvciA6PSB0cnVlOworICAgIEVYSVQ7CisgIEVORCBMT09QOworCisgIC0tIElmIG5vIHBy ZWRlY2Vzc29yIGZvdW5kLCBzdGFydCB3aXRoIHRoZSBnaXZlbiBjdGlkCisgIElGIE5PVCBm b3VuZF9wcmVkZWNlc3NvciBUSEVOCisgICAgY3VycmVudF9jdGlkIDo9IHN0YXJ0X2N0aWQ7 CisgIEVORCBJRjsKKworICAtLSBGb2xsb3cgdGhlIGNoYWluIGZvcndhcmQKKyAgV0hJTEUg cG9zaXRpb24gPCBtYXhfaXRlcmF0aW9ucyBMT09QCisgICAgbGluZV9wdHIgOj0gKGN1cnJl bnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjppbnQ7CisKKyAgICBGT1IgcGFnZV9pdGVtIElO CisgICAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgIEZST00gaGVhcF9w YWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICAgIFdI RVJFIGxwID0gbGluZV9wdHIKKyAgICBMT09QCisgICAgICAtLSBNYXAgbHBfZmxhZ3MgdG8g bmFtZXMKKyAgICAgIGZsYWdzX25hbWUgOj0gQ0FTRSBwYWdlX2l0ZW0ubHBfZmxhZ3MKKyAg ICAgICAgV0hFTiAwIFRIRU4gJ3VudXNlZCAoMCknCisgICAgICAgIFdIRU4gMSBUSEVOICdu b3JtYWwgKDEpJworICAgICAgICBXSEVOIDIgVEhFTiAncmVkaXJlY3QgKDIpJworICAgICAg ICBXSEVOIDMgVEhFTiAnZGVhZCAoMyknCisgICAgICAgIEVMU0UgJ3Vua25vd24gKCcgfHwg cGFnZV9pdGVtLmxwX2ZsYWdzOjp0ZXh0IHx8ICcpJworICAgICAgRU5EOworCisgICAgICBS RVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAgIHBvc2l0aW9uLAorICAgICAgICBjdXJyZW50 X2N0aWQsCisgICAgICAgIGZsYWdzX25hbWUsCisgICAgICAgIHBhZ2VfaXRlbS50X2N0aWQs CisgICAgICAgIChwYWdlX2l0ZW0udF9jdGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3Rp ZCA9IGN1cnJlbnRfY3RpZCk6OmJvb2xlYW4KKyAgICAgIDsKKworICAgICAgSUYgcGFnZV9p dGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQg VEhFTgorICAgICAgICBSRVRVUk47CisgICAgICBFTkQgSUY7CisKKyAgICAgIG5leHRfY3Rp ZCA6PSBwYWdlX2l0ZW0udF9jdGlkOworCisgICAgICBJRiAobmV4dF9jdGlkOjp0ZXh0Ojpw b2ludClbMF06OmludCAhPSBibG9ja19udW0gVEhFTgorICAgICAgICBSRVRVUk47CisgICAg ICBFTkQgSUY7CisKKyAgICAgIGN1cnJlbnRfY3RpZCA6PSBuZXh0X2N0aWQ7CisgICAgICBw b3NpdGlvbiA6PSBwb3NpdGlvbiArIDE7CisgICAgRU5EIExPT1A7CisKKyAgICBJRiBwb3Np dGlvbiA9IDAgVEhFTgorICAgICAgUkVUVVJOOworICAgIEVORCBJRjsKKyAgRU5EIExPT1A7 CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gQmFzaWMgSE9UIHVwZGF0ZSAodXBk YXRlIG5vbi1pbmRleGVkIGNvbHVtbikKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAg aWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBub25faW5k ZXhlZF9jb2wgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVY IGhvdF90ZXN0X2luZGV4ZWRfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKK0lOU0VS VCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworSU5TRVJUIElO VE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdpbml0aWFsJyk7CitJTlNFUlQgSU5UTyBo b3RfdGVzdCBWQUxVRVMgKDMsIDMwMCwgJ2luaXRpYWwnKTsKKy0tIEdldCBiYXNlbGluZQor U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBo b3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFNo b3VsZCBiZSBIT1QgdXBkYXRlcyAob25seSBub24taW5kZXhlZCBjb2x1bW4gbW9kaWZpZWQp CitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMScgV0hF UkUgaWQgPSAxOworVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBk YXRlZDInIFdIRVJFIGlkID0gMjsKK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRf Y29sID0gJ3VwZGF0ZWQzJyBXSEVSRSBpZCA9IDM7CistLSBWZXJpZnkgSE9UIHVwZGF0ZXMg b2NjdXJyZWQKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1 cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMyB8ICAgMworKDEgcm93 KQorCistLSBEdW1wIHRoZSBIT1QgY2hhaW4gYmVmb3JlIFZBQ1VVTWluZworV0lUSCBjdXJy ZW50X3R1cGxlIEFTICgKKyAgU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9 IDEKKykKK1NFTEVDVAorICBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVw bGUuY3RpZCkgQVMgaGFzX2NoYWluLAorICBjaGFpbl9wb3NpdGlvbiwKKyAgcHJpbnRfaG90 X2NoYWluLmN0aWQsCisgIGxwX2ZsYWdzLAorICB0X2N0aWQKK0ZST00gY3VycmVudF90dXBs ZSwKK0xBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUu Y3RpZCk7CisgaGFzX2NoYWluIHwgY2hhaW5fcG9zaXRpb24gfCBjdGlkICB8ICBscF9mbGFn cyAgfCB0X2N0aWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tCisgdCAgICAgICAgIHwgICAgICAgICAgICAgIDAgfCAoMCwx KSB8IG5vcm1hbCAoMSkgfCAoMCw0KQorIHQgICAgICAgICB8ICAgICAgICAgICAgICAxIHwg KDAsNCkgfCBub3JtYWwgKDEpIHwgKDAsNCkKKygyIHJvd3MpCisKKy0tIFZhY3V1bSB0aGUg cmVsYXRpb24sIGV4cGVjdCB0aGUgSE9UIGNoYWluIHRvIGNvbGxhcHNlCitWQUNVVU0gaG90 X3Rlc3Q7CistLSBTaG93IHRoYXQgdGhlcmUgaXMgbm8gY2hhaW4gYWZ0ZXIgdmFjdXVtCitX SVRIIGN1cnJlbnRfdHVwbGUgQVMgKAorICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdI RVJFIGlkID0gMQorKQorU0VMRUNUCisgIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3Vy cmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgIGNoYWluX3Bvc2l0aW9uLAorICBw cmludF9ob3RfY2hhaW4uY3RpZCwKKyAgbHBfZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBjdXJy ZW50X3R1cGxlLAorTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVu dF90dXBsZS5jdGlkKTsKKyBoYXNfY2hhaW4gfCBjaGFpbl9wb3NpdGlvbiB8IGN0aWQgIHwg IGxwX2ZsYWdzICB8IHRfY3RpZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBmICAgICAgICAgfCAgICAgICAgICAgICAg MCB8ICgwLDQpIHwgbm9ybWFsICgxKSB8ICgwLDQpCisoMSByb3cpCisKKy0tIE5vbi1IT1Qg dXBkYXRlICh1cGRhdGUgaW5kZXhlZCBjb2x1bW4pCitVUERBVEUgaG90X3Rlc3QgU0VUIGlu ZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisg ICAgICAgNCB8ICAgMworKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQg KG5ldyB2YWx1ZSBmaW5kYWJsZSkKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdI RVJFIGluZGV4ZWRfY29sID0gMTUwOworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIGhvdF90ZXN0X2luZGV4 ZWRfaWR4IG9uIGhvdF90ZXN0CisgICBJbmRleCBDb25kOiAoaW5kZXhlZF9jb2wgPSAxNTAp CisoMiByb3dzKQorCitTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hF UkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgaWQgfCBpbmRleGVkX2NvbCAKKy0tLS0rLS0tLS0t LS0tLS0tLQorICAxIHwgICAgICAgICAxNTAKKygxIHJvdykKKworLS0gVmVyaWZ5IG9sZCB2 YWx1ZSBubyBsb25nZXIgaW4gaW5kZXgKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlk IEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7CisgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNp bmcgaG90X3Rlc3RfaW5kZXhlZF9pZHggb24gaG90X3Rlc3QKKyAgIEluZGV4IENvbmQ6IChp bmRleGVkX2NvbCA9IDEwMCkKKygyIHJvd3MpCisKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0 IFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworIGlkIAorLS0tLQorKDAgcm93cykKKworUkVT RVQgZW5hYmxlX3NlcXNjYW47CistLSBBbGwtb3Itbm9uZSBwcm9wZXJ0eTogdXBkYXRpbmcg b25lIGluZGV4ZWQgY29sdW1uIHJlcXVpcmVzIEFMTCBpbmRleCB1cGRhdGVzCitEUk9QIFRB QkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBjb2xfYyBp bnQsCisgICAgbm9uX2luZGV4ZWQgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0KGNvbF9hKTsKK0NSRUFU RSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xfYik7CitDUkVBVEUgSU5E RVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOworSU5TRVJUIElOVE8gaG90 X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcpOworLS0gVXBkYXRlIG9u bHkgY29sX2EgLSBzaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIGFuIGluZGV4ZWQgY29sdW1u IGNoYW5nZWQKKy0tIFRoaXMgbWVhbnMgQUxMIGluZGV4ZXMgbXVzdCBiZSB1cGRhdGVkIChh bGwtb3Itbm9uZSBwcm9wZXJ0eSkKK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNSBX SEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7 CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDAKKygx IHJvdykKKworLS0gTm93IHVwZGF0ZSBvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3Vs ZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWQgPSAndXBkYXRlZCc7 CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8 IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDEKKygxIHJvdykKKworLS0g UGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBvdXRzaWRlIHByZWRpY2F0ZSAoY29u c2VydmF0aXZlID0gbm9uLUhPVCkKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFC TEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBzdGF0dXMgdGV4 dCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKy0tIFBhcnRp YWwgaW5kZXggb25seSBjb3ZlcnMgc3RhdHVzID0gJ2FjdGl2ZScKK0NSRUFURSBJTkRFWCBo b3RfdGVzdF9hY3RpdmVfaWR4IE9OIGhvdF90ZXN0KHN0YXR1cykgV0hFUkUgc3RhdHVzID0g J2FjdGl2ZSc7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsICdhY3RpdmUnLCAn ZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgJ2luYWN0aXZlJywg J2RhdGEyJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDMsICdkZWxldGVkJywg J2RhdGEzJyk7CistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIG9uICdhY3RpdmUnIHJv dyAoaW4gcHJlZGljYXRlLCBzdGF0dXMgdW5jaGFuZ2VkKQorLS0gU2hvdWxkIGJlIEhPVAor VVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhv dCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDEKKygxIHJvdykKKworLS0gVXBk YXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnaW5hY3RpdmUnIHJvdyAob3V0c2lkZSBwcmVk aWNhdGUpCistLSBTaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAn dXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgn aG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAg MiB8ICAgMgorKDEgcm93KQorCistLSBVcGRhdGUgc3RhdHVzIGZyb20gJ2luYWN0aXZlJyB0 byAnZGVsZXRlZCcgKGJvdGggb3V0c2lkZSBwcmVkaWNhdGUpCistLSBQb3N0Z3JlU1FMIGlz IGNvbnNlcnZhdGl2ZTogaGVhcCBpbnNlcnQgaGFwcGVucyBiZWZvcmUgcHJlZGljYXRlIGNo ZWNrCistLSBTbyB0aGlzIGlzIE5PTi1IT1QgZXZlbiB0aG91Z2ggYm90aCB2YWx1ZXMgYXJl IG91dHNpZGUgcHJlZGljYXRlCitVUERBVEUgaG90X3Rlc3QgU0VUIHN0YXR1cyA9ICdkZWxl dGVkJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDMgfCAg IDIKKygxIHJvdykKKworLS0gVmVyaWZ5IGluZGV4IHN0aWxsIHdvcmtzIGZvciAnYWN0aXZl JyByb3dzCitTRUxFQ1QgaWQsIHN0YXR1cyBGUk9NIGhvdF90ZXN0IFdIRVJFIHN0YXR1cyA9 ICdhY3RpdmUnOworIGlkIHwgc3RhdHVzIAorLS0tLSstLS0tLS0tLQorICAxIHwgYWN0aXZl CisoMSByb3cpCisKKy0tIE9ubHkgQlJJTiAoc3VtbWFyaXppbmcpIGluZGV4ZXMgb24gbm9u LVBLIGNvbHVtbnMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rl c3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cyB0aW1lc3RhbXAsCisgICAg dmFsdWUgaW50LAorICAgIGJyaW5fY29sIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3RzX2JyaW4gT04gaG90X3Rlc3QgVVNJTkcgYnJp bih0cyk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYnJpbl9jb2xfYnJpbiBPTiBob3RfdGVz dCBVU0lORyBicmluKGJyaW5fY29sKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAo MSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOworLS0gVXBkYXRlIGJvdGggQlJJTiBjb2x1 bW5zIC0gc2hvdWxkIHN0aWxsIGJlIEhPVCAob25seSBzdW1tYXJpemluZyBpbmRleGVzKQor VVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcyMDI0LTAxLTAyJywgYnJpbl9jb2wgPSAyMDAw IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMSB8ICAgMQor KDEgcm93KQorCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIGFsc28g YmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHZhbHVlID0gMjAwIFdIRVJFIGlkID0gMTsK K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMiB8ICAgMgorKDEgcm93KQorCistLSBU T0FTVCBhbmQgSE9UOiBUT0FTVGVkIGNvbHVtbnMgY2FuIHBhcnRpY2lwYXRlIGluIEhPVAor RFJPUCBUQUJMRSBob3RfdGVzdDsKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBsYXJnZV90ZXh0 IHRleHQsCisgICAgc21hbGxfdGV4dCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsK Ky0tIEluc2VydCByb3cgd2l0aCBUT0FTVGVkIGNvbHVtbiAoPiAyS0IpCitJTlNFUlQgSU5U TyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgcmVwZWF0KCd4JywgMzAwMCksICdzbWFsbCcp OworLS0gVXBkYXRlIG5vbi1pbmRleGVkLCBub24tVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQg YmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBkYXRlZCc7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhv dCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDEKKygxIHJvdykKKworLS0gVXBk YXRlIFRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhPVCBpZiBpbmRleGVkIGNvbHVtbiB1 bmNoYW5nZWQKK1VQREFURSBob3RfdGVzdCBTRVQgbGFyZ2VfdGV4dCA9IHJlcGVhdCgneScs IDMwMDApOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVw ZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAyIHwgICAyCisoMSByb3cp CisKKy0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERB VEUgaG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMjAwOworU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0t LS0KKyAgICAgICAzIHwgICAyCisoMSByb3cpCisKKy0tIFVuaXF1ZSBjb25zdHJhaW50ICh1 bmlxdWUgaW5kZXgpIGJlaGF2ZXMgbGlrZSByZWd1bGFyIGluZGV4CitEUk9QIFRBQkxFIGhv dF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBL RVksCisgICAgdW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIGRhdGEgdGV4dAorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAx MDAsICdkYXRhMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdk YXRhMicpOworLS0gVXBkYXRlIGRhdGEgKG5vbi1pbmRleGVkKSAtIHNob3VsZCBiZSBIT1QK K1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0t Ky0tLS0tCisgICAgICAgMiB8ICAgMgorKDEgcm93KQorCistLSBWZXJpZnkgdW5pcXVlIGNv bnN0cmFpbnQgc3RpbGwgZW5mb3JjZWQKK1NFTEVDVCBpZCwgdW5pcXVlX2NvbCwgZGF0YSBG Uk9NIGhvdF90ZXN0IE9SREVSIEJZIGlkOworIGlkIHwgdW5pcXVlX2NvbCB8ICBkYXRhICAg CistLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAgMSB8ICAgICAgICAxMDAgfCB1cGRh dGVkCisgIDIgfCAgICAgICAgMjAwIHwgdXBkYXRlZAorKDIgcm93cykKKworLS0gVGhpcyBz aG91bGQgZmFpbCAodW5pcXVlIHZpb2xhdGlvbikKK1VQREFURSBob3RfdGVzdCBTRVQgdW5p cXVlX2NvbCA9IDEwMCBXSEVSRSBpZCA9IDI7CitFUlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFs dWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgImhvdF90ZXN0X3VuaXF1ZV9jb2xfa2V5 IgorREVUQUlMOiAgS2V5ICh1bmlxdWVfY29sKT0oMTAwKSBhbHJlYWR5IGV4aXN0cy4KKy0t IE11bHRpLWNvbHVtbiBpbmRleDogYW55IGNvbHVtbiBjaGFuZ2UgPSBub24tSE9UCitEUk9Q IFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQg UFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBjb2xf YyBpbnQsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVB VEUgSU5ERVggaG90X3Rlc3RfYWJfaWR4IE9OIGhvdF90ZXN0KGNvbF9hLCBjb2xfYik7CitJ TlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdkYXRhJyk7Cist LSBVcGRhdGUgY29sX2EgKHBhcnQgb2YgbXVsdGktY29sdW1uIGluZGV4KSAtIHNob3VsZCBO T1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9hID0gMTU7CitTRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0t LS0tLSstLS0tLQorICAgICAgIDEgfCAgIDAKKygxIHJvdykKKworLS0gUmVzZXQKK1VQREFU RSBob3RfdGVzdCBTRVQgY29sX2EgPSAxMDsKKy0tIFVwZGF0ZSBjb2xfYiAocGFydCBvZiBt dWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVz dCBTRVQgY29sX2IgPSAyNTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rl c3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMyB8ICAg MAorKDEgcm93KQorCistLSBSZXNldAorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYiA9IDIw OworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMg fCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICA0IHwgICAwCisoMSByb3cpCisKKy0t IFVwZGF0ZSBjb2xfYyAobm90IGluZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhv dF90ZXN0IFNFVCBjb2xfYyA9IDM1OworLS0gVXBkYXRlIGRhdGEgKG5vdCBpbmRleGVkKSAt IHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsK K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgNiB8ICAgMgorKDEgcm93KQorCistLSBQ YXJ0aXRpb25lZCB0YWJsZXM6IEhPVCB3b3JrcyB3aXRoaW4gcGFydGl0aW9ucworRFJPUCBU QUJMRSBJRiBFWElTVFMgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKK05PVElDRTog IHRhYmxlICJob3RfdGVzdF9wYXJ0aXRpb25lZCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5n CitDUkVBVEUgVEFCTEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgKAorICAgIGlkIGludCwKKyAg ICBwYXJ0aXRpb25fa2V5IGludCwKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgZGF0YSB0 ZXh0LAorICAgIFBSSU1BUlkgS0VZIChpZCwgcGFydGl0aW9uX2tleSkKKykgUEFSVElUSU9O IEJZIFJBTkdFIChwYXJ0aXRpb25fa2V5KTsKK0NSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0 MSBQQVJUSVRJT04gT0YgaG90X3Rlc3RfcGFydGl0aW9uZWQKKyAgICBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgxMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgVEFCTEUg aG90X3Rlc3RfcGFydDIgUEFSVElUSU9OIE9GIGhvdF90ZXN0X3BhcnRpdGlvbmVkCisgICAg Rk9SIFZBTFVFUyBGUk9NICgxMDApIFRPICgyMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfcGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0aW9u ZWQoaW5kZXhlZF9jb2wpOworSU5TRVJUIElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQgVkFM VUVTICgxLCA1MCwgMTAwLCAnaW5pdGlhbDEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0X3Bh cnRpdGlvbmVkIFZBTFVFUyAoMiwgMTUwLCAyMDAsICdpbml0aWFsMicpOworLS0gVXBkYXRl IGluIHBhcnRpdGlvbiAxIChub24taW5kZXhlZCBjb2x1bW4pIC0gc2hvdWxkIGJlIEhPVAor VVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVS RSBpZCA9IDE7CistLSBVcGRhdGUgaW4gcGFydGl0aW9uIDIgKG5vbi1pbmRleGVkIGNvbHVt bikgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VUIGRh dGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3RfcGFydDEnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0t LS0tCisgICAgICAgMSB8ICAgMQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF90ZXN0X3BhcnQyJyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSst LS0tLQorICAgICAgIDEgfCAgIDEKKygxIHJvdykKKworLS0gVmVyaWZ5IGluZGV4ZXMgd29y ayBvbiBwYXJ0aXRpb25zCitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBX SEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitT RUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRleGVkX2NvbCA9 IDIwMDsKKyBpZCAKKy0tLS0KKyAgMgorKDEgcm93KQorCistLSBVcGRhdGUgaW5kZXhlZCBj b2x1bW4gaW4gcGFydGl0aW9uIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVz dF9wYXJ0aXRpb25lZCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOworIHVwZGF0ZXMg fCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAyIHwgICAxCisoMSByb3cpCisKKy0t IFZlcmlmeSBpbmRleCB3YXMgdXBkYXRlZAorU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFy dGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgaWQgCistLS0tCisgIDEKKygx IHJvdykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVHJpZ2dlciBtb2RpZmlj YXRpb25zOiBoZWFwX21vZGlmeV90dXBsZSgpIGFuZCBIT1QKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIFRlc3QgdGhhdCB3ZSBjb3JyZWN0bHkgZGV0ZWN0IHdoZW4gdHJpZ2dl cnMgbW9kaWZ5IGluZGV4ZWQgY29sdW1ucyB2aWEKKy0tIGhlYXBfbW9kaWZ5X3R1cGxlKCks IGV2ZW4gd2hlbiB0aG9zZSBjb2x1bW5zIGFyZW4ndCBpbiB0aGUgVVBEQVRFJ3MgU0VUIGNs YXVzZQorQ1JFQVRFIFRBQkxFIGhvdF90cmlnZ2VyX3Rlc3QgKAorICAgIGlkIGludCBQUklN QVJZIEtFWSwKKyAgICB0cmlnZ2VyZWRfY29sIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lU SCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBob3RfdHJpZ2dlcl9pZHggT04g aG90X3RyaWdnZXJfdGVzdCh0cmlnZ2VyZWRfY29sKTsKKy0tIENyZWF0ZSBhIHRyaWdnZXIg dGhhdCBtb2RpZmllcyBhbiBpbmRleGVkIGNvbHVtbgorQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKQorUkVUVVJOUyBUUklHR0VSIEFTICQkCitC RUdJTgorICAgIE5FVy50cmlnZ2VyZWRfY29sID0gTkVXLnRyaWdnZXJlZF9jb2wgKyAxOwor ICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIFRS SUdHRVIgYmVmb3JlX3VwZGF0ZV9tb2RpZnkKKyAgICBCRUZPUkUgVVBEQVRFIE9OIGhvdF90 cmlnZ2VyX3Rlc3QKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIEZVTkNUSU9OIG1v ZGlmeV90cmlnZ2VyZWRfY29sKCk7CitJTlNFUlQgSU5UTyBob3RfdHJpZ2dlcl90ZXN0IFZB TFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdHJpZ2dlcl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0t LQorICAgICAgIDAgfCAgIDAKKygxIHJvdykKKworLS0gVXBkYXRlIG9ubHkgZGF0YSBjb2x1 bW4sIGJ1dCB0cmlnZ2VyIG1vZGlmaWVzIGluZGV4ZWQgY29sdW1uCistLSBTaG91bGQgTk9U IGJlIEhPVCBiZWNhdXNlIHRyaWdnZXIgbW9kaWZpZWQgYW4gaW5kZXhlZCBjb2x1bW4KK1VQ REFURSBob3RfdHJpZ2dlcl90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJFIGlkID0g MTsKKy0tIFZlcmlmeSBpdCB3YXMgTk9UIGEgSE9UIHVwZGF0ZSAoaW5kZXhlZCBjb2x1bW4g d2FzIG1vZGlmaWVkIGJ5IHRyaWdnZXIpCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90cmlnZ2VyX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0t CisgICAgICAgMSB8ICAgMAorKDEgcm93KQorCistLSBWZXJpZnkgdGhlIHRyaWdnZXJlZCBj b2x1bW4gd2FzIGFjdHVhbGx5IG1vZGlmaWVkCitTRUxFQ1QgdHJpZ2dlcmVkX2NvbCBGUk9N IGhvdF90cmlnZ2VyX3Rlc3QgV0hFUkUgaWQgPSAxOworIHRyaWdnZXJlZF9jb2wgCistLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgMTAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgaG90 X3RyaWdnZXJfdGVzdCBDQVNDQURFOworRFJPUCBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVk X2NvbCgpOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gSlNPTkIgZXhwcmVzc2lv biBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNraW5nCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBUZXN0IHRoYXQgdXBkYXRlcyB0byBub24taW5kZXhlZCBKU09OQiBw YXRocyBjYW4gYmUgSE9UIHVwZGF0ZXMKK0NSRUFURSBUQUJMRSBob3RfanNvbmJfdGVzdCAo CisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGRhdGEganNvbmIKKykgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKKy0tIENyZWF0ZSBleHByZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lm aWMgSlNPTiBwYXRoCitDUkVBVEUgSU5ERVggaG90X2pzb25iX25hbWVfaWR4IE9OIGhvdF9q c29uYl90ZXN0ICgoZGF0YS0+PiduYW1lJykpOworSU5TRVJUIElOVE8gaG90X2pzb25iX3Rl c3QgVkFMVUVTCisgICAgKDEsICd7Im5hbWUiOiJBbGljZSIsImFnZSI6MzAsImNpdHkiOiJO WUMifScpLAorICAgICgyLCAneyJuYW1lIjoiQm9iIiwiYWdlIjoyNSwiY2l0eSI6IkxBIn0n KTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKyB1 cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMCB8ICAgMAorKDEgcm93 KQorCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgSlNPTiBwYXRoIChhZ2UpIC0gc2hvdWxkIGJl IEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQg ZGF0YSA9IGpzb25iX3NldChkYXRhLCAne2FnZX0nLCAnMzEnKSBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisgdXBkYXRl cyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDAKKygxIHJvdykKKwor LS0gVXBkYXRlIGluZGV4ZWQgSlNPTiBwYXRoIChuYW1lKSAtIHNob3VsZCBOT1QgYmUgSE9U CitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3tu YW1lfScsICciQWxpY2UyIicpIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0t Ky0tLS0tCisgICAgICAgMiB8ICAgMAorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd29y a3MKK1NFTEVDVCBpZCBGUk9NIGhvdF9qc29uYl90ZXN0IFdIRVJFIGRhdGEtPj4nbmFtZScg PSAnQWxpY2UyJzsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCistLSBUZXN0IGpzb25i X2RlbGV0ZSBvbiBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0 cnVtZW50YXRpb24KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAn Y2l0eScgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf anNvbmJfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAg ICAzIHwgICAwCisoMSByb3cpCisKKy0tIFRlc3QganNvbmJfaW5zZXJ0IG9uIG5vbi1pbmRl eGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBEQVRF IGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRy eX0nLCAnIlVTQSInKSBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0t LQorICAgICAgIDQgfCAgIDAKKygxIHJvdykKKworRFJPUCBUQUJMRSBob3RfanNvbmJfdGVz dDsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFhNTCBleHByZXNzaW9uIGluZGV4 ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tpbmcKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIFRlc3QgdGhhdCB1cGRhdGVzIHRvIG5vbi1pbmRleGVkIFhNTCBwYXRocyBjYW4g YmUgSE9UIHVwZGF0ZXMKK0NSRUFURSBUQUJMRSBob3RfeG1sX3Rlc3QgKAorICAgIGlkIGlu dCBQUklNQVJZIEtFWSwKKyAgICBkb2MgeG1sCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CistLSBDcmVhdGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIFhQYXRoCitDUkVB VEUgSU5ERVggaG90X3htbF9uYW1lX2lkeCBPTiBob3RfeG1sX3Rlc3QgKCh4cGF0aCgnL3Bl cnNvbi9uYW1lL3RleHQoKScsIGRvYykpKTsKK0lOU0VSVCBJTlRPIGhvdF94bWxfdGVzdCBW QUxVRVMKKyAgICAoMSwgJzxwZXJzb24+PG5hbWU+QWxpY2U8L25hbWU+PGFnZT4zMDwvYWdl PjwvcGVyc29uPicpLAorICAgICgyLCAnPHBlcnNvbj48bmFtZT5Cb2I8L25hbWU+PGFnZT4y NTwvYWdlPjwvcGVyc29uPicpOworRVJST1I6ICBjb3VsZCBub3QgaWRlbnRpZnkgYSBjb21w YXJpc29uIGZ1bmN0aW9uIGZvciB0eXBlIHhtbAorU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfeG1sX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0t CisgICAgICAgMCB8ICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgWFBh dGggKGFnZSkgLSBiZWhhdmlvciBkZXBlbmRzIG9uIFhNTCBjb21wYXJpc29uIGZhbGxiYWNr CistLSBGdWxsIFhNTCB2YWx1ZSByZXBsYWNlbWVudCBtZWFucyBub24taW5kZXhlZCBwYXRo IHVwZGF0ZXMgc3RpbGwgcmVxdWlyZSBpbmRleCBjb21wYXJpc29uCitVUERBVEUgaG90X3ht bF90ZXN0IFNFVCBkb2MgPSAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMxPC9h Z2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF94bWxfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0K KyAgICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSBpbmRleGVkIFhQYXRoIChu YW1lKSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3htbF90ZXN0IFNFVCBkb2Mg PSAnPHBlcnNvbj48bmFtZT5BbGljZTI8L25hbWU+PGFnZT4zMTwvYWdlPjwvcGVyc29uPicg V0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rl c3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMCB8ICAg MAorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd29ya3MKK1NFTEVDVCBpZCBGUk9NIGhv dF94bWxfdGVzdCBXSEVSRSB4cGF0aCgnL3BlcnNvbi9uYW1lL3RleHQoKScsIGRvYykgPSBB UlJBWVsnQWxpY2UyJzo6dGV4dF07CitFUlJPUjogIG9wZXJhdG9yIGRvZXMgbm90IGV4aXN0 OiB4bWxbXSA9IHRleHRbXQorTElORSAxOiAuLi5feG1sX3Rlc3QgV0hFUkUgeHBhdGgoJy9w ZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpID0gQVJSQVlbJ0EuLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRB SUw6ICBObyBvcGVyYXRvciBvZiB0aGF0IG5hbWUgYWNjZXB0cyB0aGUgZ2l2ZW4gYXJndW1l bnQgdHlwZXMuCitISU5UOiAgWW91IG1pZ2h0IG5lZWQgdG8gYWRkIGV4cGxpY2l0IHR5cGUg Y2FzdHMuCitEUk9QIFRBQkxFIGhvdF94bWxfdGVzdDsKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIEdJTiBpbmRleGVzIGFuZCBhbWNvbXBhcmVkYXR1bXMgZm9yIEpTT05CCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgR0lOIGluZGV4ZXMgY2Fu IHVzZSBhbWNvbXBhcmVkYXR1bXMgdG8gZW5hYmxlIEhPVCB3aGVuIGV4dHJhY3RlZCBrZXlz IG1hdGNoCitDUkVBVEUgVEFCTEUgaG90X2dpbl90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFS WSBLRVksCisgICAgdGFncyB0ZXh0W10sCisgICAgcHJvcGVydGllcyBqc29uYgorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworLS0gR0lOIGluZGV4IG9uIHRleHQgYXJyYXkKK0NSRUFU RSBJTkRFWCBob3RfZ2luX3RhZ3NfaWR4IE9OIGhvdF9naW5fdGVzdCBVU0lORyBnaW4gKHRh Z3MpOworLS0gR0lOIGluZGV4IG9uIEpTT05CIChqc29uYl9vcHMgLSBrZXlzIGFuZCB2YWx1 ZXMpCitDUkVBVEUgSU5ERVggaG90X2dpbl9wcm9wc19pZHggT04gaG90X2dpbl90ZXN0IFVT SU5HIGdpbiAocHJvcGVydGllcyk7CitJTlNFUlQgSU5UTyBob3RfZ2luX3Rlc3QgVkFMVUVT CisgICAgKDEsIEFSUkFZWyd0YWcxJywgJ3RhZzInXSwgJ3sia2V5MSI6InZhbDEiLCJrZXky IjoidmFsMiJ9JyksCisgICAgKDIsIEFSUkFZWyd0YWczJywgJ3RhZzQnXSwgJ3sia2V5MyI6 InZhbDMiLCJrZXk0IjoidmFsNCJ9Jyk7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF9naW5fdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAg ICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSB0aGF0IGNoYW5nZXMgdGFnIG9y ZGVyIGJ1dCBub3QgY29udGVudCAtIGFmdGVyIGFtY29tcGFyZWRhdHVtcyBzaG91bGQgYmUg SE9UCistLSAoR0lOIGV4dHJhY3RzIHNhbWUga2V5cywganVzdCBkaWZmZXJlbnQgb3JkZXIp CitVUERBVEUgaG90X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMSdd IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90 ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAg IDAKKygxIHJvdykKKworLS0gVXBkYXRlIEpTT05CIHZhbHVlIChub3Qga2V5KSAtIGFmdGVy IGFtY29tcGFyZWRhdHVtcyBtYXkgYmUgSE9UIG9yIG5vbi1IT1QKKy0tIGRlcGVuZGluZyBv biBHSU4gb3BlcmF0b3IgY2xhc3MgKGpzb25iX29wcyBpbmRleGVzIGJvdGgga2V5cyBhbmQg dmFsdWVzKQorVVBEQVRFIGhvdF9naW5fdGVzdCBTRVQgcHJvcGVydGllcyA9ICd7ImtleTEi OiJ2YWwxX25ldyIsImtleTIiOiJ2YWwyIn0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0t LS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDAKKygxIHJvdykKKworLS0gQWRkIG5ldyB0 YWcgLSBzaG91bGQgTk9UIGJlIEhPVCAoZGlmZmVyZW50IGV4dHJhY3RlZCBrZXlzKQorVVBE QVRFIGhvdF9naW5fdGVzdCBTRVQgdGFncyA9IEFSUkFZWyd0YWcyJywgJ3RhZzEnLCAndGFn NSddIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dp bl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDMg fCAgIDAKKygxIHJvdykKKworLS0gVmVyaWZ5IEdJTiBpbmRleGVzIHdvcmsKK1NFTEVDVCBp ZCBGUk9NIGhvdF9naW5fdGVzdCBXSEVSRSB0YWdzIEA+IEFSUkFZWyd0YWc1J107CisgaWQg CistLS0tCisgIDEKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaG90X2dpbl90ZXN0IFdI RVJFIHByb3BlcnRpZXMgQD4gJ3sia2V5MSI6InZhbDFfbmV3In0nOworIGlkIAorLS0tLQor ICAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgaG90X2dpbl90ZXN0OworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gQ2xlYW51cAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor RFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3Q7CitEUk9QIFRBQkxFIElGIEVYSVNUUyBo b3RfdGVzdF9wYXJ0aXRpb25lZCBDQVNDQURFOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMg aGFzX2hvdF9jaGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgcHJp bnRfaG90X2NoYWluKHRleHQsIHRpZCk7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBnZXRf aG90X2NvdW50KHRleHQpOworRFJPUCBFWFRFTlNJT04gcGFnZWluc3BlY3Q7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCA4ZmEwYTZjNDdmYi4uYmQ5NWNjMjQ5Nzcg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTQzLDYgKzE0MywxMSBA QCB0ZXN0OiBldmVudF90cmlnZ2VyX2xvZ2luCiAjIHRoaXMgdGVzdCBhbHNvIHVzZXMgZXZl bnQgdHJpZ2dlcnMsIHNvIGxpa2V3aXNlIHJ1biBpdCBieSBpdHNlbGYKIHRlc3Q6IGZhc3Rf ZGVmYXVsdAogCisjIC0tLS0tLS0tLS0KKyMgSE9UIHVwZGF0ZXMgdGVzdHMKKyMgLS0tLS0t LS0tLQordGVzdDogaG90X3VwZGF0ZXMKKwogIyBydW4gdGFibGVzcGFjZSB0ZXN0IGF0IHRo ZSBlbmQgYmVjYXVzZSBpdCBkcm9wcyB0aGUgdGFibGVzcGFjZSBjcmVhdGVkIGR1cmluZwog IyBzZXR1cCB0aGF0IG90aGVyIHRlc3RzIG1heSB1c2UuCiB0ZXN0OiB0YWJsZXNwYWNlCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLmE4ODk0MDA2MTc3Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsCkBAIC0wLDAgKzEsNjA1IEBACist LQorLS0gSE9UX1VQREFURVMKKy0tIFRlc3QgSGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0 ZSBkZWNpc2lvbnMKKy0tCistLSBUaGlzIHRlc3Qgc3lzdGVtYXRpY2FsbHkgdmVyaWZpZXMg dGhhdCBIT1QgdXBkYXRlcyBhcmUgdXNlZCB3aGVuIGFwcHJvcHJpYXRlCistLSBhbmQgYXZv aWRlZCB3aGVuIG5lY2Vzc2FyeSAoZS5nLiwgd2hlbiBpbmRleGVkIGNvbHVtbnMgYXJlIG1v ZGlmaWVkKS4KKy0tCistLSBXZSB1c2UgbXVsdGlwbGUgdmFsaWRhdGlvbiBtZXRob2RzOgor LS0gMS4gU3RhdGlzdGljcyBmdW5jdGlvbnMgKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBk YXRlZCkKKy0tIDIuIHBhZ2VpbnNwZWN0IGV4dGVuc2lvbiBmb3IgSE9UIGNoYWluIGV4YW1p bmF0aW9uCistLSAzLiBFWFBMQUlOIHRvIHZlcmlmeSBpbmRleCB1c2FnZSBhZnRlciB1cGRh dGVzCistLQorCistLSBMb2FkIHJlcXVpcmVkIGV4dGVuc2lvbnMKK0NSRUFURSBFWFRFTlNJ T04gSUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKKworLS0gRnVuY3Rpb24gdG8gZ2V0IEhP VCB1cGRhdGUgY291bnQKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGdldF9ob3RfY291 bnQocmVsX25hbWUgdGV4dCkKK1JFVFVSTlMgVEFCTEUgKAorICAgIHVwZGF0ZXMgQklHSU5U LAorICAgIGhvdCBCSUdJTlQKKykgQVMgJCQKK0RFQ0xBUkUKKyAgcmVsX29pZCBvaWQ7CitC RUdJTgorICByZWxfb2lkIDo9IHJlbF9uYW1lOjpyZWdjbGFzczo6b2lkOworCisgIC0tIFJl YWQgYm90aCBjb21taXR0ZWQgYW5kIHRyYW5zYWN0aW9uLWxvY2FsIHN0YXRzCisgIC0tIElu IGF1dG9jb21taXQgbW9kZSAoZGVmYXVsdCBmb3IgcmVncmVzc2lvbiB0ZXN0cyksIHRoaXMg d29ya3MgY29ycmVjdGx5CisgIC0tIE5vdGU6IEluIGV4cGxpY2l0IHRyYW5zYWN0aW9ucyAo QkVHSU4vQ09NTUlUKSwgY29tbWl0dGVkIHN0YXRzIGFscmVhZHkKKyAgLS0gaW5jbHVkZSBm bHVzaGVkIHVwZGF0ZXMsIHNvIHRoaXMgd291bGQgZG91YmxlLWNvdW50LiBGb3IgZXhwbGlj aXQKKyAgLS0gdHJhbnNhY3Rpb24gdGVzdGluZywgY2FsbCBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKSBiZWZvcmUgdGhpcyBmdW5jdGlvbi4KKyAgdXBkYXRlcyA6PSBDT0FMRVNDRShw Z19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICAg IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDAp OworICBob3QgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJl bF9vaWQpLCAwKSArCisgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxl c19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisKKyAgUkVUVVJOIE5FWFQ7CitFTkQ7Cisk JCBMQU5HVUFHRSBwbHBnc3FsOworCistLSBDaGVjayBpZiBhIHR1cGxlIGlzIHBhcnQgb2Yg YSBIT1QgY2hhaW4gKGhhcyBhIHByZWRlY2Vzc29yIG9uIHNhbWUgcGFnZSkKK0NSRUFURSBP UiBSRVBMQUNFIEZVTkNUSU9OIGhhc19ob3RfY2hhaW4ocmVsX25hbWUgdGV4dCwgdGFyZ2V0 X2N0aWQgdGlkKQorUkVUVVJOUyBib29sZWFuIEFTICQkCitERUNMQVJFCisgIGJsb2NrX251 bSBpbnQ7CisgIHBhZ2VfaXRlbSByZWNvcmQ7CitCRUdJTgorICBibG9ja19udW0gOj0gKHRh cmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKKworICAtLSBMb29rIGZvciBhIGRp ZmZlcmVudCB0dXBsZSBvbiB0aGUgc2FtZSBwYWdlIHRoYXQgcG9pbnRzIHRvIG91ciB0YXJn ZXQgdHVwbGUKKyAgRk9SIHBhZ2VfaXRlbSBJTgorICAgIFNFTEVDVCBscCwgbHBfZmxhZ3Ms IHRfY3RpZAorICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFt ZSwgYmxvY2tfbnVtKSkKKyAgICBXSEVSRSBscF9mbGFncyA9IDEKKyAgICAgIEFORCB0X2N0 aWQgSVMgTk9UIE5VTEwKKyAgICAgIEFORCB0X2N0aWQgPSB0YXJnZXRfY3RpZAorICAgICAg QU5EICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBscDo6dGV4dCB8fCAnKScp Ojp0aWQgIT0gdGFyZ2V0X2N0aWQKKyAgTE9PUAorICAgIFJFVFVSTiB0cnVlOworICBFTkQg TE9PUDsKKworICBSRVRVUk4gZmFsc2U7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOwor CistLSBQcmludCB0aGUgSE9UIGNoYWluIHN0YXJ0aW5nIGZyb20gYSBnaXZlbiB0dXBsZQor Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcHJpbnRfaG90X2NoYWluKHJlbF9uYW1lIHRl eHQsIHN0YXJ0X2N0aWQgdGlkKQorUkVUVVJOUyBUQUJMRShjaGFpbl9wb3NpdGlvbiBpbnQs IGN0aWQgdGlkLCBscF9mbGFncyB0ZXh0LCB0X2N0aWQgdGlkLCBjaGFpbl9lbmQgYm9vbGVh bikgQVMKKyQkCisjdmFyaWFibGVfY29uZmxpY3QgdXNlX2NvbHVtbgorREVDTEFSRQorICBi bG9ja19udW0gaW50OworICBsaW5lX3B0ciBpbnQ7CisgIGN1cnJlbnRfY3RpZCB0aWQgOj0g c3RhcnRfY3RpZDsKKyAgbmV4dF9jdGlkIHRpZDsKKyAgcG9zaXRpb24gaW50IDo9IDA7Cisg IG1heF9pdGVyYXRpb25zIGludCA6PSAxMDA7CisgIHBhZ2VfaXRlbSByZWNvcmQ7CisgIGZv dW5kX3ByZWRlY2Vzc29yIGJvb2xlYW4gOj0gZmFsc2U7CisgIGZsYWdzX25hbWUgdGV4dDsK K0JFR0lOCisgIGJsb2NrX251bSA6PSAoc3RhcnRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjpp bnQ7CisKKyAgLS0gRmluZCB0aGUgcHJlZGVjZXNzb3IgKG9sZCB0dXBsZSBwb2ludGluZyB0 byBvdXIgc3RhcnRfY3RpZCkKKyAgRk9SIHBhZ2VfaXRlbSBJTgorICAgIFNFTEVDVCBscCwg bHBfZmxhZ3MsIHRfY3RpZAorICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFn ZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICBXSEVSRSBscF9mbGFncyA9IDEKKyAgICAg IEFORCB0X2N0aWQgPSBzdGFydF9jdGlkCisgIExPT1AKKyAgICBjdXJyZW50X2N0aWQgOj0g KCcoJyB8fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IHBhZ2VfaXRlbS5scDo6dGV4dCB8 fCAnKScpOjp0aWQ7CisgICAgZm91bmRfcHJlZGVjZXNzb3IgOj0gdHJ1ZTsKKyAgICBFWElU OworICBFTkQgTE9PUDsKKworICAtLSBJZiBubyBwcmVkZWNlc3NvciBmb3VuZCwgc3RhcnQg d2l0aCB0aGUgZ2l2ZW4gY3RpZAorICBJRiBOT1QgZm91bmRfcHJlZGVjZXNzb3IgVEhFTgor ICAgIGN1cnJlbnRfY3RpZCA6PSBzdGFydF9jdGlkOworICBFTkQgSUY7CisKKyAgLS0gRm9s bG93IHRoZSBjaGFpbiBmb3J3YXJkCisgIFdISUxFIHBvc2l0aW9uIDwgbWF4X2l0ZXJhdGlv bnMgTE9PUAorICAgIGxpbmVfcHRyIDo9IChjdXJyZW50X2N0aWQ6OnRleHQ6OnBvaW50KVsx XTo6aW50OworCisgICAgRk9SIHBhZ2VfaXRlbSBJTgorICAgICAgU0VMRUNUIGxwLCBscF9m bGFncywgdF9jdGlkCisgICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2Uo cmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgICBXSEVSRSBscCA9IGxpbmVfcHRyCisgICAg TE9PUAorICAgICAgLS0gTWFwIGxwX2ZsYWdzIHRvIG5hbWVzCisgICAgICBmbGFnc19uYW1l IDo9IENBU0UgcGFnZV9pdGVtLmxwX2ZsYWdzCisgICAgICAgIFdIRU4gMCBUSEVOICd1bnVz ZWQgKDApJworICAgICAgICBXSEVOIDEgVEhFTiAnbm9ybWFsICgxKScKKyAgICAgICAgV0hF TiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKKyAgICAgICAgV0hFTiAzIFRIRU4gJ2RlYWQgKDMp JworICAgICAgICBFTFNFICd1bmtub3duICgnIHx8IHBhZ2VfaXRlbS5scF9mbGFnczo6dGV4 dCB8fCAnKScKKyAgICAgIEVORDsKKworICAgICAgUkVUVVJOIFFVRVJZIFNFTEVDVAorICAg ICAgICBwb3NpdGlvbiwKKyAgICAgICAgY3VycmVudF9jdGlkLAorICAgICAgICBmbGFnc19u YW1lLAorICAgICAgICBwYWdlX2l0ZW0udF9jdGlkLAorICAgICAgICAocGFnZV9pdGVtLnRf Y3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQpOjpib29s ZWFuCisgICAgICA7CisKKyAgICAgIElGIHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBw YWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkIFRIRU4KKyAgICAgICAgUkVUVVJOOwor ICAgICAgRU5EIElGOworCisgICAgICBuZXh0X2N0aWQgOj0gcGFnZV9pdGVtLnRfY3RpZDsK KworICAgICAgSUYgKG5leHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQgIT0gYmxvY2tf bnVtIFRIRU4KKyAgICAgICAgUkVUVVJOOworICAgICAgRU5EIElGOworCisgICAgICBjdXJy ZW50X2N0aWQgOj0gbmV4dF9jdGlkOworICAgICAgcG9zaXRpb24gOj0gcG9zaXRpb24gKyAx OworICAgIEVORCBMT09QOworCisgICAgSUYgcG9zaXRpb24gPSAwIFRIRU4KKyAgICAgIFJF VFVSTjsKKyAgICBFTkQgSUY7CisgIEVORCBMT09QOworRU5EOworJCQgTEFOR1VBR0UgcGxw Z3NxbDsKKworLS0gQmFzaWMgSE9UIHVwZGF0ZSAodXBkYXRlIG5vbi1pbmRleGVkIGNvbHVt bikKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAor ICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBub25faW5kZXhlZF9jb2wgdGV4dAorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaW5kZXhlZF9p ZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wpOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBW QUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVF UyAoMiwgMjAwLCAnaW5pdGlhbCcpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgz LCAzMDAsICdpbml0aWFsJyk7CisKKy0tIEdldCBiYXNlbGluZQorU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBTaG91bGQgYmUgSE9UIHVwZGF0ZXMg KG9ubHkgbm9uLWluZGV4ZWQgY29sdW1uIG1vZGlmaWVkKQorVVBEQVRFIGhvdF90ZXN0IFNF VCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsKK1VQREFURSBo b3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7 CitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMycgV0hF UkUgaWQgPSAzOworCistLSBWZXJpZnkgSE9UIHVwZGF0ZXMgb2NjdXJyZWQKK1NFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gRHVtcCB0aGUgSE9UIGNo YWluIGJlZm9yZSBWQUNVVU1pbmcKK1dJVEggY3VycmVudF90dXBsZSBBUyAoCisgIFNFTEVD VCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxCispCitTRUxFQ1QKKyAgaGFzX2hv dF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwK KyAgY2hhaW5fcG9zaXRpb24sCisgIHByaW50X2hvdF9jaGFpbi5jdGlkLAorICBscF9mbGFn cywKKyAgdF9jdGlkCitGUk9NIGN1cnJlbnRfdHVwbGUsCitMQVRFUkFMIHByaW50X2hvdF9j aGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpOworCistLSBWYWN1dW0gdGhl IHJlbGF0aW9uLCBleHBlY3QgdGhlIEhPVCBjaGFpbiB0byBjb2xsYXBzZQorVkFDVVVNIGhv dF90ZXN0OworCistLSBTaG93IHRoYXQgdGhlcmUgaXMgbm8gY2hhaW4gYWZ0ZXIgdmFjdXVt CitXSVRIIGN1cnJlbnRfdHVwbGUgQVMgKAorICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0 IFdIRVJFIGlkID0gMQorKQorU0VMRUNUCisgIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0Jywg Y3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgIGNoYWluX3Bvc2l0aW9uLAor ICBwcmludF9ob3RfY2hhaW4uY3RpZCwKKyAgbHBfZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBj dXJyZW50X3R1cGxlLAorTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3Vy cmVudF90dXBsZS5jdGlkKTsKKworLS0gTm9uLUhPVCB1cGRhdGUgKHVwZGF0ZSBpbmRleGVk IGNvbHVtbikKK1VQREFURSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUg aWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCist LSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQgKG5ldyB2YWx1ZSBmaW5kYWJsZSkKK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlkLCBp bmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworU0VM RUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0g MTUwOworCistLSBWZXJpZnkgb2xkIHZhbHVlIG5vIGxvbmdlciBpbiBpbmRleAorRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2Nv bCA9IDEwMDsKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0g MTAwOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKKy0tIEFsbC1vci1ub25lIHByb3BlcnR5 OiB1cGRhdGluZyBvbmUgaW5kZXhlZCBjb2x1bW4gcmVxdWlyZXMgQUxMIGluZGV4IHVwZGF0 ZXMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisg ICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQs CisgICAgY29sX2MgaW50LAorICAgIG5vbl9pbmRleGVkIHRleHQKKykgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0 KGNvbF9hKTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xf Yik7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOwor CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdpbml0aWFs Jyk7CisKKy0tIFVwZGF0ZSBvbmx5IGNvbF9hIC0gc2hvdWxkIE5PVCBiZSBIT1QgYmVjYXVz ZSBhbiBpbmRleGVkIGNvbHVtbiBjaGFuZ2VkCistLSBUaGlzIG1lYW5zIEFMTCBpbmRleGVz IG11c3QgYmUgdXBkYXRlZCAoYWxsLW9yLW5vbmUgcHJvcGVydHkpCitVUERBVEUgaG90X3Rl c3QgU0VUIGNvbF9hID0gMTUgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdCcpOworCistLSBOb3cgdXBkYXRlIG9ubHkgbm9uLWluZGV4ZWQg Y29sdW1uIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhl ZCA9ICd1cGRhdGVkJzsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKworLS0gUGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBvdXRzaWRlIHByZWRp Y2F0ZSAoY29uc2VydmF0aXZlID0gbm9uLUhPVCkKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisK K0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAg IHN0YXR1cyB0ZXh0LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworCistLSBQYXJ0aWFsIGluZGV4IG9ubHkgY292ZXJzIHN0YXR1cyA9ICdhY3RpdmUnCitD UkVBVEUgSU5ERVggaG90X3Rlc3RfYWN0aXZlX2lkeCBPTiBob3RfdGVzdChzdGF0dXMpIFdI RVJFIHN0YXR1cyA9ICdhY3RpdmUnOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDEsICdhY3RpdmUnLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAo MiwgJ2luYWN0aXZlJywgJ2RhdGEyJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDMsICdkZWxldGVkJywgJ2RhdGEzJyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1 bW4gb24gJ2FjdGl2ZScgcm93IChpbiBwcmVkaWNhdGUsIHN0YXR1cyB1bmNoYW5nZWQpCist LSBTaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDEn IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnaW5hY3RpdmUnIHJvdyAo b3V0c2lkZSBwcmVkaWNhdGUpCistLSBTaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3Qg U0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVXBkYXRlIHN0YXR1cyBmcm9tICdpbmFj dGl2ZScgdG8gJ2RlbGV0ZWQnIChib3RoIG91dHNpZGUgcHJlZGljYXRlKQorLS0gUG9zdGdy ZVNRTCBpcyBjb25zZXJ2YXRpdmU6IGhlYXAgaW5zZXJ0IGhhcHBlbnMgYmVmb3JlIHByZWRp Y2F0ZSBjaGVjaworLS0gU28gdGhpcyBpcyBOT04tSE9UIGV2ZW4gdGhvdWdoIGJvdGggdmFs dWVzIGFyZSBvdXRzaWRlIHByZWRpY2F0ZQorVVBEQVRFIGhvdF90ZXN0IFNFVCBzdGF0dXMg PSAnZGVsZXRlZCcgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOworCistLSBWZXJpZnkgaW5kZXggc3RpbGwgd29ya3MgZm9yICdhY3Rp dmUnIHJvd3MKK1NFTEVDVCBpZCwgc3RhdHVzIEZST00gaG90X3Rlc3QgV0hFUkUgc3RhdHVz ID0gJ2FjdGl2ZSc7CisKKy0tIE9ubHkgQlJJTiAoc3VtbWFyaXppbmcpIGluZGV4ZXMgb24g bm9uLVBLIGNvbHVtbnMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBo b3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRzIHRpbWVzdGFtcCwK KyAgICB2YWx1ZSBpbnQsCisgICAgYnJpbl9jb2wgaW50CispIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCk7CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF90c19icmluIE9OIGhvdF90ZXN0IFVT SU5HIGJyaW4odHMpOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2JyaW4gT04g aG90X3Rlc3QgVVNJTkcgYnJpbihicmluX2NvbCk7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOworCistLSBVcGRhdGUgYm90 aCBCUklOIGNvbHVtbnMgLSBzaG91bGQgc3RpbGwgYmUgSE9UIChvbmx5IHN1bW1hcml6aW5n IGluZGV4ZXMpCitVUERBVEUgaG90X3Rlc3QgU0VUIHRzID0gJzIwMjQtMDEtMDInLCBicmlu X2NvbCA9IDIwMDAgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOworCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hvdWxk IGFsc28gYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHZhbHVlID0gMjAwIFdIRVJFIGlk ID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0g VE9BU1QgYW5kIEhPVDogVE9BU1RlZCBjb2x1bW5zIGNhbiBwYXJ0aWNpcGF0ZSBpbiBIT1QK K0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAg aWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBsYXJnZV90 ZXh0IHRleHQsCisgICAgc21hbGxfdGV4dCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9j b2wpOworCistLSBJbnNlcnQgcm93IHdpdGggVE9BU1RlZCBjb2x1bW4gKD4gMktCKQorSU5T RVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsIHJlcGVhdCgneCcsIDMwMDApLCAn c21hbGwnKTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkLCBub24tVE9BU1RlZCBjb2x1bW4g LSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBk YXRlZCc7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0t IFVwZGF0ZSBUT0FTVGVkIGNvbHVtbiAtIHNob3VsZCBiZSBIT1QgaWYgaW5kZXhlZCBjb2x1 bW4gdW5jaGFuZ2VkCitVUERBVEUgaG90X3Rlc3QgU0VUIGxhcmdlX3RleHQgPSByZXBlYXQo J3knLCAzMDAwKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsK KworLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFU RSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAyMDA7CitTRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFVuaXF1ZSBjb25zdHJhaW50ICh1bmlxdWUg aW5kZXgpIGJlaGF2ZXMgbGlrZSByZWd1bGFyIGluZGV4CitEUk9QIFRBQkxFIGhvdF90ZXN0 OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwK KyAgICB1bmlxdWVfY29sIGludCBVTklRVUUsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAw LCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgMjAwLCAnZGF0 YTInKTsKKworLS0gVXBkYXRlIGRhdGEgKG5vbi1pbmRleGVkKSAtIHNob3VsZCBiZSBIT1QK K1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVmVyaWZ5IHVuaXF1ZSBjb25zdHJh aW50IHN0aWxsIGVuZm9yY2VkCitTRUxFQ1QgaWQsIHVuaXF1ZV9jb2wsIGRhdGEgRlJPTSBo b3RfdGVzdCBPUkRFUiBCWSBpZDsKKworLS0gVGhpcyBzaG91bGQgZmFpbCAodW5pcXVlIHZp b2xhdGlvbikKK1VQREFURSBob3RfdGVzdCBTRVQgdW5pcXVlX2NvbCA9IDEwMCBXSEVSRSBp ZCA9IDI7CisKKy0tIE11bHRpLWNvbHVtbiBpbmRleDogYW55IGNvbHVtbiBjaGFuZ2UgPSBu b24tSE9UCitEUk9QIFRBQkxFIGhvdF90ZXN0OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3Qg KAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2Ig aW50LAorICAgIGNvbF9jIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FiX2lkeCBPTiBob3RfdGVzdChj b2xfYSwgY29sX2IpOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAy MCwgMzAsICdkYXRhJyk7CisKKy0tIFVwZGF0ZSBjb2xfYSAocGFydCBvZiBtdWx0aS1jb2x1 bW4gaW5kZXgpIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgY29s X2EgPSAxNTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKwor LS0gUmVzZXQKK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxMDsKKworLS0gVXBkYXRl IGNvbF9iIChwYXJ0IG9mIG11bHRpLWNvbHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhP VAorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYiA9IDI1OworU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBSZXNldAorVVBEQVRFIGhvdF90ZXN0IFNF VCBjb2xfYiA9IDIwOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcp OworCistLSBVcGRhdGUgY29sX2MgKG5vdCBpbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKK1VQ REFURSBob3RfdGVzdCBTRVQgY29sX2MgPSAzNTsKKworLS0gVXBkYXRlIGRhdGEgKG5vdCBp bmRleGVkKSAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1 cGRhdGVkJzsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKwor LS0gUGFydGl0aW9uZWQgdGFibGVzOiBIT1Qgd29ya3Mgd2l0aGluIHBhcnRpdGlvbnMKK0RS T1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7CisKK0NS RUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0aXRpb25lZCAoCisgICAgaWQgaW50LAorICAgIHBh cnRpdGlvbl9rZXkgaW50LAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBkYXRhIHRleHQs CisgICAgUFJJTUFSWSBLRVkgKGlkLCBwYXJ0aXRpb25fa2V5KQorKSBQQVJUSVRJT04gQlkg UkFOR0UgKHBhcnRpdGlvbl9rZXkpOworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3RfcGFydDEg UEFSVElUSU9OIE9GIGhvdF90ZXN0X3BhcnRpdGlvbmVkCisgICAgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMTAwKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIFRBQkxFIGhv dF90ZXN0X3BhcnQyIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25lZAorICAgIEZP UiBWQUxVRVMgRlJPTSAoMTAwKSBUTyAoMjAwKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfcGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0aW9u ZWQoaW5kZXhlZF9jb2wpOworCitJTlNFUlQgSU5UTyBob3RfdGVzdF9wYXJ0aXRpb25lZCBW QUxVRVMgKDEsIDUwLCAxMDAsICdpbml0aWFsMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3Rf cGFydGl0aW9uZWQgVkFMVUVTICgyLCAxNTAsIDIwMCwgJ2luaXRpYWwyJyk7CisKKy0tIFVw ZGF0ZSBpbiBwYXJ0aXRpb24gMSAobm9uLWluZGV4ZWQgY29sdW1uKSAtIHNob3VsZCBiZSBI T1QKK1VQREFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0YSA9ICd1cGRhdGVkMScg V0hFUkUgaWQgPSAxOworCistLSBVcGRhdGUgaW4gcGFydGl0aW9uIDIgKG5vbi1pbmRleGVk IGNvbHVtbikgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQg U0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKKworU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOworU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdF9wYXJ0MicpOworCistLSBWZXJpZnkgaW5kZXhlcyB3b3JrIG9u IHBhcnRpdGlvbnMKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJF IGluZGV4ZWRfY29sID0gMTAwOworU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9u ZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAyMDA7CisKKy0tIFVwZGF0ZSBpbmRleGVkIGNvbHVt biBpbiBwYXJ0aXRpb24gLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0X3Bh cnRpdGlvbmVkIFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0X3BhcnQxJyk7CisKKy0tIFZlcmlmeSBp bmRleCB3YXMgdXBkYXRlZAorU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQg V0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIFRyaWdnZXIgbW9kaWZpY2F0aW9uczogaGVhcF9tb2RpZnlfdHVwbGUoKSBhbmQgSE9U CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgd2UgY29ycmVjdGx5 IGRldGVjdCB3aGVuIHRyaWdnZXJzIG1vZGlmeSBpbmRleGVkIGNvbHVtbnMgdmlhCistLSBo ZWFwX21vZGlmeV90dXBsZSgpLCBldmVuIHdoZW4gdGhvc2UgY29sdW1ucyBhcmVuJ3QgaW4g dGhlIFVQREFURSdzIFNFVCBjbGF1c2UKKworQ1JFQVRFIFRBQkxFIGhvdF90cmlnZ2VyX3Rl c3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cmlnZ2VyZWRfY29sIGludCwK KyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKworQ1JFQVRFIElO REVYIGhvdF90cmlnZ2VyX2lkeCBPTiBob3RfdHJpZ2dlcl90ZXN0KHRyaWdnZXJlZF9jb2wp OworCistLSBDcmVhdGUgYSB0cmlnZ2VyIHRoYXQgbW9kaWZpZXMgYW4gaW5kZXhlZCBjb2x1 bW4KK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCkK K1JFVFVSTlMgVFJJR0dFUiBBUyAkJAorQkVHSU4KKyAgICBORVcudHJpZ2dlcmVkX2NvbCA9 IE5FVy50cmlnZ2VyZWRfY29sICsgMTsKKyAgICBSRVRVUk4gTkVXOworRU5EOworJCQgTEFO R1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZGF0ZV9tb2RpZnkK KyAgICBCRUZPUkUgVVBEQVRFIE9OIGhvdF90cmlnZ2VyX3Rlc3QKKyAgICBGT1IgRUFDSCBS T1cKKyAgICBFWEVDVVRFIEZVTkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCk7CisKK0lO U0VSVCBJTlRPIGhvdF90cmlnZ2VyX3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7 CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3RyaWdnZXJfdGVzdCcpOwor CistLSBVcGRhdGUgb25seSBkYXRhIGNvbHVtbiwgYnV0IHRyaWdnZXIgbW9kaWZpZXMgaW5k ZXhlZCBjb2x1bW4KKy0tIFNob3VsZCBOT1QgYmUgSE9UIGJlY2F1c2UgdHJpZ2dlciBtb2Rp ZmllZCBhbiBpbmRleGVkIGNvbHVtbgorVVBEQVRFIGhvdF90cmlnZ2VyX3Rlc3QgU0VUIGRh dGEgPSAndXBkYXRlZCcgV0hFUkUgaWQgPSAxOworCistLSBWZXJpZnkgaXQgd2FzIE5PVCBh IEhPVCB1cGRhdGUgKGluZGV4ZWQgY29sdW1uIHdhcyBtb2RpZmllZCBieSB0cmlnZ2VyKQor U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdHJpZ2dlcl90ZXN0Jyk7CisKKy0t IFZlcmlmeSB0aGUgdHJpZ2dlcmVkIGNvbHVtbiB3YXMgYWN0dWFsbHkgbW9kaWZpZWQKK1NF TEVDVCB0cmlnZ2VyZWRfY29sIEZST00gaG90X3RyaWdnZXJfdGVzdCBXSEVSRSBpZCA9IDE7 CisKK0RST1AgVEFCTEUgaG90X3RyaWdnZXJfdGVzdCBDQVNDQURFOworRFJPUCBGVU5DVElP TiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpOworCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBKU09OQiBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tp bmcKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3QgdGhhdCB1cGRhdGVzIHRv IG5vbi1pbmRleGVkIEpTT05CIHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRlcworCitDUkVBVEUg VEFCTEUgaG90X2pzb25iX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBk YXRhIGpzb25iCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CisKKy0tIENyZWF0ZSBleHBy ZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lmaWMgSlNPTiBwYXRoCitDUkVBVEUgSU5ERVggaG90 X2pzb25iX25hbWVfaWR4IE9OIGhvdF9qc29uYl90ZXN0ICgoZGF0YS0+PiduYW1lJykpOwor CitJTlNFUlQgSU5UTyBob3RfanNvbmJfdGVzdCBWQUxVRVMKKyAgICAoMSwgJ3sibmFtZSI6 IkFsaWNlIiwiYWdlIjozMCwiY2l0eSI6Ik5ZQyJ9JyksCisgICAgKDIsICd7Im5hbWUiOiJC b2IiLCJhZ2UiOjI1LCJjaXR5IjoiTEEifScpOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBKU09O IHBhdGggKGFnZSkgLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBE QVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7YWdlfScs ICczMScpIFdIRVJFIGlkID0gMTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdo b3RfanNvbmJfdGVzdCcpOworCistLSBVcGRhdGUgaW5kZXhlZCBKU09OIHBhdGggKG5hbWUp IC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9 IGpzb25iX3NldChkYXRhLCAne25hbWV9JywgJyJBbGljZTIiJykgV0hFUkUgaWQgPSAxOwor CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisKKy0t IFZlcmlmeSBpbmRleCB3b3JrcworU0VMRUNUIGlkIEZST00gaG90X2pzb25iX3Rlc3QgV0hF UkUgZGF0YS0+PiduYW1lJyA9ICdBbGljZTInOworCistLSBUZXN0IGpzb25iX2RlbGV0ZSBv biBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRp b24KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAnY2l0eScgV0hF UkUgaWQgPSAyOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90 ZXN0Jyk7CisKKy0tIFRlc3QganNvbmJfaW5zZXJ0IG9uIG5vbi1pbmRleGVkIHBhdGggLSBz aG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBEQVRFIGhvdF9qc29uYl90 ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRyeX0nLCAnIlVTQSIn KSBXSEVSRSBpZCA9IDI7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pz b25iX3Rlc3QnKTsKKworRFJPUCBUQUJMRSBob3RfanNvbmJfdGVzdDsKKworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gWE1MIGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgc3ViLWF0 dHJpYnV0ZSB0cmFja2luZworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdCB0 aGF0IHVwZGF0ZXMgdG8gbm9uLWluZGV4ZWQgWE1MIHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRl cworCitDUkVBVEUgVEFCTEUgaG90X3htbF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBL RVksCisgICAgZG9jIHhtbAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCistLSBDcmVh dGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIFhQYXRoCitDUkVBVEUgSU5ERVgg aG90X3htbF9uYW1lX2lkeCBPTiBob3RfeG1sX3Rlc3QgKCh4cGF0aCgnL3BlcnNvbi9uYW1l L3RleHQoKScsIGRvYykpKTsKKworSU5TRVJUIElOVE8gaG90X3htbF90ZXN0IFZBTFVFUwor ICAgICgxLCAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMwPC9hZ2U+PC9wZXJz b24+JyksCisgICAgKDIsICc8cGVyc29uPjxuYW1lPkJvYjwvbmFtZT48YWdlPjI1PC9hZ2U+ PC9wZXJzb24+Jyk7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90 ZXN0Jyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBYUGF0aCAoYWdlKSAtIGJlaGF2aW9y IGRlcGVuZHMgb24gWE1MIGNvbXBhcmlzb24gZmFsbGJhY2sKKy0tIEZ1bGwgWE1MIHZhbHVl IHJlcGxhY2VtZW50IG1lYW5zIG5vbi1pbmRleGVkIHBhdGggdXBkYXRlcyBzdGlsbCByZXF1 aXJlIGluZGV4IGNvbXBhcmlzb24KK1VQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8 cGVyc29uPjxuYW1lPkFsaWNlPC9uYW1lPjxhZ2U+MzE8L2FnZT48L3BlcnNvbj4nIFdIRVJF IGlkID0gMTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3Qn KTsKKworLS0gVXBkYXRlIGluZGV4ZWQgWFBhdGggKG5hbWUpIC0gc2hvdWxkIE5PVCBiZSBI T1QKK1VQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8cGVyc29uPjxuYW1lPkFsaWNl MjwvbmFtZT48YWdlPjMxPC9hZ2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7CisKK1NFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7CisKKy0tIFZlcmlmeSBp bmRleCB3b3JrcworU0VMRUNUIGlkIEZST00gaG90X3htbF90ZXN0IFdIRVJFIHhwYXRoKCcv cGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSA9IEFSUkFZWydBbGljZTInOjp0ZXh0XTsKKwor RFJPUCBUQUJMRSBob3RfeG1sX3Rlc3Q7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIEdJTiBpbmRleGVzIGFuZCBhbWNvbXBhcmVkYXR1bXMgZm9yIEpTT05CCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgR0lOIGluZGV4ZXMgY2FuIHVzZSBh bWNvbXBhcmVkYXR1bXMgdG8gZW5hYmxlIEhPVCB3aGVuIGV4dHJhY3RlZCBrZXlzIG1hdGNo CisKK0NSRUFURSBUQUJMRSBob3RfZ2luX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICB0YWdzIHRleHRbXSwKKyAgICBwcm9wZXJ0aWVzIGpzb25iCispIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CisKKy0tIEdJTiBpbmRleCBvbiB0ZXh0IGFycmF5CitDUkVBVEUg SU5ERVggaG90X2dpbl90YWdzX2lkeCBPTiBob3RfZ2luX3Rlc3QgVVNJTkcgZ2luICh0YWdz KTsKKworLS0gR0lOIGluZGV4IG9uIEpTT05CIChqc29uYl9vcHMgLSBrZXlzIGFuZCB2YWx1 ZXMpCitDUkVBVEUgSU5ERVggaG90X2dpbl9wcm9wc19pZHggT04gaG90X2dpbl90ZXN0IFVT SU5HIGdpbiAocHJvcGVydGllcyk7CisKK0lOU0VSVCBJTlRPIGhvdF9naW5fdGVzdCBWQUxV RVMKKyAgICAoMSwgQVJSQVlbJ3RhZzEnLCAndGFnMiddLCAneyJrZXkxIjoidmFsMSIsImtl eTIiOiJ2YWwyIn0nKSwKKyAgICAoMiwgQVJSQVlbJ3RhZzMnLCAndGFnNCddLCAneyJrZXkz IjoidmFsMyIsImtleTQiOiJ2YWw0In0nKTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfZ2luX3Rlc3QnKTsKKworLS0gVXBkYXRlIHRoYXQgY2hhbmdlcyB0YWcgb3Jk ZXIgYnV0IG5vdCBjb250ZW50IC0gYWZ0ZXIgYW1jb21wYXJlZGF0dW1zIHNob3VsZCBiZSBI T1QKKy0tIChHSU4gZXh0cmFjdHMgc2FtZSBrZXlzLCBqdXN0IGRpZmZlcmVudCBvcmRlcikK K1VQREFURSBob3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJBWVsndGFnMicsICd0YWcxJ10g V0hFUkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5f dGVzdCcpOworCistLSBVcGRhdGUgSlNPTkIgdmFsdWUgKG5vdCBrZXkpIC0gYWZ0ZXIgYW1j b21wYXJlZGF0dW1zIG1heSBiZSBIT1Qgb3Igbm9uLUhPVAorLS0gZGVwZW5kaW5nIG9uIEdJ TiBvcGVyYXRvciBjbGFzcyAoanNvbmJfb3BzIGluZGV4ZXMgYm90aCBrZXlzIGFuZCB2YWx1 ZXMpCitVUERBVEUgaG90X2dpbl90ZXN0IFNFVCBwcm9wZXJ0aWVzID0gJ3sia2V5MSI6InZh bDFfbmV3Iiwia2V5MiI6InZhbDIifScgV0hFUkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9N IGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVzdCcpOworCistLSBBZGQgbmV3IHRhZyAtIHNo b3VsZCBOT1QgYmUgSE9UIChkaWZmZXJlbnQgZXh0cmFjdGVkIGtleXMpCitVUERBVEUgaG90 X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMScsICd0YWc1J10gV0hF UkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVz dCcpOworCistLSBWZXJpZnkgR0lOIGluZGV4ZXMgd29yaworU0VMRUNUIGlkIEZST00gaG90 X2dpbl90ZXN0IFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUnXTsKK1NFTEVDVCBpZCBGUk9N IGhvdF9naW5fdGVzdCBXSEVSRSBwcm9wZXJ0aWVzIEA+ICd7ImtleTEiOiJ2YWwxX25ldyJ9 JzsKKworRFJPUCBUQUJMRSBob3RfZ2luX3Rlc3Q7CisKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIENsZWFudXAKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0RST1AgVEFC TEUgSUYgRVhJU1RTIGhvdF90ZXN0OworRFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3Rf cGFydGl0aW9uZWQgQ0FTQ0FERTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGhhc19ob3Rf Y2hhaW4odGV4dCwgdGlkKTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIHByaW50X2hvdF9j aGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgZ2V0X2hvdF9jb3Vu dCh0ZXh0KTsKK0RST1AgRVhURU5TSU9OIHBhZ2VpbnNwZWN0OwotLSAKMi41MC4xCgo= --98b017876237f005fe98a17b40ccb28dde987108 Content-Disposition: attachment; filename*0="v48-0002-Identify-modified-indexed-attributes-in-the-exec.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v48-0002-Identify-modified-indexed-attributes-in-the-exec.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA0NDRmZDU0Njg0YTA4MmEyOTJhOGNlMDQ1N2IwMWViOTc4OWQ3NDlmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwODoxNzozMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ4IDIv OV0gSWRlbnRpZnkgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIGluIHRoZSBleGVjdXRv cgogb24gVVBEQVRFCgpSZWZhY3RvciBleGVjdXRvciB1cGRhdGUgbG9naWMgdG8gZGV0ZXJt aW5lIHdoaWNoIGluZGV4ZWQgY29sdW1ucyBoYXZlCmFjdHVhbGx5IGNoYW5nZWQgZHVyaW5n IGFuIFVQREFURSBvcGVyYXRpb24gcmF0aGVyIHRoYW4gbGVhdmluZyB0aGlzIHVwCnRvIEhl YXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpIGluIGhlYXBfdXBkYXRlKCkuIEZpbmRpbmcgdGhp cyBzZXQgb2YKYXR0cmlidXRlcyBpcyBub3QgaGVhcC1zcGVjaWZpYywgYnV0IG1vcmUgZ2Vu ZXJhbCB0byBhbGwgdGFibGUgQU1zIGFuZApoYXZpbmcgdGhpcyBpbmZvcm1hdGlvbiBpbiB0 aGUgZXhlY3V0b3IgY291bGQgaW5mb3JtIG90aGVyIGRlY2lzaW9ucwphYm91dCB3aGVuIGlu ZGV4IGluc2VydHMgYXJlIHJlcXVpcmVkIGFuZCB3aGVuIHRoZXkgYXJlIG5vdCByZWdhcmRs ZXNzCm9mIHRoZSB0YWJsZSBBTSdzIE1WQ0MgaW1wbGVtZW50YXRpb24gc3RyYXRlZ3kuCgpU aGUgaGVhcC1vbmx5IHR1cGxlIGRlY2lzaW9uIChIT1QpIGluIGhlYXAgZnVuY3Rpb25zIGFz IGl0IGFsd2F5cyBoYXM7CndoYXQgbW92ZXMgdG8gdGhlIGV4ZWN1dG9yIGlzIG9ubHkgdGhl IGRldGVybWluYXRpb24gb2YgdGhlICJtb2RpZmllZAppbmRleGVkIGF0dHJpYnV0ZXMiICht b2RpZmllZF9pZHhfYXR0cnMpLgoKRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoKSByZXBs YWNlcyBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oKSBhbmQgaXMKY2FsbGVkIGJlZm9yZSB0 YWJsZV90dXBsZV91cGRhdGUoKSBjcnVjaWFsbHkgd2l0aG91dCB0aGUgbmVlZCBmb3IgYW4K ZXhjbHVzaXZlIGJ1ZmZlciBsb2NrIG9uIHRoZSBwYWdlIHRoYXQgaG9sZHMgdGhlIHR1cGxl IGJlaW5nIHVwZGF0ZWQuClRoaXMgcmVkdWNlcyB0aGUgdGltZSB0aGUgYnVmZmVyIGxvY2sg aXMgaGVsZCBsYXRlciB3aXRoaW4KaGVhcGFtX3R1cGxlX3VwZGF0ZSgpIGFuZCBoZWFwX3Vw ZGF0ZSgpLgoKQmVzaWRlcyBpZGVudGlmeWluZyB0aGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4 ZWQgYXR0cmlidXRlcwpIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oKSB3YXMgYWxzbyBwYXJ0 aWFsbHkgcmVzcG9uc2libGUgZm9yIHRoZQpkZWNpc2lvbiBhYm91dCB3aGF0IHRvIFdBTCBs b2cgZm9yIHRoZSByZXBsaWNhIGlkZW50aXR5IGtleS4gVGhhdCBsb2dpYwptb3ZlcyBpbnRv IGhlYXBfdXBkYXRlKCkgYW5kIGludG8gdGhlIHJlcGxhY2VtZW50IGhlbHBlcgpIZWFwVXBk YXRlTW9kaWZpZWRJZHhBdHRycygpLCBzbyBzaW1wbGVfaGVhcF91cGRhdGUoKSBhbmQKaGVh cGFtX3R1cGxlX3VwZGF0ZSgpIHNoYXJlIHRoZSBzYW1lIGxvZ2ljIHNpbmNlIGJvdGggY2Fs bCBpbnRvCmhlYXBfdXBkYXRlKCkuCgpVcGRhdGVzIHN0ZW1taW5nIGZyb20gbG9naWNhbCBy ZXBsaWNhdGlvbiBhbHNvIHVzZSB0aGUgbmV3CkV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJz KCkgaW4gRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKCkuCgpFeGVjVXBkYXRlTW9kaWZpZWRJ ZHhBdHRycygpIHVzZXMgRXhlY0NvbXBhcmVTbG90QXR0cnMoKSB0byBpZGVudGlmeQp3aGlj aCBhdHRyaWJ1dGVzIGhhdmUgY2hhbmdlZCBhbmQgdGhlbiBpbnRlcnNlY3RzIHRoYXQgd2l0 aCB0aGUgc2V0IG9mCmluZGV4ZWQgYXR0cmlidXRlcyB0byBpZGVudGlmeSB0aGUgbW9kaWZp ZWQgaW5kZXhlZCBzZXQsIHRoZQptb2RpZmllZF9pZHhfYXR0cnMuCgpUaGlzIHBhdGNoIGlu dHJvZHVjZXMgYSBmZXcgaGVscGVyIGZ1bmN0aW9ucyB0byByZWR1Y2UgY29kZSBkdXBsaWNh dGlvbgphbmQgaW5jcmVhc2UgcmVhZGFiaWxpdHk6IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUo KSBhbmQKSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKCksIHVzZWQgaW4gYm90aCBoZWFw X3VwZGF0ZSgpIGFuZApzaW1wbGVfaGVhcF91cGRhdGUoKS4KCmhlYXBfdXBkYXRlKCkgaXMg bm93IGNhbGxlZCB3aXRoIGxvY2ttb2RlIHByZS1kZXRlcm1pbmVkIGFuZCBhIGJvb2xlYW4K aW5kaWNhdGluZyB3aGV0aGVyIHRoZSB1cGRhdGUgbWF5IGJlIEhPVCwgYm90aCBjb25zdC4g SWYgZHVyaW5nCmhlYXBfdXBkYXRlKCkgdGhlIG5ldyB0dXBsZSBmaXRzIG9uIHRoZSBzYW1l IHBhZ2UgYW5kIHRoYXQgYm9vbGVhbiBpcwp0cnVlLCB0aGUgdXBkYXRlIGlzIEhPVC4gU28g YWx0aG91Z2ggdGhlIGZ1bmN0aW9ucyBhbmQgdGltaW5nIG9mIHRoZQpIT1QgZGVjaXNpb24g Y29kZSBoYXZlIGNoYW5nZWQsIG5vbmUgb2YgdGhlIGxvZ2ljIGdvdmVybmluZyB3aGVuIEhP VCBpcwphbGxvd2VkIGhhcyBjaGFuZ2VkLgoKRGV2ZWxvcG1lbnQgb2YgdGhpcyBmZWF0dXJl IGV4cG9zZWQgbm9uZGV0ZXJtaW5pc3RpYyBiZWhhdmlvciBpbiB0aHJlZQpleGlzdGluZyB0 ZXN0cywgd2hpY2ggaGF2ZSBiZWVuIGFkanVzdGVkIHRvIGF2b2lkIGluY29uc2lzdGVudCBy ZXN1bHRzCmR1ZSB0byB0dXBsZSBvcmRlcmluZyBkdXJpbmcgaGVhcCBwYWdlIHNjYW5zLgoK QXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpEaXNjdXNzaW9uOiBodHRw czovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvNTU1Ni8KRGlzY3Vzc2lvbjog aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0Lzc4NTc0QjI0LUJF MEEtNDJDNS04MDc1LTNGQTlGQTYzQjhGQyU0MGFtYXpvbi5jb20KLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAgfCA0NjMgKysrKysrKysrKysr LS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAg fCAgMzQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgICAgICAgICAg ICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMgICAgICAgICAgICAg ICAgIHwgIDE0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyAg ICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYyAgICAg ICAgICAgICB8ICA3MCArKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jICAgICAgICB8ICA4OCArKystCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNo ZS5jICAgICAgICAgICAgfCAgNDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAg ICAgICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aCAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVj dXRvci5oICAgICAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS91dGlscy9yZWxj YWNoZS5oICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9leHBlY3RlZC9zeXNjYWNo ZS11cGRhdGUtcHJ1bmVkLm91dCAgICAgICB8ICAxMiArLQogLi4uL3NwZWNzL3N5c2NhY2hl LXVwZGF0ZS1wcnVuZWQuc3BlYyAgICAgICAgIHwgICA2ICstCiAuLi4vcmVncmVzcy9leHBl Y3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0ICAgICAgICB8ICAxNiArLQogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC90c2VhcmNoLm91dCAgICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQgfCAgIDQgKy0KIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbCAgICB8ICAgMiArLQogc3JjL3Rl c3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsICAgICAgICAgICAgIHwgICA0ICstCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC90c2VhcmNoLnNxbCAgICAgICAgICAgICAgfCAgIDMgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgICAgICB8ICAgMiArLQog MjMgZmlsZXMgY2hhbmdlZCwgNTg3IGluc2VydGlvbnMoKyksIDIyNyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IGFiZmQ4ZTg5NzBhLi5kYzMwN2Vi NmRjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTM3LDYgKzM3LDggQEAK ICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N1YnRy YW5zLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNzY2FuLmgiCisjaW5jbHVkZSAiYWNjZXNz L3N5c2F0dHIuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFj Y2Vzcy92YWxpZC5oIgogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKQEAgLTQ0LDggKzQ2LDExIEBACiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19kYXRhYmFzZV9kLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVt LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgiCisjaW5jbHVkZSAi ZXhlY3V0b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgog I2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKKyNp bmNsdWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgi CkBAIC01Myw2ICs1OCw3IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRl ICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgor I2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3BjY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCkBAIC03MCwxMSArNzYsOCBAQCBz dGF0aWMgdm9pZCBjaGVja19sb2NrX2lmX2lucGxhY2VfdXBkYXRlYWJsZV9yZWwoUmVsYXRp b24gcmVsYXRpb24sCiAJCQkJCQkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCk7CiBzdGF0aWMg dm9pZCBjaGVja19pbnBsYWNlX3JlbF9sb2NrKEhlYXBUdXBsZSBvbGR0dXApOwogI2VuZGlm Ci1zdGF0aWMgQml0bWFwc2V0ICpIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24g cmVsYXRpb24sCi0JCQkJCQkJCQkJICAgQml0bWFwc2V0ICppbnRlcmVzdGluZ19jb2xzLAot CQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqZXh0ZXJuYWxfY29scywKLQkJCQkJCQkJCQkgICBI ZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwLAotCQkJCQkJCQkJCSAgIGJvb2wg Kmhhc19leHRlcm5hbCk7CitzdGF0aWMgQml0bWFwc2V0ICpIZWFwVXBkYXRlTW9kaWZpZWRJ ZHhBdHRycyhSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkJIEhlYXBUdXBsZSBvbGR0 dXAsIEhlYXBUdXBsZSBuZXd0dXApOwogc3RhdGljIGJvb2wgaGVhcF9hY3F1aXJlX3R1cGxv Y2soUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogCQkJ CQkJCQkgTG9ja1R1cGxlTW9kZSBtb2RlLCBMb2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwK IAkJCQkJCQkJIGJvb2wgKmhhdmVfdHVwbGVfbG9jayk7CkBAIC0zMTkwLDcgKzMxOTMsNyBA QCBzaW1wbGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqdGlkKQogICoJaGVhcF91cGRhdGUgLSByZXBsYWNlIGEgdHVwbGUKICAqCiAg KiBTZWUgdGFibGVfdHVwbGVfdXBkYXRlKCkgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBw YXJhbWV0ZXJzLCBleGNlcHQgdGhhdAotICogdGhpcyByb3V0aW5lIGRpcmVjdGx5IHRha2Vz IGEgdHVwbGUgcmF0aGVyIHRoYW4gYSBzbG90LgorICogdGhpcyByb3V0aW5lIGRpcmVjdGx5 IHRha2VzIGEgaGVhcCB0dXBsZSByYXRoZXIgdGhhbiBhIHNsb3QuCiAgKgogICogSW4gdGhl IGZhaWx1cmUgY2FzZXMsIHRoZSByb3V0aW5lIGZpbGxzICp0bWZkIHdpdGggdGhlIHR1cGxl J3MgdF9jdGlkLAogICogdF94bWF4IChyZXNvbHZpbmcgYSBwb3NzaWJsZSBNdWx0aVhhY3Qs IGlmIG5lY2Vzc2FyeSksIGFuZCB0X2NtYXggKHRoZSBsYXN0CkBAIC0zMjAwLDE3ICszMjAz LDEzIEBAIHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRl bVBvaW50ZXJEYXRhICp0aWQpCiBUTV9SZXN1bHQKIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJl bGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAs CiAJCQlDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9ucyBwZ19hdHRyaWJ1dGVfdW51c2Vk KCksIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKLQkJCVRNX0ZhaWx1cmVEYXRh ICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCVRVX1VwZGF0ZUluZGV4ZXMg KnVwZGF0ZV9pbmRleGVzKQorCQkJVE1fRmFpbHVyZURhdGEgKnRtZmQsIGNvbnN0IExvY2tU dXBsZU1vZGUgbG9ja21vZGUsCisJCQljb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9h dHRycywgY29uc3QgYm9vbCBob3RfYWxsb3dlZCkKIHsKIAlUTV9SZXN1bHQJcmVzdWx0Owog CVRyYW5zYWN0aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKLQlCaXRt YXBzZXQgICpob3RfYXR0cnM7Ci0JQml0bWFwc2V0ICAqc3VtX2F0dHJzOwotCUJpdG1hcHNl dCAgKmtleV9hdHRyczsKLQlCaXRtYXBzZXQgICppZF9hdHRyczsKLQlCaXRtYXBzZXQgICpp bnRlcmVzdGluZ19hdHRyczsKLQlCaXRtYXBzZXQgICptb2RpZmllZF9hdHRyczsKKwlCaXRt YXBzZXQgICppZHhfYXR0cnMsCisJCQkgICAqaWRfYXR0cnM7CiAJSXRlbUlkCQlscDsKIAlI ZWFwVHVwbGVEYXRhIG9sZHR1cDsKIAlIZWFwVHVwbGUJaGVhcHR1cDsKQEAgLTMyMzEsMTMg KzMyMzAsMTIgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Q b2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAlib29sCQloYXZlX3R1cGxl X2xvY2sgPSBmYWxzZTsKIAlib29sCQlpc2NvbWJvOwogCWJvb2wJCXVzZV9ob3RfdXBkYXRl ID0gZmFsc2U7Ci0JYm9vbAkJc3VtbWFyaXplZF91cGRhdGUgPSBmYWxzZTsKIAlib29sCQlr ZXlfaW50YWN0OwogCWJvb2wJCWFsbF92aXNpYmxlX2NsZWFyZWQgPSBmYWxzZTsKIAlib29s CQlhbGxfdmlzaWJsZV9jbGVhcmVkX25ldyA9IGZhbHNlOwogCWJvb2wJCWNoZWNrZWRfbG9j a2VyczsKIAlib29sCQlsb2NrZXJfcmVtYWluczsKLQlib29sCQlpZF9oYXNfZXh0ZXJuYWwg PSBmYWxzZTsKKwlib29sCQlyZXBfaWRfa2V5X3JlcXVpcmVkID0gZmFsc2U7CiAJVHJhbnNh Y3Rpb25JZCB4bWF4X25ld190dXBsZSwKIAkJCQl4bWF4X29sZF90dXBsZTsKIAl1aW50MTYJ CWluZm9tYXNrX29sZF90dXBsZSwKQEAgLTMyNjgsMzMgKzMyNjYsMTggQEAgaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVh cFR1cGxlIG5ld3R1cCwKICNlbmRpZgogCiAJLyoKLQkgKiBGZXRjaCB0aGUgbGlzdCBvZiBh dHRyaWJ1dGVzIHRvIGJlIGNoZWNrZWQgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucy4KLQkgKgot CSAqIEZvciBIT1QgY29uc2lkZXJhdGlvbnMsIHRoaXMgaXMgd2FzdGVkIGVmZm9ydCBpZiB3 ZSBmYWlsIHRvIHVwZGF0ZSBvcgotCSAqIGhhdmUgdG8gcHV0IHRoZSBuZXcgdHVwbGUgb24g YSBkaWZmZXJlbnQgcGFnZS4gIEJ1dCB3ZSBtdXN0IGNvbXB1dGUgdGhlCi0JICogbGlzdCBi ZWZvcmUgb2J0YWluaW5nIGJ1ZmZlciBsb2NrIC0tLSBpbiB0aGUgd29yc3QgY2FzZSwgaWYg d2UgYXJlCi0JICogZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUgcmVsZXZhbnQgc3lz dGVtIGNhdGFsb2dzLCB3ZSBjb3VsZAotCSAqIGRlYWRsb2NrIGlmIHdlIHRyeSB0byBmZXRj aCB0aGUgbGlzdCBsYXRlci4gIEluIGFueSBjYXNlLCB0aGUgcmVsY2FjaGUKLQkgKiBjYWNo ZXMgdGhlIGRhdGEgc28gdGhpcyBpcyB1c3VhbGx5IHByZXR0eSBjaGVhcC4KLQkgKgotCSAq IFdlIGFsc28gbmVlZCBjb2x1bW5zIHVzZWQgYnkgdGhlIHJlcGxpY2EgaWRlbnRpdHkgYW5k IGNvbHVtbnMgdGhhdCBhcmUKLQkgKiBjb25zaWRlcmVkIHRoZSAia2V5IiBvZiByb3dzIGlu IHRoZSB0YWJsZS4KKwkgKiBGZXRjaCB0aGUgYXR0cmlidXRlcyB1c2VkIGFjcm9zcyBhbGwg aW5kZXhlcyBvbiB0aGlzIHJlbGF0aW9uIGFzIHdlbGwKKwkgKiBhcyB0aGUgcmVwbGljYSBp ZGVudGl0eSBhbmQgY29sdW1ucy4KIAkgKgotCSAqIE5vdGUgdGhhdCB3ZSBnZXQgY29waWVz IG9mIGVhY2ggYml0bWFwLCBzbyB3ZSBuZWVkIG5vdCB3b3JyeSBhYm91dAotCSAqIHJlbGNh Y2hlIGZsdXNoIGhhcHBlbmluZyBtaWR3YXkgdGhyb3VnaC4KLQkgKi8KLQlob3RfYXR0cnMg PSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBJ TkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcpOwotCXN1bV9hdHRycyA9IFJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIElOREVYX0FUVFJf QklUTUFQX1NVTU1BUklaRUQpOwotCWtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOwotCWlkX2F0dHJzID0g UmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCi0JCQkJCQkJCQkJICBJTkRF WF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVkpOwotCWludGVyZXN0aW5nX2F0dHJzID0gTlVM TDsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19h dHRycywgaG90X2F0dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVy cyhpbnRlcmVzdGluZ19hdHRycywgc3VtX2F0dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRycyA9 IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywga2V5X2F0dHJzKTsKLQlpbnRl cmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywgaWRf YXR0cnMpOworCSAqIE5vdGU6IFdlIG11c3QgY29tcHV0ZSB0aGUgbGlzdCBiZWZvcmUgb2J0 YWluaW5nIGJ1ZmZlciBsb2NrLiBJbiB0aGUKKwkgKiB3b3JzdCBjYXNlLCBpZiB3ZSBhcmUg ZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUgcmVsZXZhbnQgc3lzdGVtCisJICogY2F0 YWxvZ3MsIHdlIGNvdWxkIGRlYWRsb2NrIGlmIHdlIHRyeSB0byBmZXRjaCB0aGUgbGlzdCBs YXRlci4gS2VlcCBpbgorCSAqIG1pbmQgdGhhdCByZWxjYWNoZSByZXR1cm5zIGNvcGllcyBv ZiBlYWNoIGJpdG1hcCwgc28gd2UgbmVlZCBub3Qgd29ycnkKKwkgKiBhYm91dCByZWxjYWNo ZSBmbHVzaCBoYXBwZW5pbmcgbWlkd2F5IHRocm91Z2gsIGJ1dCB3ZSBkbyBuZWVkIHRvIGZy ZWUKKwkgKiB0aGVtLgorCSAqLworCWlkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKKwlpZF9hdHRy cyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJ VE1BUF9JREVOVElUWV9LRVkpOwogCiAJYmxvY2sgPSBJdGVtUG9pbnRlckdldEJsb2NrTnVt YmVyKG90aWQpOwogCUlOSkVDVElPTl9QT0lOVCgiaGVhcF91cGRhdGUtYmVmb3JlLXBpbiIs IE5VTEwpOwpAQCAtMzM0OCwyMCArMzMzMSwxNyBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiBy ZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVw LAogCQl0bWZkLT5jdGlkID0gKm90aWQ7CiAJCXRtZmQtPnhtYXggPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKIAkJdG1mZC0+Y21heCA9IEludmFsaWRDb21tYW5kSWQ7Ci0JCSp1cGRhdGVf aW5kZXhlcyA9IFRVX05vbmU7CiAKLQkJYm1zX2ZyZWUoaG90X2F0dHJzKTsKLQkJYm1zX2Zy ZWUoc3VtX2F0dHJzKTsKLQkJYm1zX2ZyZWUoa2V5X2F0dHJzKTsKIAkJYm1zX2ZyZWUoaWRf YXR0cnMpOwotCQkvKiBtb2RpZmllZF9hdHRycyBub3QgeWV0IGluaXRpYWxpemVkICovCi0J CWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsKKwkJYm1zX2ZyZWUoaWR4X2F0dHJzKTsK KwkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIGlzIG93bmVkIGJ5IHRoZSBjYWxsZXIsIGRvbid0 IGZyZWUgaXQgKi8KKwogCQlyZXR1cm4gVE1fRGVsZXRlZDsKIAl9CiAKIAkvKgotCSAqIEZp bGwgaW4gZW5vdWdoIGRhdGEgaW4gb2xkdHVwIGZvciBIZWFwRGV0ZXJtaW5lQ29sdW1uc0lu Zm8gdG8gd29yawotCSAqIHByb3Blcmx5LgorCSAqIEZpbGwgaW4gZW5vdWdoIGRhdGEgaW4g b2xkdHVwIHRvIGRldGVybWluZSByZXBsaWNhIGlkZW50aXR5IGF0dHJpYnV0ZQorCSAqIHJl cXVpcmVtZW50cy4KIAkgKi8KIAlvbGR0dXAudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVs aWQocmVsYXRpb24pOwogCW9sZHR1cC50X2RhdGEgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdl R2V0SXRlbShwYWdlLCBscCk7CkBAIC0zMzcyLDE2ICszMzUyLDU5IEBAIGhlYXBfdXBkYXRl KFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBU dXBsZSBuZXd0dXAsCiAJbmV3dHVwLT50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChy ZWxhdGlvbik7CiAKIAkvKgotCSAqIERldGVybWluZSBjb2x1bW5zIG1vZGlmaWVkIGJ5IHRo ZSB1cGRhdGUuICBBZGRpdGlvbmFsbHksIGlkZW50aWZ5Ci0JICogd2hldGhlciBhbnkgb2Yg dGhlIHVubW9kaWZpZWQgcmVwbGljYSBpZGVudGl0eSBrZXkgYXR0cmlidXRlcyBpbiB0aGUK LQkgKiBvbGQgdHVwbGUgaXMgZXh0ZXJuYWxseSBzdG9yZWQgb3Igbm90LiAgVGhpcyBpcyBy ZXF1aXJlZCBiZWNhdXNlIGZvcgotCSAqIHN1Y2ggYXR0cmlidXRlcyB0aGUgZmxhdHRlbmVk IHZhbHVlIHdvbid0IGJlIFdBTCBsb2dnZWQgYXMgcGFydCBvZiB0aGUKLQkgKiBuZXcgdHVw bGUgc28gd2UgbXVzdCBpbmNsdWRlIGl0IGFzIHBhcnQgb2YgdGhlIG9sZF9rZXlfdHVwbGUu ICBTZWUKLQkgKiBFeHRyYWN0UmVwbGljYUlkZW50aXR5LgorCSAqIEV4dHJhY3RSZXBsaWNh SWRlbnRpdHkoKSBuZWVkcyB0byBrbm93IGlmIGEgbW9kaWZpZWQgaW5kZXhlZCBhdHRyYnV0 ZQorCSAqIGlzIHVzZWQgYXMgYSByZXBsaWNhIGluZGVudGl0eSBvciBpZiBhbnkgb2YgdGhl IHJlcGxpY2EgaWRlbnRpdHkKKwkgKiBhdHRyaWJ1dGVzIGFyZSByZWZlcmVuY2VkIGluIGFu IGluZGV4LCB1bm1vZGlmaWVkLCBhbmQgYXJlIHN0b3JlZAorCSAqIGV4dGVybmFsbHkgaW4g dGhlIG9sZCB0dXBsZSBiZWluZyByZXBsYWNlZC4gIEluIHRob3NlIGNhc2VzIGl0IG1heSBi ZQorCSAqIG5lY2Vzc2FyeSB0byBXQUwgbG9nIHRoZW0gdG8gc28gdGhleSBhcmUgYXZhaWxh YmxlIHRvIHJlcGxpY2FzLgogCSAqLwotCW1vZGlmaWVkX2F0dHJzID0gSGVhcERldGVybWlu ZUNvbHVtbnNJbmZvKHJlbGF0aW9uLCBpbnRlcmVzdGluZ19hdHRycywKLQkJCQkJCQkJCQkJ ICBpZF9hdHRycywgJm9sZHR1cCwKLQkJCQkJCQkJCQkJICBuZXd0dXAsICZpZF9oYXNfZXh0 ZXJuYWwpOworCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSBibXNfb3ZlcmxhcChtb2RpZmllZF9p ZHhfYXR0cnMsIGlkX2F0dHJzKTsKKwlpZiAoIXJlcF9pZF9rZXlfcmVxdWlyZWQpCisJewor CQlCaXRtYXBzZXQgICphdHRyczsKKwkJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdl dERlc2NyKHJlbGF0aW9uKTsKKwkJaW50CQkJYXR0aWR4ID0gLTE7CisKKwkJLyoKKwkJICog UmVkdWNlIHRoZSBzZXQgdW5kZXIgcmV2aWV3IHRvIG9ubHkgdGhlIHVubW9kaWZpZWQgaW5k ZXhlZCByZXBsaWNhCisJCSAqIGlkZW50aXR5IGtleSBhdHRyaWJ1dGVzLiAgaWR4X2F0dHJz IGlzIGNvcGllZCAoYnkgYm1zX2RpZmZlcmVuY2UoKSkKKwkJICogbm90IG1vZGlmaWVkIGhl cmUuCisJCSAqLworCQlhdHRycyA9IGJtc19kaWZmZXJlbmNlKGlkeF9hdHRycywgbW9kaWZp ZWRfaWR4X2F0dHJzKTsKKwkJYXR0cnMgPSBibXNfaW50X21lbWJlcnMoYXR0cnMsIGlkX2F0 dHJzKTsKKworCQl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0 aWR4KSkgPj0gMCkKKwkJeworCQkJLyoKKwkJCSAqIGF0dGlkeCBpcyB6ZXJvLWJhc2VkLCBh dHRybnVtIGlzIHRoZSBub3JtYWwgYXR0cmlidXRlIG51bWJlcgorCQkJICovCisJCQlBdHRy TnVtYmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRl TnVtYmVyOworCQkJRGF0dW0JCXZhbHVlOworCQkJYm9vbAkJaXNudWxsOworCisJCQkvKgor CQkJICogU3lzdGVtIGF0dHJpYnV0ZXMgYXJlIG5vdCBhZGRlZCBpbnRvIElOREVYX0FUVFJf QklUTUFQX0lOREVYRUQKKwkJCSAqIGJpdG1hcCBieSByZWxjYWNoZS4KKwkJCSAqLworCQkJ QXNzZXJ0KGF0dHJudW0gPiAwKTsKKworCQkJdmFsdWUgPSBoZWFwX2dldGF0dHIoJm9sZHR1 cCwgYXR0cm51bSwgdHVwZGVzYywgJmlzbnVsbCk7CisKKwkJCS8qIE5vIG5lZWQgdG8gY2hl Y2sgYXR0cmlidXRlcyB0aGF0IGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5ICovCisJCQlp ZiAoaXNudWxsIHx8CisJCQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51 bSAtIDEpLT5hdHRsZW4gIT0gLTEpCisJCQkJY29udGludWU7CisKKwkJCS8qIENoZWNrIGlm IHRoZSBvbGQgdHVwbGUncyBhdHRyaWJ1dGUgaXMgc3RvcmVkIGV4dGVybmFsbHkgKi8KKwkJ CWlmIChWQVJBVFRfSVNfRVhURVJOQUwoKHN0cnVjdCB2YXJsZW5hICopIERhdHVtR2V0UG9p bnRlcih2YWx1ZSkpKQorCQkJeworCQkJCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSB0cnVlOwor CQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJYm1zX2ZyZWUoYXR0cnMpOworCX0KIAogCS8q CiAJICogSWYgd2UncmUgbm90IHVwZGF0aW5nIGFueSAia2V5IiBjb2x1bW4sIHdlIGNhbiBn cmFiIGEgd2Vha2VyIGxvY2sgdHlwZS4KQEAgLTMzOTQsOSArMzQxNyw4IEBAIGhlYXBfdXBk YXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhl YXBUdXBsZSBuZXd0dXAsCiAJICogaXMgdXBkYXRlcyB0aGF0IGRvbid0IG1hbmlwdWxhdGUg a2V5IGNvbHVtbnMsIG5vdCB0aG9zZSB0aGF0CiAJICogc2VyZW5kaXBpdG91c2x5IGFycml2 ZSBhdCB0aGUgc2FtZSBrZXkgdmFsdWVzLgogCSAqLwotCWlmICghYm1zX292ZXJsYXAobW9k aWZpZWRfYXR0cnMsIGtleV9hdHRycykpCisJaWYgKGxvY2ttb2RlID09IExvY2tUdXBsZU5v S2V5RXhjbHVzaXZlKQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxlTm9LZXlFeGNsdXNp dmU7CiAJCW14YWN0X3N0YXR1cyA9IE11bHRpWGFjdFN0YXR1c05vS2V5VXBkYXRlOwogCQlr ZXlfaW50YWN0ID0gdHJ1ZTsKIApAQCAtMzQxMyw3ICszNDM1LDcgQEAgaGVhcF91cGRhdGUo UmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1 cGxlIG5ld3R1cCwKIAl9CiAJZWxzZQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxlRXhj bHVzaXZlOworCQlBc3NlcnQobG9ja21vZGUgPT0gTG9ja1R1cGxlRXhjbHVzaXZlKTsKIAkJ bXhhY3Rfc3RhdHVzID0gTXVsdGlYYWN0U3RhdHVzVXBkYXRlOwogCQlrZXlfaW50YWN0ID0g ZmFsc2U7CiAJfQpAQCAtMzQ5Miw3ICszNTE0LDcgQEAgbDI6CiAJCQlib29sCQljdXJyZW50 X2lzX21lbWJlciA9IGZhbHNlOwogCiAJCQlpZiAoRG9lc011bHRpWGFjdElkQ29uZmxpY3Qo KE11bHRpWGFjdElkKSB4d2FpdCwgaW5mb21hc2ssCi0JCQkJCQkJCQkJKmxvY2ttb2RlLCAm Y3VycmVudF9pc19tZW1iZXIpKQorCQkJCQkJCQkJCWxvY2ttb2RlLCAmY3VycmVudF9pc19t ZW1iZXIpKQogCQkJewogCQkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxP Q0spOwogCkBAIC0zNTAxLDcgKzM1MjMsNyBAQCBsMjoKIAkJCQkgKiByZXF1ZXN0aW5nIGEg bG9jayBhbmQgYWxyZWFkeSBoYXZlIG9uZTsgYXZvaWRzIGRlYWRsb2NrKS4KIAkJCQkgKi8K IAkJCQlpZiAoIWN1cnJlbnRfaXNfbWVtYmVyKQotCQkJCQloZWFwX2FjcXVpcmVfdHVwbG9j ayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgKmxvY2ttb2RlLAorCQkJCQloZWFwX2Fj cXVpcmVfdHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgbG9ja21vZGUsCiAJ CQkJCQkJCQkJIExvY2tXYWl0QmxvY2ssICZoYXZlX3R1cGxlX2xvY2spOwogCiAJCQkJLyog d2FpdCBmb3IgbXVsdGl4YWN0ICovCkBAIC0zNTg2LDcgKzM2MDgsNyBAQCBsMjoKIAkJCSAq IGxvY2suCiAJCQkgKi8KIAkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxP Q0spOwotCQkJaGVhcF9hY3F1aXJlX3R1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2Vs ZiksICpsb2NrbW9kZSwKKwkJCWhlYXBfYWNxdWlyZV90dXBsb2NrKHJlbGF0aW9uLCAmKG9s ZHR1cC50X3NlbGYpLCBsb2NrbW9kZSwKIAkJCQkJCQkJIExvY2tXYWl0QmxvY2ssICZoYXZl X3R1cGxlX2xvY2spOwogCQkJWGFjdExvY2tUYWJsZVdhaXQoeHdhaXQsIHJlbGF0aW9uLCAm b2xkdHVwLnRfc2VsZiwKIAkJCQkJCQkgIFhMVFdfVXBkYXRlKTsKQEAgLTM2NDYsMTcgKzM2 NjgsMTQgQEAgbDI6CiAJCQl0bWZkLT5jbWF4ID0gSW52YWxpZENvbW1hbmRJZDsKIAkJVW5s b2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCQlpZiAoaGF2ZV90dXBsZV9sb2NrKQotCQkJ VW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCAqbG9ja21v ZGUpOworCQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYp LCBsb2NrbW9kZSk7CiAJCWlmICh2bWJ1ZmZlciAhPSBJbnZhbGlkQnVmZmVyKQogCQkJUmVs ZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7Ci0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CiAK LQkJYm1zX2ZyZWUoaG90X2F0dHJzKTsKLQkJYm1zX2ZyZWUoc3VtX2F0dHJzKTsKLQkJYm1z X2ZyZWUoa2V5X2F0dHJzKTsKIAkJYm1zX2ZyZWUoaWRfYXR0cnMpOwotCQlibXNfZnJlZSht b2RpZmllZF9hdHRycyk7Ci0JCWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsKKwkJYm1z X2ZyZWUoaWR4X2F0dHJzKTsKKwkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIGlzIG93bmVkIGJ5 IHRoZSBjYWxsZXIsIGRvbid0IGZyZWUgaXQgKi8KKwogCQlyZXR1cm4gcmVzdWx0OwogCX0K IApAQCAtMzY4Niw3ICszNzA1LDcgQEAgbDI6CiAJY29tcHV0ZV9uZXdfeG1heF9pbmZvbWFz ayhIZWFwVHVwbGVIZWFkZXJHZXRSYXdYbWF4KG9sZHR1cC50X2RhdGEpLAogCQkJCQkJCSAg b2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzaywKIAkJCQkJCQkgIG9sZHR1cC50X2RhdGEtPnRf aW5mb21hc2syLAotCQkJCQkJCSAgeGlkLCAqbG9ja21vZGUsIHRydWUsCisJCQkJCQkJICB4 aWQsIGxvY2ttb2RlLCB0cnVlLAogCQkJCQkJCSAgJnhtYXhfb2xkX3R1cGxlLCAmaW5mb21h c2tfb2xkX3R1cGxlLAogCQkJCQkJCSAgJmluZm9tYXNrMl9vbGRfdHVwbGUpOwogCkBAIC0z ODAzLDcgKzM4MjIsNyBAQCBsMjoKIAkJY29tcHV0ZV9uZXdfeG1heF9pbmZvbWFzayhIZWFw VHVwbGVIZWFkZXJHZXRSYXdYbWF4KG9sZHR1cC50X2RhdGEpLAogCQkJCQkJCQkgIG9sZHR1 cC50X2RhdGEtPnRfaW5mb21hc2ssCiAJCQkJCQkJCSAgb2xkdHVwLnRfZGF0YS0+dF9pbmZv bWFzazIsCi0JCQkJCQkJCSAgeGlkLCAqbG9ja21vZGUsIGZhbHNlLAorCQkJCQkJCQkgIHhp ZCwgbG9ja21vZGUsIGZhbHNlLAogCQkJCQkJCQkgICZ4bWF4X2xvY2tfb2xkX3R1cGxlLCAm aW5mb21hc2tfbG9ja19vbGRfdHVwbGUsCiAJCQkJCQkJCSAgJmluZm9tYXNrMl9sb2NrX29s ZF90dXBsZSk7CiAKQEAgLTM5NzYsMjAgKzM5OTUsOCBAQCBsMjoKIAkJICogdG8gZG8gYSBI T1QgdXBkYXRlLiAgQ2hlY2sgaWYgYW55IG9mIHRoZSBpbmRleCBjb2x1bW5zIGhhdmUgYmVl bgogCQkgKiBjaGFuZ2VkLgogCQkgKi8KLQkJaWYgKCFibXNfb3ZlcmxhcChtb2RpZmllZF9h dHRycywgaG90X2F0dHJzKSkKLQkJeworCQlpZiAoaG90X2FsbG93ZWQpCiAJCQl1c2VfaG90 X3VwZGF0ZSA9IHRydWU7Ci0KLQkJCS8qCi0JCQkgKiBJZiBub25lIG9mIHRoZSBjb2x1bW5z IHRoYXQgYXJlIHVzZWQgaW4gaG90LWJsb2NraW5nIGluZGV4ZXMKLQkJCSAqIHdlcmUgdXBk YXRlZCwgd2UgY2FuIGFwcGx5IEhPVCwgYnV0IHdlIGRvIHN0aWxsIG5lZWQgdG8gY2hlY2sK LQkJCSAqIGlmIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBzdW1tYXJpemluZyBpbmRleGVzLCBh bmQgdXBkYXRlIHRob3NlCi0JCQkgKiBpbmRleGVzIGlmIHRoZSBjb2x1bW5zIHdlcmUgdXBk YXRlZCwgb3Igd2UgbWF5IGZhaWwgdG8gZGV0ZWN0Ci0JCQkgKiBlLmcuIHZhbHVlIGJvdW5k IGNoYW5nZXMgaW4gQlJJTiBtaW5tYXggaW5kZXhlcy4KLQkJCSAqLwotCQkJaWYgKGJtc19v dmVybGFwKG1vZGlmaWVkX2F0dHJzLCBzdW1fYXR0cnMpKQotCQkJCXN1bW1hcml6ZWRfdXBk YXRlID0gdHJ1ZTsKLQkJfQogCX0KIAllbHNlCiAJewpAQCAtNDAwNSw4ICs0MDEyLDcgQEAg bDI6CiAJICogY29sdW1ucyBhcmUgbW9kaWZpZWQgb3IgaXQgaGFzIGV4dGVybmFsIGRhdGEu CiAJICovCiAJb2xkX2tleV90dXBsZSA9IEV4dHJhY3RSZXBsaWNhSWRlbnRpdHkocmVsYXRp b24sICZvbGR0dXAsCi0JCQkJCQkJCQkJICAgYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0cnMs IGlkX2F0dHJzKSB8fAotCQkJCQkJCQkJCSAgIGlkX2hhc19leHRlcm5hbCwKKwkJCQkJCQkJ CQkgICByZXBfaWRfa2V5X3JlcXVpcmVkLAogCQkJCQkJCQkJCSAgICZvbGRfa2V5X2NvcGll ZCk7CiAKIAkvKiBOTyBFUkVQT1JUKEVSUk9SKSBmcm9tIGhlcmUgdGlsbCBjaGFuZ2VzIGFy ZSBsb2dnZWQgKi8KQEAgLTQxMzYsNyArNDE0Miw3IEBAIGwyOgogCSAqIFJlbGVhc2UgdGhl IGxtZ3IgdHVwbGUgbG9jaywgaWYgd2UgaGFkIGl0LgogCSAqLwogCWlmIChoYXZlX3R1cGxl X2xvY2spCi0JCVVubG9ja1R1cGxlVHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxm KSwgKmxvY2ttb2RlKTsKKwkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1 cC50X3NlbGYpLCBsb2NrbW9kZSk7CiAKIAlwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUocmVs YXRpb24sIHVzZV9ob3RfdXBkYXRlLCBuZXdidWYgIT0gYnVmZmVyKTsKIApAQCAtNDE1MCwz MSArNDE1NiwxMiBAQCBsMjoKIAkJaGVhcF9mcmVldHVwbGUoaGVhcHR1cCk7CiAJfQogCi0J LyoKLQkgKiBJZiBpdCBpcyBhIEhPVCB1cGRhdGUsIHRoZSB1cGRhdGUgbWF5IHN0aWxsIG5l ZWQgdG8gdXBkYXRlIHN1bW1hcml6ZWQKLQkgKiBpbmRleGVzLCBsZXN0IHdlIGZhaWwgdG8g dXBkYXRlIHRob3NlIHN1bW1hcmllcyBhbmQgZ2V0IGluY29ycmVjdAotCSAqIHJlc3VsdHMg KGZvciBleGFtcGxlLCBtaW5tYXggYm91bmRzIG9mIHRoZSBibG9jayBtYXkgY2hhbmdlIHdp dGggdGhpcwotCSAqIHVwZGF0ZSkuCi0JICovCi0JaWYgKHVzZV9ob3RfdXBkYXRlKQotCXsK LQkJaWYgKHN1bW1hcml6ZWRfdXBkYXRlKQotCQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfU3Vt bWFyaXppbmc7Ci0JCWVsc2UKLQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7Ci0JfQot CWVsc2UKLQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfQWxsOwotCiAJaWYgKG9sZF9rZXlfdHVw bGUgIT0gTlVMTCAmJiBvbGRfa2V5X2NvcGllZCkKIAkJaGVhcF9mcmVldHVwbGUob2xkX2tl eV90dXBsZSk7CiAKLQlibXNfZnJlZShob3RfYXR0cnMpOwotCWJtc19mcmVlKHN1bV9hdHRy cyk7Ci0JYm1zX2ZyZWUoa2V5X2F0dHJzKTsKIAlibXNfZnJlZShpZF9hdHRycyk7Ci0JYm1z X2ZyZWUobW9kaWZpZWRfYXR0cnMpOwotCWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsK KwlibXNfZnJlZShpZHhfYXR0cnMpOworCS8qIG1vZGlmaWVkX2lkeF9hdHRycyBpcyBvd25l ZCBieSB0aGUgY2FsbGVyLCBkb24ndCBmcmVlIGl0ICovCiAKIAlyZXR1cm4gVE1fT2s7CiB9 CkBAIC00MzQ3LDI4ICs0MzM0LDExNSBAQCBoZWFwX2F0dHJfZXF1YWxzKFR1cGxlRGVzYyB0 dXBkZXNjLCBpbnQgYXR0cm51bSwgRGF0dW0gdmFsdWUxLCBEYXR1bSB2YWx1ZTIsCiB9CiAK IC8qCi0gKiBDaGVjayB3aGljaCBjb2x1bW5zIGFyZSBiZWluZyB1cGRhdGVkLgotICoKLSAq IEdpdmVuIGFuIHVwZGF0ZWQgdHVwbGUsIGRldGVybWluZSAoYW5kIHJldHVybiBpbnRvIHRo ZSBvdXRwdXQgYml0bWFwc2V0KSwKLSAqIGZyb20gdGhvc2UgbGlzdGVkIGFzIGludGVyZXN0 aW5nLCB0aGUgc2V0IG9mIGNvbHVtbnMgdGhhdCBjaGFuZ2VkLgotICoKLSAqIGhhc19leHRl cm5hbCBpbmRpY2F0ZXMgaWYgYW55IG9mIHRoZSB1bm1vZGlmaWVkIGF0dHJpYnV0ZXMgKGZy b20gdGhvc2UKLSAqIGxpc3RlZCBhcyBpbnRlcmVzdGluZykgb2YgdGhlIG9sZCB0dXBsZSBp cyBhIG1lbWJlciBvZiBleHRlcm5hbF9jb2xzIGFuZCBpcwotICogc3RvcmVkIGV4dGVybmFs bHkuCisgKiBIT1QgdXBkYXRlcyBhcmUgcG9zc2libGUgd2hlbiBlaXRoZXI6IGEpIHRoZXJl IGFyZSBubyBtb2RpZmllZCBpbmRleGVkCisgKiBhdHRyaWJ1dGVzLCBvciBiKSB0aGUgbW9k aWZpZWQgYXR0cmlidXRlcyBhcmUgYWxsIG9uIHN1bW1hcml6aW5nIGluZGV4ZXMuCisgKiBM YXRlciwgaW4gaGVhcF91cGRhdGUoKSwgd2UgY2FuIGNob29zZSB0byBwZXJmb3JtIGEgSE9U IHVwZGF0ZSBpZiB0aGVyZSBpcworICogc3BhY2Ugb24gdGhlIHBhZ2UgZm9yIHRoZSBuZXcg dHVwbGUgYW5kIHRoZSBmb2xsb3dpbmcgY29kZSBoYXMgZGV0ZXJtaW5lZAorICogdGhhdCBI T1QgaXMgYWxsb3dlZC4KKyAqLworYm9vbAorSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShSZWxh dGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCisJ CQkJCSAgIGJvb2wgKnN1bW1hcml6ZWRfb25seSkKK3sKKwlib29sCQlob3RfYWxsb3dlZDsK KworCS8qCisJICogTGV0J3MgYmUgb3B0aW1pc3RpYyBhbmQgc3RhcnQgb2ZmIGJ5IGFzc3Vt aW5nIHRoZSBiZXN0IGNhc2UsIG5vIGluZGV4ZXMKKwkgKiBuZWVkIHVwZGF0aW5nIGFuZCBI T1QgaXMgYWxsb3dhYmxlLgorCSAqLworCWhvdF9hbGxvd2VkID0gdHJ1ZTsKKwkqc3VtbWFy aXplZF9vbmx5ID0gZmFsc2U7CisKKwkvKgorCSAqIENoZWNrIGZvciBjYXNlIChhKTsgd2hl biB0aGVyZSBhcmUgbm8gbW9kaWZpZWQgaW5kZXggYXR0cmlidXRlcyBIT1QgaXMKKwkgKiBh bGxvd2VkLgorCSAqLworCWlmIChibXNfaXNfZW1wdHkobW9kaWZpZWRfaWR4X2F0dHJzKSkK KwkJaG90X2FsbG93ZWQgPSB0cnVlOworCWVsc2UKKwl7CisJCUJpdG1hcHNldCAgKnN1bV9h dHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAorCQkJCQkJCQkJ CQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEKTsKKworCQkvKgorCQkgKiBB dCBsZWFzdCBvbmUgaW5kZXggYXR0cmlidXRlIHdhcyBtb2RpZmllZCwgYnV0IGlzIHRoaXMg Y2FzZSAoYikKKwkJICogd2hlcmUgYWxsIHRoZSBtb2RpZmllZCBpbmRleCBhdHRyaWJ1dGVz IGFyZSBvbmx5IHVzZWQgYnkKKwkJICogc3VtbWFyaXppbmcgaW5kZXhlcz8gIElmIGl0IGlz LCB0aGVuIHdlIG5lZWQgdG8gdXBkYXRlIHRob3NlCisJCSAqIGluZGV4ZXMsIGJ1dCB0aGlz IHVwZGF0ZSBjYW4gc3RpbGwgYmUgY29uc2lkZXJlZCBoZWFwLW9ubHkgKEhPVCkKKwkJICog YW5kIGF2b2lkIHVwZGF0aW5nIGFueSBub24tc3VtbWFyaXppbmcgaW5kZXhlcyBvbiB0aGUg cmVsYXRpb24uCisJCSAqLworCQlpZiAoYm1zX2lzX3N1YnNldChtb2RpZmllZF9pZHhfYXR0 cnMsIHN1bV9hdHRycykpCisJCXsKKwkJCWhvdF9hbGxvd2VkID0gdHJ1ZTsKKwkJCSpzdW1t YXJpemVkX29ubHkgPSB0cnVlOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIE5v dyB3ZSBrbm93IGEpIG9uZSBvciBtb3JlIGluZGV4ZWQgYXR0cmlidXRlcyB3ZXJlIG1vZGlm aWVkCisJCQkgKiAoY2hhbmdlZCB2YWx1ZSwgbm90IGp1c3QgcmVmZXJlbmNlZCB3aXRoaW4g dGhlIFVQREFURSkgYW5kIHRoYXQKKwkJCSAqIGIpIGF0IGxlYXN0IG9uZSBvZiB0aG9zZSBh dHRyaWJ1dGVzIGlzIHVzZWQgYnkgYQorCQkJICogbm9uLXN1bW1hcml6aW5nIGluZGV4LiBI T1QgaXMgbm90IGFsbG93ZWQuCisJCQkgKi8KKwkJCWhvdF9hbGxvd2VkID0gZmFsc2U7CisJ CX0KKworCQlibXNfZnJlZShzdW1fYXR0cnMpOworCX0KKworCXJldHVybiBob3RfYWxsb3dl ZDsKK30KKworLyoKKyAqIElmIHdlJ3JlIG5vdCB1cGRhdGluZyBhbnkgYXR0cmlidXRlcyB1 c2VkIHdoZW4gZm9ybWluZyB0aGUgaW5kZXgga2V5cyB3ZSBjYW4KKyAqIGdyYWIgYSB3ZWFr ZXIgbG9jayB0eXBlLiBUaGlzIGFsbG93cyBmb3IgbW9yZSBjb25jdXJyZW5jeSB3aGVuIHdl IGFyZQorICogcnVubmluZyBzaW11bHRhbmVvdXNseSB3aXRoIGZvcmVpZ24ga2V5IGNoZWNr cy4KKyAqLworTG9ja1R1cGxlTW9kZQorSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKFJl bGF0aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycykK K3sKKwlMb2NrVHVwbGVNb2RlIGxvY2ttb2RlID0gTG9ja1R1cGxlRXhjbHVzaXZlOworCisJ Qml0bWFwc2V0ICAqa2V5X2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVs YXRpb24sCisJCQkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfS0VZKTsKKworCWlm ICghYm1zX292ZXJsYXAobW9kaWZpZWRfaWR4X2F0dHJzLCBrZXlfYXR0cnMpKQorCQlsb2Nr bW9kZSA9IExvY2tUdXBsZU5vS2V5RXhjbHVzaXZlOworCisJYm1zX2ZyZWUoa2V5X2F0dHJz KTsKKworCXJldHVybiBsb2NrbW9kZTsKK30KKworLyoKKyAqIFJldHVybiBhIEJpdG1hcHNl dCB0aGF0IGNvbnRhaW5zIHRoZSBzZXQgb2YgbW9kaWZpZWQgKGNoYW5nZWQpIGluZGV4ZWQK KyAqIGF0dHJpYnV0ZXMgYmV0d2VlbiBvbGR0dXAgYW5kIG5ld3R1cC4KICAqLwogc3RhdGlj IEJpdG1hcHNldCAqCi1IZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRp b24sCi0JCQkJCQkgQml0bWFwc2V0ICppbnRlcmVzdGluZ19jb2xzLAotCQkJCQkJIEJpdG1h cHNldCAqZXh0ZXJuYWxfY29scywKLQkJCQkJCSBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVw bGUgbmV3dHVwLAotCQkJCQkJIGJvb2wgKmhhc19leHRlcm5hbCkKK0hlYXBVcGRhdGVNb2Rp ZmllZElkeEF0dHJzKFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgb2xkdHVwLCBIZWFw VHVwbGUgbmV3dHVwKQogewogCWludAkJCWF0dGlkeDsKLQlCaXRtYXBzZXQgICptb2RpZmll ZCA9IE5VTEw7CisJQml0bWFwc2V0ICAqYXR0cnMsCisJCQkgICAqbW9kaWZpZWRfaWR4X2F0 dHJzID0gTlVMTDsKIAlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVs YXRpb24pOwogCisJLyogR2V0IHRoZSBzZXQgb2YgYWxsIGF0dHJpYnV0ZXMgYWNyb3NzIGFs bCBpbmRleGVzIGZvciB0aGlzIHJlbGF0aW9uICovCisJYXR0cnMgPSBSZWxhdGlvbkdldElu ZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCk7CisK KwkvKiBObyBpbmRleGVkIGF0dHJpYnV0ZXMsIHdlJ3JlIGRvbmUgKi8KKwlpZiAoYm1zX2lz X2VtcHR5KGF0dHJzKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIFRoaXMgaGVhcCB1 cGRhdGUgZnVuY3Rpb24gaXMgdXNlZCBvdXRzaWRlIHRoZSBleGVjdXRvciBhbmQgc28gdW5s aWtlCisJICogaGVhcGFtX3R1cGxlX3VwZGF0ZSgpIHdoZXJlIHRoZXJlIGlzIFJlc3VsdFJl bEluZm8gYW5kIEVTdGF0ZSB0bworCSAqIHByb3ZpZGUgdGhlIGNvbmNpc2Ugc2V0IG9mIGF0 dHJpYnV0ZXMgdGhhdCBtaWdodCBoYXZlIGJlZW4gbW9kaWZpZWQKKwkgKiAodmlhIEV4ZWNH ZXRBbGxVcGRhdGVkQ29scygpKSB3ZSBzaW1wbHkgY2hlY2sgYWxsIGluZGV4ZWQgYXR0cmli dXRlcyB0bworCSAqIGZpbmQgdGhlIHN1YnNldCB0aGF0IGNoYW5nZWQgdmFsdWUuICBUaGF0 J3MgdGhlICJtb2RpZmllZCBpbmRleGVkCisJICogYXR0cmlidXRlcyIgb3IgIm1vZGlmaWVk X2lkeF9hdHRycyIuCisJICovCiAJYXR0aWR4ID0gLTE7Ci0Jd2hpbGUgKChhdHRpZHggPSBi bXNfbmV4dF9tZW1iZXIoaW50ZXJlc3RpbmdfY29scywgYXR0aWR4KSkgPj0gMCkKKwl3aGls ZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0aWR4KSkgPj0gMCkKIAl7 CiAJCS8qIGF0dGlkeCBpcyB6ZXJvLWJhc2VkLCBhdHRybnVtIGlzIHRoZSBub3JtYWwgYXR0 cmlidXRlIG51bWJlciAqLwogCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJz dExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOwpAQCAtNDM4NCw3ICs0NDU4LDcgQEAg SGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkgKi8KIAkJ aWYgKGF0dHJudW0gPT0gMCkKIAkJewotCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlciht b2RpZmllZCwgYXR0aWR4KTsKKwkJCW1vZGlmaWVkX2lkeF9hdHRycyA9IGJtc19hZGRfbWVt YmVyKG1vZGlmaWVkX2lkeF9hdHRycywgYXR0aWR4KTsKIAkJCWNvbnRpbnVlOwogCQl9CiAK QEAgLTQzOTcsNyArNDQ3MSw3IEBAIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhSZWxhdGlv biByZWxhdGlvbiwKIAkJewogCQkJaWYgKGF0dHJudW0gIT0gVGFibGVPaWRBdHRyaWJ1dGVO dW1iZXIpCiAJCQl7Ci0JCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZCwg YXR0aWR4KTsKKwkJCQltb2RpZmllZF9pZHhfYXR0cnMgPSBibXNfYWRkX21lbWJlcihtb2Rp ZmllZF9pZHhfYXR0cnMsIGF0dGlkeCk7CiAJCQkJY29udGludWU7CiAJCQl9CiAJCX0KQEAg LTQ0MTMsMjkgKzQ0ODcsMTIgQEAgSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9u IHJlbGF0aW9uLAogCiAJCWlmICghaGVhcF9hdHRyX2VxdWFscyh0dXBkZXNjLCBhdHRybnVt LCB2YWx1ZTEsCiAJCQkJCQkJICB2YWx1ZTIsIGlzbnVsbDEsIGlzbnVsbDIpKQotCQl7Ci0J CQltb2RpZmllZCA9IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkLCBhdHRpZHgpOwotCQkJY29u dGludWU7Ci0JCX0KLQotCQkvKgotCQkgKiBObyBuZWVkIHRvIGNoZWNrIGF0dHJpYnV0ZXMg dGhhdCBjYW4ndCBiZSBzdG9yZWQgZXh0ZXJuYWxseS4gTm90ZQotCQkgKiB0aGF0IHN5c3Rl bSBhdHRyaWJ1dGVzIGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5LgotCQkgKi8KLQkJaWYg KGF0dHJudW0gPCAwIHx8IGlzbnVsbDEgfHwKLQkJCVR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1 cGRlc2MsIGF0dHJudW0gLSAxKS0+YXR0bGVuICE9IC0xKQotCQkJY29udGludWU7Ci0KLQkJ LyoKLQkJICogQ2hlY2sgaWYgdGhlIG9sZCB0dXBsZSdzIGF0dHJpYnV0ZSBpcyBzdG9yZWQg ZXh0ZXJuYWxseSBhbmQgaXMgYQotCQkgKiBtZW1iZXIgb2YgZXh0ZXJuYWxfY29scy4KLQkJ ICovCi0JCWlmIChWQVJBVFRfSVNfRVhURVJOQUwoKHZhcmxlbmEgKikgRGF0dW1HZXRQb2lu dGVyKHZhbHVlMSkpICYmCi0JCQlibXNfaXNfbWVtYmVyKGF0dGlkeCwgZXh0ZXJuYWxfY29s cykpCi0JCQkqaGFzX2V4dGVybmFsID0gdHJ1ZTsKKwkJCW1vZGlmaWVkX2lkeF9hdHRycyA9 IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkX2lkeF9hdHRycywgYXR0aWR4KTsKIAl9CiAKLQly ZXR1cm4gbW9kaWZpZWQ7CisJYm1zX2ZyZWUoYXR0cnMpOworCisJcmV0dXJuIG1vZGlmaWVk X2lkeF9hdHRyczsKIH0KIAogLyoKQEAgLTQ0NTMsMTIgKzQ1MTAsMTA2IEBAIHNpbXBsZV9o ZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpv dGlkLCBIZWFwVHVwbGUgdHVwCiAJVE1fUmVzdWx0CXJlc3VsdDsKIAlUTV9GYWlsdXJlRGF0 YSB0bWZkOwogCUxvY2tUdXBsZU1vZGUgbG9ja21vZGU7CisJVHVwbGVUYWJsZVNsb3QgKnNs b3Q7CisJQnVmZmVySGVhcFR1cGxlVGFibGVTbG90ICpic2xvdDsKKwlIZWFwVHVwbGUJb2xk dHVwOworCWJvb2wJCXNob3VsZEZyZWUgPSB0cnVlOworCUJpdG1hcHNldCAgKmlkeF9hdHRy cywKKwkJCSAgICptb2RpZmllZF9pZHhfYXR0cnM7CisJYm9vbAkJaG90X2FsbG93ZWQsCisJ CQkJc3VtbWFyaXplZF9vbmx5OworCUJ1ZmZlcgkJYnVmZmVyOwogCi0JcmVzdWx0ID0gaGVh cF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cCwKLQkJCQkJCSBHZXRDdXJyZW50Q29tbWFu ZElkKHRydWUpLCAwLAotCQkJCQkJIEludmFsaWRTbmFwc2hvdCwKLQkJCQkJCSB0cnVlIC8q IHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0JCQkJCQkgJnRtZmQsICZsb2NrbW9kZSwgdXBkYXRl X2luZGV4ZXMpOworCUFzc2VydChJdGVtUG9pbnRlcklzVmFsaWQob3RpZCkpOworCisJLyoK KwkgKiBGZXRjaCB0aGlzIGJpdG1hcCBvZiBpbnRlcmVzdGluZyBhdHRyaWJ1dGVzIGZyb20g cmVsY2FjaGUgYmVmb3JlCisJICogb2J0YWluaW5nIGEgYnVmZmVyIGxvY2sgYmVjYXVzZSBp ZiB3ZSBhcmUgZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUKKwkgKiByZWxldmFudCBz eXN0ZW0gY2F0YWxvZ3Mgd2UgY291bGQgZGVhZGxvY2sgaWYgd2UgdHJ5IHRvIGZldGNoIHRo ZW0KKwkgKiBsYXRlciBvbi4gUmVsY2FjaGUgd2lsbCByZXR1cm4gY29waWVzIG9mIGVhY2gg Yml0bWFwLCBzbyB3ZSBuZWVkIG5vdAorCSAqIHdvcnJ5IGFib3V0IHJlbGNhY2hlIGZsdXNo IGhhcHBlbmluZyBtaWR3YXkgdGhyb3VnaCB0aGlzIG9wZXJhdGlvbi4KKwkgKi8KKwlpZHhf YXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRU Ul9CSVRNQVBfSU5ERVhFRCk7CisKKwlJTkpFQ1RJT05fUE9JTlQoInNpbXBsZV9oZWFwX3Vw ZGF0ZS1iZWZvcmUtcGluIiwgTlVMTCk7CisKKwkvKgorCSAqIFRvIHVwZGF0ZSBhIGhlYXAg dHVwbGUgd2UgbmVlZCB0byBmaW5kIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZAorCSAq IGF0dHJpYnV0ZXMgKCJtb2RpZmllZF9pZHhfYXR0cnMiKSBhbmQgdXNlIHRoYXQgdG8gZGV0 ZXJtaW5lIGlmIGEgSE9UCisJICogdXBkYXRlIGlzIGFsbG93YWJsZSBvciBub3QuIFdoZW4g dXBkYXRpbmcgaGVhcCB0dXBsZXMgdmlhIGV4ZWN1dGlvbiBvZgorCSAqIFVQREFURSBzdGF0 ZW1lbnRzIHRoaXMgc2V0IGlzIGNvbnN0cnVjdGVkIGJlZm9yZSBjYWxsaW5nIGludG8gdGhl IHRhYmxlCisJICogQU0ncyB1cGRhdGUgZnVuY3Rpb24gYnkgRXhlY1VwZGF0ZU1vZGlmaWVk SWR4QXR0cnMoKSB3aGljaCBjb21wYXJlcyB0aGUKKwkgKiBvbGQvbmV3IFR1cGxlVGFibGVT bG90cy4KKwkgKgorCSAqIEhlcmUgdGhpbmdzIGFyZSBhIGJpdCBkaWZmZXJlbnQsIHdlIGhh dmUgdGhlIG9sZCBUSUQgYW5kIHRoZSBuZXcgdHVwbGUsCisJICogbm90IHR3byBUdXBsZVRh YmxlU2xvdHMsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIGNvbnN0cnVjdCBhIHNpbWlsYXIKKwkg KiBiaXRtYXAgc28gYXMgdG8gYmUgYWJsZSB0byBrbm93IGlmIEhPVCB1cGRhdGVzIGFyZSBh bGxvd2VkIG9yIG5vdC4KKwkgKgorCSAqIFRvIGRvIHRoYXQgd2UgZmlyc3QgaGF2ZSB0byBm ZXRjaCB0aGUgb2xkIHR1cGxlIGl0c2VsZiwgYnV0IGJlY2F1c2UKKwkgKiBoZWFwYW1fZmV0 Y2hfcm93X3ZlcnNpb24oKSBpcyBzdGF0aWMsIHdlIHJlcGxpY2F0ZSBpbiBwYXJ0IHRoYXQg Y29kZQorCSAqIGhlcmUuCisJICoKKwkgKiBUaGlzIGlzIGEgYml0IHJlcGV0aXRpdmUgYmVj YXVzZSBoZWFwX3VwZGF0ZSgpIHdpbGwgYWdhaW4gZmluZCBhbmQgZm9ybQorCSAqIHRoZSBv bGQgSGVhcFR1cGxlIGZyb20gdGhlIG9sZCBUSUQgYW5kIGluIG1vc3QgY2FzZXMgdGhlIGNh bGxlcnMKKwkgKiAoaWdub3JpbmcgZXh0ZW5zaW9ucywgYXJlIGFsd2F5cyBjYXRhbG9nIHR1 cGxlIHVwZGF0ZXMpIGFscmVhZHkgaGFkIHRoZQorCSAqIHNldCBvZiBjaGFuZ2VkIGF0dHJp YnV0ZXMgKHRoZSAicmVwbGFjZXMiIGFycmF5KSwgYnV0IGZvciBub3cgdGhpcworCSAqIG1p bm9yIHJlcGV0aXRpb24gb2Ygd29yayBpcyBuZWNlc3NhcnkuCisJICovCisJc2xvdCA9IE1h a2VUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKSwgJlRUU09wc0J1 ZmZlckhlYXBUdXBsZSwgMCk7CisJYnNsb3QgPSAoQnVmZmVySGVhcFR1cGxlVGFibGVTbG90 ICopIHNsb3Q7CisKKwkvKgorCSAqIFNldCB0aGUgVElEIGluIHRoZSBzbG90IGFuZCB0aGVu IGZldGNoIHRoZSBvbGQgdHVwbGUgc28gd2UgY2FuIGV4YW1pbmUKKwkgKiBpdAorCSAqLwor CWJzbG90LT5iYXNlLnR1cGRhdGEudF9zZWxmID0gKm90aWQ7CisJaWYgKCFoZWFwX2ZldGNo KHJlbGF0aW9uLCBTbmFwc2hvdEFueSwgJmJzbG90LT5iYXNlLnR1cGRhdGEsICZidWZmZXIs IGZhbHNlKSkKKwl7CisJCS8qCisJCSAqIGhlYXBfdXBkYXRlKCkgY2hlY2tzIGZvciAhSXRl bUlkSXNOb3JtYWwobHApIGFuZCB3aWxsIHJldHVybiBmYWxzZQorCQkgKiBpbiB0aG9zZSBj YXNlcy4KKwkJICovCisJCUFzc2VydChSZWxhdGlvblN1cHBvcnRzU3lzQ2FjaGUoUmVsYXRp b25HZXRSZWxpZChyZWxhdGlvbikpKTsKKworCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25l OworCisJCS8qIG1vZGlmaWVkX2lkeF9hdHRycyBub3QgeWV0IGluaXRpYWxpemVkICovCisJ CWJtc19mcmVlKGlkeF9hdHRycyk7CisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qo c2xvdCk7CisKKwkJZWxvZyhFUlJPUiwgInR1cGxlIGNvbmN1cnJlbnRseSBkZWxldGVkIik7 CisKKwkJcmV0dXJuOworCX0KKworCUFzc2VydChidWZmZXIgIT0gSW52YWxpZEJ1ZmZlcik7 CisKKwkvKiBTdG9yZSBpbiBzbG90LCB0cmFuc2ZlcnJpbmcgZXhpc3RpbmcgcGluICovCisJ RXhlY1N0b3JlUGlubmVkQnVmZmVySGVhcFR1cGxlKCZic2xvdC0+YmFzZS50dXBkYXRhLCBz bG90LCBidWZmZXIpOworCW9sZHR1cCA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwg ZmFsc2UsICZzaG91bGRGcmVlKTsKKworCW1vZGlmaWVkX2lkeF9hdHRycyA9IEhlYXBVcGRh dGVNb2RpZmllZElkeEF0dHJzKHJlbGF0aW9uLCBvbGR0dXAsIHR1cCk7CisJbG9ja21vZGUg PSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUocmVsYXRpb24sIG1vZGlmaWVkX2lkeF9h dHRycyk7CisJaG90X2FsbG93ZWQgPSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0aW9u LCBtb2RpZmllZF9pZHhfYXR0cnMsICZzdW1tYXJpemVkX29ubHkpOworCisJcmVzdWx0ID0g aGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cCwgR2V0Q3VycmVudENvbW1hbmRJZCh0 cnVlKSwgMCwKKwkJCQkJCSBJbnZhbGlkU25hcHNob3QsIHRydWUgLyogd2FpdCBmb3IgY29t bWl0ICovICwKKwkJCQkJCSAmdG1mZCwgbG9ja21vZGUsIG1vZGlmaWVkX2lkeF9hdHRycywg aG90X2FsbG93ZWQpOworCisJaWYgKHNob3VsZEZyZWUpCisJCWhlYXBfZnJlZXR1cGxlKG9s ZHR1cCk7CisKKwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworCWJtc19m cmVlKGlkeF9hdHRycyk7CisKKwkvKgorCSAqIERlY2lkZSB3aGV0aGVyIG5ldyBpbmRleCBl bnRyaWVzIGFyZSBuZWVkZWQgZm9yIHRoZSB0dXBsZQorCSAqCisJICogSWYgdGhlIHVwZGF0 ZSBpcyBub3QgSE9ULCB3ZSBtdXN0IHVwZGF0ZSBhbGwgaW5kZXhlcy4gSWYgdGhlIHVwZGF0 ZSBpcworCSAqIEhPVCwgaXQgY291bGQgYmUgdGhhdCB3ZSB1cGRhdGVkIHN1bW1hcml6ZWQg Y29sdW1ucywgc28gd2UgZWl0aGVyCisJICogdXBkYXRlIG9ubHkgc3VtbWFyaXplZCBpbmRl eGVzLCBvciBub25lIGF0IGFsbC4KKwkgKi8KKwkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25l OwogCXN3aXRjaCAocmVzdWx0KQogCXsKIAkJY2FzZSBUTV9TZWxmTW9kaWZpZWQ6CkBAIC00 NDY4LDYgKzQ2MTksMTAgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAKIAogCQljYXNl IFRNX09rOgogCQkJLyogZG9uZSBzdWNjZXNzZnVsbHkgKi8KKwkJCWlmICghSGVhcFR1cGxl SXNIZWFwT25seSh0dXApKQorCQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX0FsbDsKKwkJCWVs c2UgaWYgKHN1bW1hcml6ZWRfb25seSkKKwkJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1t YXJpemluZzsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVE1fVXBkYXRlZDoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDIyNjhjYzI3N2JjLi5lNmNi ODE5N2RlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hh bmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j CkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNzY2FuLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdHNtYXBpLmgiCi0j aW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFj dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1ZGUgImNhdGFsb2cv aW5kZXguaCIKQEAgLTIyNCwyMCArMjIzLDI2IEBAIHN0YXRpYyBUTV9SZXN1bHQKIGhlYXBh bV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIFR1 cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQlDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9u cywKIAkJCQkJU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ssCi0JCQkJ CWJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsCi0JCQkJCUxvY2tUdXBsZU1vZGUg KmxvY2ttb2RlLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkJYm9v bCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUs CisJCQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLCBUVV9VcGRhdGVJ bmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlib29sCQlzaG91bGRGcmVlID0gdHJ1ZTsK IAlIZWFwVHVwbGUJdHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIHRydWUs ICZzaG91bGRGcmVlKTsKKwlib29sCQlob3RfYWxsb3dlZDsKKwlib29sCQlzdW1tYXJpemVk X29ubHk7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAorCUFzc2VydChJdGVtUG9pbnRlcklzVmFs aWQob3RpZCkpOworCisJaG90X2FsbG93ZWQgPSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJl bGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMsICZzdW1tYXJpemVkX29ubHkpOworCSpsb2Nr bW9kZSA9IEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShyZWxhdGlvbiwgbW9kaWZpZWRf aWR4X2F0dHJzKTsKKwogCS8qIFVwZGF0ZSB0aGUgdHVwbGUgd2l0aCB0YWJsZSBvaWQgKi8K IAlzbG90LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKIAl0 dXBsZS0+dF90YWJsZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsKIAotCXJlc3VsdCA9IGhl YXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXBsZSwgY2lkLCBvcHRpb25zLAotCQkJCQkJ IGNyb3NzY2hlY2ssIHdhaXQsCi0JCQkJCQkgdG1mZCwgbG9ja21vZGUsIHVwZGF0ZV9pbmRl eGVzKTsKKwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVwbGUsIGNp ZCwgb3B0aW9ucywgY3Jvc3NjaGVjaywgd2FpdCwKKwkJCQkJCSB0bWZkLCAqbG9ja21vZGUs IG1vZGlmaWVkX2lkeF9hdHRycywgaG90X2FsbG93ZWQpOwogCUl0ZW1Qb2ludGVyQ29weSgm dHVwbGUtPnRfc2VsZiwgJnNsb3QtPnR0c190aWQpOwogCiAJLyoKQEAgLTI1MCwxNiArMjU1 LDE3IEBAIGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2lu dGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCSAqIEhPVCwgaXQgY291bGQgYmUg dGhhdCB3ZSB1cGRhdGVkIHN1bW1hcml6ZWQgY29sdW1ucywgc28gd2UgZWl0aGVyCiAJICog dXBkYXRlIG9ubHkgc3VtbWFyaXplZCBpbmRleGVzLCBvciBub25lIGF0IGFsbC4KIAkgKi8K LQlpZiAocmVzdWx0ICE9IFRNX09rKQorCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CisJ aWYgKHJlc3VsdCA9PSBUTV9PaykKIAl7Ci0JCUFzc2VydCgqdXBkYXRlX2luZGV4ZXMgPT0g VFVfTm9uZSk7Ci0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CisJCWlmIChIZWFwVHVw bGVJc0hlYXBPbmx5KHR1cGxlKSkKKwkJeworCQkJaWYgKHN1bW1hcml6ZWRfb25seSkKKwkJ CQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1tYXJpemluZzsKKwkJfQorCQllbHNlCisJCQkq dXBkYXRlX2luZGV4ZXMgPSBUVV9BbGw7CiAJfQotCWVsc2UgaWYgKCFIZWFwVHVwbGVJc0hl YXBPbmx5KHR1cGxlKSkKLQkJQXNzZXJ0KCp1cGRhdGVfaW5kZXhlcyA9PSBUVV9BbGwpOwot CWVsc2UKLQkJQXNzZXJ0KCgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfU3VtbWFyaXppbmcpIHx8 Ci0JCQkgICAoKnVwZGF0ZV9pbmRleGVzID09IFRVX05vbmUpKTsKIAogCWlmIChzaG91bGRG cmVlKQogCQlwZnJlZSh0dXBsZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpp bmRleCA2OGZmMDk2NmYxYy4uMTJjMjY3NGNiZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxl L3RhYmxlYW0uYwpAQCAtMzYxLDYgKzM2MSw3IEBAIHZvaWQKIHNpbXBsZV90YWJsZV90dXBs ZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJICBUdXBs ZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCisJCQkJCQkg IGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAogCQkJCQkJICBUVV9VcGRh dGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlUTV9SZXN1bHQJcmVzdWx0OwpAQCAt MzcxLDcgKzM3Miw5IEBAIHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVs LCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJCQlHZXRDdXJyZW50Q29tbWFuZElkKHRydWUp LAogCQkJCQkJCQkwLCBzbmFwc2hvdCwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQl0cnVl IC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0JCQkJCQkJCSZ0bWZkLCAmbG9ja21vZGUsIHVw ZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJJnRtZmQsICZsb2NrbW9kZSwKKwkJCQkJCQkJbW9k aWZpZWRfaWR4X2F0dHJzLAorCQkJCQkJCQl1cGRhdGVfaW5kZXhlcyk7CiAKIAlzd2l0Y2gg KHJlc3VsdCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2su YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jCmluZGV4IDRkMTc3Yzg2OGJiLi5i ZjQ1YzVjZjgyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKQEAgLTI2NzksOCArMjY3OSwx OCBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVT bG90ICpzcGlsbGVkX3R1cGxlLAogCUxvY2tUdXBsZU1vZGUgbG9ja21vZGU7CiAJVE1fRmFp bHVyZURhdGEgdG1mZDsKIAlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZV9pbmRleGVzOworCUJp dG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRyczsKIAlUTV9SZXN1bHQJcmVzOwogCisJLyoK KwkgKiBDb21wdXRlIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIGJ5 IGNvbXBhcmluZyB0aGUgb2xkCisJICogKG9uZGlzaykgYW5kIG5ldyAoc3BpbGxlZCkgdHVw bGVzOyBoZWFwX3VwZGF0ZSBuZWVkcyBpdCBmb3IgYSBjb3JyZWN0CisJICogSE9UIGRlY2lz aW9uIChhIE5VTEwgc2V0IHdvdWxkIGxvb2sgbGlrZSAibm8gaW5kZXhlZCBjb2x1bW4gY2hh bmdlZCIpLgorCSAqLworCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4ZWNVcGRhdGVNb2RpZmll ZElkeEF0dHJzKGNoZ2N4dC0+Y2NfcnJpLAorCQkJCQkJCQkJCQkJCW9uZGlza190dXBsZSwK KwkJCQkJCQkJCQkJCQlzcGlsbGVkX3R1cGxlKTsKKwogCS8qCiAJICogQ2Fycnkgb3V0IHRo ZSB1cGRhdGUsIHNraXBwaW5nIGxvZ2ljYWwgZGVjb2RpbmcgZm9yIGl0LgogCSAqLwpAQCAt MjY5MCw3ICsyNzAwLDcgQEAgYXBwbHlfY29uY3VycmVudF91cGRhdGUoUmVsYXRpb24gcmVs LCBUdXBsZVRhYmxlU2xvdCAqc3BpbGxlZF90dXBsZSwKIAkJCQkJCQkgSW52YWxpZFNuYXBz aG90LAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJIGZhbHNlLAotCQkJCQkJ CSAmdG1mZCwgJmxvY2ttb2RlLCAmdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCSAmdG1mZCwg JmxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsICZ1cGRhdGVfaW5kZXhlcyk7CiAJaWYg KHJlcyAhPSBUTV9PaykKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQllcnJjb2RlKEVSUkNPREVf VF9SX1NFUklBTElaQVRJT05fRkFJTFVSRSksCkBAIC0yNzExLDYgKzI3MjEsOCBAQCBhcHBs eV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpzcGls bGVkX3R1cGxlLAogCX0KIAogCXBnc3RhdF9wcm9ncmVzc19pbmNyX3BhcmFtKFBST0dSRVNT X1JFUEFDS19IRUFQX1RVUExFU19VUERBVEVELCAxKTsKKworCWJtc19mcmVlKG1vZGlmaWVk X2lkeF9hdHRycyk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNSZXBsaWNhdGlvbi5jCmluZGV4IGIyY2E1Y2JmMTE3Li42MjYyZjcxYmQ5MyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTMzLDYgKzMzLDcgQEAK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hl LmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2Nh Y2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKQEAgLTkxMCw2ICs5MTEsNyBA QCBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywKIAlib29sCQlza2lwX3R1cGxlID0gZmFsc2U7CiAJUmVsYXRpb24JcmVsID0gcmVzdWx0 UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOwogCUl0ZW1Qb2ludGVyIHRpZCA9ICYoc2VhcmNo c2xvdC0+dHRzX3RpZCk7CisJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4X2F0dHJzOwogCiAJ LyoKIAkgKiBXZSBzdXBwb3J0IG9ubHkgbm9uLXN5c3RlbSB0YWJsZXMsIHdpdGgKQEAgLTk0 OCw4ICs5NTAsMTMgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm8sCiAJCWlmIChyZWwtPnJkX3JlbC0+cmVsaXNwYXJ0aXRpb24pCiAJ CQlFeGVjUGFydGl0aW9uQ2hlY2socmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRlLCB0cnVl KTsKIAorCQltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRy cyhyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCQkJCQlzZWFyY2hzbG90LCBzbG90KTsKKwog CQlzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKHJlbCwgdGlkLCBzbG90LCBlc3RhdGUtPmVz X3NuYXBzaG90LAotCQkJCQkJCQkgICZ1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCSAgbW9k aWZpZWRfaWR4X2F0dHJzLCAmdXBkYXRlX2luZGV4ZXMpOworCQlibXNfZnJlZShtb2RpZmll ZF9pZHhfYXR0cnMpOworCiAKIAkJY29uZmxpY3RpbmRleGVzID0gcmVzdWx0UmVsSW5mby0+ cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjVHVwbGVzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVw bGVzLmMKaW5kZXggN2Y0ZWJmOTU0MzIuLmJkYjliMTQ2ZGU3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1R1cGxlcy5jCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAibm9kZXMvbm9k ZUZ1bmNzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRp bHMvZXhwYW5kZWRkYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCkBAIC0yMDEyLDYgKzIwMTMsNzUgQEAgRXhlY0Zl dGNoU2xvdEhlYXBUdXBsZURhdHVtKFR1cGxlVGFibGVTbG90ICpzbG90KQogCXJldHVybiBy ZXQ7CiB9CiAKKy8qCisgKiBFeGVjQ29tcGFyZVNsb3RBdHRycworICoKKyAqIENvbXBhcmUg dGhlIHN1YnNldCBvZiBhdHRyaWJ1dGVzIGluIGF0dHJzIGJld3R3ZWVuIFR1cGxlVGFibGVT bG90cyB0byBkZXRlY3QKKyAqIHdoaWNoIGF0dHJpYnV0ZXMgaGF2ZSBjaGFuZ2VkLgorICoK KyAqIFJldHVybnMgYSByZXVzZWQgd2hlbiBwb3NzaWJsZSBCaXRtYXBzZXQgb2YgYXR0cmli dXRlIGluZGljZXMgKHVzaW5nCisgKiBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVt YmVyIGNvbnZlbnRpb24pIHRoYXQgZGlmZmVyIGJldHdlZW4gdGhlIHR3bworICogc2xvdHMu CisgKi8KK0JpdG1hcHNldCAqCitFeGVjQ29tcGFyZVNsb3RBdHRycyhCaXRtYXBzZXQgKmF0 dHJzLCBUdXBsZURlc2MgdHVwZGVzYywKKwkJCQkJIFR1cGxlVGFibGVTbG90ICpzMSwgVHVw bGVUYWJsZVNsb3QgKnMyKQoreworCWludAkJCWF0dGlkeCA9IC0xOworCisJd2hpbGUgKChh dHRpZHggPSBibXNfbmV4dF9tZW1iZXIoYXR0cnMsIGF0dGlkeCkpID49IDApCisJeworCQkv KiBhdHRpZHggaXMgemVyby1iYXNlZCwgYXR0cm51bSBpcyB0aGUgbm9ybWFsIGF0dHJpYnV0 ZSBudW1iZXIgKi8KKwkJQXR0ck51bWJlcglhdHRybnVtID0gYXR0aWR4ICsgRmlyc3RMb3dJ bnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsKKwkJRGF0dW0JCXZhbHVlMSwKKwkJCQkJdmFs dWUyOworCQlib29sCQludWxsMSwKKwkJCQkJbnVsbDI7CisJCUNvbXBhY3RBdHRyaWJ1dGUg KmF0dDsKKworCQkvKgorCQkgKiBJZiBpdCdzIGEgd2hvbGUtdHVwbGUgcmVmZXJlbmNlLCBz YXkgIm5vdCBlcXVhbCIuICBJdCdzIG5vdCByZWFsbHkKKwkJICogd29ydGggc3VwcG9ydGlu ZyB0aGlzIGNhc2UsIHNpbmNlIGl0IGNvdWxkIG9ubHkgc3VjY2VlZCBhZnRlciBhCisJCSAq IG5vLW9wIHVwZGF0ZSwgd2hpY2ggaXMgaGFyZGx5IGEgY2FzZSB3b3J0aCBvcHRpbWl6aW5n IGZvci4KKwkJICovCisJCWlmIChhdHRybnVtID09IDApCisJCQljb250aW51ZTsKKworCQkv KgorCQkgKiBMaWtld2lzZSwgYXV0b21hdGljYWxseSBzYXkgIm5vdCBlcXVhbCIgZm9yIGFu eSBzeXN0ZW0gYXR0cmlidXRlCisJCSAqIG90aGVyIHRoYW4gdGFibGVPSUQ7IHdlIGNhbm5v dCBleHBlY3QgdGhlc2UgdG8gYmUgY29uc2lzdGVudCBpbiBhCisJCSAqIEhPVCBjaGFpbiwg b3IgZXZlbiB0byBiZSBzZXQgY29ycmVjdGx5IHlldCBpbiB0aGUgbmV3IHR1cGxlLgorCQkg Ki8KKwkJaWYgKGF0dHJudW0gPCAwKQorCQl7CisJCQlpZiAoYXR0cm51bSA9PSBUYWJsZU9p ZEF0dHJpYnV0ZU51bWJlcikKKwkJCQlhdHRycyA9IGJtc19kZWxfbWVtYmVyKGF0dHJzLCBh dHRpZHgpOworCQkJZWxzZQorCQkJCWNvbnRpbnVlOworCQl9CisKKwkJYXR0ID0gVHVwbGVE ZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51bSAtIDEpOworCQl2YWx1ZTEgPSBzbG90 X2dldGF0dHIoczEsIGF0dHJudW0sICZudWxsMSk7CisJCXZhbHVlMiA9IHNsb3RfZ2V0YXR0 cihzMiwgYXR0cm51bSwgJm51bGwyKTsKKworCQkvKiBBIGNoYW5nZSB0by9mcm9tIE5VTEws IHNvIG5vdCBlcXVhbCAqLworCQlpZiAobnVsbDEgIT0gbnVsbDIpCisJCQljb250aW51ZTsK KworCQkvKiBCb3RoIE5VTEwsIG5vIGNoYW5nZS91bm1vZGlmaWVkICovCisJCWlmIChudWxs MikKKwkJeworCQkJYXR0cnMgPSBibXNfZGVsX21lbWJlcihhdHRycywgYXR0aWR4KTsKKwkJ CWNvbnRpbnVlOworCQl9CisKKwkJaWYgKGRhdHVtX2ltYWdlX2VxKHZhbHVlMSwgdmFsdWUy LCBhdHQtPmF0dGJ5dmFsLCBhdHQtPmF0dGxlbikpCisJCQlhdHRycyA9IGJtc19kZWxfbWVt YmVyKGF0dHJzLCBhdHRpZHgpOworCX0KKworCXJldHVybiBhdHRyczsKK30KKwogLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICoJCQkJY29udmVuaWVuY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZXMKICAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2Rp ZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5k ZXggYzMzM2Q3MTM5ZmEuLjFlNzkzMDdkMzNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTW9kaWZ5VGFibGUuYwpAQCAtMTgsNiArMTgsNyBAQAogICoJCUV4ZWNNb2RpZnlUYWJs ZQkJLSByZXRyaWV2ZSB0aGUgbmV4dCB0dXBsZSBmcm9tIHRoZSBub2RlCiAgKgkJRXhlY0Vu ZE1vZGlmeVRhYmxlCS0gc2h1dCBkb3duIHRoZSBNb2RpZnlUYWJsZSBub2RlCiAgKgkJRXhl Y1JlU2Nhbk1vZGlmeVRhYmxlIC0gcmVzY2FuIHRoZSBNb2RpZnlUYWJsZSBub2RlCisgKgkJ RXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMgLSBmaW5kIHNldCBvZiB1cGRhdGVkIGluZGV4 ZWQgY29sdW1ucwogICoKICAqCSBOT1RFUwogICoJCVRoZSBNb2RpZnlUYWJsZSBub2RlIHJl Y2VpdmVzIGlucHV0IGZyb20gaXRzIG91dGVyUGxhbiwgd2hpY2ggaXMKQEAgLTU2LDYgKzU3 LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdHVwY29udmVydC5oIgorI2luY2x1 ZGUgImFjY2Vzcy90dXBkZXNjLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNs dWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5oIgpAQCAtMjAyLDYgKzIwNCw2MyBAQCBzdGF0aWMgdm9pZCBmaXJlQVNUcmlnZ2Vy cyhNb2RpZnlUYWJsZVN0YXRlICpub2RlKTsKIHN0YXRpYyB2b2lkIEV4ZWNJbml0Rm9yUG9y dGlvbk9mKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCQkJ CQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbyk7CiAKKy8qCisgKiBFeGVjVXBk YXRlTW9kaWZpZWRJZHhBdHRycworICoKKyAqIEZpbmQgdGhlIHNldCBvZiBhdHRyaWJ1dGVz IHJlZmVyZW5jZWQgYnkgdGhpcyByZWxhdGlvbiBhbmQgdXNlZCBpbiB0aGlzCisgKiBVUERB VEUgdGhhdCBub3cgZGlmZmVyIGluIHZhbHVlLiAgVGhpcyBpcyBkb25lIGJ5IHJldmlld2lu ZyBzbG90IGRhdHVtIHRoYXQKKyAqIGFyZSBpbiB0aGUgVVBEQVRFIHN0YXRtZW50IGFuZCBh cmUga25vd24gdG8gYmUgcmVmZXJlbmNlZCBieSBhdCBsZWFzdCBvbmUKKyAqIGluZGV4IGlu IHNvbWUgd2F5LiAgVGhpcyBzZXQgaXMgY2FsbGVkIHRoZSAibW9kaWZpZWQgaW5kZXhlZCBh dHRyaWJ1dGVzIiBvcgorICogIm1vZGlmaWVkX2lkeF9hdHRycyIuICBBbiBvdmVybGFwIG9m IGEgc2luZ2xlIGluZGV4J3MgYXR0cmlidXRlcyBhbmQgdGhpcworICogbW9kaWZpZWRfaWR4 X2F0dHJzIHNldCBzaWduYWxzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgaW4gdGhlIG5ld190dHMg dXNlZCB0bworICogZm9ybSB0aGUgaW5kZXggZGF0dW0gaGF2ZSBjaGFuZ2VkLgorICoKKyAq IFJldHVybiBhIEJpdG1hcHNldCB0aGF0IGNvbnRhaW5zIHRoZSBzZXQgb2YgbW9kaWZpZWQg KGNoYW5nZWQpIGluZGV4ZWQKKyAqIGF0dHJpYnV0ZXMgYmV0d2VlbiBvbGR0dXAgYW5kIG5l d3R1cC4KKyAqCisgKiBOb3RlOiBUaGVyZSBpcyBhIHNpbWlsYXIgZnVuY3Rpb24gY2FsbGVk IEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzKCkgdGhhdCBvcGVyYXRlcworICogb24gdGhl IG9sZCBUSUQgYW5kIG5ldyBIZWFwVHVwbGUgcmF0aGVyIHRoYW4gdGhlIG9sZC9uZXcgVHVw bGVUYWJsZVNsb3RzIGFzCisgKiB0aGlzIGZ1bmN0aW9uIGRvZXMuICBUaGVzZSB0d28gZnVu Y3Rpb25zIHNob3VsZCBtaXJyb3Igb25lIGFub3RoZXIgdW50aWwKKyAqIHNvbWVkYXkgd2hl biBjYXRhbG9nIHR1cGxlIHVwZGF0ZXMgdHJhY2sgdGhlaXIgY2hhbmdlcyBhdm9pZGluZyB0 aGUgbmVlZCB0bworICogcmUtZGlzY292ZXIgdGhlbSBpbiBzaW1wbGVfaGVhcF91cGRhdGUo KS4KKyAqLworQml0bWFwc2V0ICoKK0V4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqb2xk X3R0cywKKwkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpuZXdfdHRzKQoreworCVJlbGF0aW9u CXJlbGF0aW9uID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOworCVR1cGxlRGVz Ywl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbik7CisJQml0bWFwc2V0ICAq YXR0cnM7CisKKwkvKiBJZiBubyBpbmRleGVzLCB3ZSdyZSBkb25lICovCisJaWYgKHJlc3Vs dFJlbEluZm8tPnJpX051bUluZGljZXMgPT0gMCkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgor CSAqIEdldCB0aGUgc2V0IG9mIGFsbCBhdHRyaWJ1dGVzIGFjcm9zcyBhbGwgaW5kZXhlcyBm b3IgdGhpcyByZWxhdGlvbiBmcm9tCisJICogdGhlIHJlbGNhY2hlLCBpdCByZXR1cm5zIHVz IGEgY29weSBvZiB0aGUgYml0bWFwIHNvIHdlIGNhbiBtb2RpZnkgaXQuCisJICoKKwkgKiBO b3RlOiBXZSBpbnRlbnRpb25hbGx5IHNjYW4gYWxsIGluZGV4ZWQgY29sdW1ucyB3aGVuIGxv b2tpbmcgZm9yCisJICogY2hhbmdlcyByYXRoZXIgdGhhbiByZWR1Y2UgdGhhdCBzZXQgYnkg aW50ZXJzZWN0aW5nIGl0IHdpdGgKKwkgKiBFeGVjR2V0QWxsVXBkYXRlZENvbHMoKS4gIERl c2lwdGUgdGhlIG5hbWUgaXQgcHJvdmlkZXMgdGhlIHNldCBvZgorCSAqIHRhcmdldGVkIGF0 dHJpYnV0ZXMgaW4gdGhlIFNRTCB1c2VkIGZvciB0aGUgVVBEQVRFIGFuZCBhbnkgdHJpZ2dl cnMsCisJICogYnV0IHRoYXQgZG9lc24ndCBpbmNsdWRlIGFueSBhdHRyaWJ1dGVzIHVwZGF0 ZWQgdXNpbmcKKwkgKiBoZWFwX21vZGlmaXlfdHVwbGUoKS4gVGhlcmUgaXMgb25lIHRlc3Qg aW4gdHNlYXJjaC5zcWwgdGhhdCBkb2VzIGp1c3QKKwkgKiB0aGF0LCBtb2RpZmllcyBhbiBp bmRleGVkIGF0dHJpYnV0ZSB0aGF0IGlzbid0IHNwZWNpZmllZCBpbiB0aGUgU1FMIGFuZAor CSAqIHNvIGlzbid0IHByZXNlbnQgaW4gdGhhdCBiaXRtYXBzZXQuCisJICovCisJYXR0cnMg PSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRUUl9CSVRN QVBfSU5ERVhFRCk7CisKKwkvKgorCSAqIFdoZW4gdGhlcmUgYXJlIGluZGV4ZWQgYXR0cmli dXRlcyBtZW50aW9uZWQgaW4gdGhlIFVQREFURSB0aGVuIHdlIG5lZWQKKwkgKiB0byBmaW5k IHRoZSBzdWJzZXQgdGhhdCBjaGFuZ2VkIHZhbHVlLiAgVGhhdCdzIHRoZQorCSAqICJtb2Rp ZmllZF9pZHhfYXR0cnMiLgorCSAqLworCWF0dHJzID0gRXhlY0NvbXBhcmVTbG90QXR0cnMo YXR0cnMsIHR1cGRlc2MsIG9sZF90dHMsIG5ld190dHMpOworCisJcmV0dXJuIGF0dHJzOwor fQogCiAvKgogICogVmVyaWZ5IHRoYXQgdGhlIHR1cGxlcyB0byBiZSBwcm9kdWNlZCBieSBJ TlNFUlQgbWF0Y2ggdGhlCkBAIC0yNDQ2LDE0ICsyNTA1LDE3IEBAIEV4ZWNVcGRhdGVQcmVw YXJlU2xvdChSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogICovCiBzdGF0aWMgVE1f UmVzdWx0CiBFeGVjVXBkYXRlQWN0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKLQkJCSAgSXRlbVBvaW50ZXIgdHVwbGVpZCwg SGVhcFR1cGxlIG9sZHR1cGxlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKLQkJCSAgYm9vbCBj YW5TZXRUYWcsIFVwZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCkKKwkJCSAgSXRlbVBvaW50ZXIg dHVwbGVpZCwgSGVhcFR1cGxlIG9sZHR1cGxlLCBUdXBsZVRhYmxlU2xvdCAqb2xkU2xvdCwK KwkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGJvb2wgY2FuU2V0VGFnLCBVcGRhdGVDb250 ZXh0ICp1cGRhdGVDeHQpCiB7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBjb250ZXh0LT5lc3Rh dGU7CiAJUmVsYXRpb24JcmVzdWx0UmVsYXRpb25EZXNjID0gcmVzdWx0UmVsSW5mby0+cmlf UmVsYXRpb25EZXNjOwogCWJvb2wJCXBhcnRpdGlvbl9jb25zdHJhaW50X2ZhaWxlZDsKIAlU TV9SZXN1bHQJcmVzdWx0OwogCisJLyogVGhlIHNldCBvZiBtb2RpZmllZCBpbmRleGVkIGF0 dHJpYnV0ZXMgdGhhdCB0cmlnZ2VyIG5ldyBpbmRleCBlbnRyaWVzICovCisJQml0bWFwc2V0 ICAqbW9kaWZpZWRfaWR4X2F0dHJzID0gTlVMTDsKKwogCXVwZGF0ZUN4dC0+Y3Jvc3NQYXJ0 VXBkYXRlID0gZmFsc2U7CiAKIAkvKgpAQCAtMjU3MCw3ICsyNjMyLDE2IEBAIGxyZXBsYWNl OgogCQlFeGVjQ29uc3RyYWludHMocmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRlKTsKIAog CS8qCi0JICogcmVwbGFjZSB0aGUgaGVhcCB0dXBsZQorCSAqIE5leHQgdXAgd2UgbmVlZCB0 byBmaW5kIG91dCB0aGUgc2V0IG9mIGluZGV4ZWQgYXR0cmlidXRlcyB0aGF0IGhhdmUKKwkg KiBjaGFuZ2VkIGluIHZhbHVlIGFuZCBzaG91bGQgdHJpZ2dlciBhIG5ldyBpbmRleCB0dXBs ZS4gIFdlIGNvdWxkIHN0YXJ0CisJICogd2l0aCB0aGUgc2V0IG9mIHVwZGF0ZWQgY29sdW1u cyB2aWEgRXhlY0dldFVwZGF0ZWRDb2xzKCksIGJ1dCBpZiB3ZSBkbworCSAqIHdlIHdpbGwg b3Zlcmxvb2sgYXR0cmlidXRlcyBkaXJlY3RseSBtb2RpZmllZCBieSBoZWFwX21vZGlmeV90 dXBsZSgpCisJICogd2hpY2ggYXJlIG5vdCBrbm93biB0byBFeGVjR2V0VXBkYXRlZENvbHMo KS4KKwkgKi8KKwltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVjVXBkYXRlTW9kaWZpZWRJZHhB dHRycyhyZXN1bHRSZWxJbmZvLCBvbGRTbG90LCBzbG90KTsKKworCS8qCisJICogQ2FsbCBp bnRvIHRoZSB0YWJsZSBBTSB0byB1cGRhdGUgdGhlIGhlYXAgdHVwbGUuCiAJICoKIAkgKiBO b3RlOiBpZiBlc19jcm9zc2NoZWNrX3NuYXBzaG90IGlzbid0IEludmFsaWRTbmFwc2hvdCwg d2UgY2hlY2sgdGhhdAogCSAqIHRoZSByb3cgdG8gYmUgdXBkYXRlZCBpcyB2aXNpYmxlIHRv IHRoYXQgc25hcHNob3QsIGFuZCB0aHJvdyBhCkBAIC0yNTg1LDYgKzI2NTYsNyBAQCBscmVw bGFjZToKIAkJCQkJCQkJZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJ CQl0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCiAJCQkJCQkJCSZjb250ZXh0LT50bWZk LCAmdXBkYXRlQ3h0LT5sb2NrbW9kZSwKKwkJCQkJCQkJbW9kaWZpZWRfaWR4X2F0dHJzLAog CQkJCQkJCQkmdXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzKTsKIAogCXJldHVybiByZXN1bHQ7 CkBAIC0yODEyLDggKzI4ODQsOCBAQCBFeGVjVXBkYXRlKE1vZGlmeVRhYmxlQ29udGV4dCAq Y29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJICovCiByZWRvX2Fj dDoKIAkJbG9ja2VkdGlkID0gKnR1cGxlaWQ7Ci0JCXJlc3VsdCA9IEV4ZWNVcGRhdGVBY3Qo Y29udGV4dCwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwgb2xkdHVwbGUsIHNsb3QsCi0JCQkJ CQkJICAgY2FuU2V0VGFnLCAmdXBkYXRlQ3h0KTsKKwkJcmVzdWx0ID0gRXhlY1VwZGF0ZUFj dChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwgb2xkU2xvdCwK KwkJCQkJCQkgICBzbG90LCBjYW5TZXRUYWcsICZ1cGRhdGVDeHQpOwogCiAJCS8qCiAJCSAq IElmIEV4ZWNVcGRhdGVBY3QgcmVwb3J0cyB0aGF0IGEgY3Jvc3MtcGFydGl0aW9uIHVwZGF0 ZSB3YXMgZG9uZSwKQEAgLTM2NjMsOCArMzczNSw4IEBAIGxtZXJnZV9tYXRjaGVkOgogCQkJ CQlBc3NlcnQob2xkdHVwbGUgPT0gTlVMTCk7CiAKIAkJCQkJcmVzdWx0ID0gRXhlY1VwZGF0 ZUFjdChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLAotCQkJCQkJCQkJCSAgIE5V TEwsIG5ld3Nsb3QsIGNhblNldFRhZywKLQkJCQkJCQkJCQkgICAmdXBkYXRlQ3h0KTsKKwkJ CQkJCQkJCQkgICBOVUxMLCByZXN1bHRSZWxJbmZvLT5yaV9vbGRUdXBsZVNsb3QsCisJCQkJ CQkJCQkJICAgbmV3c2xvdCwgY2FuU2V0VGFnLCAmdXBkYXRlQ3h0KTsKIAogCQkJCQkvKgog CQkJCQkgKiBBcyBpbiBFeGVjVXBkYXRlKCksIGlmIEV4ZWNVcGRhdGVBY3QoKSByZXBvcnRz IHRoYXQgYQpAQCAtNDgxMSw3ICs0ODgzLDcgQEAgRXhlY01vZGlmeVRhYmxlKFBsYW5TdGF0 ZSAqcHN0YXRlKQogCQkgKiBGb3IgVVBEQVRFL0RFTEVURS9NRVJHRSwgZmV0Y2ggdGhlIHJv dyBpZGVudGl0eSBpbmZvIGZvciB0aGUgdHVwbGUKIAkJICogdG8gYmUgdXBkYXRlZC9kZWxl dGVkL21lcmdlZC4gIEZvciBhIGhlYXAgcmVsYXRpb24sIHRoYXQncyBhIFRJRDsKIAkJICog b3RoZXJ3aXNlIHdlIG1heSBoYXZlIGEgd2hvbGVyb3cganVuayBhdHRyIHRoYXQgY2Fycmll cyB0aGUgb2xkCi0JCSAqIHR1cGxlIGluIHRvdG8uICBLZWVwIHRoaXMgaW4gc3RlcCB3aXRo IHRoZSBwYXJ0IG9mCisJCSAqIHR1cGxlIGluIHRvdGFsLiAgS2VlcCB0aGlzIGluIHN0ZXAg d2l0aCB0aGUgcGFydCBvZgogCQkgKiBFeGVjSW5pdE1vZGlmeVRhYmxlIHRoYXQgc2V0cyB1 cCByaV9Sb3dJZEF0dE5vLgogCQkgKi8KIAkJaWYgKG9wZXJhdGlvbiA9PSBDTURfVVBEQVRF IHx8IG9wZXJhdGlvbiA9PSBDTURfREVMRVRFIHx8CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYwppbmRleCBmYjRlMDQyYmU4YS4uMDU1Zjc1NzEwN2YgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtMjQ4Miw3ICsyNDgyLDcgQEAgUmVsYXRpb25EZXN0 cm95UmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIGJvb2wgcmVtZW1iZXJfdHVwZGVzYykK IAlibXNfZnJlZShyZWxhdGlvbi0+cmRfa2V5YXR0cik7CiAJYm1zX2ZyZWUocmVsYXRpb24t PnJkX3BrYXR0cik7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2lkYXR0cik7Ci0JYm1zX2Zy ZWUocmVsYXRpb24tPnJkX2hvdGJsb2NraW5nYXR0cik7CisJYm1zX2ZyZWUocmVsYXRpb24t PnJkX2luZGV4ZWRhdHRyKTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0 dHIpOwogCWlmIChyZWxhdGlvbi0+cmRfcHViZGVzYykKIAkJcGZyZWUocmVsYXRpb24tPnJk X3B1YmRlc2MpOwpAQCAtNTI5MSw4ICs1MjkxLDggQEAgUmVsYXRpb25HZXRJbmRleFByZWRp Y2F0ZShSZWxhdGlvbiByZWxhdGlvbikKICAqCQkJCQkJCQkJKGJld2FyZTogZXZlbiBpZiBQ SyBpcyBkZWZlcnJhYmxlISkKICAqCUlOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWQlD b2x1bW5zIGluIHRoZSB0YWJsZSdzIHJlcGxpY2EgaWRlbnRpdHkKICAqCQkJCQkJCQkJaW5k ZXggKGVtcHR5IGlmIEZVTEwpCi0gKglJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcJ Q29sdW1ucyB0aGF0IGJsb2NrIHVwZGF0ZXMgZnJvbSBiZWluZyBIT1QKLSAqCUlOREVYX0FU VFJfQklUTUFQX1NVTU1BUklaRUQJQ29sdW1ucyBpbmNsdWRlZCBpbiBzdW1tYXJpemluZyBp bmRleGVzCisgKglJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVECQlDb2x1bW5zIHJlZmVyZW5j ZWQgYnkgaW5kZXhlcworICoJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRAlDb2x1bW5z IG9ubHkgaW5jbHVkZWQgaW4gc3VtbWFyaXppbmcgaW5kZXhlcwogICoKICAqIEF0dHJpYnV0 ZSBudW1iZXJzIGFyZSBvZmZzZXQgYnkgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51 bWJlciBzbyB0aGF0CiAgKiB3ZSBjYW4gaW5jbHVkZSBzeXN0ZW0gYXR0cmlidXRlcyAoZS5n LiwgT0lEKSBpbiB0aGUgYml0bWFwIHJlcHJlc2VudGF0aW9uLgpAQCAtNTMxNSw4ICs1MzE1 LDggQEAgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIElu ZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpCiAJQml0bWFwc2V0ICAqdWluZGV4YXR0cnM7 CS8qIGNvbHVtbnMgaW4gdW5pcXVlIGluZGV4ZXMgKi8KIAlCaXRtYXBzZXQgICpwa2luZGV4 YXR0cnM7CS8qIGNvbHVtbnMgaW4gdGhlIHByaW1hcnkgaW5kZXggKi8KIAlCaXRtYXBzZXQg ICppZGluZGV4YXR0cnM7CS8qIGNvbHVtbnMgaW4gdGhlIHJlcGxpY2EgaWRlbnRpdHkgKi8K LQlCaXRtYXBzZXQgICpob3RibG9ja2luZ2F0dHJzOwkvKiBjb2x1bW5zIHdpdGggSE9UIGJs b2NraW5nIGluZGV4ZXMgKi8KLQlCaXRtYXBzZXQgICpzdW1tYXJpemVkYXR0cnM7CS8qIGNv bHVtbnMgd2l0aCBzdW1tYXJpemluZyBpbmRleGVzICovCisJQml0bWFwc2V0ICAqaW5kZXhl ZGF0dHJzOwkvKiBjb2x1bW5zIHJlZmVyZW5jZWQgYnkgaW5kZXhlcyAqLworCUJpdG1hcHNl dCAgKnN1bW1hcml6ZWRhdHRyczsJLyogY29sdW1ucyBvbmx5IGluIHN1bW1hcml6aW5nIGlu ZGV4ZXMgKi8KIAlMaXN0CSAgICppbmRleG9pZGxpc3Q7CiAJTGlzdAkgICAqbmV3aW5kZXhv aWRsaXN0OwogCU9pZAkJCXJlbHBraW5kZXg7CkBAIC01MzM1LDggKzUzMzUsOCBAQCBSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwgSW5kZXhBdHRyQml0 bWFwS2luZCBhdHRyS2luZCkKIAkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX3Br YXR0cik7CiAJCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWToKIAkJCQly ZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX2lkYXR0cik7Ci0JCQljYXNlIElOREVYX0FU VFJfQklUTUFQX0hPVF9CTE9DS0lORzoKLQkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24t PnJkX2hvdGJsb2NraW5nYXR0cik7CisJCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lOREVY RUQ6CisJCQkJcmV0dXJuIGJtc19jb3B5KHJlbGF0aW9uLT5yZF9pbmRleGVkYXR0cik7CiAJ CQljYXNlIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQ6CiAJCQkJcmV0dXJuIGJtc19j b3B5KHJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0cik7CiAJCQlkZWZhdWx0OgpAQCAtNTM4 MSw3ICs1MzgxLDcgQEAgcmVzdGFydDoKIAl1aW5kZXhhdHRycyA9IE5VTEw7CiAJcGtpbmRl eGF0dHJzID0gTlVMTDsKIAlpZGluZGV4YXR0cnMgPSBOVUxMOwotCWhvdGJsb2NraW5nYXR0 cnMgPSBOVUxMOworCWluZGV4ZWRhdHRycyA9IE5VTEw7CiAJc3VtbWFyaXplZGF0dHJzID0g TlVMTDsKIAlmb3JlYWNoKGwsIGluZGV4b2lkbGlzdCkKIAl7CkBAIC01NDQxLDcgKzU0NDEs NyBAQCByZXN0YXJ0OgogCQlpZiAoaW5kZXhEZXNjLT5yZF9pbmRhbS0+YW1zdW1tYXJpemlu ZykKIAkJCWF0dHJzID0gJnN1bW1hcml6ZWRhdHRyczsKIAkJZWxzZQotCQkJYXR0cnMgPSAm aG90YmxvY2tpbmdhdHRyczsKKwkJCWF0dHJzID0gJmluZGV4ZWRhdHRyczsKIAogCQkvKiBD b2xsZWN0IHNpbXBsZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcyAqLwogCQlmb3IgKGkgPSAwOyBp IDwgaW5kZXhEZXNjLT5yZF9pbmRleC0+aW5kbmF0dHM7IGkrKykKQEAgLTU0NTAsOSArNTQ1 MCw5IEBAIHJlc3RhcnQ6CiAKIAkJCS8qCiAJCQkgKiBTaW5jZSB3ZSBoYXZlIGNvdmVyaW5n IGluZGV4ZXMgd2l0aCBub24ta2V5IGNvbHVtbnMsIHdlIG11c3QKLQkJCSAqIGhhbmRsZSB0 aGVtIGFjY3VyYXRlbHkgaGVyZS4gbm9uLWtleSBjb2x1bW5zIG11c3QgYmUgYWRkZWQgaW50 bwotCQkJICogaG90YmxvY2tpbmdhdHRycyBvciBzdW1tYXJpemVkYXR0cnMsIHNpbmNlIHRo ZXkgYXJlIGluIGluZGV4LAotCQkJICogYW5kIHVwZGF0ZSBzaG91bGRuJ3QgbWlzcyB0aGVt LgorCQkJICogaGFuZGxlIHRoZW0gYWNjdXJhdGVseSBoZXJlLiBOb24ta2V5IGNvbHVtbnMg bXVzdCBiZSBhZGRlZCBpbnRvCisJCQkgKiBpbmRleGVkYXR0cnMgb3Igc3VtbWFyaXplZGF0 dHJzLCBzaW5jZSB0aGV5IGFyZSBpbiBpbmRleCwgYW5kCisJCQkgKiB1cGRhdGUgc2hvdWxk bid0IG1pc3MgdGhlbS4KIAkJCSAqCiAJCQkgKiBTdW1tYXJpemluZyBpbmRleGVzIGRvIG5v dCBibG9jayBIT1QsIGJ1dCBkbyBuZWVkIHRvIGJlIHVwZGF0ZWQKIAkJCSAqIHdoZW4gdGhl IGNvbHVtbiB2YWx1ZSBjaGFuZ2VzLCB0aHVzIHJlcXVpcmUgYSBzZXBhcmF0ZQpAQCAtNTUx MywxMiArNTUxMywyMCBAQCByZXN0YXJ0OgogCQlibXNfZnJlZSh1aW5kZXhhdHRycyk7CiAJ CWJtc19mcmVlKHBraW5kZXhhdHRycyk7CiAJCWJtc19mcmVlKGlkaW5kZXhhdHRycyk7Ci0J CWJtc19mcmVlKGhvdGJsb2NraW5nYXR0cnMpOworCQlibXNfZnJlZShpbmRleGVkYXR0cnMp OwogCQlibXNfZnJlZShzdW1tYXJpemVkYXR0cnMpOwogCiAJCWdvdG8gcmVzdGFydDsKIAl9 CiAKKwkvKgorCSAqIFJlY29yZCB3aGF0IGF0dHJpYnV0ZXMgYXJlIG9ubHkgcmVmZXJlbmNl ZCBieSBzdW1tYXJpemluZyBpbmRleGVzLiBUaGVuCisJICogYWRkIHRoYXQgaW50byB0aGUg b3RoZXIgaW5kZXhlZCBhdHRyaWJ1dGVzIHRvIHRyYWNrIGFsbCByZWZlcmVuY2VkCisJICog YXR0cmlidXRlcy4KKwkgKi8KKwlzdW1tYXJpemVkYXR0cnMgPSBibXNfZGVsX21lbWJlcnMo c3VtbWFyaXplZGF0dHJzLCBpbmRleGVkYXR0cnMpOworCWluZGV4ZWRhdHRycyA9IGJtc19h ZGRfbWVtYmVycyhpbmRleGVkYXR0cnMsIHN1bW1hcml6ZWRhdHRycyk7CisKIAkvKiBEb24n dCBsZWFrIHRoZSBvbGQgdmFsdWVzIG9mIHRoZXNlIGJpdG1hcHMsIGlmIGFueSAqLwogCXJl bGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0gZmFsc2U7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJk X2tleWF0dHIpOwpAQCAtNTUyNyw4ICs1NTM1LDggQEAgcmVzdGFydDoKIAlyZWxhdGlvbi0+ cmRfcGthdHRyID0gTlVMTDsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfaWRhdHRyKTsKIAly ZWxhdGlvbi0+cmRfaWRhdHRyID0gTlVMTDsKLQlibXNfZnJlZShyZWxhdGlvbi0+cmRfaG90 YmxvY2tpbmdhdHRyKTsKLQlyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyID0gTlVMTDsK KwlibXNfZnJlZShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIpOworCXJlbGF0aW9uLT5yZF9p bmRleGVkYXR0ciA9IE5VTEw7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX3N1bW1hcml6ZWRh dHRyKTsKIAlyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIgPSBOVUxMOwogCkBAIC01NTQz LDcgKzU1NTEsNyBAQCByZXN0YXJ0OgogCXJlbGF0aW9uLT5yZF9rZXlhdHRyID0gYm1zX2Nv cHkodWluZGV4YXR0cnMpOwogCXJlbGF0aW9uLT5yZF9wa2F0dHIgPSBibXNfY29weShwa2lu ZGV4YXR0cnMpOwogCXJlbGF0aW9uLT5yZF9pZGF0dHIgPSBibXNfY29weShpZGluZGV4YXR0 cnMpOwotCXJlbGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIgPSBibXNfY29weShob3RibG9j a2luZ2F0dHJzKTsKKwlyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIgPSBibXNfY29weShpbmRl eGVkYXR0cnMpOwogCXJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0ciA9IGJtc19jb3B5KHN1 bW1hcml6ZWRhdHRycyk7CiAJcmVsYXRpb24tPnJkX2F0dHJzdmFsaWQgPSB0cnVlOwogCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwpAQCAtNTU1Nyw4ICs1NTY1LDggQEAgcmVz dGFydDoKIAkJCXJldHVybiBwa2luZGV4YXR0cnM7CiAJCWNhc2UgSU5ERVhfQVRUUl9CSVRN QVBfSURFTlRJVFlfS0VZOgogCQkJcmV0dXJuIGlkaW5kZXhhdHRyczsKLQkJY2FzZSBJTkRF WF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkc6Ci0JCQlyZXR1cm4gaG90YmxvY2tpbmdhdHRy czsKKwkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEOgorCQkJcmV0dXJuIGluZGV4 ZWRhdHRyczsKIAkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEOgogCQkJcmV0 dXJuIHN1bW1hcml6ZWRhdHRyczsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRl eCA1MTc2NDc4YzI5NS4uMmRiZmFkOTIxMTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTM4 NSwxMSArMzg1LDEwIEBAIGV4dGVybiBUTV9SZXN1bHQgaGVhcF9kZWxldGUoUmVsYXRpb24g cmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogZXh0ZXJuIHZvaWQgaGVh cF9maW5pc2hfc3BlY3VsYXRpdmUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqdGlkKTsKIGV4dGVybiB2b2lkIGhlYXBfYWJvcnRfc3BlY3VsYXRpdmUoUmVs YXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKTsKIGV4dGVybiBU TV9SZXN1bHQgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqb3RpZCwKLQkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCwKLQkJCQkJCQkgQ29t bWFuZElkIGNpZCwgdWludDMyIG9wdGlvbnMsCisJCQkJCQkJIEhlYXBUdXBsZSBuZXd0dXAs IENvbW1hbmRJZCBjaWQsIHVpbnQzMiBvcHRpb25zLAogCQkJCQkJCSBTbmFwc2hvdCBjcm9z c2NoZWNrLCBib29sIHdhaXQsCi0JCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2Nr VHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCQkJCQkgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRl X2luZGV4ZXMpOworCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgY29uc3QgTG9ja1R1 cGxlTW9kZSBsb2NrbW9kZSwKKwkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9p ZHhfYXR0cnMsIGNvbnN0IGJvb2wgaG90X2FsbG93ZWQpOwogZXh0ZXJuIFRNX1Jlc3VsdCBo ZWFwX2xvY2tfdHVwbGUoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXBsZSwKIAkJ CQkJCQkJIENvbW1hbmRJZCBjaWQsIExvY2tUdXBsZU1vZGUgbW9kZSwgTG9ja1dhaXRQb2xp Y3kgd2FpdF9wb2xpY3ksCiAJCQkJCQkJCSBib29sIGZvbGxvd191cGRhdGVzLApAQCAtNDY0 LDYgKzQ2MywxMiBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJICBPZmZzZXROdW1i ZXIgKmRlYWQsIGludCBuZGVhZCwKIAkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICp1bnVzZWQs IGludCBudW51c2VkKTsKIAorLyogaW4gaGVhcC9oZWFwYW0uYyAqLworZXh0ZXJuIGJvb2wg SGVhcFVwZGF0ZUhvdEFsbG93YWJsZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFw c2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCisJCQkJCQkJCSAgIGJvb2wgKnN1bW1hcml6ZWRf b25seSk7CitleHRlcm4gTG9ja1R1cGxlTW9kZSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21v ZGUoUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICpt b2RpZmllZF9pZHhfYXR0cnMpOworCiAvKiBpbiBoZWFwL3ZhY3V1bWxhenkuYyAqLwogZXh0 ZXJuIHZvaWQgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQljb25zdCBW YWN1dW1QYXJhbXMgKnBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IGYyYzM2Njk2YmNhLi5hOTc3OGIzNTI4ZCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC01ODYsNiArNTg2LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg VGFibGVBbVJvdXRpbmUKIAkJCQkJCQkJIGJvb2wgd2FpdCwKIAkJCQkJCQkJIFRNX0ZhaWx1 cmVEYXRhICp0bWZkLAogCQkJCQkJCQkgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCisJCQkJ CQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywKIAkJCQkJCQkJIFRV X1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsKIAogCS8qIHNlZSB0YWJsZV90dXBs ZV9sb2NrKCkgZm9yIHJlZmVyZW5jZSBhYm91dCBwYXJhbWV0ZXJzICovCkBAIC0xNTk5LDEy ICsxNjAwLDEyIEBAIHRhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2lu dGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCSAgIENvbW1hbmRJZCBjaWQs IHVpbnQzMiBvcHRpb25zLAogCQkJCSAgIFNuYXBzaG90IHNuYXBzaG90LCBTbmFwc2hvdCBj cm9zc2NoZWNrLAogCQkJCSAgIGJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsIExv Y2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJCSAgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0 ZV9pbmRleGVzKQorCQkJCSAgIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJz LCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlyZXR1cm4gcmVsLT5y ZF90YWJsZWFtLT50dXBsZV91cGRhdGUocmVsLCBvdGlkLCBzbG90LAogCQkJCQkJCQkJCSBj aWQsIG9wdGlvbnMsIHNuYXBzaG90LCBjcm9zc2NoZWNrLAotCQkJCQkJCQkJCSB3YWl0LCB0 bWZkLAotCQkJCQkJCQkJCSBsb2NrbW9kZSwgdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQkJ CSB3YWl0LCB0bWZkLCBsb2NrbW9kZSwKKwkJCQkJCQkJCQkgbW9kaWZpZWRfaWR4X2F0dHJz LCB1cGRhdGVfaW5kZXhlcyk7CiB9CiAKIC8qCkBAIC0yMDg5LDYgKzIwOTAsNyBAQCBleHRl cm4gdm9pZCBzaW1wbGVfdGFibGVfdHVwbGVfZGVsZXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBv aW50ZXIgdGlkLAogCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCk7CiBleHRlcm4gdm9p ZCBzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIg b3RpZCwKIAkJCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIFNuYXBzaG90IHNuYXBz aG90LAorCQkJCQkJCQkJICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywK IAkJCQkJCQkJCSAgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpOwogCiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IDE3OThlNjAyN2Q0Li4xNjY2MWJjNjZkOSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVk ZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2Mu aCIKICNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAj aW5jbHVkZSAibm9kZXMvbG9ja29wdGlvbnMuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5v ZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTYxNSw2ICs2MTYsMTAg QEAgZXh0ZXJuIFR1cGxlRGVzYyBFeGVjQ2xlYW5UeXBlRnJvbVRMKExpc3QgKnRhcmdldExp c3QpOwogZXh0ZXJuIFR1cGxlRGVzYyBFeGVjVHlwZUZyb21FeHByTGlzdChMaXN0ICpleHBy TGlzdCk7CiBleHRlcm4gdm9pZCBFeGVjVHlwZVNldENvbE5hbWVzKFR1cGxlRGVzYyB0eXBl SW5mbywgTGlzdCAqbmFtZXNMaXN0KTsKIGV4dGVybiB2b2lkIFVwZGF0ZUNoYW5nZWRQYXJh bVNldChQbGFuU3RhdGUgKm5vZGUsIEJpdG1hcHNldCAqbmV3Y2hnKTsKK2V4dGVybiBCaXRt YXBzZXQgKkV4ZWNDb21wYXJlU2xvdEF0dHJzKEJpdG1hcHNldCAqYXR0cnMsCisJCQkJCQkJ CQkgICBUdXBsZURlc2MgdHVwZGVzYywKKwkJCQkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpv bGRfdHRzLAorCQkJCQkJCQkJICAgVHVwbGVUYWJsZVNsb3QgKm5ld190dHMpOwogCiB0eXBl ZGVmIHN0cnVjdCBUdXBPdXRwdXRTdGF0ZQogewpAQCAtODE0LDUgKzgxOSw4IEBAIGV4dGVy biBSZXN1bHRSZWxJbmZvICpFeGVjTG9va3VwUmVzdWx0UmVsQnlPaWQoTW9kaWZ5VGFibGVT dGF0ZSAqbm9kZSwKIAkJCQkJCQkJCQkJICAgT2lkIHJlc3VsdG9pZCwKIAkJCQkJCQkJCQkJ ICAgYm9vbCBtaXNzaW5nX29rLAogCQkJCQkJCQkJCQkgICBib29sIHVwZGF0ZV9jYWNoZSk7 CitleHRlcm4gQml0bWFwc2V0ICpFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhSZXN1bHRS ZWxJbmZvICpyZWxpbmZvLAorCQkJCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKm9sZF90dHMs CisJCQkJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cyk7CiAKICNlbmRpZgkJCQkJ CQkvKiBFWEVDVVRPUl9IICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVs LmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCBmYTA3ZWJmOGZmNy4uMWVmNWMx NDY1YzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0xNjIsNyArMTYyLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg UmVsYXRpb25EYXRhCiAJQml0bWFwc2V0ICAqcmRfa2V5YXR0cjsJCS8qIGNvbHMgdGhhdCBj YW4gYmUgcmVmJ2QgYnkgZm9yZWlnbiBrZXlzICovCiAJQml0bWFwc2V0ICAqcmRfcGthdHRy OwkJLyogY29scyBpbmNsdWRlZCBpbiBwcmltYXJ5IGtleSAqLwogCUJpdG1hcHNldCAgKnJk X2lkYXR0cjsJCS8qIGluY2x1ZGVkIGluIHJlcGxpY2EgaWRlbnRpdHkgaW5kZXggKi8KLQlC aXRtYXBzZXQgICpyZF9ob3RibG9ja2luZ2F0dHI7IC8qIGNvbHMgYmxvY2tpbmcgSE9UIHVw ZGF0ZSAqLworCUJpdG1hcHNldCAgKnJkX2luZGV4ZWRhdHRyOyAvKiBhbGwgY29scyByZWZl cmVuY2VkIGJ5IGluZGV4ZXMgKi8KIAlCaXRtYXBzZXQgICpyZF9zdW1tYXJpemVkYXR0cjsJ LyogY29scyBpbmRleGVkIGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMgKi8KIAogCVB1YmxpY2F0 aW9uRGVzYyAqcmRfcHViZGVzYzsJLyogcHVibGljYXRpb24gZGVzY3JpcHRvciwgb3IgTlVM TCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaCBiL3NyYy9p bmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKaW5kZXggODljMjdhYTE1MjkuLjg5Nzg4MDkxNTc2 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKQEAgLTcwLDcgKzcwLDcgQEAgdHlwZWRlZiBlbnVt IEluZGV4QXR0ckJpdG1hcEtpbmQKIAlJTkRFWF9BVFRSX0JJVE1BUF9LRVksCiAJSU5ERVhf QVRUUl9CSVRNQVBfUFJJTUFSWV9LRVksCiAJSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlf S0VZLAotCUlOREVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lORywKKwlJTkRFWF9BVFRSX0JJ VE1BUF9JTkRFWEVELAogCUlOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQsCiB9IEluZGV4 QXR0ckJpdG1hcEtpbmQ7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9leHBlY3RlZC9zeXNjYWNoZS11cGRhdGUtcHJ1bmVkLm91dCBiL3NyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9zeXNjYWNoZS11cGRhdGUt cHJ1bmVkLm91dAppbmRleCBhNmE0ZThkYjk5Ni4uMDdlZjY3YTFlYjQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9zeXNjYWNoZS11 cGRhdGUtcHJ1bmVkLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvZXhwZWN0ZWQvc3lzY2FjaGUtdXBkYXRlLXBydW5lZC5vdXQKQEAgLTE2LDggKzE2LDgg QEAgc3RlcCB3YWtlaW52YWw0Ogogc3RlcCBhdDI6IDwuLi4gY29tcGxldGVkPgogc3RlcCB3 YWtlaW52YWw0OiA8Li4uIGNvbXBsZXRlZD4KIHN0ZXAgd2FrZWdyYW50NDogCi0JU0VMRUNU IEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4n KTsKLQlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaGVhcF91cGRhdGUt YmVmb3JlLXBpbicpOworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdz aW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOworCVNFTEVDVCBGUk9NIGluamVjdGlv bl9wb2ludHNfd2FrZXVwKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOwogIDx3 YWl0aW5nIC4uLj4KIHN0ZXAgZ3JhbnQxOiA8Li4uIGNvbXBsZXRlZD4KIEVSUk9SOiAgdHVw bGUgY29uY3VycmVudGx5IGRlbGV0ZWQKQEAgLTQyLDggKzQyLDggQEAgc3RlcCBta3JlbHM0 OgogCVNFTEVDVCBGUk9NIHZhY3Rlc3QubWtyZWxzKCdpbnRydWRlcicsIDEsIDEwMCk7ICAt LSByZXBvcHVsYXRlIExQX1VOVVNFRAogCiBzdGVwIHdha2VncmFudDQ6IAotCVNFTEVDVCBG Uk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7 Ci0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2hlYXBfdXBkYXRlLWJl Zm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnc2lt cGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25f cG9pbnRzX3dha2V1cCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKICA8d2Fp dGluZyAuLi4+CiBzdGVwIGdyYW50MTogPC4uLiBjb21wbGV0ZWQ+CiBFUlJPUjogIGR1cGxp Y2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgInBnX2NsYXNzX29p ZF9pbmRleCIKQEAgLTcxLDggKzcxLDggQEAgc3RlcCBhdDI6IDwuLi4gY29tcGxldGVkPgog c3RlcCB3YWtlaW52YWw0OiA8Li4uIGNvbXBsZXRlZD4KIHN0ZXAgYXQ0OiBBTFRFUiBUQUJM RSB2YWN0ZXN0LmNoaWxkNTAgSU5IRVJJVCB2YWN0ZXN0Lm9yaWc1MDsKIHN0ZXAgd2FrZWdy YW50NDogCi0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfdXBk YXRlLWJlZm9yZS1waW4nKTsKLQlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX3dha2V1 cCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9w b2ludHNfZGV0YWNoKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOworCVNFTEVD VCBGUk9NIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVm b3JlLXBpbicpOwogIDx3YWl0aW5nIC4uLj4KIHN0ZXAgZ3JhbnQxOiA8Li4uIGNvbXBsZXRl ZD4KIHN0ZXAgd2FrZWdyYW50NDogPC4uLiBjb21wbGV0ZWQ+CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3Mvc3lzY2FjaGUtdXBkYXRlLXBy dW5lZC5zcGVjIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3N5 c2NhY2hlLXVwZGF0ZS1wcnVuZWQuc3BlYwppbmRleCBlM2E0Mjk1YmQxMi4uZmVmOWFjODk1 YTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVj cy9zeXNjYWNoZS11cGRhdGUtcHJ1bmVkLnNwZWMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL3NwZWNzL3N5c2NhY2hlLXVwZGF0ZS1wcnVuZWQuc3BlYwpAQCAt MTAzLDcgKzEwMyw3IEBAIHNlc3Npb24gczEKIHNldHVwCXsKIAlTRVQgZGVidWdfZGlzY2Fy ZF9jYWNoZXMgPSAwOwogCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2Fs KCk7Ci0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfdXBkYXRl LWJlZm9yZS1waW4nLCAnd2FpdCcpOworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNf YXR0YWNoKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicsICd3YWl0Jyk7CiB9CiBz dGVwIGNhY2hlZmlsbDEJeyBTRUxFQ1QgRlJPTSB2YWN0ZXN0LnJlbG9pZF9jYXRjYWNoZV9z ZXQoJ3ZhY3Rlc3Qub3JpZzUwJyk7IH0KIHN0ZXAgZ3JhbnQxCXsgR1JBTlQgU0VMRUNUIE9O IHZhY3Rlc3Qub3JpZzUwIFRPIFBVQkxJQzsgfQpAQCAtMTQwLDggKzE0MCw4IEBAIHN0ZXAg bWtyZWxzNAl7CiAJU0VMRUNUIEZST00gdmFjdGVzdC5ta3JlbHMoJ2ludHJ1ZGVyJywgMSwg MTAwKTsgIC0tIHJlcG9wdWxhdGUgTFBfVU5VU0VECiB9CiBzdGVwIHdha2VncmFudDQJewot CVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3VwZGF0ZS1iZWZv cmUtcGluJyk7Ci0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2hlYXBf dXBkYXRlLWJlZm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2Rl dGFjaCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBp bmplY3Rpb25fcG9pbnRzX3dha2V1cCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4n KTsKIH0KIHN0ZXAgYXQ0CXsgQUxURVIgVEFCTEUgdmFjdGVzdC5jaGlsZDUwIElOSEVSSVQg dmFjdGVzdC5vcmlnNTA7IH0KIHN0ZXAgd2FrZWludmFsNAl7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFsLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0CmluZGV4IDAxZWUyOWZl ZTEwLi5hN2EyNDYzZTU0ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQKQEAgLTI4Nyw3ICsyODcsNyBAQCBERVRBSUw6ICBD b2x1bW4gImIiIGlzIGEgZ2VuZXJhdGVkIGNvbHVtbi4KIElOU0VSVCBJTlRPIGd0ZXN0MXYg VkFMVUVTICg4LCBERUZBVUxUKSwgKDksIERFRkFVTFQpOyAgLS0gZXJyb3IKIEVSUk9SOiAg Y2Fubm90IGluc2VydCBhIG5vbi1ERUZBVUxUIHZhbHVlIGludG8gY29sdW1uICJiIgogREVU QUlMOiAgQ29sdW1uICJiIiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4uCi1TRUxFQ1QgKiBGUk9N IGd0ZXN0MXY7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MXYgT1JERVIgQlkgYTsKICBhIHwgYiAg CiAtLS0rLS0tLQogIDMgfCAgNgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC90cmlnZ2Vycy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyaWdnZXJz Lm91dAppbmRleCA4ZmNiMzNhYzgxYS4uMDBlYmUzMDU4NzUgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0CkBAIC05NTksMTYgKzk1OSwyNCBAQCBOT1RJQ0U6 ICBtYWluX3ZpZXcgQkVGT1JFIFVQREFURSBTVEFURU1FTlQgKGJlZm9yZV92aWV3X3VwZF9z dG10KQogTk9USUNFOiAgbWFpbl92aWV3IEFGVEVSIFVQREFURSBTVEFURU1FTlQgKGFmdGVy X3ZpZXdfdXBkX3N0bXQpCiBVUERBVEUgMAogLS0gRGVsZXRlIGZyb20gdmlldyB1c2luZyB0 cmlnZ2VyCi1ERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSBJTiAoMjAsMjEpOworREVM RVRFIEZST00gbWFpbl92aWV3IFdIRVJFIGEgPSAyMCBBTkQgYiA9IDMxOwogTk9USUNFOiAg bWFpbl92aWV3IEJFRk9SRSBERUxFVEUgU1RBVEVNRU5UIChiZWZvcmVfdmlld19kZWxfc3Rt dCkKIE5PVElDRTogIG1haW5fdmlldyBJTlNURUFEIE9GIERFTEVURSBST1cgKGluc3RlYWRf b2ZfZGVsKQotTk9USUNFOiAgT0xEOiAoMjEsMTApCi1OT1RJQ0U6ICBtYWluX3ZpZXcgSU5T VEVBRCBPRiBERUxFVEUgUk9XIChpbnN0ZWFkX29mX2RlbCkKIE5PVElDRTogIE9MRDogKDIw LDMxKQorTk9USUNFOiAgbWFpbl92aWV3IEFGVEVSIERFTEVURSBTVEFURU1FTlQgKGFmdGVy X3ZpZXdfZGVsX3N0bXQpCitERUxFVEUgMQorREVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJF IGEgPSAyMSBBTkQgYiA9IDEwOworTk9USUNFOiAgbWFpbl92aWV3IEJFRk9SRSBERUxFVEUg U1RBVEVNRU5UIChiZWZvcmVfdmlld19kZWxfc3RtdCkKK05PVElDRTogIG1haW5fdmlldyBJ TlNURUFEIE9GIERFTEVURSBST1cgKGluc3RlYWRfb2ZfZGVsKQorTk9USUNFOiAgT0xEOiAo MjEsMTApCitOT1RJQ0U6ICBtYWluX3ZpZXcgQUZURVIgREVMRVRFIFNUQVRFTUVOVCAoYWZ0 ZXJfdmlld19kZWxfc3RtdCkKK0RFTEVURSAxCitERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hF UkUgYSA9IDIxIEFORCBiID0gMzI7CitOT1RJQ0U6ICBtYWluX3ZpZXcgQkVGT1JFIERFTEVU RSBTVEFURU1FTlQgKGJlZm9yZV92aWV3X2RlbF9zdG10KQogTk9USUNFOiAgbWFpbl92aWV3 IElOU1RFQUQgT0YgREVMRVRFIFJPVyAoaW5zdGVhZF9vZl9kZWwpCiBOT1RJQ0U6ICBPTEQ6 ICgyMSwzMikKIE5PVElDRTogIG1haW5fdmlldyBBRlRFUiBERUxFVEUgU1RBVEVNRU5UIChh ZnRlcl92aWV3X2RlbF9zdG10KQotREVMRVRFIDMKK0RFTEVURSAxCiBERUxFVEUgRlJPTSBt YWluX3ZpZXcgV0hFUkUgYSA9IDMxIFJFVFVSTklORyBhLCBiOwogTk9USUNFOiAgbWFpbl92 aWV3IEJFRk9SRSBERUxFVEUgU1RBVEVNRU5UIChiZWZvcmVfdmlld19kZWxfc3RtdCkKIE5P VElDRTogIG1haW5fdmlldyBJTlNURUFEIE9GIERFTEVURSBST1cgKGluc3RlYWRfb2ZfZGVs KQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90c2VhcmNoLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHNlYXJjaC5vdXQKaW5kZXggNWI3YzIxMjNm MzcuLjZkYzE5M2YwMmQ2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3RzZWFyY2gub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHNlYXJjaC5v dXQKQEAgLTI0OTMsNyArMjQ5Myw4IEBAIFNFTEVDVCB0b190c3F1ZXJ5KCdTS0lFUyAmIE15 IHwgYm9vS3MnKTsKICAnc2t5JyB8ICdib29rJwogKDEgcm93KQogCi0tLXRyaWdnZXIKKy0t IHRzdmVjdG9yX3VwZGF0ZV90cmlnZ2VyKCkgdXNlcyBoZWFwX21vZGlmeV90dXBsZSgpIHRv IHNldCBjb2x1bW4gJ2EnCistLSB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIGV4ZWN1dG9y J3MgU0VULWNsYXVzZSB0cmFja2luZy4KIENSRUFURSBUUklHR0VSIHRzdmVjdG9ydXBkYXRl CiBCRUZPUkUgVVBEQVRFIE9SIElOU0VSVCBPTiB0ZXN0X3RzdmVjdG9yCiBGT1IgRUFDSCBS T1cgRVhFQ1VURSBQUk9DRURVUkUgdHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXIoYSwgJ3BnX2Nh dGFsb2cuZW5nbGlzaCcsIHQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC91cGRhdGFibGVfdmlld3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91 cGRhdGFibGVfdmlld3Mub3V0CmluZGV4IDdiMDBjNzQyNzc2Li5jZDZlNzFhYzQ5MCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dApA QCAtMzcyLDE1ICszNzIsMTUgQEAgSU5TRVJUIElOVE8gcndfdmlldzE2IChhLCBiKSBWQUxV RVMgKDMsICdSb3cgMycpOyAtLSBzaG91bGQgYmUgT0sKIFVQREFURSByd192aWV3MTYgU0VU IGE9MywgYWE9LTMgV0hFUkUgYT0zOyAtLSBzaG91bGQgZmFpbAogRVJST1I6ICBtdWx0aXBs ZSBhc3NpZ25tZW50cyB0byBzYW1lIGNvbHVtbiAiYSIKIFVQREFURSByd192aWV3MTYgU0VU IGFhPS0zIFdIRVJFIGE9MzsgLS0gc2hvdWxkIGJlIE9LCi1TRUxFQ1QgKiBGUk9NIGJhc2Vf dGJsOworU0VMRUNUICogRlJPTSBiYXNlX3RibCBPUkRFUiBCWSBhOwogIGEgIHwgICBiICAg IAogLS0tLSstLS0tLS0tLQorIC0zIHwgUm93IDMKICAtMiB8IFJvdyAtMgogIC0xIHwgUm93 IC0xCiAgIDAgfCBSb3cgMAogICAxIHwgUm93IDEKICAgMiB8IFJvdyAyCi0gLTMgfCBSb3cg MwogKDYgcm93cykKIAogREVMRVRFIEZST00gcndfdmlldzE2IFdIRVJFIGE9LTM7IC0tIHNo b3VsZCBiZSBPSwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVk X3ZpcnR1YWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3ZpcnR1YWwu c3FsCmluZGV4IDBjYjE0ZWIwZTM2Li5iYzkxNzQyYTQ5MiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3ZpcnR1YWwuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbApAQCAtMTI3LDcgKzEyNyw3IEBAIEFM VEVSIFZJRVcgZ3Rlc3QxdiBBTFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCAxMDA7CiBJTlNF UlQgSU5UTyBndGVzdDF2IFZBTFVFUyAoOCwgREVGQVVMVCk7ICAtLSBlcnJvcgogSU5TRVJU IElOVE8gZ3Rlc3QxdiBWQUxVRVMgKDgsIERFRkFVTFQpLCAoOSwgREVGQVVMVCk7ICAtLSBl cnJvcgogCi1TRUxFQ1QgKiBGUk9NIGd0ZXN0MXY7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MXYg T1JERVIgQlkgYTsKIERFTEVURSBGUk9NIGd0ZXN0MXYgV0hFUkUgYSA+PSA1OwogRFJPUCBW SUVXIGd0ZXN0MXY7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdn ZXJzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdnZXJzLnNxbAppbmRleCAyMjg1 ZTkwMTEwZS4uMTljMjU3MjIwMWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3RyaWdnZXJzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90cmlnZ2Vycy5zcWwK QEAgLTY2MCw3ICs2NjAsOSBAQCBVUERBVEUgbWFpbl92aWV3IFNFVCBiID0gMzIgV0hFUkUg YSA9IDIxIEFORCBiID0gMzEgUkVUVVJOSU5HIGEsIGI7CiBVUERBVEUgbWFpbl92aWV3IFNF VCBiID0gMCBXSEVSRSBmYWxzZTsKIAogLS0gRGVsZXRlIGZyb20gdmlldyB1c2luZyB0cmln Z2VyCi1ERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSBJTiAoMjAsMjEpOworREVMRVRF IEZST00gbWFpbl92aWV3IFdIRVJFIGEgPSAyMCBBTkQgYiA9IDMxOworREVMRVRFIEZST00g bWFpbl92aWV3IFdIRVJFIGEgPSAyMSBBTkQgYiA9IDEwOworREVMRVRFIEZST00gbWFpbl92 aWV3IFdIRVJFIGEgPSAyMSBBTkQgYiA9IDMyOwogREVMRVRFIEZST00gbWFpbl92aWV3IFdI RVJFIGEgPSAzMSBSRVRVUk5JTkcgYSwgYjsKIAogXHNldCBRVUlFVCB0cnVlCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90c2VhcmNoLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3RzZWFyY2guc3FsCmluZGV4IDhiM2Q3MDBmNTdjLi4wOTQxODFlNzc2NCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHNlYXJjaC5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvdHNlYXJjaC5zcWwKQEAgLTc2MCw3ICs3NjAsOCBAQCBTRUxFQ1Qg dG9fdHN2ZWN0b3IoJ1NLSUVTIE15IGJvb0tzJyk7CiBTRUxFQ1QgcGxhaW50b190c3F1ZXJ5 KCdTS0lFUyBNeSBib29LcycpOwogU0VMRUNUIHRvX3RzcXVlcnkoJ1NLSUVTICYgTXkgfCBi b29LcycpOwogCi0tLXRyaWdnZXIKKy0tIHRzdmVjdG9yX3VwZGF0ZV90cmlnZ2VyKCkgdXNl cyBoZWFwX21vZGlmeV90dXBsZSgpIHRvIHNldCBjb2x1bW4gJ2EnCistLSB3aXRob3V0IGdv aW5nIHRocm91Z2ggdGhlIGV4ZWN1dG9yJ3MgU0VULWNsYXVzZSB0cmFja2luZy4KIENSRUFU RSBUUklHR0VSIHRzdmVjdG9ydXBkYXRlCiBCRUZPUkUgVVBEQVRFIE9SIElOU0VSVCBPTiB0 ZXN0X3RzdmVjdG9yCiBGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHN2ZWN0b3Jf dXBkYXRlX3RyaWdnZXIoYSwgJ3BnX2NhdGFsb2cuZW5nbGlzaCcsIHQpOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwKaW5kZXggNGE2MDEyNmVjOTAuLjAx NzAwNDBjMDk4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVf dmlld3Muc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5z cWwKQEAgLTEyNSw3ICsxMjUsNyBAQCBJTlNFUlQgSU5UTyByd192aWV3MTYgVkFMVUVTICgz LCAnUm93IDMnLCAzKTsgLS0gc2hvdWxkIGZhaWwKIElOU0VSVCBJTlRPIHJ3X3ZpZXcxNiAo YSwgYikgVkFMVUVTICgzLCAnUm93IDMnKTsgLS0gc2hvdWxkIGJlIE9LCiBVUERBVEUgcndf dmlldzE2IFNFVCBhPTMsIGFhPS0zIFdIRVJFIGE9MzsgLS0gc2hvdWxkIGZhaWwKIFVQREFU RSByd192aWV3MTYgU0VUIGFhPS0zIFdIRVJFIGE9MzsgLS0gc2hvdWxkIGJlIE9LCi1TRUxF Q1QgKiBGUk9NIGJhc2VfdGJsOworU0VMRUNUICogRlJPTSBiYXNlX3RibCBPUkRFUiBCWSBh OwogREVMRVRFIEZST00gcndfdmlldzE2IFdIRVJFIGE9LTM7IC0tIHNob3VsZCBiZSBPSwog LS0gUmVhZC1vbmx5IHZpZXdzCiBJTlNFUlQgSU5UTyByb192aWV3MTcgVkFMVUVTICgzLCAn Uk9XIDMnKTsKLS0gCjIuNTAuMQoK --98b017876237f005fe98a17b40ccb28dde987108 Content-Disposition: attachment; filename*0="v48-0003-Add-the-HOT-indexed-on-disk-format-inline-attr-b.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v48-0003-Add-the-HOT-indexed-on-disk-format-inline-attr-b.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAxM2ZiNDYxZDYwZDdiODk5OTdhOTRiYzI3MDhkY2I0YmE2M2IyNzdiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAxNzoxNDo0NCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ4IDMv OV0gQWRkIHRoZSBIT1QtaW5kZXhlZCBvbi1kaXNrIGZvcm1hdDogaW5saW5lIGF0dHIKIGJp dG1hcCBhbmQgc3R1YnMKCkRlZmluZSB0aGUgb24tZGlzayByZXByZXNlbnRhdGlvbiBhIEhP VC1pbmRleGVkIHVwZGF0ZSBhbmQgaXRzIGxhdGVyCnBydW5lL2NvbGxhcHNlIHByb2R1Y2Us IGFoZWFkIG9mIHRoZSBjb2RlIHRoYXQgcmVhZHMgb3Igd3JpdGVzIGl0OgoKLSBIRUFQX0lO REVYRURfVVBEQVRFRCAoaHR1cF9kZXRhaWxzLmgpLCB0aGUgdF9pbmZvbWFzazIgYml0IG1h cmtpbmcgYQogIGhlYXAtb25seSB0dXBsZSB3aG9zZSBwcm9kdWNpbmcgVVBEQVRFIGFsc28g Y2hhbmdlZCBhbiBpbmRleGVkIGNvbHVtbjsgYW5kCi0gYWNjZXNzL2hvdF9pbmRleGVkLmgs IHRoZSBpbmxpbmUgZml4ZWQtc2l6ZSBtb2RpZmllZC1hdHRycyBiaXRtYXAgc3RvcmVkIGlu CiAgdGhlIHRhaWwgb2Ygc3VjaCBhIHR1cGxlLCBwbHVzIHRoZSB4aWQtZnJlZSAiY29sbGFw c2Utc3Vydml2b3Igc3R1YiIgZm9ybWF0CiAgKEhFQVBfSU5ERVhFRF9VUERBVEVEIHdpdGgg bmF0dHMgPT0gMCwgYSBmb3J3YXJkIGxpbmssIGFuZCB0aGUgc2VnbWVudCdzCiAgYml0bWFw KSBhbmQgdGhlIGFjY2Vzc29ycyBib3RoIHNoYXJlLgoKUkVBRE1FLkhPVC1JTkRFWEVEIGlu dHJvZHVjZXMgdGhlIGRlc2lnbiBhbmQgdGhlIHJlbGF4ZWQgY2xhc3NpYy1IT1QKaW52YXJp YW50OyBsYXRlciBjb21taXRzIGRvY3VtZW50IHRoZSBlbGlnaWJpbGl0eSwgd3JpdGUsIHJl YWQsIGFuZApwcnVuZS9jb2xsYXBzZSBtYWNoaW5lcnkgaW4gdGhlaXIgb3duIHNlY3Rpb25z LgoKQ28tYXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpDby1hdXRob3Jl ZC1ieTogTmF0aGFuIEJvc3NhcnQgPG5hdGhhbmRib3NzYXJ0QGdtYWlsLmNvbT4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgfCAgNTYgKysrKysr CiBzcmMvaW5jbHVkZS9hY2Nlc3MvaG90X2luZGV4ZWQuaCAgICAgICAgICAgfCAxOTkgKysr KysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaHR1cF9kZXRhaWxzLmgg ICAgICAgICAgfCAgIDggKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjYyIGluc2VydGlvbnMoKyks IDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9SRUFETUUuSE9ULUlOREVYRUQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVk ZS9hY2Nlc3MvaG90X2luZGV4ZWQuaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JF QURNRS5IT1QtSU5ERVhFRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNGI3MDFlNDI1ODYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9SRUFETUUuSE9ULUlOREVYRUQKQEAgLTAsMCArMSw1NiBAQAorSE9ULWluZGV4ZWQg dXBkYXRlcyAoU2VsZWN0aXZlIEluZGV4IFVwZGF0ZSwgIkhPVC9TSVUiKQorPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDbGFz c2ljIEhPVCAoc2VlIFJFQURNRS5IT1QpIGtlZXBzIGFuIFVQREFURSBvZmYgdGhlIGluZGV4 ZXMgb25seSB3aGVuIG5vCitpbmRleGVkIGNvbHVtbiBjaGFuZ2VkOiB0aGUgbmV3IHR1cGxl IGlzIGEgaGVhcC1vbmx5IHR1cGxlIGFwcGVuZGVkIHRvIHRoZQorY2hhaW4sIGFuZCBldmVy eSBpbmRleCBlbnRyeSBjb250aW51ZXMgdG8gcmVzb2x2ZSwgdmlhIHRoZSBzYW1lLXBhZ2Ug dF9jdGlkCitjaGFpbiwgdG8gYSB0dXBsZSB3aG9zZSBpbmRleGVkIHZhbHVlcyBzdGlsbCBl cXVhbCB0aGUgZW50cnkncyBrZXkuCisKK0hPVC1pbmRleGVkIChTZWxlY3RpdmUgSW5kZXgg VXBkYXRlLCBTSVUpIHJlbGF4ZXMgdGhhdCB0bzogYW4gVVBEQVRFIG1heQorY2hhbmdlIGlu ZGV4ZWQgY29sdW1ucyBhbmQgc3RpbGwgYmUgYSBoZWFwLW9ubHkgdHVwbGUgb24gdGhlIHNh bWUgcGFnZSwKK3Byb3ZpZGVkIG5ldyBpbmRleCBlbnRyaWVzIGFyZSBpbnNlcnRlZCBvbmx5 IGludG8gdGhlIGluZGV4ZXMgd2hvc2Uga2V5CithdHRyaWJ1dGVzIGFjdHVhbGx5IGNoYW5n ZWQuICBUaGUgaW5kZXhlcyB3aG9zZSBhdHRyaWJ1dGVzIGRpZCBub3QgY2hhbmdlIGFyZQor bGVmdCB1bnRvdWNoZWQsIHdoaWNoIGlzIHdoZXJlIHRoZSB3cml0ZS1hbXBsaWZpY2F0aW9u IHNhdmluZyBjb21lcyBmcm9tLgorCitUaGUgcHJpY2UgaXMgdGhhdCBhIGNoYWluIG1heSBu b3cgY29udGFpbiB0dXBsZXMgd2l0aCBkaWZmZXJlbnQgaW5kZXgga2V5cywgc28KK2FuIGlu ZGV4IGVudHJ5IGZvciBhbiBvbGQga2V5IGNhbiBjaGFpbi1yZXNvbHZlIHRvIGEgbGl2ZSB0 dXBsZSB3aG9zZSBjdXJyZW50CitrZXkgZGlmZmVycy4gIFN1Y2ggYW4gZW50cnkgaXMgU1RB TEUuICBUaGUgcmVhZCBzaWRlIGRldGVjdHMgYW5kIGRyb3BzIHN0YWxlCitlbnRyaWVzIGJ5 IHRlc3RpbmcgdGhlIGhlYXAncyBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgYWdhaW5zdCB0 aGUgaW5kZXgncwora2V5IGNvbHVtbnMuCisKK1RoaXMgZmlsZSBkb2N1bWVudHMgdGhlIGVs aWdpYmlsaXR5IHJ1bGVzLCB0aGUgd3JpdGUgcGF0aCwgdGhlIG9uLWNoYWluCityZXByZXNl bnRhdGlvbiwgdGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgdGVzdCwgcHJ1bmUvY29sbGFwc2Us IHZhY3V1bSByZWNsYW1hdGlvbiwKK3JlY292ZXJ5LCB0aGUgbG9naWNhbC1yZXBsaWNhdGlv biBhcHBseSBnYXRpbmcsIGFuZCB0aGUgc3RhdGlzdGljcy4KKworCitUaGUgY2xhc3NpYy1I T1QgaW52YXJpYW50IHdlIGFyZSByZWxheGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisKK0NsYXNzaWMgSE9UIHJlbGllcyBvbiB0d28gcHJvcGVy dGllczoKKworICAoYSkgZXZlcnkgbGl2ZSBpbmRleCBlbnRyeSByZXNvbHZlcywgdmlhIGEg c2FtZS1wYWdlIHRfY3RpZCBjaGFpbiwgdG8gdGhlCisgICAgICBjaGFpbidzIHJvb3QgbGlu ZSBwb2ludGVyOyBhbmQKKworICAoYikgdGhlIGluZGV4ZWQgdmFsdWVzIG9mIGV2ZXJ5IHR1 cGxlIG9uIHRoZSBjaGFpbiBlcXVhbCB0aGUga2V5IG9mIGV2ZXJ5CisgICAgICBpbmRleCBl bnRyeSB0aGF0IHJlYWNoZXMgaXQuCisKK0hPVC1pbmRleGVkIGtlZXBzIChhKSBidXQgYnJl YWtzIChiKTogYWZ0ZXIgYSBIT1QtaW5kZXhlZCB1cGRhdGUgdGhlIGNoYWluCitob2xkcyB0 dXBsZXMgd2l0aCBkaWZmZXJlbnQga2V5cywgYW5kIGEgbmV3IGluZGV4IGVudHJ5IGlzIHBs YW50ZWQgdGhhdCBwb2ludHMKK2F0IHRoZSAqc3BlY2lmaWMqIGhlYXAtb25seSB0dXBsZSB3 aG9zZSBrZXkgaXQgbWF0Y2hlcyAtLSBub3QgbmVjZXNzYXJpbHkgdGhlCityb290LgorCisK K1RoZSBIT1QtaW5kZXhlZCBpbnZhcmlhbnQgKHRoZSBuZXcgY29udHJhY3QpCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEFuIGluZGV4IGVu dHJ5IHBvaW50cyBhdCB0aGUgaGVhcC1vbmx5IHR1cGxlIHZlcnNpb24gd2hvc2UgaW5kZXhl ZCBrZXkgaXQKKyAgbWF0Y2hlZCBhdCBpbnNlcnRpb24gdGltZS4gIEEgY2hhaW4gd2FsayB0 aGF0IHJlYWNoZXMgYSBsaXZlIHR1cGxlIGJ5CisgIGNyb3NzaW5nIGEgSE9ULWluZGV4ZWQg aG9wICphZnRlciogdGhlIGVudHJ5J3Mgb3duIHRhcmdldCBtYXkgYmUgc3RhbGU6IGlmCisg IHRoZSB1bmlvbiBvZiB0aG9zZSBjcm9zc2VkIGhvcHMnIG1vZGlmaWVkIGF0dHJpYnV0ZXMg b3ZlcmxhcHMgdGhlIGluZGV4J3MKKyAga2V5IGNvbHVtbnMsIHRoZSBlbnRyeSBpcyBzdGFs ZSBhbmQgdGhlIHR1cGxlIGlzIGRyb3BwZWQgZnJvbSB0aGF0IHNjYW4uCisgIFRoZSByb3cg aXMKKyAgcmUtc3VwcGxpZWQgYnkgdGhlIGZyZXNoIGVudHJ5IHRoYXQgdGhlIHNhbWUgdXBk YXRlIGluc2VydGVkIGZvciB0aGUgbmV3CisgIGtleS4KKworVGhpcyBpcyB3aGF0IG1ha2Vz IGRyb3BwaW5nIGEgc3RhbGUgZW50cnkgc2FmZTogdGhlIGxpdmUgcm93IGlzIGFsd2F5cwor cmVhY2hhYmxlIHRocm91Z2ggZXhhY3RseSBvbmUgbm9uLXN0YWxlIGVudHJ5IHBlciBpbmRl eC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9ob3RfaW5kZXhlZC5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2hvdF9pbmRleGVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjZjZTQxNWM3MTUwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hvdF9pbmRleGVkLmgKQEAgLTAsMCArMSwxOTkgQEAKKy8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIGhvdF9pbmRleGVkLmgKKyAqCSAgSW5saW5lLXRyYWls aW5nIG1vZGlmaWVkLWF0dHJpYnV0ZXMgYml0bWFwIGZvciBIT1QtaW5kZXhlZCAoSE9UL1NJ VSkKKyAqCSAgdHVwbGVzLgorICoKKyAqIEEgaGVhcCB0dXBsZSBwcm9kdWNlZCBieSBhIEhP VC1pbmRleGVkIFVQREFURSBoYXMgSEVBUF9JTkRFWEVEX1VQREFURUQgc2V0CisgKiBpbiB0 X2luZm9tYXNrMiBhbmQgY2FycmllcywgYXBwZW5kZWQgYWZ0ZXIgaXRzIG5vcm1hbCBhdHRy aWJ1dGUgZGF0YSwgYQorICogZml4ZWQtc2l6ZSBiaXRtYXAgcmVjb3JkaW5nIHdoaWNoIGhl YXAgYXR0cmlidXRlcyBjaGFuZ2VkIGF0IHRoaXMgY2hhaW4gaG9wCisgKiAocmVsYXRpdmUg dG8gdGhlIHByaW9yIGNoYWluIG1lbWJlcikuICBCaXQgKGF0dG51bSAtIDEpIGNvcnJlc3Bv bmRzIHRvIHVzZXIKKyAqIGF0dHJpYnV0ZSBhdHRudW0uCisgKgorICogVGhlIGJpdG1hcCBp cyBjZWlsKG5hdHRzIC8gOCkgYnl0ZXMsIHdoZXJlIG5hdHRzIGlzIHRoZSB0dXBsZSdzIG93 bgorICogYXR0cmlidXRlIGNvdW50IGF0IHRoZSB0aW1lIGl0IHdhcyB3cml0dGVuIChIZWFw VHVwbGVIZWFkZXJHZXROYXR0cyBmb3IgYQorICogbGl2ZSB0dXBsZTsgcHJlc2VydmVkIHNl cGFyYXRlbHkgZm9yIGEgc3R1Yiwgc2VlIGJlbG93KS4gIEl0cyBsZW5ndGggaXMgbm90Cisg KiBzdG9yZWQgYXMgc3VjaDsgaXQgb2NjdXBpZXMgdGhlIGZpbmFsIEhvdEluZGV4ZWRCaXRt YXBCeXRlcyhuYXR0cykgYnl0ZXMgb2YKKyAqIHRoZSBsaW5lIHBvaW50ZXIncyBpdGVtIGFu ZCBpcyBsb2NhdGVkIHZpYSBJdGVtSWRHZXRMZW5ndGgoKSwgcGFzdCB0aGUKKyAqIGF0dHJp YnV0ZSBkYXRhOiByb3V0aW5lcyB0aGF0IGRlZm9ybSB0aGUgdHVwbGUgc3RvcCBhdCBuYXR0 cyBhbmQgbmV2ZXIgc2VlCisgKiBpdC4KKyAqCisgKiBCZWNhdXNlIEFERCBDT0xVTU4gcmFp c2VzIHRoZSByZWxhdGlvbidzIG5hdHRzIHdpdGhvdXQgcmV3cml0aW5nIGV4aXN0aW5nCisg KiB0dXBsZXMsIGEgY2hhaW4gY2FuIGhvbGQgdHVwbGVzIHdob3NlIGJpdG1hcHMgd2VyZSBz aXplZCBmb3IgZGlmZmVyZW50CisgKiAoc21hbGxlcikgbmF0dHMgdGhhbiB0aGUgcmVsYXRp b24gaGFzIG5vdy4gIENvbnN1bWVycyB0aGVyZWZvcmUgc2l6ZSBhbmQKKyAqIGxvY2F0ZSBh IHR1cGxlJ3MgYml0bWFwIGZyb20gdGhhdCB0dXBsZSdzIE9XTiB3cml0ZS10aW1lIG5hdHRz CisgKiAoSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMpLCBuZXZlciBmcm9tIHRoZSByZWxh dGlvbidzIGN1cnJlbnQgbmF0dHMuCisgKiBCaXQgcG9zaXRpb25zIGFyZSBhdHRyaWJ1dGUg YmFzZWQgYW5kIGlkZW50aWNhbCBhY3Jvc3Mgc2l6ZXMsIHNvIGEgc21hbGxlcgorICogYml0 bWFwIHNpbXBseSBPUnMgaW50byB0aGUgbG93IGJ5dGVzIG9mIGEgbGFyZ2VyIGFjY3VtdWxh dG9yLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KiBzcmMvaW5jbHVkZS9hY2Nlc3MvaG90X2luZGV4ZWQuaAorICoKKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICovCisjaWZuZGVmIEhPVF9JTkRFWEVEX0gKKyNkZWZpbmUgSE9UX0lOREVY RURfSAorCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImMu aCIKKworLyoKKyAqIE51bWJlciBvZiBieXRlcyBpbiB0aGUgdHJhaWxpbmcgbW9kaWZpZWQt YXR0cnMgYml0bWFwIGZvciBhIHJlbGF0aW9uIHdpdGgKKyAqIG5hdHRzIHVzZXIgYXR0cmli dXRlcyAob25lIGJpdCBwZXIgYXR0cmlidXRlLCBhdHRudW0gLSAxKS4KKyAqLworc3RhdGlj IGlubGluZSBTaXplCitIb3RJbmRleGVkQml0bWFwQnl0ZXMoaW50IG5hdHRzKQoreworCUFz c2VydChuYXR0cyA+PSAwKTsKKwlyZXR1cm4gKFNpemUpICgobmF0dHMgKyA3KSAvIDgpOwor fQorCisvKgorICogUmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIHRyYWlsaW5nIG1vZGlmaWVk LWF0dHJzIGJpdG1hcCBvZiBhIEhPVC1pbmRleGVkCisgKiB0dXBsZS4gIGl0ZW1fbGVuIGlz IEl0ZW1JZEdldExlbmd0aCgpIG9mIHRoZSB0dXBsZSdzIGxpbmUgcG9pbnRlcjsgbmF0dHMg aXMKKyAqIHRoZSByZWxhdGlvbidzIG51bWJlciBvZiBhdHRyaWJ1dGVzLiAgVGhlIGNhbGxl ciBtdXN0IGhhdmUgdmVyaWZpZWQgdGhhdAorICogdGhlIHR1cGxlIGhhcyBIRUFQX0lOREVY RURfVVBEQVRFRCBzZXQuCisgKi8KK3N0YXRpYyBpbmxpbmUgY29uc3QgdWludDggKgorSG90 SW5kZXhlZEdldE1vZGlmaWVkQml0bWFwKGNvbnN0IEhlYXBUdXBsZUhlYWRlckRhdGEgKmh0 dXAsCisJCQkJCQkJU2l6ZSBpdGVtX2xlbiwgaW50IG5hdHRzKQoreworCXJldHVybiAoY29u c3QgdWludDggKikgKChjb25zdCBjaGFyICopIGh0dXAgKworCQkJCQkJCWl0ZW1fbGVuIC0g SG90SW5kZXhlZEJpdG1hcEJ5dGVzKG5hdHRzKSk7Cit9CisKKy8qIFdyaXRhYmxlIHZhcmlh bnQsIGZvciBPUi1pbmcgdGhlIHVuaW9uIG9udG8gYSBzdXJ2aXZpbmcgcmVkaXJlY3QgdGFy Z2V0LiAqLworc3RhdGljIGlubGluZSB1aW50OCAqCitIb3RJbmRleGVkR2V0TW9kaWZpZWRC aXRtYXBSVyhIZWFwVHVwbGVIZWFkZXJEYXRhICpodHVwLAorCQkJCQkJCSAgU2l6ZSBpdGVt X2xlbiwgaW50IG5hdHRzKQoreworCXJldHVybiAodWludDggKikgKChjaGFyICopIGh0dXAg KworCQkJCQkgIGl0ZW1fbGVuIC0gSG90SW5kZXhlZEJpdG1hcEJ5dGVzKG5hdHRzKSk7Cit9 CisKKy8qIFRydWUgaWYgdXNlciBhdHRyaWJ1dGUgYXR0bnVtICgxLWJhc2VkKSBpcyBzZXQg aW4gdGhlIGJpdG1hcC4gKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorSG90SW5kZXhlZEF0dHJJ c01vZGlmaWVkKGNvbnN0IHVpbnQ4ICpiaXRtYXAsIEF0dHJOdW1iZXIgYXR0bnVtKQorewor CWludAkJCWJpdCA9IGF0dG51bSAtIDE7CisKKwlBc3NlcnQoYXR0bnVtID49IDEpOworCXJl dHVybiAoYml0bWFwW2JpdCAvIDhdICYgKDEgPDwgKGJpdCAlIDgpKSkgIT0gMDsKK30KKwor LyogU2V0IHVzZXIgYXR0cmlidXRlIGF0dG51bSAoMS1iYXNlZCkgaW4gdGhlIGJpdG1hcC4g Ki8KK3N0YXRpYyBpbmxpbmUgdm9pZAorSG90SW5kZXhlZFNldEF0dHJNb2RpZmllZCh1aW50 OCAqYml0bWFwLCBBdHRyTnVtYmVyIGF0dG51bSkKK3sKKwlpbnQJCQliaXQgPSBhdHRudW0g LSAxOworCisJQXNzZXJ0KGF0dG51bSA+PSAxKTsKKwliaXRtYXBbYml0IC8gOF0gfD0gKHVp bnQ4KSAoMSA8PCAoYml0ICUgOCkpOworfQorCisvKiBPUiB0aGUgZmlyc3QgbmJ5dGVzIG9m IHNyYyBpbnRvIGRzdC4gIGRzdCBtdXN0IGJlIGF0IGxlYXN0IG5ieXRlcyBsb25nOyBpdAor ICogbWF5IGJlIGxvbmdlciAoc2l6ZWQgZm9yIGEgbGFyZ2VyIG5hdHRzKSAtLSBiaXQgcG9z aXRpb25zIGFyZSBhdHRyaWJ1dGUKKyAqIGJhc2VkIGFuZCBpZGVudGljYWwgYWNyb3NzIHNp emVzLCBzbyBPUi1pbmcgb25seSBzcmMncyBieXRlcyBpcyBjb3JyZWN0LiAqLworc3RhdGlj IGlubGluZSB2b2lkCitIb3RJbmRleGVkQml0bWFwVW5pb24odWludDggKmRzdCwgY29uc3Qg dWludDggKnNyYywgaW50IHNyY19uYXR0cykKK3sKKwlTaXplCQluYnl0ZXMgPSBIb3RJbmRl eGVkQml0bWFwQnl0ZXMoc3JjX25hdHRzKTsKKworCWZvciAoU2l6ZSBpID0gMDsgaSA8IG5i eXRlczsgaSsrKQorCQlkc3RbaV0gfD0gc3JjW2ldOworfQorCisvKgorICogSXMgZXZlcnkg Yml0IHNldCBpbiBzdWIgYWxzbyBzZXQgaW4gc3VwZXI/ICBzdWIgaXMgc2l6ZWQgZm9yIHN1 Yl9uYXR0czsKKyAqIHN1cGVyIG11c3QgYmUgYXQgbGVhc3QgdGhhdCBsb25nLiAgVXNlZCBi eSBwcnVuZSB0byBkZWNpZGUgYSBjb2xsYXBzZQorICogc3Vydml2b3IgaXMgcmVjbGFpbWFi bGU6IHdoZW4gdGhlIGF0dHJpYnV0ZXMgYSBkZWFkIG1lbWJlciBjaGFuZ2VkIGFyZSBhbGwK KyAqIGNoYW5nZWQgYWdhaW4gYnkgbGF0ZXIgaG9wcywgZXZlcnkgaW5kZXggZW50cnkgcG9p bnRpbmcgYXQgdGhhdCBtZW1iZXIgaXMKKyAqIHN1cGVyc2VkZWQgKHN0YWxlKSwgc28gaXQg Y2FycmllcyBubyBsaXZlIGVudHJ5LgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0hvdElu ZGV4ZWRCaXRtYXBJc1N1YnNldChjb25zdCB1aW50OCAqc3ViLCBjb25zdCB1aW50OCAqc3Vw ZXIsIGludCBzdWJfbmF0dHMpCit7CisJU2l6ZQkJbmJ5dGVzID0gSG90SW5kZXhlZEJpdG1h cEJ5dGVzKHN1Yl9uYXR0cyk7CisKKwlmb3IgKFNpemUgaSA9IDA7IGkgPCBuYnl0ZXM7IGkr KykKKwkJaWYgKChzdWJbaV0gJiB+c3VwZXJbaV0pICE9IDApCisJCQlyZXR1cm4gZmFsc2U7 CisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBTdHViIGxpbmUgcG9pbnRlcnMgKGNvbGxh cHNlIHN1cnZpdm9ycykuCisgKgorICogV2hlbiBwcnVuZSBjb2xsYXBzZXMgYSBkZWFkIEhP VC1pbmRleGVkIGNoYWluIGl0IGNhbm5vdCBrZWVwIHRoZSBkZWFkIGtleQorICogdHVwbGVz IGFzIGxpdmUgZGF0YS1iZWFyaW5nIHR1cGxlcyAodGhlaXIgWElEcyB3b3VsZCBob2xkIGJh Y2sKKyAqIHJlbGZyb3plbnhpZCkuICBFYWNoIHByZXNlcnZlZCBkZWFkIGtleSB0dXBsZSBp cyBpbnN0ZWFkIGNvbnZlcnRlZCB0byBhbgorICogeGlkLWZyZWUgInN0dWIiOiBhbiBMUF9O T1JNQUwgaXRlbSB3aG9zZSBIZWFwVHVwbGVIZWFkZXIgaXMgZnJvemVuIGFuZAorICogbWFy a2VkIG5vdC1hLXJlYWwtdHVwbGUgKEhFQVBfSU5ERVhFRF9VUERBVEVEIHNldCwgSGVhcFR1 cGxlSGVhZGVyR2V0TmF0dHMKKyAqID09IDApLCB3aG9zZSB0X2N0aWQub2ZmbnVtIGZvcndh cmRzIHRvIHRoZSBuZXh0IGtleSB0dXBsZSBvbiB0aGUgcGFnZSwgYW5kCisgKiB3aG9zZSBw YXlsb2FkIGlzIHRoZSBtb2RpZmllZC1hdHRycyBiaXRtYXAgZm9yIHRoZSBzZWdtZW50IGl0 IHJlcHJlc2VudHMgLS0KKyAqIGxvY2F0ZWQsIGxpa2UgYSBsaXZlIHR1cGxlJ3MgaW5saW5l IGJpdG1hcCwgaW4gdGhlIGZpbmFsCisgKiBIb3RJbmRleGVkQml0bWFwQnl0ZXMobmF0dHMp IGJ5dGVzIG9mIHRoZSBpdGVtLCBzbyB0aGUgc2FtZSBhY2Nlc3NvcnMgd29yaworICogZm9y IGJvdGguICBCZWNhdXNlIHRoZSBuYXR0cyBmaWVsZCBpcyBvdmVyd3JpdHRlbiB3aXRoIHRo ZSAwIHNlbnRpbmVsLCB0aGUKKyAqIHN0dWIncyB3cml0ZS10aW1lIG5hdHRzIChuZWVkZWQg dG8gc2l6ZS9sb2NhdGUgdGhhdCBiaXRtYXApIGlzIHByZXNlcnZlZCBpbgorICogdGhlIG90 aGVyd2lzZS11bnVzZWQgYmxvY2stbnVtYmVyIGhhbGYgb2YgdF9jdGlkOyBIb3RJbmRleGVk U3R1YkdldEZvcndhcmQKKyAqIHJlYWRzIG9ubHkgdGhlIG9mZnNldCBoYWxmLgorICoKKyAq IEEgc3R1YiBpcyBzaWduYXR1cmUtc2tpcHBlZCAobm90IHZpc2liaWxpdHktc2tpcHBlZCkg YnkgZXZlcnkgY29uc3VtZXIgdGhhdAorICogd2Fsa3MgTFBfTk9STUFMIGl0ZW1zLgorICov CitzdGF0aWMgaW5saW5lIGJvb2wKK0hvdEluZGV4ZWRIZWFkZXJJc1N0dWIoY29uc3QgSGVh cFR1cGxlSGVhZGVyRGF0YSAqdHVwKQoreworCXJldHVybiAodHVwLT50X2luZm9tYXNrMiAm IEhFQVBfSU5ERVhFRF9VUERBVEVEKSAhPSAwICYmCisJCUhlYXBUdXBsZUhlYWRlckdldE5h dHRzKHR1cCkgPT0gMDsKK30KKworLyogT2Zmc2V0IG9mIHRoZSBuZXh0IGtleSB0dXBsZSB0 aGlzIHN0dWIgZm9yd2FyZHMgdG8gKHNhbWUgcGFnZSkuICovCitzdGF0aWMgaW5saW5lIE9m ZnNldE51bWJlcgorSG90SW5kZXhlZFN0dWJHZXRGb3J3YXJkKGNvbnN0IEhlYXBUdXBsZUhl YWRlckRhdGEgKnR1cCkKK3sKKwlyZXR1cm4gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXJO b0NoZWNrKCZ0dXAtPnRfY3RpZCk7Cit9CisKKy8qCisgKiBCaXRtYXAgc2l6aW5nIGFjcm9z cyB0aGUgcmVsYXRpb24ncyBsaWZldGltZS4KKyAqCisgKiBUaGUgdHJhaWxpbmcgYml0bWFw IGlzIGNlaWwobmF0dHMgLyA4KSBieXRlcywgd2hlcmUgbmF0dHMgaXMgdGhlIHJlbGF0aW9u J3MKKyAqIGF0dHJpYnV0ZSBjb3VudCAqYXQgdGhlIHRpbWUgdGhlIHR1cGxlIHdhcyB3cml0 dGVuKi4gIEFERCBDT0xVTU4gcmFpc2VzIHRoZQorICogcmVsYXRpb24ncyBuYXR0cyB3aXRo b3V0IHJld3JpdGluZyBleGlzdGluZyB0dXBsZXMsIHNvIGEgY2hhaW4gY2FuIGhvbGQKKyAq IHR1cGxlcyB3aG9zZSBiaXRtYXBzIHdlcmUgc2l6ZWQgZm9yIGRpZmZlcmVudCAoc21hbGxl cikgbmF0dHMgdGhhbiB0aGUKKyAqIHJlbGF0aW9uIGhhcyBub3cuICBFdmVyeSBjb25zdW1l ciBtdXN0IHRoZXJlZm9yZSBzaXplIGFuZCBsb2NhdGUgYSB0dXBsZSdzCisgKiBiaXRtYXAg ZnJvbSB0aGF0IHR1cGxlJ3Mgb3duIHdyaXRlLXRpbWUgbmF0dHMsIG5ldmVyIGZyb20gdGhl IHJlbGF0aW9uJ3MKKyAqIGN1cnJlbnQgbmF0dHMuCisgKgorICogRm9yIGEgbGl2ZSBIT1Qt aW5kZXhlZCB0dXBsZSB0aGUgd3JpdGUtdGltZSBuYXR0cyBpcyBIZWFwVHVwbGVIZWFkZXJH ZXROYXR0cworICogKGEgZnJlc2hseSBmb3JtZWQgVVBEQVRFIHR1cGxlIHN0b3JlcyB0aGUg ZnVsbCByZWxhdGlvbiBuYXR0cywgd2hpY2ggaXMgd2hhdAorICogaGVhcF9mb3JtX2hvdF9p bmRleGVkX3R1cGxlIHNpemVkIHRoZSBiaXRtYXAgd2l0aCkuICBBIHN0dWIgb3ZlcndyaXRl cyBuYXR0cworICogd2l0aCAwIGFzIGl0cyBzZW50aW5lbCwgc28gaXQgcHJlc2VydmVzIGl0 cyB3cml0ZS10aW1lIG5hdHRzIGluIHRoZSB1bnVzZWQKKyAqIGJsb2NrLW51bWJlciBoYWxm IG9mIHRfY3RpZCBpbnN0ZWFkICh0aGUgb2Zmc2V0IGhhbGYgaG9sZHMgdGhlIGZvcndhcmQK KyAqIGxpbmspLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0hvdEluZGV4ZWRTdHViU2V0 Qml0bWFwTmF0dHMoSGVhcFR1cGxlSGVhZGVyRGF0YSAqdHVwLCBpbnQgbmF0dHMpCit7CisJ QmxvY2tJZFNldCgmdHVwLT50X2N0aWQuaXBfYmxraWQsIChCbG9ja051bWJlcikgbmF0dHMp OworfQorCitzdGF0aWMgaW5saW5lIGludAorSG90SW5kZXhlZFN0dWJHZXRCaXRtYXBOYXR0 cyhjb25zdCBIZWFwVHVwbGVIZWFkZXJEYXRhICp0dXApCit7CisJcmV0dXJuIChpbnQpIEJs b2NrSWRHZXRCbG9ja051bWJlcigmdHVwLT50X2N0aWQuaXBfYmxraWQpOworfQorCisvKiBX cml0ZS10aW1lIG5hdHRzIG9mIGFueSBIT1QtaW5kZXhlZCBpdGVtIChsaXZlIHR1cGxlIG9y IHN0dWIpLiAqLworc3RhdGljIGlubGluZSBpbnQKK0hvdEluZGV4ZWRUdXBsZUJpdG1hcE5h dHRzKGNvbnN0IEhlYXBUdXBsZUhlYWRlckRhdGEgKnR1cCkKK3sKKwlpZiAoSG90SW5kZXhl ZEhlYWRlcklzU3R1Yih0dXApKQorCQlyZXR1cm4gSG90SW5kZXhlZFN0dWJHZXRCaXRtYXBO YXR0cyh0dXApOworCXJldHVybiBIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyh0dXApOworfQor CisjZW5kaWYJCQkJCQkJLyogSE9UX0lOREVYRURfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2h0dXBfZGV0YWlscy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBf ZGV0YWlscy5oCmluZGV4IDc3YTZjNDhmZDcxLi43ZWI3Zjg2ZjVlZCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBfZGV0YWlscy5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9odHVwX2RldGFpbHMuaApAQCAtMjg5LDcgKzI4OSwxMyBAQCBIRUFQX1hNQVhfSVNf S0VZU0hSX0xPQ0tFRCh1aW50MTYgaW5mb21hc2spCiAgKiBpbmZvcm1hdGlvbiBzdG9yZWQg aW4gdF9pbmZvbWFzazI6CiAgKi8KICNkZWZpbmUgSEVBUF9OQVRUU19NQVNLCQkJMHgwN0ZG CS8qIDExIGJpdHMgZm9yIG51bWJlciBvZiBhdHRyaWJ1dGVzICovCi0vKiBiaXRzIDB4MTgw MCBhcmUgYXZhaWxhYmxlICovCisjZGVmaW5lIEhFQVBfSU5ERVhFRF9VUERBVEVECTB4MDgw MAkvKiBIT1QgdHVwbGUgcHJvZHVjZWQgYnkgYW4gVVBEQVRFCisJCQkJCQkJCQkJICogdGhh dCBhbHNvIGNoYW5nZWQgYW4gaW5kZXhlZAorCQkJCQkJCQkJCSAqIGF0dHJpYnV0ZSAoSE9U L1NJVSk7IGluZGV4IHNjYW5zCisJCQkJCQkJCQkJICogdGhhdCByZWFjaCBpdCB2aWEgYSBj aGFpbiByZWNoZWNrCisJCQkJCQkJCQkJICogdGhlIGFycml2aW5nIGxlYWYga2V5IGFnYWlu c3QgdGhlCisJCQkJCQkJCQkJICogbGl2ZSB0dXBsZS4gKi8KKy8qIGJpdCAweDEwMDAgaXMg YXZhaWxhYmxlICovCiAjZGVmaW5lIEhFQVBfS0VZU19VUERBVEVECQkweDIwMDAJLyogdHVw bGUgd2FzIHVwZGF0ZWQgYW5kIGtleSBjb2xzCiAJCQkJCQkJCQkJICogbW9kaWZpZWQsIG9y IHR1cGxlIGRlbGV0ZWQgKi8KICNkZWZpbmUgSEVBUF9IT1RfVVBEQVRFRAkJMHg0MDAwCS8q IHR1cGxlIHdhcyBIT1QtdXBkYXRlZCAqLwotLSAKMi41MC4xCgo= --98b017876237f005fe98a17b40ccb28dde987108 Content-Disposition: attachment; filename*0="v48-0004-Add-HOT-indexed-updates-selective-index-maintena.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v48-0004-Add-HOT-indexed-updates-selective-index-maintena.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA3ZmY3NjMxZGM5MGIzYzA1N2NjZjEwOTNlMDg0NjJhNDgxZGI4ZjlhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAxNzozNToxNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ4IDQv OV0gQWRkIEhPVC1pbmRleGVkIHVwZGF0ZXM6IHNlbGVjdGl2ZSBpbmRleCBtYWludGVuYW5j ZQogYW5kIHJlYWRzCgpJbXBsZW1lbnQgdGhlIEhPVC1pbmRleGVkIChTZWxlY3RpdmUgSW5k ZXggVXBkYXRlKSBmZWF0dXJlIG9uIHRoZSBmb3VuZGF0aW9uCmxhaWQgYnkgdGhlIGV4ZWN1 dG9yJ3MgbW9kaWZpZWQtYXR0cmlidXRlIGlkZW50aWZpY2F0aW9uLgoKRWxpZ2liaWxpdHk6 IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUgcmV0dXJucyBhIEhlYXBVcGRhdGVJbmRleE1vZGUg LS0KSEVBUF9VUERBVEVfQUxMX0lOREVYRVMgKG5vdCBIT1Q7IGV2ZXJ5IGluZGV4IG5lZWRz IGFuIGVudHJ5KSwgSEVBUF9VUERBVEVfSE9UCihjbGFzc2ljIEhPVDsgbm8gaW5kZXggbmVl ZHMgYW4gZW50cnkpLCBvciBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUgKEhPVApjaGFp biwgb25seSB0aGUgY2hhbmdlZCBpbmRleGVzIG1haW50YWluZWQpIC0tIGNvbXB1dGVkIGZy b20gbW9kaWZpZWRfaWR4X2F0dHJzCmFuZCB0aGUgcGVyLXJlbGF0aW9uIGluZGV4ZWQtYXR0 cmlidXRlIHNldCAoUmVsYXRpb25HZXRJbmRleGVkQXR0cnMpLiAgQW4KVVBEQVRFIHRoYXQg Y2hhbmdlcyBhIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBpcwpIRUFQX1NF TEVDVElWRV9JTkRFWF9VUERBVEUgdW5sZXNzIGl0IGlzIGZvcmNlZCB0byBIRUFQX1VQREFU RV9BTExfSU5ERVhFUyBieQpvbmUgb2Y6IGV2ZXJ5IGluZGV4ZWQgYXR0cmlidXRlIGNoYW5n ZWQgKG5vdGhpbmcgdG8gc2tpcCksIGFuIGF0dHJpYnV0ZQpyZWZlcmVuY2VkIGJ5IGFuIGV4 cHJlc3Npb24gaW5kZXggY2hhbmdlZCAoZXhwcmVzc2lvbi1hd2FyZSBtYWludGVuYW5jZSBp cyBub3QKaW1wbGVtZW50ZWQgeWV0KSwgYSBzeXN0ZW0gY2F0YWxvZywgb3IgdGhlIGxvZ2lj YWwtcmVwbGljYXRpb24gYXBwbHkgZ2F0ZSAoc2VlCnRoZSBhcHBseS1nYXRpbmcgY29tbWl0 KS4gIFBhcnRpYWwgaW5kZXhlcywgZXhjbHVzaW9uIGNvbnN0cmFpbnRzLCBwYXJ0aXRpb25l ZAp0YWJsZXMsIGFuZCBub24tYnRyZWUgYWNjZXNzIG1ldGhvZHMgYXJlIGFsbCBlbGlnaWJs ZSAtLSB0aGUgcmVhZCBwYXRoIGlzCmFjY2Vzcy1tZXRob2QgYWdub3N0aWMgYW5kIHRoZSBw cmVkaWNhdGUgY29sdW1uIGlzIHBhcnQgb2YgdGhlIGluZGV4J3MKYXR0cmlidXRlIHNldCwg c28gbm8gY2FydmUtb3V0IGlzIG5lZWRlZCBmb3IgdGhlbS4KCldyaXRlIHBhdGg6IHRoZSB0 YWJsZS1BTSB1cGRhdGUgY29udHJhY3QgY2FycmllcyBtb2RpZmllZCBhdHRyaWJ1dGVzIElO L09VVCBhcwphIEJpdG1hcHNldCAob24gb3V0cHV0IHRoZSBBTSBhZGRzIHRoZSB3aG9sZS1y b3cgc2VudGluZWwsClRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLCB0byBzaWduYWwgImV2 ZXJ5IGluZGV4IG5lZWRzIGFuIGVudHJ5IiksIGFuZApoZWFwX3VwZGF0ZSwgZm9yIEhFQVBf U0VMRUNUSVZFX0lOREVYX1VQREFURSwga2VlcHMgdGhlIG5ldyB2ZXJzaW9uIG9uIHRoZSBI T1QKY2hhaW4gd2hpbGUgRXhlY0luc2VydEluZGV4VHVwbGVzIG1haW50YWlucyBvbmx5IHRo ZSBpbmRleGVzIHdob3NlIGF0dHJpYnV0ZXMKY2hhbmdlZC4gIFRoZSBuZXcgaGVhcC1vbmx5 IHR1cGxlIHJlY29yZHMsIGluIGFuIGlubGluZSBiaXRtYXAgaW4gaXRzIHRhaWwsIHRoZQph dHRyaWJ1dGVzIHRoYXQgY2hhbmdlZCBhdCBpdHMgaG9wLiAgT25seSB0aGUgc3RvcmVkIHR1 cGxlIGNhcnJpZXMgdGhlIGJpdG1hcAphbmQgdGhlIEhFQVBfSU5ERVhFRF9VUERBVEVEIGZs YWc7IHRoZSBjYWxsZXIncyBpbi1tZW1vcnkgY29weSBpcyBsZWZ0IHVubWFya2VkCnNvIHRo ZSBmbGFnIG5ldmVyIHByb21pc2VzIGEgdHJhaWxpbmcgYml0bWFwIHRoYXQgaXMgbm90IHBy ZXNlbnQuCgpSZWFkIHBhdGg6IGEgY2hhaW4gd2FsayB0byB0aGUgbGl2ZSB0dXBsZSB1bmlv bnMgdGhlIG1vZGlmaWVkLWF0dHJpYnV0ZQpiaXRtYXBzIG9mIGV2ZXJ5IGhvcCBpdCBjcm9z c2VzLiAgVGhlIGluZGV4LWFjY2VzcyBsYXllciB0cmVhdHMgdGhhdApjcm9zc2VkLWF0dHJp YnV0ZSBiaXRtYXAgYXMgdGhlIHN0YWxlbmVzcyBhdXRob3JpdHk6IGlmIGl0IG92ZXJsYXBz IHRoZQphcnJpdmluZyBpbmRleCdzIGtleSBjb2x1bW5zIHRoZSBlbnRyeSBpcyBzdGFsZSBh bmQgaXMgZHJvcHBlZCwgYW5kIHRoZSByb3cgaXMKcmUtc3VwcGxpZWQgYnkgdGhlIGZyZXNo IGVudHJ5IHRoZSBzYW1lIHVwZGF0ZSBwbGFudGVkLiAgVGhlIHJlYWQgcGF0aCBpcwphY2Nl c3MtbWV0aG9kIGFnbm9zdGljIGFuZCBuZWVkcyBubyB2YWx1ZSByZWNoZWNrIG9yIGxlYWYg a2V5OiBpdCBpcyBjb3JyZWN0CmV2ZW4gd2hlbiBhIGtleSBpcyBjeWNsZWQgYXdheSBhbmQg YmFjaywgYmVjYXVzZSB0aGUgdmFsdWUtcmVzdG9yaW5nIHVwZGF0ZQpwbGFudGVkIGEgZnJl c2ggZW50cnkgd2hvc2Ugd2FsayBjcm9zc2VzIG5vIGxhdGVyIGtleS1jaGFuZ2luZyBob3Au CgpVbmlxdWUgY2hlY2tzIGFyZSB0aGUgb25lIHBsYWNlIHRoYXQgZG9lcyBjb21wYXJlIHZh bHVlczogX2J0X2NoZWNrX3VuaXF1ZQpmZXRjaGVzIHRoZSBjb25mbGljdGluZyB0dXBsZSB1 bmRlciBTbmFwc2hvdERpcnR5IGFuZCwgb24gYSBjcm9zc2VkLWhvcAphcnJpdmFsLCBjb21w YXJlcyB0aGUgbGl2ZSB0dXBsZSdzIGN1cnJlbnQga2V5IGFnYWluc3QgdGhlIGFycml2aW5n IGxlYWYgd2l0aAp0aGUgaW5kZXgncyBvd24gb3JkZXJpbmcgcHJvY2VkdXJlIChfYnRfaGVh cF9rZXlzX2VxdWFsX2xlYWYsIEJUT1JERVJfUFJPQwp1bmRlciBlYWNoIGNvbHVtbidzIGNv bGxhdGlvbikuICBVc2luZyB0aGUgb3BjbGFzcyBjb21wYXJhdG9yIC0tIG5vdCBhIGJpdHdp c2UKaW1hZ2UgY29tcGFyaXNvbiAtLSBkaXN0aW5ndWlzaGVzIGEgc3RhbGUgYW5jZXN0b3Ig bGVhZiBmcm9tIGEgZ2VudWluZWx5IGxpdmUKZHVwbGljYXRlIChlcXVhbCB1bmRlciB0aGUg b3BjbGFzcyBldmVuIGlmIG5vdCBiaXR3aXNlLWlkZW50aWNhbCkgYW5kLCBpbiB0aGUKaW4t ZmxpZ2h0IHdpbmRvdyBvZiBhIHJlc3RvcmluZyB1cGRhdGUsIHJvdXRlcyB0aGUgc3RhbGUt YW5jZXN0b3IgaGl0IGludG8KX2J0X2RvaW5zZXJ0J3MgeHdhaXQgc28gdGhlIGR1cGxpY2F0 ZSBpcyBzdGlsbCBjYXVnaHQuICBUaGUgY29tcGFyaXNvbiByZWFkcwpwbGFpbiBrZXkgY29s dW1ucyBzdHJhaWdodCBmcm9tIHRoZSBoZWFwIHNsb3Q7IGl0IG5ldmVyIGV2YWx1YXRlcyBh biBpbmRleGVkCmV4cHJlc3Npb24sIGJlY2F1c2UgYW4gVVBEQVRFIHRvdWNoaW5nIGFuIGV4 cHJlc3Npb24taW5kZXggYXR0cmlidXRlIGlzCmluZWxpZ2libGUgZm9yIEhPVC1pbmRleGVk LCBzbyBhbiBleHByZXNzaW9uIGluZGV4IGlzIG5ldmVyIHRoZSBvbmUgcmVjZWl2aW5nCnRo ZSBmcmVzaCBlbnRyeSB3aG9zZSBpbnNlcnQgcnVucyB0aGlzIGNoZWNrLgoKQ28tYXV0aG9y ZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpDby1hdXRob3JlZC1ieTogTmF0aGFu IEJvc3NhcnQgPG5hdGhhbmRib3NzYXJ0QGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9UICAgICAgICAgICB8ICAzNCArCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgICB8IDMwNiArKysrKysrKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgfCA0NjkgKysrKysrKyst LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgIHwgMTg5 ICsrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faW5kZXhzY2FuLmMgICB8 IDE3MyArKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyAgICAgICAg ICAgfCAgOTkgKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jICAg ICAgICB8IDE2OCArKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jICAg ICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAg ICAgICAgICAgfCAgMjQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhpbmcuYyAgICAg ICAgICAgICAgIHwgIDY3ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAg ICAgICAgICAgICB8ICAgMiAtCiBzcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2suYyAgICAg ICAgICAgICAgICB8ICAyNiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5n LmMgICAgICAgICAgfCAzMjcgKysrKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS ZXBsaWNhdGlvbi5jICAgICAgIHwgIDM4ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhvbmx5c2Nhbi5jICAgICB8ICAzMyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhzY2FuLmMgICAgICAgICB8ICAxNSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYyAgICAgICB8ICA3MyArLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1 bmNzLmMgICAgICAgICAgICAgICAgfCAgIDIgLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X3JlbGF0aW9uLmMgfCAgMjEgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3JlbGNhY2hlLmMgICAgICAgICAgIHwgMjE5ICsrKysrLQogc3JjL2luY2x1ZGUvYWNjZXNz L2FtYXBpLmggICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaCAgICAgICAgICAgICAgICAgIHwgIDQ4ICstCiBzcmMvaW5jbHVkZS9hY2Nl c3MvcmVsc2Nhbi5oICAgICAgICAgICAgICAgICB8ICA2MCArKwogc3JjL2luY2x1ZGUvYWNj ZXNzL3RhYmxlYW0uaCAgICAgICAgICAgICAgICAgfCAgNzEgKy0KIHNyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2luY2x1ZGUv cGdzdGF0LmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzEgKy0KIHNyYy9pbmNsdWRl L3V0aWxzL3JlbC5oICAgICAgICAgICAgICAgICAgICAgIHwgIDExICsKIHNyYy9pbmNsdWRl L3V0aWxzL3JlbGNhY2hlLmggICAgICAgICAgICAgICAgIHwgIDE3ICsKIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0ICAgIHwgNzcxICsrKysrKystLS0tLS0t LS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRhdGVzLnNxbCAgICAgICAgIHwg NjAzICsrKysrLS0tLS0tLS0tLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg ICAgICAgICAgICAgfCAgIDIgKy0KIDMzIGZpbGVzIGNoYW5nZWQsIDI1NTcgaW5zZXJ0aW9u cygrKSwgMTM3NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9SRUFETUUuSE9UIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhP VAppbmRleCA3NGU0MDdmMzc1YS4uNzEyMzY1NjE3M2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvUkVBRE1FLkhPVApAQCAtMTU2LDYgKzE1Niw0MCBAQCBhbGwgc3VtbWFyaXppbmcgaW5k ZXhlcy4gIChSZWFsaXN0aWNhbGx5LCB3ZSBvbmx5IG5lZWQgdG8gcHJvcGFnYXRlIHRoZQog dXBkYXRlIHRvIHRoZSBpbmRleGVzIHRoYXQgY29udGFpbiB0aGUgdXBkYXRlZCB2YWx1ZXMs IGJ1dCB0aGF0IGlzIHlldCB0bwogYmUgaW1wbGVtZW50ZWQuKQogCisKK1Blci1JbmRleCBV cGRhdGUgVHJhY2tpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWZ0ZXIgdGhl IHRhYmxlIEFNIHBlcmZvcm1zIHRoZSB1cGRhdGUsIHRoZSBleGVjdXRvciBkZXRlcm1pbmVz IHdoaWNoCitpbmRleGVzIG5lZWQgbmV3IGVudHJpZXMgdXNpbmcgcGVyLWluZGV4IHRyYWNr aW5nLgorCitUaGUgdGFibGUgQU0gY29tbXVuaWNhdGVzIHdoZXRoZXIgYSBIT1QgdXBkYXRl IG9jY3VycmVkIHZpYSB0aGUKK3VwZGF0ZV9hbGxfaW5kZXhlcyBib29sZWFuIG91dHB1dCBv ZiB0YWJsZV90dXBsZV91cGRhdGUoKSwgdG9nZXRoZXIgd2l0aCB0aGUKK21vZGlmaWVkLWF0 dHJzIEJpdG1hcHNldCB0aGUgY2FsbGVyIHBhc3NlZCBpbiAoYXR0cmlidXRlIG51bWJlcnMg ZW5jb2RlZCB3aXRoCitGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKS4gIFdo ZW4gdXBkYXRlX2FsbF9pbmRleGVzIGlzIHRydWUgdGhlCit1cGRhdGUgd2FzIG5vbi1IT1Qg YW5kIGV2ZXJ5IGluZGV4IHJlcXVpcmVzIGEgbmV3IGVudHJ5ICh0aGUgdHVwbGUgaGFzIGEg bmV3CitUSUQpLiAgV2hlbiBmYWxzZSB0aGUgdXBkYXRlIHdhcyBIT1Q6IHRoZSBjYWxsZXIg Y29uc3VsdHMgbW9kaWZpZWRfYXR0cnMgd2l0aAorZWFjaCBpbmRleCdzIG93biBhdHRyaWJ1 dGVzIHRvIGluc2VydCBlbnRyaWVzIG9ubHkgaW50byB0aGUgaW5kZXhlcyB3aG9zZSBrZXkK K2F0dHJpYnV0ZXMgY2hhbmdlZCAoYSBIT1QtaW5kZXhlZCB1cGRhdGUpIG9yIG9ubHkgdGhl IHN1bW1hcml6aW5nIGluZGV4ZXMgKGEKK2NsYXNzaWMgSE9UIHVwZGF0ZSB0aGF0IGNoYW5n ZWQgYSBzdW1tYXJpemVkIGNvbHVtbiksIGFuZCBza2lwcyB0aGUgcmVzdC4KKworVGhlIGV4 ZWN1dG9yIHRoZW4gY2FsbHMgRXhlY1NldEluZGV4VW5jaGFuZ2VkKCkgdG8gcG9wdWxhdGUg dGhlIHBlci1pbmRleAoraWlfSW5kZXhVbmNoYW5nZWQgZmxhZyBvbiBlYWNoIEluZGV4SW5m by4gIFRoaXMgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciBlYWNoCitpbmRleCdzIGtleSB2YWx1 ZXMgYXJlIHVuY2hhbmdlZCBieSB0aGUgdXBkYXRlLiAgRm9yIG5vbi1IT1QgdXBkYXRlcwor dGhlIGZsYWcgaXMgY2xlYXJlZCBvbiBldmVyeSBpbmRleCwgc28gZWFjaCBnZXRzIGEgZnJl c2ggZW50cnkgYXQgdGhlCituZXcgVElEOyB0aGUgZmxhZyBpcyBuZXZlciBhIHNraXAgb24g aXRzIG93biwganVzdCBhIGhpbnQgdG8gdGhlCitpbmRleCBBTSdzIGFtaW5zZXJ0IGZvciBv cHRpbWl6YXRpb25zIHN1Y2ggYXMgYm90dG9tLXVwIGRlbGV0aW9uIG9mCitsb2dpY2FsbHkg ZXF1aXZhbGVudCBkdXBsaWNhdGUgZW50cmllcy4KKworRXhlY0luc2VydEluZGV4VHVwbGVz IGNvbnN1bHRzIGlpX0luZGV4VW5jaGFuZ2VkIHRvIGRlY2lkZSB3aGV0aGVyIHRvCitza2lw IGEgbm9uLXN1bW1hcml6aW5nIGluZGV4IGR1cmluZyBhbiBVUERBVEU6IGlmIHRoZSBpbmRl eCBpcyBtYXJrZWQKK3VuY2hhbmdlZCwgdGhlIEhPVCBjaGFpbiByb290J3MgZXhpc3Rpbmcg ZW50cnkgc3RpbGwgcG9pbnRzIGF0IHRoZQordHVwbGUsIHNvIG5vIG5ldyBlbnRyeSBpcyBu ZWVkZWQuICBGb3Igbm9uLUhPVCB1cGRhdGVzIHRoZSBUSUQKK2NoYW5nZWQgYW5kIEV4ZWNT ZXRJbmRleFVuY2hhbmdlZCBtYXJrcyBldmVyeSBpbmRleCBhcyBjaGFuZ2VkLAorZm9yY2lu ZyBlYWNoIHRvIHJlY2VpdmUgYSBuZXcgZW50cnkuICBTdW1tYXJpemluZyBpbmRleGVzIGFs d2F5cyBnZXQKK3RoZSBvcHBvcnR1bml0eSB0byB1cGRhdGUgdGhlaXIgYmxvY2stbGV2ZWwg c3VtbWFyaWVzLgorCisKIEFib3J0IENhc2VzCiAtLS0tLS0tLS0tLQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQKaW5kZXggNGI3MDFlNDI1ODYu LjVkNGEyYzdkNjZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFE TUUuSE9ULUlOREVYRUQKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhP VC1JTkRFWEVECkBAIC01NCwzICs1NCwzMDkgQEAgVGhlIEhPVC1pbmRleGVkIGludmFyaWFu dCAodGhlIG5ldyBjb250cmFjdCkKIAogVGhpcyBpcyB3aGF0IG1ha2VzIGRyb3BwaW5nIGEg c3RhbGUgZW50cnkgc2FmZTogdGhlIGxpdmUgcm93IGlzIGFsd2F5cwogcmVhY2hhYmxlIHRo cm91Z2ggZXhhY3RseSBvbmUgbm9uLXN0YWxlIGVudHJ5IHBlciBpbmRleC4KKworCitFbGln aWJpbGl0eTogSGVhcFVwZGF0ZUhvdEFsbG93YWJsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKworVGhlIGV4ZWN1dG9yIGNvbXB1dGVzIG1vZGlmaWVkX2lkeF9h dHRycyAodGhlIGluZGV4ZWQgYXR0cmlidXRlcyB0aGlzIFVQREFURQorY2hhbmdlZCwgYXR0 cmlidXRlIG51bWJlcnMgb2Zmc2V0IGJ5IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVO dW1iZXIpIGFuZAorcGFzc2VzIGl0IHRvIGhlYXBfdXBkYXRlIHZpYSB0YWJsZV90dXBsZV91 cGRhdGUuICBIZWFwVXBkYXRlSG90QWxsb3dhYmxlCitjbGFzc2lmaWVzIHRoZSB1cGRhdGU6 CisKKyAgSEVBUF9VUERBVEVfQUxMX0lOREVYRVMKKyAgICAgICAgSE9UIGlzIG5vdCBwZXJt aXR0ZWQ7IHRoZSBuZXcgdHVwbGUgZ29lcyBvbiBhIGZyZXNoIFRJRCBhbmQgZXZlcnkKKyAg ICAgICAgaW5kZXggZ2V0cyBhIG5ldyBlbnRyeS4KKyAgSEVBUF9IRUFQX09OTFlfVVBEQVRF CisgICAgICAgIG5vIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBjaGFuZ2Vk LCBzbyBubyBpbmRleCBuZWVkcyBhCisgICAgICAgIG5ldyBlbnRyeSAoY2xhc3NpYyBIT1Qp LgorICBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUKKyAgICAgICAgYXQgbGVhc3Qgb25l IG5vbi1zdW1tYXJpemluZyBpbmRleCdzIGF0dHJpYnV0ZSBjaGFuZ2VkLCBidXQgdGhlCisg ICAgICAgIHVwZGF0ZSBtYXkgc3RheSBvbiB0aGUgSE9UIGNoYWluIGFuZCBtYWludGFpbiBv bmx5IHRoZSBjaGFuZ2VkCisgICAgICAgIGluZGV4ZXMgc2VsZWN0aXZlbHkuCisKK0Egbm9u LXN1bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlIGNoYW5naW5nIHlpZWxkcyBIRUFQX1NF TEVDVElWRV9JTkRFWF9VUERBVEUKK3VubGVzcyBvbmUgb2YgdGhlc2UgZm9yY2VzIEhFQVBf VVBEQVRFX0FMTF9JTkRFWEVTOgorCisgIDEuIFRoZSBsb2dpY2FsLXJlcGxpY2F0aW9uIGFw cGx5IHBhdGgsIGdhdGVkIHBlciBzdWJzY3JpcHRpb24gKHNlZSAiTG9naWNhbAorICAgICBy ZXBsaWNhdGlvbiIgYmVsb3cpLgorICAyLiBBbiBVUERBVEUgdG91Y2hpbmcgYW4gYXR0cmli dXRlIHJlZmVyZW5jZWQgYnkgYW4gZXhwcmVzc2lvbiBpbmRleAorICAgICAoc2VsZWN0aXZl IG1haW50ZW5hbmNlIG9mIGV4cHJlc3Npb24gaW5kZXhlcyBpcyBub3QgaW1wbGVtZW50ZWQg eWV0KS4KKyAgMy4gQW4gVVBEQVRFIHRoYXQgY2hhbmdlcyAqZXZlcnkqIGluZGV4ZWQgYXR0 cmlidXRlOiB0aGVyZSBpcyBubyBpbmRleCB0bworICAgICBza2lwLCBzbyBhIHBsYWluIG5v bi1IT1QgdXBkYXRlIGlzIGNoZWFwZXIuCisKK1N5c3RlbSBjYXRhbG9ncyBzdGF5IGNsYXNz aWMtSE9UIG9ubHk6IGEgY2F0YWxvZyBVUERBVEUgdGhhdCBjaGFuZ2VzIGEKK25vbi1zdW1t YXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBmYWxscyBiYWNrIHRvIEhFQVBfVVBEQVRFX0FM TF9JTkRFWEVTLCBiZWNhdXNlCitjYXRhbG9nIHJlYWRzIGdvIHRocm91Z2ggbWFueSBwYXRo cyBub3QgYWxsIHByb3ZlbiBzYWZlIGFnYWluc3Qgc3RhbGUgY2hhaW4KK2VudHJpZXMuICBU aGlzIGlzIHRoZSBwcmUtSE9ULWluZGV4ZWQgYmVoYXZpb3VyIGZvciBzdWNoIHVwZGF0ZXMu CisKK0lOREVYX0FUVFJfQklUTUFQX0lOREVYRUQgKGNhY2hlZCBpbiByZF9pbmRleGVkYXR0 cikgaXMgdGhlIHNldCBvZiBjb2x1bW5zCityZWZlcmVuY2VkIGJ5IG5vbi1zdW1tYXJpemlu ZyBpbmRleGVzIHBsdXMsIGZvbGRlZCBpbiwgdGhlIGNvbHVtbnMgcmVmZXJlbmNlZAorb25s eSBieSBzdW1tYXJpemluZyBpbmRleGVzLCBzbyB0aGF0IGEgY2hhbmdlIHRvIGEgc3VtbWFy aXppbmctb25seSBjb2x1bW4gaXMKK3NlZW4gYnkgdGhlIG1vZGlmaWVkLWF0dHJpYnV0ZSBj b21wYXJpc29uIChpdHMgaW5kZXggaXMgbWFpbnRhaW5lZCB2aWEgdGhlCitjbGFzc2ljLUhP VCBzdW1tYXJpemluZyBwYXRoKS4gIFJlYWQtc2lkZSBzdGFsZW5lc3MgaXMgZmlsdGVyZWQg YnkgdGhlCitjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAsIHdoaWNoIGlzIGFjY2Vzcy1tZXRo b2QgYWdub3N0aWMsIHNvIGEgY2hhbmdlIHRvIGEKK2NvbHVtbiBjb3ZlcmVkIGJ5IGFueSBp bmRleCBpcyBIT1QtaW5kZXhlZCByZWdhcmRsZXNzIG9mIHRoZSBpbmRleCdzIGFjY2Vzcwor bWV0aG9kLiAgU3VtbWFyaXppbmcgaW5kZXhlcyAoZS5nLiBCUklOKSBrZWVwIG5vIHBlci1y b3cgbGVhZiB0aGF0IGNhbiBnbworc3RhbGUgYW5kIGFyZSBtYWludGFpbmVkIHZpYSB0aGUg c3VtbWFyaXppbmcgcGF0aC4KKworCitUaGUgd3JpdGUgcGF0aAorLS0tLS0tLS0tLS0tLS0K KworRm9yIEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURSwgaGVhcF91cGRhdGU6CisKKyAg LSBzdG9yZXMgdGhlIG5ldyB0dXBsZSBhcyBhIGhlYXAtb25seSB0dXBsZSBvbiB0aGUgc2Ft ZSBwYWdlLCBsaW5rZWQgaW50bworICAgIHRoZSBjaGFpbiB2aWEgdF9jdGlkLCBleGFjdGx5 IGxpa2UgY2xhc3NpYyBIT1Q7IGFuZAorICAtIHNldHMgSEVBUF9JTkRFWEVEX1VQREFURUQg KHRfaW5mb21hc2syIGJpdCAweDA4MDApIG9uIHRoZSBuZXcgdHVwbGUgdG8KKyAgICBtYXJr IHRoYXQgdGhlIGNoYWluIG5vdyBjYXJyaWVzIGRpZmZlcmluZyBrZXlzLgorCitUaGVyZSBp cyBubyBzZXBhcmF0ZSBvbi1wYWdlIG1ldGEtaXRlbTogdGhlIGJpdCBvbiB0aGUgaGVhcC1v bmx5IHR1cGxlIGlzIHRoZQorZW50aXJlIG9uLWRpc2sgZm9vdHByaW50LiAgQXMgZm9yIGNs YXNzaWMgSE9ULCBpZiB0aGUgbmV3IHR1cGxlIGRvZXMgbm90IGZpdAorb24gdGhlIHBhZ2Ug dGhlIHVwZGF0ZSBmYWxscyBiYWNrIHRvIGEgbm9uLUhPVCAobmV3LXBhZ2UpIHVwZGF0ZS4K KworVGhlIGlubGluZSBtb2RpZmllZC1hdHRycyBiaXRtYXAgaXMgY2VpbChuYXR0cy84KSBi eXRlcywgc2l6ZWQgYnkgdGhlIHR1cGxlJ3MKK09XTiBhdHRyaWJ1dGUgY291bnQgYXQgd3Jp dGUgdGltZSAoSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHMpLCBub3QgdGhlIHJlbGF0aW9uJ3MK K2N1cnJlbnQgbmF0dHMuICBBREQgQ09MVU1OIHJhaXNlcyB0aGUgcmVsYXRpb24ncyBuYXR0 cyB3aXRob3V0IHJld3JpdGluZworZXhpc3RpbmcgdHVwbGVzLCBzbyBvbmUgY2hhaW4gY2Fu IGhvbGQgaG9wcyB3aG9zZSBiaXRtYXBzIHdlcmUgc2l6ZWQgZm9yCitkaWZmZXJlbnQgKHNt YWxsZXIpIG5hdHRzOyBldmVyeSBjb25zdW1lciBsb2NhdGVzIGFuZCBzaXplcyBhIGhvcCdz IGJpdG1hcAorZnJvbSB0aGF0IGhvcCdzIG93biB3cml0ZS10aW1lIG5hdHRzIChIb3RJbmRl eGVkVHVwbGVCaXRtYXBOYXR0cyBpbgorYWNjZXNzL2hvdF9pbmRleGVkLmgpLiAgQSBjb2xs YXBzZS1zdXJ2aXZvciBzdHViIG92ZXJ3cml0ZXMgbmF0dHMgd2l0aCBpdHMgMAorc2VudGlu ZWwsIHNvIGl0IHByZXNlcnZlcyBpdHMgd3JpdGUtdGltZSBuYXR0cyBpbiB0aGUgdW51c2Vk IGJsb2NrLW51bWJlciBoYWxmCitvZiB0X2N0aWQgKHRoZSBvZmZzZXQgaGFsZiBpcyB0aGUg Zm9yd2FyZCBsaW5rKS4gIEJpdCBwb3NpdGlvbnMgYXJlIGF0dHJpYnV0ZQorYmFzZWQgYW5k IGlkZW50aWNhbCBhY3Jvc3Mgc2l6ZXMsIHNvIGEgc21hbGxlciBiaXRtYXAgc2ltcGx5IE9S cyBpbnRvIHRoZSBsb3cKK2J5dGVzIG9mIGEgbGFyZ2VyIGNyb3NzZWQtYXR0cmlidXRlIGFj Y3VtdWxhdG9yLiAgRFJPUCBDT0xVTU4ga2VlcHMgdGhlIGF0dG51bQorc2xvdCAoaXQgbmV2 ZXIgcmVudW1iZXJzKSwgc28gZXhpc3RpbmcgYml0bWFwcyBzdGF5IGFsaWduZWQuCisKK0Fm dGVyIHRoZSB1cGRhdGUsIHRhYmxlX3R1cGxlX3VwZGF0ZSByZXBvcnRzIHVwZGF0ZV9hbGxf aW5kZXhlcyA9IGZhbHNlICh0aGUKK3R1cGxlIGlzIGhlYXAtb25seSkuICBUaGUgZXhlY3V0 b3IgdGhlbiBtYWludGFpbnMgaW5kZXhlcyBzZWxlY3RpdmVseToKK0V4ZWNTZXRJbmRleFVu Y2hhbmdlZCBtYXJrcyBlYWNoIGluZGV4IHdob3NlIGtleSBhdHRyaWJ1dGVzIGRpZCBub3Qg Y2hhbmdlIGFzCit1bmNoYW5nZWQsIGFuZCBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMgaW5zZXJ0 cyBhIGZyZXNoIGVudHJ5IG9ubHkgaW50byB0aGUKK2luZGV4ZXMgdGhhdCBkaWQgY2hhbmdl LiAgRWFjaCBzdWNoIGVudHJ5IHBvaW50cyBhdCB0aGUgbmV3IHR1cGxlJ3Mgb3duIFRJRC4K KworCitUaGUgY2hhaW4gYW5kIHRoZSB0d28ga2luZHMgb2YgbGVhZiBlbnRyeQorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FmdGVyIGEgSE9ULWlu ZGV4ZWQgdXBkYXRlIHRoZXJlIGFyZSwgZm9yIGEgY2hhbmdlZCBpbmRleCwgdHdvIGtpbmRz IG9mIGxlYWYKK2VudHJ5IHJlYWNoaW5nIHRoZSBjaGFpbjoKKworICAtIHRoZSBwcmUtdXBk YXRlIGVudHJ5IGZvciB0aGUgT0xEIGtleSwgc3RpbGwgcG9pbnRpbmcgYXQgYW4gb2xkZXIg Y2hhaW4KKyAgICBtZW1iZXIgKG5vdyBzdGFsZSBvbmNlIHRoZSB3YWxrIGNyb3NzZXMgdGhl IEhPVC1pbmRleGVkIGhvcCk7IGFuZAorICAtIHRoZSBmcmVzaCBlbnRyeSBmb3IgdGhlIE5F VyBrZXksIHBvaW50aW5nIGF0IHRoZSBuZXcgaGVhcC1vbmx5IHR1cGxlLgorCitJbmRleCBi dWlsZCBhbmQgUkVJTkRFWCBpbmRleCBhIGxpdmUgSE9ULWluZGV4ZWQgdHVwbGUgdW5kZXIg aXRzIE9XTiBUSUQgKG5vdAordGhlIGNoYWluIHJvb3QpLCBzbyB0aGUgZnJlc2hseSBidWls dCBlbnRyeSBoYXMgbm8gaG9wIGFmdGVyIGl0IGFuZCBpcyBuZXZlcgordHJlYXRlZCBhcyBz dGFsZS4KKworCitSZWFkLXNpZGUgY29ycmVjdG5lc3M6IHRoZSBjcm9zc2VkLWF0dHJpYnV0 ZSBiaXRtYXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorCitoZWFwX2hvdF9zZWFyY2hfYnVmZmVyIHdhbGtzIHRoZSBjaGFpbiBmcm9t IHRoZSBlbnRyeSdzIHRhcmdldCB0byB0aGUgbGl2ZQordmlzaWJsZSB0dXBsZS4gIEVhY2gg aG9wIGl0IGNyb3NzZXMgYWZ0ZXIgdGhlIGVudHJ5J3Mgb3duIHRhcmdldCAtLSBhIGxpdmUK K0hPVC1pbmRleGVkIG1lbWJlciwgYSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViLCBvciBhIGNv bGxhcHNlZCAocmVkaXJlY3RlZCkKK3ByZWZpeCAtLSBjb250cmlidXRlcyB0aGF0IGhvcCdz IGlubGluZSBtb2RpZmllZC1hdHRycyBiaXRtYXAgdG8gYSBydW5uaW5nCit1bmlvbiwgSW5k ZXhGZXRjaFRhYmxlRGF0YS54c19ob3RfaW5kZXhlZF9jcm9zc2VkLCBhbmQgc2V0cworKmhv dF9pbmRleGVkX3JlY2hlY2sgdG8gZmxhZyB0aGF0IHRoZSB3YWxrIGNyb3NzZWQgYXQgbGVh c3Qgb25lIHN1Y2ggaG9wLgorCitUaGUgaW5kZXgtYWNjZXNzIGxheWVyIChpbmRleF9mZXRj aF9oZWFwKSB0ZXN0cyB0aGF0IHVuaW9uIGFnYWluc3QgdGhlCithcnJpdmluZyBpbmRleCdz IGtleSBjb2x1bW5zLiAgQW55IG92ZXJsYXAgbWVhbnMgYSBjcm9zc2VkIGhvcCBjaGFuZ2Vk IG9uZSBvZgordGhpcyBpbmRleCdzIGlucHV0cywgc28gdGhlIGVudHJ5J3Mgc3RvcmVkIGtl eSBubyBsb25nZXIgbWF0Y2hlcyB0aGUgbGl2ZQordHVwbGU6IEluZGV4U2NhbkRlc2MueHNf aG90X2luZGV4ZWRfc3RhbGUgaXMgc2V0LCBhbmQgSW5kZXhTY2FuLAorSW5kZXhPbmx5U2Nh biwgQ0xVU1RFUiwgYW5kIHRoZSBsb2dpY2FsLXJlcGxpY2F0aW9uIHJlcGxpY2EtaWRlbnRp dHkgbG9va3VwcworZHJvcCB0aGUgdHVwbGUuICBJZiB0aGUgdW5pb24gaXMgZGlzam9pbnQg ZnJvbSB0aGUgaW5kZXgncyBrZXkgY29sdW1ucywgbm9uZQorb2YgdGhlIGluZGV4J3MgaW5w dXRzIGNoYW5nZWQgYWNyb3NzIHRoZSBjaGFpbiwgc28gdGhlIGVudHJ5IGlzIGN1cnJlbnQg YW5kCit0aGUgcm93IGlzIHJldHVybmVkLgorCitUaGUgdW5pb24gaXMgY29tcGxldGU6IGV2 ZXJ5IGNyb3NzZWQgbGl2ZSBob3AgYW5kIHN0dWIgY29udHJpYnV0ZXMgaXRzCitiaXRtYXAs IGFuZCBjaGFpbiBjb2xsYXBzZSBvbmx5IGV2ZXIgcmVjbGFpbXMgYSBtZW1iZXIgd2hvc2Ug YXR0cmlidXRlcyBhcmUgYQorc3Vic2V0IG9mIHRoZSBzdXJ2aXZpbmcgbGF0ZXIgaG9wcyAo c2VlICJQcnVuZSBhbmQgY2hhaW4gY29sbGFwc2UiKSwgc28gYQorcmVhZGVyIGNyb3NzaW5n IHRoZSBzdXJ2aXZvcnMgc3RpbGwgc2VlcyBldmVyeSBjb2xsYXBzZWQgaG9wJ3MgYXR0cmli dXRlcy4KK0Rpc2pvaW50bmVzcyB0aGVyZWZvcmUgcmVsaWFibHkgbWVhbnMgdGhlIGVudHJ5 IGlzIGN1cnJlbnQuCisKK1RoaXMgbmVlZHMgbm8gdmFsdWUgY29tcGFyaXNvbiBhbmQgbm8g bGVhZiBrZXksIHNvIGl0IHNlcnZlcyBlcXVhbGl0eSwgcmFuZ2UsCithbmQgaW5lcXVhbGl0 eSBzY2FucyB1bmlmb3JtbHksIHdvcmtzIGZvciBhbnkgYWNjZXNzIG1ldGhvZCB3aG9zZSBj b2x1bW5zIGFyZQorZWxpZ2libGUgZm9yIEhPVC1pbmRleGVkIHVwZGF0ZXMsIGFuZCBpcyBj b3JyZWN0IGV2ZW4gd2hlbiBhIGtleSBpcyBjeWNsZWQKK2F3YXkgYW5kIGJhY2sgKFggLT4g WSAtPiBYKTogdGhlIHVwZGF0ZSB0aGF0IHJlc3RvcmVkIHRoZSB2YWx1ZSBwbGFudGVkIGEK K2ZyZXNoIGVudHJ5IHBvaW50aW5nIGF0IGl0cyBvd24gbGl2ZSB0dXBsZSwgd2hvc2Ugd2Fs ayBjcm9zc2VzIG5vIGxhdGVyCitrZXktY2hhbmdpbmcgaG9wLCBzbyB0aGF0IGVudHJ5IHVu aXF1ZWx5IHJldHVybnMgdGhlIHJvdyB3aGlsZSB0aGUgc3RhbGUKK2FuY2VzdG9yIGVudHJ5 IC0tIHdob3NlIHdhbGsgZG9lcyBjcm9zcyB0aGUgY2hhbmdpbmcgaG9wcyAtLSBpcyBkcm9w cGVkLgorCitUaGUgcmVhZCBtZWNoYW5pc20gbmV2ZXIgcmVjb25zdHJ1Y3RzIG9yIGNvbXBh cmVzIGFuIGluZGV4IGtleSwgc28gaXQgbmVlZHMgbm8KK3Blci1hY2Nlc3MtbWV0aG9kIHN1 cHBvcnQuICAobmJ0cmVlIGtlZXBzIGFuIGludGVybmFsIGxlYWYta2V5IGNvbXBhcmlzb24s CitfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYsIHVzZWQgb25seSBieSBfYnRfY2hlY2tfdW5p cXVlIHRvIHRlbGwgYSBzdGFsZSBjaGFpbgorZW50cnkgZnJvbSBhIGxpdmUgZHVwbGljYXRl IGR1cmluZyBhIHVuaXF1ZSBpbnNlcnQ7IGl0IGlzIG5vdCBwYXJ0IG9mIHRoZSByZWFkCitw YXRoLikKKworVW5pcXVlIGNoZWNrcy4gIF9idF9jaGVja191bmlxdWUgZmV0Y2hlcyB0aGUg Y29uZmxpY3RpbmcgdHVwbGUgdW5kZXIKK1NuYXBzaG90RGlydHkgYW5kLCB3aGVuIHRoZSBj aGFpbiB3YWxrIGNyb3NzZWQgYSBIT1QtaW5kZXhlZCBob3AsIGNvbXBhcmVzIHRoZQorbGl2 ZSB0dXBsZSdzIGN1cnJlbnQga2V5IGFnYWluc3QgdGhlIGFycml2aW5nIGxlYWYgd2l0aCB0 aGUgaW5kZXgncyBvd24KK29yZGVyaW5nIHByb2NlZHVyZSAoX2J0X2hlYXBfa2V5c19lcXVh bF9sZWFmLCB1c2luZyBCVE9SREVSX1BST0MgdW5kZXIgZWFjaAorY29sdW1uJ3MgY29sbGF0 aW9uKS4gIFRoaXMgcmVjaGVjayBpcyByZWFjaGVkIG9ubHkgZm9yIGFuIGluZGV4IHJlY2Vp dmluZyBhCitmcmVzaCBlbnRyeSBkdXJpbmcgYSBIT1QtaW5kZXhlZCB1cGRhdGU7IEhlYXBV cGRhdGVIb3RBbGxvd2FibGUgZGlzcXVhbGlmaWVzCithbnkgVVBEQVRFIHRoYXQgdG91Y2hl cyBhbiBleHByZXNzaW9uLWluZGV4IGF0dHJpYnV0ZSwgc28gdGhlIGluZGV4IGhlcmUgbmV2 ZXIKK2hhcyBhbiBleHByZXNzaW9uIGtleSBjb2x1bW4gKGV2ZXJ5IGtleSBjb2x1bW4gaXMg YSBwbGFpbiBhdHRyaWJ1dGUpLCBhbmQgdGhlCitjb21wYXJpc29uIHJlYWRzIGF0dHJpYnV0 ZSB2YWx1ZXMgc3RyYWlnaHQgZnJvbSB0aGUgaGVhcCBzbG90IC0tIG5vIGV4cHJlc3Npb24K K2V2YWx1YXRpb24gb3IgZXhlY3V0b3Igc3RhdGUgaXMgbmVlZGVkLiAgVXNpbmcgdGhlIG9w Y2xhc3MgY29tcGFyYXRvciAtLSBub3QgYQorYml0d2lzZSBpbWFnZSBjb21wYXJpc29uIC0t IG1lYW5zIGEga2V5Cit0aGF0IHdhcyBjeWNsZWQgYXdheSBhbmQgYmFjayAoWCAtPiBZIC0+ IFgpIGRvZXMgbm90IHJhaXNlIGEgc3B1cmlvdXMKK2R1cGxpY2F0ZSBhZ2FpbnN0IGl0cyBv d24gc3RhbGUgbGVhZiwgd2hpbGUgYSBnZW51aW5lbHkgbGl2ZSBkdXBsaWNhdGUgKGVxdWFs Cit1bmRlciB0aGUgb3BjbGFzcyBldmVuIGlmIG5vdCBiaXR3aXNlLWlkZW50aWNhbCwgZS5n LiBudW1lcmljIDEuMCB2cyAxLjAwKSBpcworc3RpbGwgZGV0ZWN0ZWQuICAoQXBwZW5kaXgg QSBtb3RpdmF0ZXMgdGhpcyByZWNoZWNrIGluIGRldGFpbC4pCisKKworQXBwZW5kaWNlcwor LS0tLS0tLS0tLQorCitBcHBlbmRpeCBBOiBXaHkgdGhlIHVuaXF1ZS1jaGVjayBwYXRoIG5l ZWRzIGEgdmFsdWUgY29tcGFyaXNvbiBhdCBhbGwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlz IGlzIHRoZSBvbmUgcGxhY2UgSE9ULWluZGV4ZWQgZG9lcyBjb21wYXJlIGEga2V5IHZhbHVl LCBldmVuIHRob3VnaCB0aGUKK3JlYWQgcGF0aCBkZWxpYmVyYXRlbHkgYXZvaWRzIG9uZS4g IFRoZSByZXN0IG9mIHRoaXMgYXBwZW5kaXggZXhwbGFpbnMgd2h5IHRoZQorY29tcGFyaXNv biBpcyBuZWVkZWQsIHdoeSBpdCBtdXN0IHVzZSB0aGUgb3BjbGFzcyBjb21wYXJhdG9yIHJh dGhlciB0aGFuIGEKK2JpdHdpc2Ugb25lLCBhbmQgd2h5IHRoZSBBQkEgY2FzZSBpcyB3aGF0 IGZvcmNlcyB0aGUgaXNzdWUuCisKKzEuIFRoZSBzZXR1cDogd2h5IGEgdW5pcXVlIGluc2Vy dCBjYW4gZXZlbiByZWFjaCBhIHN0YWxlIGxlYWYKKworVW5kZXIgY2xhc3NpYyBIT1QsIGFu IGluZGV4IGhhcyBleGFjdGx5IG9uZSBsZWFmIGVudHJ5IHBlciBsb2dpY2FsIHJvdywgYW5k CitldmVyeSBsZWFmIGVudHJ5J3Mga2V5IG1hdGNoZXMgdGhlIGxpdmUgdHVwbGUgaXQgY2hh aW4tcmVzb2x2ZXMgdG8uICBTbworX2J0X2NoZWNrX3VuaXF1ZSBjYW4gdHJ1c3Q6ICJpZiBJ IGZpbmQgYSBsZWFmIHdob3NlIGtleSBlcXVhbHMgbXkgbmV3IGtleSwgYW5kCitpdCByZXNv bHZlcyB0byBhIGxpdmUgdHVwbGUsIHRoYXQncyBhIGdlbnVpbmUgZHVwbGljYXRlLiIKKwor SE9UL1NJVSBicmVha3MgdGhhdCBvbmUtdG8tb25lIGNvcnJlc3BvbmRlbmNlLiAgQSBIT1Qt aW5kZXhlZCBVUERBVEUgdGhhdAorY2hhbmdlcyBjb2x1bW4gYSBmcm9tIFggdG8gWToKKyAt IGluc2VydHMgYSBmcmVzaCBsZWFmIGVudHJ5IChZIC0+IG5ldyB0dXBsZSkgaW50byBpZHhf YSwgYW5kCisgLSBsZWF2ZXMgdGhlIG9sZCBsZWFmIGVudHJ5IChYIC0+IG9sZCBjaGFpbiBy b290KSBpbiBwbGFjZS4KKworVGhhdCBvbGQgKFggLT4gcm9vdCkgZW50cnkgaXMgbm93IHN0 YWxlOiBpdCBzdGlsbCBjaGFpbi1yZXNvbHZlcyB0byBhIGxpdmUKK3R1cGxlLCBidXQgdGhh dCBsaXZlIHR1cGxlJ3MgY3VycmVudCBhIGlzIFksIG5vdCBYLiAgVGhlIHJlYWQgcGF0aCBo YW5kbGVzIHRoaXMKK3dpdGggdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCAobm8gdmFs dWUgY29tcGFyaXNvbiBuZWVkZWQpOiBpZiB0aGUgd2FsaworZnJvbSB0aGUgZW50cnkncyB0 YXJnZXQgdG8gdGhlIGxpdmUgdHVwbGUgY3Jvc3NlcyBhIGhvcCB0aGF0IGNoYW5nZWQgYSwg dGhlCitlbnRyeSBpcyBzdGFsZSBhbmQgZHJvcHBlZC4KKworV2hlbiB5b3Ugbm93IElOU0VS VCBhIHJvdyB3aXRoIGEgPSBYLCBfYnRfY2hlY2tfdW5pcXVlIHNjYW5zIGlkeF9hIGZvciBr ZXkgWAorYW5kIGZpbmRzIHRoYXQgc3RhbGUgKFggLT4gcm9vdCkgbGVhZi4gIEl0IG11c3Qg ZGVjaWRlOiBpcyB0aGlzIGEgcmVhbAorY29uZmxpY3Q/CisKKzIuIFdoeSB0aGUgcmVhZC1w YXRoIGJpdG1hcCBpcyBub3Qgc3VmZmljaWVudCBoZXJlCisKK1RoZSByZWFkIHBhdGgncyBs b2dpYyBpczogInRoaXMgZW50cnkgY3Jvc3NlZCBhIGhvcCB0aGF0IGNoYW5nZWQgYSA9PiBz dGFsZSA9PgorZHJvcCBpdCwgdGhlIGZyZXNoIGVudHJ5IHdpbGwgc3VwcGx5IHRoZSByb3cu IiAgRm9yIHNjYW5zIHRoYXQncyBjb3JyZWN0IGFuZAorY29tcGxldGUsIGJlY2F1c2UgZXZl cnkgbGl2ZSByb3cgaGFzIGV4YWN0bHkgb25lIG5vbi1zdGFsZSBlbnRyeSB0aGF0CityZS1z dXBwbGllcyBpdC4KKworQnV0IGEgdW5pcXVlIGNoZWNrIGlzIGFza2luZyBhIGRpZmZlcmVu dCBxdWVzdGlvbi4gIEl0IGlzIG5vdCAic2hvdWxkIEkgcmV0dXJuCit0aGlzIHJvdz8iIC0t IGl0IGlzICJkb2VzIHRoZSBsaXZlIHR1cGxlIHRoaXMgZW50cnkgcmVzb2x2ZXMgdG8gY29u ZmxpY3Qgd2l0aAordGhlIGtleSBJJ20gaW5zZXJ0aW5nPyIgIFRoZSBiaXRtYXAgY2FuIG9u bHkgdGVsbCB5b3UgImFuIGluZGV4ZWQgYXR0cmlidXRlCitjaGFuZ2VkIHNvbWV3aGVyZSBv biB0aGUgY2hhaW4uIiAgSXQgY2Fubm90IHRlbGwgeW91IHdoYXQgdGhlIGxpdmUgdmFsdWUg aXMKK25vdywgYW5kIHRoYXQgaXMgZXhhY3RseSB3aGF0IHlvdSBuZWVkIHRvIGtub3cgdG8g ZGV0ZWN0IGEgZHVwbGljYXRlLgorCitUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBBQkEgcHJv YmxlbS4gIENvbnNpZGVyOgorCisgIElOU0VSVCAoYT0xMCkgICAgICAgICAgICAgICAgICBM UFsxXSBhPTEwICAgKHJvb3QpCisgIFVQREFURSBhPTExICAgKEhPVC1pbmRleGVkKSAgICBM UFsyXSBhPTExICAgYml0bWFwIHthfSwgbGVhZiAoMTEpLT5MUFsyXQorICBVUERBVEUgYT0x MCAgIChIT1QtaW5kZXhlZCkgICAgTFBbM10gYT0xMCAgIGJpdG1hcCB7YX0sIGxlYWYgKDEw KS0+TFBbM10sIGxpdmUKKworaWR4X2Egbm93IGhhcyBsZWF2ZXMgKDEwKS0+TFBbMV0gW3N0 YWxlIGFuY2VzdG9yXSwgKDExKS0+TFBbMl0gW3N0YWxlXSwgYW5kCisoMTApLT5MUFszXSBb ZnJlc2gsIGxpdmVdLgorCitOb3cgSU5TRVJUIChhPTEwKSwgYSBnZW51aW5lIGR1cGxpY2F0 ZSBvZiB0aGUgbGl2ZSByb3cuICBfYnRfY2hlY2tfdW5pcXVlIHNjYW5zCitmb3Iga2V5IDEw IGFuZCBmaW5kcyB0aGUgKDEwKS0+TFBbMV0gc3RhbGUgYW5jZXN0b3IgZW50cnkuICBUaGUg Y2hhaW4gd2FsayBmcm9tCitMUFsxXSB0byB0aGUgbGl2ZSB0dXBsZSBMUFszXSBjcm9zc2Vz IGhvcHMgdGhhdCBjaGFuZ2VkIGEgKDEwLT4xMSwgdGhlbgorMTEtPjEwKSwgc28gdGhlIGJp dG1hcCBzYXlzICJzdGFsZS4iICBJZiB0aGUgdW5pcXVlIGNoZWNrIHRydXN0ZWQgdGhlIGJp dG1hcAorYWxvbmUgaXQgd291bGQgc2tpcCAoMTApLT5MUFsxXSBhcyBzdGFsZSBhbmQgbWlz cyB0aGUgcmVhbCBkdXBsaWNhdGUuICBUaGUKK2JpdG1hcCBpcyBmb29sZWQgYmVjYXVzZSBh IGNoYW5nZWQgKHNvIHRoZSBiaXQgaXMgc2V0KSBldmVuIHRob3VnaCBpdCBjaGFuZ2VkCiti YWNrIHRvIHRoZSBzYW1lIHZhbHVlOiAiYW4gYXR0cmlidXRlIGNoYW5nZWQgb24gdGhlIGNo YWluIiBpcyBub3QgInRoZSBsaXZlCit2YWx1ZSBkaWZmZXJzIGZyb20gdGhpcyBsZWFmJ3Mg a2V5LiIgIFVuZGVyIEFCQSB0aGV5IGRpdmVyZ2UuCisKK1RoZSBzaGFycGVyIGNhc2UgaXMg Y29uY3VycmVuY3kuICBXaGlsZSB0aGUgcmVzdG9yaW5nIFVQREFURSAoYTogMTEgLT4gMTAp IGlzCitpbiBmbGlnaHQsIGl0IGhhcyB3cml0dGVuIGl0cyBuZXcgaGVhcCB0dXBsZSBidXQg bm90IHlldCBpbnNlcnRlZCB0aGUgZnJlc2gKKygxMCktPkxQWzNdIGxlYWYuICBBIGNvbmN1 cnJlbnQgSU5TRVJUIChhPTEwKSBydW5uaW5nIGl0cyBfYnRfY2hlY2tfdW5pcXVlIHNjYW4K K2luIHRoYXQgd2luZG93IHNlZXMgb25seSB0aGUgc3RhbGUgKDEwKS0+TFBbMV0gYW5jZXN0 b3IuICBUaGUgdmFsdWUgcmVjaGVjaworYmVsb3cgbWFrZXMgdGhhdCBoaXQgcmVzb2x2ZSB0 byB4d2FpdCBvbiB0aGUgaW4tZmxpZ2h0IHVwZGF0ZXIgKHZpYQorX2J0X2RvaW5zZXJ0J3Mg d2FpdC1hbmQtcmVjaGVjayksIHNvIHRoZSBpbnNlcnRlciByZS1jaGVja3MgYWZ0ZXIgdGhl IHVwZGF0ZXIKK2NvbW1pdHMgYW5kIGZpbmRzIHRoZSBjb25mbGljdC4gIEEgYml0bWFwLW9u bHkgdmVyZGljdCB3b3VsZCBza2lwIHRoZSBhbmNlc3RvcgorYmVmb3JlIHJlYWNoaW5nIHRo ZSB4d2FpdCBsb2dpYyBhbmQgYWRtaXQgYSBkdXBsaWNhdGUgLS0gd2hpY2ggaXMgd2h5IHRo ZQorcmVjaGVjayBpcyBhIGNvcnJlY3RuZXNzIHJlcXVpcmVtZW50LCBub3QgbWVyZWx5IGFu IG9wdGltaXphdGlvbi4KKworMy4gV2h5IGEgdmFsdWUgY29tcGFyaXNvbiBmaXhlcyBpdCwg YW5kIHdoeSBpdCBtdXN0IGJlIHRoZSBvcGNsYXNzIGNvbXBhcmF0b3IKKworU28gdGhlIHVu aXF1ZSBwYXRoIG5lZWRzIHRvIGxvb2sgYXQgdGhlIGFjdHVhbCBsaXZlIHZhbHVlLCBub3Qg anVzdCAiZGlkCitzb21ldGhpbmcgY2hhbmdlLiIgIF9idF9jaGVja191bmlxdWUgZmV0Y2hl cyB0aGUgY29uZmxpY3RpbmcgdHVwbGUgdW5kZXIKK1NuYXBzaG90RGlydHkgYW5kLCB3aGVu IGhpX3JlY2hlY2sgc2F5cyBhIEhPVC1pbmRleGVkIGhvcCB3YXMgY3Jvc3NlZCwgY2FsbHMK K19idF9oZWFwX2tleXNfZXF1YWxfbGVhZiB0byBjb21wYXJlIHRoZSBsaXZlIHR1cGxlJ3Mg Y3VycmVudCBrZXkgYWdhaW5zdCB0aGUKK2Fycml2aW5nIGxlYWYncyBzdG9yZWQga2V5Ogor CisgLSBsaXZlIGtleSBlcXVhbHMgdGhlIGxlYWYga2V5IC0+IGdlbnVpbmUgZHVwbGljYXRl IChvciBhbiBpbi1mbGlnaHQgY29uZmxpY3QKKyAgIHJlYWNoZWQgYXMgeHdhaXQpIC0tIGNv cnJlY3Q6IEFCQSBiYWNrIHRvIFggaXMgYSByZWFsIGNvbmZsaWN0IHdpdGggYSBuZXcgWC4K KyAtIGxpdmUga2V5IGRpZmZlcnMgLT4gdGhlIGxlYWYgaXMgdHJ1bHkgc3RhbGUgLT4gc2tp cCBpdCAodGhlIGZyZXNoIGVudHJ5CisgICBoYW5kbGVzIHRoZSByZWFsIHJvdykuCisKK1do aWNoIGVxdWFsaXR5PyAgVHdvIGNhbmRpZGF0ZXM6CisKK0JpdHdpc2UvaW1hZ2UgY29tcGFy aXNvbiAoZGF0dW1faW1hZ2VfZXEpIGNvbXBhcmVzIHJhdyBieXRlcy4gIFRoYXQgaXMgd3Jv bmcKK2ZvciB1bmlxdWUgY2hlY2tpbmcgaW4gdGhlIGRhbmdlcm91cyBkaXJlY3Rpb24uICBV bmlxdWVuZXNzIGluIFBvc3RncmVTUUwgaXMKK2RlZmluZWQgYnkgdGhlIGluZGV4IG9wY2xh c3MncyBlcXVhbGl0eSBvcGVyYXRvciwgbm90IGJ5dGUgaWRlbnRpdHksIGFuZCBtYW55Cit0 eXBlcyBoYXZlIHZhbHVlcyBlcXVhbCB1bmRlciB0aGUgb3BjbGFzcyBidXQgYnl0ZS1kaXN0 aW5jdDoKKyAtIG51bWVyaWM6IDEuMCBhbmQgMS4wMCBhcmUgb3BjbGFzcy1lcXVhbCwgZGlm ZmVyZW50IG9uLWRpc2sgYnl0ZXMuCisgLSBmbG9hdDg6IC0wLjAgYW5kICswLjAgYXJlIGVx dWFsLCBkaWZmZXJlbnQgYml0IHBhdHRlcm5zLgorIC0gdGV4dC9jaXRleHQgdW5kZXIgYSBu b25kZXRlcm1pbmlzdGljIGNvbGxhdGlvbjogY2Fub25pY2FsbHktZXF1aXZhbGVudAorICAg c3RyaW5ncyB0aGF0IGFyZSBub3QgYnl0ZS1pZGVudGljYWwuCisKK0EgYml0d2lzZSBjb21w YXJpc29uIHdvdWxkIGNvbmNsdWRlICJub3QgZXF1YWwgPT4gc3RhbGUgPT4gc2tpcCIgZm9y IGEgbGl2ZQorMS4wMCB2ZXJzdXMgYW4gaW5zZXJ0ZWQgMS4wIGFuZCBtaXNzIGEgZ2VudWlu ZSB2aW9sYXRpb24gLS0gYSBjb3JyZWN0bmVzcyBob2xlCithcyBiYWQgYXMgdGhlIEFCQSBv bmUuCisKK1NvIF9idF9oZWFwX2tleXNfZXF1YWxfbGVhZiB1c2VzIHRoZSBpbmRleCdzIG93 biBCVE9SREVSX1BST0MgKGJ0cmVlIHN1cHBvcnQKK2Z1bmN0aW9uIDEpIHVuZGVyIGVhY2gg a2V5IGNvbHVtbidzIGNvbGxhdGlvbiwgdGhlIHNhbWUgbWFjaGluZXJ5IF9idF9jb21wYXJl CithbmQgX2J0X21rc2NhbmtleSB1c2UgdG8gZGVmaW5lIGVxdWFsaXR5IGZvciB0aGUgaW5k ZXguICBBIHplcm8gcmVzdWx0IG1lYW5zCisiZXF1YWwgYXMgdGhlIGluZGV4IGRlZmluZXMg ZXF1YWxpdHksIiB3aGljaCBpcyBwcmVjaXNlbHkgdGhlIHVuaXF1ZS12aW9sYXRpb24KK2Nv bmRpdGlvbiwgYW5kIHRoZSB2ZXJkaWN0IGFncmVlcyB3aXRoIHRoZSBpbmRleCdzIG93biBu b3Rpb24gb2YgdW5pcXVlbmVzcyBpbgorYm90aCBkaXJlY3Rpb25zLgorCis0LiBXaHkgbm8g ZXhwcmVzc2lvbiBldmFsdWF0aW9uIGlzIG5lZWRlZAorCitfYnRfaGVhcF9rZXlzX2VxdWFs X2xlYWYgcmVhZHMgZWFjaCBrZXkgY29sdW1uIHN0cmFpZ2h0IGZyb20gdGhlIGhlYXAgc2xv dAorKHNsb3RfZ2V0YXR0cikgYW5kIGNvbXBhcmVzIGl0IHRvIHRoZSBsZWFmIGRhdHVtOyBp dCBkb2VzIG5vdCBldmFsdWF0ZSBpbmRleGVkCitleHByZXNzaW9ucyBhbmQgbmVlZHMgbm8g ZXhlY3V0b3Igc3RhdGUuICBUaGF0IGlzIHN1ZmZpY2llbnQgYmVjYXVzZSB0aGUKK3JlY2hl Y2sgaXMgb25seSBldmVyIHJlYWNoZWQgZm9yIGFuIGluZGV4IHJlY2VpdmluZyBhIGZyZXNo IGVudHJ5IGR1cmluZyBhCitIT1QtaW5kZXhlZCB1cGRhdGUsIGFuZCBIZWFwVXBkYXRlSG90 QWxsb3dhYmxlIGRpc3F1YWxpZmllcyBhbnkgVVBEQVRFIHRoYXQKK3RvdWNoZXMgYW4gYXR0 cmlidXRlIHJlZmVyZW5jZWQgYnkgYW4gZXhwcmVzc2lvbiBpbmRleAorKElOREVYX0FUVFJf QklUTUFQX0VYUFJFU1NJT04gY2FwdHVyZXMgZXZlcnkgc3VjaCBhdHRyaWJ1dGUpLiAgU28g YSBIT1QtaW5kZXhlZAorY2hhaW4gbmV2ZXIgaGFzIGEgY3Jvc3NlZCBob3AgYWZmZWN0aW5n IGFuIGV4cHJlc3Npb24gaW5kZXgsIHRoZSBpbmRleCByZWFjaGluZwordGhlIHJlY2hlY2sg bmV2ZXIgaGFzIGFuIGV4cHJlc3Npb24ga2V5IGNvbHVtbiAoZXZlcnkgaW5ka2V5IGlzIGEg cmVhbAorYXR0cmlidXRlIG51bWJlciksIGFuZCB0aGVyZSBpcyBub3RoaW5nIHRvIGV2YWx1 YXRlLiAgSWYgc2VsZWN0aXZlIG1haW50ZW5hbmNlCitvZiBleHByZXNzaW9uIGluZGV4ZXMg aXMgaW1wbGVtZW50ZWQgaW4gdGhlIGZ1dHVyZSwgdGhpcyBpcyB3aGVyZSBhbgorZXhwcmVz c2lvbi1ldmFsdWF0aW5nIGNvbXBhcmlzb24gKGUuZy4gRm9ybUluZGV4RGF0dW0pIHdvdWxk IGJlIHJlaW50cm9kdWNlZC4KKworNS4gV2h5IHRoZSBhc3ltbWV0cnkgKGJpdG1hcCBvbiBy ZWFkLCB2YWx1ZSByZWNoZWNrIG9uIHVuaXF1ZSkgaXMgaW50ZW50aW9uYWwKKworSXQgbG9v a3MgbGlrZSB0d28gZGlmZmVyZW50IGFuc3dlcnMgdG8gdGhlIHNhbWUgcXVlc3Rpb24sIGJ1 dCB0aGUgcXVlc3Rpb25zCitkaWZmZXI6CisKKyAtIFJlYWQvc2NhbiBwYXRoOiAic2hvdWxk IHRoaXMgcm93IGJlIHJldHVybmVkPyIgIEEgc3RhbGUgZW50cnkgaXMgcmVkdW5kYW50Cisg ICAodGhlIGZyZXNoIGVudHJ5IHN1cHBsaWVzIHRoZSByb3cpLCBzbyB0aGUgY29uc2VydmF0 aXZlIGJpdG1hcCB2ZXJkaWN0IGlzCisgICBzdWZmaWNpZW50IC0tIHdvcnN0IGNhc2UgdW5k ZXIgQUJBIHlvdSBkcm9wIGEgcmVkdW5kYW50IGVudHJ5IGFuZCB0aGUgZnJlc2gKKyAgIG9u ZSBzdGlsbCByZXR1cm5zIHRoZSByb3cuICBObyB2YWx1ZSBjb21wYXJpc29uLCBzbyByZWFk cyBzdGF5CisgICBhY2Nlc3MtbWV0aG9kLWFnbm9zdGljIGFuZCBjaGVhcC4KKyAtIFVuaXF1 ZS1jaGVjayBwYXRoOiAiaXMgdGhpcyBhIGNvbmZsaWN0PyIgIEEgd3JvbmcgInN0YWxlIiB2 ZXJkaWN0IGhlcmUgZG9lcworICAgbm90IGp1c3QgZHJvcCBhIHJlZHVuZGFudCBlbnRyeTsg aXQgc2lsZW50bHkgYWRtaXRzIGEgZHVwbGljYXRlLCBjb3JydXB0aW5nCisgICB0aGUgY29u c3RyYWludC4gIEl0IGNhbm5vdCB0b2xlcmF0ZSB0aGUgYml0bWFwJ3MgZmFsc2UgInN0YWxl IiB1bmRlciBBQkEgYW5kCisgICBtdXN0IGNvbnN1bHQgdGhlIGxpdmUgdmFsdWUgKG9yIHdh aXQgb24gYW4gaW4tZmxpZ2h0IHVwZGF0ZXIpIHZpYSB0aGUKKyAgIG9wY2xhc3MgY29tcGFy YXRvci4KKworVGhlIGJpdG1hcCBpcyBhIGZpbHRlciAoYSBuZWNlc3NhcnkgY29uZGl0aW9u OiAiY291bGQgYmUgc3RhbGUiKTsgdGhlIG9wY2xhc3MKK3JlY2hlY2sgaXMgdGhlIGF1dGhv cml0eSAodGhlIHN1ZmZpY2llbnQgY29uZGl0aW9uOiAiaXMgdGhlIGxpdmUga2V5IGFjdHVh bGx5CitkaWZmZXJlbnQsIG9yIGlzIGEgY29uZmxpY3RpbmcgdXBkYXRlIGluIGZsaWdodCIp LiAgVGhlIHVuaXF1ZSBwYXRoIGxheWVycyB0aGUKK2F1dGhvcml0eSBvbiB0b3Agb2YgdGhl IGZpbHRlciBwcmVjaXNlbHkgYmVjYXVzZSBpdHMgZXJyb3IgbW9kZSBpcwordW5mb3JnaXZp bmcuCisKK0luIG9uZSBzZW50ZW5jZTogdGhlIHVuaXF1ZSBjaGVjayBjb21wYXJlcyB0aGUg bGl2ZSB0dXBsZSdzIGN1cnJlbnQga2V5IHRvIHRoZQorYXJyaXZpbmcgbGVhZiB3aXRoIHRo ZSBpbmRleCdzIG93biBlcXVhbGl0eSAobm90IGJ5dGVzKSBiZWNhdXNlIHRoZQorY3Jvc3Nl ZC1hdHRyaWJ1dGUgYml0bWFwIGNhbiBvbmx5IHNheSAic29tZXRoaW5nIGNoYW5nZWQiIC0t IHRydWUgdW5kZXIgYW4KK1gtPlktPlggY3ljbGUgZXZlbiB0aG91Z2ggdGhlIHZhbHVlIGlz IGJhY2sgdG8gWCAtLSBhbmQgb25seSBhbiBvcGNsYXNzLWNvcnJlY3QKK3ZhbHVlIGNvbXBh cmlzb24gKHdoaWNoIGFsc28gcm91dGVzIGFuIGluLWZsaWdodCByZXN0b3JpbmcgdXBkYXRl IHRvIHh3YWl0KSBjYW4KK2JvdGggcmVjb2duaXplIHRoZSBjeWNsZWQtYmFjayB2YWx1ZSBh cyBhIGdlbnVpbmUgZHVwbGljYXRlIGFuZCBjYXRjaAorZHVwbGljYXRlcyB0aGF0IGFyZSBv cGNsYXNzLWVxdWFsIGJ1dCBub3QgYnl0ZS1pZGVudGljYWwsIGVpdGhlciBvZiB3aGljaCBh CitiaXRtYXAgb3IgYSBiaXR3aXNlIGNvbXBhcmlzb24gd291bGQgZ2V0IHdyb25nLgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBkYzMwN2ViNmRjNC4uOTBhNWFhYTUxYjMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j bHVkZSAiYWNjZXNzL2hlYXBhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy9oZWFwdG9hc3QuaCIK ICNpbmNsdWRlICJhY2Nlc3MvaGlvLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRleGVk LmgiCiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5oIgogI2luY2x1ZGUgImFjY2Vzcy9z dWJ0cmFucy5oIgogI2luY2x1ZGUgImFjY2Vzcy9zeW5jc2Nhbi5oIgpAQCAtNDQsMTMgKzQ1 LDE0IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX2RhdGFiYXNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRhYmFzZV9kLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJjb21t YW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50X25vZGUuaCIK ICNpbmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgogI2luY2x1ZGUgIm5vZGVzL2xvY2tv cHRpb25zLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1 dGlscy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvYnVmLmgiCisjaW5jbHVkZSAicmVwbGljYXRp b24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCkBA IC03OCw2ICs4MCw4IEBAIHN0YXRpYyB2b2lkIGNoZWNrX2lucGxhY2VfcmVsX2xvY2soSGVh cFR1cGxlIG9sZHR1cCk7CiAjZW5kaWYKIHN0YXRpYyBCaXRtYXBzZXQgKkhlYXBVcGRhdGVN b2RpZmllZElkeEF0dHJzKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCQkgSGVhcFR1 cGxlIG9sZHR1cCwgSGVhcFR1cGxlIG5ld3R1cCk7CitzdGF0aWMgSGVhcFR1cGxlIGhlYXBf Zm9ybV9ob3RfaW5kZXhlZF90dXBsZShIZWFwVHVwbGUgdHVwLCBpbnQgcmVsbmF0dHMsCisJ CQkJCQkJCQkJCSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMpOwogc3Rh dGljIGJvb2wgaGVhcF9hY3F1aXJlX3R1cGxvY2soUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0 IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogCQkJCQkJCQkgTG9ja1R1cGxlTW9kZSBtb2RlLCBM b2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwKIAkJCQkJCQkJIGJvb2wgKmhhdmVfdHVwbGVf bG9jayk7CkBAIC0yMTA5LDkgKzIxMTMsMjUgQEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVs YXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJZCBjaWQsCiAJCSAqIElmIHRoaXMgaXMg dGhlIHNpbmdsZSBhbmQgZmlyc3QgdHVwbGUgb24gcGFnZSwgd2UgY2FuIHJlaW5pdCB0aGUK IAkJICogcGFnZSBpbnN0ZWFkIG9mIHJlc3RvcmluZyB0aGUgd2hvbGUgdGhpbmcuICBTZXQg ZmxhZywgYW5kIGhpZGUKIAkJICogYnVmZmVyIHJlZmVyZW5jZXMgZnJvbSBYTG9nSW5zZXJ0 LgorCQkgKgorCQkgKiBBbHNvIHJlcXVpcmUgdGhhdCB0aGUgcGFnZSdzIHR1cGxlIGFyZWEg Y29udGFpbnMgbm90aGluZyBvdGhlciB0aGFuCisJCSAqIHRoaXMgdHVwbGUuICBWYWN1dW0n cyBscF90cnVuY2F0ZV9vbmx5IHNlY29uZCBwYXNzCisJCSAqIChQUlVORV9WQUNVVU1fQ0xF QU5VUCkgZG9lcyBub3QgY2FsbCBQYWdlUmVwYWlyRnJhZ21lbnRhdGlvbiwgc28gYQorCQkg KiBwYWdlIGNhbiBsZWdpdGltYXRlbHkgZW5kIHVwIHdpdGggb25lIExQX1VOVVNFRCBzbG90 IGF0IG9mZnNldCAxCisJCSAqIHBsdXMgb3JwaGFuIHR1cGxlIGJ5dGVzIGxlZnQgb3ZlciBm cm9tIHRoZSBwcmV2aW91cyBsaWZldGltZS4gSWYKKwkJICogaGVhcF9pbnNlcnQgcmV1c2Vz IHRoYXQgTFBfVU5VU0VEIHNsb3QsIHByaW1hcnkncyBwYWdlIGtlZXBzIHRoZQorCQkgKiBv cnBoYW4gYnl0ZXMgd2hpbGUgYSBzdGFuZGJ5IHJlcGxheWluZyBJTlNFUlQrSU5JVCB6ZXJv ZXMgdGhlbS4KKwkJICogRW1pdHRpbmcgSU5TRVJUK0lOSVQgaW4gdGhhdCBjYXNlIHRyaXBz IHdhbF9jb25zaXN0ZW5jeV9jaGVja2luZy4KKwkJICogRmFsbGluZyBiYWNrIHRvIGEgcmVn dWxhciBJTlNFUlQgKHdpdGggdGhlIEZQSSBvbiBmaXJzdCB0b3VjaCBhZnRlcgorCQkgKiBh IGNoZWNrcG9pbnQpIGtlZXBzIHJlcGxheSBieXRlLWlkZW50aWNhbCB3aXRob3V0IHNhY3Jp ZmljaW5nIGNyYXNoCisJCSAqIHNhZmV0eS4KKwkJICoKKwkJICogTk9URTogVGhpcyBtdXN0 IG1pcnJvciB0aGUgbG9naWMgaW4gaGVhcF9tdWx0aV9pbnNlcnQoKS4KIAkJICovCiAJCWlm IChJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmKGhlYXB0dXAtPnRfc2VsZikpID09IEZp cnN0T2Zmc2V0TnVtYmVyICYmCi0JCQlQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpID09 IEZpcnN0T2Zmc2V0TnVtYmVyKQorCQkJUGFnZUdldE1heE9mZnNldE51bWJlcihwYWdlKSA9 PSBGaXJzdE9mZnNldE51bWJlciAmJgorCQkJKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfdXBw ZXIgPT0KKwkJCSgoUGFnZUhlYWRlcikgcGFnZSktPnBkX3NwZWNpYWwgLSBNQVhBTElHTiho ZWFwdHVwLT50X2xlbikpCiAJCXsKIAkJCWluZm8gfD0gWExPR19IRUFQX0lOSVRfUEFHRTsK IAkJCWJ1ZmZsYWdzIHw9IFJFR0JVRl9XSUxMX0lOSVQ7CkBAIC0zMjAyLDkgKzMyMjIsMTEg QEAgc2ltcGxlX2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKnRpZCkKICAqLwogVE1fUmVzdWx0CiBoZWFwX3VwZGF0ZShSZWxhdGlvbiBy ZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVw LAotCQkJQ29tbWFuZElkIGNpZCwgdWludDMyIG9wdGlvbnMgcGdfYXR0cmlidXRlX3VudXNl ZCgpLCBTbmFwc2hvdCBjcm9zc2NoZWNrLCBib29sIHdhaXQsCisJCQlDb21tYW5kSWQgY2lk LCB1aW50MzIgb3B0aW9ucyBwZ19hdHRyaWJ1dGVfdW51c2VkKCksCisJCQlTbmFwc2hvdCBj cm9zc2NoZWNrLCBib29sIHdhaXQsCiAJCQlUTV9GYWlsdXJlRGF0YSAqdG1mZCwgY29uc3Qg TG9ja1R1cGxlTW9kZSBsb2NrbW9kZSwKLQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRf aWR4X2F0dHJzLCBjb25zdCBib29sIGhvdF9hbGxvd2VkKQorCQkJY29uc3QgQml0bWFwc2V0 ICptb2RpZmllZF9pZHhfYXR0cnMsCisJCQlIZWFwVXBkYXRlSW5kZXhNb2RlIGhvdF9tb2Rl KQogewogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAJVHJhbnNhY3Rpb25JZCB4aWQgPSBHZXRDdXJy ZW50VHJhbnNhY3Rpb25JZCgpOwpAQCAtMzIzMCw2ICszMjUyLDkgQEAgaGVhcF91cGRhdGUo UmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1 cGxlIG5ld3R1cCwKIAlib29sCQloYXZlX3R1cGxlX2xvY2sgPSBmYWxzZTsKIAlib29sCQlp c2NvbWJvOwogCWJvb2wJCXVzZV9ob3RfdXBkYXRlID0gZmFsc2U7CisJYm9vbAkJaG90X2lu ZGV4ZWQgPSBmYWxzZTsJLyogSE9ULWluZGV4ZWQgdXBkYXRlIChtb2RpZmllZCBhbgorCQkJ CQkJCQkJCSAqIGluZGV4ZWQgYXR0ciBidXQgc3RheWVkIEhPVCkgKi8KKwlTaXplCQloaV9i bWJ5dGVzID0gMDsgLyogdHJhaWxpbmcgbW9kaWZpZWQtYXR0cnMgYml0bWFwIHNpemUsIGlm IGFueSAqLwogCWJvb2wJCWtleV9pbnRhY3Q7CiAJYm9vbAkJYWxsX3Zpc2libGVfY2xlYXJl ZCA9IGZhbHNlOwogCWJvb2wJCWFsbF92aXNpYmxlX2NsZWFyZWRfbmV3ID0gZmFsc2U7CkBA IC0zNzk0LDYgKzM4MTksMzggQEAgbDI6CiAKIAluZXd0dXBzaXplID0gTUFYQUxJR04obmV3 dHVwLT50X2xlbik7CiAKKwkvKgorCSAqIEtlZXAgSE9ULWluZGV4ZWQgKFNJVSkgY2hhaW5z IHVuaWZvcm0uICBIZWFwVXBkYXRlSG90QWxsb3dhYmxlIHJldHVybnMKKwkgKiBIRUFQX0hF QVBfT05MWV9VUERBVEUgd2hlbmV2ZXIgdGhpcyB1cGRhdGUgbW9kaWZpZXMgbm8gaW5kZXhl ZAorCSAqIGF0dHJpYnV0ZS4gIEJ1dCBpZiB0aGUgdHVwbGUgYmVpbmcgdXBkYXRlZCBpcyBh bHJlYWR5IGEgSE9ULWluZGV4ZWQKKwkgKiBjaGFpbiBtZW1iZXIgKGl0IGNhcnJpZXMgSEVB UF9JTkRFWEVEX1VQREFURUQpLCBlbWl0dGluZyBhIGNsYXNzaWMtSE9UCisJICogdmVyc2lv biB3b3VsZCBzcGxpY2UgYSBub24tSEVBUF9JTkRFWEVEX1VQREFURUQgdHVwbGUgaW50byB0 aGUgY2hhaW4uCisJICogVGhlIHBydW5lL2NvbGxhcHNlIG1hY2hpbmVyeSBmb3J3YXJkcyBv bmx5IEhFQVBfSU5ERVhFRF9VUERBVEVEIG1lbWJlcnMKKwkgKiB0aHJvdWdoIGJyaWRnZXMs IHNvIHN1Y2ggYSBjbGFzc2ljLUhPVCB2ZXJzaW9uLCBvbmNlIGl0IGRpZXMgbWlkCisJICog Y29sbGFwc2VkLWNoYWluLCBoYXMgbm8gaGFuZGxlciBhbmQgdHJpcHMgdGhlICJub3QgbGlu a2VkIHRvIGZyb20gYW55CisJICogSE9UIGNoYWluIiBlcnJvci4gIFByb21vdGUgdG8gSEVB UF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFIGluc3RlYWQ6IHdpdGggYW4KKwkgKiBlbXB0eSBt b2RpZmllZC1hdHRycyBzZXQgdGhlIG5ldyB2ZXJzaW9uIGNhcnJpZXMgSEVBUF9JTkRFWEVE X1VQREFURUQKKwkgKiBhbmQgYW4gZW1wdHkgaW5saW5lLXRyYWlsaW5nIGJpdG1hcCwgaW5z ZXJ0cyBpbnRvIG5vIGluZGV4IChub3RoaW5nCisJICogY2hhbmdlZCksIGFuZCBrZWVwcyBl dmVyeSBjaGFpbiBtZW1iZXIgdW5pZm9ybS4gIENhdGFsb2cgcmVsYXRpb25zIGFyZQorCSAq IGNsYXNzaWMtSE9UIG9ubHkgYW5kIG5ldmVyIGNhcnJ5IEhFQVBfSU5ERVhFRF9VUERBVEVE LCBzbyB0aGlzIG5ldmVyCisJICogZmlyZXMgZm9yIHRoZW0uCisJICovCisJaWYgKGhvdF9t b2RlID09IEhFQVBfSEVBUF9PTkxZX1VQREFURSAmJgorCQkob2xkdHVwLnRfZGF0YS0+dF9p bmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKKwkJaG90X21vZGUgPSBI RUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEU7CisKKwkvKgorCSAqIEEgSE9ULWluZGV4ZWQg dXBkYXRlIGFwcGVuZHMgYSBmaXhlZC1zaXplIGlubGluZS10cmFpbGluZworCSAqIG1vZGlm aWVkLWF0dHJzIGJpdG1hcCB0byB0aGUgbmV3IHR1cGxlIChzZWUgYWNjZXNzL2hvdF9pbmRl eGVkLmgpLgorCSAqIFJlc2VydmUgcm9vbSBmb3IgaXQgaW4gdGhlIHBhZ2UtZml0IGNhbGN1 bGF0aW9uIG5vdywgd2hpbGUgd2Ugc3RpbGwKKwkgKiBtaWdodCB0YWtlIHRoZSBzYW1lLXBh Z2UgSE9UIHBhdGg7IGlmIHRoZSB1cGRhdGUgbGF0ZXIgZHJvcHMgdG8gbm9uLUhPVAorCSAq ICh0aGUgdHVwbGUgZG9lcyBub3QgZml0IG9uIHRoZSBwYWdlKSBpdCBpcyBzdG9yZWQgd2l0 aG91dCB0aGUgYml0bWFwIGFuZAorCSAqIHRoZSByZXNlcnZhdGlvbiBpcyBzaW1wbHkgY29u c2VydmF0aXZlLgorCSAqLworCWlmIChob3RfbW9kZSA9PSBIRUFQX1NFTEVDVElWRV9JTkRF WF9VUERBVEUpCisJCWhpX2JtYnl0ZXMgPSBIb3RJbmRleGVkQml0bWFwQnl0ZXMoUmVsYXRp b25HZXROdW1iZXJPZkF0dHJpYnV0ZXMocmVsYXRpb24pKTsKKwluZXd0dXBzaXplID0gTUFY QUxJR04obmV3dHVwLT50X2xlbiArIGhpX2JtYnl0ZXMpOworCiAJaWYgKG5lZWRfdG9hc3Qg fHwgbmV3dHVwc2l6ZSA+IHBhZ2VmcmVlKQogCXsKIAkJVHJhbnNhY3Rpb25JZCB4bWF4X2xv Y2tfb2xkX3R1cGxlOwpAQCAtMzg5MSw3ICszOTQ4LDcgQEAgbDI6CiAJCXsKIAkJCS8qIE5v dGUgd2UgYWx3YXlzIHVzZSBXQUwgYW5kIEZTTSBkdXJpbmcgdXBkYXRlcyAqLwogCQkJaGVh cHR1cCA9IGhlYXBfdG9hc3RfaW5zZXJ0X29yX3VwZGF0ZShyZWxhdGlvbiwgbmV3dHVwLCAm b2xkdHVwLCAwKTsKLQkJCW5ld3R1cHNpemUgPSBNQVhBTElHTihoZWFwdHVwLT50X2xlbik7 CisJCQluZXd0dXBzaXplID0gTUFYQUxJR04oaGVhcHR1cC0+dF9sZW4gKyBoaV9ibWJ5dGVz KTsKIAkJfQogCQllbHNlCiAJCQloZWFwdHVwID0gbmV3dHVwOwpAQCAtMzk5MiwxMCArNDA0 OSwxMCBAQCBsMjoKIAl7CiAJCS8qCiAJCSAqIFNpbmNlIHRoZSBuZXcgdHVwbGUgaXMgZ29p bmcgaW50byB0aGUgc2FtZSBwYWdlLCB3ZSBtaWdodCBiZSBhYmxlCi0JCSAqIHRvIGRvIGEg SE9UIHVwZGF0ZS4gIENoZWNrIGlmIGFueSBvZiB0aGUgaW5kZXggY29sdW1ucyBoYXZlIGJl ZW4KLQkJICogY2hhbmdlZC4KKwkJICogdG8gZG8gYSBIT1QgdXBkYXRlLiAgQ2hlY2sgaWYg SGVhcFVwZGF0ZUhvdEFsbG93YWJsZSgpIGhhcworCQkgKiBzYW5jdGlvbmVkIGl0IChIRUFQ X0hFQVBfT05MWV9VUERBVEUgb3IgSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFKS4KIAkJ ICovCi0JCWlmIChob3RfYWxsb3dlZCkKKwkJaWYgKGhvdF9tb2RlICE9IEhFQVBfVVBEQVRF X0FMTF9JTkRFWEVTKQogCQkJdXNlX2hvdF91cGRhdGUgPSB0cnVlOwogCX0KIAllbHNlCkBA IC00MDA0LDYgKzQwNjEsMjcgQEAgbDI6CiAJCVBhZ2VTZXRGdWxsKHBhZ2UpOwogCX0KIAor CS8qCisJICogRm9yIGEgc2FtZS1wYWdlIEhPVC1pbmRleGVkIHVwZGF0ZSwgcmVwbGFjZSBo ZWFwdHVwIHdpdGggYSBjb3B5IHRoYXQKKwkgKiBjYXJyaWVzIHRoZSBpbmxpbmUtdHJhaWxp bmcgbW9kaWZpZWQtYXR0cnMgYml0bWFwIChhbmQKKwkgKiBIRUFQX0lOREVYRURfVVBEQVRF RCkuICBEb25lIGhlcmUsIG91dHNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24sCisJICogYmVj YXVzZSBpdCBhbGxvY2F0ZXM7IHRoZSBiaXRtYXAncyBzaXplIHdhcyByZXNlcnZlZCBpbiBu ZXd0dXBzaXplCisJICogYWJvdmUuICBPbmx5IHRoZSBzdG9yZWQgdHVwbGUgKGhlYXB0dXAp IGdldHMgdGhlIGJpdG1hcCBhbmQgdGhlIGZsYWc7CisJICogdGhlIGNhbGxlcidzIG5ld3R1 cCBtdXN0IE5PVCBiZSBtYXJrZWQgSEVBUF9JTkRFWEVEX1VQREFURUQsIGJlY2F1c2UgaXQK KwkgKiBoYXMgbm8gdHJhaWxpbmcgYml0bWFwIC0tIHNlZSB0aGUgZmxhZyBoYW5kbGluZyBi ZWxvdy4KKwkgKi8KKwlpZiAodXNlX2hvdF91cGRhdGUgJiYgaG90X21vZGUgPT0gSEVBUF9T RUxFQ1RJVkVfSU5ERVhfVVBEQVRFKQorCXsKKwkJSGVhcFR1cGxlCWV4dDsKKworCQlleHQg PSBoZWFwX2Zvcm1faG90X2luZGV4ZWRfdHVwbGUoaGVhcHR1cCwKKwkJCQkJCQkJCQkgIFJl bGF0aW9uR2V0TnVtYmVyT2ZBdHRyaWJ1dGVzKHJlbGF0aW9uKSwKKwkJCQkJCQkJCQkgIG1v ZGlmaWVkX2lkeF9hdHRycyk7CisJCWlmIChoZWFwdHVwICE9IG5ld3R1cCkKKwkJCWhlYXBf ZnJlZXR1cGxlKGhlYXB0dXApOworCQloZWFwdHVwID0gZXh0OworCX0KKwogCS8qCiAJICog Q29tcHV0ZSByZXBsaWNhIGlkZW50aXR5IHR1cGxlIGJlZm9yZSBlbnRlcmluZyB0aGUgY3Jp dGljYWwgc2VjdGlvbiBzbwogCSAqIHdlIGRvbid0IFBBTklDIHVwb24gYSBtZW1vcnkgYWxs b2NhdGlvbiBmYWlsdXJlLgpAQCAtNDA0MCw2ICs0MTE4LDI5IEBAIGwyOgogCQlIZWFwVHVw bGVTZXRIZWFwT25seShoZWFwdHVwKTsKIAkJLyogTWFyayB0aGUgY2FsbGVyJ3MgY29weSB0 b28sIGluIGNhc2UgZGlmZmVyZW50IGZyb20gaGVhcHR1cCAqLwogCQlIZWFwVHVwbGVTZXRI ZWFwT25seShuZXd0dXApOworCisJCS8qCisJCSAqIEZvciBhIEhPVC1pbmRleGVkIHVwZGF0 ZSwgdGhlIG5ldyBsaXZlIHR1cGxlIGNhcnJpZXMKKwkJICogSEVBUF9JTkRFWEVEX1VQREFU RUQgc28gaW5kZXggc2NhbnMgd2Fsa2luZyB0aGUgY2hhaW4ga25vdyBpdCBpcyBhCisJCSAq IEhPVC1pbmRleGVkIGhvcCBjYXJyeWluZyBhbiBpbmxpbmUtdHJhaWxpbmcgbW9kaWZpZWQt YXR0cnMgYml0bWFwLgorCQkgKgorCQkgKiBTZXQgdGhlIGZsYWcgb25seSBvbiBoZWFwdHVw LCB0aGUgdmVyc2lvbiBhY3R1YWxseSBzdG9yZWQgb24gdGhlCisJCSAqIHBhZ2U6IGhlYXB0 dXAgY2FycmllcyB0aGUgdHJhaWxpbmcgYml0bWFwLCBzbyB0aGUgZmxhZydzIHByb21pc2Ug KGEKKwkJICogYml0bWFwIG9jY3VwaWVzIHRoZSBmaW5hbCBIb3RJbmRleGVkQml0bWFwQnl0 ZXMobmF0dHMpIGJ5dGVzIG9mIHRoZQorCQkgKiBpdGVtKSBob2xkcy4gIFRoZSBjYWxsZXIn cyBuZXd0dXAgaXMgYSBzZXBhcmF0ZSBpbi1tZW1vcnkgdHVwbGUKKwkJICogd2hvc2UgdF9s ZW4gZG9lcyBub3QgaW5jbHVkZSB0aGUgYml0bWFwOyBtYXJraW5nIGl0CisJCSAqIEhFQVBf SU5ERVhFRF9VUERBVEVEIHdvdWxkIGFzc2VydCBhIHRyYWlsaW5nIGJpdG1hcCB0aGF0IGlz IG5vdAorCQkgKiB0aGVyZSwgc28gYW55IGxhdGVyIHJlYWRlciB1c2luZyBJdGVtSWRHZXRM ZW5ndGgoKS1yZWxhdGl2ZSBhY2Nlc3MKKwkJICogd291bGQgbWlzcmVhZCBhdHRyaWJ1dGUg ZGF0YSBhcyB0aGUgYml0bWFwLiAgV2UgdGhlcmVmb3JlIGxlYXZlCisJCSAqIG5ld3R1cCdz IGZsYWcgY2xlYXIuICBOb3RoaW5nIHJlYWRzIHRoZSBtb2RpZmllZC1hdHRycyBiaXRtYXAg b2ZmIGFuCisJCSAqIGluLW1lbW9yeSB0dXBsZTsgZXZlcnkgY29uc3VtZXIgcmVhZHMgaXQg ZnJvbSB0aGUgcGFnZSB2aWEgdGhlIGxpbmUKKwkJICogcG9pbnRlcidzIGxlbmd0aC4KKwkJ ICovCisJCWlmIChob3RfbW9kZSA9PSBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUpCisJ CXsKKwkJCWhlYXB0dXAtPnRfZGF0YS0+dF9pbmZvbWFzazIgfD0gSEVBUF9JTkRFWEVEX1VQ REFURUQ7CisJCQlob3RfaW5kZXhlZCA9IHRydWU7CisJCX0KIAl9CiAJZWxzZQogCXsKQEAg LTQxNDQsNyArNDI0NSw4IEBAIGwyOgogCWlmIChoYXZlX3R1cGxlX2xvY2spCiAJCVVubG9j a1R1cGxlVHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgbG9ja21vZGUpOwog Ci0JcGdzdGF0X2NvdW50X2hlYXBfdXBkYXRlKHJlbGF0aW9uLCB1c2VfaG90X3VwZGF0ZSwg bmV3YnVmICE9IGJ1ZmZlcik7CisJcGdzdGF0X2NvdW50X2hlYXBfdXBkYXRlKHJlbGF0aW9u LCB1c2VfaG90X3VwZGF0ZSwgaG90X2luZGV4ZWQsCisJCQkJCQkJIG5ld2J1ZiAhPSBidWZm ZXIpOwogCiAJLyoKIAkgKiBJZiBoZWFwdHVwIGlzIGEgcHJpdmF0ZSBjb3B5LCByZWxlYXNl IGl0LiAgRG9uJ3QgZm9yZ2V0IHRvIGNvcHkgdF9zZWxmCkBAIC00MjkwLDcgKzQzOTIsNyBA QCBjaGVja19pbnBsYWNlX3JlbF9sb2NrKEhlYXBUdXBsZSBvbGR0dXApCiAKIC8qCiAgKiBD aGVjayBpZiB0aGUgc3BlY2lmaWVkIGF0dHJpYnV0ZSdzIHZhbHVlcyBhcmUgdGhlIHNhbWUu ICBTdWJyb3V0aW5lIGZvcgotICogSGVhcERldGVybWluZUNvbHVtbnNJbmZvLgorICogSGVh cFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMuCiAgKi8KIHN0YXRpYyBib29sCiBoZWFwX2F0dHJf ZXF1YWxzKFR1cGxlRGVzYyB0dXBkZXNjLCBpbnQgYXR0cm51bSwgRGF0dW0gdmFsdWUxLCBE YXR1bSB2YWx1ZTIsCkBAIC00MzM0LDYzICs0NDM2LDEwMyBAQCBoZWFwX2F0dHJfZXF1YWxz KFR1cGxlRGVzYyB0dXBkZXNjLCBpbnQgYXR0cm51bSwgRGF0dW0gdmFsdWUxLCBEYXR1bSB2 YWx1ZTIsCiB9CiAKIC8qCi0gKiBIT1QgdXBkYXRlcyBhcmUgcG9zc2libGUgd2hlbiBlaXRo ZXI6IGEpIHRoZXJlIGFyZSBubyBtb2RpZmllZCBpbmRleGVkCi0gKiBhdHRyaWJ1dGVzLCBv ciBiKSB0aGUgbW9kaWZpZWQgYXR0cmlidXRlcyBhcmUgYWxsIG9uIHN1bW1hcml6aW5nIGlu ZGV4ZXMuCi0gKiBMYXRlciwgaW4gaGVhcF91cGRhdGUoKSwgd2UgY2FuIGNob29zZSB0byBw ZXJmb3JtIGEgSE9UIHVwZGF0ZSBpZiB0aGVyZSBpcwotICogc3BhY2Ugb24gdGhlIHBhZ2Ug Zm9yIHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBmb2xsb3dpbmcgY29kZSBoYXMgZGV0ZXJtaW5l ZAotICogdGhhdCBIT1QgaXMgYWxsb3dlZC4KKyAqIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUg LS0KKyAqCisgKiBDbGFzc2lmeSBhbiBVUERBVEUgZm9yIEhPVCBlbGlnaWJpbGl0eSBmcm9t IHRoZSBzZXQgb2YgaW5kZXhlZCBhdHRyaWJ1dGVzCisgKiBpdCBjaGFuZ2VkIChtb2RpZmll ZF9pZHhfYXR0cnMsIGNvbXB1dGVkIGJ5IHRoZSBleGVjdXRvcik6CisgKgorICogICBIRUFQ X1VQREFURV9BTExfSU5ERVhFUyAgIEhPVCBpcyBub3QgcGVybWl0dGVkOyB0aGUgbmV3IHR1 cGxlIGdvZXMgb24gYQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZXNoIFRJ RCBhbmQgZXZlcnkgaW5kZXggZ2V0cyBhIG5ldyBlbnRyeS4KKyAqICAgSEVBUF9IRUFQX09O TFlfVVBEQVRFICAgICBDbGFzc2ljIEhPVDogbm8gbm9uLXN1bW1hcml6aW5nIGluZGV4ZWQK KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgY2hhbmdlZCwgc28g bm8gaW5kZXggbmVlZHMgYSBuZXcKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bnRyeSBhbmQgdGhlIG5ldyB0dXBsZSBqb2lucyB0aGUgY2hhaW4gdmlhIGEKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0X2N0aWQgZm9yd2FyZCBsaW5rLgorICogICBIRUFQ X1NFTEVDVElWRV9JTkRFWF9VUERBVEUgSE9UIHdpdGggc2VsZWN0aXZlIGluZGV4IHVwZGF0 ZTogYXQgbGVhc3Qgb25lCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uLXN1 bW1hcml6aW5nIGluZGV4J3MgYXR0cmlidXRlIGNoYW5nZWQsIGJ1dAorICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRoZSBuZXcgdHVwbGUgY2FuIHN0aWxsIGpvaW4gdGhlIEhP VCBjaGFpbiBvbgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzYW1lIHBh Z2U7IG9ubHkgdGhlIGluZGV4ZXMgd2hvc2UKKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhdHRyaWJ1dGVzIGNoYW5nZWQgcmVjZWl2ZSBhIG5ldyBlbnRyeS4KKyAqCisgKiBU aGlzIHJvdXRpbmUgb25seSBjbGFzc2lmaWVzIHRoZSB1cGRhdGU7IGhlYXBfdXBkYXRlKCkg cGVyZm9ybXMgaXQgYW5kIG1heQorICogc3RpbGwgZmFsbCBiYWNrIHRvIGEgbm9uLUhPVCB1 cGRhdGUgd2hlbiB0aGUgbmV3IHR1cGxlIGRvZXMgbm90IGZpdCBvbiB0aGUKKyAqIHBhZ2Us IGV4YWN0bHkgYXMgZm9yIGNsYXNzaWMgSE9ULgogICovCi1ib29sCi1IZWFwVXBkYXRlSG90 QWxsb3dhYmxlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVk X2lkeF9hdHRycywKLQkJCQkJICAgYm9vbCAqc3VtbWFyaXplZF9vbmx5KQorSGVhcFVwZGF0 ZUluZGV4TW9kZQorSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShSZWxhdGlvbiByZWxhdGlvbiwg Y29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMpCiB7Ci0JYm9vbAkJaG90X2Fs bG93ZWQ7CisJY29uc3QgQml0bWFwc2V0ICphbGxfaWR4X2F0dHJzOwogCiAJLyoKLQkgKiBM ZXQncyBiZSBvcHRpbWlzdGljIGFuZCBzdGFydCBvZmYgYnkgYXNzdW1pbmcgdGhlIGJlc3Qg Y2FzZSwgbm8gaW5kZXhlcwotCSAqIG5lZWQgdXBkYXRpbmcgYW5kIEhPVCBpcyBhbGxvd2Fi bGUuCisJICogQ2FzZSAoYSk6IG5vIGluZGV4ZWQgYXR0cmlidXRlIHdhcyBtb2RpZmllZCAt PiBjbGFzc2ljIEhPVC4KIAkgKi8KLQlob3RfYWxsb3dlZCA9IHRydWU7Ci0JKnN1bW1hcml6 ZWRfb25seSA9IGZhbHNlOworCWlmIChibXNfaXNfZW1wdHkobW9kaWZpZWRfaWR4X2F0dHJz KSkKKwkJcmV0dXJuIEhFQVBfSEVBUF9PTkxZX1VQREFURTsKIAogCS8qCi0JICogQ2hlY2sg Zm9yIGNhc2UgKGEpOyB3aGVuIHRoZXJlIGFyZSBubyBtb2RpZmllZCBpbmRleCBhdHRyaWJ1 dGVzIEhPVCBpcwotCSAqIGFsbG93ZWQuCisJICogQ2FzZSAoYik6IGF0IGxlYXN0IG9uZSBp bmRleGVkIGF0dHJpYnV0ZSBjaGFuZ2VkLiAgSWYgYWxsIG9mIHRoZW0gYXJlCisJICogdXNl ZCBvbmx5IGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMsIHdlIGNhbiBzdGlsbCB0YWtlIHRoZSBj bGFzc2ljIEhPVAorCSAqIHBhdGggLS0gdGhlIHN1bW1hcml6aW5nIGluZGV4IEFNIGdldHMg YSBuZXcgZW50cnkgdmlhIGFtaW5zZXJ0IGFuZCBubworCSAqIG5vbi1zdW1tYXJpemluZyBp bmRleCBuZWVkcyB0byBjaGFuZ2UuCiAJICovCi0JaWYgKGJtc19pc19lbXB0eShtb2RpZmll ZF9pZHhfYXR0cnMpKQotCQlob3RfYWxsb3dlZCA9IHRydWU7Ci0JZWxzZQotCXsKLQkJQml0 bWFwc2V0ICAqc3VtX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRp b24sCi0JCQkJCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQpOwor CWlmIChibXNfaXNfc3Vic2V0KG1vZGlmaWVkX2lkeF9hdHRycywgUmVsYXRpb25HZXRJbmRl eEF0dHJCaXRtYXBOb0NvcHkocmVsYXRpb24sCisJCQkJCQkJCQkJCQlJTkRFWF9BVFRSX0JJ VE1BUF9TVU1NQVJJWkVEKSkpCisJCXJldHVybiBIRUFQX0hFQVBfT05MWV9VUERBVEU7CiAK LQkJLyoKLQkJICogQXQgbGVhc3Qgb25lIGluZGV4IGF0dHJpYnV0ZSB3YXMgbW9kaWZpZWQs IGJ1dCBpcyB0aGlzIGNhc2UgKGIpCi0JCSAqIHdoZXJlIGFsbCB0aGUgbW9kaWZpZWQgaW5k ZXggYXR0cmlidXRlcyBhcmUgb25seSB1c2VkIGJ5Ci0JCSAqIHN1bW1hcml6aW5nIGluZGV4 ZXM/ICBJZiBpdCBpcywgdGhlbiB3ZSBuZWVkIHRvIHVwZGF0ZSB0aG9zZQotCQkgKiBpbmRl eGVzLCBidXQgdGhpcyB1cGRhdGUgY2FuIHN0aWxsIGJlIGNvbnNpZGVyZWQgaGVhcC1vbmx5 IChIT1QpCi0JCSAqIGFuZCBhdm9pZCB1cGRhdGluZyBhbnkgbm9uLXN1bW1hcml6aW5nIGlu ZGV4ZXMgb24gdGhlIHJlbGF0aW9uLgotCQkgKi8KLQkJaWYgKGJtc19pc19zdWJzZXQobW9k aWZpZWRfaWR4X2F0dHJzLCBzdW1fYXR0cnMpKQotCQl7Ci0JCQlob3RfYWxsb3dlZCA9IHRy dWU7Ci0JCQkqc3VtbWFyaXplZF9vbmx5ID0gdHJ1ZTsKLQkJfQotCQllbHNlCi0JCXsKLQkJ CS8qCi0JCQkgKiBOb3cgd2Uga25vdyBhKSBvbmUgb3IgbW9yZSBpbmRleGVkIGF0dHJpYnV0 ZXMgd2VyZSBtb2RpZmllZAotCQkJICogKGNoYW5nZWQgdmFsdWUsIG5vdCBqdXN0IHJlZmVy ZW5jZWQgd2l0aGluIHRoZSBVUERBVEUpIGFuZCB0aGF0Ci0JCQkgKiBiKSBhdCBsZWFzdCBv bmUgb2YgdGhvc2UgYXR0cmlidXRlcyBpcyB1c2VkIGJ5IGEKLQkJCSAqIG5vbi1zdW1tYXJp emluZyBpbmRleC4gSE9UIGlzIG5vdCBhbGxvd2VkLgotCQkJICovCi0JCQlob3RfYWxsb3dl ZCA9IGZhbHNlOwotCQl9CisJLyoKKwkgKiBBIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGF0 dHJpYnV0ZSBjaGFuZ2VkLiAgSE9ULWluZGV4ZWQgaXMgc3VwcG9ydGVkCisJICogd2hlbmV2 ZXIgdGhlIHJlbGF0aW9uIGNhbiB0b2xlcmF0ZSBleHRyYSBpbmRleCBlbnRyaWVzIGluIGEg Y2hhaW4gd2hvc2UKKwkgKiBwZXItY2hhaW4tbWVtYmVyIGtleXMgbWF5IGRpZmZlci4gIFRo ZSBsb2dpY2FsLXJlcGxpY2F0aW9uIGFwcGx5IHBhdGgKKwkgKiBpcyBnYXRlZCBhYm92ZSBi eSBob3RfaW5kZXhlZF9vbl9hcHBseS4gIFRoZSByZW1haW5pbmcKKwkgKiBIRUFQX1VQREFU RV9BTExfSU5ERVhFUyBmYWxsYmFja3MgYXJlOgorCSAqCisJICogLSBBbiBVUERBVEUgdGhh dCBtb2RpZmllcyBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlZCBieSBhbiBleHByZXNzaW9uCisJ ICogaW5kZXguICBTZWxlY3RpdmUgbWFpbnRlbmFuY2Ugb2YgYW4gZXhwcmVzc2lvbiBpbmRl eCByZXF1aXJlcworCSAqIGV2YWx1YXRpbmcgdGhlIGluZGV4ZWQgZXhwcmVzc2lvbiB0byBk ZWNpZGUgd2hldGhlciBpdHMgdmFsdWUgKGhlbmNlCisJICogaXRzIGVudHJ5KSBjaGFuZ2Vk OyB0aGF0IGV4cHJlc3Npb24tYXdhcmUgcGF0aCBpcyBub3QgaW1wbGVtZW50ZWQgeWV0LAor CSAqIHNvIHN1Y2ggYW4gdXBkYXRlIGZhbGxzIGJhY2sgdG8gbm9uLUhPVC4gIFVwZGF0ZXMg dGhhdCBkbyBub3QgdG91Y2ggYW55CisJICogZXhwcmVzc2lvbi1pbmRleCBhdHRyaWJ1dGUg c3RheSBlbGlnaWJsZS4KKwkgKgorCSAqIC0gQW4gVVBEQVRFIHRoYXQgbW9kaWZpZXMgZXZl cnkgaW5kZXhlZCBhdHRyaWJ1dGUgb2YgdGhlIHJlbGF0aW9uLgorCSAqIEhPVC1pbmRleGVk IG9ubHkgcGF5cyBvZmYgd2hlbiBpdCBjYW4gc2tpcCBtYWludGFpbmluZyBhdCBsZWFzdCBv bmUKKwkgKiBpbmRleCB3aG9zZSBrZXkgZGlkIG5vdCBjaGFuZ2U7IGlmIGFsbCBpbmRleGVk IGF0dHJpYnV0ZXMgY2hhbmdlZCB0aGVyZQorCSAqIGlzIG5vdGhpbmcgdG8gc2tpcCwgc28g YSBwbGFpbiBub24tSE9UIHVwZGF0ZSBpcyBjaGVhcGVyIChpdCBhdm9pZHMgdGhlCisJICog Y2hhaW4td2FsayBhbmQgYml0bWFwLW92ZXJsYXAgb3ZlcmhlYWQpLgorCSAqLworCWFsbF9p ZHhfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcE5vQ29weShyZWxhdGlvbiwK KwkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCk7CiAKLQkJYm1zX2Zy ZWUoc3VtX2F0dHJzKTsKLQl9CisJLyoKKwkgKiBTeXN0ZW0gY2F0YWxvZ3Mga2VlcCBjbGFz c2ljIEhPVCAoYW4gVVBEQVRFIHRvdWNoaW5nIG5vIG5vbi1zdW1tYXJpemluZworCSAqIGlu ZGV4ZWQgYXR0cmlidXRlIGFscmVhZHkgcmV0dXJuZWQgSEVBUF9IRUFQX09OTFlfVVBEQVRF IGFib3ZlKSwgYnV0IGRvCisJICogTk9UIHRha2UgdGhlIEhPVC1pbmRleGVkIHBhdGg6IGNh dGFsb2cgcmVhZHMgZ28gdGhyb3VnaCBtYW55IGNvZGUgcGF0aHMKKwkgKiAoc3lzdGFibGUg aW5kZXggc2NhbnMsIFNuYXBzaG90RGlydHkgdW5pcXVlIGNoZWNrcywgc2Vxc2NhbnMgaW4K KwkgKiBvcmRlcmluZ3MgdGhlIGNoYWluLXdhbGsgZGVkdXAgZG9lcyBub3QgY292ZXIpIHRo YXQgYXJlIG5vdCBhbGwgcHJvdmVuCisJICogc2FmZSBhZ2FpbnN0IHN0YWxlIGNoYWluIGVu dHJpZXMuICBGYWxsaW5nIGJhY2sgdG8gYSBub24tSE9UIHVwZGF0ZQorCSAqIGhlcmUgaXMg ZXhhY3RseSB0aGUgcHJlLUhPVC1pbmRleGVkIGJlaGF2aW91ciBmb3Igc3VjaCBjYXRhbG9n IHVwZGF0ZXMuCisJICovCisJaWYgKElzQ2F0YWxvZ1JlbGF0aW9uKHJlbGF0aW9uKSkKKwkJ cmV0dXJuIEhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTOwogCi0JcmV0dXJuIGhvdF9hbGxvd2Vk OworCS8qCisJICogRGlzcXVhbGlmeSB3aGVuIHRoZSB1cGRhdGUgdG91Y2hlcyBhbiBhdHRy aWJ1dGUgcmVmZXJlbmNlZCBieSBhbgorCSAqIGV4cHJlc3Npb24gaW5kZXggKHNlZSBjYXNl IDEgYWJvdmUpLiAgVXBkYXRlcyB0aGF0IGxlYXZlIGV2ZXJ5CisJICogZXhwcmVzc2lvbi1p bmRleCBhdHRyaWJ1dGUgdW5jaGFuZ2VkIHJlbWFpbiBlbGlnaWJsZS4KKwkgKi8KKwlpZiAo Ym1zX292ZXJsYXAobW9kaWZpZWRfaWR4X2F0dHJzLAorCQkJCQlSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcE5vQ29weShyZWxhdGlvbiwKKwkJCQkJCQkJCQkJCQkgSU5ERVhfQVRUUl9C SVRNQVBfRVhQUkVTU0lPTikpKQorCQlyZXR1cm4gSEVBUF9VUERBVEVfQUxMX0lOREVYRVM7 CisKKwkvKgorCSAqIElmIGV2ZXJ5IGluZGV4ZWQgYXR0cmlidXRlIGNoYW5nZWQsIGEgSE9U LXNlbGVjdGl2ZSB1cGRhdGUgY291bGQgbm90CisJICogc2tpcCBhbnkgaW5kZXggLS0gZWFj aCBpbmRleCBuZWVkcyBhIGZyZXNoIGVudHJ5IGFueXdheSAtLSBzbyBpdCB3b3VsZAorCSAq IHBheSB0aGUgSE9UL1NJVSBjaGFpbi13YWxrIGFuZCBiaXRtYXAtb3ZlcmxhcCBvdmVyaGVh ZCBmb3Igbm8gc2F2ZWQKKwkgKiBpbmRleCBtYWludGVuYW5jZS4gIEZhbGwgYmFjayB0byBh IHBsYWluIG5vbi1IT1QgdXBkYXRlIGluIHRoYXQgY2FzZS4KKwkgKi8KKwlpZiAoYm1zX2lz X3N1YnNldChhbGxfaWR4X2F0dHJzLCBtb2RpZmllZF9pZHhfYXR0cnMpKQorCQlyZXR1cm4g SEVBUF9VUERBVEVfQUxMX0lOREVYRVM7CisKKwlyZXR1cm4gSEVBUF9TRUxFQ1RJVkVfSU5E RVhfVVBEQVRFOwogfQogCiAvKgpAQCAtNDQwMiwxNSArNDU0NCwzMyBAQCBMb2NrVHVwbGVN b2RlCiBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUoUmVsYXRpb24gcmVsYXRpb24sIGNv bnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzKQogewogCUxvY2tUdXBsZU1vZGUg bG9ja21vZGUgPSBMb2NrVHVwbGVFeGNsdXNpdmU7CisJY29uc3QgQml0bWFwc2V0ICprZXlf YXR0cnM7CisKKwkvKgorCSAqIENvbW1vbiBmYXN0IHBhdGg6IHdoZW4gbm8gaW5kZXhlZCBh dHRyaWJ1dGUgY2hhbmdlZCAoZS5nLiBwZ2JlbmNoLXN0eWxlCisJICogIlVQREFURSB0IFNF VCBub25faWR4X2NvbCA9IC4uLiIgb3IgdGhlIHdpZGVfMCAiVVBEQVRFIHQgU0VUIGlkID0g aWQiCisJICogd29ya2xvYWQgYWZ0ZXIgdGhlIGV4ZWN1dG9yJ3MgZmFzdCBwYXRoIGluIEV4 ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKSwKKwkgKiBtb2RpZmllZF9pZHhfYXR0cnMgaXMg ZW1wdHkgYW5kIGEga2V5IGNvbHVtbiBjYW5ub3QgaGF2ZSBjaGFuZ2VkLiAgU2tpcAorCSAq IHRoZSByZWxjYWNoZSBsb29rdXAgYW5kIHJldHVybiB0aGUgd2Vha2VyIGxvY2sgaW1tZWRp YXRlbHkuICBBdCBoaWdoCisJICogVFBTIHRoaXMgYXZvaWRzIGEgcGVyLVVQREFURSBSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcCBjYWxsIChhbmQgaXRzCisJICogYm1zX2NvcHkpIG9u IHRoZSBLRVkgYml0bWFwLgorCSAqLworCWlmIChibXNfaXNfZW1wdHkobW9kaWZpZWRfaWR4 X2F0dHJzKSkKKwkJcmV0dXJuIExvY2tUdXBsZU5vS2V5RXhjbHVzaXZlOwogCi0JQml0bWFw c2V0ICAqa2V5X2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24s Ci0JCQkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfS0VZKTsKKwkvKgorCSAqIEJv cnJvdyB0aGUgY2FjaGVkIGJpdG1hcCByYXRoZXIgdGhhbiBjb3B5aW5nIGl0OyB3ZSBvbmx5 IHRlc3Qgb3ZlcmxhcAorCSAqIGFuZCBuZXZlciBtdXRhdGUgb3IgZnJlZSBrZXlfYXR0cnMu ICBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUgcnVucworCSAqIHdpdGhvdXQgYnVmZmVy IGxvY2tzIGJ1dCB0aGUgcmVsY2FjaGUgZW50cnkgaXMgcGlubmVkIGJ5IHRoZSBjYWxsZXIn cworCSAqIGxvY2sgb24gdGhlIHJlbGF0aW9uLCBhbmQgd2UgdG91Y2ggbm90aGluZyBiZXR3 ZWVuIGZldGNoIGFuZCB0aGUKKwkgKiBibXNfb3ZlcmxhcCB0aGF0IGNvdWxkIHRyaWdnZXIg YSByZWxjYWNoZSBpbnZhbGlkYXRpb24uCisJICovCisJa2V5X2F0dHJzID0gUmVsYXRpb25H ZXRJbmRleEF0dHJCaXRtYXBOb0NvcHkocmVsYXRpb24sCisJCQkJCQkJCQkJCQkgSU5ERVhf QVRUUl9CSVRNQVBfS0VZKTsKIAogCWlmICghYm1zX292ZXJsYXAobW9kaWZpZWRfaWR4X2F0 dHJzLCBrZXlfYXR0cnMpKQogCQlsb2NrbW9kZSA9IExvY2tUdXBsZU5vS2V5RXhjbHVzaXZl OwogCi0JYm1zX2ZyZWUoa2V5X2F0dHJzKTsKLQogCXJldHVybiBsb2NrbW9kZTsKIH0KIApA QCAtNDQ5NSw2ICs0NjU1LDcxIEBAIEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzKFJlbGF0 aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwCiAJcmV0 dXJuIG1vZGlmaWVkX2lkeF9hdHRyczsKIH0KIAorLyoKKyAqIGhlYXBfZm9ybV9ob3RfaW5k ZXhlZF90dXBsZQorICoKKyAqIFJldHVybiBhIG5ld2x5IHBhbGxvYydkIGNvcHkgb2YgdHVw IHRoYXQgY2FycmllcyB0aGUgZml4ZWQtc2l6ZQorICogaW5saW5lLXRyYWlsaW5nIG1vZGlm aWVkLWF0dHJpYnV0ZXMgYml0bWFwIChzZWUgYWNjZXNzL2hvdF9pbmRleGVkLmgpLAorICog d2l0aCBIRUFQX0lOREVYRURfVVBEQVRFRCBzZXQuICBUaGUgYml0bWFwIHJlY29yZHMgdGhl IHVzZXIgYXR0cmlidXRlcyBpbgorICogbW9kaWZpZWRfaWR4X2F0dHJzICh0aGUgaW5kZXhl ZCBhdHRyaWJ1dGVzIHRoaXMgVVBEQVRFIGNoYW5nZWQsIHVzaW5nIHRoZQorICogRmlyc3RM b3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciBvZmZzZXQgY29udmVudGlvbik7IGFuIGVt cHR5IHNldCB5aWVsZHMKKyAqIGFuIGFsbC16ZXJvIGJpdG1hcCwgd2hpY2ggaXMgY29ycmVj dCBmb3IgdGhlIGNoYWluLXVuaWZvcm1pdHkgcHJvbW90aW9uIG9mCisgKiBhIGNsYXNzaWMt SE9UIHVwZGF0ZSBvbiBhbiBhbHJlYWR5LUhPVC1pbmRleGVkIGNoYWluLgorICoKKyAqIFRo ZSBiaXRtYXAgb2NjdXBpZXMgdGhlIGZpbmFsIEhvdEluZGV4ZWRCaXRtYXBCeXRlcyhuYXR0 cykgYnl0ZXMgb2YgdGhlCisgKiB0dXBsZSwgd2hlcmUgbmF0dHMgaXMgdGhlIHR1cGxlJ3Mg b3duIGF0dHJpYnV0ZSBjb3VudAorICogKEhlYXBUdXBsZUhlYWRlckdldE5hdHRzKSAtLSB3 aGljaCBhIHJlYWRlciByZWNvdmVycyBmcm9tIHRoZSBzdG9yZWQgdHVwbGUsCisgKiBzbyB0 aGUgYml0bWFwIHN0YXlzIGxvY2F0YWJsZSBldmVuIGFmdGVyIHRoZSByZWxhdGlvbidzIG5h dHRzIGxhdGVyIGdyb3dzCisgKiB2aWEgQUREIENPTFVNTi4gIEZvciBhIGZyZXNobHkgZm9y bWVkIFVQREFURSB0dXBsZSB0aGlzIGVxdWFscyB0aGUKKyAqIHJlbGF0aW9uJ3MgY3VycmVu dCBuYXR0czsgd2UgYXNzZXJ0IHRoYXQgdG8gY2F0Y2ggYW55IGZ1dHVyZSBkaXZlcmdlbmNl LgorICogVGhlIGJpdG1hcCBzaXRzIHBhc3QgdGhlIGF0dHJpYnV0ZSBkYXRhLCBzbyBoZWFw X2RlZm9ybV90dXBsZSBuZXZlciBzZWVzCisgKiBpdC4gIFRoZSBjYWxsZXIgbXVzdCBoYXZl IHJlc2VydmVkIHJvb20gZm9yIHRoZSBleHRyYSBieXRlcyBpbiB0aGUgcGFnZS1maXQKKyAq IGNhbGN1bGF0aW9uLCBhbmQgbXVzdCBmcmVlIHRoZSByZXR1cm5lZCB0dXBsZS4KKyAqLwor c3RhdGljIEhlYXBUdXBsZQoraGVhcF9mb3JtX2hvdF9pbmRleGVkX3R1cGxlKEhlYXBUdXBs ZSB0dXAsIGludCByZWxuYXR0cywKKwkJCQkJCQljb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVk X2lkeF9hdHRycykKK3sKKwlpbnQJCQluYXR0cyA9IEhlYXBUdXBsZUhlYWRlckdldE5hdHRz KHR1cC0+dF9kYXRhKTsKKwlTaXplCQlibWJ5dGVzOworCVNpemUJCW5ld2xlbjsKKwlIZWFw VHVwbGUJbmV3dHVwbGU7CisJdWludDgJICAgKmJpdG1hcDsKKwlpbnQJCQl4ID0gLTE7CisK KwkvKgorCSAqIFRoZSBiaXRtYXAgaXMgc2l6ZWQgYW5kIGxvY2F0ZWQgYnkgdGhlIHR1cGxl J3Mgb3duIG5hdHRzOyBhIGZyZXNobHkKKwkgKiBmb3JtZWQgVVBEQVRFIHR1cGxlIGNhcnJp ZXMgdGhlIGZ1bGwgcmVsYXRpb24gbmF0dHMuICBJZiB0aGVzZSBldmVyCisJICogZGl2ZXJn ZSB0aGUgcGFnZS1maXQgcmVzZXJ2YXRpb24gKG1hZGUgd2l0aCByZWxuYXR0cykgYW5kIHRo ZSBhY3R1YWwKKwkgKiBiaXRtYXAgc2l6ZSB3b3VsZCBkaXNhZ3JlZS4KKwkgKi8KKwlBc3Nl cnQobmF0dHMgPT0gcmVsbmF0dHMpOworCWJtYnl0ZXMgPSBIb3RJbmRleGVkQml0bWFwQnl0 ZXMobmF0dHMpOworCW5ld2xlbiA9IHR1cC0+dF9sZW4gKyBibWJ5dGVzOworCisJbmV3dHVw bGUgPSAoSGVhcFR1cGxlKSBwYWxsb2MwKEhFQVBUVVBMRVNJWkUgKyBuZXdsZW4pOworCW5l d3R1cGxlLT50X2xlbiA9IG5ld2xlbjsKKwluZXd0dXBsZS0+dF9zZWxmID0gdHVwLT50X3Nl bGY7CisJbmV3dHVwbGUtPnRfdGFibGVPaWQgPSB0dXAtPnRfdGFibGVPaWQ7CisJbmV3dHVw bGUtPnRfZGF0YSA9IChIZWFwVHVwbGVIZWFkZXIpICgoY2hhciAqKSBuZXd0dXBsZSArIEhF QVBUVVBMRVNJWkUpOworCisJLyogY29weSB0aGUgb3JpZ2luYWwgdHVwbGU7IHRoZSB0cmFp bGluZyBiaXRtYXAgYnl0ZXMgc3RheSB6ZXJvICovCisJbWVtY3B5KG5ld3R1cGxlLT50X2Rh dGEsIHR1cC0+dF9kYXRhLCB0dXAtPnRfbGVuKTsKKwluZXd0dXBsZS0+dF9kYXRhLT50X2lu Zm9tYXNrMiB8PSBIRUFQX0lOREVYRURfVVBEQVRFRDsKKworCWJpdG1hcCA9IEhvdEluZGV4 ZWRHZXRNb2RpZmllZEJpdG1hcFJXKG5ld3R1cGxlLT50X2RhdGEsIG5ld2xlbiwgbmF0dHMp OworCXdoaWxlICgoeCA9IGJtc19uZXh0X21lbWJlcihtb2RpZmllZF9pZHhfYXR0cnMsIHgp KSA+PSAwKQorCXsKKwkJQXR0ck51bWJlcglhdHRudW0gPSB4ICsgRmlyc3RMb3dJbnZhbGlk SGVhcEF0dHJpYnV0ZU51bWJlcjsKKworCQkvKiBvbmx5IHVzZXIgYXR0cmlidXRlcyBjYW4g YmUgbW9kaWZpZWQtYW5kLWluZGV4ZWQgKi8KKwkJaWYgKGF0dG51bSA+PSAxKQorCQkJSG90 SW5kZXhlZFNldEF0dHJNb2RpZmllZChiaXRtYXAsIGF0dG51bSk7CisJfQorCisJcmV0dXJu IG5ld3R1cGxlOworfQorCiAvKgogICoJc2ltcGxlX2hlYXBfdXBkYXRlIC0gcmVwbGFjZSBh IHR1cGxlCiAgKgpAQCAtNDUwNSw3ICs0NzMwLDcgQEAgSGVhcFVwZGF0ZU1vZGlmaWVkSWR4 QXR0cnMoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSBvbGR0dXAsIEhlYXBUdXBsZSBu ZXd0dXAKICAqLwogdm9pZAogc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAsCi0JCQkJICAg VFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCisJCQkJICAgYm9vbCAqdXBkYXRl X2FsbF9pbmRleGVzKQogewogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAJVE1fRmFpbHVyZURhdGEg dG1mZDsKQEAgLTQ1MTQsMTQgKzQ3MzksMTUgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0 aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0 dXAKIAlCdWZmZXJIZWFwVHVwbGVUYWJsZVNsb3QgKmJzbG90OwogCUhlYXBUdXBsZQlvbGR0 dXA7CiAJYm9vbAkJc2hvdWxkRnJlZSA9IHRydWU7Ci0JQml0bWFwc2V0ICAqaWR4X2F0dHJz LAotCQkJICAgKm1vZGlmaWVkX2lkeF9hdHRyczsKLQlib29sCQlob3RfYWxsb3dlZCwKLQkJ CQlzdW1tYXJpemVkX29ubHk7CisJQml0bWFwc2V0ICAqaWR4X2F0dHJzOworCUJpdG1hcHNl dCAgKmxvY2FsX21vZGlmaWVkX2lkeF9hdHRyczsKKwlIZWFwVXBkYXRlSW5kZXhNb2RlIGhv dF9tb2RlOwogCUJ1ZmZlcgkJYnVmZmVyOwogCiAJQXNzZXJ0KEl0ZW1Qb2ludGVySXNWYWxp ZChvdGlkKSk7CiAKKwkqdXBkYXRlX2FsbF9pbmRleGVzID0gZmFsc2U7CisKIAkvKgogCSAq IEZldGNoIHRoaXMgYml0bWFwIG9mIGludGVyZXN0aW5nIGF0dHJpYnV0ZXMgZnJvbSByZWxj YWNoZSBiZWZvcmUKIAkgKiBvYnRhaW5pbmcgYSBidWZmZXIgbG9jayBiZWNhdXNlIGlmIHdl IGFyZSBkb2luZyBhbiB1cGRhdGUgb24gb25lIG9mIHRoZQpAQCAtNDU3MSw4ICs0Nzk3LDYg QEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAKIAkJICovCiAJCUFzc2VydChSZWxhdGlv blN1cHBvcnRzU3lzQ2FjaGUoUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbikpKTsKIAotCQkq dXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOwotCiAJCS8qIG1vZGlmaWVkX2lkeF9hdHRycyBu b3QgeWV0IGluaXRpYWxpemVkICovCiAJCWJtc19mcmVlKGlkeF9hdHRycyk7CiAJCUV4ZWNE cm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CkBAIC00NTg4LDEzICs0ODEyLDE0IEBA IHNpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50 ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgdHVwCiAJRXhlY1N0b3JlUGlubmVkQnVmZmVySGVh cFR1cGxlKCZic2xvdC0+YmFzZS50dXBkYXRhLCBzbG90LCBidWZmZXIpOwogCW9sZHR1cCA9 IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwgZmFsc2UsICZzaG91bGRGcmVlKTsKIAot CW1vZGlmaWVkX2lkeF9hdHRycyA9IEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzKHJlbGF0 aW9uLCBvbGR0dXAsIHR1cCk7Ci0JbG9ja21vZGUgPSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9j a21vZGUocmVsYXRpb24sIG1vZGlmaWVkX2lkeF9hdHRycyk7Ci0JaG90X2FsbG93ZWQgPSBI ZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMsICZz dW1tYXJpemVkX29ubHkpOworCWxvY2FsX21vZGlmaWVkX2lkeF9hdHRycyA9IEhlYXBVcGRh dGVNb2RpZmllZElkeEF0dHJzKHJlbGF0aW9uLCBvbGR0dXAsIHR1cCk7CisJbG9ja21vZGUg PSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUocmVsYXRpb24sIGxvY2FsX21vZGlmaWVk X2lkeF9hdHRycyk7CisJaG90X21vZGUgPSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0 aW9uLCBsb2NhbF9tb2RpZmllZF9pZHhfYXR0cnMpOwogCi0JcmVzdWx0ID0gaGVhcF91cGRh dGUocmVsYXRpb24sIG90aWQsIHR1cCwgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwgMCwK KwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVwLCBHZXRDdXJyZW50 Q29tbWFuZElkKHRydWUpLAorCQkJCQkJIDAgLyogb3B0aW9ucyAqLyAsCiAJCQkJCQkgSW52 YWxpZFNuYXBzaG90LCB0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0JCQkJCQkgJnRt ZmQsIGxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsIGhvdF9hbGxvd2VkKTsKKwkJCQkJ CSAmdG1mZCwgbG9ja21vZGUsIGxvY2FsX21vZGlmaWVkX2lkeF9hdHRycywgaG90X21vZGUp OwogCiAJaWYgKHNob3VsZEZyZWUpCiAJCWhlYXBfZnJlZXR1cGxlKG9sZHR1cCk7CkBAIC00 NjAyLDE0ICs0ODI3LDYgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAKIAlFeGVjRHJv cFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOwogCWJtc19mcmVlKGlkeF9hdHRycyk7CiAK LQkvKgotCSAqIERlY2lkZSB3aGV0aGVyIG5ldyBpbmRleCBlbnRyaWVzIGFyZSBuZWVkZWQg Zm9yIHRoZSB0dXBsZQotCSAqCi0JICogSWYgdGhlIHVwZGF0ZSBpcyBub3QgSE9ULCB3ZSBt dXN0IHVwZGF0ZSBhbGwgaW5kZXhlcy4gSWYgdGhlIHVwZGF0ZSBpcwotCSAqIEhPVCwgaXQg Y291bGQgYmUgdGhhdCB3ZSB1cGRhdGVkIHN1bW1hcml6ZWQgY29sdW1ucywgc28gd2UgZWl0 aGVyCi0JICogdXBkYXRlIG9ubHkgc3VtbWFyaXplZCBpbmRleGVzLCBvciBub25lIGF0IGFs bC4KLQkgKi8KLQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOwogCXN3aXRjaCAocmVzdWx0 KQogCXsKIAkJY2FzZSBUTV9TZWxmTW9kaWZpZWQ6CkBAIC00NjE4LDExICs0ODM1LDE0IEBA IHNpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50 ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgdHVwCiAJCQlicmVhazsKIAogCQljYXNlIFRNX09r OgotCQkJLyogZG9uZSBzdWNjZXNzZnVsbHkgKi8KLQkJCWlmICghSGVhcFR1cGxlSXNIZWFw T25seSh0dXApKQotCQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX0FsbDsKLQkJCWVsc2UgaWYg KHN1bW1hcml6ZWRfb25seSkKLQkJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1tYXJpemlu ZzsKKworCQkJLyoKKwkJCSAqIElmIHRoZSB0dXBsZSBzdG9yZWQgYnkgaGVhcF91cGRhdGUg aXMgaGVhcC1vbmx5IHRoaXMgd2FzIGEgSE9UCisJCQkgKiB1cGRhdGUgYW5kIChzdWJqZWN0 IHRvIHBlci1pbmRleCBjaGVja3MpIG5vdCBldmVyeSBpbmRleCBuZWVkcworCQkJICogYSBu ZXcgZW50cnk7IG90aGVyd2lzZSBldmVyeSBpbmRleCBtdXN0IGdldCBvbmUgcG9pbnRpbmcg YXQgdGhlCisJCQkgKiBuZXcgdHVwbGUncyBUSUQuCisJCQkgKi8KKwkJCSp1cGRhdGVfYWxs X2luZGV4ZXMgPSAhSGVhcFR1cGxlSXNIZWFwT25seSh0dXApOwogCQkJYnJlYWs7CiAKIAkJ Y2FzZSBUTV9VcGRhdGVkOgpAQCAtNDYzNyw2ICs0ODU3LDggQEAgc2ltcGxlX2hlYXBfdXBk YXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhl YXBUdXBsZSB0dXAKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgaGVhcF91cGRhdGUg c3RhdHVzOiAldSIsIHJlc3VsdCk7CiAJCQlicmVhazsKIAl9CisKKwlibXNfZnJlZShsb2Nh bF9tb2RpZmllZF9pZHhfYXR0cnMpOwogfQogCiAKQEAgLTgyMDEsMzkgKzg0MjMsNTIgQEAg aW5kZXhfZGVsZXRlX2NoZWNrX2h0aWQoVE1fSW5kZXhEZWxldGVPcCAqZGVsc3RhdGUsCiAJ QXNzZXJ0KE9mZnNldE51bWJlcklzVmFsaWQoaXN0YXR1cy0+aWR4b2ZmbnVtKSk7CiAKIAlp ZiAodW5saWtlbHkoaW5kZXhwYWdlaG9mZm51bSA+IG1heG9mZikpCi0JCWVyZXBvcnQoRVJS T1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFWF9DT1JSVVBURUQpLAotCQkJCSBlcnJt c2dfaW50ZXJuYWwoImhlYXAgdGlkIGZyb20gaW5kZXggdHVwbGUgKCV1LCV1KSBwb2ludHMg cGFzdCBlbmQgb2YgaGVhcCBwYWdlIGxpbmUgcG9pbnRlciBhcnJheSBhdCBvZmZzZXQgJXUg b2YgYmxvY2sgJXUgaW4gaW5kZXggXCIlc1wiIiwKLQkJCQkJCQkJIEl0ZW1Qb2ludGVyR2V0 QmxvY2tOdW1iZXIoaHRpZCksCi0JCQkJCQkJCSBpbmRleHBhZ2Vob2ZmbnVtLAotCQkJCQkJ CQkgaXN0YXR1cy0+aWR4b2ZmbnVtLCBkZWxzdGF0ZS0+aWJsa251bSwKLQkJCQkJCQkJIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKGRlbHN0YXRlLT5pcmVsKSkpKTsKKwl7CisJCS8qCisJ CSAqIFVuZGVyIEhPVC1pbmRleGVkIHVwZGF0ZXMsIGEgc3RhbGUgYnRyZWUgZW50cnkgY2Fu IG91dGxpdmUgaGVhcAorCQkgKiBwcnVuaW5nL3ZhY3V1bSBvZiB0aGUgcGFnZSBpdCB0YXJn ZXRzOyBpZiB0aGUgdGFyZ2V0IG9mZnNldCBpcyBwYXN0CisJCSAqIHRoZSBjdXJyZW50IG1h eCwgdHJlYXQgYXMgdmFjdXVtYWJsZSBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4KKwkJICogaW5k ZXgtY29ycnVwdGlvbiBlcnJvci4KKwkJICovCisJCXJldHVybjsKKwl9CiAKIAlpaWQgPSBQ YWdlR2V0SXRlbUlkKHBhZ2UsIGluZGV4cGFnZWhvZmZudW0pOwogCWlmICh1bmxpa2VseSgh SXRlbUlkSXNVc2VkKGlpZCkpKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVS UkNPREVfSU5ERVhfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnX2ludGVybmFsKCJoZWFwIHRp ZCBmcm9tIGluZGV4IHR1cGxlICgldSwldSkgcG9pbnRzIHRvIHVudXNlZCBoZWFwIHBhZ2Ug aXRlbSBhdCBvZmZzZXQgJXUgb2YgYmxvY2sgJXUgaW4gaW5kZXggXCIlc1wiIiwKLQkJCQkJ CQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoaHRpZCksCi0JCQkJCQkJCSBpbmRleHBh Z2Vob2ZmbnVtLAotCQkJCQkJCQkgaXN0YXR1cy0+aWR4b2ZmbnVtLCBkZWxzdGF0ZS0+aWJs a251bSwKLQkJCQkJCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGRlbHN0YXRlLT5pcmVs KSkpKTsKKwl7CisJCS8qCisJCSAqIFVuZGVyIEhPVC1pbmRleGVkIHVwZGF0ZXMsIGEgc3Rh bGUgYnRyZWUgZW50cnkgY2FuIGxlZ2l0aW1hdGVseQorCQkgKiBwb2ludCBhdCBhbiBMUCB0 aGF0IGhhcyBzaW5jZSBiZWVuIHJlY2xhaW1lZCB0byBMUF9VTlVTRUQgYnkKKwkJICogcHJ1 bmluZyBiZWZvcmUgVkFDVVVNIHByb2Nlc3NlZCB0aGUgaW5kZXguICBUcmVhdCB0aGF0IGFz ICJ0aGUKKwkJICogY2hhaW4gaXMgdmFjdXVtYWJsZSIgKGNhbGxlcidzIGRvd25zdHJlYW0g Y2hhaW4gd2FsayB3aWxsIHJlYWNoIHRoZQorCQkgKiBzYW1lIGNvbmNsdXNpb24pIHJhdGhl ciB0aGFuIGFuIGluZGV4LWNvcnJ1cHRpb24gZXJyb3IuCisJCSAqLworCQlyZXR1cm47CisJ fQogCi0JaWYgKEl0ZW1JZEhhc1N0b3JhZ2UoaWlkKSkKKwkvKgorCSAqIEEgcmVkaXJlY3Qg dGFyZ2V0IChMUF9SRURJUkVDVCkgaXMgYSB2YWxpZCBjaGFpbiByb290OiBhbiBpbmRleCBl bnRyeQorCSAqIHBvaW50aW5nIGF0IGl0IGlzIGxlZ2l0aW1hdGUgYW5kIHRoZSBjYWxsZXIn cyBjaGFpbiB3YWxrIGRlY2lkZXMKKwkgKiBkZWxldGFiaWxpdHkuICBPbmx5IGdlbnVpbmVs eSBub3JtYWwgdHVwbGVzIGFyZSBpbnNwZWN0ZWQgYmVsb3cuCisJICovCisJaWYgKEl0ZW1J ZElzTm9ybWFsKGlpZCkpCiAJewogCQlIZWFwVHVwbGVIZWFkZXIgaHR1cDsKIAotCQlBc3Nl cnQoSXRlbUlkSXNOb3JtYWwoaWlkKSk7CiAJCWh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQ YWdlR2V0SXRlbShwYWdlLCBpaWQpOwogCiAJCWlmICh1bmxpa2VseShIZWFwVHVwbGVIZWFk ZXJJc0hlYXBPbmx5KGh0dXApKSkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5ERVhfQ09SUlVQVEVEKSwKLQkJCQkJIGVycm1zZ19pbnRlcm5hbCgiaGVh cCB0aWQgZnJvbSBpbmRleCB0dXBsZSAoJXUsJXUpIHBvaW50cyB0byBoZWFwLW9ubHkgdHVw bGUgYXQgb2Zmc2V0ICV1IG9mIGJsb2NrICV1IGluIGluZGV4IFwiJXNcIiIsCi0JCQkJCQkJ CQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcihodGlkKSwKLQkJCQkJCQkJCSBpbmRleHBh Z2Vob2ZmbnVtLAotCQkJCQkJCQkJIGlzdGF0dXMtPmlkeG9mZm51bSwgZGVsc3RhdGUtPmli bGtudW0sCi0JCQkJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoZGVsc3RhdGUtPmly ZWwpKSkpOworCQl7CisJCQkvKgorCQkJICogQSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRz IGEgZnJlc2ggaW5kZXggZW50cnkgdGhhdCBwb2ludHMKKwkJCSAqIGRpcmVjdGx5IGF0IGEg aGVhcC1vbmx5IHR1cGxlOyB0aG9zZSB0dXBsZXMgY2FycnkKKwkJCSAqIEhFQVBfSU5ERVhF RF9VUERBVEVELiAgQSBzdGFsZSBidHJlZSBlbnRyeSBjYW4gYWxzbyBhcnJpdmUgYXQgYQor CQkJICogaGVhcC1vbmx5IHR1cGxlIHdoZW4gYSBjaGFpbiByb290IGdvdCBwcnVuZWQgb3V0 LiAgQm90aCBhcmUKKwkJCSAqIGxlZ2FsIHVuZGVyIEhPVC1pbmRleGVkOyBleGVtcHQgdGhl bSBmcm9tIHRoZSAiaW5kZXggZW50cmllcworCQkJICogbXVzdCB0YXJnZXQgY2hhaW4gcm9v dHMiIGludmFyaWFudCBhbmQgbGV0IHRoZSBjYWxsZXIncyBjaGFpbgorCQkJICogd2FsayBk ZWNpZGUgd2hldGhlciB0aGUgZW50cnkgaXMgZGVsZXRhYmxlLgorCQkJICovCisJCX0KIAl9 CiB9CiAKQEAgLTg0NDgsNyArODY4Myw3IEBAIGhlYXBfaW5kZXhfZGVsZXRlX3R1cGxlcyhS ZWxhdGlvbiByZWwsIFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogCiAJCQkvKiBBcmUg YW55IHR1cGxlcyBmcm9tIHRoaXMgSE9UIGNoYWluIG5vbi12YWN1dW1hYmxlPyAqLwogCQkJ aWYgKGhlYXBfaG90X3NlYXJjaF9idWZmZXIoJnRtcCwgcmVsLCBidWYsICZTbmFwc2hvdE5v blZhY3V1bWFibGUsCi0JCQkJCQkJCQkgICAmaGVhcFR1cGxlLCBOVUxMLCB0cnVlKSkKKwkJ CQkJCQkJCSAgICZoZWFwVHVwbGUsIE5VTEwsIHRydWUsIE5VTEwsIE5VTEwsIE5VTEwpKQog CQkJCWNvbnRpbnVlOwkJLyogY2FuJ3QgZGVsZXRlIGVudHJ5ICovCiAKIAkJCS8qIENhbGxl ciB3aWxsIGRlbGV0ZSwgc2luY2Ugd2hvbGUgSE9UIGNoYWluIGlzIHZhY3V1bWFibGUgKi8K QEAgLTkwMzAsOSArOTI2NSwyMCBAQCBsb2dfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsbiwg QnVmZmVyIG9sZGJ1ZiwKIAkJfQogCX0KIAotCS8qIElmIG5ldyB0dXBsZSBpcyB0aGUgc2lu Z2xlIGFuZCBmaXJzdCB0dXBsZSBvbiBwYWdlLi4uICovCisJLyoKKwkgKiBJZiBuZXcgdHVw bGUgaXMgdGhlIHNpbmdsZSBhbmQgZmlyc3QgdHVwbGUgb24gcGFnZSwgcmVwbGF5IGNhbiBy ZWluaXQKKwkgKiB0aGUgcGFnZSBmcm9tIHNjcmF0Y2guCisJICoKKwkgKiBBbHNvIHJlcXVp cmUgdGhhdCB0aGUgcGFnZSdzIHR1cGxlIGFyZWEgY29udGFpbnMgbm90aGluZyBvdGhlciB0 aGFuIHRoaXMKKwkgKiB0dXBsZS4gIFNlZSBoZWFwX2luc2VydCBmb3Igd2h5IHRoaXMgbWF0 dGVycyB3aGVuIHZhY3V1bSBoYXMgbGVmdCBvcnBoYW4KKwkgKiB0dXBsZSBieXRlcyBiZWhp bmQgYW4gTFBfVU5VU0VEIHNsb3QuCisJICoKKwkgKiBOT1RFOiB0aGlzIG11c3QgbWlycm9y IHRoZSBzYW1lIGxvZ2ljIGluIGhlYXBfaW5zZXJ0KCkKKwkgKi8KIAlpZiAoSXRlbVBvaW50 ZXJHZXRPZmZzZXROdW1iZXIoJihuZXd0dXAtPnRfc2VsZikpID09IEZpcnN0T2Zmc2V0TnVt YmVyICYmCi0JCVBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkgPT0gRmlyc3RPZmZzZXRO dW1iZXIpCisJCVBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkgPT0gRmlyc3RPZmZzZXRO dW1iZXIgJiYKKwkJKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfdXBwZXIgPT0KKwkJKChQYWdl SGVhZGVyKSBwYWdlKS0+cGRfc3BlY2lhbCAtIE1BWEFMSUdOKG5ld3R1cC0+dF9sZW4pKQog CXsKIAkJaW5mbyB8PSBYTE9HX0hFQVBfSU5JVF9QQUdFOwogCQlpbml0ID0gdHJ1ZTsKQEAg LTkwOTQsNiArOTM0MCw3IEBAIGxvZ19oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxuLCBCdWZm ZXIgb2xkYnVmLAogCSAqIFRoZSAnZGF0YScgZG9lc24ndCBpbmNsdWRlIHRoZSBjb21tb24g cHJlZml4IG9yIHN1ZmZpeC4KIAkgKi8KIAlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsICZ4bGhk ciwgU2l6ZU9mSGVhcEhlYWRlcik7CisKIAlpZiAocHJlZml4bGVuID09IDApCiAJewogCQlY TG9nUmVnaXN0ZXJCdWZEYXRhKDAsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYwppbmRleCBlNmNiODE5N2RlYy4uNWY2NWM0ZThmOGMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMjI0LDQ4ICsyMjQsMzcg QEAgaGVhcGFtX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIg b3RpZCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCUNvbW1hbmRJZCBjaWQsIHVpbnQz MiBvcHRpb25zLAogCQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jvc3NjaGVj aywKIAkJCQkJYm9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9k ZSAqbG9ja21vZGUsCi0JCQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJz LCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkJQml0bWFwc2V0ICoq bW9kaWZpZWRfYXR0cnMpCiB7CiAJYm9vbAkJc2hvdWxkRnJlZSA9IHRydWU7CiAJSGVhcFR1 cGxlCXR1cGxlID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCB0cnVlLCAmc2hvdWxk RnJlZSk7Ci0JYm9vbAkJaG90X2FsbG93ZWQ7Ci0JYm9vbAkJc3VtbWFyaXplZF9vbmx5Owor CUhlYXBVcGRhdGVJbmRleE1vZGUgaG90X21vZGU7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAog CUFzc2VydChJdGVtUG9pbnRlcklzVmFsaWQob3RpZCkpOwogCi0JaG90X2FsbG93ZWQgPSBI ZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMsICZz dW1tYXJpemVkX29ubHkpOwotCSpsb2NrbW9kZSA9IEhlYXBVcGRhdGVEZXRlcm1pbmVMb2Nr bW9kZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0dHJzKTsKKwlob3RfbW9kZSA9IEhlYXBV cGRhdGVIb3RBbGxvd2FibGUocmVsYXRpb24sICptb2RpZmllZF9hdHRycyk7CisJKmxvY2tt b2RlID0gSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKHJlbGF0aW9uLCAqbW9kaWZpZWRf YXR0cnMpOwogCiAJLyogVXBkYXRlIHRoZSB0dXBsZSB3aXRoIHRhYmxlIG9pZCAqLwogCXNs b3QtPnR0c190YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwogCXR1cGxl LT50X3RhYmxlT2lkID0gc2xvdC0+dHRzX3RhYmxlT2lkOwogCi0JcmVzdWx0ID0gaGVhcF91 cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cGxlLCBjaWQsIG9wdGlvbnMsIGNyb3NzY2hlY2ss IHdhaXQsCi0JCQkJCQkgdG1mZCwgKmxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsIGhv dF9hbGxvd2VkKTsKKwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVw bGUsIGNpZCwgb3B0aW9ucywKKwkJCQkJCSBjcm9zc2NoZWNrLCB3YWl0LAorCQkJCQkJIHRt ZmQsICpsb2NrbW9kZSwgKm1vZGlmaWVkX2F0dHJzLCBob3RfbW9kZSk7CiAJSXRlbVBvaW50 ZXJDb3B5KCZ0dXBsZS0+dF9zZWxmLCAmc2xvdC0+dHRzX3RpZCk7CiAKIAkvKgotCSAqIERl Y2lkZSB3aGV0aGVyIG5ldyBpbmRleCBlbnRyaWVzIGFyZSBuZWVkZWQgZm9yIHRoZSB0dXBs ZQotCSAqCi0JICogTm90ZTogaGVhcF91cGRhdGUgcmV0dXJucyB0aGUgdGlkIChsb2NhdGlv bikgb2YgdGhlIG5ldyB0dXBsZSBpbiB0aGUKLQkgKiB0X3NlbGYgZmllbGQuCi0JICoKLQkg KiBJZiB0aGUgdXBkYXRlIGlzIG5vdCBIT1QsIHdlIG11c3QgdXBkYXRlIGFsbCBpbmRleGVz LiBJZiB0aGUgdXBkYXRlIGlzCi0JICogSE9ULCBpdCBjb3VsZCBiZSB0aGF0IHdlIHVwZGF0 ZWQgc3VtbWFyaXplZCBjb2x1bW5zLCBzbyB3ZSBlaXRoZXIKLQkgKiB1cGRhdGUgb25seSBz dW1tYXJpemVkIGluZGV4ZXMsIG9yIG5vbmUgYXQgYWxsLgorCSAqIFRlbGwgdGhlIGNhbGxl ciB3aGV0aGVyIGV2ZXJ5IGluZGV4IG5lZWRzIGEgbmV3IGVudHJ5LiAgSWYgdGhlIG5ldwor CSAqIHR1cGxlIGlzIG5vdCBoZWFwLW9ubHkgdGhlIHVwZGF0ZSB3YXMgbm90IEhPVDogaXQg aXMgYW4gaW5kZXBlbmRlbnQKKwkgKiB2ZXJzaW9uIHJlcXVpcmluZyBhIGZyZXNoIGVudHJ5 IGluIGV2ZXJ5IGluZGV4LCB3aGljaCB3ZSBzaWduYWwgYnkKKwkgKiBhZGRpbmcgdGhlIHdo b2xlLXJvdyBhdHRyaWJ1dGUgdG8gKm1vZGlmaWVkX2F0dHJzLiAgT3RoZXJ3aXNlIChjbGFz c2ljCisJICogSE9UIG9yIEhPVC1pbmRleGVkKSB0aGUgY2FsbGVyIGNvbnN1bHRzIHRoZSBw ZXItaW5kZXggYXR0cmlidXRlcy4KIAkgKi8KLQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25l OwotCWlmIChyZXN1bHQgPT0gVE1fT2spCi0JewotCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25s eSh0dXBsZSkpCi0JCXsKLQkJCWlmIChzdW1tYXJpemVkX29ubHkpCi0JCQkJKnVwZGF0ZV9p bmRleGVzID0gVFVfU3VtbWFyaXppbmc7Ci0JCX0KLQkJZWxzZQotCQkJKnVwZGF0ZV9pbmRl eGVzID0gVFVfQWxsOwotCX0KKwlpZiAocmVzdWx0ID09IFRNX09rICYmICFIZWFwVHVwbGVJ c0hlYXBPbmx5KHR1cGxlKSkKKwkJKm1vZGlmaWVkX2F0dHJzID0gYm1zX2FkZF9tZW1iZXIo Km1vZGlmaWVkX2F0dHJzLAorCQkJCQkJCQkJCSBUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhl cyk7CiAKIAlpZiAoc2hvdWxkRnJlZSkKIAkJcGZyZWUodHVwbGUpOwpAQCAtNzMxLDkgKzcy MCwzMyBAQCBoZWFwYW1fcmVsYXRpb25fY29weV9mb3JfY2x1c3RlcihSZWxhdGlvbiBPbGRI ZWFwLCBSZWxhdGlvbiBOZXdIZWFwLAogCQkJaWYgKCFpbmRleF9nZXRuZXh0X3Nsb3QoaW5k ZXhTY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCiAJCQkJYnJlYWs7CiAKLQkJ CS8qIFNpbmNlIHdlIHVzZWQgbm8gc2NhbiBrZXlzLCBzaG91bGQgbmV2ZXIgbmVlZCB0byBy ZWNoZWNrICovCisJCQkvKgorCQkJICogQ0xVU1RFUiB1c2VzIGEgbm8ta2V5IGZ1bGwtaW5k ZXggc2NhbjsgaXQgY2Fubm90IGRvIGFueQorCQkJICogdHVwbGUtbGV2ZWwgZmlsdGVyaW5n IGl0c2VsZi4gIFRoZSBIT1QtaW5kZXhlZCByZWFkZXIgcGF0aAorCQkJICogcm91dGluZWx5 IHNldHMgeHNfcmVjaGVjayB3aGVuIHdhbGtpbmcgY2hhaW4gZW50cmllcyB3aG9zZQorCQkJ ICogaW5kZXgga2V5IG1heSBiZSBzdGFsZSByZWxhdGl2ZSB0byB0aGUgdmlzaWJsZSBoZWFw IHR1cGxlLgorCQkJICogVGhvc2UgZW50cmllcyBjYXVzZSB0aGUgc2FtZSBsaXZlIHR1cGxl IHRvIGJlIHZpc2l0ZWQgdmlhIHRoZQorCQkJICogZnJlc2ggaG90LWluZGV4ZWQtaW5zZXJ0 ZWQgZW50cnkgdG9vOyBpbmNsdWRpbmcgdGhlbSB3b3VsZAorCQkJICogZHVwbGljYXRlIHJv d3MgaW4gdGhlIHJld3JpdHRlbiBoZWFwLiAgU2tpcCB0aGVtIGhlcmUgLS0gdGhlCisJCQkg KiB0dXBsZSBpcyByZWFjaGFibGUgdGhyb3VnaCBpdHMgY2Fub25pY2FsIGluZGV4IGVudHJ5 LgorCQkJICoKKwkJCSAqIElmIHhzX3JlY2hlY2sgaXMgc2V0IHdpdGggYWN0dWFsIHNjYW4g a2V5cywgdGhhdCdzIGEgcmVhbCBsb3NzeQorCQkJICogaW5kZXggc2NlbmFyaW8gQ0xVU1RF UiBjYW4ndCBoYW5kbGUgKGhpc3RvcmljYWwgcmVzdHJpY3Rpb24pLgorCQkJICovCiAJCQlp ZiAoaW5kZXhTY2FuLT54c19yZWNoZWNrKQotCQkJCWVsb2coRVJST1IsICJDTFVTVEVSIGRv ZXMgbm90IHN1cHBvcnQgbG9zc3kgaW5kZXggY29uZGl0aW9ucyIpOworCQkJeworCQkJCWlm IChpbmRleFNjYW4tPm51bWJlck9mS2V5cyA+IDApCisJCQkJCWVsb2coRVJST1IsICJDTFVT VEVSIGRvZXMgbm90IHN1cHBvcnQgbG9zc3kgaW5kZXggY29uZGl0aW9ucyIpOworCQkJCWNv bnRpbnVlOworCQkJfQorCisJCQkvKgorCQkJICogU2FtZSByZWFzb25pbmcgYXMgZm9yIHhz X3JlY2hlY2s6IGEgSE9ULWluZGV4ZWQgc3RhbGUgZW50cnkKKwkJCSAqIHdvdWxkIHJlLWVt aXQgYW4gYWxyZWFkeS12aXNpdGVkIHR1cGxlIHZpYSBpdHMgY2Fub25pY2FsIGZyZXNoCisJ CQkgKiBlbnRyeS4gIFNraXAuCisJCQkgKi8KKwkJCWlmIChpbmRleFNjYW4tPnhzX2hvdF9p bmRleGVkX3N0YWxlKQorCQkJCWNvbnRpbnVlOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTY0 NywzMCArMTY2MCw0OCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAKIAkJCW9mZm51bSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVt YmVyKCZoZWFwVHVwbGUtPnRfc2VsZik7CiAKLQkJCS8qCi0JCQkgKiBJZiBhIEhPVCB0dXBs ZSBwb2ludHMgdG8gYSByb290IHRoYXQgd2UgZG9uJ3Qga25vdyBhYm91dCwKLQkJCSAqIG9i dGFpbiByb290IGl0ZW1zIGFmcmVzaC4gIElmIHRoYXQgc3RpbGwgZmFpbHMsIHJlcG9ydCBp dCBhcwotCQkJICogY29ycnVwdGlvbi4KLQkJCSAqLwotCQkJaWYgKHJvb3Rfb2Zmc2V0c1tv ZmZudW0gLSAxXSA9PSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQorCQkJaWYgKChoZWFwVHVwbGUt PnRfZGF0YS0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKIAkJ CXsKLQkJCQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShoc2Nhbi0+cnNfY2J1Zik7Ci0K LQkJCQlMb2NrQnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7Ci0J CQkJaGVhcF9nZXRfcm9vdF90dXBsZXMocGFnZSwgcm9vdF9vZmZzZXRzKTsKLQkJCQlMb2Nr QnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCQkJCS8qCisJ CQkJICogSE9ULWluZGV4ZWQgKFNlbGVjdGl2ZSBJbmRleCBVcGRhdGUpIGxpdmUgdHVwbGU6 IGluZGV4IGl0CisJCQkJICogdW5kZXIgaXRzIE9XTiBUSUQsIG5vdCB0aGUgY2hhaW4gcm9v dC4gIEl0cyBpbmRleGVkIHZhbHVlcworCQkJCSAqIGRpZmZlciBmcm9tIGVhcmxpZXIgY2hh aW4gbWVtYmVycycsIGFuZCB0aGUgYml0bWFwLW92ZXJsYXAKKwkJCQkgKiByZWFkIHBhdGgg a2VlcHMgYW4gZW50cnkgb25seSB3aGVuIG5vIGhvcCBhZnRlciB0aGUgZW50cnkncworCQkJ CSAqIHRhcmdldCBjaGFuZ2VkIHRoZSBpbmRleCdzIGF0dHJpYnV0ZXMuICBUaGF0IGhvbGRz IGZvciBhbgorCQkJCSAqIGVudHJ5IHBvaW50aW5nIGRpcmVjdGx5IGF0IHRoZSBsaXZlIHR1 cGxlIChubyBsYXRlciBob3ApOworCQkJCSAqIGFuIGVudHJ5IHBvaW50ZWQgYXQgdGhlIHJv b3Qgd291bGQgYmUgZHJvcHBlZCBhcyBzdGFsZSwKKwkJCQkgKiBsb3NpbmcgdGhlIHJvdy4K KwkJCQkgKi8KKwkJCQlJdGVtUG9pbnRlclNldCgmdGlkLCBJdGVtUG9pbnRlckdldEJsb2Nr TnVtYmVyKCZoZWFwVHVwbGUtPnRfc2VsZiksCisJCQkJCQkJICAgb2ZmbnVtKTsKIAkJCX0K KwkJCWVsc2UKKwkJCXsKKwkJCQkvKgorCQkJCSAqIElmIGEgSE9UIHR1cGxlIHBvaW50cyB0 byBhIHJvb3QgdGhhdCB3ZSBkb24ndCBrbm93IGFib3V0LAorCQkJCSAqIG9idGFpbiByb290 IGl0ZW1zIGFmcmVzaC4gIElmIHRoYXQgc3RpbGwgZmFpbHMsIHJlcG9ydCBpdAorCQkJCSAq IGFzIGNvcnJ1cHRpb24uCisJCQkJICovCisJCQkJaWYgKHJvb3Rfb2Zmc2V0c1tvZmZudW0g LSAxXSA9PSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQorCQkJCXsKKwkJCQkJUGFnZQkJcGFnZSA9 IEJ1ZmZlckdldFBhZ2UoaHNjYW4tPnJzX2NidWYpOwogCi0JCQlpZiAoIU9mZnNldE51bWJl cklzVmFsaWQocm9vdF9vZmZzZXRzW29mZm51bSAtIDFdKSkKLQkJCQllcmVwb3J0KEVSUk9S LAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJCQkgZXJy bXNnX2ludGVybmFsKCJmYWlsZWQgdG8gZmluZCBwYXJlbnQgdHVwbGUgZm9yIGhlYXAtb25s eSB0dXBsZSBhdCAoJXUsJXUpIGluIHRhYmxlIFwiJXNcIiIsCi0JCQkJCQkJCQkJIEl0ZW1Q b2ludGVyR2V0QmxvY2tOdW1iZXIoJmhlYXBUdXBsZS0+dF9zZWxmKSwKLQkJCQkJCQkJCQkg b2ZmbnVtLAotCQkJCQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShoZWFwUmVsYXRp b24pKSkpOworCQkJCQlMb2NrQnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19T SEFSRSk7CisJCQkJCWhlYXBfZ2V0X3Jvb3RfdHVwbGVzKHBhZ2UsIHJvb3Rfb2Zmc2V0cyk7 CisJCQkJCUxvY2tCdWZmZXIoaHNjYW4tPnJzX2NidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7 CisJCQkJfQogCi0JCQlJdGVtUG9pbnRlclNldCgmdGlkLCBJdGVtUG9pbnRlckdldEJsb2Nr TnVtYmVyKCZoZWFwVHVwbGUtPnRfc2VsZiksCi0JCQkJCQkgICByb290X29mZnNldHNbb2Zm bnVtIC0gMV0pOworCQkJCWlmICghT2Zmc2V0TnVtYmVySXNWYWxpZChyb290X29mZnNldHNb b2ZmbnVtIC0gMV0pKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVS UkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCQkJCSBlcnJtc2dfaW50ZXJuYWwoImZhaWxl ZCB0byBmaW5kIHBhcmVudCB0dXBsZSBmb3IgaGVhcC1vbmx5IHR1cGxlIGF0ICgldSwldSkg aW4gdGFibGUgXCIlc1wiIiwKKwkJCQkJCQkJCQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1i ZXIoJmhlYXBUdXBsZS0+dF9zZWxmKSwKKwkJCQkJCQkJCQkJIG9mZm51bSwKKwkJCQkJCQkJ CQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGhlYXBSZWxhdGlvbikpKSk7CisKKwkJCQlJ dGVtUG9pbnRlclNldCgmdGlkLCBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZoZWFwVHVw bGUtPnRfc2VsZiksCisJCQkJCQkJICAgcm9vdF9vZmZzZXRzW29mZm51bSAtIDFdKTsKKwkJ CX0KIAogCQkJLyogQ2FsbCB0aGUgQU0ncyBjYWxsYmFjayByb3V0aW5lIHRvIHByb2Nlc3Mg dGhlIHR1cGxlICovCiAJCQljYWxsYmFjayhpbmRleFJlbGF0aW9uLCAmdGlkLCB2YWx1ZXMs IGlzbnVsbCwgdHVwbGVJc0FsaXZlLApAQCAtMTgzNSw3ICsxODY2LDggQEAgaGVhcGFtX2lu ZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQlyb290VHVwbGUg PSAqaGVhcGN1cnNvcjsKIAkJcm9vdF9vZmZudW0gPSBJdGVtUG9pbnRlckdldE9mZnNldE51 bWJlcihoZWFwY3Vyc29yKTsKIAotCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVw bGUpKQorCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVwbGUpICYmCisJCQkoaGVh cFR1cGxlLT50X2RhdGEtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpID09 IDApCiAJCXsKIAkJCXJvb3Rfb2ZmbnVtID0gcm9vdF9vZmZzZXRzW3Jvb3Rfb2ZmbnVtIC0g MV07CiAJCQlpZiAoIU9mZnNldE51bWJlcklzVmFsaWQocm9vdF9vZmZudW0pKQpAQCAtMjUz MSw3ICsyNTYzLDYgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBz Y2FuLAogCiAJaHNjYW4tPnJzX2NpbmRleCA9IDA7CiAJaHNjYW4tPnJzX250dXBsZXMgPSAw OwotCiAJLyogUmVsZWFzZSBidWZmZXIgY29udGFpbmluZyBwcmV2aW91cyBibG9jay4gKi8K IAlpZiAoQnVmZmVySXNWYWxpZChoc2Nhbi0+cnNfY2J1ZikpCiAJewpAQCAtMjU5Miw2ICsy NjIzLDcgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAog CQkgKiBvZmZzZXQuCiAJCSAqLwogCQlpbnQJCQljdXJzbG90OworCQlib29sCQlwYWdlX2hh ZF9ob3RfaW5kZXhlZCA9IGZhbHNlOwogCiAJCS8qIFdlIG11c3QgaGF2ZSBleHRyYWN0ZWQg dGhlIHR1cGxlIG9mZnNldHMgYnkgbm93ICovCiAJCUFzc2VydChub2Zmc2V0cyA+IC0xKTsK QEAgLTI2MDEsMTIgKzI2MzMsNjUgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVT Y2FuRGVzYyBzY2FuLAogCQkJT2Zmc2V0TnVtYmVyIG9mZm51bSA9IG9mZnNldHNbY3Vyc2xv dF07CiAJCQlJdGVtUG9pbnRlckRhdGEgdGlkOwogCQkJSGVhcFR1cGxlRGF0YSBoZWFwVHVw bGU7CisJCQlib29sCQlob3RfaW5kZXhlZF9zdGFsZSA9IGZhbHNlOwogCiAJCQlJdGVtUG9p bnRlclNldCgmdGlkLCBibG9jaywgb2ZmbnVtKTsKIAkJCWlmIChoZWFwX2hvdF9zZWFyY2hf YnVmZmVyKCZ0aWQsIHNjYW4tPnJzX3JkLCBidWZmZXIsIHNuYXBzaG90LAotCQkJCQkJCQkJ ICAgJmhlYXBUdXBsZSwgTlVMTCwgdHJ1ZSkpCi0JCQkJaHNjYW4tPnJzX3Zpc3R1cGxlc1tu dHVwKytdID0gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnRpZCk7CisJCQkJCQkJCQkg ICAmaGVhcFR1cGxlLCBOVUxMLCB0cnVlLAorCQkJCQkJCQkJICAgJmhvdF9pbmRleGVkX3N0 YWxlLCBOVUxMLCBOVUxMKSkKKwkJCXsKKwkJCQlPZmZzZXROdW1iZXIgcmVzb2x2ZWQgPSBJ dGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdGlkKTsKKwkJCQlib29sCQlhbHJlYWR5X2hh dmUgPSBmYWxzZTsKKworCQkJCS8qCisJCQkJICogQSBiaXRtYXAgaGVhcCBzY2FuIGNhbm5v dCBhdHRyaWJ1dGUgYSBUSUQgdG8gb25lIGluZGV4LCBzbworCQkJCSAqIGFueSBjcm9zc2Vk IGluLWNoYWluIEhPVC9TSVUgaG9wIG1lYW5zIHRoZSBhcnJpdmluZyBlbnRyeQorCQkJCSAq IG1heSBiZSBzdGFsZTsgcmVjaGVjay9kZWR1cCBjb25zZXJ2YXRpdmVseS4KKwkJCQkgKi8K KwkJCQlpZiAoaG90X2luZGV4ZWRfc3RhbGUpCisJCQkJCXBhZ2VfaGFkX2hvdF9pbmRleGVk ID0gdHJ1ZTsKKworCQkJCS8qCisJCQkJICogV2l0aCBIT1QtaW5kZXhlZCB1cGRhdGVzLCBt b3JlIHRoYW4gb25lIGJpdG1hcCBlbnRyeSBvbiB0aGUKKwkJCQkgKiBzYW1lIGJsb2NrIGNh biBjaGFpbi1yZXNvbHZlIHRvIHRoZSBzYW1lIGxpdmUgdHVwbGUgKGEKKwkJCQkgKiBzdGFs ZSBvbGQta2V5IGVudHJ5IHBsdXMgdGhlIGZyZXNoIG5ldy1rZXkgZW50cnksIG9yCisJCQkJ ICogbXVsdGlwbGUgc3RhbGUgZW50cmllcyBmcm9tIHN1Y2Nlc3NpdmUgaG90LWluZGV4ZWQK KwkJCQkgKiB1cGRhdGVzKS4gIE9uY2Ugd2UndmUgc2VlbiBhbnkgaG90LWluZGV4ZWQgaG9w IG9uIHRoaXMKKwkJCQkgKiBibG9jayBkZWR1cCBpbmxpbmUgc28gdXBwZXIgbm9kZXMgKGUu Zy4sIE1FUkdFKSBkb24ndCBzZWUKKwkJCQkgKiB0aGUgc2FtZSByb3cgdHdpY2UuICBQcmVz ZXJ2ZSBvcmlnaW5hbCBpbnNlcnRpb24gb3JkZXI6CisJCQkJICogTUVSR0UncyBSRVRVUk5J Tkcgb3JkZXJpbmcgYW5kIHRlc3QgaGFybmVzcyBzdGFiaWxpdHkgYm90aAorCQkJCSAqIGRl cGVuZCBvbiBpdC4gIEluIHRoZSBhYnNlbmNlIG9mIGhvdC1pbmRleGVkIG9uIHRoZSBwYWdl IHdlCisJCQkJICogc2tpcCB0aGUgbGluZWFyIHNjYW4gZW50aXJlbHkgLS0gdGhlIFRCTSdz IFRJRHMgYXJlIGFscmVhZHkKKwkJCQkgKiBkaXN0aW5jdCBieSBjb25zdHJ1Y3Rpb24uCisJ CQkJICovCisJCQkJaWYgKHBhZ2VfaGFkX2hvdF9pbmRleGVkKQorCQkJCXsKKwkJCQkJZm9y IChpbnQgaiA9IDA7IGogPCBudHVwOyBqKyspCisJCQkJCXsKKwkJCQkJCWlmIChoc2Nhbi0+ cnNfdmlzdHVwbGVzW2pdID09IHJlc29sdmVkKQorCQkJCQkJeworCQkJCQkJCWFscmVhZHlf aGF2ZSA9IHRydWU7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisK KwkJCQlpZiAoIWFscmVhZHlfaGF2ZSkKKwkJCQkJaHNjYW4tPnJzX3Zpc3R1cGxlc1tudHVw KytdID0gcmVzb2x2ZWQ7CisKKwkJCQkvKgorCQkJCSAqIElmIHdlIHJlYWNoZWQgdGhlIHZp c2libGUgdHVwbGUgdGhyb3VnaCBhIEhPVC1pbmRleGVkCisJCQkJICogKGhvdC1pbmRleGVk KSBob3AsIHRoZSBiaXRtYXAgaW5kZXggZW50cnkgdGhhdCBwb2ludGVkIHVzCisJCQkJICog YXQgdGhlIGNoYWluIHJvb3QgbWF5IGRlc2NyaWJlIGtleSB2YWx1ZXMgdGhlIHZpc2libGUg dHVwbGUKKwkJCQkgKiBubyBsb25nZXIgaGFzLiAgRm9yY2UgQml0bWFwSGVhcFNjYW4gdG8g cnVuIGl0cyByZWNoZWNrCisJCQkJICogcXVhbCBhZ2FpbnN0IHRoZXNlIHR1cGxlcyBldmVu IGlmIHRoZSBiaXRtYXAgcGFnZSB3YXMKKwkJCQkgKiBvdGhlcndpc2UgZXhhY3QuCisJCQkJ ICovCisJCQkJaWYgKGhvdF9pbmRleGVkX3N0YWxlKQorCQkJCQkqcmVjaGVjayA9IHRydWU7 CisJCQl9CiAJCX0KKwogCX0KIAllbHNlCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2luZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2luZGV4c2Nhbi5jCmluZGV4IDMzZDE0ZjFkZTdkLi5lN2UzODFkMDUwMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2luZGV4c2Nhbi5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9pbmRleHNjYW4uYwpAQCAt MTUsNiArMTUsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nl c3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3JlbHNjYW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgog CkBAIC0zNSw2ICszNiwxNCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24g cmVsLCB1aW50MzIgZmxhZ3MpCiAJaHNjYW4tPnhzX2JsayA9IEludmFsaWRCbG9ja051bWJl cjsKIAloc2Nhbi0+eHNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCisJLyoKKwkgKiBT Y3JhdGNoIHNwYWNlIGZvciB0aGUgdW5pb24gb2YgbW9kaWZpZWQtYXR0cnMgYml0bWFwcyB0 aGF0IGEgSE9UL1NJVQorCSAqIGNoYWluIHdhbGsgY3Jvc3Nlcywgc2l6ZWQgZm9yIHRoaXMg cmVsYXRpb24ncyBjb2x1bW4gY291bnQuICBUaHJlYWRlZAorCSAqIGJhY2sgb3V0IHRocm91 Z2ggeHNfaG90X2luZGV4ZWRfY3Jvc3NlZCBmb3IgdGhlIGluZGV4LWFjY2VzcyBsYXllci4K KwkgKi8KKwloc2Nhbi0+eHNfYmFzZS54c19ob3RfaW5kZXhlZF9jcm9zc2VkID0KKwkJcGFs bG9jMChIb3RJbmRleGVkQml0bWFwQnl0ZXMoUmVsYXRpb25HZXROdW1iZXJPZkF0dHJpYnV0 ZXMocmVsKSkpOworCiAJcmV0dXJuICZoc2Nhbi0+eHNfYmFzZTsKIH0KIApAQCAtNjMsNiAr NzIsOSBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfZW5kKEluZGV4RmV0Y2hUYWJsZURhdGEgKnNj YW4pCiAJaWYgKEJ1ZmZlcklzVmFsaWQoaHNjYW4tPnhzX3ZtYnVmZmVyKSkKIAkJUmVsZWFz ZUJ1ZmZlcihoc2Nhbi0+eHNfdm1idWZmZXIpOwogCisJaWYgKGhzY2FuLT54c19iYXNlLnhz X2hvdF9pbmRleGVkX2Nyb3NzZWQgIT0gTlVMTCkKKwkJcGZyZWUoaHNjYW4tPnhzX2Jhc2Uu eHNfaG90X2luZGV4ZWRfY3Jvc3NlZCk7CisKIAlwZnJlZShoc2Nhbik7CiB9CiAKQEAgLTgz LDEzICs5NSwyNCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfZW5kKEluZGV4RmV0Y2hUYWJsZURh dGEgKnNjYW4pCiAgKiBnbG9iYWxseSBkZWFkOyAqYWxsX2RlYWQgaXMgc2V0IHRydWUgaWYg YWxsIG1lbWJlcnMgb2YgdGhlIEhPVCBjaGFpbgogICogYXJlIHZhY3V1bWFibGUsIGZhbHNl IGlmIG5vdC4KICAqCisgKiBJZiBob3RfaW5kZXhlZF9yZWNoZWNrIGlzIG5vdCBOVUxMLCAq aG90X2luZGV4ZWRfcmVjaGVjayBpcyBzZXQgdHJ1ZSBpZmYgdGhlCisgKiB3YWxrIGNyb3Nz ZWQgYSBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCAoSE9UL1NJVSkgaG9wIGFmdGVyIHRoZSBl bnRyeSB0dXBsZQorICogb24gdGhlIHdheSB0byB0aGUgcmV0dXJuZWQgdHVwbGUgLS0gaS5l LiB0aGUgYXJyaXZpbmcgaW5kZXggZW50cnkncyBzdG9yZWQKKyAqIGtleSBtYXkgbm8gbG9u Z2VyIG1hdGNoIHRoZSBsaXZlIHR1cGxlLCBzbyB0aGUgY2FsbGVyIG11c3QgcmVjaGVjayBp dCAodmlhCisgKiBhIGxlYWYta2V5IGNvbXBhcmlzb24gb3IgYSBxdWFsIHJlY2hlY2spLiAg VGhlIGVudHJ5IHR1cGxlJ3Mgb3duIHByb2R1Y2luZworICogaG9wIGlzIGV4Y2x1ZGVkLCBz byBhIGZyZXNoIGVudHJ5IHBvaW50aW5nIGRpcmVjdGx5IGF0IGl0cyB0dXBsZSBpcyBub3QK KyAqIGZsYWdnZWQuICBXaGVuIG5vIHN1Y2ggaG9wIHdhcyBjcm9zc2VkLCAqaG90X2luZGV4 ZWRfcmVjaGVjayBpcyBsZWZ0IGZhbHNlLgorICoKICAqIFVubGlrZSBoZWFwX2ZldGNoLCB0 aGUgY2FsbGVyIG11c3QgYWxyZWFkeSBoYXZlIHBpbiBhbmQgKGF0IGxlYXN0KSBzaGFyZQog ICogbG9jayBvbiB0aGUgYnVmZmVyOyBpdCBpcyBzdGlsbCBwaW5uZWQvbG9ja2VkIGF0IGV4 aXQuCiAgKi8KIGJvb2wKIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlk LCBSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJICAgU25hcHNob3Qg c25hcHNob3QsIEhlYXBUdXBsZSBoZWFwVHVwbGUsCi0JCQkJCSAgIGJvb2wgKmFsbF9kZWFk LCBib29sIGZpcnN0X2NhbGwpCisJCQkJCSAgIGJvb2wgKmFsbF9kZWFkLCBib29sIGZpcnN0 X2NhbGwsCisJCQkJCSAgIGJvb2wgKmhvdF9pbmRleGVkX3JlY2hlY2ssCisJCQkJCSAgIHVp bnQ4ICpjcm9zc2VkX2JpdG1hcCwKKwkJCQkJICAgYm9vbCAqcHJlZml4X2FsbF9kZWFkKQog ewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJVHJhbnNhY3Rpb25J ZCBwcmV2X3htYXggPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKQEAgLTk4LDEyICsxMjEsMjcg QEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVtUG9pbnRlciB0aWQsIFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCWJvb2wJCWF0X2NoYWluX3N0YXJ0OwogCWJvb2wJ CXZhbGlkOwogCWJvb2wJCXNraXA7CisJYm9vbAkJcHJlZml4X2RlYWQgPSB0cnVlOwogCUds b2JhbFZpc1N0YXRlICp2aXN0ZXN0ID0gTlVMTDsKKwlpbnQJCQlyZWxuYXR0cyA9IFJlbGF0 aW9uR2V0TnVtYmVyT2ZBdHRyaWJ1dGVzKHJlbGF0aW9uKTsKIAogCS8qIElmIHRoaXMgaXMg bm90IHRoZSBmaXJzdCBjYWxsLCBwcmV2aW91cyBjYWxsIHJldHVybmVkIGEgKGxpdmUhKSB0 dXBsZSAqLwogCWlmIChhbGxfZGVhZCkKIAkJKmFsbF9kZWFkID0gZmlyc3RfY2FsbDsKIAor CS8qCisJICogT24gdGhlIGZpcnN0IGNhbGwsIGNsZWFyIHRoZSByZWNoZWNrIGZsYWcgYW5k IHRoZSBjcm9zc2VkLWF0dHJzIHVuaW9uLgorCSAqIE9uIHN1YnNlcXVlbnQgY2FsbHMgKHNh bWUgY2hhaW4gY29udGludWluZykga2VlcCB3aGF0ZXZlciBhbiBlYXJsaWVyCisJICogaG9w IGFscmVhZHkgYWNjdW11bGF0ZWQuCisJICovCisJaWYgKGZpcnN0X2NhbGwpCisJeworCQlp ZiAoaG90X2luZGV4ZWRfcmVjaGVjaykKKwkJCSpob3RfaW5kZXhlZF9yZWNoZWNrID0gZmFs c2U7CisJCWlmIChjcm9zc2VkX2JpdG1hcCkKKwkJCW1lbXNldChjcm9zc2VkX2JpdG1hcCwg MCwgSG90SW5kZXhlZEJpdG1hcEJ5dGVzKHJlbG5hdHRzKSk7CisJfQorCiAJYmxrbm8gPSBJ dGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKHRpZCk7CiAJb2ZmbnVtID0gSXRlbVBvaW50ZXJH ZXRPZmZzZXROdW1iZXIodGlkKTsKIAlhdF9jaGFpbl9zdGFydCA9IGZpcnN0X2NhbGw7CkBA IC0xMzAsNyArMTY4LDE3IEBAIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIg dGlkLCBSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCS8qIFdlIHNob3Vs ZCBvbmx5IHNlZSBhIHJlZGlyZWN0IGF0IHN0YXJ0IG9mIGNoYWluICovCiAJCQlpZiAoSXRl bUlkSXNSZWRpcmVjdGVkKGxwKSAmJiBhdF9jaGFpbl9zdGFydCkKIAkJCXsKLQkJCQkvKiBG b2xsb3cgdGhlIHJlZGlyZWN0ICovCisJCQkJLyoKKwkJCQkgKiBGb2xsb3cgdGhlIHJlZGly ZWN0LiAgQSBjb2xsYXBzZWQgZGVhZCBwcmVmaXggaXMgcHJlc2VydmVkCisJCQkJICogYXMg YSBydW4gb2YgZm9yd2FyZGluZyBzdHVicywgZWFjaCBjYXJyeWluZyBpdHMgc2VnbWVudCdz CisJCQkJICogbW9kaWZpZWQtYXR0cnMgYml0bWFwLCBlbmRpbmcgYXQgdGhlIGZpcnN0IGxp dmUgdHVwbGU7CisJCQkJICogY2hhaW4gY29sbGFwc2UgcmVjbGFpbXMgYSBkZWFkIG1lbWJl ciBvbmx5IHdoZW4gaXRzCisJCQkJICogYXR0cmlidXRlcyBhcmUgYSBzdWJzZXQgb2YgdGhl IHN1cnZpdmluZyBsYXRlciBob3BzIChzZWUKKwkJCQkgKiBwcnVuZWhlYXAuYykuICBTbyB0 aGUgc3R1YnMgYW5kIGxpdmUgaG9wcyB0aGlzIHdhbGsgY3Jvc3NlcworCQkJCSAqIGJlbG93 IGNvbnRyaWJ1dGUgdGhlIGNvbXBsZXRlIHVuaW9uIG9mIGV2ZXJ5IGNvbGxhcHNlZAorCQkJ CSAqIGhvcCdzIG1vZGlmaWVkIGF0dHJpYnV0ZXMsIGFuZCB0aGF0IHVuaW9uIGRyaXZlcyB0 aGUKKwkJCQkgKiBvdmVybGFwIHN0YWxlbmVzcyB0ZXN0IGZvciB0aGUgaW5kZXgtYWNjZXNz IGxheWVyLgorCQkJCSAqLwogCQkJCW9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGxwKTsK IAkJCQlhdF9jaGFpbl9zdGFydCA9IGZhbHNlOwogCQkJCWNvbnRpbnVlOwpAQCAtMTUxLDEw ICsxOTksOTUgQEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVtUG9pbnRlciB0aWQsIFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlJdGVtUG9pbnRlclNldCgmaGVh cFR1cGxlLT50X3NlbGYsIGJsa25vLCBvZmZudW0pOwogCiAJCS8qCi0JCSAqIFNob3VsZG4n dCBzZWUgYSBIRUFQX09OTFkgdHVwbGUgYXQgY2hhaW4gc3RhcnQuCisJCSAqIEEgY29sbGFw c2Utc3Vydml2b3Igc3R1YiBpcyBhbiBMUF9OT1JNQUwgaXRlbSBidXQgbm90IGEgcmVhbCB0 dXBsZToKKwkJICogaXQgaXMgYSBmcmVlemUtc2FmZSBmb3J3YXJkaW5nIG5vZGUgY2Fycnlp bmcgdGhlIG1vZGlmaWVkLWF0dHJzCisJCSAqIGJpdG1hcCBmb3IgdGhlIGNoYWluIHNlZ21l bnQgaXQgcmVwcmVzZW50cy4gIFRyZWF0IGl0IGxpa2UgYQorCQkgKiBjcm9zc2VkIEhPVC9T SVUgaG9wIC0tIGFybSB0aGUgcmVjaGVjayBhbmQgT1IgaXRzIGJpdG1hcCBpbnRvIHRoZQor CQkgKiBjcm9zc2VkIHVuaW9uICh1bmxlc3Mgd2UgYXJyaXZlZCBkaXJlY3RseSBhdCBpdCwg aW4gd2hpY2ggY2FzZSB0aGUKKwkJICogYXJyaXZpbmcgZW50cnkgYWxyZWFkeSByZWZsZWN0 cyB0aGlzIHNlZ21lbnQncyB2YWx1ZSkgLS0gdGhlbgorCQkgKiBmb2xsb3cgaXRzIGZvcndh cmQgbGluay4gIEEgc3R1YiBpcyBuZXZlciB2aXNpYmxlIGFuZCBuZXZlcgorCQkgKiByZXR1 cm5lZCwgYW5kIGl0cyBmb3J3YXJkIGxpbmsgaXMgYSBsb2dpY2FsLCBub3QgeGlkLWNvbnRp bnVvdXMsCisJCSAqIGVkZ2UsIHNvIHJlc2V0IHByZXZfeG1heCB0byBza2lwIHRoZSBjaGFp bi1pbnRlZ3JpdHkgY2hlY2sgb24gdGhlCisJCSAqIG5leHQgbWVtYmVyLgorCQkgKi8KKwkJ aWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIoaGVhcFR1cGxlLT50X2RhdGEpKQorCQl7CisJ CQlpZiAoIWF0X2NoYWluX3N0YXJ0KQorCQkJeworCQkJCWlmIChob3RfaW5kZXhlZF9yZWNo ZWNrKQorCQkJCQkqaG90X2luZGV4ZWRfcmVjaGVjayA9IHRydWU7CisJCQkJaWYgKGNyb3Nz ZWRfYml0bWFwKQorCQkJCXsKKwkJCQkJaW50CQkJYm1uYXR0cyA9CisJCQkJCQlIb3RJbmRl eGVkVHVwbGVCaXRtYXBOYXR0cyhoZWFwVHVwbGUtPnRfZGF0YSk7CisKKwkJCQkJSG90SW5k ZXhlZEJpdG1hcFVuaW9uKGNyb3NzZWRfYml0bWFwLAorCQkJCQkJCQkJCSAgSG90SW5kZXhl ZEdldE1vZGlmaWVkQml0bWFwKGhlYXBUdXBsZS0+dF9kYXRhLAorCQkJCQkJCQkJCQkJCQkJ CQkgIGhlYXBUdXBsZS0+dF9sZW4sCisJCQkJCQkJCQkJCQkJCQkJCSAgYm1uYXR0cyksCisJ CQkJCQkJCQkJICBibW5hdHRzKTsKKwkJCQl9CisJCQl9CisJCQlvZmZudW0gPSBIb3RJbmRl eGVkU3R1YkdldEZvcndhcmQoaGVhcFR1cGxlLT50X2RhdGEpOworCQkJYXRfY2hhaW5fc3Rh cnQgPSBmYWxzZTsKKwkJCXByZXZfeG1heCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQkJ Y29udGludWU7CisJCX0KKworCQkvKgorCQkgKiBTaG91bGRuJ3Qgc2VlIGEgSEVBUF9PTkxZ IHR1cGxlIGF0IGNoYWluIHN0YXJ0LCB1bmxlc3MgdGhhdCB0dXBsZQorCQkgKiBpcyB0aGUg dGFyZ2V0IG9mIGEgZnJlc2hseS1pbnNlcnRlZCBob3QtaW5kZXhlZCBpbmRleCBlbnRyeTog dGhlbgorCQkgKiBhcnJpdmluZyBkaXJlY3RseSBhdCBhIGhlYXAtb25seSBIT1QtaW5kZXhl ZCB0dXBsZSBpcyBsZWdhbCBhbmQgdGhlCisJCSAqIHR1cGxlIGlzIHRoZSBjYW5vbmljYWwg dmlzaWJsZSB2ZXJzaW9uLCBzbyB3ZSBmYWxsIHRocm91Z2ggYW5kCisJCSAqIGFwcGx5IG5v cm1hbCB2aXNpYmlsaXR5IGNoZWNrcyB0byBpdC4gIE90aGVyd2lzZSwgdHJlYXQgaXQgYXMg YQorCQkgKiBicm9rZW4gY2hhaW4uCiAJCSAqLwogCQlpZiAoYXRfY2hhaW5fc3RhcnQgJiYg SGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVwbGUpKQotCQkJYnJlYWs7CisJCXsKKwkJCWlm ICgoaGVhcFR1cGxlLT50X2RhdGEtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFU RUQpID09IDApCisJCQkJYnJlYWs7CisKKwkJCS8qCisJCQkgKiBXZSB3ZXJlIHBvaW50ZWQg ZGlyZWN0bHkgYXQgdGhpcyBob3QtaW5kZXhlZCB0dXBsZS4gIFRoZSBpbmRleAorCQkJICog ZW50cnkgd2UgYXJyaXZlZCB0aHJvdWdoIHdhcyBpbnNlcnRlZCAqZm9yKiB0aGlzIHVwZGF0 ZSwgc28gaXQKKwkJCSAqIHJlZmxlY3RzIHRoaXMgdHVwbGUncyBjdXJyZW50IGF0dHJpYnV0 ZSB2YWx1ZXM7IGl0cyBvd24KKwkJCSAqIHByb2R1Y2luZyBob3AgaXMgbm90IGEgY3Jvc3Nl ZCBob3AsIHNvIGl0IGlzIG5vdCBmbGFnZ2VkIGZvcgorCQkJICogcmVjaGVjayAoYSBmcmVz aCBlbnRyeSBpcyBuZXZlciBzdGFsZSBmb3IgaXRzIG93biBpbmRleCkuCisJCQkgKi8KKwkJ fQorCQllbHNlIGlmIChob3RfaW5kZXhlZF9yZWNoZWNrICE9IE5VTEwgJiYKKwkJCQkgKGhl YXBUdXBsZS0+dF9kYXRhLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSAh PSAwKQorCQl7CisJCQkvKgorCQkJICogQSBIT1QvU0lVIGhvcCByZWFjaGVkIGJ5IGZvbGxv d2luZyB0aGUgY2hhaW4gKG9yIGEgcmVkaXJlY3QpCisJCQkgKiBmcm9tIGFuIGVhcmxpZXIg ZW50cnk6IHRoaXMgaG9wIGlzIGNyb3NzZWQsIHNvIHRoZSBhcnJpdmluZworCQkJICogZW50 cnkncyBzdG9yZWQga2V5IG1heSBubyBsb25nZXIgbWF0Y2ggdGhlIGxpdmUgdHVwbGUuICBT ZXQgdGhlCisJCQkgKiByZWNoZWNrIGZsYWcgdG8gdGVsbCB0aGUgaW5kZXgtYWNjZXNzIGxh eWVyIHRvIGNvbnN1bHQgdGhlCisJCQkgKiBjcm9zc2VkLWF0dHJzIHVuaW9uOyB0aGF0IHVu aW9uIChhY2N1bXVsYXRlZCBiZWxvdykgaXMgd2hhdAorCQkJICogZGVjaWRlcyBzdGFsZW5l c3MuCisJCQkgKi8KKwkJCSpob3RfaW5kZXhlZF9yZWNoZWNrID0gdHJ1ZTsKKworCQkJLyoK KwkJCSAqIEFjY3VtdWxhdGUgdGhpcyBob3AncyBtb2RpZmllZC1hdHRycyBiaXRtYXAgaW50 byB0aGUgY3Jvc3NlZAorCQkJICogdW5pb24uICBBIHR1cGxlJ3MgaW5saW5lIGJpdG1hcCBy ZWNvcmRzIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMKKwkJCSAqIHRoYXQgY2hhbmdlZCBhdCB0 aGUgaG9wIElOVE8gaXQsIHdoaWNoIGlzIGV4YWN0bHkgdGhlIGhvcCB3ZQorCQkJICoganVz dCBjcm9zc2VkIGJ5IGFkdmFuY2luZyB0byBpdDsgT1JpbmcgZWFjaCBjcm9zc2VkIGhvcCB5 aWVsZHMKKwkJCSAqIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMgdGhhdCBjaGFuZ2VkIGFmdGVy IHRoZSBlbnRyeSdzIG93bgorCQkJICogdHVwbGUuCisJCQkgKi8KKwkJCWlmIChjcm9zc2Vk X2JpdG1hcCkKKwkJCXsKKwkJCQlpbnQJCQlibW5hdHRzID0KKwkJCQkJSG90SW5kZXhlZFR1 cGxlQml0bWFwTmF0dHMoaGVhcFR1cGxlLT50X2RhdGEpOworCisJCQkJSG90SW5kZXhlZEJp dG1hcFVuaW9uKGNyb3NzZWRfYml0bWFwLAorCQkJCQkJCQkJICBIb3RJbmRleGVkR2V0TW9k aWZpZWRCaXRtYXAoaGVhcFR1cGxlLT50X2RhdGEsCisJCQkJCQkJCQkJCQkJCQkJICBoZWFw VHVwbGUtPnRfbGVuLAorCQkJCQkJCQkJCQkJCQkJCSAgYm1uYXR0cyksCisJCQkJCQkJCQkg IGJtbmF0dHMpOworCQkJfQorCQl9CiAKIAkJLyoKIAkJICogVGhlIHhtaW4gc2hvdWxkIG1h dGNoIHRoZSBwcmV2aW91cyB4bWF4IHZhbHVlLCBlbHNlIGNoYWluIGlzCkBAIC0xODYsNiAr MzE5LDE1IEBAIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlkLCBSZWxh dGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJIEhlYXBUdXBsZUhlYWRl ckdldFhtaW4oaGVhcFR1cGxlLT50X2RhdGEpKTsKIAkJCQlpZiAoYWxsX2RlYWQpCiAJCQkJ CSphbGxfZGVhZCA9IGZhbHNlOworCisJCQkJLyoKKwkJCQkgKiBSZXBvcnQgd2hldGhlciBl dmVyeSBjaGFpbiBtZW1iZXIgc2tpcHBlZCBiZWZvcmUgdGhpcworCQkJCSAqIHZpc2libGUg dHVwbGUgaXMgZGVhZCB0byBhbGwgdHJhbnNhY3Rpb25zLiAgV2l0aCBhIHN0YWxlCisJCQkJ ICogdmVyZGljdCB0aGlzIGxldHMgdGhlIGNhbGxlciBraWxsIHRoZSBhcnJpdmluZyBsZWFm IHNhZmVseS4KKwkJCQkgKi8KKwkJCQlpZiAocHJlZml4X2FsbF9kZWFkKQorCQkJCQkqcHJl Zml4X2FsbF9kZWFkID0gcHJlZml4X2RlYWQ7CisKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0K IAkJfQpAQCAtMTk0LDE4ICszMzYsMjUgQEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVt UG9pbnRlciB0aWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkvKgog CQkgKiBJZiB3ZSBjYW4ndCBzZWUgaXQsIG1heWJlIG5vIG9uZSBlbHNlIGNhbiBlaXRoZXIu ICBBdCBjYWxsZXIKIAkJICogcmVxdWVzdCwgY2hlY2sgd2hldGhlciBhbGwgY2hhaW4gbWVt YmVycyBhcmUgZGVhZCB0byBhbGwKLQkJICogdHJhbnNhY3Rpb25zLgorCQkgKiB0cmFuc2Fj dGlvbnMuICBUaGUgc2FtZSBzdXJlbHktZGVhZCB0ZXN0IGZlZWRzIHByZWZpeF9kZWFkLCB3 aGljaAorCQkgKiAodW5saWtlIGFsbF9kZWFkKSBpcyBub3QgcmVzZXQgd2hlbiBhIHZpc2li bGUgdHVwbGUgaXMgZm91bmQsIHNvIGl0CisJCSAqIHJlY29yZHMgd2hldGhlciB0aGUgbWVt YmVycyBza2lwcGVkIGFoZWFkIG9mIHRoZSByZXR1cm5lZCB0dXBsZSBhcmUKKwkJICogYWxs IGRlYWQgdG8gYWxsIC0tIHRoZSBzYWZlLXRvLWtpbGwtdGhpcy1sZWFmIGNvbmRpdGlvbi4K IAkJICoKIAkJICogTm90ZTogaWYgeW91IGNoYW5nZSB0aGUgY3JpdGVyaW9uIGhlcmUgZm9y IHdoYXQgaXMgImRlYWQiLCBmaXggdGhlCiAJCSAqIHBsYW5uZXIncyBnZXRfYWN0dWFsX3Zh cmlhYmxlX3JhbmdlKCkgZnVuY3Rpb24gdG8gbWF0Y2guCiAJCSAqLwotCQlpZiAoYWxsX2Rl YWQgJiYgKmFsbF9kZWFkKQorCQlpZiAoKGFsbF9kZWFkICYmICphbGxfZGVhZCkgfHwgcHJl Zml4X2RlYWQpCiAJCXsKIAkJCWlmICghdmlzdGVzdCkKIAkJCQl2aXN0ZXN0ID0gR2xvYmFs VmlzVGVzdEZvcihyZWxhdGlvbik7CiAKIAkJCWlmICghSGVhcFR1cGxlSXNTdXJlbHlEZWFk KGhlYXBUdXBsZSwgdmlzdGVzdCkpCi0JCQkJKmFsbF9kZWFkID0gZmFsc2U7CisJCQl7CisJ CQkJaWYgKGFsbF9kZWFkKQorCQkJCQkqYWxsX2RlYWQgPSBmYWxzZTsKKwkJCQlwcmVmaXhf ZGVhZCA9IGZhbHNlOworCQkJfQogCQl9CiAKIAkJLyoKQEAgLTI3Myw3ICs0MjIsMTUgQEAg aGVhcGFtX2luZGV4X2ZldGNoX3R1cGxlKHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICpz Y2FuLAogCQkJCQkJCQkJCQlzbmFwc2hvdCwKIAkJCQkJCQkJCQkJJmJzbG90LT5iYXNlLnR1 cGRhdGEsCiAJCQkJCQkJCQkJCWFsbF9kZWFkLAotCQkJCQkJCQkJCQkhKmhlYXBfY29udGlu dWUpOworCQkJCQkJCQkJCQkhKmhlYXBfY29udGludWUsCisJCQkJCQkJCQkJCSZzY2FuLT54 c19ob3RfaW5kZXhlZF9yZWNoZWNrLAorCQkJCQkJCQkJCQlzY2FuLT54c19ob3RfaW5kZXhl ZF9jcm9zc2VkLAorCQkJCQkJCQkJCQkmc2Nhbi0+eHNfcHJlZml4X2FsbF9kZWFkKTsKKwlp ZiAoIWdvdF9oZWFwX3R1cGxlKQorCXsKKwkJc2Nhbi0+eHNfaG90X2luZGV4ZWRfcmVjaGVj ayA9IGZhbHNlOworCQlzY2FuLT54c19wcmVmaXhfYWxsX2RlYWQgPSBmYWxzZTsKKwl9CiAJ YnNsb3QtPmJhc2UudHVwZGF0YS50X3NlbGYgPSAqdGlkOwogCUxvY2tCdWZmZXIoaHNjYW4t PnhzX2NidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dl bmFtLmMKaW5kZXggMTQwODk4OWM1NjguLjY2MjhmOWJmODVkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aW5kZXgvZ2VuYW0uYwpAQCAtMTAzLDYgKzEwMyw5IEBAIFJlbGF0aW9uR2V0SW5kZXhTY2Fu KFJlbGF0aW9uIGluZGV4UmVsYXRpb24sIGludCBua2V5cywgaW50IG5vcmRlcmJ5cykKIAkJ c2Nhbi0+b3JkZXJCeURhdGEgPSBOVUxMOwogCiAJc2Nhbi0+eHNfd2FudF9pdHVwID0gZmFs c2U7IC8qIG1heSBiZSBzZXQgbGF0ZXIgKi8KKwlzY2FuLT54c19pbmRleF9vbmx5ID0gZmFs c2U7CS8qIG1heSBiZSBzZXQgbGF0ZXIgKi8KKworCXNjYW4tPnhzX2hvdF9pbmRleGVkX3N0 YWxlID0gZmFsc2U7CiAKIAkvKgogCSAqIER1cmluZyByZWNvdmVyeSB3ZSBpZ25vcmUga2ls bGVkIHR1cGxlcyBhbmQgZG9uJ3QgYm90aGVyIHRvIGtpbGwgdGhlbQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9pbmRleC9pbmRleGFtLmMKaW5kZXggNzk2N2U5Mzk4NDcuLjNjMDgxMzZmNjMwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs dWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL2FtYXBpLmgiCisjaW5jbHVk ZSAiYWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbGF0aW9uLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3JlbG9wdGlvbnMuaCIKICNpbmNsdWRlICJhY2Nlc3MvcmVs c2Nhbi5oIgpAQCAtMjg4LDYgKzI4OSwxMSBAQCBpbmRleF9iZWdpbnNjYW4oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCS8qIHByZXBhcmUgdG8gZmV0Y2ggaW5kZXggbWF0Y2hlcyBmcm9t IHRhYmxlICovCiAJc2Nhbi0+eHNfaGVhcGZldGNoID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVn aW4oaGVhcFJlbGF0aW9uLCBmbGFncyk7CiAKKwkvKgorCSAqIFN0YWxlbmVzcyBvZiBhIEhP VC1pbmRleGVkIGVudHJ5IGlzIGRlY2lkZWQgYnkgdGhlIGNyb3NzZWQtYXR0cmlidXRlCisJ ICogYml0bWFwIChzZWUgaW5kZXhfZmV0Y2hfaGVhcCksIHNvIHNjYW5zIGRvIG5vdCBuZWVk IHRoZSBsZWFmIGtleS4KKwkgKi8KKwogCXJldHVybiBzY2FuOwogfQogCkBAIC02MDYsNiAr NjEyLDE1IEBAIGluZGV4X2dldG5leHRfdGlkKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRp cmVjdGlvbiBkaXJlY3Rpb24pCiAJLyogWFhYOiB3ZSBzaG91bGQgYXNzZXJ0IHRoYXQgYSBz bmFwc2hvdCBpcyBwdXNoZWQgb3IgcmVnaXN0ZXJlZCAqLwogCUFzc2VydChUcmFuc2FjdGlv bklkSXNWYWxpZChSZWNlbnRYbWluKSk7CiAKKwkvKgorCSAqIFJlc2V0IHRoZSBIT1QtaW5k ZXhlZCByZWNoZWNrIGZsYWc6IGl0IGlzIHNldCBieSB0aGUgaGVhcCBBTSBkdXJpbmcKKwkg KiBpbmRleF9mZXRjaF9oZWFwIGFuZCBpcyBwZXItZmV0Y2hlZC10dXBsZSwgbm90IHBlci1p bmRleC1lbnRyeS4gRm9yCisJICogSW5kZXhPbmx5U2Nhbiwgd2hpY2ggbWF5IHNraXAgaW5k ZXhfZmV0Y2hfaGVhcCB3aGVuIHRoZSBWTSBzYXlzIHRoZQorCSAqIGVudHJ5IGlzIHZpc2li bGUtdG8tYWxsLCB0aGlzIGVuc3VyZXMgd2UgZG9uJ3QgY2FycnkgYSBzdGFsZSB2YWx1ZSBm cm9tCisJICogYSBwcmV2aW91cyBlbnRyeS4KKwkgKi8KKwlzY2FuLT54c19ob3RfaW5kZXhl ZF9zdGFsZSA9IGZhbHNlOworCiAJLyoKIAkgKiBUaGUgQU0ncyBhbWdldHR1cGxlIHByb2Mg ZmluZHMgdGhlIG5leHQgaW5kZXggZW50cnkgbWF0Y2hpbmcgdGhlIHNjYW4KIAkgKiBrZXlz LCBhbmQgcHV0cyB0aGUgVElEIGludG8gc2Nhbi0+eHNfaGVhcHRpZC4gIEl0IHNob3VsZCBh bHNvIHNldApAQCAtNjY2LDE1ICs2ODEsOTcgQEAgaW5kZXhfZmV0Y2hfaGVhcChJbmRleFNj YW5EZXNjIHNjYW4sIFR1cGxlVGFibGVTbG90ICpzbG90KQogCWlmIChmb3VuZCkKIAkJcGdz dGF0X2NvdW50X2hlYXBfZmV0Y2goc2Nhbi0+aW5kZXhSZWxhdGlvbik7CiAKKwkvKgorCSAq IFRoZSB0YWJsZSBBTSByZXBvcnRlZCwgdmlhIHhzX2hvdF9pbmRleGVkX3JlY2hlY2ssIHdo ZXRoZXIgdGhlIHdhbGsgdG8KKwkgKiB0aGUgbGl2ZSB0dXBsZSBjcm9zc2VkIGEgSE9ULWlu ZGV4ZWQgaG9wIGFmdGVyIHRoZSBhcnJpdmluZyBpbmRleAorCSAqIGVudHJ5J3Mgb3duIHR1 cGxlLiAgV2hlbiBpdCBkaWQsIHRoZSBlbnRyeSdzIHN0b3JlZCBrZXkgbWF5IG5vIGxvbmdl cgorCSAqIGFncmVlIHdpdGggdGhlIGxpdmUgdHVwbGUsIGFuZCB3ZSBtdXN0IGRlY2lkZSB3 aGV0aGVyIHRvIGRyb3AgaXQuCisJICoKKwkgKiBUaGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0 bWFwICh4c19ob3RfaW5kZXhlZF9jcm9zc2VkKSBpcyB0aGUgc3RhbGVuZXNzCisJICogYXV0 aG9yaXR5LiAgSXQgaXMgdGhlIHVuaW9uIG9mIHRoZSBwZXItaG9wIG1vZGlmaWVkLWF0dHJp YnV0ZSBiaXRtYXBzCisJICogb2YgZXZlcnkgaG9wIHRoZSB3YWxrIGNyb3NzZWQsIGFuZCBp dCBpcyBjb21wbGV0ZTogZWFjaCBjcm9zc2VkIGxpdmUKKwkgKiBob3AsIGNvbGxhcHNlLXN1 cnZpdm9yIHN0dWIsIGFuZCByZWRpcmVjdGVkIChjb2xsYXBzZWQpIHByZWZpeAorCSAqIGNv bnRyaWJ1dGVzIGl0cyBzZWdtZW50J3MgYml0bWFwLCBhbmQgY2hhaW4gY29sbGFwc2Ugb25s eSBldmVyIHJlY2xhaW1zCisJICogYSBtZW1iZXIgd2hvc2UgYXR0cmlidXRlcyBhcmUgYSBz dWJzZXQgb2YgdGhlIHN1cnZpdmluZyBsYXRlciBob3BzIChzZWUKKwkgKiBwcnVuZWhlYXAu YykuICBUaGVyZWZvcmU6CisJICoKKwkgKiAtIGlmIHRoZSB1bmlvbiBpcyBkaXNqb2ludCBm cm9tIHRoZSBoZWFwIGNvbHVtbnMgdGhpcyBpbmRleCByZWZlcmVuY2VzLAorCSAqIG5vbmUg b2YgdGhlIGluZGV4J3MgaW5wdXRzIGNoYW5nZWQgYWNyb3NzIHRoZSBjaGFpbiwgc28gdGhl IGVudHJ5J3Mga2V5CisJICogc3RpbGwgbWF0Y2hlcyB0aGUgbGl2ZSB0dXBsZToga2VlcCBp dDsgYW5kCisJICoKKwkgKiAtIGlmIHRoZSB1bmlvbiBvdmVybGFwcyB0aGVtLCBvbmUgb2Yg dGhpcyBpbmRleCdzIGtleSBjb2x1bW5zIGNoYW5nZWQKKwkgKiBhZnRlciB0aGUgZW50cnkn cyBvd24gdHVwbGUsIHNvIHRoZSBlbnRyeSBpcyBzdGFsZTogZHJvcCBpdC4KKwkgKgorCSAq IERyb3BwaW5nIG9uIG92ZXJsYXAgaXMgY29ycmVjdCBldmVuIHdoZW4gdGhlIGtleSB3YXMg Y3ljbGVkIGF3YXkgYW5kCisJICogYmFjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUgKGFuIEFC QSB1cGRhdGUpOiB0aGUgdXBkYXRlIHRoYXQgc2V0IHRoZQorCSAqIHZhbHVlIGJhY2sgY3Jl YXRlZCBhIGZyZXNoIGVudHJ5IHBvaW50aW5nIGF0IGl0cyBvd24gKGxpdmUpIHR1cGxlLAor CSAqIHdob3NlIHdhbGsgY3Jvc3NlcyBubyBsYXRlciBrZXktY2hhbmdpbmcgaG9wLCBzbyB0 aGF0IGVudHJ5IHVuaXF1ZWx5CisJICogc3VwcGxpZXMgdGhlIHJvdyB3aGlsZSB0aGlzIHN0 YWxlIGFuY2VzdG9yIGVudHJ5IGlzIGRyb3BwZWQuICBObworCSAqIHZhbHVlLXJlY2hlY2sg aXMgbmVlZGVkLCBzbyB0aGlzIHdvcmtzIGZvciBhbnkgYWNjZXNzIG1ldGhvZDsgdGhlCisJ ICogc3RhbGVuZXNzIGRlY2lzaW9uIGlzIHB1cmVseSBhdHRyaWJ1dGUtYmFzZWQuCisJICov CisJc2Nhbi0+eHNfaG90X2luZGV4ZWRfc3RhbGUgPSBmYWxzZTsKKwlpZiAoZm91bmQgJiYK KwkJc2Nhbi0+eHNfaGVhcGZldGNoLT54c19ob3RfaW5kZXhlZF9yZWNoZWNrICYmCisJCXNj YW4tPnhzX2hlYXBmZXRjaC0+eHNfaG90X2luZGV4ZWRfY3Jvc3NlZCAhPSBOVUxMKQorCXsK KwkJQml0bWFwc2V0ICAqaWR4YXR0cnMgPSBSZWxhdGlvbkdldEluZGV4ZWRBdHRycyhzY2Fu LT5pbmRleFJlbGF0aW9uKTsKKwkJaW50CQkJeCA9IC0xOworCisJCXdoaWxlICgoeCA9IGJt c19uZXh0X21lbWJlcihpZHhhdHRycywgeCkpID49IDApCisJCXsKKwkJCUF0dHJOdW1iZXIJ YXR0bnVtID0geCArIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXI7CisKKwkJ CS8qIHRoZSBjcm9zc2VkIGJpdG1hcCByZWNvcmRzIG9ubHkgdXNlciBhdHRyaWJ1dGVzICov CisJCQlpZiAoYXR0bnVtID49IDEgJiYKKwkJCQlIb3RJbmRleGVkQXR0cklzTW9kaWZpZWQo c2Nhbi0+eHNfaGVhcGZldGNoLT54c19ob3RfaW5kZXhlZF9jcm9zc2VkLAorCQkJCQkJCQkJ CSBhdHRudW0pKQorCQkJeworCQkJCXNjYW4tPnhzX2hvdF9pbmRleGVkX3N0YWxlID0gdHJ1 ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlibXNfZnJlZShpZHhhdHRycyk7CisJfQor CiAJLyoKIAkgKiBJZiB3ZSBzY2FubmVkIGEgd2hvbGUgSE9UIGNoYWluIGFuZCBmb3VuZCBv bmx5IGRlYWQgdHVwbGVzLCB0ZWxsIGluZGV4CiAJICogQU0gdG8ga2lsbCBpdHMgZW50cnkg Zm9yIHRoYXQgVElEICh0aGlzIHdpbGwgdGFrZSBlZmZlY3QgaW4gdGhlIG5leHQKIAkgKiBh bWdldHR1cGxlIGNhbGwsIGluIGluZGV4X2dldG5leHRfdGlkKS4gIFdlIGRvIG5vdCBkbyB0 aGlzIHdoZW4gaW4KIAkgKiByZWNvdmVyeSBiZWNhdXNlIGl0IG1heSB2aW9sYXRlIE1WQ0Mg dG8gZG8gc28uICBTZWUgY29tbWVudHMgaW4KIAkgKiBSZWxhdGlvbkdldEluZGV4U2Nhbigp LgorCSAqCisJICogQWRkaXRpb25hbGx5IGtpbGwgYSBzdGFsZSBIT1QtaW5kZXhlZCBsZWFm IChvbmUgd2hvc2Uga2V5IHRoZSBsaXZlCisJICogdHVwbGUgbm8gbG9uZ2VyIGhvbGRzKSB3 aGVuIGV2ZXJ5IGNoYWluIG1lbWJlciBza2lwcGVkIGJlZm9yZSB0aGUKKwkgKiByZXR1cm5l ZCB0dXBsZSBpcyBkZWFkIHRvIGFsbCB0cmFuc2FjdGlvbnMgKHhzX3ByZWZpeF9hbGxfZGVh ZCk6IG5vCisJICogc25hcHNob3QgY2FuIHJlYWNoIGEgbWF0Y2hpbmcgdmVyc2lvbiB0aHJv dWdoIHRoaXMgbGVhZiwgc28gaXQgaXMKKwkgKiByZWR1bmRhbnQgYW5kIHJlY2xhaW1pbmcg aXQgYm91bmRzIHRoZSBpbmRleCBibG9hdCBIT1QtaW5kZXhlZCB1cGRhdGVzCisJICogY3Jl YXRlLgorCSAqCisJICogVHdvIGluZGVwZW5kZW50IGNvbmRpdGlvbnMgbWFrZSB0aGlzIHNh ZmU6CisJICoKKwkgKiAgLSBUaGUgc3VyZWx5LWRlYWQgcHJlZml4IGdhdGUgKHhzX3ByZWZp eF9hbGxfZGVhZCkgbWVhbnMgbm8gc25hcHNob3QsCisJICogICAgaW5jbHVkaW5nIG9sZGVy IG9uZXMgc3RpbGwgcnVubmluZywgY2FuIHJlYWNoIGEgdmVyc2lvbiB0aHJvdWdoIHRoaXMK KwkgKiAgICBsZWFmIHdob3NlIGtleSBtYXRjaGVzOiBldmVyeSBtZW1iZXIgYWhlYWQgb2Yg dGhlIGxpdmUgdHVwbGUgaXMgZGVhZAorCSAqICAgIHRvIGFsbC4gIFRoaXMgaXMgd2hhdCBt YWtlcyBpdCBNVkNDLXNhZmUsIGV4YWN0bHkgYXMgZm9yIHRoZQorCSAqICAgIGFsbF9kZWFk IGNhc2UuCisJICoKKwkgKiAgLSBUaGUgbGVhZiBpcyBnZW51aW5lbHkgcmVkdW5kYW50LCBu b3QgdGhlIHJvdydzIG9ubHkgZW50cnkuICBBIHN0YWxlCisJICogICAgdmVyZGljdCBtZWFu cyB0aGUgY3Jvc3NlZC1ob3AgdW5pb24gb3ZlcmxhcHMgdGhpcyBpbmRleCdzIGNvbHVtbnMs CisJICogICAgaS5lLiBvbmUgb2YgdGhpcyBpbmRleCdzIGF0dHJpYnV0ZXMgY2hhbmdlZCBv biBhIGhvcCBhZnRlciB0aGlzCisJICogICAgbGVhZidzIHRhcmdldC4gIFRoZSB1cGRhdGUg dGhhdCBtYWRlIHRoYXQgY2hhbmdlIG1haW50YWluZWQgdGhpcworCSAqICAgIGluZGV4IChp dHMgYXR0cmlidXRlIGNoYW5nZWQpLCBzbyBpdCBwbGFudGVkIGEgZnJlc2ggZW50cnkgcG9p bnRpbmcKKwkgKiAgICBhdCBpdHMgb3duIGxpdmUgdHVwbGU7IHRoYXQgZnJlc2ggZW50cnkg Y3Jvc3NlcyBubyBsYXRlcgorCSAqICAgIGtleS1jaGFuZ2luZyBob3AgYW5kIHVuaXF1ZWx5 IHN1cHBsaWVzIHRoZSByb3cuICBEcm9wcGluZyB0aGUgc3RhbGUKKwkgKiAgICBhbmNlc3Rv ciB0aGVyZWZvcmUgbmV2ZXIgcmVtb3ZlcyB0aGUgcm93J3MgbGFzdCByZWFjaGFibGUgZW50 cnkuCisJICogICAgVGhpcyBob2xkcyBldmVuIHVuZGVyIEFCQSBrZXkgY3ljbGluZyAoWCAt PiBZIC0+IFgpOiB0aGUgWC1yZXN0b3JpbmcKKwkgKiAgICB1cGRhdGUgY2hhbmdlZCB0aGlz IGluZGV4J3MgY29sdW1uIChZIC0+IFgpIGFuZCBzbyBwbGFudGVkIHRoZSBmcmVzaAorCSAq ICAgIGVudHJ5LgogCSAqLwogCWlmICghc2Nhbi0+eGFjdFN0YXJ0ZWRJblJlY292ZXJ5KQot CQlzY2FuLT5raWxsX3ByaW9yX3R1cGxlID0gYWxsX2RlYWQ7CisJCXNjYW4tPmtpbGxfcHJp b3JfdHVwbGUgPQorCQkJYWxsX2RlYWQgfHwKKwkJCShzY2FuLT54c19ob3RfaW5kZXhlZF9z dGFsZSAmJiBzY2FuLT54c19oZWFwZmV0Y2gtPnhzX3ByZWZpeF9hbGxfZGVhZCk7CiAKIAly ZXR1cm4gZm91bmQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idGluc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYwpp bmRleCBjOGFmOTdkZDIzZC4uZGU4ZjRlN2YwMmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRpbnNlcnQuYwpAQCAtMTUsNiArMTUsOCBAQAogCiAjaW5jbHVkZSAicG9zdGdy ZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgorI2luY2x1ZGUgImFjY2Vzcy9o dHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAi YWNjZXNzL25idHhsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgpAQCAtMjIs MTggKzI0LDI0IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRl ICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAiY29tbW9uL3BnX3BybmcuaCIKKyNpbmNsdWRl ICJleGVjdXRvci90dXB0YWJsZS5oIgogI2luY2x1ZGUgImxpYi9xdW5pcXVlLmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2lu Y2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgotCiAvKiBNaW5pbXVtIHRyZWUgaGVp Z2h0IGZvciBhcHBsaWNhdGlvbiBvZiBmYXN0cGF0aCBvcHRpbWl6YXRpb24gKi8KICNkZWZp bmUgQlRSRUVfRkFTVFBBVEhfTUlOX0xFVkVMCTIKIAogCiBzdGF0aWMgQlRTdGFjayBfYnRf c2VhcmNoX2luc2VydChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsCiAJCQkJCQkJ CSBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlKTsKKworLyogSW50ZXJuYWwgaGVscGVyOiBI T1QtaW5kZXhlZCBsZWFmLWtleSBzdGFsZW5lc3MgY2hlY2sgZm9yIF9idF9jaGVja191bmlx dWUuICovCitzdGF0aWMgYm9vbCBfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYoUmVsYXRpb24g cmVsLCBJbmRleFR1cGxlIGxlYWZ0dXAsCisJCQkJCQkJCQkgc3RydWN0IFR1cGxlVGFibGVT bG90ICpoZWFwU2xvdCk7CisKIHN0YXRpYyBUcmFuc2FjdGlvbklkIF9idF9jaGVja191bmlx dWUoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLAogCQkJCQkJCQkJ ICBSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCQkJICBJbmRleFVuaXF1ZUNoZWNrIGNoZWNr VW5pcXVlLCBib29sICppc191bmlxdWUsCkBAIC00MjYsNiArNDM0LDggQEAgX2J0X2NoZWNr X3VuaXF1ZShSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIFJlbGF0 aW9uIGhlYXBSZWwsCiAJYm9vbAkJaW5wb3N0aW5nID0gZmFsc2U7CiAJYm9vbAkJcHJldmFs bGRlYWQgPSB0cnVlOwogCWludAkJCWN1cnBvc3RpID0gMDsKKwlUdXBsZVRhYmxlU2xvdCAq Y2hhaW5fd2Fsa19zbG90ID0gTlVMTDsKKwlib29sCQloaV9yZWNoZWNrID0gZmFsc2U7CiAK IAkvKiBBc3N1bWUgdW5pcXVlIHVudGlsIHdlIGZpbmQgYSBkdXBsaWNhdGUgKi8KIAkqaXNf dW5pcXVlID0gdHJ1ZTsKQEAgLTUwOSw2ICs1MTksNyBAQCBfYnRfY2hlY2tfdW5pcXVlKFJl bGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVsYXRpb24gaGVhcFJl bCwKIAkJCXsKIAkJCQlJdGVtUG9pbnRlckRhdGEgaHRpZDsKIAkJCQlib29sCQlhbGxfZGVh ZCA9IGZhbHNlOworCQkJCWJvb2wJCWhvdF9pbmRleGVkX3N0YWxlID0gZmFsc2U7CiAKIAkJ CQlpZiAoIWlucG9zdGluZykKIAkJCQl7CkBAIC01NTksMTMgKzU3MCw3OSBAQCBfYnRfY2hl Y2tfdW5pcXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVs YXRpb24gaGVhcFJlbCwKIAkJCQkgKiBzYXRpc2Z5aW5nIFNuYXBzaG90RGlydHkuIFRoaXMg aXMgbmVjZXNzYXJ5IGJlY2F1c2UgZm9yIEFNcwogCQkJCSAqIHdpdGggb3B0aW1pemF0aW9u cyBsaWtlIGhlYXAncyBIT1QsIHdlIGhhdmUganVzdCBhIHNpbmdsZQogCQkJCSAqIGluZGV4 IGVudHJ5IGZvciB0aGUgZW50aXJlIGNoYWluLgorCQkJCSAqCisJCQkJICogVGhlIGZldGNo IHJlcG9ydHMgKGhpX3JlY2hlY2spIHdoZXRoZXIgdGhlIGNoYWluIHdhbGsgdG8KKwkJCQkg KiB0aGUgbGl2ZSB0dXBsZSBjcm9zc2VkIGEgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgKEhP VC9TSVUpCisJCQkJICogaG9wLiBJbiBjbGFzc2ljIEhPVCB0aGUgY2hhaW4gcHJlc2VydmVz IHRoZSBpbmRleCBrZXksIHNvIGEKKwkJCQkgKiBsaXZlIHR1cGxlIGFueXdoZXJlIGluIHRo ZSBjaGFpbiBpcyBhIGRlZmluaXRlIGNvbmZsaWN0OworCQkJCSAqIHdpdGggSE9UL1NJVSB0 aGF0IGludmFyaWFudCBubyBsb25nZXIgaG9sZHMgLS0gYW4gb2xkIGluZGV4CisJCQkJICog ZW50cnkgZm9yIGtleSBLIG1heSBjaGFpbi1sZWFkIHRvIGEgaGVhcCB0dXBsZSB3aG9zZSBh Y3R1YWwKKwkJCQkgKiBpbmRleCBrZXkgaXMgSycuICBXaGVuIGEgaG9wIHdhcyBjcm9zc2Vk IHdlIHJlY2hlY2sgdGhlCisJCQkJICogbGVhZiBrZXkgYWdhaW5zdCB0aGUgbGl2ZSB0dXBs ZSBiZWxvdzsgYSBzdGFsZSBlbnRyeSBpcworCQkJCSAqIGZpbHRlcmVkIG91dCwgbm90IHRy ZWF0ZWQgYXMgYSBjb25mbGljdC4gIGNoYWluX3dhbGtfc2xvdAorCQkJCSAqIGhvbGRzIHRo ZSBsaXZlIHR1cGxlIGZvciB0aGF0IHJlY2hlY2sgYW5kIGlzIGZyZWVkIGF0IGV2ZXJ5CisJ CQkJICogZXhpdC4KIAkJCQkgKi8KLQkJCQllbHNlIGlmICh0YWJsZV9pbmRleF9mZXRjaF90 dXBsZV9jaGVjayhoZWFwUmVsLCAmaHRpZCwKKwkJCQllbHNlIGlmICgoY2hhaW5fd2Fsa19z bG90ICE9IE5VTEwgfHwKKwkJCQkJCSAgKGNoYWluX3dhbGtfc2xvdCA9IHRhYmxlX3Nsb3Rf Y3JlYXRlKGhlYXBSZWwsIE5VTEwpKSkgJiYKKwkJCQkJCSB0YWJsZV9pbmRleF9mZXRjaF90 dXBsZV9jaGVjayhoZWFwUmVsLCAmaHRpZCwKIAkJCQkJCQkJCQkJCQkgICAmU25hcHNob3RE aXJ0eSwKLQkJCQkJCQkJCQkJCQkgICAmYWxsX2RlYWQpKQorCQkJCQkJCQkJCQkJCSAgICZh bGxfZGVhZCwKKwkJCQkJCQkJCQkJCQkgICAmaGlfcmVjaGVjaywKKwkJCQkJCQkJCQkJCQkg ICBjaGFpbl93YWxrX3Nsb3QpKQogCQkJCXsKIAkJCQkJVHJhbnNhY3Rpb25JZCB4d2FpdDsK IAorCQkJCQkvKgorCQkJCQkgKiBUaGUgY2hhaW4gd2FsayByZXBvcnRlZCAoaGlfcmVjaGVj aykgdGhhdCBpdCBjcm9zc2VkIGF0CisJCQkJCSAqIGxlYXN0IG9uZSBIT1QvU0lVIGhvcCBv biB0aGUgd2F5IHRvIHRoZSBsaXZlIHR1cGxlLCBzbworCQkJCQkgKiB0aGUgY2xhc3NpYyAi bGl2ZSB0dXBsZSBpbiB0aGUgY2hhaW4gaW1wbGllcyB0aGUgc2FtZQorCQkJCQkgKiBpbmRl eCBrZXkiIGludmFyaWFudCBtYXkgbm90IGhvbGQ6IGFuIG9sZCBpbmRleCBlbnRyeQorCQkJ CQkgKiBmb3Iga2V5IEsgbWF5IGNoYWluLWxlYWQgdG8gYSB0dXBsZSB3aG9zZSBjdXJyZW50 IGtleQorCQkJCQkgKiBpcyBLJy4gIFJlY2hlY2sgdGhlIGxlYWYncyBzdG9yZWQga2V5IGFn YWluc3QgdGhlIGxpdmUKKwkJCQkJICogdHVwbGUncyBjdXJyZW50IGluZGV4IGZvcm0uICBB IG1pc21hdGNoIG1lYW5zIHRoZSBsZWFmCisJCQkJCSAqIGlzIHN0YWxlIChub3QgYSBjb25m bGljdCk6IHNraXAgaXQ7IHRoZSBmcmVzaCBlbnRyeQorCQkJCQkgKiBpbnNlcnRlZCBmb3Ig dGhlIGN1cnJlbnQgdmFsdWUgaXMgdGhlIGNhbm9uaWNhbCBvbmUuCisJCQkJCSAqIEJlY2F1 c2UgdGhlIGxlYWYgc3RpbGwgcmVzb2x2ZXMgdG8gYSBsaXZlIHR1cGxlLCBjbGVhcgorCQkJ CQkgKiBwcmV2YWxsZGVhZCBzbyB0aGUgY2FsbGVyIG5ldmVyIG1hcmtzIGl0IExQX0RFQUQK KwkJCQkJICogKGtpbGxhYmxlKS4KKwkJCQkJICovCisJCQkJCWhvdF9pbmRleGVkX3N0YWxl ID0KKwkJCQkJCShoaV9yZWNoZWNrICYmCisJCQkJCQkgIV9idF9oZWFwX2tleXNfZXF1YWxf bGVhZihyZWwsIGN1cml0dXAsIGNoYWluX3dhbGtfc2xvdCkpOworCisJCQkJCWlmIChob3Rf aW5kZXhlZF9zdGFsZSkKKwkJCQkJeworCQkJCQkJcHJldmFsbGRlYWQgPSBmYWxzZTsKKwkJ CQkJCWlmIChuYnVmICE9IEludmFsaWRCdWZmZXIpCisJCQkJCQkJX2J0X3JlbGJ1ZihyZWws IG5idWYpOworCQkJCQkJbmJ1ZiA9IEludmFsaWRCdWZmZXI7CisJCQkJCQlFeGVjQ2xlYXJU dXBsZShjaGFpbl93YWxrX3Nsb3QpOworCQkJCQkJZ290byBidF9jaGFpbl93YWxrX3NraXA7 CisJCQkJCX0KKworCQkJCQkvKgorCQkJCQkgKiBUaGUgbGVhZidzIGtleSBzdGlsbCBtYXRj aGVzIHRoZSBsaXZlIHR1cGxlLiAgSWYgdGhlCisJCQkJCSAqIGNoYWluIHdhbGsgY3Jvc3Nl ZCBhIEhPVC1pbmRleGVkIGhvcCBhbmQgcmVzb2x2ZWQgdG8KKwkJCQkJICogdGhlIHZlcnkg dHVwbGUgdGhlIGNhbGxlciBpcyBpbnNlcnRpbmcgYW4gZW50cnkgZm9yLAorCQkJCQkgKiB0 aGlzIGlzIG5vdCBhIGR1cGxpY2F0ZSAtLSBpdCBpcyB0aGUgc2FtZSBsb2dpY2FsIHJvdwor CQkJCQkgKiBiZWluZyByZS1pbmRleGVkIChlLmcuIGEgSE9ULWluZGV4ZWQgVVBEQVRFIHRo YXQgbGVmdAorCQkJCQkgKiB0aGlzIGluZGV4J3Mga2V5IHVuY2hhbmdlZCwgb3IgYSBrZXkg Y3ljbGVkIGF3YXkgYW5kCisJCQkJCSAqIGJhY2spLiBTa2lwIGl0IHJhdGhlciB0aGFuIHJh aXNpbmcgYSBzcHVyaW91cyB1bmlxdWUKKwkJCQkJICogdmlvbGF0aW9uLgorCQkJCQkgKi8K KwkJCQkJaWYgKGhpX3JlY2hlY2sgJiYKKwkJCQkJCUl0ZW1Qb2ludGVyQ29tcGFyZSgmaHRp ZCwgJml0dXAtPnRfdGlkKSA9PSAwKQorCQkJCQl7CisJCQkJCQlpZiAobmJ1ZiAhPSBJbnZh bGlkQnVmZmVyKQorCQkJCQkJCV9idF9yZWxidWYocmVsLCBuYnVmKTsKKwkJCQkJCW5idWYg PSBJbnZhbGlkQnVmZmVyOworCQkJCQkJRXhlY0NsZWFyVHVwbGUoY2hhaW5fd2Fsa19zbG90 KTsKKwkJCQkJCWdvdG8gYnRfY2hhaW5fd2Fsa19za2lwOworCQkJCQl9CisJCQkJCWlmIChj aGFpbl93YWxrX3Nsb3QgIT0gTlVMTCkKKwkJCQkJCUV4ZWNDbGVhclR1cGxlKGNoYWluX3dh bGtfc2xvdCk7CisKIAkJCQkJLyoKIAkJCQkJICogSXQgaXMgYSBkdXBsaWNhdGUuIElmIHdl IGFyZSBvbmx5IGRvaW5nIGEgcGFydGlhbAogCQkJCQkgKiBjaGVjaywgdGhlbiBkb24ndCBi b3RoZXIgY2hlY2tpbmcgaWYgdGhlIHR1cGxlIGlzIGJlaW5nCkBAIC01NzgsNiArNjU1LDgg QEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0 c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCXsKIAkJCQkJCWlmIChuYnVmICE9IElu dmFsaWRCdWZmZXIpCiAJCQkJCQkJX2J0X3JlbGJ1ZihyZWwsIG5idWYpOworCQkJCQkJaWYg KGNoYWluX3dhbGtfc2xvdCkKKwkJCQkJCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90 KGNoYWluX3dhbGtfc2xvdCk7CiAJCQkJCQkqaXNfdW5pcXVlID0gZmFsc2U7CiAJCQkJCQly ZXR1cm4gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJCQkJCX0KQEAgLTU5Myw2ICs2NzIsOCBA QCBfYnRfY2hlY2tfdW5pcXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRz dGF0ZSwgUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJewogCQkJCQkJaWYgKG5idWYgIT0gSW52 YWxpZEJ1ZmZlcikKIAkJCQkJCQlfYnRfcmVsYnVmKHJlbCwgbmJ1Zik7CisJCQkJCQlpZiAo Y2hhaW5fd2Fsa19zbG90KQorCQkJCQkJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qo Y2hhaW5fd2Fsa19zbG90KTsKIAkJCQkJCS8qIFRlbGwgX2J0X2RvaW5zZXJ0IHRvIHdhaXQu Li4gKi8KIAkJCQkJCSpzcGVjdWxhdGl2ZVRva2VuID0gU25hcHNob3REaXJ0eS5zcGVjdWxh dGl2ZVRva2VuOwogCQkJCQkJLyogQ2FsbGVyIHJlbGVhc2VzIGxvY2sgb24gYnVmIGltbWVk aWF0ZWx5ICovCkBAIC02MTksNyArNzAwLDggQEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlv biByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWwsCiAJ CQkJCSAqLwogCQkJCQlodGlkID0gaXR1cC0+dF90aWQ7CiAJCQkJCWlmICh0YWJsZV9pbmRl eF9mZXRjaF90dXBsZV9jaGVjayhoZWFwUmVsLCAmaHRpZCwKLQkJCQkJCQkJCQkJCQkgIFNu YXBzaG90U2VsZiwgTlVMTCkpCisJCQkJCQkJCQkJCQkJICBTbmFwc2hvdFNlbGYsIE5VTEws CisJCQkJCQkJCQkJCQkJICBOVUxMLCBOVUxMKSkKIAkJCQkJewogCQkJCQkJLyogTm9ybWFs IGNhc2UgLS0tIGl0J3Mgc3RpbGwgbGl2ZSAqLwogCQkJCQl9CkBAIC03MTUsNiArNzk3LDkg QEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0 c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJICovCiAJCQkJaWYgKCFhbGxfZGVhZCAm JiBpbnBvc3RpbmcpCiAJCQkJCXByZXZhbGxkZWFkID0gZmFsc2U7CisKKwkJYnRfY2hhaW5f d2Fsa19za2lwOgorCQkJCTsKIAkJCX0KIAkJfQogCkBAIC03ODIsOSArODY3LDg0IEBAIF9i dF9jaGVja191bmlxdWUoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRl LCBSZWxhdGlvbiBoZWFwUmVsLAogCWlmIChuYnVmICE9IEludmFsaWRCdWZmZXIpCiAJCV9i dF9yZWxidWYocmVsLCBuYnVmKTsKIAorCWlmIChjaGFpbl93YWxrX3Nsb3QpCisJCUV4ZWNE cm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QoY2hhaW5fd2Fsa19zbG90KTsKKwogCXJldHVybiBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKIH0KIAorLyoKKyAqCV9idF9oZWFwX2tleXNfZXF1YWxf bGVhZigpIC0tIENvbXBhcmUgYSBoZWFwIHR1cGxlJ3MgY3VycmVudCBidHJlZSBrZXkKKyAq CWFnYWluc3QgdGhlIGtleSBzdG9yZWQgaW4gYSBsZWFmIEluZGV4VHVwbGUuCisgKgorICoJ VGhlIEhPVC1pbmRleGVkIHVuaXF1ZS1jaGVjayBwYXRoIHVzZXMgdGhpcyB0byBkaXN0aW5n dWlzaCBhIGxpdmUgdHVwbGUKKyAqCXdob3NlIGN1cnJlbnQga2V5IHN0aWxsIG1hdGNoZXMg dGhlIGFycml2aW5nIGxlYWYgKGEgZ2VudWluZSBjb25mbGljdCkKKyAqCWZyb20gYSBzdGFs ZSBjaGFpbiBoaXQ6IHdpdGggYSBIT1QtaW5kZXhlZCAoU2VsZWN0aXZlIEluZGV4IFVwZGF0 ZSkgY2hhaW4KKyAqCXRoZSBsZWFmIGVudHJ5IGZvciBhbiBvbGQga2V5IHN0aWxsIHJlc29s dmVzIHRvIHRoZSBsaXZlIHR1cGxlLCB3aG9zZQorICoJY3VycmVudCBpbmRleCBmb3JtIG1h eSBkaWZmZXIuCisgKgorICoJRXF1YWxpdHkgbXVzdCBhZ3JlZSB3aXRoIHRoZSBpbmRleCdz IG93biBub3Rpb24gb2YgZXF1YWxpdHksIGJlY2F1c2UgdGhlCisgKgljYWxsZXIgdXNlcyB0 aGUgdmVyZGljdCB0byBkZWNpZGUgd2hldGhlciB0byByYWlzZSBhIHVuaXF1ZSB2aW9sYXRp b24uCisgKglXZSBjb21wYXJlIGVhY2gga2V5IGNvbHVtbiB3aXRoIGl0cyBidHJlZSBvcmRl cmluZyBwcm9jZWR1cmUgKEJUT1JERVJfUFJPQywKKyAqCXRoZSBzYW1lIHN1cHBvcnQgZnVu Y3Rpb24gX2J0X21rc2NhbmtleSB1c2VzKSB1bmRlciB0aGUgY29sdW1uJ3MgY29sbGF0aW9u CisgKgktLSBub3QgYSBiaXR3aXNlIGltYWdlIGNvbXBhcmlzb24uICBCaXR3aXNlIGVxdWFs aXR5IHdvdWxkIHdyb25nbHkgdHJlYXQKKyAqCW9wY2xhc3MtZXF1YWwgYnV0IGltYWdlLWRp c3RpbmN0IHZhbHVlcyAobnVtZXJpYyAxLjAgdnMgMS4wMCwgZmxvYXQgLTAuMAorICoJdnMg MC4wLCB0ZXh0IHVuZGVyIGEgbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb24pIGFzICJub3Qg ZXF1YWwiIGFuZCBza2lwIGEKKyAqCWdlbnVpbmUgZHVwbGljYXRlLgorICoKKyAqCVRoaXMg aXMgY2FsbGVkIGZyb20gX2J0X2NoZWNrX3VuaXF1ZSB3aGlsZSB0aGUgbGVhZiBidWZmZXIg aXMgbG9ja2VkLCBzbyBpdAorICoJZGVsaWJlcmF0ZWx5IGF2b2lkcyBleGVjdXRvciBtYWNo aW5lcnk6IGl0IGZldGNoZXMgZWFjaCBrZXkgYXR0cmlidXRlCisgKglzdHJhaWdodCBmcm9t IHRoZSBzbG90LiAgSXQgaXMgb25seSBldmVyIHJlYWNoZWQgZm9yIGFuIGluZGV4IHJlY2Vp dmluZyBhCisgKglmcmVzaCBlbnRyeSBkdXJpbmcgYSBIT1QtaW5kZXhlZCB1cGRhdGUsIGFu ZCBIZWFwVXBkYXRlSG90QWxsb3dhYmxlCisgKglkaXNxdWFsaWZpZXMgYW55IFVQREFURSB0 aGF0IHRvdWNoZXMgYW4gZXhwcmVzc2lvbi1pbmRleCBhdHRyaWJ1dGUsIHNvIHRoZQorICoJ aW5kZXggaGVyZSBoYXMgbm8gZXhwcmVzc2lvbiBrZXkgY29sdW1uIChldmVyeSBpbmRrZXkg aXMgYSByZWFsIGF0dHJpYnV0ZQorICoJbnVtYmVyKS4gIFdlIGFzc2VydCB0aGF0IHJhdGhl ciB0aGFuIGhhbmRsZSBhIGtleWNvbCA9PSAwIGNhc2UgdGhhdCBjYW5ub3QKKyAqCW9jY3Vy OyBpZiBleHByZXNzaW9uLWluZGV4IHNlbGVjdGl2ZSBtYWludGVuYW5jZSBpcyBpbXBsZW1l bnRlZCBpbiB0aGUKKyAqCWZ1dHVyZSwgdGhpcyBpcyB3aGVyZSBhbiBleHByZXNzaW9uLWV2 YWx1YXRpbmcgY29tcGFyaXNvbiB3b3VsZCBiZSBhZGRlZC4KKyAqCisgKgloZWFwU2xvdCBt dXN0IGFscmVhZHkgYmUgcG9wdWxhdGVkIGJ5IHRoZSBjYWxsZXIgKHZpYQorICoJdGFibGVf aW5kZXhfZmV0Y2hfdHVwbGUgLyB0YWJsZV9pbmRleF9mZXRjaF90dXBsZV9jaGVjaykuCisg Ki8KK3N0YXRpYyBib29sCitfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYoUmVsYXRpb24gcmVs LCBJbmRleFR1cGxlIGxlYWZ0dXAsCisJCQkJCQkgc3RydWN0IFR1cGxlVGFibGVTbG90ICpo ZWFwU2xvdCkKK3sKKwlUdXBsZURlc2MJaW5kZXhEZXNjID0gUmVsYXRpb25HZXREZXNjcihy ZWwpOworCWludAkJCW5rZXkgPSBJbmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1 dGVzKHJlbCk7CisJRm9ybV9wZ19pbmRleCBpbmRleFN0cnVjdCA9IHJlbC0+cmRfaW5kZXg7 CisKKwlBc3NlcnQobGVhZnR1cCAhPSBOVUxMKTsKKwlBc3NlcnQoaGVhcFNsb3QgIT0gTlVM TCAmJiAhVFRTX0VNUFRZKGhlYXBTbG90KSk7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IG5r ZXk7IGkrKykKKwl7CisJCUF0dHJOdW1iZXIJa2V5Y29sID0gaW5kZXhTdHJ1Y3QtPmluZGtl eS52YWx1ZXNbaV07CisJCURhdHVtCQloZWFwX2RhdHVtOworCQlib29sCQloZWFwX2lzbnVs bDsKKwkJRGF0dW0JCWxlYWZfZGF0dW07CisJCWJvb2wJCWxlYWZfaXNudWxsOworCQlGbWdy SW5mbyAgICpjbXBwcm9jOworCisJCS8qIEV4cHJlc3Npb24ga2V5IGNvbHVtbnMgY2Fubm90 IHJlYWNoIGhlcmUgKHNlZSBoZWFkZXIpLiAqLworCQlBc3NlcnQoa2V5Y29sICE9IDApOwor CisJCWhlYXBfZGF0dW0gPSBzbG90X2dldGF0dHIoaGVhcFNsb3QsIGtleWNvbCwgJmhlYXBf aXNudWxsKTsKKwkJbGVhZl9kYXR1bSA9IGluZGV4X2dldGF0dHIobGVhZnR1cCwgaSArIDEs IGluZGV4RGVzYywgJmxlYWZfaXNudWxsKTsKKworCQlpZiAoaGVhcF9pc251bGwgIT0gbGVh Zl9pc251bGwpCisJCQlyZXR1cm4gZmFsc2U7CisJCWlmIChoZWFwX2lzbnVsbCkKKwkJCWNv bnRpbnVlOworCisJCS8qIG9wY2xhc3MgMy13YXkgY29tcGFyZSB1bmRlciB0aGUgY29sdW1u J3MgY29sbGF0aW9uOyAwID09IGVxdWFsICovCisJCWNtcHByb2MgPSBpbmRleF9nZXRwcm9j aW5mbyhyZWwsIGkgKyAxLCBCVE9SREVSX1BST0MpOworCQlpZiAoRGF0dW1HZXRJbnQzMihG dW5jdGlvbkNhbGwyQ29sbChjbXBwcm9jLCByZWwtPnJkX2luZGNvbGxhdGlvbltpXSwKKwkJ CQkJCQkJCQkJaGVhcF9kYXR1bSwgbGVhZl9kYXR1bSkpICE9IDApCisJCQlyZXR1cm4gZmFs c2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CiAKIC8qCiAgKglfYnRfZmluZGluc2VydGxv YygpIC0tIEZpbmRzIGFuIGluc2VydCBsb2NhdGlvbiBmb3IgYSB0dXBsZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0cmVlLmMKaW5kZXggM2RmMmM3NTJlYWQuLmY1NThkZDAxNTZlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMKQEAgLTM5LDYgKzM5LDcgQEAKICNp bmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKIAorCiAvKgogICogQlRQQVJBTExFTF9O T1RfSU5JVElBTElaRUQgaW5kaWNhdGVzIHRoYXQgdGhlIHNjYW4gaGFzIG5vdCBzdGFydGVk LgogICoKQEAgLTQwOCw2ICs0MDksMTYgQEAgYnRyZXNjYW4oSW5kZXhTY2FuRGVzYyBzY2Fu LCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2NhbmtleXMsCiAJICogcmFjZSBjb25kaXRpb24g aW52b2x2aW5nIFZBQ1VVTSBzZXR0aW5nIHBhZ2VzIGFsbC12aXNpYmxlIGluIHRoZSBWTS4K IAkgKiBJdCdzIGFsc28gdW5zYWZlIGZvciBwbGFpbiBpbmRleCBzY2FucyB0aGF0IHVzZSBh IG5vbi1NVkNDIHNuYXBzaG90LgogCSAqCisJICogTm90ZSB0aGF0IHdhbnRpbmcgdGhlIGlu ZGV4IHR1cGxlICh4c193YW50X2l0dXApIGlzIG5vdCBieSBpdHNlbGYgYQorCSAqIHJlYXNv biB0byByZXRhaW4gdGhlIHBpbjogYnRyZWUgY29waWVzIGVhY2ggcmV0dXJuZWQgSW5kZXhU dXBsZSBpbnRvCisJICogc28tPmN1cnJUdXBsZXMgKHNjYW4tbG9jYWwgbWVtb3J5KSBhbmQg cG9pbnRzIHhzX2l0dXAgdGhlcmUsIHNvIHRoZQorCSAqIHR1cGxlIHN0YXlzIHZhbGlkIGFm dGVyIHRoZSBwaW4gaXMgZHJvcHBlZC4gIE9ubHkgZ2VudWluZSBpbmRleC1vbmx5CisJICog c2NhbnMgKHhzX2luZGV4X29ubHkpLCB3aGljaCBtYXkgcmV0dXJuIGEgdHVwbGUgd2l0aG91 dCBmZXRjaGluZyB0aGUKKwkgKiBoZWFwIGFuZCB0aGVyZWZvcmUgcmVseSBvbiB0aGUgVk0s IG11c3Qga2VlcCB0aGUgcGluLiAgQSBwbGFpbiBpbmRleAorCSAqIHNjYW4gdGhhdCBzZXRz IHhzX3dhbnRfaXR1cCBtZXJlbHkgdG8gaW5zcGVjdCBvciByZWNoZWNrIHRoZSBpbmRleAor CSAqIHR1cGxlIHN0aWxsIGZldGNoZXMgYW5kIHZpc2liaWxpdHktY2hlY2tzIHRoZSBoZWFw LCBzbyBpdCBoYXMgbm8gVk0KKwkgKiByYWNlIGFuZCBtYXkgZHJvcCBwaW5zIGxpa2UgYW55 IG90aGVyIHBsYWluIHNjYW4uCisJICoKIAkgKiBBbHNvIG9wdCBvdXQgb2YgZHJvcHBpbmcg bGVhZiBwYWdlIHBpbnMgZWFnZXJseSBkdXJpbmcgYml0bWFwIHNjYW5zLgogCSAqIFBpbnMg Y2Fubm90IGJlIGhlbGQgZm9yIG1vcmUgdGhhbiBhbiBpbnN0YW50IGR1cmluZyBiaXRtYXAg c2NhbnMgZWl0aGVyCiAJICogd2F5LCBzbyB3ZSBtaWdodCBhcyB3ZWxsIGF2b2lkIHdhc3Rp bmcgY3ljbGVzIG9uIGFjcXVpcmluZyBwYWdlIExTTnMuCkBAIC00MTYsNyArNDI3LDcgQEAg YnRyZXNjYW4oSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2Nh bmtleXMsCiAJICoKIAkgKiBOb3RlOiBzby0+ZHJvcFBpbiBzaG91bGQgbmV2ZXIgY2hhbmdl IGFjcm9zcyByZXNjYW5zLgogCSAqLwotCXNvLT5kcm9wUGluID0gKCFzY2FuLT54c193YW50 X2l0dXAgJiYKKwlzby0+ZHJvcFBpbiA9ICghc2Nhbi0+eHNfaW5kZXhfb25seSAmJgogCQkJ CSAgIElzTVZDQ0xpa2VTbmFwc2hvdChzY2FuLT54c19zbmFwc2hvdCkgJiYKIAkJCQkgICBz Y2FuLT5oZWFwUmVsYXRpb24gIT0gTlVMTCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFi bGVhbS5jCmluZGV4IDEyYzI2NzRjYmQ3Li5mMDVjYWJjOGM2NSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdGFibGUvdGFibGVhbS5jCkBAIC0yNDIsMTkgKzI0MiwzMSBAQCBib29sCiB0YWJsZV9p bmRleF9mZXRjaF90dXBsZV9jaGVjayhSZWxhdGlvbiByZWwsCiAJCQkJCQkJICBJdGVtUG9p bnRlciB0aWQsCiAJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCQkgIGJvb2wg KmFsbF9kZWFkKQorCQkJCQkJCSAgYm9vbCAqYWxsX2RlYWQsCisJCQkJCQkJICBib29sICpo b3RfaW5kZXhlZF9yZWNoZWNrX291dCwKKwkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICprZWVw X3Nsb3QpCiB7CiAJSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbjsKIAlUdXBsZVRhYmxlU2xv dCAqc2xvdDsKIAlib29sCQljYWxsX2FnYWluID0gZmFsc2U7CiAJYm9vbAkJZm91bmQ7CiAK LQlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKKwlzbG90ID0ga2VlcF9z bG90ID8ga2VlcF9zbG90IDogdGFibGVfc2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKIAlzY2Fu ID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCBTT19OT05FKTsKIAlmb3VuZCA9IHRh YmxlX2luZGV4X2ZldGNoX3R1cGxlKHNjYW4sIHRpZCwgc25hcHNob3QsIHNsb3QsICZjYWxs X2FnYWluLAogCQkJCQkJCQkJYWxsX2RlYWQpOworCisJLyoKKwkgKiBTdXJmYWNlIHRoZSB0 YWJsZSBBTSdzIEhPVC9TSVUgcmVjaGVjayBzaWduYWwgdG8gdGhlIGNhbGxlciAodGhlIGlu ZGV4CisJICogQU0sIHdoaWNoIHJlY2hlY2tzIHRoZSBhcnJpdmluZyBsZWFmIGtleSBhZ2Fp bnN0IHRoZSBsaXZlIHR1cGxlKTsgdGhlCisJICogc2NhbiBpcyBmcmVlZCBiZWxvdywgc28g Y29weSBpdCBvdXQuCisJICovCisJaWYgKGhvdF9pbmRleGVkX3JlY2hlY2tfb3V0ICE9IE5V TEwpCisJCSpob3RfaW5kZXhlZF9yZWNoZWNrX291dCA9IGZvdW5kICYmIHNjYW4tPnhzX2hv dF9pbmRleGVkX3JlY2hlY2s7CisKIAl0YWJsZV9pbmRleF9mZXRjaF9lbmQoc2Nhbik7Ci0J RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwlpZiAoa2VlcF9zbG90ID09 IE5VTEwpCisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CiAKIAlyZXR1 cm4gZm91bmQ7CiB9CkBAIC0zNjEsOCArMzczLDcgQEAgdm9pZAogc2ltcGxlX3RhYmxlX3R1 cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkgIFR1 cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJ CSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCi0JCQkJCQkgIFRVX1Vw ZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQorCQkJCQkJICBCaXRtYXBzZXQgKiptb2Rp ZmllZF9hdHRycykKIHsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCVRNX0ZhaWx1cmVEYXRhIHRt ZmQ7CkBAIC0zNzMsOCArMzg0LDcgQEAgc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShSZWxh dGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkJCTAsIHNuYXBzaG90LCBJbnZh bGlkU25hcHNob3QsCiAJCQkJCQkJCXRydWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKIAkJ CQkJCQkJJnRtZmQsICZsb2NrbW9kZSwKLQkJCQkJCQkJbW9kaWZpZWRfaWR4X2F0dHJzLAot CQkJCQkJCQl1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCW1vZGlmaWVkX2F0dHJzKTsKIAog CXN3aXRjaCAocmVzdWx0KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhpbmcuYwppbmRleCBmZDdk MmVjMGUzYS4uN2VhZTJkNjZhMDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5nLmMKQEAgLTE4 LDExICsxOCwxNCBAQAogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgogI2luY2x1ZGUgImFj Y2Vzcy9oZWFwYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5j bHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKKyNpbmNsdWRlICJub2Rlcy9iaXRt YXBzZXQuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWxj YWNoZS5oIgogCiAKIC8qCkBAIC02OSwxMSArNzIsMTYgQEAgQ2F0YWxvZ0Nsb3NlSW5kZXhl cyhDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSkKICAqCiAgKiBUaGlzIHNob3VsZCBiZSBj YWxsZWQgZm9yIGVhY2ggaW5zZXJ0ZWQgb3IgdXBkYXRlZCBjYXRhbG9nIHR1cGxlLgogICoK LSAqIFRoaXMgaXMgZWZmZWN0aXZlbHkgYSBjdXQtZG93biB2ZXJzaW9uIG9mIEV4ZWNJbnNl cnRJbmRleFR1cGxlcy4KKyAqIFRoaXMgaXMgZWZmZWN0aXZlbHkgYSBjdXQtZG93biB2ZXJz aW9uIG9mIEV4ZWNJbnNlcnRJbmRleFR1cGxlcy4gIEZvcgorICogVVBEQVRFIHBhdGhzIHRo ZSBjYWxsZXIgc3VwcGxpZXMgdXBkYXRlX2FsbF9pbmRleGVzIChmcm9tCisgKiB0YWJsZV90 dXBsZV91cGRhdGUgLyBzaW1wbGVfaGVhcF91cGRhdGUpIHNvIHdlIGNhbiB0ZWxsIHdoaWNo IGluZGV4ZXMgYWN0dWFsbHkgbmVlZCBhIG5ldyBlbnRyeToKKyAqIHVwZGF0ZV9hbGxfaW5k ZXhlcyBpcyB0cnVlIGZvciBhIGZyZXNoIGluc2VydCBvciBhIG5vbi1IT1QgdXBkYXRlIChl dmVyeQorICogaW5kZXggZ2V0cyBhbiBlbnRyeSksIGZhbHNlIGZvciBhIGNsYXNzaWMtSE9U IGNhdGFsb2cgdXBkYXRlIChub24tc3VtbWFyaXppbmcKKyAqIGluZGV4ZXMgYXJlIHNraXBw ZWQsIHNpbmNlIHRoZWlyIGV4aXN0aW5nIGVudHJpZXMgc3RpbGwgcmVzb2x2ZSB0aGUgY2hh aW4pLgogICovCiBzdGF0aWMgdm9pZAogQ2F0YWxvZ0luZGV4SW5zZXJ0KENhdGFsb2dJbmRl eFN0YXRlIGluZHN0YXRlLCBIZWFwVHVwbGUgaGVhcFR1cGxlLAotCQkJCSAgIFRVX1VwZGF0 ZUluZGV4ZXMgdXBkYXRlSW5kZXhlcykKKwkJCQkgICBib29sIHVwZGF0ZV9hbGxfaW5kZXhl cykKIHsKIAlpbnQJCQlpOwogCWludAkJCW51bUluZGV4ZXM7CkBAIC04MywyMCArOTEsNiBA QCBDYXRhbG9nSW5kZXhJbnNlcnQoQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUsIEhlYXBU dXBsZSBoZWFwVHVwbGUsCiAJSW5kZXhJbmZvICoqaW5kZXhJbmZvQXJyYXk7CiAJRGF0dW0J CXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJYm9vbAkJaXNudWxsW0lOREVYX01BWF9LRVlT XTsKLQlib29sCQlvbmx5U3VtbWFyaXplZCA9ICh1cGRhdGVJbmRleGVzID09IFRVX1N1bW1h cml6aW5nKTsKLQotCS8qCi0JICogSE9UIHVwZGF0ZSBkb2VzIG5vdCByZXF1aXJlIGluZGV4 IGluc2VydHMuIEJ1dCB3aXRoIGFzc2VydHMgZW5hYmxlZCB3ZQotCSAqIHdhbnQgdG8gY2hl Y2sgdGhhdCBpdCdkIGJlIGxlZ2FsIHRvIGN1cnJlbnRseSBpbnNlcnQgaW50byB0aGUKLQkg KiB0YWJsZS9pbmRleC4KLQkgKi8KLSNpZm5kZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCWlm IChIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBUdXBsZSkgJiYgIW9ubHlTdW1tYXJpemVkKQot CQlyZXR1cm47Ci0jZW5kaWYKLQotCS8qIFdoZW4gb25seSB1cGRhdGluZyBzdW1tYXJpemVk IGluZGV4ZXMsIHRoZSB0dXBsZSBoYXMgdG8gYmUgSE9ULiAqLwotCUFzc2VydCgoIW9ubHlT dW1tYXJpemVkKSB8fCBIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBUdXBsZSkpOwogCiAJLyoK IAkgKiBHZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgc3RhdGUgc3RydWN0dXJlLiAgRmFsbCBv dXQgaWYgbm90aGluZyB0byBkby4KQEAgLTEyMCw2ICsxMTQsNyBAQCBDYXRhbG9nSW5kZXhJ bnNlcnQoQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUsIEhlYXBUdXBsZSBoZWFwVHVwbGUs CiAJewogCQlJbmRleEluZm8gICppbmRleEluZm87CiAJCVJlbGF0aW9uCWluZGV4OworCQli b29sCQlpbmRleF91bmNoYW5nZWQ7CiAKIAkJaW5kZXhJbmZvID0gaW5kZXhJbmZvQXJyYXlb aV07CiAJCWluZGV4ID0gcmVsYXRpb25EZXNjc1tpXTsKQEAgLTEzOCwyMiArMTMzLDIwIEBA IENhdGFsb2dJbmRleEluc2VydChDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSwgSGVhcFR1 cGxlIGhlYXBUdXBsZSwKIAkJQXNzZXJ0KGluZGV4LT5yZF9pbmRleC0+aW5kaW1tZWRpYXRl KTsKIAkJQXNzZXJ0KGluZGV4SW5mby0+aWlfTnVtSW5kZXhLZXlBdHRycyAhPSAwKTsKIAot CQkvKiBzZWUgZWFybGllciBjaGVjayBhYm92ZSAqLwotI2lmZGVmIFVTRV9BU1NFUlRfQ0hF Q0tJTkcKLQkJaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1cGxlKSAmJiAhb25seVN1 bW1hcml6ZWQpCi0JCXsKLQkJCUFzc2VydCghUmVpbmRleElzUHJvY2Vzc2luZ0luZGV4KFJl bGF0aW9uR2V0UmVsaWQoaW5kZXgpKSk7Ci0JCQljb250aW51ZTsKLQkJfQotI2VuZGlmCQkJ CQkJCS8qIFVTRV9BU1NFUlRfQ0hFQ0tJTkcgKi8KLQogCQkvKgotCQkgKiBTa2lwIGluc2Vy dGlvbnMgaW50byBub24tc3VtbWFyaXppbmcgaW5kZXhlcyBpZiB3ZSBvbmx5IG5lZWQgdG8K LQkJICogdXBkYXRlIHN1bW1hcml6aW5nIGluZGV4ZXMuCisJCSAqIERlY2lkZSB3aGV0aGVy IHRoaXMgaW5kZXggbmVlZHMgYSBuZXcgZW50cnkuICBPbiBJTlNFUlQgb3IgYQorCQkgKiBu b24tSE9UIHVwZGF0ZSAodXBkYXRlX2FsbF9pbmRleGVzKSBldmVyeSBpbmRleCBnZXRzIG9u ZS4gIE9uIGEKKwkJICogY2xhc3NpYy1IT1QgY2F0YWxvZyB1cGRhdGUgbm8gaW5kZXhlZCBh dHRyaWJ1dGUgY2hhbmdlZCwgc28gdGhlCisJCSAqIG5vbi1zdW1tYXJpemluZyBpbmRleGVz IGFyZSBza2lwcGVkIChzdW1tYXJpemluZyBpbmRleGVzIGFsd2F5cyBnZXQKKwkJICogYSBj aGFuY2UgdG8gdXBkYXRlIHRoZWlyIGJsb2NrLWxldmVsIHN1bW1hcmllcyBiZWxvdykuCiAJ CSAqLwotCQlpZiAob25seVN1bW1hcml6ZWQgJiYgIWluZGV4SW5mby0+aWlfU3VtbWFyaXpp bmcpCisJCWluZGV4X3VuY2hhbmdlZCA9ICF1cGRhdGVfYWxsX2luZGV4ZXM7CisJCWluZGV4 SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgPSBpbmRleF91bmNoYW5nZWQ7CisKKwkJaWYgKGlu ZGV4X3VuY2hhbmdlZCAmJiAhaW5kZXhJbmZvLT5paV9TdW1tYXJpemluZykKIAkJCWNvbnRp bnVlOwogCisKIAkJLyoKIAkJICogRm9ybUluZGV4RGF0dW0gZmlsbHMgaW4gaXRzIHZhbHVl cyBhbmQgaXNudWxsIHBhcmFtZXRlcnMgd2l0aCB0aGUKIAkJICogYXBwcm9wcmlhdGUgdmFs dWVzIGZvciB0aGUgY29sdW1uKHMpIG9mIHRoZSBpbmRleC4KQEAgLTI0MCw3ICsyMzMsNyBA QCBDYXRhbG9nVHVwbGVJbnNlcnQoUmVsYXRpb24gaGVhcFJlbCwgSGVhcFR1cGxlIHR1cCkK IAogCXNpbXBsZV9oZWFwX2luc2VydChoZWFwUmVsLCB0dXApOwogCi0JQ2F0YWxvZ0luZGV4 SW5zZXJ0KGluZHN0YXRlLCB0dXAsIFRVX0FsbCk7CisJQ2F0YWxvZ0luZGV4SW5zZXJ0KGlu ZHN0YXRlLCB0dXAsIHRydWUpOwogCUNhdGFsb2dDbG9zZUluZGV4ZXMoaW5kc3RhdGUpOwog fQogCkBAIC0yNjAsNyArMjUzLDcgQEAgQ2F0YWxvZ1R1cGxlSW5zZXJ0V2l0aEluZm8oUmVs YXRpb24gaGVhcFJlbCwgSGVhcFR1cGxlIHR1cCwKIAogCXNpbXBsZV9oZWFwX2luc2VydCho ZWFwUmVsLCB0dXApOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAsIFRV X0FsbCk7CisJQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAsIHRydWUpOwogfQog CiAvKgpAQCAtMjkxLDcgKzI4NCw3IEBAIENhdGFsb2dUdXBsZXNNdWx0aUluc2VydFdpdGhJ bmZvKFJlbGF0aW9uIGhlYXBSZWwsIFR1cGxlVGFibGVTbG90ICoqc2xvdCwKIAogCQl0dXBs ZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdFtpXSwgdHJ1ZSwgJnNob3VsZF9mcmVl KTsKIAkJdHVwbGUtPnRfdGFibGVPaWQgPSBzbG90W2ldLT50dHNfdGFibGVPaWQ7Ci0JCUNh dGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwgdHVwbGUsIFRVX0FsbCk7CisJCUNhdGFsb2dJ bmRleEluc2VydChpbmRzdGF0ZSwgdHVwbGUsIHRydWUpOwogCiAJCWlmIChzaG91bGRfZnJl ZSkKIAkJCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKQEAgLTMxMywxNSArMzA2LDE1IEBAIHZv aWQKIENhdGFsb2dUdXBsZVVwZGF0ZShSZWxhdGlvbiBoZWFwUmVsLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXApCiB7CiAJQ2F0YWxvZ0luZGV4U3RhdGUg aW5kc3RhdGU7Ci0JVFVfVXBkYXRlSW5kZXhlcyB1cGRhdGVJbmRleGVzID0gVFVfQWxsOwor CWJvb2wJCXVwZGF0ZV9hbGxfaW5kZXhlczsKIAogCUNhdGFsb2dUdXBsZUNoZWNrQ29uc3Ry YWludHMoaGVhcFJlbCwgdHVwKTsKIAogCWluZHN0YXRlID0gQ2F0YWxvZ09wZW5JbmRleGVz KGhlYXBSZWwpOwogCi0Jc2ltcGxlX2hlYXBfdXBkYXRlKGhlYXBSZWwsIG90aWQsIHR1cCwg JnVwZGF0ZUluZGV4ZXMpOworCXNpbXBsZV9oZWFwX3VwZGF0ZShoZWFwUmVsLCBvdGlkLCB0 dXAsICZ1cGRhdGVfYWxsX2luZGV4ZXMpOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0 YXRlLCB0dXAsIHVwZGF0ZUluZGV4ZXMpOworCUNhdGFsb2dJbmRleEluc2VydChpbmRzdGF0 ZSwgdHVwLCB1cGRhdGVfYWxsX2luZGV4ZXMpOwogCUNhdGFsb2dDbG9zZUluZGV4ZXMoaW5k c3RhdGUpOwogfQogCkBAIC0zMzcsMTMgKzMzMCwxMyBAQCB2b2lkCiBDYXRhbG9nVHVwbGVV cGRhdGVXaXRoSW5mbyhSZWxhdGlvbiBoZWFwUmVsLCBjb25zdCBJdGVtUG9pbnRlckRhdGEg Km90aWQsIEhlYXBUdXBsZSB0dXAsCiAJCQkJCQkgICBDYXRhbG9nSW5kZXhTdGF0ZSBpbmRz dGF0ZSkKIHsKLQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUluZGV4ZXMgPSBUVV9BbGw7CisJ Ym9vbAkJdXBkYXRlX2FsbF9pbmRleGVzOwogCiAJQ2F0YWxvZ1R1cGxlQ2hlY2tDb25zdHJh aW50cyhoZWFwUmVsLCB0dXApOwogCi0Jc2ltcGxlX2hlYXBfdXBkYXRlKGhlYXBSZWwsIG90 aWQsIHR1cCwgJnVwZGF0ZUluZGV4ZXMpOworCXNpbXBsZV9oZWFwX3VwZGF0ZShoZWFwUmVs LCBvdGlkLCB0dXAsICZ1cGRhdGVfYWxsX2luZGV4ZXMpOwogCi0JQ2F0YWxvZ0luZGV4SW5z ZXJ0KGluZHN0YXRlLCB0dXAsIHVwZGF0ZUluZGV4ZXMpOworCUNhdGFsb2dJbmRleEluc2Vy dChpbmRzdGF0ZSwgdHVwLCB1cGRhdGVfYWxsX2luZGV4ZXMpOwogfQogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy90b2FzdGluZy5jCmluZGV4IDRhYTUyYTRiZDI1Li5lMGJjMDFmNjNkMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvdG9hc3RpbmcuYwpAQCAtMzA3LDggKzMwNyw2IEBAIGNyZWF0ZV90b2FzdF90 YWJsZShSZWxhdGlvbiByZWwsIE9pZCB0b2FzdE9pZCwgT2lkIHRvYXN0SW5kZXhPaWQsCiAJ aW5kZXhJbmZvLT5paV9VbmlxdWUgPSB0cnVlOwogCWluZGV4SW5mby0+aWlfTnVsbHNOb3RE aXN0aW5jdCA9IGZhbHNlOwogCWluZGV4SW5mby0+aWlfUmVhZHlGb3JJbnNlcnRzID0gdHJ1 ZTsKLQlpbmRleEluZm8tPmlpX0NoZWNrZWRVbmNoYW5nZWQgPSBmYWxzZTsKLQlpbmRleElu Zm8tPmlpX0luZGV4VW5jaGFuZ2VkID0gZmFsc2U7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJy ZW50ID0gZmFsc2U7CiAJaW5kZXhJbmZvLT5paV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNlOwog CWluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzID0gMDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNr LmMKaW5kZXggYmY0NWM1Y2Y4MjYuLjEzZTg3NjJlN2Y0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9yZXBhY2suYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBh Y2suYwpAQCAtMjY3OCwxNCArMjY3OCwxNCBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShS ZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpzcGlsbGVkX3R1cGxlLAogewogCUxvY2tU dXBsZU1vZGUgbG9ja21vZGU7CiAJVE1fRmFpbHVyZURhdGEgdG1mZDsKLQlUVV9VcGRhdGVJ bmRleGVzIHVwZGF0ZV9pbmRleGVzOwogCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRy czsKIAlUTV9SZXN1bHQJcmVzOwogCiAJLyoKIAkgKiBDb21wdXRlIHRoZSBzZXQgb2YgbW9k aWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIGJ5IGNvbXBhcmluZyB0aGUgb2xkCi0JICogKG9u ZGlzaykgYW5kIG5ldyAoc3BpbGxlZCkgdHVwbGVzOyBoZWFwX3VwZGF0ZSBuZWVkcyBpdCBm b3IgYSBjb3JyZWN0Ci0JICogSE9UIGRlY2lzaW9uIChhIE5VTEwgc2V0IHdvdWxkIGxvb2sg bGlrZSAibm8gaW5kZXhlZCBjb2x1bW4gY2hhbmdlZCIpLgorCSAqIChvbmRpc2spIGFuZCBu ZXcgKHNwaWxsZWQpIHR1cGxlcy4gIGhlYXBfdXBkYXRlIG5lZWRzIHRoaXMgdG8gbWFrZSBh CisJICogY29ycmVjdCBIT1QgZGVjaXNpb247IHdpdGhvdXQgaXQgbW9kaWZpZWRfaWR4X2F0 dHJzIHdvdWxkIGJlIE5VTEwgYW5kCisJICogaGVhcF91cGRhdGUgd291bGQgYWx3YXlzIHRy ZWF0IHRoZSB1cGRhdGUgYXMgSE9ULWVsaWdpYmxlLgogCSAqLwogCW1vZGlmaWVkX2lkeF9h dHRycyA9IEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKGNoZ2N4dC0+Y2NfcnJpLAogCQkJ CQkJCQkJCQkJCW9uZGlza190dXBsZSwKQEAgLTI3MDAsMjkgKzI3MDAsMzMgQEAgYXBwbHlf Y29uY3VycmVudF91cGRhdGUoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqc3BpbGxl ZF90dXBsZSwKIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCSBJbnZhbGlkU25h cHNob3QsCiAJCQkJCQkJIGZhbHNlLAotCQkJCQkJCSAmdG1mZCwgJmxvY2ttb2RlLCBtb2Rp ZmllZF9pZHhfYXR0cnMsICZ1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJICZ0bWZkLCAmbG9j a21vZGUsCisJCQkJCQkJICZtb2RpZmllZF9pZHhfYXR0cnMpOwogCWlmIChyZXMgIT0gVE1f T2spCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJZXJyY29kZShFUlJDT0RFX1RfUl9TRVJJQUxJ WkFUSU9OX0ZBSUxVUkUpLAogCQkJCWVycm1zZygiY291bGQgbm90IGFwcGx5IGNvbmN1cnJl bnQgJXMgb24gcmVsYXRpb24gXCIlc1wiIiwKIAkJCQkJICAgIlVQREFURSIsIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCkpKTsKIAotCWlmICh1cGRhdGVfaW5kZXhlcyAhPSBUVV9O b25lKQorCWlmIChjaGdjeHQtPmNjX3JyaS0+cmlfTnVtSW5kaWNlcyA+IDAgJiYKKwkJIWJt c19pc19lbXB0eShtb2RpZmllZF9pZHhfYXR0cnMpKQogCXsKLQkJdWludDMyCQlmbGFncyA9 IEVJSVRfSVNfVVBEQVRFOworCQlib29sCQlhbGxfaW5kZXhlcyA9CisJCQlibXNfaXNfbWVt YmVyKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLCBtb2RpZmllZF9pZHhfYXR0cnMpOwog Ci0JCWlmICh1cGRhdGVfaW5kZXhlcyA9PSBUVV9TdW1tYXJpemluZykKLQkJCWZsYWdzIHw9 IEVJSVRfT05MWV9TVU1NQVJJWklORzsKKwkJRXhlY1NldEluZGV4VW5jaGFuZ2VkKGNoZ2N4 dC0+Y2NfcnJpLCBtb2RpZmllZF9pZHhfYXR0cnMpOwogCQlFeGVjSW5zZXJ0SW5kZXhUdXBs ZXMoY2hnY3h0LT5jY19ycmksCiAJCQkJCQkJICBjaGdjeHQtPmNjX2VzdGF0ZSwKLQkJCQkJ CQkgIGZsYWdzLAorCQkJCQkJCSAgRUlJVF9JU19VUERBVEUgfAorCQkJCQkJCSAgKGFsbF9p bmRleGVzID8KKwkJCQkJCQkgICAwIDogRUlJVF9JU19IT1RfSU5ERVhFRCksCiAJCQkJCQkJ ICBzcGlsbGVkX3R1cGxlLAogCQkJCQkJCSAgTklMLCBOVUxMKTsKIAl9CiAKLQlwZ3N0YXRf cHJvZ3Jlc3NfaW5jcl9wYXJhbShQUk9HUkVTU19SRVBBQ0tfSEVBUF9UVVBMRVNfVVBEQVRF RCwgMSk7Ci0KIAlibXNfZnJlZShtb2RpZmllZF9pZHhfYXR0cnMpOworCisJcGdzdGF0X3By b2dyZXNzX2luY3JfcGFyYW0oUFJPR1JFU1NfUkVQQUNLX0hFQVBfVFVQTEVTX1VQREFURUQs IDEpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0luZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcu YwppbmRleCBlYjM4MzgxMjkwMS4uNTMyOGRiODc3Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNJbmRleGluZy5jCkBAIC0xMTMsMTEgKzExMywxMyBAQAogI2luY2x1ZGUgImNhdGFs b2cvaW5kZXguaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUg Im5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2lu Y2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL211bHRpcmFuZ2V0 eXBlcy5oIgogI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKKyNpbmNsdWRlICJ1dGls cy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKIC8qIHdhaXRNb2RlIGFy Z3VtZW50IHRvIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludCgpICovCkBA IC0xNDAsMTEgKzE0Miw2IEBAIHN0YXRpYyBib29sIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlx dWVfY29uc3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHN0YXRpYyBi b29sIGluZGV4X3JlY2hlY2tfY29uc3RyYWludChSZWxhdGlvbiBpbmRleCwgY29uc3QgT2lk ICpjb25zdHJfcHJvY3MsCiAJCQkJCQkJCQkgY29uc3QgRGF0dW0gKmV4aXN0aW5nX3ZhbHVl cywgY29uc3QgYm9vbCAqZXhpc3RpbmdfaXNudWxsLAogCQkJCQkJCQkJIGNvbnN0IERhdHVt ICpuZXdfdmFsdWVzKTsKLXN0YXRpYyBib29sIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUo UmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKLQkJCQkJCQkJCSAgRVN0YXRlICplc3Rh dGUsIEluZGV4SW5mbyAqaW5kZXhJbmZvLAotCQkJCQkJCQkJICBSZWxhdGlvbiBpbmRleFJl bGF0aW9uKTsKLXN0YXRpYyBib29sIGluZGV4X2V4cHJlc3Npb25fY2hhbmdlZF93YWxrZXIo Tm9kZSAqbm9kZSwKLQkJCQkJCQkJCQkJQml0bWFwc2V0ICphbGxVcGRhdGVkQ29scyk7CiBz dGF0aWMgdm9pZCBFeGVjV2l0aG91dE92ZXJsYXBzTm90RW1wdHkoUmVsYXRpb24gcmVsLCBO YW1lRGF0YSBhdHRuYW1lLCBEYXR1bSBhdHR2YWwsCiAJCQkJCQkJCQkJY2hhciB0eXB0eXBl LCBPaWQgYXR0dHlwaWQpOwogCkBAIC0yNzcsMjQgKzI3NCwxMiBAQCBFeGVjQ2xvc2VJbmRp Y2VzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pCiAgKgkJaW50byBhbGwgdGhlIHJl bGF0aW9ucyBpbmRleGluZyB0aGUgcmVzdWx0IHJlbGF0aW9uCiAgKgkJd2hlbiBhIGhlYXAg dHVwbGUgaXMgaW5zZXJ0ZWQgaW50byB0aGUgcmVzdWx0IHJlbGF0aW9uLgogICoKLSAqCQlX aGVuIEVJSVRfSVNfVVBEQVRFIGlzIHNldCBhbmQgRUlJVF9PTkxZX1NVTU1BUklaSU5HIGlz bid0LAotICoJCWV4ZWN1dG9yIGlzIHBlcmZvcm1pbmcgYW4gVVBEQVRFIHRoYXQgY291bGQg bm90IHVzZSBhbgotICoJCW9wdGltaXphdGlvbiBsaWtlIGhlYXBhbSdzIEhPVCAoaW4gbW9y ZSBnZW5lcmFsIHRlcm1zIGEKLSAqCQljYWxsIHRvIHRhYmxlX3R1cGxlX3VwZGF0ZSgpIHRv b2sgcGxhY2UgYW5kIHNldAotICoJCSd1cGRhdGVfaW5kZXhlcycgdG8gVFVfQWxsKS4gIFJl Y2VpdmluZyB0aGlzIGhpbnQgbWFrZXMKLSAqCQl1cyBjb25zaWRlciBpZiB3ZSBzaG91bGQg cGFzcyBkb3duIHRoZSAnaW5kZXhVbmNoYW5nZWQnCi0gKgkJaGludCBpbiB0dXJuLiAgVGhh dCdzIHNvbWV0aGluZyB0aGF0IHdlIGZpZ3VyZSBvdXQgZm9yCi0gKgkJZWFjaCBpbmRleF9p bnNlcnQoKSBjYWxsIGlmZiBFSUlUX0lTX1VQREFURSBpcyBzZXQuCi0gKgkJKFdoZW4gdGhh dCBmbGFnIGlzIG5vdCBzZXQgd2UgYWxyZWFkeSBrbm93IG5vdCB0byBwYXNzIHRoZQotICoJ CWhpbnQgdG8gYW55IGluZGV4LikKLSAqCi0gKgkJSWYgRUlJVF9PTkxZX1NVTU1BUklaSU5H IGlzIHNldCwgYW4gZXF1aXZhbGVudCBvcHRpbWl6YXRpb24gdG8KLSAqCQlIT1QgaGFzIGJl ZW4gYXBwbGllZCBhbmQgYW55IHVwZGF0ZWQgY29sdW1ucyBhcmUgaW5kZXhlZAotICoJCW9u bHkgYnkgc3VtbWFyaXppbmcgaW5kZXhlcyAob3IgaW4gbW9yZSBnZW5lcmFsIHRlcm1zIGEK LSAqCQljYWxsIHRvIHRhYmxlX3R1cGxlX3VwZGF0ZSgpIHRvb2sgcGxhY2UgYW5kIHNldAot ICoJCSd1cGRhdGVfaW5kZXhlcycgdG8gVFVfU3VtbWFyaXppbmcpLiBXZSBjYW4gKGFuZCBt dXN0KQotICoJCXRoZXJlZm9yZSBvbmx5IHVwZGF0ZSB0aGUgaW5kZXhlcyB0aGF0IGhhdmUK LSAqCQknYW1zdW1tYXJpemluZycgPSB0cnVlLgorICoJCVdoZW4gRUlJVF9JU19VUERBVEUg aXMgc2V0LCB0aGUgZXhlY3V0b3IgaXMgcGVyZm9ybWluZyBhbgorICoJCVVQREFURS4gIFRo ZSBwZXItaW5kZXggaWlfSW5kZXhVbmNoYW5nZWQgZmxhZyAocG9wdWxhdGVkIGJ5CisgKgkJ RXhlY1NldEluZGV4VW5jaGFuZ2VkKCkpIGluZGljYXRlcyB3aGV0aGVyIGVhY2ggaW5kZXgn cyBrZXkKKyAqCQl2YWx1ZXMgYXJlIHVuY2hhbmdlZCBieSB0aGlzIHVwZGF0ZS4gIFdoZW4g aWlfSW5kZXhVbmNoYW5nZWQKKyAqCQlpcyB0cnVlLCB3ZSBwYXNzIGluZGV4VW5jaGFuZ2Vk PXRydWUgdG8gaW5kZXhfaW5zZXJ0KCkgYXMgYQorICoJCWhpbnQgZm9yIGJvdHRvbS11cCBk ZWxldGlvbiBvcHRpbWl6YXRpb24uCiAgKgogICoJCVVuaXF1ZSBhbmQgZXhjbHVzaW9uIGNv bnN0cmFpbnRzIGFyZSBlbmZvcmNlZCBhdCB0aGUgc2FtZQogICoJCXRpbWUuICBUaGlzIHJl dHVybnMgYSBsaXN0IG9mIGluZGV4IE9JRHMgZm9yIGFueSB1bmlxdWUgb3IKQEAgLTM3MCwx MSArMzU1LDQxIEBAIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvLAogCQkJY29udGludWU7CiAKIAkJLyoKLQkJICogU2tpcCBwcm9jZXNzaW5n IG9mIG5vbi1zdW1tYXJpemluZyBpbmRleGVzIGlmIHdlIG9ubHkgdXBkYXRlCi0JCSAqIHN1 bW1hcml6aW5nIGluZGV4ZXMKKwkJICogVVBEQVRFIHNraXAgcnVsZS4gIEV4ZWNTZXRJbmRl eFVuY2hhbmdlZCBwb3B1bGF0ZWQKKwkJICogaWlfSW5kZXhOZWVkc1VwZGF0ZSBmb3IgZXZl cnkgaW5kZXg6IHRydWUgd2hlbiB0aGUgdGFibGUgQU0gc3RvcmVkCisJCSAqIGFuIGluZGVw ZW5kZW50IG5ldyB2ZXJzaW9uLCBvciB3aGVuIGFueSBhdHRyaWJ1dGUgdGhlIGluZGV4CisJ CSAqIHJlZmVyZW5jZXMgKGtleSwgSU5DTFVERSwgZXhwcmVzc2lvbiwgb3IgcGFydGlhbC1w cmVkaWNhdGUgY29sdW1uKQorCQkgKiBvdmVybGFwcyB0aGUgbW9kaWZpZWQtYXR0cnMgYml0 bWFwLiAgV2hlbiBpdCBpcyBmYWxzZSBvbiBhCisJCSAqIG5vbi1zdW1tYXJpemluZyBpbmRl eCB3ZSBza2lwIHRoZSBpbnNlcnQgZW50aXJlbHk7IHRoZSBIT1QgY2hhaW4KKwkJICoga2Vl cHMgZXhpc3RpbmcgZW50cmllcyBwb2ludGluZyBhdCB0aGUgY2hhaW4gcm9vdC4gIFN1bW1h cml6aW5nCisJCSAqIGluZGV4ZXMgYWx3YXlzIGdldCBhIGNoYW5jZSB0byB1cGRhdGUgdGhl aXIgYmxvY2stbGV2ZWwgc3VtbWFyaWVzLgogCQkgKi8KLQkJaWYgKChmbGFncyAmIEVJSVRf T05MWV9TVU1NQVJJWklORykgJiYgIWluZGV4SW5mby0+aWlfU3VtbWFyaXppbmcpCisJCWlm ICgoZmxhZ3MgJiBFSUlUX0lTX1VQREFURSkgJiYKKwkJCSFpbmRleEluZm8tPmlpX0luZGV4 TmVlZHNVcGRhdGUgJiYKKwkJCSFpbmRleEluZm8tPmlpX1N1bW1hcml6aW5nKQorCQl7CisJ CQkvKgorCQkJICogVGhpcyBpbmRleCB3YXMgc2tpcHBlZCBiZWNhdXNlIGl0cyBrZXkgYXR0 cmlidXRlcyBkaWQgbm90CisJCQkgKiBjaGFuZ2UuICBXaGVuIHRoZSBvdmVyYWxsIHVwZGF0 ZSBpcyBhIEhPVC1pbmRleGVkIHVwZGF0ZSAoc29tZQorCQkJICogb3RoZXIgbm9uLXN1bW1h cml6aW5nIGluZGV4IGRpZCBjaGFuZ2UpLCByZWNvcmQgdGhlIHNraXAgb24KKwkJCSAqIHRo aXMgaW5kZXgncyBwZ3N0YXQgZW50cnkuICBBIGNsYXNzaWMtSE9UIHVwZGF0ZSAobm8gaW5k ZXhlZAorCQkJICogYXR0cmlidXRlIGNoYW5nZWQpIGRvZXMgbm90IHJlYWNoIHRoaXMgcGF0 aCAtLQorCQkJICogRXhlY0luc2VydEluZGV4VHVwbGVzIGlzIG9ubHkgaW52b2tlZCB3aGVu IGF0IGxlYXN0IG9uZSBpbmRleAorCQkJICogbmVlZHMgYSBmcmVzaCBlbnRyeS4KKwkJCSAq LworCQkJaWYgKGZsYWdzICYgRUlJVF9JU19IT1RfSU5ERVhFRCkKKwkJCQlwZ3N0YXRfY291 bnRfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQoaW5kZXhSZWxhdGlvbik7CiAJCQljb250aW51 ZTsKKwkJfQorCisJCS8qCisJCSAqIE5vbi1za2lwcGVkIGluZGV4IHVuZGVyIGEgSE9ULWlu ZGV4ZWQgdXBkYXRlOiB0aGlzIGluZGV4IGlzCisJCSAqIHJlY2VpdmluZyBhIGZyZXNoIGVu dHJ5IGJlY2F1c2Ugb25lIG9mIGl0cyBrZXkgYXR0cmlidXRlcyBjaGFuZ2VkLgorCQkgKiBT dW1tYXJpemluZyBpbmRleGVzIGFsd2F5cyBpbnNlcnQgcmVnYXJkbGVzcyBvZiB0aGUgSE9U LWluZGV4ZWQKKwkJICogZGVjaXNpb24gKHNhbWUgYXMgY2xhc3NpYyBIT1QpLCBzbyB0aGV5 IGFyZSBub3QgY291bnRlZCBoZXJlLgorCQkgKi8KKwkJaWYgKChmbGFncyAmIEVJSVRfSVNf SE9UX0lOREVYRUQpICYmICFpbmRleEluZm8tPmlpX1N1bW1hcml6aW5nKQorCQkJcGdzdGF0 X2NvdW50X2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkKGluZGV4UmVsYXRpb24pOwogCiAJCS8q IENoZWNrIGZvciBwYXJ0aWFsIGluZGV4ICovCiAJCWlmIChpbmRleEluZm8tPmlpX1ByZWRp Y2F0ZSAhPSBOSUwpCkBAIC00MzYsMTUgKzQ1MSwxMyBAQCBFeGVjSW5zZXJ0SW5kZXhUdXBs ZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCWNoZWNrVW5pcXVlID0gVU5J UVVFX0NIRUNLX1BBUlRJQUw7CiAKIAkJLyoKLQkJICogVGhlcmUncyBkZWZpbml0ZWx5IGdv aW5nIHRvIGJlIGFuIGluZGV4X2luc2VydCgpIGNhbGwgZm9yIHRoaXMKLQkJICogaW5kZXgu ICBJZiB3ZSdyZSBiZWluZyBjYWxsZWQgYXMgcGFydCBvZiBhbiBVUERBVEUgc3RhdGVtZW50 LAotCQkgKiBjb25zaWRlciBpZiB0aGUgJ2luZGV4VW5jaGFuZ2VkJyA9IHRydWUgaGludCBz aG91bGQgYmUgcGFzc2VkLgorCQkgKiBGb3IgVVBEQVRFIG9wZXJhdGlvbnMsIHVzZSB0aGUg cGVyLWluZGV4IGlpX0luZGV4VW5jaGFuZ2VkIGZsYWcKKwkJICogKHBvcHVsYXRlZCBieSBF eGVjU2V0SW5kZXhVbmNoYW5nZWQpIHRvIGhpbnQgd2hldGhlciB0aGUgaW5kZXgKKwkJICog dmFsdWVzIGFyZSB1bmNoYW5nZWQuICBUaGlzIGhlbHBzIHRoZSBpbmRleCBBTSBvcHRpbWl6 ZSBmb3IKKwkJICogYm90dG9tLXVwIGRlbGV0aW9uIG9mIGR1cGxpY2F0ZSBpbmRleCBlbnRy aWVzLgogCQkgKi8KLQkJaW5kZXhVbmNoYW5nZWQgPSAoKGZsYWdzICYgRUlJVF9JU19VUERB VEUpICYmCi0JCQkJCQkgIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUocmVzdWx0UmVsSW5m bywKLQkJCQkJCQkJCQkJCQllc3RhdGUsCi0JCQkJCQkJCQkJCQkJaW5kZXhJbmZvLAotCQkJ CQkJCQkJCQkJCWluZGV4UmVsYXRpb24pKTsKKwkJaW5kZXhVbmNoYW5nZWQgPSAoZmxhZ3Mg JiBFSUlUX0lTX1VQREFURSkgPworCQkJaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdlZCA6 IGZhbHNlOwogCiAJCXNhdGlzZmllc0NvbnN0cmFpbnQgPQogCQkJaW5kZXhfaW5zZXJ0KGlu ZGV4UmVsYXRpb24sIC8qIGluZGV4IHJlbGF0aW9uICovCkBAIC03MjEsNiArNzM0LDcgQEAg Y2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KFJlbGF0aW9uIGhlYXAsIFJl bGF0aW9uIGluZGV4LAogCWludAkJCWk7CiAJYm9vbAkJY29uZmxpY3Q7CiAJYm9vbAkJZm91 bmRfc2VsZjsKKwlib29sCQlmb3VuZF9zZWxmX3NpdV9oaXQ7CiAJRXhwckNvbnRleHQgKmVj b250ZXh0OwogCVR1cGxlVGFibGVTbG90ICpleGlzdGluZ19zbG90OwogCVR1cGxlVGFibGVT bG90ICpzYXZlX3NjYW50dXBsZTsKQEAgLTgyMyw2ICs4MzcsNyBAQCBjaGVja19leGNsdXNp b25fb3JfdW5pcXVlX2NvbnN0cmFpbnQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs CiByZXRyeToKIAljb25mbGljdCA9IGZhbHNlOwogCWZvdW5kX3NlbGYgPSBmYWxzZTsKKwlm b3VuZF9zZWxmX3NpdV9oaXQgPSBmYWxzZTsKIAlpbmRleF9zY2FuID0gaW5kZXhfYmVnaW5z Y2FuKGhlYXAsIGluZGV4LAogCQkJCQkJCQkgJkRpcnR5U25hcHNob3QsIE5VTEwsIGluZG5r ZXlhdHRzLCAwLAogCQkJCQkJCQkgU09fTk9ORSk7CkBAIC04MzgsMTQgKzg1MywyOCBAQCBy ZXRyeToKIAkJY2hhcgkgICAqZXJyb3JfZXhpc3Rpbmc7CiAKIAkJLyoKLQkJICogSWdub3Jl IHRoZSBlbnRyeSBmb3IgdGhlIHR1cGxlIHdlJ3JlIHRyeWluZyB0byBjaGVjay4KKwkJICog SWdub3JlIHRoZSBlbnRyeSBmb3IgdGhlIHR1cGxlIHdlJ3JlIHRyeWluZyB0byBjaGVjay4g IFdpdGggSE9ULQorCQkgKiBpbmRleGVkIChob3QtaW5kZXhlZCkgdXBkYXRlcywgc2V2ZXJh bCBpbmRleCBlbnRyaWVzIG1heSBjaGFpbi1sZWFkCisJCSAqIHRvIHRoZSBzYW1lIGhlYXAg dHVwbGUgKGEgc3RhbGUgZW50cnkgZm9yIHRoZSBvbGQga2V5IGFuZCBhIGZyZXNoCisJCSAq IGVudHJ5IGZvciB0aGUgbmV3IGtleSkuICBUaGV5IGFsbCByZXNvbHZlIHRvIHRoZSBzYW1l IFRJRCBoZXJlIGFuZAorCQkgKiBtdXN0IGFsbCBiZSB0cmVhdGVkIGFzICJzZWxmIiwgbm90 IGFzIGEgZHVwbGljYXRlIGVycm9yLiAgV2UKKwkJICogdG9sZXJhdGUgdGhlIGR1cGxpY2F0 ZSBzZWxmIGFycml2YWwgd2hlbmV2ZXIgKmVpdGhlciogdGhpcworCQkgKiBpdGVyYXRpb24g b3IgYW4gZWFybGllciBvbmUgc2F3IHhzX2hvdF9pbmRleGVkX3N0YWxlIC0tIHRoZQorCQkg KiBjYW5vbmljYWwgZGlyZWN0IGVudHJ5IGFuZCB0aGUgc3RhbGUgY2hhaW4td2FsayBlbnRy aWVzIGNhbiBhcnJpdmUKKwkJICogaW4gZWl0aGVyIG9yZGVyLgogCQkgKi8KIAkJaWYgKEl0 ZW1Qb2ludGVySXNWYWxpZCh0dXBsZWlkKSAmJgogCQkJSXRlbVBvaW50ZXJFcXVhbHModHVw bGVpZCwgJmV4aXN0aW5nX3Nsb3QtPnR0c190aWQpKQogCQl7Ci0JCQlpZiAoZm91bmRfc2Vs ZikJCS8qIHNob3VsZCBub3QgaGFwcGVuICovCisJCQlpZiAoaW5kZXhfc2Nhbi0+eHNfaG90 X2luZGV4ZWRfc3RhbGUpCisJCQkJZm91bmRfc2VsZl9zaXVfaGl0ID0gdHJ1ZTsKKwkJCWlm IChmb3VuZF9zZWxmKQorCQkJeworCQkJCWlmIChmb3VuZF9zZWxmX3NpdV9oaXQpCisJCQkJ CWNvbnRpbnVlOwogCQkJCWVsb2coRVJST1IsICJmb3VuZCBzZWxmIHR1cGxlIG11bHRpcGxl IHRpbWVzIGluIGluZGV4IFwiJXNcIiIsCiAJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShpbmRleCkpOworCQkJfQogCQkJZm91bmRfc2VsZiA9IHRydWU7CiAJCQljb250aW51ZTsK IAkJfQpAQCAtODY5LDYgKzg5OCwzMSBAQCByZXRyeToKIAkJCQkJCQkJICogY29uZmxpY3Qg Ki8KIAkJfQogCisJCS8qCisJCSAqIEhPVC1pbmRleGVkIGNoYWlucyBjYW4gcmVhY2ggdGhp cyBsb29wIHZpYSBhIHN0YWxlIGJ0cmVlIGxlYWYgZW50cnkKKwkJICogd2hvc2Uga2V5IGlz IGRpZmZlcmVudCBmcm9tIHRoZSBoZWFwIHR1cGxlJ3MgY3VycmVudCBpbmRleC1mb3JtLgor CQkgKiBleGlzdGluZ192YWx1ZXMgaG9sZHMgdGhlIGN1cnJlbnQgaGVhcCB0dXBsZSdzIGlu ZGV4LWZvcm0KKwkJICogKEZvcm1JbmRleERhdHVtIGFib3ZlKS4gIENvbXBhcmUgaXQgYWdh aW5zdCBvdXIgbmV3IHR1cGxlJ3MgdmFsdWVzCisJCSAqIHVzaW5nIHRoZSBzYW1lIGNvbnN0 cmFpbnQgb3BlcmF0b3JzOyBpZiB0aGV5IGRvbid0IGFncmVlLCB0aGUKKwkJICogY2hhaW4t d2Fsa2VkIHR1cGxlIGlzIG5vdCBhY3R1YWxseSBpbiBjb25mbGljdCB3aXRoIG91ciBpbnNl cnRpb24KKwkJICogLS0gaXQganVzdCBzaGFyZWQgYSBUSUQgd2l0aCBhIHN0YWxlIGxlYWYg ZW50cnkgd2UgaGFwcGVuZWQgdG8gc2NhbgorCQkgKiB0aHJvdWdoLiAgU2tpcCBpdC4KKwkJ ICoKKwkJICogVGhpcyBtaXJyb3JzIF9idF9jaGVja191bmlxdWUncyBIT1QtaW5kZXhlZCBy ZWNoZWNrIHBhdGg7IGZvcgorCQkgKiBleGNsdXNpb24gY29uc3RyYWludHMgdGhlIHVzZXIt c3VwcGxpZWQgb3BlcmF0b3IgaW4gY29uc3RyX3Byb2NzCisJCSAqIHJlcGxhY2VzIHRoZSBi dHJlZSBlcXVhbGl0eSBjb21wYXJhdG9yLCBhbmQKKwkJICogaW5kZXhfcmVjaGVja19jb25z dHJhaW50IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGZvciBlaXRoZXIuCisJCSAqLworCQlpZiAo aW5kZXhfc2Nhbi0+eHNfaG90X2luZGV4ZWRfc3RhbGUpCisJCXsKKwkJCWlmICghaW5kZXhf cmVjaGVja19jb25zdHJhaW50KGluZGV4LAorCQkJCQkJCQkJCSAgY29uc3RyX3Byb2NzLAor CQkJCQkJCQkJCSAgZXhpc3RpbmdfdmFsdWVzLAorCQkJCQkJCQkJCSAgZXhpc3RpbmdfaXNu dWxsLAorCQkJCQkJCQkJCSAgdmFsdWVzKSkKKwkJCQljb250aW51ZTsJCS8qIHN0YWxlIGNo YWluIGhpdCwgbm90IGEgcmVhbCBjb25mbGljdCAqLworCQl9CisKIAkJLyoKIAkJICogQXQg dGhpcyBwb2ludCB3ZSBoYXZlIGVpdGhlciBhIGNvbmZsaWN0IG9yIGEgcG90ZW50aWFsIGNv bmZsaWN0LgogCQkgKgpAQCAtMTAwOSwxNDkgKzEwNjMsOTQgQEAgaW5kZXhfcmVjaGVja19j b25zdHJhaW50KFJlbGF0aW9uIGluZGV4LCBjb25zdCBPaWQgKmNvbnN0cl9wcm9jcywKIH0K IAogLyoKLSAqIENoZWNrIGlmIEV4ZWNJbnNlcnRJbmRleFR1cGxlcygpIHNob3VsZCBwYXNz IGluZGV4VW5jaGFuZ2VkIGhpbnQuCisgKiBFeGVjU2V0SW5kZXhVbmNoYW5nZWQKKyAqCisg KiBQb3B1bGF0ZSB0d28gcGVyLWluZGV4IGZsYWdzIGFoZWFkIG9mIEV4ZWNJbnNlcnRJbmRl eFR1cGxlczoKKyAqCisgKiAgIC0gaWlfSW5kZXhOZWVkc1VwZGF0ZSAod2lkZSkgZHJpdmVz IHRoZSBza2lwIGRlY2lzaW9uLiAgSXQgaXMgdHJ1ZSB3aGVuCisgKiAgICAgdGhlIHRhYmxl IEFNIHN0b3JlZCBhbiBpbmRlcGVuZGVudCBuZXcgdmVyc2lvbiAod2hvbGUtcm93IGF0dHJp YnV0ZQorICogICAgIHByZXNlbnQgaW4gbW9kaWZpZWRfaWR4X2F0dHJzKSBvciB3aGVuIGFu eSBhdHRyaWJ1dGUgdGhlIGluZGV4CisgKiAgICAgcmVmZXJlbmNlcyAtLSBrZXksIElOQ0xV REUsIGV4cHJlc3Npb24sIG9yIHBhcnRpYWwtcHJlZGljYXRlIGNvbHVtbiwKKyAqICAgICBw ZXIgUmVsYXRpb25HZXRJbmRleGVkQXR0cnMoKSAtLSBjaGFuZ2VkLiAgQSBub24tc3VtbWFy aXppbmcgaW5kZXggZm9yCisgKiAgICAgd2hpY2ggdGhpcyBpcyBmYWxzZSBpcyBza2lwcGVk OiBpdHMgZXhpc3RpbmcgZW50cnkga2VlcHMgcmVzb2x2aW5nIHRoZQorICogICAgIEhPVCBj aGFpbi4KICAqCi0gKiBXaGVuIHRoZSBleGVjdXRvciBwZXJmb3JtcyBhbiBVUERBVEUgdGhh dCByZXF1aXJlcyBhIG5ldyByb3VuZCBvZiBpbmRleAotICogdHVwbGVzLCBkZXRlcm1pbmUg aWYgd2Ugc2hvdWxkIHBhc3MgJ2luZGV4VW5jaGFuZ2VkJyA9IHRydWUgaGludCBmb3Igb25l Ci0gKiBzaW5nbGUgaW5kZXguCisgKiAgIC0gaWlfSW5kZXhVbmNoYW5nZWQgKG5hcnJvdykg aXMgdGhlIGluZGV4VW5jaGFuZ2VkIGhpbnQgdG8gYW1pbnNlcnQsCisgKiAgICAgY29uc3Vt ZWQgYnkgbmJ0cmVlIGRlZHVwbGljYXRpb24gLyBib3R0b20tdXAgZGVsZXRpb24uICBQZXIg dGhlCisgKiAgICAgaGlzdG9yaWNhbCBydWxlIGl0IGNvdW50cyBvbmx5IGtleSBjb2x1bW5z OyBJTkNMVURFIGFuZCBwcmVkaWNhdGUKKyAqICAgICBjb2x1bW5zIGFyZSBkZWxpYmVyYXRl bHkgaWdub3JlZCwgYW5kIGFuIGV4cHJlc3Npb24ga2V5IGlzIHRyZWF0ZWQKKyAqICAgICBj b25zZXJ2YXRpdmVseSBhcyBwb3NzaWJseSBjaGFuZ2VkLgogICovCi1zdGF0aWMgYm9vbAot aW5kZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZv LCBFU3RhdGUgKmVzdGF0ZSwKLQkJCQkJCSAgSW5kZXhJbmZvICppbmRleEluZm8sIFJlbGF0 aW9uIGluZGV4UmVsYXRpb24pCit2b2lkCitFeGVjU2V0SW5kZXhVbmNoYW5nZWQoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJICBjb25zdCBCaXRtYXBzZXQgKm1vZGlm aWVkX2lkeF9hdHRycykKIHsKLQlCaXRtYXBzZXQgICp1cGRhdGVkQ29sczsKLQlCaXRtYXBz ZXQgICpleHRyYVVwZGF0ZWRDb2xzOwotCUJpdG1hcHNldCAgKmFsbFVwZGF0ZWRDb2xzOwot CWJvb2wJCWhhc2V4cHJlc3Npb24gPSBmYWxzZTsKLQlMaXN0CSAgICppZHhFeHByczsKLQot CS8qCi0JICogQ2hlY2sgY2FjaGUgZmlyc3QKLQkgKi8KLQlpZiAoaW5kZXhJbmZvLT5paV9D aGVja2VkVW5jaGFuZ2VkKQotCQlyZXR1cm4gaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdl ZDsKLQlpbmRleEluZm8tPmlpX0NoZWNrZWRVbmNoYW5nZWQgPSB0cnVlOwotCi0JLyoKLQkg KiBDaGVjayBmb3IgaW5kZXhlZCBhdHRyaWJ1dGUgb3ZlcmxhcCB3aXRoIHVwZGF0ZWQgY29s dW1ucy4KLQkgKgotCSAqIE9ubHkgZG8gdGhpcyBmb3Iga2V5IGNvbHVtbnMuICBBIGNoYW5n ZSB0byBhIG5vbi1rZXkgY29sdW1uIHdpdGhpbiBhbgotCSAqIElOQ0xVREUgaW5kZXggc2hv dWxkIG5vdCBiZSBjb3VudGVkIGhlcmUuICBOb24ta2V5IGNvbHVtbiB2YWx1ZXMgYXJlCi0J ICogb3BhcXVlIHBheWxvYWQgc3RhdGUgdG8gdGhlIGluZGV4IEFNLCBhIGxpdHRsZSBsaWtl IGFuIGV4dHJhIHRhYmxlIFRJRC4KLQkgKgotCSAqIE5vdGUgdGhhdCByb3ctbGV2ZWwgQkVG T1JFIHRyaWdnZXJzIHdvbid0IGFmZmVjdCBvdXIgYmVoYXZpb3IsIHNpbmNlCi0JICogdGhl eSBkb24ndCBhZmZlY3QgdGhlIHVwZGF0ZWRDb2xzIGJpdG1hcHMgZ2VuZXJhbGx5LiAgSXQg ZG9lc24ndCBzZWVtCi0JICogd29ydGggdGhlIHRyb3VibGUgb2YgY2hlY2tpbmcgd2hpY2gg YXR0cmlidXRlcyB3ZXJlIGNoYW5nZWQgZGlyZWN0bHkuCi0JICovCi0JdXBkYXRlZENvbHMg PSBFeGVjR2V0VXBkYXRlZENvbHMocmVzdWx0UmVsSW5mbywgZXN0YXRlKTsKLQlleHRyYVVw ZGF0ZWRDb2xzID0gRXhlY0dldEV4dHJhVXBkYXRlZENvbHMocmVzdWx0UmVsSW5mbywgZXN0 YXRlKTsKLQlmb3IgKGludCBhdHRyID0gMDsgYXR0ciA8IGluZGV4SW5mby0+aWlfTnVtSW5k ZXhLZXlBdHRyczsgYXR0cisrKQotCXsKLQkJaW50CQkJa2V5Y29sID0gaW5kZXhJbmZvLT5p aV9JbmRleEF0dHJOdW1iZXJzW2F0dHJdOwotCi0JCWlmIChrZXljb2wgPD0gMCkKLQkJewot CQkJLyoKLQkJCSAqIFNraXAgZXhwcmVzc2lvbnMgZm9yIG5vdywgYnV0IHJlbWVtYmVyIHRv IGRlYWwgd2l0aCB0aGVtIGxhdGVyCi0JCQkgKiBvbgotCQkJICovCi0JCQloYXNleHByZXNz aW9uID0gdHJ1ZTsKLQkJCWNvbnRpbnVlOwotCQl9CisJaW50CQkJbnVtSW5kaWNlcyA9IHJl c3VsdFJlbEluZm8tPnJpX051bUluZGljZXM7CisJSW5kZXhJbmZvICoqaW5kZXhJbmZvQXJy YXkgPSByZXN1bHRSZWxJbmZvLT5yaV9JbmRleFJlbGF0aW9uSW5mbzsKKwlSZWxhdGlvblB0 ciBpbmRleERlc2NzID0gcmVzdWx0UmVsSW5mby0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzOwor CWJvb2wJCWFsbF9pbmRleGVzOwogCi0JCWlmIChibXNfaXNfbWVtYmVyKGtleWNvbCAtIEZp cnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCi0JCQkJCQkgIHVwZGF0ZWRDb2xz KSB8fAotCQkJYm1zX2lzX21lbWJlcihrZXljb2wgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0 cmlidXRlTnVtYmVyLAotCQkJCQkJICBleHRyYVVwZGF0ZWRDb2xzKSkKLQkJewotCQkJLyog Q2hhbmdlZCBrZXkgY29sdW1uIC0tIGRvbid0IGhpbnQgZm9yIHRoaXMgaW5kZXggKi8KLQkJ CWluZGV4SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgPSBmYWxzZTsKLQkJCXJldHVybiBmYWxz ZTsKLQkJfQotCX0KLQotCS8qCi0JICogV2hlbiB3ZSBnZXQgdGhpcyBmYXIgYW5kIGluZGV4 IGhhcyBubyBleHByZXNzaW9ucywgcmV0dXJuIHRydWUgc28gdGhhdAotCSAqIGluZGV4X2lu c2VydCgpIGNhbGwgd2lsbCBnbyBvbiB0byBwYXNzICdpbmRleFVuY2hhbmdlZCcgPSB0cnVl IGhpbnQuCi0JICoKLQkgKiBUaGUgX2Fic2VuY2VfIG9mIGFuIGluZGV4ZWQga2V5IGF0dHJp YnV0ZSB0aGF0IG92ZXJsYXBzIHdpdGggdXBkYXRlZAotCSAqIGF0dHJpYnV0ZXMgKGluIGFk ZGl0aW9uIHRvIHRoZSB0b3RhbCBhYnNlbmNlIG9mIGluZGV4ZWQgZXhwcmVzc2lvbnMpCi0J ICogc2hvd3MgdGhhdCB0aGUgaW5kZXggYXMgYSB3aG9sZSBpcyBsb2dpY2FsbHkgdW5jaGFu Z2VkIGJ5IFVQREFURS4KLQkgKi8KLQlpZiAoIWhhc2V4cHJlc3Npb24pCi0JewotCQlpbmRl eEluZm8tPmlpX0luZGV4VW5jaGFuZ2VkID0gdHJ1ZTsKLQkJcmV0dXJuIHRydWU7Ci0JfQor CWlmIChudW1JbmRpY2VzID09IDApCisJCXJldHVybjsKIAogCS8qCi0JICogTmVlZCB0byBw YXNzIG9ubHkgb25lIGJtcyB0byBleHByZXNzaW9uX3RyZWVfd2Fsa2VyIGhlbHBlciBmdW5j dGlvbi4KLQkgKiBBdm9pZCBhbGxvY2F0aW5nIG1lbW9yeSBpbiBjb21tb24gY2FzZSB3aGVy ZSB0aGVyZSBhcmUgbm8gZXh0cmEgY29scy4KKwkgKiBBIHdob2xlLXJvdyBlbnRyeSBpbiBt b2RpZmllZF9pZHhfYXR0cnMgbWVhbnMgdGhlIHRhYmxlIEFNIHN0b3JlZCBhbgorCSAqIGlu ZGVwZW5kZW50IG5ldyB2ZXJzaW9uIChlLmcuIGF0IGEgbmV3IFRJRCksIHNvIGV2ZXJ5IGlu ZGV4IG5lZWRzIGEKKwkgKiBmcmVzaCBlbnRyeSByZWdhcmRsZXNzIG9mIHdoaWNoIGF0dHJp YnV0ZXMgY2hhbmdlZC4KIAkgKi8KLQlpZiAoIWV4dHJhVXBkYXRlZENvbHMpCi0JCWFsbFVw ZGF0ZWRDb2xzID0gdXBkYXRlZENvbHM7Ci0JZWxzZQotCQlhbGxVcGRhdGVkQ29scyA9IGJt c191bmlvbih1cGRhdGVkQ29scywgZXh0cmFVcGRhdGVkQ29scyk7CisJYWxsX2luZGV4ZXMg PSBibXNfaXNfbWVtYmVyKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLCBtb2RpZmllZF9p ZHhfYXR0cnMpOwogCi0JLyoKLQkgKiBXZSBoYXZlIHRvIHdvcmsgc2xpZ2h0bHkgaGFyZGVy IGluIHRoZSBldmVudCBvZiBpbmRleGVkIGV4cHJlc3Npb25zLAotCSAqIGJ1dCB0aGUgcHJp bmNpcGxlIGlzIHRoZSBzYW1lIGFzIGJlZm9yZTogdHJ5IHRvIGZpbmQgY29sdW1ucyAoVmFy cywKLQkgKiBhY3R1YWxseSkgdGhhdCBvdmVybGFwIHdpdGgga25vd24tdXBkYXRlZCBjb2x1 bW5zLgotCSAqCi0JICogSWYgd2UgZmluZCBhbnkgbWF0Y2hpbmcgVmFycywgZG9uJ3QgcGFz cyBoaW50IGZvciBpbmRleC4gIE90aGVyd2lzZQotCSAqIHBhc3MgaGludC4KLQkgKi8KLQlp ZHhFeHBycyA9IFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpbmRleFJlbGF0aW9uKTsK LQloYXNleHByZXNzaW9uID0gaW5kZXhfZXhwcmVzc2lvbl9jaGFuZ2VkX3dhbGtlcigoTm9k ZSAqKSBpZHhFeHBycywKLQkJCQkJCQkJCQkJCQlhbGxVcGRhdGVkQ29scyk7Ci0JbGlzdF9m cmVlKGlkeEV4cHJzKTsKLQlpZiAoZXh0cmFVcGRhdGVkQ29scykKLQkJYm1zX2ZyZWUoYWxs VXBkYXRlZENvbHMpOwotCi0JaWYgKGhhc2V4cHJlc3Npb24pCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBudW1JbmRpY2VzOyBpKyspCiAJewotCQlpbmRleEluZm8tPmlpX0luZGV4VW5jaGFu Z2VkID0gZmFsc2U7Ci0JCXJldHVybiBmYWxzZTsKLQl9CisJCUluZGV4SW5mbyAgKmluZGV4 SW5mbyA9IGluZGV4SW5mb0FycmF5W2ldOworCQlSZWxhdGlvbglpbmRleERlc2MgPSBpbmRl eERlc2NzW2ldOworCQlCaXRtYXBzZXQgICppbmRleGVkYXR0cnM7CisJCWJvb2wJCWtleWNo YW5nZWQ7CiAKLQkvKgotCSAqIERlbGliZXJhdGVseSBkb24ndCBjb25zaWRlciBpbmRleCBw cmVkaWNhdGVzLiAgV2Ugc2hvdWxkIGV2ZW4gZ2l2ZSB0aGUKLQkgKiBoaW50IHdoZW4gcmVz dWx0IHJlbCdzICJ1cGRhdGVkIHR1cGxlIiBoYXMgbm8gY29ycmVzcG9uZGluZyBpbmRleAot CSAqIHR1cGxlLCB3aGljaCBpcyBwb3NzaWJsZSB3aXRoIGEgcGFydGlhbCBpbmRleCAocHJv dmlkZWQgdGhlIHVzdWFsCi0JICogY29uZGl0aW9ucyBhcmUgbWV0KS4KLQkgKi8KLQlpbmRl eEluZm8tPmlpX0luZGV4VW5jaGFuZ2VkID0gdHJ1ZTsKLQlyZXR1cm4gdHJ1ZTsKLX0KLQot LyoKLSAqIEluZGV4ZWQgZXhwcmVzc2lvbiBoZWxwZXIgZm9yIGluZGV4X3VuY2hhbmdlZF9i eV91cGRhdGUoKS4KLSAqCi0gKiBSZXR1cm5zIHRydWUgd2hlbiBWYXIgdGhhdCBhcHBlYXJz IHdpdGhpbiBhbGxVcGRhdGVkQ29scyBsb2NhdGVkLgotICovCi1zdGF0aWMgYm9vbAotaW5k ZXhfZXhwcmVzc2lvbl9jaGFuZ2VkX3dhbGtlcihOb2RlICpub2RlLCBCaXRtYXBzZXQgKmFs bFVwZGF0ZWRDb2xzKQotewotCWlmIChub2RlID09IE5VTEwpCi0JCXJldHVybiBmYWxzZTsK KwkJaWYgKGluZGV4RGVzYyA9PSBOVUxMKQorCQkJY29udGludWU7CiAKLQlpZiAoSXNBKG5v ZGUsIFZhcikpCi0JewotCQlWYXIJCSAgICp2YXIgPSAoVmFyICopIG5vZGU7CisJCS8qCisJ CSAqIFNraXAgZGVjaXNpb24gKHdpZGUpLiAgVGhlIGluZGV4IG5lZWRzIGEgbmV3IGVudHJ5 IGlmIHRoZSBBTSBzdG9yZWQKKwkJICogYW4gaW5kZXBlbmRlbnQgdmVyc2lvbiwgb3IgaWYg YW55IGF0dHJpYnV0ZSBpdCByZWZlcmVuY2VzIC0tIGtleSwKKwkJICogSU5DTFVERSwgZXhw cmVzc2lvbiwgb3IgcGFydGlhbC1wcmVkaWNhdGUgY29sdW1uIC0tIGNoYW5nZWQuCisJCSAq IFJlbGF0aW9uR2V0SW5kZXhlZEF0dHJzKCkgY292ZXJzIGFsbCBvZiB0aG9zZS4gIChBbiBV UERBVEUgdGhhdAorCQkgKiB0b3VjaGVzIGFuIGV4cHJlc3Npb24taW5kZXggYXR0cmlidXRl IG5ldmVyIHJlYWNoZXMgdGhlIEhPVC1pbmRleGVkCisJCSAqIHBhdGg6IEhlYXBVcGRhdGVI b3RBbGxvd2FibGUgZGlzcXVhbGlmaWVzIGl0LCBwZW5kaW5nCisJCSAqIGV4cHJlc3Npb24t YXdhcmUgbWFpbnRlbmFuY2UuKQorCQkgKi8KKwkJaW5kZXhlZGF0dHJzID0gUmVsYXRpb25H ZXRJbmRleGVkQXR0cnMoaW5kZXhEZXNjKTsKKwkJaW5kZXhJbmZvLT5paV9JbmRleE5lZWRz VXBkYXRlID0KKwkJCWFsbF9pbmRleGVzIHx8IGJtc19vdmVybGFwKGluZGV4ZWRhdHRycywg bW9kaWZpZWRfaWR4X2F0dHJzKTsKKwkJYm1zX2ZyZWUoaW5kZXhlZGF0dHJzKTsKIAotCQlp ZiAoYm1zX2lzX21lbWJlcih2YXItPnZhcmF0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0 dHJpYnV0ZU51bWJlciwKLQkJCQkJCSAgYWxsVXBkYXRlZENvbHMpKQorCQkvKgorCQkgKiBh bWluc2VydCBoaW50IChuYXJyb3cpLiAgaWlfSW5kZXhVbmNoYW5nZWQgZmVlZHMgbmJ0cmVl CisJCSAqIGRlZHVwbGljYXRpb24gLyBib3R0b20tdXAgZGVsZXRpb24gaGV1cmlzdGljcyBh bmQsIHBlciB0aGUKKwkJICogaGlzdG9yaWNhbCBydWxlLCBjb3VudHMgb25seSBrZXkgY29s dW1uczogYSBjaGFuZ2UgdG8gYW4gSU5DTFVERQorCQkgKiBjb2x1bW4gb3IgdG8gYSBwYXJ0 aWFsLWluZGV4IHByZWRpY2F0ZSBjb2x1bW4gZG9lcyBub3QgZGlzcXVhbGlmeQorCQkgKiB0 aGUgaGludC4gIEFuIGV4cHJlc3Npb24ga2V5IGNvbHVtbiBpcyB0cmVhdGVkIGNvbnNlcnZh dGl2ZWx5IGFzCisJCSAqIHBvc3NpYmx5IGNoYW5nZWQuCisJCSAqLworCQlrZXljaGFuZ2Vk ID0gZmFsc2U7CisJCWZvciAoaW50IGsgPSAwOyBrIDwgaW5kZXhJbmZvLT5paV9OdW1JbmRl eEtleUF0dHJzOyBrKyspCiAJCXsKLQkJCS8qIFZhciB3YXMgdXBkYXRlZCAtLSBpbmRpY2F0 ZXMgdGhhdCB3ZSBzaG91bGQgbm90IGhpbnQgKi8KLQkJCXJldHVybiB0cnVlOwotCQl9CisJ CQlBdHRyTnVtYmVyCWtleWNvbCA9IGluZGV4SW5mby0+aWlfSW5kZXhBdHRyTnVtYmVyc1tr XTsKIAotCQkvKiBTdGlsbCBoYXZlbid0IGZvdW5kIGEgcmVhc29uIHRvIG5vdCBwYXNzIHRo ZSBoaW50ICovCi0JCXJldHVybiBmYWxzZTsKKwkJCWlmIChrZXljb2wgPT0gMCkJLyogZXhw cmVzc2lvbiBrZXk6IGFzc3VtZSBpdCBtYXkgaGF2ZSBjaGFuZ2VkICovCisJCQl7CisJCQkJ a2V5Y2hhbmdlZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCQlpZiAoYm1zX2lzX21l bWJlcihrZXljb2wgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAorCQkJ CQkJCSAgbW9kaWZpZWRfaWR4X2F0dHJzKSkKKwkJCXsKKwkJCQlrZXljaGFuZ2VkID0gdHJ1 ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlpbmRleEluZm8tPmlpX0luZGV4VW5jaGFu Z2VkID0gIWtleWNoYW5nZWQ7CiAJfQotCi0JcmV0dXJuIGV4cHJlc3Npb25fdHJlZV93YWxr ZXIobm9kZSwgaW5kZXhfZXhwcmVzc2lvbl9jaGFuZ2VkX3dhbGtlciwKLQkJCQkJCQkJICBh bGxVcGRhdGVkQ29scyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBs aWNhdGlvbi5jCmluZGV4IDYyNjJmNzFiZDkzLi43YjViYmRiZmQ3YSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTIxNyw2ICsyMTcsMTggQEAgcmV0 cnk6CiAJLyogVHJ5IHRvIGZpbmQgdGhlIHR1cGxlICovCiAJd2hpbGUgKGluZGV4X2dldG5l eHRfc2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgb3V0c2xvdCkpCiAJeworCQkv KgorCQkgKiBBIEhPVC1pbmRleGVkIHVwZGF0ZSBjYW4gbGVhdmUgYSBzdGFsZSBpbmRleCBs ZWFmOiBhbiBlbnRyeSB3aG9zZQorCQkgKiBrZXkgaXMgYSBwcmUtdXBkYXRlIHZhbHVlIGJ1 dCB3aG9zZSBUSUQgY2hhaW4tcmVzb2x2ZXMgdG8gYSBsaXZlCisJCSAqIHR1cGxlIG5vdyBj YXJyeWluZyBhIGRpZmZlcmVudCBrZXkuICBTdWNoIGEgdHVwbGUgaXMgbm90IHRoZQorCQkg KiByZXBsaWNhLWlkZW50aXR5IG1hdGNoIHdlIGFyZSBsb29raW5nIGZvciAoYW5kIHRoZSBQ Sy9SSSBmYXN0IHBhdGgKKwkJICogYmVsb3cgc2tpcHMgdGhlIGVxdWFsaXR5IHJlY2hlY2sg dGhhdCB3b3VsZCBvdGhlcndpc2UgY2F0Y2ggaXQpLCBzbworCQkgKiBkcm9wIGl0IC0tIGV4 YWN0bHkgYXMgSW5kZXhTY2FuL0luZGV4T25seVNjYW4gZG8uICBUaGUgZnJlc2ggbGVhZgor CQkgKiBmb3IgdGhlIGN1cnJlbnQga2V5LCBpZiBhbnksIGlzIHJldHVybmVkIGJ5IGEgbGF0 ZXIgaXRlcmF0aW9uLgorCQkgKi8KKwkJaWYgKHNjYW4tPnhzX2hvdF9pbmRleGVkX3N0YWxl KQorCQkJY29udGludWU7CisKIAkJLyoKIAkJICogQXZvaWQgZXhwZW5zaXZlIGVxdWFsaXR5 IGNoZWNrIGlmIHRoZSBpbmRleCBpcyBwcmltYXJ5IGtleSBvcgogCQkgKiByZXBsaWNhIGlk ZW50aXR5IGluZGV4LgpAQCAtNjc4LDYgKzY5MCwxMCBAQCBSZWxhdGlvbkZpbmREZWxldGVk VHVwbGVJbmZvQnlJbmRleChSZWxhdGlvbiByZWwsIE9pZCBpZHhvaWQsCiAJLyogVHJ5IHRv IGZpbmQgdGhlIHR1cGxlICovCiAJd2hpbGUgKGluZGV4X2dldG5leHRfc2xvdChzY2FuLCBG b3J3YXJkU2NhbkRpcmVjdGlvbiwgc2NhbnNsb3QpKQogCXsKKwkJLyogU2tpcCBzdGFsZSBI T1QtaW5kZXhlZCBsZWF2ZXMgKHNlZSBSZWxhdGlvbkZpbmRSZXBsVHVwbGVCeUluZGV4KS4g Ki8KKwkJaWYgKHNjYW4tPnhzX2hvdF9pbmRleGVkX3N0YWxlKQorCQkJY29udGludWU7CisK IAkJLyoKIAkJICogQXZvaWQgZXhwZW5zaXZlIGVxdWFsaXR5IGNoZWNrIGlmIHRoZSBpbmRl eCBpcyBwcmltYXJ5IGtleSBvcgogCQkgKiByZXBsaWNhIGlkZW50aXR5IGluZGV4LgpAQCAt OTExLDcgKzkyNyw3IEBAIEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZShSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogCWJvb2wJCXNraXBfdHVwbGUgPSBmYWxzZTsKIAlSZWxhdGlv bglyZWwgPSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2M7CiAJSXRlbVBvaW50ZXIg dGlkID0gJihzZWFyY2hzbG90LT50dHNfdGlkKTsKLQlCaXRtYXBzZXQgICptb2RpZmllZF9p ZHhfYXR0cnM7CisJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4X2F0dHJzID0gTlVMTDsKIAog CS8qCiAJICogV2Ugc3VwcG9ydCBvbmx5IG5vbi1zeXN0ZW0gdGFibGVzLCB3aXRoCkBAIC05 MzQsNyArOTUwLDYgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm8sCiAJaWYgKCFza2lwX3R1cGxlKQogCXsKIAkJTGlzdAkgICAqcmVj aGVja0luZGV4ZXMgPSBOSUw7Ci0JCVRVX1VwZGF0ZUluZGV4ZXMgdXBkYXRlX2luZGV4ZXM7 CiAJCUxpc3QJICAgKmNvbmZsaWN0aW5kZXhlczsKIAkJYm9vbAkJY29uZmxpY3QgPSBmYWxz ZTsKIApAQCAtOTUzLDI3ICs5NjgsMzQgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4 ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKHJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCQkJCQkJ CXNlYXJjaHNsb3QsIHNsb3QpOwogCisJCUFzc2VydCghYm1zX2lzX21lbWJlcihUYWJsZVR1 cGxlVXBkYXRlQWxsSW5kZXhlcywgbW9kaWZpZWRfaWR4X2F0dHJzKSk7CiAJCXNpbXBsZV90 YWJsZV90dXBsZV91cGRhdGUocmVsLCB0aWQsIHNsb3QsIGVzdGF0ZS0+ZXNfc25hcHNob3Qs Ci0JCQkJCQkJCSAgbW9kaWZpZWRfaWR4X2F0dHJzLCAmdXBkYXRlX2luZGV4ZXMpOwotCQli bXNfZnJlZShtb2RpZmllZF9pZHhfYXR0cnMpOwotCisJCQkJCQkJCSAgJm1vZGlmaWVkX2lk eF9hdHRycyk7CiAKIAkJY29uZmxpY3RpbmRleGVzID0gcmVzdWx0UmVsSW5mby0+cmlfb25D b25mbGljdEFyYml0ZXJJbmRleGVzOwogCi0JCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1J bmRpY2VzID4gMCAmJiAodXBkYXRlX2luZGV4ZXMgIT0gVFVfTm9uZSkpCisJCWlmIChyZXN1 bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4gMCAmJgorCQkJIWJtc19pc19lbXB0eShtb2Rp ZmllZF9pZHhfYXR0cnMpKQogCQl7CisJCQlib29sCQlhbGxfaW5kZXhlcyA9CisJCQkJYm1z X2lzX21lbWJlcihUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhlcywgbW9kaWZpZWRfaWR4X2F0 dHJzKTsKIAkJCXVpbnQzMgkJZmxhZ3MgPSBFSUlUX0lTX1VQREFURTsKIAogCQkJaWYgKGNv bmZsaWN0aW5kZXhlcyAhPSBOSUwpCiAJCQkJZmxhZ3MgfD0gRUlJVF9OT19EVVBFX0VSUk9S OwotCQkJaWYgKHVwZGF0ZV9pbmRleGVzID09IFRVX1N1bW1hcml6aW5nKQotCQkJCWZsYWdz IHw9IEVJSVRfT05MWV9TVU1NQVJJWklORzsKKwkJCWlmICghYWxsX2luZGV4ZXMpCisJCQkJ ZmxhZ3MgfD0gRUlJVF9JU19IT1RfSU5ERVhFRDsKKworCQkJRXhlY1NldEluZGV4VW5jaGFu Z2VkKHJlc3VsdFJlbEluZm8sIG1vZGlmaWVkX2lkeF9hdHRycyk7CisKIAkJCXJlY2hlY2tJ bmRleGVzID0gRXhlY0luc2VydEluZGV4VHVwbGVzKHJlc3VsdFJlbEluZm8sCiAJCQkJCQkJ CQkJCQkgICBlc3RhdGUsIGZsYWdzLAogCQkJCQkJCQkJCQkJICAgc2xvdCwgY29uZmxpY3Rp bmRleGVzLAogCQkJCQkJCQkJCQkJICAgJmNvbmZsaWN0KTsKIAkJfQogCisJCWJtc19mcmVl KG1vZGlmaWVkX2lkeF9hdHRycyk7CisKIAkJLyoKIAkJICogUmVmZXIgdG8gdGhlIGNvbW1l bnRzIGFib3ZlIHRoZSBjYWxsIHRvIENoZWNrQW5kUmVwb3J0Q29uZmxpY3QoKSBpbgogCQkg KiBFeGVjU2ltcGxlUmVsYXRpb25JbnNlcnQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBjaGVj ayBpcyBkb25lIGF0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4u YwppbmRleCBkNTIwMTJlOGE2OS4uZmQwMjQ3ZWJhMzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg InBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJh Y2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbHNjYW4uaCIKICNpbmNsdWRl ICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy90dXBkZXNjLmgiCkBAIC0x MDQsNiArMTA1LDcgQEAgSW5kZXhPbmx5TmV4dChJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUp CiAKIAkJLyogU2V0IGl0IHVwIGZvciBpbmRleC1vbmx5IHNjYW4gKi8KIAkJbm9kZS0+aW9z c19TY2FuRGVzYy0+eHNfd2FudF9pdHVwID0gdHJ1ZTsKKwkJbm9kZS0+aW9zc19TY2FuRGVz Yy0+eHNfaW5kZXhfb25seSA9IHRydWU7CiAJCW5vZGUtPmlvc3NfVk1CdWZmZXIgPSBJbnZh bGlkQnVmZmVyOwogCiAJCS8qCkBAIC0xNzIsNiArMTc0LDI1IEBAIEluZGV4T25seU5leHQo SW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCQkJaWYgKCFpbmRleF9mZXRjaF9oZWFwKHNj YW5kZXNjLCBub2RlLT5pb3NzX1RhYmxlU2xvdCkpCiAJCQkJY29udGludWU7CQkvKiBubyB2 aXNpYmxlIHR1cGxlLCB0cnkgbmV4dCBpbmRleCBlbnRyeSAqLwogCisJCQkvKgorCQkJICog SE9ULWluZGV4ZWQgc3RhbGUgZW50cnk6IGlmIHRoZSBjaGFpbiB3YWxrIHRvIHJlYWNoIHRo aXMgdHVwbGUKKwkJCSAqIGNyb3NzZWQgYSBob3QtaW5kZXhlZCBob3AgdGhhdCBjaGFuZ2Vk IGFuIGF0dHJpYnV0ZSB0aGlzIGluZGV4CisJCQkgKiBjb3ZlcnMsIHRoZSBsZWFmIHdlIGFy cml2ZWQgdGhyb3VnaCBpcyBzdGFsZS4gIEZvciBJT1Mgd2Ugc2VydmUKKwkJCSAqIHZhbHVl cyBvdXQgb2YgeHNfaXR1cCwgc28gYSBzdGFsZSBsZWFmIHdvdWxkIHN1cmZhY2UgdGhlIHdy b25nCisJCQkgKiB2YWx1ZXM7IGRyb3AgaXQuICBUaGUgZnJlc2ggZW50cnkgZm9yIHRoZSBu ZXcgdmFsdWUgcmV0dXJucyB0aGUKKwkJCSAqIHJvdyB3aXRoIGNvcnJlY3QgdmFsdWVzIHZp YSBpdHMgb3duIHBhdGguICBQcnVuZSBrZWVwcyBhbnkgcGFnZQorCQkJICogdGhhdCBjYW4g Y2Fycnkgc3VjaCBhIHN0YWxlIGxlYWYgLS0gb25lIHdpdGggYSByZWRpcmVjdCB0byBhCisJ CQkgKiBsaXZlIEhFQVBfSU5ERVhFRF9VUERBVEVEIHR1cGxlIC0tIG91dCBvZiB0aGUgdmlz aWJpbGl0eSBtYXAKKwkJCSAqIChzZWUgaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QpLCBz byBhbiBpbmRleC1vbmx5IHNjYW4gYWx3YXlzCisJCQkgKiByZWFjaGVzIHRoaXMgaGVhcCBm ZXRjaCB3aGVuIHN0YWxlbmVzcyBjb3VsZCBhcHBseS4KKwkJCSAqLworCQkJaWYgKHNjYW5k ZXNjLT54c19ob3RfaW5kZXhlZF9zdGFsZSkKKwkJCXsKKwkJCQlJbnN0ckNvdW50RmlsdGVy ZWQyKG5vZGUsIDEpOworCQkJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmlvc3NfVGFibGVTbG90 KTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwogCQkJRXhlY0NsZWFyVHVwbGUobm9kZS0+aW9z c19UYWJsZVNsb3QpOwogCiAJCQkvKgpAQCAtMjI5LDYgKzI1MCwxNiBAQCBJbmRleE9ubHlO ZXh0KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJCX0KIAkJfQogCisJCS8qCisJCSAq IE5vIEhPVC1pbmRleGVkIHN0YWxlbmVzcyBjaGVjayBpcyBuZWVkZWQgb24gdGhlIFZNLWFs bC12aXNpYmxlIHBhdGgKKwkJICogKHdoZXJlIHdlIHNraXBwZWQgdGhlIGhlYXAgZmV0Y2gp LiAgUHJ1bmUga2VlcHMgYW55IHBhZ2UgdGhhdCBjb3VsZAorCQkgKiBjYXJyeSBhIHN0YWxl IGxlYWYgLS0gb25lIHdpdGggYSByZWRpcmVjdCB0byBhIGxpdmUKKwkJICogSEVBUF9JTkRF WEVEX1VQREFURUQgdHVwbGUgLS0gb3V0IG9mIHRoZSB2aXNpYmlsaXR5IG1hcCwgc28gYW4K KwkJICogYWxsLXZpc2libGUgZW50cnkgbmV2ZXIgY3Jvc3NlZCBhIEhPVC9TSVUgaG9wLiAg KGluZGV4X2dldG5leHRfdGlkCisJCSAqIGFsc28gcmVzZXRzIHhzX2hvdF9pbmRleGVkX3N0 YWxlIHBlciBlbnRyeSwgYW5kIG9ubHkgdGhlIGhlYXAgZmV0Y2gKKwkJICogaW4gaW5kZXhf ZmV0Y2hfaGVhcCBldmVyIHNldHMgaXQsIHNvIGl0IGNhbm5vdCBiZSBzZXQgaGVyZSBhbnl3 YXkuKQorCQkgKi8KKwogCQkvKgogCQkgKiBXZSBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCBy ZWNoZWNraW5nIE9SREVSIEJZIGRpc3RhbmNlcy4gIChJbgogCQkgKiBwcmluY2lwbGUsIGlm IHRoZSBpbmRleCBjYW4gc3VwcG9ydCByZXRyaWV2YWwgb2YgdGhlIG9yaWdpbmFsbHkKQEAg LTc3NSw2ICs4MDYsNyBAQCBFeGVjSW5kZXhPbmx5U2NhbkluaXRpYWxpemVEU00oSW5kZXhP bmx5U2NhblN0YXRlICpub2RlLAogCQkJCQkJCQkgU2NhblJlbElzUmVhZE9ubHkoJm5vZGUt PnNzKSA/CiAJCQkJCQkJCSBTT19ISU5UX1JFTF9SRUFEX09OTFkgOiBTT19OT05FKTsKIAlu b2RlLT5pb3NzX1NjYW5EZXNjLT54c193YW50X2l0dXAgPSB0cnVlOworCW5vZGUtPmlvc3Nf U2NhbkRlc2MtPnhzX2luZGV4X29ubHkgPSB0cnVlOwogCW5vZGUtPmlvc3NfVk1CdWZmZXIg PSBJbnZhbGlkQnVmZmVyOwogCiAJLyoKQEAgLTgyNSw2ICs4NTcsNyBAQCBFeGVjSW5kZXhP bmx5U2NhbkluaXRpYWxpemVXb3JrZXIoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlLAogCQkJ CQkJCQkgU2NhblJlbElzUmVhZE9ubHkoJm5vZGUtPnNzKSA/CiAJCQkJCQkJCSBTT19ISU5U X1JFTF9SRUFEX09OTFkgOiBTT19OT05FKTsKIAlub2RlLT5pb3NzX1NjYW5EZXNjLT54c193 YW50X2l0dXAgPSB0cnVlOworCW5vZGUtPmlvc3NfU2NhbkRlc2MtPnhzX2luZGV4X29ubHkg PSB0cnVlOwogCiAJLyoKIAkgKiBJZiBubyBydW4tdGltZSBrZXlzIHRvIGNhbGN1bGF0ZSBv ciB0aGV5IGFyZSByZWFkeSwgZ28gYWhlYWQgYW5kIHBhc3MKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleHNjYW4uYwppbmRleCAzOWY2NjkxZWUzNS4uMjMyOWE3MTcxMTggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKQEAgLTMyLDYgKzMyLDcgQEAKICNp bmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbHNjYW4uaCIK ICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXgu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhl Y3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCkBAIC0xNTEsNiAr MTUyLDIwIEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJCX0KIAkJfQog CisJCS8qCisJCSAqIEhPVC1pbmRleGVkIHN0YWxlIGVudHJ5OiB0aGUgY2hhaW4gd2Ugd2Fs a2VkIHRvIHJlYWNoIHRoaXMgdHVwbGUKKwkJICogY3Jvc3NlZCBhIGhvdC1pbmRleGVkIGhv cCB0aGF0IGNoYW5nZWQgYW4gYXR0cmlidXRlIHRoaXMgaW5kZXgKKwkJICogY292ZXJzLCBz byB0aGUgbGVhZiBlbnRyeSB3ZSBhcnJpdmVkIHRocm91Z2ggaXMgc3RhbGUuICBEcm9wIGl0 OworCQkgKiB0aGUgZnJlc2ggZW50cnkgaW5zZXJ0ZWQgZm9yIHRoZSBuZXcgdmFsdWUgcmV0 dXJucyB0aGUgcm93IHRocm91Z2gKKwkJICogaXRzIG93biBwYXRoLiAgU3RhbGVuZXNzIHdh cyBkZWNpZGVkIGJ5IHRoZSBoZWFwIEFNIHZpYSBwZXItaG9wCisJCSAqIG1vZGlmaWVkLWF0 dHJzIGJpdG1hcHMgKHNlZSBoZWFwX2hvdF9zZWFyY2hfYnVmZmVyKS4KKwkJICovCisJCWlm IChzY2FuZGVzYy0+eHNfaG90X2luZGV4ZWRfc3RhbGUpCisJCXsKKwkJCUluc3RyQ291bnRG aWx0ZXJlZDIobm9kZSwgMSk7CisJCQljb250aW51ZTsKKwkJfQorCiAJCXJldHVybiBzbG90 OwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRh YmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCAx ZTc5MzA3ZDMzYy4uMzI0M2JlMzNhOWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN b2RpZnlUYWJsZS5jCkBAIC0xMzAsNyArMTMwLDE0IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlm eVRhYmxlQ29udGV4dAogdHlwZWRlZiBzdHJ1Y3QgVXBkYXRlQ29udGV4dAogewogCWJvb2wJ CWNyb3NzUGFydFVwZGF0ZTsJLyogd2FzIGl0IGEgY3Jvc3MtcGFydGl0aW9uIHVwZGF0ZT8g Ki8KLQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUluZGV4ZXM7IC8qIFdoaWNoIGluZGV4IHVw ZGF0ZXMgYXJlIHJlcXVpcmVkPyAqLworCisJLyoKKwkgKiBTZXQgb2YgaW5kZXhlZCBhdHRy aWJ1dGVzIHRoZSBVUERBVEUgY2hhbmdlZCAoaW4vb3V0IGZvciB0aGUgdGFibGUgQU0ncwor CSAqIHVwZGF0ZSBjYWxsYmFjaykuICBQb3B1bGF0ZWQgYnkgRXhlY1VwZGF0ZUFjdCBhbmQg Y29uc3VtZWQgYnkKKwkgKiBFeGVjVXBkYXRlRXBpbG9ndWU7IHRoZSBBTSBhZGRzIHRoZSB3 aG9sZS1yb3cgYXR0cmlidXRlCisJICogKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzKSB3 aGVuIGV2ZXJ5IGluZGV4IG5lZWRzIGEgZnJlc2ggZW50cnkuCisJICovCisJQml0bWFwc2V0 ICAqbW9kaWZpZWRfYXR0cnM7CiAKIAkvKgogCSAqIExvY2sgbW9kZSB0byBhY3F1aXJlIG9u IHRoZSBsYXRlc3QgdHVwbGUgdmVyc2lvbiBiZWZvcmUgcGVyZm9ybWluZwpAQCAtMjM4LDI1 ICsyNDUsMjMgQEAgRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoUmVzdWx0UmVsSW5mbyAq cmVzdWx0UmVsSW5mbywKIAkJcmV0dXJuIE5VTEw7CiAKIAkvKgotCSAqIEdldCB0aGUgc2V0 IG9mIGFsbCBhdHRyaWJ1dGVzIGFjcm9zcyBhbGwgaW5kZXhlcyBmb3IgdGhpcyByZWxhdGlv biBmcm9tCi0JICogdGhlIHJlbGNhY2hlLCBpdCByZXR1cm5zIHVzIGEgY29weSBvZiB0aGUg Yml0bWFwIHNvIHdlIGNhbiBtb2RpZnkgaXQuCisJICogRGV0ZXJtaW5lIHdoaWNoIGluZGV4 ZWQgYXR0cmlidXRlcyBhY3R1YWxseSBjaGFuZ2VkIHZhbHVlIGJ5IGNvbXBhcmluZworCSAq IHRoZSBvbGQgYW5kIG5ldyB0dXBsZXMgYXR0cmlidXRlLWJ5LWF0dHJpYnV0ZSBvdmVyIHRo ZSByZWxhdGlvbidzIGZ1bGwKKwkgKiBpbmRleGVkLWF0dHJpYnV0ZSBzZXQuICBXZSBkZWxp YmVyYXRlbHkgZG8gTk9UIHRyeSB0byBuYXJyb3cgdGhlIHdvcmsKKwkgKiB1c2luZyB0aGUg U1FMIFVQREFURSdzIHRhcmdldCBsaXN0IChFeGVjR2V0QWxsVXBkYXRlZENvbHMpOiB0aGF0 IGxpc3QKKwkgKiBkb2VzIG5vdCBjYXB0dXJlIGluZGV4ZWQgY29sdW1ucyBtdXRhdGVkIG91 dHNpZGUgdGhlIFNFVCBjbGF1c2UsIHN1Y2gKKwkgKiBhcyBhIGNvbHVtbiByZXdyaXR0ZW4g YnkgYSBCRUZPUkUvSU5TVEVBRC1PRiB0cmlnZ2VyIHZpYQorCSAqIGhlYXBfbW9kaWZ5X3R1 cGxlIChzZWUgdHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXIoKSBpbiB0c2VhcmNoLnNxbCksIHRo ZQorCSAqIGltcGxpY2l0IHRlbXBvcmFsIHJhbmdlIGNvbHVtbiBvZiBhIEZPUiBQT1JUSU9O IE9GIHVwZGF0ZSwgb3IgdGhlCisJICogcHJlLWJ1aWx0IHR1cGxlcyBhcHBsaWVkIGJ5IFJF UEFDSyAoQ09OQ1VSUkVOVExZKSBhbmQgbG9naWNhbAorCSAqIHJlcGxpY2F0aW9uIHRocm91 Z2ggYSBzeW50aGV0aWMgUmVzdWx0UmVsSW5mby4gIENvbXBhcmluZyB0aGUgYWN0dWFsCisJ ICogdHVwbGUgdmFsdWVzIGlzIGFsd2F5cyBjb3JyZWN0LgogCSAqCi0JICogTm90ZTogV2Ug aW50ZW50aW9uYWxseSBzY2FuIGFsbCBpbmRleGVkIGNvbHVtbnMgd2hlbiBsb29raW5nIGZv cgotCSAqIGNoYW5nZXMgcmF0aGVyIHRoYW4gcmVkdWNlIHRoYXQgc2V0IGJ5IGludGVyc2Vj dGluZyBpdCB3aXRoCi0JICogRXhlY0dldEFsbFVwZGF0ZWRDb2xzKCkuICBEZXNpcHRlIHRo ZSBuYW1lIGl0IHByb3ZpZGVzIHRoZSBzZXQgb2YKLQkgKiB0YXJnZXRlZCBhdHRyaWJ1dGVz IGluIHRoZSBTUUwgdXNlZCBmb3IgdGhlIFVQREFURSBhbmQgYW55IHRyaWdnZXJzLAotCSAq IGJ1dCB0aGF0IGRvZXNuJ3QgaW5jbHVkZSBhbnkgYXR0cmlidXRlcyB1cGRhdGVkIHVzaW5n Ci0JICogaGVhcF9tb2RpZml5X3R1cGxlKCkuIFRoZXJlIGlzIG9uZSB0ZXN0IGluIHRzZWFy Y2guc3FsIHRoYXQgZG9lcyBqdXN0Ci0JICogdGhhdCwgbW9kaWZpZXMgYW4gaW5kZXhlZCBh dHRyaWJ1dGUgdGhhdCBpc24ndCBzcGVjaWZpZWQgaW4gdGhlIFNRTCBhbmQKLQkgKiBzbyBp c24ndCBwcmVzZW50IGluIHRoYXQgYml0bWFwc2V0LgorCSAqIFJlbGF0aW9uR2V0SW5kZXhB dHRyQml0bWFwIHJldHVybnMgYSBjb3B5IHdlIGFyZSBmcmVlIHRvIG11dGF0ZTsKKwkgKiBF eGVjQ29tcGFyZVNsb3RBdHRycyBkZWxldGVzIHRoZSBhdHRyaWJ1dGVzIHRoYXQgZGlkIG5v dCBjaGFuZ2UgYW5kCisJICogcmV0dXJucyB0aGUgc3Vydml2aW5nICJtb2RpZmllZCBpbmRl eGVkIGF0dHJpYnV0ZXMiIHNldC4KIAkgKi8KIAlhdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhB dHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKLQotCS8q Ci0JICogV2hlbiB0aGVyZSBhcmUgaW5kZXhlZCBhdHRyaWJ1dGVzIG1lbnRpb25lZCBpbiB0 aGUgVVBEQVRFIHRoZW4gd2UgbmVlZAotCSAqIHRvIGZpbmQgdGhlIHN1YnNldCB0aGF0IGNo YW5nZWQgdmFsdWUuICBUaGF0J3MgdGhlCi0JICogIm1vZGlmaWVkX2lkeF9hdHRycyIuCi0J ICovCiAJYXR0cnMgPSBFeGVjQ29tcGFyZVNsb3RBdHRycyhhdHRycywgdHVwZGVzYywgb2xk X3R0cywgbmV3X3R0cyk7CiAKIAlyZXR1cm4gYXR0cnM7CkBAIC0yNTEzLDggKzI1MTgsOCBA QCBFeGVjVXBkYXRlQWN0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywKIAlib29sCQlwYXJ0aXRpb25fY29uc3RyYWludF9mYWls ZWQ7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAotCS8qIFRoZSBzZXQgb2YgbW9kaWZpZWQgaW5k ZXhlZCBhdHRyaWJ1dGVzIHRoYXQgdHJpZ2dlciBuZXcgaW5kZXggZW50cmllcyAqLwotCUJp dG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRycyA9IE5VTEw7CisJLyogUmVzZXQgYW55IHN0 YXRlIGxlZnQgb3ZlciBmcm9tIGEgcHJldmlvdXMgY2FsbCAqLworCXVwZGF0ZUN4dC0+bW9k aWZpZWRfYXR0cnMgPSBOVUxMOwogCiAJdXBkYXRlQ3h0LT5jcm9zc1BhcnRVcGRhdGUgPSBm YWxzZTsKIApAQCAtMjYzOCw3ICsyNjQzLDggQEAgbHJlcGxhY2U6CiAJICogd2Ugd2lsbCBv dmVybG9vayBhdHRyaWJ1dGVzIGRpcmVjdGx5IG1vZGlmaWVkIGJ5IGhlYXBfbW9kaWZ5X3R1 cGxlKCkKIAkgKiB3aGljaCBhcmUgbm90IGtub3duIHRvIEV4ZWNHZXRVcGRhdGVkQ29scygp LgogCSAqLwotCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0 dHJzKHJlc3VsdFJlbEluZm8sIG9sZFNsb3QsIHNsb3QpOworCXVwZGF0ZUN4dC0+bW9kaWZp ZWRfYXR0cnMgPQorCQlFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhyZXN1bHRSZWxJbmZv LCBvbGRTbG90LCBzbG90KTsKIAogCS8qCiAJICogQ2FsbCBpbnRvIHRoZSB0YWJsZSBBTSB0 byB1cGRhdGUgdGhlIGhlYXAgdHVwbGUuCkBAIC0yNjQ5LDYgKzI2NTUsOCBAQCBscmVwbGFj ZToKIAkgKiBmb3IgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IHVwZGF0ZXMgaW4gdHJhbnNhY3Rp b24tc25hcHNob3QgbW9kZQogCSAqIHRyYW5zYWN0aW9ucy4KIAkgKi8KKwlBc3NlcnQoIWJt c19pc19tZW1iZXIoVGFibGVUdXBsZVVwZGF0ZUFsbEluZGV4ZXMsCisJCQkJCQkgIHVwZGF0 ZUN4dC0+bW9kaWZpZWRfYXR0cnMpKTsKIAlyZXN1bHQgPSB0YWJsZV90dXBsZV91cGRhdGUo cmVzdWx0UmVsYXRpb25EZXNjLCB0dXBsZWlkLCBzbG90LAogCQkJCQkJCQllc3RhdGUtPmVz X291dHB1dF9jaWQsCiAJCQkJCQkJCTAsCkBAIC0yNjU2LDggKzI2NjQsNyBAQCBscmVwbGFj ZToKIAkJCQkJCQkJZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJCQl0 cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCiAJCQkJCQkJCSZjb250ZXh0LT50bWZkLCAm dXBkYXRlQ3h0LT5sb2NrbW9kZSwKLQkJCQkJCQkJbW9kaWZpZWRfaWR4X2F0dHJzLAotCQkJ CQkJCQkmdXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzKTsKKwkJCQkJCQkJJnVwZGF0ZUN4dC0+ bW9kaWZpZWRfYXR0cnMpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI2NzgsMTQgKzI2 ODUsMjYgQEAgRXhlY1VwZGF0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4 dCwgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0LAogCUxpc3QJICAgKnJlY2hlY2tJbmRleGVz ID0gTklMOwogCiAJLyogaW5zZXJ0IGluZGV4IGVudHJpZXMgZm9yIHR1cGxlIGlmIG5lY2Vz c2FyeSAqLwotCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4gMCAmJiAodXBk YXRlQ3h0LT51cGRhdGVJbmRleGVzICE9IFRVX05vbmUpKQorCWlmIChyZXN1bHRSZWxJbmZv LT5yaV9OdW1JbmRpY2VzID4gMCAmJgorCQkhYm1zX2lzX2VtcHR5KHVwZGF0ZUN4dC0+bW9k aWZpZWRfYXR0cnMpKQogCXsKLQkJdWludDMyCQlmbGFncyA9IEVJSVRfSVNfVVBEQVRFOwor CQlib29sCQlhbGxfaW5kZXhlcyA9CisJCQlibXNfaXNfbWVtYmVyKFRhYmxlVHVwbGVVcGRh dGVBbGxJbmRleGVzLAorCQkJCQkJICB1cGRhdGVDeHQtPm1vZGlmaWVkX2F0dHJzKTsKKwor CQkvKgorCQkgKiBQb3B1bGF0ZSBwZXItaW5kZXggaWlfSW5kZXhVbmNoYW5nZWQgYmVmb3Jl IGluc2VydGluZy4gIFdoZW4gdGhlIEFNCisJCSAqIHN0b3JlZCBhbiBpbmRlcGVuZGVudCBu ZXcgdmVyc2lvbiAod2hvbGUtcm93IGF0dHJpYnV0ZSBwcmVzZW50KQorCQkgKiBldmVyeSBp bmRleCBuZWVkcyBhIGZyZXNoIGVudHJ5OyBmb3IgYSBIT1QgdXBkYXRlIG9ubHkgdGhvc2Ug d2hvc2UKKwkJICogYXR0cmlidXRlcyBvdmVybGFwIHRoZSBtb2RpZmllZCBzZXQgZG8uCisJ CSAqLworCQlFeGVjU2V0SW5kZXhVbmNoYW5nZWQocmVzdWx0UmVsSW5mbywgdXBkYXRlQ3h0 LT5tb2RpZmllZF9hdHRycyk7CiAKLQkJaWYgKHVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyA9 PSBUVV9TdW1tYXJpemluZykKLQkJCWZsYWdzIHw9IEVJSVRfT05MWV9TVU1NQVJJWklORzsK IAkJcmVjaGVja0luZGV4ZXMgPSBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMocmVzdWx0UmVsSW5m bywgY29udGV4dC0+ZXN0YXRlLAotCQkJCQkJCQkJCQkgICBmbGFncywgc2xvdCwgTklMLAor CQkJCQkJCQkJCQkgICBFSUlUX0lTX1VQREFURSB8CisJCQkJCQkJCQkJCSAgIChhbGxfaW5k ZXhlcyA/CisJCQkJCQkJCQkJCQkwIDogRUlJVF9JU19IT1RfSU5ERVhFRCksCisJCQkJCQkJ CQkJCSAgIHNsb3QsIE5JTCwKIAkJCQkJCQkJCQkJICAgTlVMTCk7CiAJfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVz L21ha2VmdW5jcy5jCmluZGV4IDQwYjA5OTU4YWMyLi5mMDUwYzA4OGQyOCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9k ZXMvbWFrZWZ1bmNzLmMKQEAgLTg0NSw4ICs4NDUsNiBAQCBtYWtlSW5kZXhJbmZvKGludCBu dW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Npb25z LAogCW4tPmlpX1VuaXF1ZSA9IHVuaXF1ZTsKIAluLT5paV9OdWxsc05vdERpc3RpbmN0ID0g bnVsbHNfbm90X2Rpc3RpbmN0OwogCW4tPmlpX1JlYWR5Rm9ySW5zZXJ0cyA9IGlzcmVhZHk7 Ci0Jbi0+aWlfQ2hlY2tlZFVuY2hhbmdlZCA9IGZhbHNlOwotCW4tPmlpX0luZGV4VW5jaGFu Z2VkID0gZmFsc2U7CiAJbi0+aWlfQ29uY3VycmVudCA9IGNvbmN1cnJlbnQ7CiAJbi0+aWlf U3VtbWFyaXppbmcgPSBzdW1tYXJpemluZzsKIAluLT5paV9XaXRob3V0T3ZlcmxhcHMgPSB3 aXRob3V0b3ZlcmxhcHM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3Rh dF9yZWxhdGlvbi5jCmluZGV4IDA0ZjJlYjIxZDBiLi44MDVlMzQ4OTk1NiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKQEAgLTM4NCwx MSArMzg0LDE3IEBAIHBnc3RhdF9jb3VudF9oZWFwX2luc2VydChSZWxhdGlvbiByZWwsIFBn U3RhdF9Db3VudGVyIG4pCiAKIC8qCiAgKiBjb3VudCBhIHR1cGxlIHVwZGF0ZQorICoKKyAq IGhvdCAgICAgIC0tIHRoZSB1cGRhdGUgd2FzIGEgaGVhcC1vbmx5IHR1cGxlIChjbGFzc2lj IEhPVCBvciBIT1QtaW5kZXhlZCkKKyAqIGhvdF9pbmRleGVkIC0tIHRoZSB1cGRhdGUgd2Fz IGEgSE9ULWluZGV4ZWQgdXBkYXRlLCBhIHN1YmNhc2Ugb2YKKyAqICAgICAgICAgICAgICAg IGhvdD10cnVlOyBob3RfaW5kZXhlZCBpbXBsaWVzIGhvdAorICogbmV3cGFnZSAgLS0gdGhl IG5ldyB0dXBsZSB3ZW50IHRvIGEgZGlmZmVyZW50IGJ1ZmZlciB0aGFuIHRoZSBvbGQgb25l CiAgKi8KIHZvaWQKLXBnc3RhdF9jb3VudF9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWwsIGJv b2wgaG90LCBib29sIG5ld3BhZ2UpCitwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUoUmVsYXRp b24gcmVsLCBib29sIGhvdCwgYm9vbCBob3RfaW5kZXhlZCwgYm9vbCBuZXdwYWdlKQogewog CUFzc2VydCghKGhvdCAmJiBuZXdwYWdlKSk7CisJQXNzZXJ0KCEoaG90X2luZGV4ZWQgJiYg IWhvdCkpOwogCiAJaWYgKHBnc3RhdF9zaG91bGRfY291bnRfcmVsYXRpb24ocmVsKSkKIAl7 CkBAIC0zOTgsMTEgKzQwNCwxNyBAQCBwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUoUmVsYXRp b24gcmVsLCBib29sIGhvdCwgYm9vbCBuZXdwYWdlKQogCQlwZ3N0YXRfaW5mby0+dHJhbnMt PnR1cGxlc191cGRhdGVkKys7CiAKIAkJLyoKLQkJICogdHVwbGVzX2hvdF91cGRhdGVkIGFu ZCB0dXBsZXNfbmV3cGFnZV91cGRhdGVkIGNvdW50ZXJzIGFyZQotCQkgKiBub250cmFuc2Fj dGlvbmFsLCBzbyBqdXN0IGFkdmFuY2UgdGhlbQorCQkgKiB0dXBsZXNfaG90X3VwZGF0ZWQs IHR1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkLCBhbmQKKwkJICogdHVwbGVzX25ld3BhZ2Vf dXBkYXRlZCBjb3VudGVycyBhcmUgbm9udHJhbnNhY3Rpb25hbCwgc28ganVzdAorCQkgKiBh ZHZhbmNlIHRoZW0uICB0dXBsZXNfc2l1IGlzIGNvdW50ZWQgaW4gKmFkZGl0aW9uKiB0byB0 dXBsZXNfaG90OgorCQkgKiBldmVyeSBob3QtaW5kZXhlZCB1cGRhdGUgaXMgYWxzbyBhIEhP VCB1cGRhdGUuCiAJCSAqLwogCQlpZiAoaG90KQorCQl7CiAJCQlwZ3N0YXRfaW5mby0+Y291 bnRzLnR1cGxlc19ob3RfdXBkYXRlZCsrOworCQkJaWYgKGhvdF9pbmRleGVkKQorCQkJCXBn c3RhdF9pbmZvLT5jb3VudHMudHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQrKzsKKwkJfQog CQllbHNlIGlmIChuZXdwYWdlKQogCQkJcGdzdGF0X2luZm8tPmNvdW50cy50dXBsZXNfbmV3 cGFnZV91cGRhdGVkKys7CiAJfQpAQCAtODU0LDcgKzg2NiwxMCBAQCBwZ3N0YXRfcmVsYXRp b25fZmx1c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0KQog CXRhYmVudHJ5LT50dXBsZXNfdXBkYXRlZCArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfdXBk YXRlZDsKIAl0YWJlbnRyeS0+dHVwbGVzX2RlbGV0ZWQgKz0gbHN0YXRzLT5jb3VudHMudHVw bGVzX2RlbGV0ZWQ7CiAJdGFiZW50cnktPnR1cGxlc19ob3RfdXBkYXRlZCArPSBsc3RhdHMt PmNvdW50cy50dXBsZXNfaG90X3VwZGF0ZWQ7CisJdGFiZW50cnktPnR1cGxlc19ob3RfaW5k ZXhlZF91cGRhdGVkICs9IGxzdGF0cy0+Y291bnRzLnR1cGxlc19ob3RfaW5kZXhlZF91cGRh dGVkOwogCXRhYmVudHJ5LT50dXBsZXNfbmV3cGFnZV91cGRhdGVkICs9IGxzdGF0cy0+Y291 bnRzLnR1cGxlc19uZXdwYWdlX3VwZGF0ZWQ7CisJdGFiZW50cnktPnR1cGxlc19ob3RfaW5k ZXhlZF91cGRfc2tpcHBlZCArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfaG90X2luZGV4ZWRf dXBkX3NraXBwZWQ7CisJdGFiZW50cnktPnR1cGxlc19ob3RfaW5kZXhlZF91cGRfbWF0Y2hl ZCArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQ7CiAK IAkvKgogCSAqIElmIHRhYmxlIHdhcyB0cnVuY2F0ZWQvZHJvcHBlZCwgZmlyc3QgcmVzZXQg dGhlIGxpdmUvZGVhZCBjb3VudGVycy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j CmluZGV4IDA1NWY3NTcxMDdmLi43ZDRkYjMyZmQzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jCkBAIC0xNTg2LDYgKzE1ODYsNyBAQCBSZWxhdGlvbkluaXRJbmRleEFj Y2Vzc0luZm8oUmVsYXRpb24gcmVsYXRpb24pCiAJICovCiAJcmVsYXRpb24tPnJkX2luZGV4 cHJzID0gTklMOwogCXJlbGF0aW9uLT5yZF9pbmRwcmVkID0gTklMOworCXJlbGF0aW9uLT5y ZF9pbmRhdHRyID0gTlVMTDsKIAlyZWxhdGlvbi0+cmRfZXhjbG9wcyA9IE5VTEw7CiAJcmVs YXRpb24tPnJkX2V4Y2xwcm9jcyA9IE5VTEw7CiAJcmVsYXRpb24tPnJkX2V4Y2xzdHJhdHMg PSBOVUxMOwpAQCAtMjQ4NCw2ICsyNDg1LDcgQEAgUmVsYXRpb25EZXN0cm95UmVsYXRpb24o UmVsYXRpb24gcmVsYXRpb24sIGJvb2wgcmVtZW1iZXJfdHVwZGVzYykKIAlibXNfZnJlZShy ZWxhdGlvbi0+cmRfaWRhdHRyKTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0 dHIpOwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0cik7CisJYm1zX2Zy ZWUocmVsYXRpb24tPnJkX2V4cHJpbmRleGF0dHIpOwogCWlmIChyZWxhdGlvbi0+cmRfcHVi ZGVzYykKIAkJcGZyZWUocmVsYXRpb24tPnJkX3B1YmRlc2MpOwogCWlmIChyZWxhdGlvbi0+ cmRfb3B0aW9ucykKQEAgLTUyNzUsNiArNTI3NywxMDggQEAgUmVsYXRpb25HZXRJbmRleFBy ZWRpY2F0ZShSZWxhdGlvbiByZWxhdGlvbikKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgor ICogUmVsYXRpb25HZXRJbmRleGVkQXR0cnMgLS0gcGFsbG9jJ2QgQml0bWFwc2V0IG9mIGhl YXAgYXR0cnMgdGhpcyBpbmRleAorICogcmVmZXJlbmNlcy4KKyAqCisgKiBJbmNsdWRlcyBh dHRyaWJ1dGVzIHVzZWQgYXMgc2ltcGxlIGtleSBjb2x1bW5zLCBJTkNMVURFIGNvbHVtbnMs IGluc2lkZQorICogZXhwcmVzc2lvbiBjb2x1bW5zLCBhbmQgaW5zaWRlIHRoZSBwYXJ0aWFs LWluZGV4IHByZWRpY2F0ZS4gIEF0dHJpYnV0ZQorICogbnVtYmVycyB1c2UgdGhlIEZpcnN0 TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIgb2Zmc2V0IGNvbnZlbnRpb24gc28KKyAq IHRoYXQgc3lzdGVtIGF0dHJpYnV0ZXMgYXJlIHJlcHJlc2VudGFibGUgYWxvbmdzaWRlIHVz ZXIgYXR0cmlidXRlcy4KKyAqCisgKiBUaGUgZnVuY3Rpb24gYnVpbGRzIHVwIHRoZSBiaXRt YXAgZnJvbToKKyAqICAgLSByZF9pbmRleC0+aW5ka2V5ICAgICAgICAgICAoa2V5cyArIElO Q0xVREUpCisgKiAgIC0gUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zIChwYXJzZWQgZXhw cmVzc2lvbiB0cmVlcywgYWxyZWFkeSBjYWNoZWQpCisgKiAgIC0gUmVsYXRpb25HZXRJbmRl eFByZWRpY2F0ZSAgIChwYXJzZWQgcHJlZGljYXRlIHRyZWUsIGFscmVhZHkgY2FjaGVkKQor ICogYW5kIGNhY2hlcyBhIGNvcHkgaW4gcmRfaW5kZXhlZGF0dHIsIHdoaWNoIGxpdmVzIGlu IHJkX2luZGV4Y3h0LgorICoKKyAqIFRoZSByZXR1cm5lZCBCaXRtYXBzZXQgaXMgYWxsb2Nh dGVkIGluIHRoZSBjYWxsZXIncyBjdXJyZW50IG1lbW9yeQorICogY29udGV4dDsgdGhlIGNh bGxlciBvd25zIGl0IGFuZCBtdXN0IGJtc19mcmVlIHdoZW4gZG9uZS4gIFdlIG5ldmVyIGhh bmQKKyAqIG91dCBhIGJvcnJvd2VkIHBvaW50ZXIgdG8gdGhlIGNhY2hlZCBjb3B5IGJlY2F1 c2UgcmVsY2FjaGUgaW52YWxpZGF0aW9uCisgKiBjYW4gcmVidWlsZCByZF9pbmRleGN4dCBp biBwbGFjZSBldmVuIHdoaWxlIGEgcmVmY291bnQgaXMgaGVsZC4KKyAqCisgKiBDYWxsZXIg bXVzdCBob2xkIGFuIG9wZW4gbG9jayBvbiB0aGUgaW5kZXggcmVsYXRpb24uCisgKi8KK0Jp dG1hcHNldCAqCitSZWxhdGlvbkdldEluZGV4ZWRBdHRycyhSZWxhdGlvbiBpbmRleFJlbCkK K3sKKwlCaXRtYXBzZXQgICphdHRycyA9IE5VTEw7CisJRm9ybV9wZ19pbmRleCBpbmRleFN0 cnVjdDsKKwlMaXN0CSAgICppbmRleHByczsKKwlMaXN0CSAgICppbmRwcmVkOworCU1lbW9y eUNvbnRleHQgb2xkY3h0OworCisJQXNzZXJ0KGluZGV4UmVsLT5yZF9yZWwtPnJlbGtpbmQg PT0gUkVMS0lORF9JTkRFWCB8fAorCQkgICBpbmRleFJlbC0+cmRfcmVsLT5yZWxraW5kID09 IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgpOworCisJLyogRmFzdCBwYXRoOiByZXR1cm4g YSBjb3B5IG9mIHRoZSBjYWNoZWQgYml0bWFwLiAqLworCWlmIChpbmRleFJlbC0+cmRfaW5k YXR0ciAhPSBOVUxMKQorCQlyZXR1cm4gYm1zX2NvcHkoaW5kZXhSZWwtPnJkX2luZGF0dHIp OworCisJaW5kZXhTdHJ1Y3QgPSBpbmRleFJlbC0+cmRfaW5kZXg7CisKKwkvKgorCSAqIER1 cmluZyB2ZXJ5IGVhcmx5IGJvb3RzdHJhcCByZF9pbmRleHR1cGxlIG1heSBub3QgYmUgcG9w dWxhdGVkIHlldC4gSW4KKwkgKiB0aGF0IGNhc2Ugd2UgZmFsbCBiYWNrIHRvIGp1c3QgdGhl IGtleSBjb2x1bW5zIHdpdGhvdXQgY2FjaGluZy4KKwkgKi8KKwlpZiAoaW5kZXhSZWwtPnJk X2luZGV4dHVwbGUgPT0gTlVMTCkKKwl7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgaW5kZXhT dHJ1Y3QtPmluZG5hdHRzOyBpKyspCisJCXsKKwkJCUF0dHJOdW1iZXIJYXR0cm51bSA9IGlu ZGV4U3RydWN0LT5pbmRrZXkudmFsdWVzW2ldOworCisJCQlpZiAoYXR0cm51bSAhPSAwKQor CQkJCWF0dHJzID0gYm1zX2FkZF9tZW1iZXIoYXR0cnMsCisJCQkJCQkJCQkgICBhdHRybnVt IC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCX0KKwkJcmV0dXJu IGF0dHJzOworCX0KKworCS8qCisJICogS2V5IGNvbHVtbnMgYW5kIElOQ0xVREUgKGNvdmVy aW5nKSBjb2x1bW5zLiAgSU5DTFVERSBjb2x1bW5zIG11c3QgYmUKKwkgKiBjb3VudGVkOiB0 aGVpciB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgaW5kZXggbGVhZiBhbmQgc2VydmVkIGJ5 CisJICogaW5kZXgtb25seSBzY2Fucywgc28gYW4gdXBkYXRlIHRoYXQgY2hhbmdlcyBhbiBJ TkNMVURFIGNvbHVtbiBtdXN0CisJICogaW5zZXJ0IGEgZnJlc2ggaW5kZXggZW50cnkgKG9y IGJlIGRpc3F1YWxpZmllZCBmcm9tIHN0YXlpbmcKKwkgKiBIT1QtaW5kZXhlZCkgZXhhY3Rs eSBhcyBmb3IgYSBrZXkgY29sdW1uLiAgVGhpcyBtYXRjaGVzIHRoZSBoZWFwLWxldmVsCisJ ICogUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoLi4uLCBJTkRFWF9BVFRSX0JJVE1BUF9J TkRFWEVEKSwgd2hpY2ggYWxzbworCSAqIHVuaW9ucyBhbGwgaW5kbmF0dHMuICBFeHByZXNz aW9uIGFuZCBwYXJ0aWFsLXByZWRpY2F0ZSBjb2x1bW5zIGFyZQorCSAqIGFkZGVkIGJlbG93 LgorCSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgaW5kZXhTdHJ1Y3QtPmluZG5hdHRzOyBp KyspCisJeworCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBpbmRleFN0cnVjdC0+aW5ka2V5LnZh bHVlc1tpXTsKKworCQkvKiBhdHRudW0gMCBtZWFucyAiZXhwcmVzc2lvbiI7IHRob3NlIGF0 dHJzIGFyZSBwaWNrZWQgdXAgYmVsb3cuICovCisJCWlmIChhdHRybnVtICE9IDApCisJCQlh dHRycyA9IGJtc19hZGRfbWVtYmVyKGF0dHJzLAorCQkJCQkJCQkgICBhdHRybnVtIC0gRmly c3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJfQorCisJLyogRXhwcmVzc2lv biBjb2x1bW5zICh2aWEgYWxyZWFkeS1wYXJzZWQgdHJlZSwgcmV1c2luZyByZWxjYWNoZSku ICovCisJaW5kZXhwcnMgPSBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoaW5kZXhSZWwp OworCWlmIChpbmRleHBycyAhPSBOSUwpCisJCXB1bGxfdmFyYXR0bm9zKChOb2RlICopIGlu ZGV4cHJzLCAxLCAmYXR0cnMpOworCisJLyogUGFydGlhbC1pbmRleCBwcmVkaWNhdGUgY29s dW1ucy4gKi8KKwlpbmRwcmVkID0gUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShpbmRleFJl bCk7CisJaWYgKGluZHByZWQgIT0gTklMKQorCQlwdWxsX3ZhcmF0dG5vcygoTm9kZSAqKSBp bmRwcmVkLCAxLCAmYXR0cnMpOworCisJLyoKKwkgKiBDYWNoZSBhIGNvcHkgaW5zaWRlIHJk X2luZGV4Y3h0IHNvIHN1YnNlcXVlbnQgY2FsbHMgYXJlIGNoZWFwLiAgVGhlCisJICogY2Fj aGVkIGJpdG1hcCBpcyBmcmVlZCBhbG9uZyB3aXRoIHJkX2luZGV4Y3h0IG9uIHJlbGNhY2hl IHJlYnVpbGQsIHNvCisJICogaXQncyBzYWZlIHRvIHN0YXNoIGhlcmUuCisJICovCisJaWYg KGluZGV4UmVsLT5yZF9pbmRleGN4dCAhPSBOVUxMKQorCXsKKwkJb2xkY3h0ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKGluZGV4UmVsLT5yZF9pbmRleGN4dCk7CisJCWluZGV4UmVsLT5y ZF9pbmRhdHRyID0gYm1zX2NvcHkoYXR0cnMpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3h0KTsKKwl9CisKKwlyZXR1cm4gYXR0cnM7Cit9CisKIC8qCiAgKiBSZWxhdGlvbkdl dEluZGV4QXR0ckJpdG1hcCAtLSBnZXQgYSBiaXRtYXAgb2YgaW5kZXggYXR0cmlidXRlIG51 bWJlcnMKICAqCkBAIC01MzEzLDYgKzU0MTcsNyBAQCBCaXRtYXBzZXQgKgogUmVsYXRpb25H ZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtp bmQgYXR0cktpbmQpCiB7CiAJQml0bWFwc2V0ICAqdWluZGV4YXR0cnM7CS8qIGNvbHVtbnMg aW4gdW5pcXVlIGluZGV4ZXMgKi8KKwlCaXRtYXBzZXQgICpleHByaW5kZXhhdHRyczsgLyog Y29sdW1ucyByZWZlcmVuY2VkIGJ5IGV4cHJlc3Npb24gaW5kZXhlcyAqLwogCUJpdG1hcHNl dCAgKnBraW5kZXhhdHRyczsJLyogY29sdW1ucyBpbiB0aGUgcHJpbWFyeSBpbmRleCAqLwog CUJpdG1hcHNldCAgKmlkaW5kZXhhdHRyczsJLyogY29sdW1ucyBpbiB0aGUgcmVwbGljYSBp ZGVudGl0eSAqLwogCUJpdG1hcHNldCAgKmluZGV4ZWRhdHRyczsJLyogY29sdW1ucyByZWZl cmVuY2VkIGJ5IGluZGV4ZXMgKi8KQEAgLTUzMzksNiArNTQ0NCw4IEBAIFJlbGF0aW9uR2V0 SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5k IGF0dHJLaW5kKQogCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0 dHIpOwogCQkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEOgogCQkJCXJldHVy biBibXNfY29weShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOworCQkJY2FzZSBJTkRF WF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OOgorCQkJCXJldHVybiBibXNfY29weShyZWxhdGlv bi0+cmRfZXhwcmluZGV4YXR0cik7CiAJCQlkZWZhdWx0OgogCQkJCWVsb2coRVJST1IsICJ1 bmtub3duIGF0dHJLaW5kICV1IiwgYXR0cktpbmQpOwogCQl9CkBAIC01MzgzLDYgKzU0OTAs NyBAQCByZXN0YXJ0OgogCWlkaW5kZXhhdHRycyA9IE5VTEw7CiAJaW5kZXhlZGF0dHJzID0g TlVMTDsKIAlzdW1tYXJpemVkYXR0cnMgPSBOVUxMOworCWV4cHJpbmRleGF0dHJzID0gTlVM TDsKIAlmb3JlYWNoKGwsIGluZGV4b2lkbGlzdCkKIAl7CiAJCU9pZAkJCWluZGV4T2lkID0g bGZpcnN0X29pZChsKTsKQEAgLTU0ODcsNiArNTU5NSwyOCBAQCByZXN0YXJ0OgogCQkvKiBD b2xsZWN0IGFsbCBhdHRyaWJ1dGVzIGluIHRoZSBpbmRleCBwcmVkaWNhdGUsIHRvbyAqLwog CQlwdWxsX3ZhcmF0dG5vcyhpbmRleFByZWRpY2F0ZSwgMSwgYXR0cnMpOwogCisJCS8qCisJ CSAqIElmIHRoaXMgaW5kZXggZXZhbHVhdGVzIGFuIGV4cHJlc3Npb24sIHJlY29yZCBldmVy eSBoZWFwIGF0dHJpYnV0ZQorCQkgKiBpdCByZWZlcmVuY2VzIChrZXkgY29sdW1ucywgZXhw cmVzc2lvbiB2YXJzLCBwcmVkaWNhdGUgdmFycykgaW4KKwkJICogZXhwcmluZGV4YXR0cnMu ICBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKCkgZGlzcXVhbGlmaWVzIHRoZQorCQkgKiBIT1Qt aW5kZXhlZCBwYXRoIGZvciBhbiBVUERBVEUgdGhhdCB0b3VjaGVzIG9uZSBvZiB0aGVzZSwg YmVjYXVzZQorCQkgKiBleHByZXNzaW9uLWF3YXJlIHNlbGVjdGl2ZSBpbmRleCBtYWludGVu YW5jZSBpcyBub3QgaW1wbGVtZW50ZWQKKwkJICogeWV0LgorCQkgKi8KKwkJaWYgKGluZGV4 RXhwcmVzc2lvbnMgIT0gTlVMTCkKKwkJeworCQkJZm9yIChpID0gMDsgaSA8IGluZGV4RGVz Yy0+cmRfaW5kZXgtPmluZG5hdHRzOyBpKyspCisJCQl7CisJCQkJaW50CQkJYXR0cm51bSA9 IGluZGV4RGVzYy0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbaV07CisKKwkJCQlpZiAoYXR0 cm51bSAhPSAwKQorCQkJCQlleHByaW5kZXhhdHRycyA9IGJtc19hZGRfbWVtYmVyKGV4cHJp bmRleGF0dHJzLAorCQkJCQkJCQkJCQkJCWF0dHJudW0gLSBGaXJzdExvd0ludmFsaWRIZWFw QXR0cmlidXRlTnVtYmVyKTsKKwkJCX0KKwkJCXB1bGxfdmFyYXR0bm9zKGluZGV4RXhwcmVz c2lvbnMsIDEsICZleHByaW5kZXhhdHRycyk7CisJCQlwdWxsX3ZhcmF0dG5vcyhpbmRleFBy ZWRpY2F0ZSwgMSwgJmV4cHJpbmRleGF0dHJzKTsKKwkJfQorCiAJCWluZGV4X2Nsb3NlKGlu ZGV4RGVzYywgQWNjZXNzU2hhcmVMb2NrKTsKIAl9CiAKQEAgLTU1MTUsMTQgKzU2NDUsMjcg QEAgcmVzdGFydDoKIAkJYm1zX2ZyZWUoaWRpbmRleGF0dHJzKTsKIAkJYm1zX2ZyZWUoaW5k ZXhlZGF0dHJzKTsKIAkJYm1zX2ZyZWUoc3VtbWFyaXplZGF0dHJzKTsKKwkJYm1zX2ZyZWUo ZXhwcmluZGV4YXR0cnMpOwogCiAJCWdvdG8gcmVzdGFydDsKIAl9CiAKIAkvKgotCSAqIFJl Y29yZCB3aGF0IGF0dHJpYnV0ZXMgYXJlIG9ubHkgcmVmZXJlbmNlZCBieSBzdW1tYXJpemlu ZyBpbmRleGVzLiBUaGVuCi0JICogYWRkIHRoYXQgaW50byB0aGUgb3RoZXIgaW5kZXhlZCBh dHRyaWJ1dGVzIHRvIHRyYWNrIGFsbCByZWZlcmVuY2VkCi0JICogYXR0cmlidXRlcy4KKwkg KiBSZWNvcmQgd2hpY2ggYXR0cmlidXRlcyBhcmUgcmVmZXJlbmNlZCBvbmx5IGJ5IHN1bW1h cml6aW5nIGluZGV4ZXMsIHNvCisJICogSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCBy ZXBvcnRzIGNvbHVtbnMgd2hvc2Ugc29sZSBpbmRleGVzIGFyZQorCSAqIHN1bW1hcml6aW5n IG9uZXMsIHRoZW4gZm9sZCB0aG9zZSBjb2x1bW5zIGludG8gaW5kZXhlZGF0dHJzIGFzIHdl bGwuCisJICoKKwkgKiBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEIG11c3QgaW5jbHVkZSBz dW1tYXJpemluZy1pbmRleCBjb2x1bW5zIGZvcgorCSAqIHRoZSBIT1QtaW5kZXhlZCB3cml0 ZSBwYXRoOiBpdCBjb21wYXJlcyB0aGUgb2xkIGFuZCBuZXcgdHVwbGVzIG92ZXIKKwkgKiB0 aGlzIGJpdG1hcCB0byBidWlsZCB0aGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4ZWQgYXR0cmli dXRlcywgYW5kIG9ubHkKKwkgKiBtYWludGFpbnMgaW5kZXhlcyB3aGVuIHRoYXQgc2V0IGlz IG5vbi1lbXB0eSAob3IgdGhlIHVwZGF0ZSBpcworCSAqIG5vbi1IT1QpLiAgQSBjaGFuZ2Ug dG8gYSBjb2x1bW4gaW5kZXhlZCBvbmx5IGJ5IGEgc3VtbWFyaXppbmcgaW5kZXgKKwkgKiBt dXN0IHRoZXJlZm9yZSBhcHBlYXIgaW4gdGhlIGJpdG1hcCBzbyB0aGUgc3VtbWFyaXppbmcg aW5kZXggZ2V0cyBpdHMKKwkgKiBibG9jayBzdW1tYXJ5IHJlZnJlc2hlZC4gIEhlYXBVcGRh dGVIb3RBbGxvd2FibGUncyBhbGxfc3VtbWFyaXppbmcKKwkgKiBjaGVjayBzdGlsbCBrZWVw cyBzdWNoIGFuIHVwZGF0ZSBvbiB0aGUgY2xhc3NpYy1IT1QgcGF0aCAoaXQgc3RheXMKKwkg KiBjbGFzc2ljIEhPVCwgc2luY2UgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCAtLSBz dW1tYXJpemluZy1vbmx5IC0tCisJICogaXMgYSBzdXBlcnNldCBvZiB0aGUgbW9kaWZpZWQg YXR0cmlidXRlcyksIGFuZCB0aGUgc3VtbWFyaXppbmcgaW5kZXgKKwkgKiBpbnNlcnRzIHVu Y29uZGl0aW9uYWxseSB2aWEgaXRzIGlpX1N1bW1hcml6aW5nIGZsYWcuCiAJICovCiAJc3Vt bWFyaXplZGF0dHJzID0gYm1zX2RlbF9tZW1iZXJzKHN1bW1hcml6ZWRhdHRycywgaW5kZXhl ZGF0dHJzKTsKIAlpbmRleGVkYXR0cnMgPSBibXNfYWRkX21lbWJlcnMoaW5kZXhlZGF0dHJz LCBzdW1tYXJpemVkYXR0cnMpOwpAQCAtNTUzOSw2ICs1NjgyLDggQEAgcmVzdGFydDoKIAly ZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIgPSBOVUxMOwogCWJtc19mcmVlKHJlbGF0aW9uLT5y ZF9zdW1tYXJpemVkYXR0cik7CiAJcmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyID0gTlVM TDsKKwlibXNfZnJlZShyZWxhdGlvbi0+cmRfZXhwcmluZGV4YXR0cik7CisJcmVsYXRpb24t PnJkX2V4cHJpbmRleGF0dHIgPSBOVUxMOwogCiAJLyoKIAkgKiBOb3cgc2F2ZSBjb3BpZXMg b2YgdGhlIGJpdG1hcHMgaW4gdGhlIHJlbGNhY2hlIGVudHJ5LiAgV2UgaW50ZW50aW9uYWxs eQpAQCAtNTU1Myw2ICs1Njk4LDcgQEAgcmVzdGFydDoKIAlyZWxhdGlvbi0+cmRfaWRhdHRy ID0gYm1zX2NvcHkoaWRpbmRleGF0dHJzKTsKIAlyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIg PSBibXNfY29weShpbmRleGVkYXR0cnMpOwogCXJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0 ciA9IGJtc19jb3B5KHN1bW1hcml6ZWRhdHRycyk7CisJcmVsYXRpb24tPnJkX2V4cHJpbmRl eGF0dHIgPSBibXNfY29weShleHByaW5kZXhhdHRycyk7CiAJcmVsYXRpb24tPnJkX2F0dHJz dmFsaWQgPSB0cnVlOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCkBAIC01 NTY5LDYgKzU3MTUsNzIgQEAgcmVzdGFydDoKIAkJCXJldHVybiBpbmRleGVkYXR0cnM7CiAJ CWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRDoKIAkJCXJldHVybiBzdW1tYXJp emVkYXR0cnM7CisJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfRVhQUkVTU0lPTjoKKwkJCXJl dHVybiBleHByaW5kZXhhdHRyczsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmtu b3duIGF0dHJLaW5kICV1IiwgYXR0cktpbmQpOworCQkJcmV0dXJuIE5VTEw7CisJfQorfQor CisvKgorICogUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXBOb0NvcHkgLS0gYm9ycm93aW5n IHZhcmlhbnQgb2YKKyAqCQlSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcAorICoKKyAqIFJl dHVybnMgYSBwb2ludGVyIHRvIHRoZSByZWxjYWNoZS1vd25lZCBiaXRtYXAgZm9yIHRoZSBn aXZlbiBhdHRyS2luZAorICogd2l0aG91dCBtYWtpbmcgYSBkZWZlbnNpdmUgY29weS4gIFRo aXMgaXMgYSBob3QtcGF0aCBvcHRpbWl6YXRpb24gZm9yCisgKiByZWFkLW9ubHkgY2FsbGVy cyB0aGF0IHBlcmZvcm0gc2V0IG9wZXJhdGlvbnMgbGlrZSBibXNfb3ZlcmxhcCwKKyAqIGJt c19pc19zdWJzZXQsIGJtc19lcXVhbCwgb3IgYm1zX251bV9tZW1iZXJzIGFuZCBuZXZlciBt dXRhdGUgdGhlCisgKiByZXR1cm5lZCBiaXRtYXAuICBUaGUgcmVzdWx0IGlzIGNvbmNlcHR1 YWxseSBgY29uc3QgQml0bWFwc2V0ICpgOyBjYWxsZXJzCisgKiBtdXN0IG5vdCBwYXNzIGl0 IHRvIGFueXRoaW5nIHRoYXQgY291bGQgZnJlZSBvciBtb2RpZnkgdGhlIHVuZGVybHlpbmcK KyAqIG1lbW9yeSAoZS5nLiwgYm1zX2FkZF9tZW1iZXIsIGJtc19pbnRfbWVtYmVycywgYm1z X2ZyZWUpLgorICoKKyAqIExpZmV0aW1lOiB0aGUgcG9pbnRlciBpcyB2YWxpZCBvbmx5IHVu dGlsIHRoZSBuZXh0IGV2ZW50IHRoYXQgY291bGQKKyAqIHRyaWdnZXIgYSByZWxjYWNoZSBp bnZhbGlkYXRpb24gb24gYHJlbGF0aW9uYC4gIENhbGxlcnMgbXVzdCBub3QgaW52b2tlCisg KiBhbnkgY29kZSB0aGF0IG9wZW5zIGEgcmVsYXRpb24sIHJ1bnMgY2F0YWxvZyBsb29rdXBz LCBvciBvdGhlcndpc2UKKyAqIGFjY2VwdHMgaW52YWxpZGF0aW9uIG1lc3NhZ2VzIGJldHdl ZW4gdGhlIGZldGNoIGFuZCB0aGUgbGFzdCB1c2UuCisgKgorICogRm9yIHRoZSBjb21tb24g Y2FzZSB0aGUgcmVsY2FjaGUgZW50cnkncyBhdHRyaWJ1dGUgYml0bWFwcyBhcmUgYWxyZWFk eQorICogY29tcHV0ZWQgKHJkX2F0dHJzdmFsaWQgaXMgdHJ1ZSkuICBXaGVuIHRoZXkgYXJl bid0LCB3ZSBnbyB0aHJvdWdoCisgKiBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcCB0byBw b3B1bGF0ZSB0aGUgY2FjaGUgKHdoaWNoIGNvc3RzIG9uZQorICogdGhyb3dhd2F5IGJtc19j b3B5IG9uIGZpcnN0IHVzZSkgYW5kIHRoZW4gcmV0dXJuIHRoZSBjYWNoZWQgcG9pbnRlciBv bgorICogdGhlIHNlY29uZCBwYXNzLiAgVGhlIGZpcnN0LXVzZSBwYXRoIGlzIHJhcmUgYW5k IG5ldmVyIG9uIHRoZSBiZW5jaCBob3QKKyAqIHBhdGgsIHNvIHRoZSBzaW1wbGljaXR5IGlz IHByZWZlcnJlZCBvdmVyIG9wZW4tY29kaW5nIHRoZSBwb3B1bGF0ZS1vbmx5CisgKiB2YXJp YW50LgorICovCitjb25zdCBCaXRtYXBzZXQgKgorUmVsYXRpb25HZXRJbmRleEF0dHJCaXRt YXBOb0NvcHkoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktp bmQpCit7CisJaWYgKCFyZWxhdGlvbi0+cmRfYXR0cnN2YWxpZCkKKwl7CisJCUJpdG1hcHNl dCAgKnBvcHVsYXRlZDsKKworCQkvKiBQb3B1bGF0ZSByZF8qYXR0ciBmaWVsZHM7IGRpc2Nh cmQgdGhlIHJldHVybmVkIGNvcHkuICovCisJCXBvcHVsYXRlZCA9IFJlbGF0aW9uR2V0SW5k ZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBhdHRyS2luZCk7CisJCWJtc19mcmVlKHBvcHVsYXRl ZCk7CisKKwkJLyoKKwkJICogSWYgdGhlIHJlbGF0aW9uIGhhcyBubyBpbmRleGVzLCBSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcCByZXR1cm5zCisJCSAqIE5VTEwgd2l0aG91dCBzZXR0 aW5nIHJkX2F0dHJzdmFsaWQuICBNaXJyb3IgdGhhdCBoZXJlLgorCQkgKi8KKwkJaWYgKCFy ZWxhdGlvbi0+cmRfYXR0cnN2YWxpZCkKKwkJCXJldHVybiBOVUxMOworCX0KKworCXN3aXRj aCAoYXR0cktpbmQpCisJeworCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0tFWToKKwkJCXJl dHVybiByZWxhdGlvbi0+cmRfa2V5YXR0cjsKKwkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9Q UklNQVJZX0tFWToKKwkJCXJldHVybiByZWxhdGlvbi0+cmRfcGthdHRyOworCQljYXNlIElO REVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWToKKwkJCXJldHVybiByZWxhdGlvbi0+cmRf aWRhdHRyOworCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQ6CisJCQlyZXR1cm4g cmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyOworCQljYXNlIElOREVYX0FUVFJfQklUTUFQX1NV TU1BUklaRUQ6CisJCQlyZXR1cm4gcmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyOworCQlj YXNlIElOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT046CisJCQlyZXR1cm4gcmVsYXRpb24t PnJkX2V4cHJpbmRleGF0dHI7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5rbm93 biBhdHRyS2luZCAldSIsIGF0dHJLaW5kKTsKIAkJCXJldHVybiBOVUxMOwpAQCAtNjUwOCw2 ICs2NzIwLDcgQEAgbG9hZF9yZWxjYWNoZV9pbml0X2ZpbGUoYm9vbCBzaGFyZWQpCiAJCXJl bC0+cmRfcGFydGNoZWNrY3h0ID0gTlVMTDsKIAkJcmVsLT5yZF9pbmRleHBycyA9IE5JTDsK IAkJcmVsLT5yZF9pbmRwcmVkID0gTklMOworCQlyZWwtPnJkX2luZGF0dHIgPSBOVUxMOwog CQlyZWwtPnJkX2V4Y2xvcHMgPSBOVUxMOwogCQlyZWwtPnJkX2V4Y2xwcm9jcyA9IE5VTEw7 CiAJCXJlbC0+cmRfZXhjbHN0cmF0cyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvYW1hcGkuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbWFwaS5oCmluZGV4IDc5 MjQwMzMzNTMwLi43YWVjMDgzYjhlZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L2FtYXBpLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2FtYXBpLmgKQEAgLTE0LDYgKzE0 LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9jbXB0eXBlLmgiCiAjaW5jbHVkZSAiYWNjZXNz L2dlbmFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2l0dXAuaCIKICNpbmNsdWRlICJhY2Nlc3Mv c3RyYXRudW0uaCIKICNpbmNsdWRlICJub2Rlcy9ub2Rlcy5oIgogI2luY2x1ZGUgIm5vZGVz L3BnX2xpc3QuaCIKQEAgLTI5LDcgKzMwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhQYXRo IEluZGV4UGF0aDsKIC8qIExpa2V3aXNlLCB0aGlzIGZpbGUgc2hvdWxkbid0IGRlcGVuZCBv biBleGVjbm9kZXMuaC4gKi8KIHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbyBJbmRleEluZm87 CiAKLQogLyoKICAqIFByb3BlcnRpZXMgZm9yIGFtcHJvcGVydHkgQVBJLiAgVGhpcyBsaXN0 IGNvdmVycyBwcm9wZXJ0aWVzIGtub3duIHRvIHRoZQogICogY29yZSBjb2RlLCBidXQgYW4g aW5kZXggQU0gY2FuIGRlZmluZSBpdHMgb3duIHByb3BlcnRpZXMsIGJ5IG1hdGNoaW5nIHRo ZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDJkYmZhZDkyMTEzLi4xY2RmODkxMDU1YyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaApAQCAtMzg0LDExICszODQsNDUgQEAgZXh0ZXJuIFRNX1Jlc3Vs dCBoZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRh ICp0aWQsCiAJCQkJCQkJIGJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQpOwogZXh0 ZXJuIHZvaWQgaGVhcF9maW5pc2hfc3BlY3VsYXRpdmUoUmVsYXRpb24gcmVsYXRpb24sIGNv bnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKTsKIGV4dGVybiB2b2lkIGhlYXBfYWJvcnRfc3Bl Y3VsYXRpdmUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlk KTsKKworLyoKKyAqIEhlYXBVcGRhdGVJbmRleE1vZGUgLS0KKyAqCVRocmVlLXZhbHVlZCBj bGFzc2lmaWNhdGlvbiByZXR1cm5lZCBieSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKCkgdGhh dAorICoJdGVsbHMgaGVhcF91cGRhdGUoKSB3aGV0aGVyIGEgSE9UIHVwZGF0ZSBpcyBwZXJt aXR0ZWQgZm9yIHRoaXMgdHVwbGUgYW5kLAorICoJaWYgc28sIHdoZXRoZXIgdGhlIGluZGV4 ZXMgbWF5IGJlIG1haW50YWluZWQgc2VsZWN0aXZlbHkuCisgKgorICoJSEVBUF9VUERBVEVf QUxMX0lOREVYRVMKKyAqCQlIT1QgaXMgbm90IGFsbG93ZWQ7IHRoZSBuZXcgdHVwbGUgbXVz dCBnbyBvbiBpdHMgb3duIFRJRCBhbmQgZXZlcnkKKyAqCQlpbmRleCByZWNlaXZlcyBhIGZy ZXNoIGVudHJ5LiAgVGhpcyBpcyB0aGUgY2xhc3NpYyBwcmUtSE9ULWluZGV4ZWQKKyAqCQli ZWhhdmlvciBmb3IgdXBkYXRlcyB0aGF0IG1vZGlmeSBhIG5vbi1zdW1tYXJpemluZyBpbmRl eGVkIGF0dHJpYnV0ZS4KKyAqCisgKglIRUFQX0hFQVBfT05MWV9VUERBVEUKKyAqCQlDbGFz c2ljIEhPVCB1cGRhdGU6IG5vIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBj aGFuZ2VkIChvbmx5CisgKgkJc3VtbWFyaXppbmcgb25lcywgaWYgYW55KSwgc28gbm8gaW5k ZXggbmVlZHMgYSBuZXcgZW50cnkuCisgKgorICoJSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBE QVRFCisgKgkJSE9UIHdpdGggc2VsZWN0aXZlIGluZGV4IHVwZGF0ZTogYXQgbGVhc3Qgb25l IG5vbi1zdW1tYXJpemluZyBpbmRleCdzCisgKgkJYXR0cmlidXRlIGNoYW5nZWQsIGJ1dCB0 aGUgbmV3IHR1cGxlIGNhbiBzdGlsbCBqb2luIHRoZSBIT1QgY2hhaW4gb24KKyAqCQl0aGUg c2FtZSBwYWdlOyBvbmx5IHRoZSBpbmRleGVzIHdob3NlIGF0dHJpYnV0ZXMgY2hhbmdlZCBy ZWNlaXZlIGEgbmV3CisgKgkJZW50cnkuICBBcyBmb3IgY2xhc3NpYyBIT1QsIGhlYXBfdXBk YXRlKCkgc3RpbGwgZmFsbHMgYmFjayB0byBhCisgKgkJbm9uLUhPVCB1cGRhdGUgaWYgdGhl IG5ldyB0dXBsZSBkb2VzIG5vdCBmaXQgb24gdGhlIHBhZ2UuCisgKgorICoJQ2FsbGVycyBz aG91bGQgc3BlbGwgdGhlIGV4YWN0IG1vZGUgdGhleSBjYXJlIGFib3V0OyB0aGUgbnVtZXJp YyB2YWx1ZXMKKyAqCWFyZSBub3QgbWVhbmluZ2Z1bCBhcyBhbiBvcmRlcmluZy4KKyAqLwor dHlwZWRlZiBlbnVtIEhlYXBVcGRhdGVJbmRleE1vZGUKK3sKKwlIRUFQX1VQREFURV9BTExf SU5ERVhFUyA9IDAsCisJSEVBUF9IRUFQX09OTFlfVVBEQVRFID0gMSwKKwlIRUFQX1NFTEVD VElWRV9JTkRFWF9VUERBVEUgPSAyLAorfSBIZWFwVXBkYXRlSW5kZXhNb2RlOworCiBleHRl cm4gVE1fUmVzdWx0IGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVt UG9pbnRlckRhdGEgKm90aWQsCiAJCQkJCQkJIEhlYXBUdXBsZSBuZXd0dXAsIENvbW1hbmRJ ZCBjaWQsIHVpbnQzMiBvcHRpb25zLAogCQkJCQkJCSBTbmFwc2hvdCBjcm9zc2NoZWNrLCBi b29sIHdhaXQsCiAJCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBjb25zdCBMb2NrVHVw bGVNb2RlIGxvY2ttb2RlLAotCQkJCQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lk eF9hdHRycywgY29uc3QgYm9vbCBob3RfYWxsb3dlZCk7CisJCQkJCQkJIGNvbnN0IEJpdG1h cHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAorCQkJCQkJCSBIZWFwVXBkYXRlSW5kZXhNb2Rl IGhvdF9tb2RlKTsKIGV4dGVybiBUTV9SZXN1bHQgaGVhcF9sb2NrX3R1cGxlKFJlbGF0aW9u IHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwbGUsCiAJCQkJCQkJCSBDb21tYW5kSWQgY2lkLCBM b2NrVHVwbGVNb2RlIG1vZGUsIExvY2tXYWl0UG9saWN5IHdhaXRfcG9saWN5LAogCQkJCQkJ CQkgYm9vbCBmb2xsb3dfdXBkYXRlcywKQEAgLTQyMyw3ICs0NTcsNyBAQCBleHRlcm4gYm9v bCBoZWFwX3R1cGxlX25lZWRzX2V2ZW50dWFsX2ZyZWV6ZShIZWFwVHVwbGVIZWFkZXIgdHVw bGUpOwogZXh0ZXJuIHZvaWQgc2ltcGxlX2hlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9u LCBIZWFwVHVwbGUgdHVwKTsKIGV4dGVybiB2b2lkIHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxh dGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQpOwogZXh0ZXJuIHZv aWQgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKm90aWQsCi0JCQkJCQkJICAgSGVhcFR1cGxlIHR1cCwgVFVfVXBkYXRlSW5k ZXhlcyAqdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCSAgIEhlYXBUdXBsZSB0dXAsIGJvb2wg KnVwZGF0ZV9hbGxfaW5kZXhlcyk7CiAKIGV4dGVybiBUcmFuc2FjdGlvbklkIGhlYXBfaW5k ZXhfZGVsZXRlX3R1cGxlcyhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCSAgVE1fSW5kZXhE ZWxldGVPcCAqZGVsc3RhdGUpOwpAQCAtNDM0LDcgKzQ2OCwxMCBAQCBleHRlcm4gdm9pZCBo ZWFwYW1faW5kZXhfZmV0Y2hfcmVzZXQoSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2Nhbik7CiBl eHRlcm4gdm9pZCBoZWFwYW1faW5kZXhfZmV0Y2hfZW5kKEluZGV4RmV0Y2hUYWJsZURhdGEg KnNjYW4pOwogZXh0ZXJuIGJvb2wgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVtUG9pbnRl ciB0aWQsIFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkgICBCdWZmZXIgYnVmZmVyLCBT bmFwc2hvdCBzbmFwc2hvdCwgSGVhcFR1cGxlIGhlYXBUdXBsZSwKLQkJCQkJCQkJICAgYm9v bCAqYWxsX2RlYWQsIGJvb2wgZmlyc3RfY2FsbCk7CisJCQkJCQkJCSAgIGJvb2wgKmFsbF9k ZWFkLCBib29sIGZpcnN0X2NhbGwsCisJCQkJCQkJCSAgIGJvb2wgKmhvdF9pbmRleGVkX3Jl Y2hlY2ssCisJCQkJCQkJCSAgIHVpbnQ4ICpjcm9zc2VkX2JpdG1hcCwKKwkJCQkJCQkJICAg Ym9vbCAqcHJlZml4X2FsbF9kZWFkKTsKIGV4dGVybiBib29sIGhlYXBhbV9pbmRleF9mZXRj aF90dXBsZShzdHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiwKIAkJCQkJCQkJCSBJ dGVtUG9pbnRlciB0aWQsIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJIFR1cGxlVGFi bGVTbG90ICpzbG90LCBib29sICpoZWFwX2NvbnRpbnVlLApAQCAtNDY0LDggKzUwMSw5IEBA IGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkgIE9mZnNldE51bWJlciAqdW51c2VkLCBp bnQgbnVudXNlZCk7CiAKIC8qIGluIGhlYXAvaGVhcGFtLmMgKi8KLWV4dGVybiBib29sIEhl YXBVcGRhdGVIb3RBbGxvd2FibGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1hcHNl dCAqbW9kaWZpZWRfaWR4X2F0dHJzLAotCQkJCQkJCQkgICBib29sICpzdW1tYXJpemVkX29u bHkpOworCitleHRlcm4gSGVhcFVwZGF0ZUluZGV4TW9kZSBIZWFwVXBkYXRlSG90QWxsb3dh YmxlKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkJCQkJY29uc3QgQml0bWFwc2V0ICpt b2RpZmllZF9pZHhfYXR0cnMpOwogZXh0ZXJuIExvY2tUdXBsZU1vZGUgSGVhcFVwZGF0ZURl dGVybWluZUxvY2ttb2RlKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCQkJIGNvbnN0 IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3JlbHNjYW4uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgK aW5kZXggMmVhMDZhNjdhNjMuLmZlNDQ2OTE3OGFhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvcmVsc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgK QEAgLTEzNCw2ICsxMzQsNDUgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0 YQogCSAqIHBlcm1pdHRlZC4KIAkgKi8KIAl1aW50MzIJCWZsYWdzOworCisJLyoKKwkgKiBT aWRlIGNoYW5uZWwgZm9yIHRhYmxlIEFNcyB3aG9zZSB1cGRhdGUgY2hhaW5zIGNhbiByZWFj aCBhIGRpZmZlcmVudAorCSAqIHNldCBvZiBpbmRleC1rZXkgdmFsdWVzIHRoYW4gdGhlIGFy cml2aW5nIGluZGV4IGVudHJ5IHJlY29yZGVkIChoZWFwJ3MKKwkgKiBIT1Qtc2VsZWN0aXZl bHktdXBkYXRlZCBjaGFpbnMpLiAgU2V0IHRydWUgYnkgdGhlIHRhYmxlIEFNIHdoZW4gdGhl CisJICogd2FsayB0byB0aGUgbGl2ZSB0dXBsZSBjcm9zc2VkIGEgSE9UL1NJVSBob3AgYWZ0 ZXIgdGhlIGVudHJ5J3Mgb3duCisJICogdHVwbGUsIG1lYW5pbmcgdGhlIGFycml2aW5nIGVu dHJ5J3Mgc3RvcmVkIGtleSBtYXkgbm8gbG9uZ2VyIG1hdGNoIHRoZQorCSAqIGxpdmUgdHVw bGUgYW5kIHRoZSBpbmRleC1hY2Nlc3MgbGF5ZXIgbXVzdCByZWNoZWNrIGl0LiAgTGVmdCBm YWxzZSB3aGVuCisJICogbm8gc3VjaCBob3Agd2FzIGNyb3NzZWQgKHRoZSBlbnRyeSBpcyBk ZWZpbml0ZWx5IGN1cnJlbnQpLCBhbmQgYWx3YXlzCisJICogZmFsc2UgZm9yIEFNcyB3aXRo b3V0IHN1Y2ggY2hhaW5zLgorCSAqLworCWJvb2wJCXhzX2hvdF9pbmRleGVkX3JlY2hlY2s7 CisKKwkvKgorCSAqIENvbXBhbmlvbiB0byB4c19ob3RfaW5kZXhlZF9yZWNoZWNrLiAgeHNf aG90X2luZGV4ZWRfY3Jvc3NlZCBpcyB0aGUKKwkgKiB1bmlvbiBvZiB0aGUgcGVyLWhvcCBt b2RpZmllZC1hdHRycyBiaXRtYXBzIHRoZSB3YWxrIGNyb3NzZWQgYWZ0ZXIgdGhlCisJICog ZW50cnkncyBvd24gdHVwbGUsIG92ZXIgaGVhcCBhdHRyaWJ1dGUgbnVtYmVycyAoYml0IGF0 dG51bS0xIGZvciBhCisJICogMS1iYXNlZCBhdHRudW0pLiAgVGhlIGluZGV4LWFjY2VzcyBs YXllciB0ZXN0cyBpdCBhZ2FpbnN0IHRoZSBhcnJpdmluZworCSAqIGluZGV4J3Mga2V5IGNv bHVtbnMgdG8ganVkZ2Ugc3RhbGVuZXNzIHdpdGhvdXQgYSBrZXkgY29tcGFyaXNvbjogYW55 CisJICogb3ZlcmxhcCBtZWFucyBhIGNyb3NzZWQgaG9wIGNoYW5nZWQgb25lIG9mIHRoZSBp bmRleCdzIGlucHV0cywgc28gdGhlCisJICogZW50cnkgaXMgc3RhbGUuICBUaGUgdW5pb24g aXMgY29tcGxldGUgKGV2ZXJ5IGNyb3NzZWQgbGl2ZSBob3AgYW5kCisJICogY29sbGFwc2Ut c3Vydml2b3Igc3R1YiBjb250cmlidXRlcyBpdHMgYml0bWFwLCBhbmQgY29sbGFwc2Ugb25s eQorCSAqIHJlY2xhaW1zIG1lbWJlcnMgc3Vic3VtZWQgYnkgc3Vydml2aW5nIGhvcHMpLCBz byBkaXNqb2ludG5lc3MgcmVsaWFibHkKKwkgKiBtZWFucyBmcmVzaC4gIEl0IGlzIE5VTEwg Zm9yIEFNcyB3aXRob3V0IHN1Y2ggY2hhaW5zIGFuZCBpcyBzaXplZCBieQorCSAqIHRoZSB0 YWJsZSBBTSBmb3IgdGhlIGhlYXAgcmVsYXRpb24ncyBjb2x1bW4gY291bnQuCisJICovCisJ dWludDgJICAgKnhzX2hvdF9pbmRleGVkX2Nyb3NzZWQ7CisKKwkvKgorCSAqIFNldCBieSB0 aGUgdGFibGUgQU0gd2hlbiBpdCByZXR1cm5zIGEgdHVwbGU6IHRydWUgaWZmIGV2ZXJ5IGNo YWluCisJICogbWVtYmVyIHRoZSB3YWxrIHNraXBwZWQgYmVmb3JlIHJlYWNoaW5nIHRoZSBy ZXR1cm5lZCAodmlzaWJsZSkgdHVwbGUgaXMKKwkgKiBkZWFkIHRvIGFsbCB0cmFuc2FjdGlv bnMgKGJlbG93IHRoZSBnbG9iYWwgeG1pbiBob3Jpem9uKS4gIENvbWJpbmVkCisJICogd2l0 aCBhIHN0YWxlIHZlcmRpY3QgKHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgb3Zlcmxh cHBlZCB0aGUKKwkgKiBpbmRleCdzIGtleSBjb2x1bW5zKSwgdGhpcyBsZXRzIHRoZSBpbmRl eC1hY2Nlc3MgbGF5ZXIKKwkgKiBraWxsIHRoZSBhcnJpdmluZyBsZWFmOiBubyBzbmFwc2hv dCBjYW4gcmVhY2ggYSBtYXRjaGluZyB2ZXJzaW9uCisJICogdGhyb3VnaCBpdCwgc28gaXQg aXMgcmVkdW5kYW50LiAgQU1zIHdpdGhvdXQgc3VjaCBjaGFpbnMgbGVhdmUgaXQKKwkgKiBm YWxzZS4KKwkgKi8KKwlib29sCQl4c19wcmVmaXhfYWxsX2RlYWQ7CiB9IEluZGV4RmV0Y2hU YWJsZURhdGE7CiAKIHN0cnVjdCBJbmRleFNjYW5JbnN0cnVtZW50YXRpb247CkBAIC0xNTQs NiArMTkzLDEzIEBAIHR5cGVkZWYgc3RydWN0IEluZGV4U2NhbkRlc2NEYXRhCiAJc3RydWN0 IFNjYW5LZXlEYXRhICprZXlEYXRhOwkvKiBhcnJheSBvZiBpbmRleCBxdWFsaWZpZXIgZGVz Y3JpcHRvcnMgKi8KIAlzdHJ1Y3QgU2NhbktleURhdGEgKm9yZGVyQnlEYXRhOwkvKiBhcnJh eSBvZiBvcmRlcmluZyBvcCBkZXNjcmlwdG9ycyAqLwogCWJvb2wJCXhzX3dhbnRfaXR1cDsJ LyogY2FsbGVyIHJlcXVlc3RzIGluZGV4IHR1cGxlcyAqLworCWJvb2wJCXhzX2luZGV4X29u bHk7CS8qIGNhbGxlciBpcyBhbiBpbmRleC1vbmx5IHNjYW4gdGhhdCBtYXkKKwkJCQkJCQkJ ICogcmV0dXJuIHR1cGxlcyB3aXRob3V0IGZldGNoaW5nIHRoZSBoZWFwOworCQkJCQkJCQkg KiBBTXMgbXVzdCByZXRhaW4gbGVhZi1wYWdlIHBpbnMgZm9yIHN1Y2gKKwkJCQkJCQkJICog c2NhbnMgKFZNIGFsbC12aXNpYmxlIC8gVElELXJlY3ljbGUgcmFjZSksCisJCQkJCQkJCSAq IHdoZXJlYXMgYSBwbGFpbiBzY2FuIHRoYXQgc2V0cyB4c193YW50X2l0dXAKKwkJCQkJCQkJ ICogb25seSB0byBpbnNwZWN0IHRoZSBpbmRleCB0dXBsZSBzdGlsbAorCQkJCQkJCQkgKiBm ZXRjaGVzIHRoZSBoZWFwIGFuZCBtYXkgZHJvcCBwaW5zICovCiAJYm9vbAkJeHNfdGVtcF9z bmFwOwkvKiB1bnJlZ2lzdGVyIHNuYXBzaG90IGF0IHNjYW4gZW5kPyAqLwogCiAJLyogc2ln bmFsaW5nIHRvIGluZGV4IEFNIGFib3V0IGtpbGxpbmcgaW5kZXggdHVwbGVzICovCkBAIC0x ODksNiArMjM1LDIwIEBAIHR5cGVkZWYgc3RydWN0IEluZGV4U2NhbkRlc2NEYXRhCiAKIAli b29sCQl4c19yZWNoZWNrOwkJLyogVCBtZWFucyBzY2FuIGtleXMgbXVzdCBiZSByZWNoZWNr ZWQgKi8KIAorCS8qCisJICogVCBtZWFucyB0aGUgaW5kZXggZW50cnkgdGhhdCByZWFjaGVk IHhzX2hlYXB0aWQgaXMgc3RhbGU6IHRoZSBIT1QgY2hhaW4KKwkgKiB3YWxrZWQgdG8gcmVh Y2ggdGhlIHR1cGxlIGNyb3NzZWQgYSBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCAoSE9UL1NJ VSkKKwkgKiBob3AgdGhhdCBjaGFuZ2VkIGFuIGF0dHJpYnV0ZSB0aGlzIGluZGV4IGNvdmVy cywgc28gdGhlIGFycml2aW5nCisJICogZW50cnkncyBzdG9yZWQga2V5IG5vIGxvbmdlciBt YXRjaGVzIHRoZSBsaXZlIHR1cGxlLiAgVGhlIGV4ZWN1dG9yCisJICogZHJvcHMgc3VjaCBh IHR1cGxlOyB0aGUgcm93IGlzIHJlLXN1cHBsaWVkIGJ5IHRoZSBmcmVzaCBlbnRyeSBpbnNl cnRlZAorCSAqIGZvciB0aGUgbmV3IHZhbHVlLiAgVW5saWtlIHhzX3JlY2hlY2sgKHNldCBi eSBsb3NzeSBBTXMgc3VjaCBhcyBHaVNUCisJICogYW5kIEdJTiksIHRoaXMgaXMgY29tcHV0 ZWQgYnkgdGhlIGluZGV4LWFjY2VzcyBsYXllciBieSB0ZXN0aW5nIHRoZQorCSAqIGhlYXAg QU0ncyBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgKHhzX2hvdF9pbmRleGVkX2Nyb3NzZWQp IGFnYWluc3QKKwkgKiB0aGlzIGluZGV4J3Mga2V5IGNvbHVtbnM6IGFueSBvdmVybGFwIG1l YW5zIGEgY3Jvc3NlZCBob3AgY2hhbmdlZCBvbmUKKwkgKiBvZiB0aGUgaW5kZXgncyBpbnB1 dHMsIHNvIHRoZSBlbnRyeSBpcyBzdGFsZS4KKwkgKi8KKwlib29sCQl4c19ob3RfaW5kZXhl ZF9zdGFsZTsKKwogCS8qCiAJICogV2hlbiBmZXRjaGluZyB3aXRoIGFuIG9yZGVyaW5nIG9w ZXJhdG9yLCB0aGUgdmFsdWVzIG9mIHRoZSBPUkRFUiBCWQogCSAqIGV4cHJlc3Npb25zIG9m IHRoZSBsYXN0IHJldHVybmVkIHR1cGxlLCBhY2NvcmRpbmcgdG8gdGhlIGluZGV4LiAgSWYK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IGE5Nzc4YjM1MjhkLi5lN2JkOWYzZTZmYyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpbmNsdWRlICJhY2Nl c3MvcmVsc2Nhbi5oIgogI2luY2x1ZGUgImFjY2Vzcy9zZGlyLmgiCisjaW5jbHVkZSAiYWNj ZXNzL3N5c2F0dHIuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImV4 ZWN1dG9yL3R1cHRhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9yZWFkX3N0cmVhbS5oIgpA QCAtMjgsNiArMjksMTggQEAKIAogI2RlZmluZSBERUZBVUxUX1RBQkxFX0FDQ0VTU19NRVRI T0QJImhlYXAiCiAKKy8qCisgKiBXaG9sZS1yb3cgc2VudGluZWwgZm9yIHRoZSBpbi9vdXQg bW9kaWZpZWQtYXR0cmlidXRlcyBzZXQgb2YKKyAqIHRhYmxlX3R1cGxlX3VwZGF0ZSgpLiAg T24gaW5wdXQgdGhlIGNhbGxlciBzdXBwbGllcyB0aGUgaW5kZXhlZCBhdHRyaWJ1dGVzCisg KiB3aG9zZSB2YWx1ZXMgY2hhbmdlZC4gIEEgdGFibGUgQU0gdGhhdCBzdG9yZWQgdGhlIG5l dyB0dXBsZSBhcyBhbgorICogaW5kZXBlbmRlbnQgdmVyc2lvbiBub3QgcmVhY2hhYmxlIHRo cm91Z2ggdGhlIGV4aXN0aW5nIGluZGV4IGVudHJpZXMgKGZvcgorICogaGVhcCwgYSBub24t SE9UIHVwZGF0ZSkgYWRkcyB0aGlzIHdob2xlLXJvdyBhdHRyaWJ1dGUgKGF0dHJpYnV0ZSBu dW1iZXIgMCwKKyAqIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIgY29udmVu dGlvbikgb24gb3V0cHV0LCBzaWduYWxsaW5nIHRoYXQKKyAqIGV2ZXJ5IGluZGV4IG5lZWRz IGEgbmV3IGVudHJ5LiAgRGlmZmluZyByZWFsIGNvbHVtbnMgbmV2ZXIgeWllbGRzIGF0dHJp YnV0ZQorICogMCwgc28gaXQgaXMgdW5hbWJpZ3VvdXMgYXMgdGhpcyBzZW50aW5lbC4KKyAq LworI2RlZmluZSBUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhlcwkoMCAtIEZpcnN0TG93SW52 YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpCisKIC8qIEdVQ3MgKi8KIGV4dGVybiBQR0RMTElN UE9SVCBjaGFyICpkZWZhdWx0X3RhYmxlX2FjY2Vzc19tZXRob2Q7CiBleHRlcm4gUEdETExJ TVBPUlQgYm9vbCBzeW5jaHJvbml6ZV9zZXFzY2FuczsKQEAgLTEyNSwyMiArMTM4LDYgQEAg dHlwZWRlZiBlbnVtIFRNX1Jlc3VsdAogCVRNX1dvdWxkQmxvY2ssCiB9IFRNX1Jlc3VsdDsK IAotLyoKLSAqIFJlc3VsdCBjb2RlcyBmb3IgdGFibGVfdXBkYXRlKC4uLiwgdXBkYXRlX2lu ZGV4ZXMqLi4pLgotICogVXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggaW5kZXhlcyB0byB1cGRh dGUuCi0gKi8KLXR5cGVkZWYgZW51bSBUVV9VcGRhdGVJbmRleGVzCi17Ci0JLyogTm8gaW5k ZXhlZCBjb2x1bW5zIHdlcmUgdXBkYXRlZCAoaW5jbC4gVElEIGFkZHJlc3Npbmcgb2YgdHVw bGUpICovCi0JVFVfTm9uZSwKLQotCS8qIEEgbm9uLXN1bW1hcml6aW5nIGluZGV4ZWQgY29s dW1uIHdhcyB1cGRhdGVkLCBvciB0aGUgVElEIGhhcyBjaGFuZ2VkICovCi0JVFVfQWxsLAot Ci0JLyogT25seSBzdW1tYXJpemVkIGNvbHVtbnMgd2VyZSB1cGRhdGVkLCBUSUQgaXMgdW5j aGFuZ2VkICovCi0JVFVfU3VtbWFyaXppbmcsCi19IFRVX1VwZGF0ZUluZGV4ZXM7Ci0KIC8q CiAgKiBXaGVuIHRhYmxlX3R1cGxlX3VwZGF0ZSwgdGFibGVfdHVwbGVfZGVsZXRlLCBvciB0 YWJsZV90dXBsZV9sb2NrIGZhaWwKICAqIGJlY2F1c2UgdGhlIHRhcmdldCB0dXBsZSBpcyBh bHJlYWR5IG91dGRhdGVkLCB0aGV5IGZpbGwgaW4gdGhpcyBzdHJ1Y3QgdG8KQEAgLTQ4OCw2 ICs0ODUsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAkgKiBpbmRleF9m ZXRjaF90dXBsZSBpZmYgaXQgaXMgZ3VhcmFudGVlZCB0aGF0IG5vIGJhY2tlbmQgbmVlZHMg dG8gc2VlCiAJICogdGhhdCB0dXBsZS4gSW5kZXggQU1zIGNhbiB1c2UgdGhhdCB0byBhdm9p ZCByZXR1cm5pbmcgdGhhdCB0aWQgaW4KIAkgKiBmdXR1cmUgc2VhcmNoZXMuCisJICoKKwkg KiBJZiBhIHR1cGxlIGlzIHJldHVybmVkIGFuZCB0aGUgdGFibGUgQU0gcmVhY2hlZCBpdCBi eSB3YWxraW5nIGEgSE9UCisJICogY2hhaW4gdGhhdCBjcm9zc2VkIGEgSE9ULXNlbGVjdGl2 ZWx5LXVwZGF0ZWQgKEhPVC9TSVUpIGhvcCBhZnRlciB0aGUKKwkgKiBhcnJpdmluZyBlbnRy eSdzIG93biB0dXBsZSwgaXQgc2V0cyBzY2FuLT54c19ob3RfaW5kZXhlZF9yZWNoZWNrIChz ZWUKKwkgKiBzdHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0YSkgdG8gdGVsbCB0aGUgaW5kZXgt YWNjZXNzIGxheWVyIHRvIHJlY2hlY2sKKwkgKiB0aGUgYXJyaXZpbmcgbGVhZiBrZXkgYWdh aW5zdCB0aGUgbGl2ZSB0dXBsZS4gIEFNcyB3aXRob3V0IHN1Y2ggdXBkYXRlCisJICogY2hh aW5zIGxlYXZlIGl0IGZhbHNlLgogCSAqLwogCWJvb2wJCSgqaW5kZXhfZmV0Y2hfdHVwbGUp IChzdHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiwKIAkJCQkJCQkJCSAgSXRlbVBv aW50ZXIgdGlkLApAQCAtNTg2LDggKzU5MCw3IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1S b3V0aW5lCiAJCQkJCQkJCSBib29sIHdhaXQsCiAJCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAq dG1mZCwKIAkJCQkJCQkJIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJCQkJCQkgY29u c3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCi0JCQkJCQkJCSBUVV9VcGRhdGVJ bmRleGVzICp1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCSBCaXRtYXBzZXQgKiptb2RpZmll ZF9hdHRycyk7CiAKIAkvKiBzZWUgdGFibGVfdHVwbGVfbG9jaygpIGZvciByZWZlcmVuY2Ug YWJvdXQgcGFyYW1ldGVycyAqLwogCVRNX1Jlc3VsdAkoKnR1cGxlX2xvY2spIChSZWxhdGlv biByZWwsCkBAIC0xMzE5LDExICsxMzIyLDIwIEBAIHRhYmxlX2luZGV4X2ZldGNoX3R1cGxl KHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICpzY2FuLAogICogcmV0dXJucyB3aGV0aGVy IHRoZXJlIGFyZSB0YWJsZSB0dXBsZSBpdGVtcyBjb3JyZXNwb25kaW5nIHRvIGFuIGluZGV4 CiAgKiBlbnRyeS4gIFRoaXMgbGlrZWx5IGlzIG9ubHkgdXNlZnVsIHRvIHZlcmlmeSBpZiB0 aGVyZSdzIGEgY29uZmxpY3QgaW4gYQogICogdW5pcXVlIGluZGV4LgorICoKKyAqIElmIGtl ZXBfc2xvdCBpcyBub24tTlVMTCwgb24gYSBwb3NpdGl2ZSByZXN1bHQgdGhlIGZ1bmN0aW9u IHN0b3JlcyB0aGUKKyAqIGZldGNoZWQgdHVwbGUgaW50byAqa2VlcF9zbG90ICh3aGljaCBt dXN0IGJlIGEgdmFsaWQgc2xvdCBvZiB0aGUKKyAqIHJlbGF0aW9uJ3MgdHlwZSkgYW5kIHJl dHVybnMgd2l0aCB0aGUgc2xvdCBwb3B1bGF0ZWQ7IHRoZSBjYWxsZXIgaXMKKyAqIHJlc3Bv bnNpYmxlIGZvciBjbGVhcmluZyB0aGUgc2xvdC4gIFdoZW4ga2VlcF9zbG90IGlzIE5VTEwg YSB0ZW1wb3JhcnkKKyAqIHNsb3QgaXMgY3JlYXRlZCBpbnRlcm5hbGx5IGFuZCBkcm9wcGVk IGJlZm9yZSByZXR1cm4sIG1hdGNoaW5nIHRoZQorICogcHJlLWV4aXN0aW5nIGJlaGF2aW91 ci4KICAqLwogZXh0ZXJuIGJvb2wgdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2soUmVs YXRpb24gcmVsLAogCQkJCQkJCQkJCSAgSXRlbVBvaW50ZXIgdGlkLAogCQkJCQkJCQkJCSAg U25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkJCQkJICBib29sICphbGxfZGVhZCk7CisJCQkJ CQkJCQkJICBib29sICphbGxfZGVhZCwKKwkJCQkJCQkJCQkgIGJvb2wgKmhvdF9pbmRleGVk X3JlY2hlY2tfb3V0LAorCQkJCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKmtlZXBfc2xvdCk7 CiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNTc0LDEyICsxNTg2LDIwIEBAIHRh YmxlX3R1cGxlX2RlbGV0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIHRpZCwgQ29tbWFu ZElkIGNpZCwKICAqCQlUQUJMRV9VUERBVEVfTk9fTE9HSUNBTCAtLSBmb3JjZS1kaXNhYmxl cyB0aGUgZW1pdHRpbmcgb2YgbG9naWNhbAogICoJCWRlY29kaW5nIGluZm9ybWF0aW9uIGZv ciB0aGUgdHVwbGUuCiAgKgorICogSW4gcGFyYW1ldGVyczoKKyAqCW1vZGlmaWVkX2F0dHJz IC0gaW4vb3V0OyBvbiBpbnB1dCwgdGhlIHNldCBvZiBpbmRleGVkIGF0dHJpYnV0ZXMgd2hv c2UKKyAqCQl2YWx1ZXMgY2hhbmdlZCAoRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51 bWJlciBjb252ZW50aW9uKS4gIEEKKyAqCQl0YWJsZSBBTSBtYXkgdXNlIHRoaXMgdG8gY2hv b3NlIGJldHdlZW4gSE9UIGFuZCBub24tSE9UIHN0b3JhZ2Ugb2YgdGhlCisgKgkJbmV3IHR1 cGxlLiAgT24gb3V0cHV0IHRoZSBBTSBhZGRzIHRoZSB3aG9sZS1yb3cgYXR0cmlidXRlCisg KgkJKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzKSBpZmYgaXQgc3RvcmVkIHRoZSBuZXcg dHVwbGUgYXMgYW4KKyAqCQlpbmRlcGVuZGVudCB2ZXJzaW9uIHJlcXVpcmluZyBhIGZyZXNo IGVudHJ5IGluIGV2ZXJ5IGluZGV4OyBvdGhlcndpc2UKKyAqCQl0aGUgY2FsbGVyIGNvbnN1 bHRzIGVhY2ggaW5kZXgncyBvd24gYXR0cmlidXRlcyBhZ2FpbnN0IHRoaXMgc2V0IHRvCisg KgkJZGVjaWRlIHBlciBpbmRleCAodGhlIHN0YW5kYXJkIEhPVCAvIHNlbGVjdGl2ZS1pbmRl eC11cGRhdGUgY2FzZXMpLgorICoKICAqIE91dHB1dCBwYXJhbWV0ZXJzOgogICoJc2xvdCAt IG5ld2x5IGNvbnN0cnVjdGVkIHR1cGxlIGRhdGEgdG8gc3RvcmUKICAqCXRtZmQgLSBmaWxs ZWQgaW4gZmFpbHVyZSBjYXNlcyAoc2VlIGJlbG93KQogICoJbG9ja21vZGUgLSBmaWxsZWQg d2l0aCBsb2NrIG1vZGUgYWNxdWlyZWQgb24gdHVwbGUKLSAqCXVwZGF0ZV9pbmRleGVzIC0g aW4gc3VjY2VzcyBjYXNlcyB0aGlzIGlzIHNldCBpZiBuZXcgaW5kZXggZW50cmllcwotICoJ CWFyZSByZXF1aXJlZCBmb3IgdGhpcyB0dXBsZTsgc2VlIFRVX1VwZGF0ZUluZGV4ZXMKICAq CiAgKiBOb3JtYWwsIHN1Y2Nlc3NmdWwgcmV0dXJuIHZhbHVlIGlzIFRNX09rLCB3aGljaCBt ZWFucyB3ZSBkaWQgYWN0dWFsbHkKICAqIHVwZGF0ZSBpdC4gIEZhaWx1cmUgcmV0dXJuIGNv ZGVzIGFyZSBUTV9TZWxmTW9kaWZpZWQsIFRNX1VwZGF0ZWQsIGFuZApAQCAtMTYwMCwxMiAr MTYyMCwxNCBAQCB0YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRl ciBvdGlkLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkgICBDb21tYW5kSWQgY2lkLCB1 aW50MzIgb3B0aW9ucywKIAkJCQkgICBTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jv c3NjaGVjaywKIAkJCQkgICBib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2Nr VHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCQkgICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVk X2lkeF9hdHRycywgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCisJCQkJICAg Qml0bWFwc2V0ICoqbW9kaWZpZWRfYXR0cnMpCiB7CisJQXNzZXJ0KG1vZGlmaWVkX2F0dHJz ID09IE5VTEwgfHwKKwkJICAgIWJtc19pc19tZW1iZXIoVGFibGVUdXBsZVVwZGF0ZUFsbElu ZGV4ZXMsICptb2RpZmllZF9hdHRycykpOwogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnR1 cGxlX3VwZGF0ZShyZWwsIG90aWQsIHNsb3QsCiAJCQkJCQkJCQkJIGNpZCwgb3B0aW9ucywg c25hcHNob3QsIGNyb3NzY2hlY2ssCiAJCQkJCQkJCQkJIHdhaXQsIHRtZmQsIGxvY2ttb2Rl LAotCQkJCQkJCQkJCSBtb2RpZmllZF9pZHhfYXR0cnMsIHVwZGF0ZV9pbmRleGVzKTsKKwkJ CQkJCQkJCQkgbW9kaWZpZWRfYXR0cnMpOwogfQogCiAvKgpAQCAtMjA5MCw4ICsyMTEyLDcg QEAgZXh0ZXJuIHZvaWQgc2ltcGxlX3RhYmxlX3R1cGxlX2RlbGV0ZShSZWxhdGlvbiByZWws IEl0ZW1Qb2ludGVyIHRpZCwKIAkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QpOwogZXh0 ZXJuIHZvaWQgc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Q b2ludGVyIG90aWQsCiAJCQkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LCBTbmFwc2hv dCBzbmFwc2hvdCwKLQkJCQkJCQkJCSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhf YXR0cnMsCi0JCQkJCQkJCQkgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsK KwkJCQkJCQkJCSAgQml0bWFwc2V0ICoqbW9kaWZpZWRfYXR0cnMpOwogCiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IDE2NjYx YmM2NmQ5Li5lN2ZjY2RhZTMyZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0x NSw2ICsxNSw3IEBACiAjZGVmaW5lIEVYRUNVVE9SX0gKIAogI2luY2x1ZGUgImFjY2Vzcy94 bG9nZGVmcy5oIgorI2luY2x1ZGUgImFjY2Vzcy9pdHVwLmgiCiAjaW5jbHVkZSAiZGF0YXR5 cGUvdGltZXN0YW1wLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNs dWRlICJmbWdyLmgiCkBAIC03NTUsMTEgKzc1NiwxMyBAQCBleHRlcm4gQml0bWFwc2V0ICpF eGVjR2V0QWxsVXBkYXRlZENvbHMoUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywgRVN0YXRlICpl c3RhdGUpOwogICovCiBleHRlcm4gdm9pZCBFeGVjT3BlbkluZGljZXMoUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywgYm9vbCBzcGVjdWxhdGl2ZSk7CiBleHRlcm4gdm9pZCBFeGVj Q2xvc2VJbmRpY2VzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pOworZXh0ZXJuIHZv aWQgRXhlY1NldEluZGV4VW5jaGFuZ2VkKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8s CisJCQkJCQkJCSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMpOwogCiAv KiBmbGFncyBmb3IgRXhlY0luc2VydEluZGV4VHVwbGVzICovCiAjZGVmaW5lCQlFSUlUX0lT X1VQREFURQkJCSgxPDwwKQogI2RlZmluZQkJRUlJVF9OT19EVVBFX0VSUk9SCQkoMTw8MSkK LSNkZWZpbmUJCUVJSVRfT05MWV9TVU1NQVJJWklORwkoMTw8MikKKyNkZWZpbmUJCUVJSVRf SVNfSE9UX0lOREVYRUQJCSgxPDwyKQogZXh0ZXJuIExpc3QgKkV4ZWNJbnNlcnRJbmRleFR1 cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLCBFU3RhdGUgKmVzdGF0ZSwKIAkJ CQkJCQkJICAgdWludDMyIGZsYWdzLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkJ ICAgTGlzdCAqYXJiaXRlckluZGV4ZXMsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGU2 NGZkOGM3ZWEzLi4wYmJlNzFhMmE4OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTIx NiwxMCArMjE2LDE0IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbwogCWJvb2wJCWlpX051 bGxzTm90RGlzdGluY3Q7CiAJLyogaXMgaXQgdmFsaWQgZm9yIGluc2VydHM/ICovCiAJYm9v bAkJaWlfUmVhZHlGb3JJbnNlcnRzOwotCS8qIEluZGV4VW5jaGFuZ2VkIHN0YXR1cyBkZXRl cm1pbmVkIHlldD8gKi8KLQlib29sCQlpaV9DaGVja2VkVW5jaGFuZ2VkOwotCS8qIGFtaW5z ZXJ0IGhpbnQsIGNhY2hlZCBmb3IgcmV0YWlsIGluc2VydHMgKi8KKwkvKiBhbWluc2VydCBo aW50OiBpbmRleCBsb2dpY2FsbHkgdW5jaGFuZ2VkIGJ5IFVQREFURT8gIE5hcnJvdyBydWxl OiBrZXkKKwkgKiBjb2x1bW5zIG9ubHk7IElOQ0xVREUgY29sdW1ucyBhbmQgdGhlIHBhcnRp YWwtaW5kZXggcHJlZGljYXRlIGFyZSBub3QKKwkgKiBjb25zaWRlcmVkIChleHByZXNzaW9u IGluZGV4ZXMgYXJlIHRyZWF0ZWQgY29uc2VydmF0aXZlbHkpLiAqLwogCWJvb2wJCWlpX0lu ZGV4VW5jaGFuZ2VkOworCS8qIHNlbGVjdGl2ZSBVUERBVEU6IGRvZXMgdGhpcyBpbmRleCBu ZWVkIGEgbmV3IGVudHJ5PyAgV2lkZSBydWxlOiB0cnVlIGlmCisJICogYW55IGtleSwgSU5D TFVERSwgZXhwcmVzc2lvbiwgb3IgcHJlZGljYXRlIGNvbHVtbiBpdCByZWZlcmVuY2VzIGNo YW5nZWQKKwkgKiAob3IgdGhlIEFNIHN0b3JlZCBhbiBpbmRlcGVuZGVudCBuZXcgdmVyc2lv bikuICovCisJYm9vbAkJaWlfSW5kZXhOZWVkc1VwZGF0ZTsKIAkvKiBhcmUgd2UgZG9pbmcg YSBjb25jdXJyZW50IGluZGV4IGJ1aWxkPyAqLwogCWJvb2wJCWlpX0NvbmN1cnJlbnQ7CiAJ LyogZGlkIHdlIGRldGVjdCBhbnkgYnJva2VuIEhPVCBjaGFpbnM/ICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCmluZGV4IDU4 YTQ0ODU3ZjEzLi4yOGI3OTM3MGYwZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdzdGF0 LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTE1MSw3ICsxNTEsMTkgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGdTdGF0X1RhYmxlQ291bnRzCiAJUGdTdGF0X0NvdW50ZXIgdHVwbGVz X3VwZGF0ZWQ7CiAJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX2RlbGV0ZWQ7CiAJUGdTdGF0X0Nv dW50ZXIgdHVwbGVzX2hvdF91cGRhdGVkOworCVBnU3RhdF9Db3VudGVyIHR1cGxlc19ob3Rf aW5kZXhlZF91cGRhdGVkOwogCVBnU3RhdF9Db3VudGVyIHR1cGxlc19uZXdwYWdlX3VwZGF0 ZWQ7CisKKwkvKgorCSAqIFBlci1pbmRleCBIT1QtaW5kZXhlZCB1cGRhdGUgY291bnRlcnMu ICBNYWludGFpbmVkIG9uIHBnc3RhdCBlbnRyaWVzCisJICoga2V5ZWQgb24gYW4gaW5kZXgg b2lkLCBub3Qgb24gdGhlIG93bmluZyB0YWJsZSdzIGVudHJ5LiAgVGhleSBjb3VudCBob3cK KwkgKiBtYW55IEhPVC1pbmRleGVkIHVwZGF0ZXMgc2tpcHBlZCB0aGlzIGluZGV4IChrZXkg dW5jaGFuZ2VkKSB2cy4KKwkgKiBpbnNlcnRlZCBhIGZyZXNoIGVudHJ5IChrZXkgY2hhbmdl ZCkuICBTdW1tYXJpemluZyBpbmRleGVzIGRvIG5vdAorCSAqIGNvbnRyaWJ1dGUgdG8gZWl0 aGVyIGNvdW50ZXIuCisJICovCisJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX2hvdF9pbmRleGVk X3VwZF9za2lwcGVkOworCVBnU3RhdF9Db3VudGVyIHR1cGxlc19ob3RfaW5kZXhlZF91cGRf bWF0Y2hlZDsKKwogCWJvb2wJCXRydW5jZHJvcHBlZDsKIAogCVBnU3RhdF9Db3VudGVyIGRl bHRhX2xpdmVfdHVwbGVzOwpAQCAtMjE4LDcgKzIzMCw3IEBAIHR5cGVkZWYgc3RydWN0IFBn U3RhdF9UYWJsZVhhY3RTdGF0dXMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKLSNkZWZpbmUgUEdTVEFU X0ZJTEVfRk9STUFUX0lECTB4MDFBNUJDQkMKKyNkZWZpbmUgUEdTVEFUX0ZJTEVfRk9STUFU X0lECTB4MDFBNUJDQkQKIAogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0FyY2hpdmVyU3RhdHMK IHsKQEAgLTQ2MCw4ICs0NzIsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRUYWJF bnRyeQogCVBnU3RhdF9Db3VudGVyIHR1cGxlc191cGRhdGVkOwogCVBnU3RhdF9Db3VudGVy IHR1cGxlc19kZWxldGVkOwogCVBnU3RhdF9Db3VudGVyIHR1cGxlc19ob3RfdXBkYXRlZDsK KwlQZ1N0YXRfQ291bnRlciB0dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZDsKIAlQZ1N0YXRf Q291bnRlciB0dXBsZXNfbmV3cGFnZV91cGRhdGVkOwogCisJLyogUGVyLWluZGV4IEhPVC1p bmRleGVkIHVwZGF0ZSBjb3VudGVycyAoc2VlIFBnU3RhdF9UYWJsZUNvdW50cykuICovCisJ UGdTdGF0X0NvdW50ZXIgdHVwbGVzX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkOworCVBnU3Rh dF9Db3VudGVyIHR1cGxlc19ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZDsKKwogCVBnU3RhdF9D b3VudGVyIGxpdmVfdHVwbGVzOwogCVBnU3RhdF9Db3VudGVyIGRlYWRfdHVwbGVzOwogCVBn U3RhdF9Db3VudGVyIG1vZF9zaW5jZV9hbmFseXplOwpAQCAtNzUyLDYgKzc2OSwxNiBAQCBl eHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2FuYWx5emUoUmVsYXRpb24gcmVsLAogCQlpZiAo cGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQkJCQkJCVwKIAkJCShyZWwpLT5w Z3N0YXRfaW5mby0+Y291bnRzLnR1cGxlc19yZXR1cm5lZCArPSAobik7CQlcCiAJfSB3aGls ZSAoMCkKKyNkZWZpbmUgcGdzdGF0X2NvdW50X2hvdF9pbmRleGVkX3VwZF9za2lwcGVkKHJl bCkJCQkJCQlcCisJZG8gewkJCQkJCQkJCQkJCQkJCVwKKwkJaWYgKHBnc3RhdF9zaG91bGRf Y291bnRfcmVsYXRpb24ocmVsKSkJCQkJCQlcCisJCQkocmVsKS0+cGdzdGF0X2luZm8tPmNv dW50cy50dXBsZXNfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQrKztcCisJfSB3aGlsZSAoMCkK KyNkZWZpbmUgcGdzdGF0X2NvdW50X2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkKHJlbCkJCQkJ CQlcCisJZG8gewkJCQkJCQkJCQkJCQkJCVwKKwkJaWYgKHBnc3RhdF9zaG91bGRfY291bnRf cmVsYXRpb24ocmVsKSkJCQkJCQlcCisJCQkocmVsKS0+cGdzdGF0X2luZm8tPmNvdW50cy50 dXBsZXNfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQrKztcCisJfSB3aGlsZSAoMCkKICNkZWZp bmUgcGdzdGF0X2NvdW50X2J1ZmZlcl9yZWFkKHJlbCkJCQkJCQkJCVwKIAlkbyB7CQkJCQkJ CQkJCQkJCQkJXAogCQlpZiAocGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQkJ CQkJCVwKQEAgLTc2NCw3ICs3OTEsNyBAQCBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2Fu YWx5emUoUmVsYXRpb24gcmVsLAogCX0gd2hpbGUgKDApCiAKIGV4dGVybiB2b2lkIHBnc3Rh dF9jb3VudF9oZWFwX2luc2VydChSZWxhdGlvbiByZWwsIFBnU3RhdF9Db3VudGVyIG4pOwot ZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbCwgYm9v bCBob3QsIGJvb2wgbmV3cGFnZSk7CitleHRlcm4gdm9pZCBwZ3N0YXRfY291bnRfaGVhcF91 cGRhdGUoUmVsYXRpb24gcmVsLCBib29sIGhvdCwgYm9vbCBob3RfaW5kZXhlZCwgYm9vbCBu ZXdwYWdlKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9jb3VudF9oZWFwX2RlbGV0ZShSZWxhdGlv biByZWwpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X3RydW5jYXRlKFJlbGF0aW9uIHJl bCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfdXBkYXRlX2hlYXBfZGVhZF90dXBsZXMoUmVsYXRp b24gcmVsLCBpbnQgZGVsdGEpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVs LmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCAxZWY1YzE0NjVjNi4uYjYwYTUx MjU4YzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0xNjQsNiArMTY0LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg UmVsYXRpb25EYXRhCiAJQml0bWFwc2V0ICAqcmRfaWRhdHRyOwkJLyogaW5jbHVkZWQgaW4g cmVwbGljYSBpZGVudGl0eSBpbmRleCAqLwogCUJpdG1hcHNldCAgKnJkX2luZGV4ZWRhdHRy OyAvKiBhbGwgY29scyByZWZlcmVuY2VkIGJ5IGluZGV4ZXMgKi8KIAlCaXRtYXBzZXQgICpy ZF9zdW1tYXJpemVkYXR0cjsJLyogY29scyBpbmRleGVkIGJ5IHN1bW1hcml6aW5nIGluZGV4 ZXMgKi8KKwlCaXRtYXBzZXQgICpyZF9leHByaW5kZXhhdHRyOwkvKiBjb2xzIHJlZmVyZW5j ZWQgYnkgZXhwcmVzc2lvbiBpbmRleGVzICovCiAKIAlQdWJsaWNhdGlvbkRlc2MgKnJkX3B1 YmRlc2M7CS8qIHB1YmxpY2F0aW9uIGRlc2NyaXB0b3IsIG9yIE5VTEwgKi8KIApAQCAtMjE3 LDYgKzIxOCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBSZWxhdGlvbkRhdGEKIAlPaWQJCSAgICpy ZF9pbmRjb2xsYXRpb247CS8qIE9JRHMgb2YgaW5kZXggY29sbGF0aW9ucyAqLwogCWJ5dGVh CSAgKipyZF9vcGNvcHRpb25zOwkvKiBwYXJzZWQgb3BjbGFzcy1zcGVjaWZpYyBvcHRpb25z ICovCiAKKwkvKgorCSAqIEJpdG1hcCBvZiBoZWFwIGF0dHJpYnV0ZSBudW1iZXJzIHJlZmVy ZW5jZWQgYnkgdGhpcyBpbmRleCAoc2ltcGxlIGtleXMsCisJICogSU5DTFVERSBjb2x1bW5z LCBleHByZXNzaW9uIGNvbHVtbnMsIGFuZCBwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZQorCSAq IGNvbHVtbnMpLCBvZmZzZXQgYnkgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJl ci4gTGF6aWx5IGJ1aWx0IGJ5CisJICogUmVsYXRpb25HZXRJbmRleGVkQXR0cnMoKSBhbmQg Y2FjaGVkIGluIHJkX2luZGV4Y3h0LiBDb25zdW1lcnMgbXVzdAorCSAqIGJtc19jb3B5IGJl Zm9yZSByZWx5aW5nIG9uIHRoZSBwb2ludGVyIGJleW9uZCBhbnkgcG90ZW50aWFsCisJICog QWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKSBjYWxsLgorCSAqLworCUJpdG1hcHNldCAg KnJkX2luZGF0dHI7CisKIAkvKgogCSAqIHJkX2FtY2FjaGUgaXMgYXZhaWxhYmxlIGZvciBp bmRleCBhbmQgdGFibGUgQU1zIHRvIGNhY2hlIHByaXZhdGUgZGF0YQogCSAqIGFib3V0IHRo ZSByZWxhdGlvbi4gIFRoaXMgbXVzdCBiZSBqdXN0IGEgY2FjaGUgc2luY2UgaXQgbWF5IGdl dCByZXNldApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKaW5kZXggODk3ODgwOTE1NzYuLmEzODFhYTNl MDk1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKQEAgLTYyLDYgKzYyLDE5IEBAIGV4dGVybiBM aXN0ICpSZWxhdGlvbkdldER1bW15SW5kZXhFeHByZXNzaW9ucyhSZWxhdGlvbiByZWxhdGlv bik7CiBleHRlcm4gTGlzdCAqUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShSZWxhdGlvbiBy ZWxhdGlvbik7CiBleHRlcm4gYnl0ZWEgKipSZWxhdGlvbkdldEluZGV4QXR0T3B0aW9ucyhS ZWxhdGlvbiByZWxhdGlvbiwgYm9vbCBjb3B5KTsKIAorLyoKKyAqIFJlbGF0aW9uR2V0SW5k ZXhlZEF0dHJzIC0tIHJldHVybiBhIGZyZXNobHktcGFsbG9jJ2QgQml0bWFwc2V0IG9mIGV2 ZXJ5CisgKiBoZWFwIGF0dHJpYnV0ZSB0aGlzIGluZGV4IHJlZmVyZW5jZXMsIHZpYSBrZXlz LCBJTkNMVURFIGNvbHVtbnMsCisgKiBleHByZXNzaW9ucywgb3IgcGFydGlhbC1pbmRleCBw cmVkaWNhdGVzLgorICoKKyAqIFRoZSBhcmd1bWVudCBtdXN0IGJlIGFuIGluZGV4IFJlbGF0 aW9uIChub3QgaXRzIG93bmluZyBoZWFwKS4gIEF0dHJpYnV0ZQorICogbnVtYmVycyBhcmUg b2Zmc2V0IGJ5IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIuICBUaGUgcmVz dWx0IGlzCisgKiBwYWxsb2MnZCBpbiB0aGUgY2FsbGVyJ3MgY29udGV4dDsgYm1zX2ZyZWUg d2hlbiBkb25lLiAgVGhlIHJlbGNhY2hlCisgKiBjYWNoZXMgaXRzIG93biBjb3B5IGluIHJk X2luZGV4Y3h0IHNvIHN1YnNlcXVlbnQgY2FsbHMgb25seSBwYXkgZm9yIHRoZQorICogZmlu YWwgYm1zX2NvcHkuCisgKi8KK2V4dGVybiBCaXRtYXBzZXQgKlJlbGF0aW9uR2V0SW5kZXhl ZEF0dHJzKFJlbGF0aW9uIGluZGV4UmVsKTsKKwogLyoKICAqIFdoaWNoIHNldCBvZiBjb2x1 bW5zIHRvIHJldHVybiBieSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcC4KICAqLwpAQCAt NzIsMTEgKzg1LDE1IEBAIHR5cGVkZWYgZW51bSBJbmRleEF0dHJCaXRtYXBLaW5kCiAJSU5E RVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZLAogCUlOREVYX0FUVFJfQklUTUFQX0lOREVY RUQsCiAJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCwKKwlJTkRFWF9BVFRSX0JJVE1B UF9FWFBSRVNTSU9OLAogfSBJbmRleEF0dHJCaXRtYXBLaW5kOwogCiBleHRlcm4gQml0bWFw c2V0ICpSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwKIAkJ CQkJCQkJCQkJIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpOwogCitleHRlcm4gY29u c3QgQml0bWFwc2V0ICpSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcE5vQ29weShSZWxhdGlv biByZWxhdGlvbiwKKwkJCQkJCQkJCQkJCQkJIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktp bmQpOworCiBleHRlcm4gQml0bWFwc2V0ICpSZWxhdGlvbkdldElkZW50aXR5S2V5Qml0bWFw KFJlbGF0aW9uIHJlbGF0aW9uKTsKIAogZXh0ZXJuIHZvaWQgUmVsYXRpb25HZXRFeGNsdXNp b25JbmZvKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvaG90X3VwZGF0ZXMub3V0CmluZGV4IDI3M2ZlMzMxMGRhLi4wNjk3OWVkMzFkMCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQKQEAgLTEs MTQ3ICsxLDEzMiBAQAogLS0KIC0tIEhPVF9VUERBVEVTCi0tLSBUZXN0IEhlYXAtT25seSBU dXBsZSAoSE9UKSB1cGRhdGUgZGVjaXNpb25zCistLSBUZXN0IGNsYXNzaWMgSGVhcC1Pbmx5 IFR1cGxlIChIT1QpIHVwZGF0ZSBkZWNpc2lvbnMKIC0tCi0tLSBUaGlzIHRlc3Qgc3lzdGVt YXRpY2FsbHkgdmVyaWZpZXMgdGhhdCBIT1QgdXBkYXRlcyBhcmUgdXNlZCB3aGVuIGFwcHJv cHJpYXRlCi0tLSBhbmQgYXZvaWRlZCB3aGVuIG5lY2Vzc2FyeSAoZS5nLiwgd2hlbiBpbmRl eGVkIGNvbHVtbnMgYXJlIG1vZGlmaWVkKS4KKy0tIFRoaXMgZmlsZSBjb3ZlcnMgSE9UIGRl Y2lzaW9ucyB0aGF0IGFwcGx5IGlkZW50aWNhbGx5IG9uIGEgcHJlLWhvdC1pbmRleGVkCist LSBzZXJ2ZXI6IGV2ZXJ5IFVQREFURSBoZXJlIGVpdGhlciBsZWF2ZXMgYWxsIGluZGV4ZWQg YXR0cmlidXRlcworLS0gdW5jaGFuZ2VkIG9yIHRvdWNoZXMgb25seSBzdW1tYXJpemluZy1p bmRleCAoQlJJTikgYXR0cmlidXRlcywgc28gdGhlCistLSBIT1QgdnMgbm9uLUhPVCBjaG9p Y2UgZG9lcyBub3QgZGVwZW5kIG9uIHdoZXRoZXIgU2VsZWN0aXZlIEluZGV4CistLSBVcGRh dGUgKGhvdC1pbmRleGVkKSBpcyBlbmFibGVkLiAgaG90LWluZGV4ZWQtc3BlY2lmaWMgYmVo YXZpb3VyIChVUERBVEVzIHRoYXQgbW9kaWZ5CistLSBhIG5vbi1zdW1tYXJpemluZyBpbmRl eGVkIGF0dHJpYnV0ZSkgaXMgY292ZXJlZCBpbgorLS0gaG90X2luZGV4ZWRfdXBkYXRlcy5z cWwuCiAtLQotLS0gV2UgdXNlIG11bHRpcGxlIHZhbGlkYXRpb24gbWV0aG9kczoKLS0tIDEu IFN0YXRpc3RpY3MgZnVuY3Rpb25zIChwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQp Ci0tLSAyLiBwYWdlaW5zcGVjdCBleHRlbnNpb24gZm9yIEhPVCBjaGFpbiBleGFtaW5hdGlv bgotLS0gMy4gRVhQTEFJTiB0byB2ZXJpZnkgaW5kZXggdXNhZ2UgYWZ0ZXIgdXBkYXRlcwor LS0gVmFsaWRhdGlvbiBtZXRob2RzOgorLS0gICAxLiBTdGF0aXN0aWNzIChwZ19zdGF0X2dl dF90dXBsZXNfaG90X3VwZGF0ZWQpCistLSAgIDIuIHBhZ2VpbnNwZWN0IGZvciBIT1QgY2hh aW4gc3RydWN0dXJlCistLSAgIDMuIEVYUExBSU4gdG8gY29uZmlybSB0aGUgcGxhbm5lciBz dGlsbCBwaWNrcyB0aGUgaW5kZXgKIC0tCiAtLSBMb2FkIHJlcXVpcmVkIGV4dGVuc2lvbnMK IENSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKLS0tIEZ1bmN0 aW9uIHRvIGdldCBIT1QgdXBkYXRlIGNvdW50CistLSBTdW0gb2YgY29tbWl0dGVkIGFuZCBp bi1wcm9ncmVzcyAobm9uLUhPVCwgSE9UKSB1cGRhdGUgY291bnRlcnMuCiBDUkVBVEUgT1Ig UkVQTEFDRSBGVU5DVElPTiBnZXRfaG90X2NvdW50KHJlbF9uYW1lIHRleHQpCiBSRVRVUk5T IFRBQkxFICgKICAgICB1cGRhdGVzIEJJR0lOVCwKICAgICBob3QgQklHSU5UCiApIEFTICQk CiBERUNMQVJFCi0gIHJlbF9vaWQgb2lkOworICAgIHJlbF9vaWQgb2lkOwogQkVHSU4KLSAg cmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsKLQotICAtLSBSZWFkIGJvdGgg Y29tbWl0dGVkIGFuZCB0cmFuc2FjdGlvbi1sb2NhbCBzdGF0cwotICAtLSBJbiBhdXRvY29t bWl0IG1vZGUgKGRlZmF1bHQgZm9yIHJlZ3Jlc3Npb24gdGVzdHMpLCB0aGlzIHdvcmtzIGNv cnJlY3RseQotICAtLSBOb3RlOiBJbiBleHBsaWNpdCB0cmFuc2FjdGlvbnMgKEJFR0lOL0NP TU1JVCksIGNvbW1pdHRlZCBzdGF0cyBhbHJlYWR5Ci0gIC0tIGluY2x1ZGUgZmx1c2hlZCB1 cGRhdGVzLCBzbyB0aGlzIHdvdWxkIGRvdWJsZS1jb3VudC4gRm9yIGV4cGxpY2l0Ci0gIC0t IHRyYW5zYWN0aW9uIHRlc3RpbmcsIGNhbGwgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCkg YmVmb3JlIHRoaXMgZnVuY3Rpb24uCi0gIHVwZGF0ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9n ZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApICsKLSAgICAgICAgICAgICBDT0FMRVND RShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKTsKLSAgaG90 IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwg MCkgKwotICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQocmVsX29pZCksIDApOwotCi0gIFJFVFVSTiBORVhUOworICAgIHJlbF9vaWQgOj0g cmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7CisgICAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19z dGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICAgICAg Q09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7 CisgICAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZChy ZWxfb2lkKSwgMCkgKworICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1 cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgUkVUVVJOIE5FWFQ7CiBFTkQ7 CiAkJCBMQU5HVUFHRSBwbHBnc3FsOwotLS0gQ2hlY2sgaWYgYSB0dXBsZSBpcyBwYXJ0IG9m IGEgSE9UIGNoYWluIChoYXMgYSBwcmVkZWNlc3NvciBvbiBzYW1lIHBhZ2UpCistLSBUcnVl IGlmZiB0YXJnZXRfY3RpZCBpcyB0aGUgVEFJTCBvZiBhIEhPVCBjaGFpbiBvbiB0aGUgc2Ft ZSBwYWdlLgogQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gaGFzX2hvdF9jaGFpbihyZWxf bmFtZSB0ZXh0LCB0YXJnZXRfY3RpZCB0aWQpCiBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKIERF Q0xBUkUKLSAgYmxvY2tfbnVtIGludDsKLSAgcGFnZV9pdGVtIHJlY29yZDsKKyAgICBibG9j a19udW0gaW50OworICAgIHBhZ2VfaXRlbSByZWNvcmQ7CiBCRUdJTgotICBibG9ja19udW0g Oj0gKHRhcmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKLQotICAtLSBMb29rIGZv ciBhIGRpZmZlcmVudCB0dXBsZSBvbiB0aGUgc2FtZSBwYWdlIHRoYXQgcG9pbnRzIHRvIG91 ciB0YXJnZXQgdHVwbGUKLSAgRk9SIHBhZ2VfaXRlbSBJTgotICAgIFNFTEVDVCBscCwgbHBf ZmxhZ3MsIHRfY3RpZAotICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShy ZWxfbmFtZSwgYmxvY2tfbnVtKSkKLSAgICBXSEVSRSBscF9mbGFncyA9IDEKLSAgICAgIEFO RCB0X2N0aWQgSVMgTk9UIE5VTEwKLSAgICAgIEFORCB0X2N0aWQgPSB0YXJnZXRfY3RpZAot ICAgICAgQU5EICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBscDo6dGV4dCB8 fCAnKScpOjp0aWQgIT0gdGFyZ2V0X2N0aWQKLSAgTE9PUAotICAgIFJFVFVSTiB0cnVlOwot ICBFTkQgTE9PUDsKLQotICBSRVRVUk4gZmFsc2U7CisgICAgYmxvY2tfbnVtIDo9ICh0YXJn ZXRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQ7CisgICAgRk9SIHBhZ2VfaXRlbSBJTgor ICAgICAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgICAgRlJPTSBoZWFw X3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgICAg ICBXSEVSRSBscF9mbGFncyA9IDEKKyAgICAgICAgICBBTkQgdF9jdGlkIElTIE5PVCBOVUxM CisgICAgICAgICAgQU5EIHRfY3RpZCA9IHRhcmdldF9jdGlkCisgICAgICAgICAgQU5EICgn KCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBscDo6dGV4dCB8fCAnKScpOjp0aWQg IT0gdGFyZ2V0X2N0aWQKKyAgICBMT09QCisgICAgICAgIFJFVFVSTiB0cnVlOworICAgIEVO RCBMT09QOworICAgIFJFVFVSTiBmYWxzZTsKIEVORDsKICQkIExBTkdVQUdFIHBscGdzcWw7 Ci0tLSBQcmludCB0aGUgSE9UIGNoYWluIHN0YXJ0aW5nIGZyb20gYSBnaXZlbiB0dXBsZQor LS0gRW1pdCB0aGUgSE9UIGNoYWluIHJvb3RlZCBhdCBzdGFydF9jdGlkLgogQ1JFQVRFIE9S IFJFUExBQ0UgRlVOQ1RJT04gcHJpbnRfaG90X2NoYWluKHJlbF9uYW1lIHRleHQsIHN0YXJ0 X2N0aWQgdGlkKQogUkVUVVJOUyBUQUJMRShjaGFpbl9wb3NpdGlvbiBpbnQsIGN0aWQgdGlk LCBscF9mbGFncyB0ZXh0LCB0X2N0aWQgdGlkLCBjaGFpbl9lbmQgYm9vbGVhbikgQVMKICQk CiAjdmFyaWFibGVfY29uZmxpY3QgdXNlX2NvbHVtbgogREVDTEFSRQotICBibG9ja19udW0g aW50OwotICBsaW5lX3B0ciBpbnQ7Ci0gIGN1cnJlbnRfY3RpZCB0aWQgOj0gc3RhcnRfY3Rp ZDsKLSAgbmV4dF9jdGlkIHRpZDsKLSAgcG9zaXRpb24gaW50IDo9IDA7Ci0gIG1heF9pdGVy YXRpb25zIGludCA6PSAxMDA7Ci0gIHBhZ2VfaXRlbSByZWNvcmQ7Ci0gIGZvdW5kX3ByZWRl Y2Vzc29yIGJvb2xlYW4gOj0gZmFsc2U7Ci0gIGZsYWdzX25hbWUgdGV4dDsKKyAgICBibG9j a19udW0gaW50OworICAgIGxpbmVfcHRyIGludDsKKyAgICBjdXJyZW50X2N0aWQgdGlkIDo9 IHN0YXJ0X2N0aWQ7CisgICAgbmV4dF9jdGlkIHRpZDsKKyAgICBwb3NpdGlvbiBpbnQgOj0g MDsKKyAgICBtYXhfaXRlcmF0aW9ucyBpbnQgOj0gMTAwOworICAgIHBhZ2VfaXRlbSByZWNv cmQ7CisgICAgZm91bmRfcHJlZGVjZXNzb3IgYm9vbGVhbiA6PSBmYWxzZTsKKyAgICBmbGFn c19uYW1lIHRleHQ7CiBCRUdJTgotICBibG9ja19udW0gOj0gKHN0YXJ0X2N0aWQ6OnRleHQ6 OnBvaW50KVswXTo6aW50OwotCi0gIC0tIEZpbmQgdGhlIHByZWRlY2Vzc29yIChvbGQgdHVw bGUgcG9pbnRpbmcgdG8gb3VyIHN0YXJ0X2N0aWQpCi0gIEZPUiBwYWdlX2l0ZW0gSU4KLSAg ICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKLSAgICBGUk9NIGhlYXBfcGFnZV9pdGVt cyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCi0gICAgV0hFUkUgbHBfZmxh Z3MgPSAxCi0gICAgICBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZAotICBMT09QCi0gICAgY3Vy cmVudF9jdGlkIDo9ICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBwYWdlX2l0 ZW0ubHA6OnRleHQgfHwgJyknKTo6dGlkOwotICAgIGZvdW5kX3ByZWRlY2Vzc29yIDo9IHRy dWU7Ci0gICAgRVhJVDsKLSAgRU5EIExPT1A7Ci0KLSAgLS0gSWYgbm8gcHJlZGVjZXNzb3Ig Zm91bmQsIHN0YXJ0IHdpdGggdGhlIGdpdmVuIGN0aWQKLSAgSUYgTk9UIGZvdW5kX3ByZWRl Y2Vzc29yIFRIRU4KLSAgICBjdXJyZW50X2N0aWQgOj0gc3RhcnRfY3RpZDsKLSAgRU5EIElG OwotCi0gIC0tIEZvbGxvdyB0aGUgY2hhaW4gZm9yd2FyZAotICBXSElMRSBwb3NpdGlvbiA8 IG1heF9pdGVyYXRpb25zIExPT1AKLSAgICBsaW5lX3B0ciA6PSAoY3VycmVudF9jdGlkOjp0 ZXh0Ojpwb2ludClbMV06OmludDsKKyAgICBibG9ja19udW0gOj0gKHN0YXJ0X2N0aWQ6OnRl eHQ6OnBvaW50KVswXTo6aW50OwogCiAgICAgRk9SIHBhZ2VfaXRlbSBJTgotICAgICAgU0VM RUNUIGxwLCBscF9mbGFncywgdF9jdGlkCi0gICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhn ZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCi0gICAgICBXSEVSRSBscCA9IGxp bmVfcHRyCisgICAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAorICAgICAgICBG Uk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkp CisgICAgICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAgICAgICAgIEFORCB0X2N0aWQgPSBz dGFydF9jdGlkCiAgICAgTE9PUAotICAgICAgLS0gTWFwIGxwX2ZsYWdzIHRvIG5hbWVzCi0g ICAgICBmbGFnc19uYW1lIDo9IENBU0UgcGFnZV9pdGVtLmxwX2ZsYWdzCi0gICAgICAgIFdI RU4gMCBUSEVOICd1bnVzZWQgKDApJwotICAgICAgICBXSEVOIDEgVEhFTiAnbm9ybWFsICgx KScKLSAgICAgICAgV0hFTiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKLSAgICAgICAgV0hFTiAz IFRIRU4gJ2RlYWQgKDMpJwotICAgICAgICBFTFNFICd1bmtub3duICgnIHx8IHBhZ2VfaXRl bS5scF9mbGFnczo6dGV4dCB8fCAnKScKLSAgICAgIEVORDsKLQotICAgICAgUkVUVVJOIFFV RVJZIFNFTEVDVAotICAgICAgICBwb3NpdGlvbiwKLSAgICAgICAgY3VycmVudF9jdGlkLAot ICAgICAgICBmbGFnc19uYW1lLAotICAgICAgICBwYWdlX2l0ZW0udF9jdGlkLAotICAgICAg ICAocGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJy ZW50X2N0aWQpOjpib29sZWFuCi0gICAgICA7Ci0KLSAgICAgIElGIHBhZ2VfaXRlbS50X2N0 aWQgSVMgTlVMTCBPUiBwYWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkIFRIRU4KLSAg ICAgICAgUkVUVVJOOwotICAgICAgRU5EIElGOwotCi0gICAgICBuZXh0X2N0aWQgOj0gcGFn ZV9pdGVtLnRfY3RpZDsKLQotICAgICAgSUYgKG5leHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBd OjppbnQgIT0gYmxvY2tfbnVtIFRIRU4KLSAgICAgICAgUkVUVVJOOwotICAgICAgRU5EIElG OwotCi0gICAgICBjdXJyZW50X2N0aWQgOj0gbmV4dF9jdGlkOwotICAgICAgcG9zaXRpb24g Oj0gcG9zaXRpb24gKyAxOworICAgICAgICBjdXJyZW50X2N0aWQgOj0gKCcoJyB8fCBibG9j a19udW06OnRleHQgfHwgJywnIHx8IHBhZ2VfaXRlbS5scDo6dGV4dCB8fCAnKScpOjp0aWQ7 CisgICAgICAgIGZvdW5kX3ByZWRlY2Vzc29yIDo9IHRydWU7CisgICAgICAgIEVYSVQ7CiAg ICAgRU5EIExPT1A7Ci0KLSAgICBJRiBwb3NpdGlvbiA9IDAgVEhFTgotICAgICAgUkVUVVJO OworICAgIElGIE5PVCBmb3VuZF9wcmVkZWNlc3NvciBUSEVOCisgICAgICAgIGN1cnJlbnRf Y3RpZCA6PSBzdGFydF9jdGlkOwogICAgIEVORCBJRjsKLSAgRU5EIExPT1A7CisKKyAgICBX SElMRSBwb3NpdGlvbiA8IG1heF9pdGVyYXRpb25zIExPT1AKKyAgICAgICAgbGluZV9wdHIg Oj0gKGN1cnJlbnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjppbnQ7CisgICAgICAgIEZPUiBw YWdlX2l0ZW0gSU4KKyAgICAgICAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAor ICAgICAgICAgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1l LCBibG9ja19udW0pKQorICAgICAgICAgICAgV0hFUkUgbHAgPSBsaW5lX3B0cgorICAgICAg ICBMT09QCisgICAgICAgICAgICBmbGFnc19uYW1lIDo9IENBU0UgcGFnZV9pdGVtLmxwX2Zs YWdzCisgICAgICAgICAgICAgICAgV0hFTiAwIFRIRU4gJ3VudXNlZCAoMCknCisgICAgICAg ICAgICAgICAgV0hFTiAxIFRIRU4gJ25vcm1hbCAoMSknCisgICAgICAgICAgICAgICAgV0hF TiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKKyAgICAgICAgICAgICAgICBXSEVOIDMgVEhFTiAn ZGVhZCAoMyknCisgICAgICAgICAgICAgICAgRUxTRSAndW5rbm93biAoJyB8fCBwYWdlX2l0 ZW0ubHBfZmxhZ3M6OnRleHQgfHwgJyknCisgICAgICAgICAgICBFTkQ7CisgICAgICAgICAg ICBSRVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAgICAgICAgICAgcG9zaXRpb24sCisgICAg ICAgICAgICAgICAgY3VycmVudF9jdGlkLAorICAgICAgICAgICAgICAgIGZsYWdzX25hbWUs CisgICAgICAgICAgICAgICAgcGFnZV9pdGVtLnRfY3RpZCwKKyAgICAgICAgICAgICAgICAo cGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJyZW50 X2N0aWQpOjpib29sZWFuOworCisgICAgICAgICAgICBJRiBwYWdlX2l0ZW0udF9jdGlkIElT IE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCBUSEVOCisgICAgICAg ICAgICAgICAgUkVUVVJOOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICAgICAgbmV4 dF9jdGlkIDo9IHBhZ2VfaXRlbS50X2N0aWQ7CisgICAgICAgICAgICBJRiAobmV4dF9jdGlk Ojp0ZXh0Ojpwb2ludClbMF06OmludCAhPSBibG9ja19udW0gVEhFTgorICAgICAgICAgICAg ICAgIFJFVFVSTjsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgICAgIGN1cnJlbnRf Y3RpZCA6PSBuZXh0X2N0aWQ7CisgICAgICAgICAgICBwb3NpdGlvbiA6PSBwb3NpdGlvbiAr IDE7CisgICAgICAgIEVORCBMT09QOworICAgICAgICBJRiBwb3NpdGlvbiA9IDAgVEhFTgor ICAgICAgICAgICAgUkVUVVJOOworICAgICAgICBFTkQgSUY7CisgICAgRU5EIExPT1A7CiBF TkQ7CiAkJCBMQU5HVUFHRSBwbHBnc3FsOwotLS0gQmFzaWMgSE9UIHVwZGF0ZSAodXBkYXRl IG5vbi1pbmRleGVkIGNvbHVtbikKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMS4g QmFzaWMgSE9UOiB1cGRhdGUgb2YgYSBub24taW5kZXhlZCBjb2x1bW4KKy0tIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCiAgICAgaW5kZXhlZF9jb2wgaW50LApAQCAtMTUxLDIzOSArMTM2LDIxOCBA QCBDUkVBVEUgSU5ERVggaG90X3Rlc3RfaW5kZXhlZF9pZHggT04gaG90X3Rlc3QoaW5kZXhl ZF9jb2wpOwogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFs Jyk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2luaXRpYWwnKTsK IElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMywgMzAwLCAnaW5pdGlhbCcpOwotLS0g R2V0IGJhc2VsaW5lCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwog IHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAwIHwgICAwCiAoMSBy b3cpCiAKLS0tIFNob3VsZCBiZSBIT1QgdXBkYXRlcyAob25seSBub24taW5kZXhlZCBjb2x1 bW4gbW9kaWZpZWQpCistLSBUaHJlZSBjbGFzc2ljIEhPVCB1cGRhdGVzIChub24taW5kZXhl ZCBjb2wpLgogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRl ZDEnIFdIRVJFIGlkID0gMTsKIFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29s ID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CiBVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9p bmRleGVkX2NvbCA9ICd1cGRhdGVkMycgV0hFUkUgaWQgPSAzOwotLS0gVmVyaWZ5IEhPVCB1 cGRhdGVzIG9jY3VycmVkCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7Cisg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcp OwogIHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAzIHwgICAzCiAo MSByb3cpCiAKLS0tIER1bXAgdGhlIEhPVCBjaGFpbiBiZWZvcmUgVkFDVVVNaW5nCi1XSVRI IGN1cnJlbnRfdHVwbGUgQVMgKAotICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdIRVJF IGlkID0gMQotKQotU0VMRUNUCi0gIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVu dF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCi0gIGNoYWluX3Bvc2l0aW9uLAotICBwcmlu dF9ob3RfY2hhaW4uY3RpZCwKLSAgbHBfZmxhZ3MsCi0gIHRfY3RpZAotRlJPTSBjdXJyZW50 X3R1cGxlLAotTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90 dXBsZS5jdGlkKTsKKy0tIENoYWluLW9mLTEgb24gaWQ9MSBzdGlsbCBoYXMgYSBwcmVkZWNl c3NvciBsaW5lIHBvaW50ZXIuCitXSVRIIGN1cnJlbnRfdHVwbGUgQVMgKFNFTEVDVCBjdGlk IEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxKQorU0VMRUNUIGhhc19ob3RfY2hhaW4oJ2hv dF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgICAgICAgY2hh aW5fcG9zaXRpb24sIHByaW50X2hvdF9jaGFpbi5jdGlkLCBscF9mbGFncywgdF9jdGlkCitG Uk9NIGN1cnJlbnRfdHVwbGUsIExBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcs IGN1cnJlbnRfdHVwbGUuY3RpZCk7CiAgaGFzX2NoYWluIHwgY2hhaW5fcG9zaXRpb24gfCBj dGlkICB8ICBscF9mbGFncyAgfCB0X2N0aWQgCiAtLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tCiAgdCAgICAgICAgIHwgICAgICAg ICAgICAgIDAgfCAoMCwxKSB8IG5vcm1hbCAoMSkgfCAoMCw0KQogIHQgICAgICAgICB8ICAg ICAgICAgICAgICAxIHwgKDAsNCkgfCBub3JtYWwgKDEpIHwgKDAsNCkKICgyIHJvd3MpCiAK LS0tIFZhY3V1bSB0aGUgcmVsYXRpb24sIGV4cGVjdCB0aGUgSE9UIGNoYWluIHRvIGNvbGxh cHNlCistLSBWQUNVVU0gY29sbGFwc2VzIHRoZSBjaGFpbi4KIFZBQ1VVTSBob3RfdGVzdDsK LS0tIFNob3cgdGhhdCB0aGVyZSBpcyBubyBjaGFpbiBhZnRlciB2YWN1dW0KLVdJVEggY3Vy cmVudF90dXBsZSBBUyAoCi0gIFNFTEVDVCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQg PSAxCi0pCi1TRUxFQ1QKLSAgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1 cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKLSAgY2hhaW5fcG9zaXRpb24sCi0gIHByaW50X2hv dF9jaGFpbi5jdGlkLAotICBscF9mbGFncywKLSAgdF9jdGlkCi1GUk9NIGN1cnJlbnRfdHVw bGUsCi1MQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxl LmN0aWQpOworV0lUSCBjdXJyZW50X3R1cGxlIEFTIChTRUxFQ1QgY3RpZCBGUk9NIGhvdF90 ZXN0IFdIRVJFIGlkID0gMSkKK1NFTEVDVCBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1 cnJlbnRfdHVwbGUuY3RpZCkgQVMgaGFzX2NoYWluLAorICAgICAgIGNoYWluX3Bvc2l0aW9u LCBwcmludF9ob3RfY2hhaW4uY3RpZCwgbHBfZmxhZ3MsIHRfY3RpZAorRlJPTSBjdXJyZW50 X3R1cGxlLCBMQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1 cGxlLmN0aWQpOwogIGhhc19jaGFpbiB8IGNoYWluX3Bvc2l0aW9uIHwgY3RpZCAgfCAgbHBf ZmxhZ3MgIHwgdF9jdGlkIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLQogIGYgICAgICAgICB8ICAgICAgICAgICAgICAwIHwg KDAsNCkgfCBub3JtYWwgKDEpIHwgKDAsNCkKICgxIHJvdykKIAotLS0gTm9uLUhPVCB1cGRh dGUgKHVwZGF0ZSBpbmRleGVkIGNvbHVtbikKLVVQREFURSBob3RfdGVzdCBTRVQgaW5kZXhl ZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworRFJPUCBUQUJMRSBob3RfdGVzdDsKKy0tIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMi4gU3VtbWFyaXppbmcgaW5kZXhlcyAoQlJJTikg ZG8gbm90IGJsb2NrIEhPVAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFC TEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cyB0aW1lc3Rh bXAsCisgICAgdmFsdWUgaW50LAorICAgIGJyaW5fY29sIGludAorKSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3RzX2JyaW4gT04gaG90X3Rlc3Qg VVNJTkcgYnJpbih0cyk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYnJpbl9jb2xfYnJpbiBP TiBob3RfdGVzdCBVU0lORyBicmluKGJyaW5fY29sKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOworLS0gQlJJTiBjb2x1bW5z IGFyZSBzdW1tYXJpemluZzsgdXBkYXRpbmcgdGhlbSBzdGF5cyBjbGFzc2ljIEhPVCBldmVu CistLSB0aG91Z2ggdGhlaXIgdmFsdWVzIGNoYW5nZS4KK1VQREFURSBob3RfdGVzdCBTRVQg dHMgPSAnMjAyNC0wMS0wMicsIGJyaW5fY29sID0gMjAwMCBXSEVSRSBpZCA9IDE7CitTRUxF Q1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwogU0VMRUNU ICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogIHVwZGF0ZXMgfCBob3QgCiAt LS0tLS0tLS0rLS0tLS0KLSAgICAgICA0IHwgICAzCisgICAgICAgMSB8ICAgMQogKDEgcm93 KQogCi0tLSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQgKG5ldyB2YWx1ZSBmaW5kYWJsZSkK LVNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKLUVYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU IGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUw OwotICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K LSBJbmRleCBTY2FuIHVzaW5nIGhvdF90ZXN0X2luZGV4ZWRfaWR4IG9uIGhvdF90ZXN0Ci0g ICBJbmRleCBDb25kOiAoaW5kZXhlZF9jb2wgPSAxNTApCi0oMiByb3dzKQotCi1TRUxFQ1Qg aWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7 Ci0gaWQgfCBpbmRleGVkX2NvbCAKLS0tLS0rLS0tLS0tLS0tLS0tLQotICAxIHwgICAgICAg ICAxNTAKKy0tIE5vbi1pbmRleGVkIGNvbHVtbjogYWxzbyBIT1QuCitVUERBVEUgaG90X3Rl c3QgU0VUIHZhbHVlID0gMjAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAogKDEgcm93KQogCi0tLSBWZXJpZnkgb2xkIHZhbHVlIG5v IGxvbmdlciBpbiBpbmRleAotRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJPTSBo b3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKLSAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gSW5kZXggU2NhbiB1c2luZyBob3Rf dGVzdF9pbmRleGVkX2lkeCBvbiBob3RfdGVzdAotICAgSW5kZXggQ29uZDogKGluZGV4ZWRf Y29sID0gMTAwKQotKDIgcm93cykKLQotU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUg aW5kZXhlZF9jb2wgPSAxMDA7Ci0gaWQgCi0tLS0tCi0oMCByb3dzKQorU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0t LS0rLS0tLS0KKyAgICAgICAyIHwgICAyCisoMSByb3cpCiAKLVJFU0VUIGVuYWJsZV9zZXFz Y2FuOwotLS0gQWxsLW9yLW5vbmUgcHJvcGVydHk6IHVwZGF0aW5nIG9uZSBpbmRleGVkIGNv bHVtbiByZXF1aXJlcyBBTEwgaW5kZXggdXBkYXRlcwogRFJPUCBUQUJMRSBob3RfdGVzdDsK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMy4gVE9BU1QgcGFydGljaXBhdGVzIGlu IEhPVCAobm9uLWluZGV4ZWQgY29sdW1uIHBhdGhzIG9ubHkpCistLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkg S0VZLAotICAgIGNvbF9hIGludCwKLSAgICBjb2xfYiBpbnQsCi0gICAgY29sX2MgaW50LAot ICAgIG5vbl9pbmRleGVkIHRleHQKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgbGFyZ2Vf dGV4dCB0ZXh0LAorICAgIHNtYWxsX3RleHQgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9yID0g NTApOwotQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0KGNvbF9hKTsK LUNSRUFURSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xfYik7Ci1DUkVB VEUgSU5ERVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOwotSU5TRVJUIElO VE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcpOwotLS0gVXBk YXRlIG9ubHkgY29sX2EgLSBzaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIGFuIGluZGV4ZWQg Y29sdW1uIGNoYW5nZWQKLS0tIFRoaXMgbWVhbnMgQUxMIGluZGV4ZXMgbXVzdCBiZSB1cGRh dGVkIChhbGwtb3Itbm9uZSBwcm9wZXJ0eSkKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2Eg PSAxNSBXSEVSRSBpZCA9IDE7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaWR4IE9OIGhvdF90 ZXN0KGluZGV4ZWRfY29sKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAw LCByZXBlYXQoJ3gnLCAzMDAwKSwgJ3NtYWxsJyk7CistLSBOb24taW5kZXhlZCwgbm9uLVRP QVNUIGNvbHVtbjogSE9ULgorVVBEQVRFIGhvdF90ZXN0IFNFVCBzbWFsbF90ZXh0ID0gJ3Vw ZGF0ZWQnOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKICB1cGRh dGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMSB8ICAgMAorICAgICAgIDEg fCAgIDEKKygxIHJvdykKKworLS0gVE9BU1QgY29sdW1uLCBpbmRleGVkX2NvbCB1bmNoYW5n ZWQ6IEhPVC4KK1VQREFURSBob3RfdGVzdCBTRVQgbGFyZ2VfdGV4dCA9IHJlcGVhdCgneScs IDMwMDApOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiAoMSBy b3cpCiAKLS0tIE5vdyB1cGRhdGUgb25seSBub24taW5kZXhlZCBjb2x1bW4gLSBzaG91bGQg YmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkID0gJ3VwZGF0ZWQnOwog U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogIHVwZGF0ZXMgfCBo b3QgCiAtLS0tLS0tLS0rLS0tLS0KLSAgICAgICAyIHwgICAxCisgICAgICAgMiB8ICAgMgog KDEgcm93KQogCi0tLSBQYXJ0aWFsIGluZGV4OiBib3RoIG9sZCBhbmQgbmV3IG91dHNpZGUg cHJlZGljYXRlIChjb25zZXJ2YXRpdmUgPSBub24tSE9UKQogRFJPUCBUQUJMRSBob3RfdGVz dDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNC4gUGFydGlhbCBpbmRleCB3aGVy ZSB1cGRhdGUgbGVhdmVzIGluZGV4ZWQgYXR0cnMgdW5jaGFuZ2VkCistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1B UlkgS0VZLAogICAgIHN0YXR1cyB0ZXh0LAogICAgIGRhdGEgdGV4dAogKSBXSVRIIChmaWxs ZmFjdG9yID0gNTApOwotLS0gUGFydGlhbCBpbmRleCBvbmx5IGNvdmVycyBzdGF0dXMgPSAn YWN0aXZlJwogQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FjdGl2ZV9pZHggT04gaG90X3Rlc3Qo c3RhdHVzKSBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsKIElOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgJ2FjdGl2ZScsICdkYXRhMScpOwogSU5TRVJUIElOVE8gaG90X3Rlc3Qg VkFMVUVTICgyLCAnaW5hY3RpdmUnLCAnZGF0YTInKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMywgJ2RlbGV0ZWQnLCAnZGF0YTMnKTsKLS0tIFVwZGF0ZSBub24taW5kZXhl ZCBjb2x1bW4gb24gJ2FjdGl2ZScgcm93IChpbiBwcmVkaWNhdGUsIHN0YXR1cyB1bmNoYW5n ZWQpCi0tLSBTaG91bGQgYmUgSE9UCistLSBVcGRhdGUgZGF0YSBvbiBhIHJvdyB3aG9zZSBz dGF0dXMgbWF0Y2hlcyB0aGUgcGFydGlhbCBwcmVkaWNhdGU6IEhPVC4KIFVQREFURSBob3Rf dGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0 YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIFNFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0t Ky0tLS0tCiAgICAgICAgMSB8ICAgMQogKDEgcm93KQogCi0tLSBVcGRhdGUgbm9uLWluZGV4 ZWQgY29sdW1uIG9uICdpbmFjdGl2ZScgcm93IChvdXRzaWRlIHByZWRpY2F0ZSkKLS0tIFNo b3VsZCBiZSBIT1QKKy0tIFVwZGF0ZSBkYXRhIG9uIGEgcm93IG91dHNpZGUgdGhlIHByZWRp Y2F0ZTogSE9ULgogVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQyJyBXSEVS RSBpZCA9IDI7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0g dXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDIgfCAgIDIKK1NFTEVD VCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAogKDEgcm93KQogCi0tLSBVcGRh dGUgc3RhdHVzIGZyb20gJ2luYWN0aXZlJyB0byAnZGVsZXRlZCcgKGJvdGggb3V0c2lkZSBw cmVkaWNhdGUpCi0tLSBQb3N0Z3JlU1FMIGlzIGNvbnNlcnZhdGl2ZTogaGVhcCBpbnNlcnQg aGFwcGVucyBiZWZvcmUgcHJlZGljYXRlIGNoZWNrCi0tLSBTbyB0aGlzIGlzIE5PTi1IT1Qg ZXZlbiB0aG91Z2ggYm90aCB2YWx1ZXMgYXJlIG91dHNpZGUgcHJlZGljYXRlCi1VUERBVEUg aG90X3Rlc3QgU0VUIHN0YXR1cyA9ICdkZWxldGVkJyBXSEVSRSBpZCA9IDI7CiBTRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0t LS0tLS0tLSstLS0tLQotICAgICAgIDMgfCAgIDIKKyAgICAgICAyIHwgICAyCiAoMSByb3cp CiAKLS0tIFZlcmlmeSBpbmRleCBzdGlsbCB3b3JrcyBmb3IgJ2FjdGl2ZScgcm93cwogU0VM RUNUIGlkLCBzdGF0dXMgRlJPTSBob3RfdGVzdCBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsK ICBpZCB8IHN0YXR1cyAKIC0tLS0rLS0tLS0tLS0KICAgMSB8IGFjdGl2ZQogKDEgcm93KQog Ci0tLSBPbmx5IEJSSU4gKHN1bW1hcml6aW5nKSBpbmRleGVzIG9uIG5vbi1QSyBjb2x1bW5z CiBEUk9QIFRBQkxFIGhvdF90ZXN0OworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA1 LiBNdWx0aS1jb2x1bW4gYnRyZWU6IHVwZGF0ZSBvZiBub24taW5kZXhlZCBjb2x1bW4KKy0t IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBp ZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgdHMgdGltZXN0YW1wLAotICAgIHZhbHVlIGludCwK LSAgICBicmluX2NvbCBpbnQKLSkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLUNSRUFURSBJ TkRFWCBob3RfdGVzdF90c19icmluIE9OIGhvdF90ZXN0IFVTSU5HIGJyaW4odHMpOwotQ1JF QVRFIElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2JyaW4gT04gaG90X3Rlc3QgVVNJTkcgYnJp bihicmluX2NvbCk7Ci1JTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsICcyMDI0LTAx LTAxJywgMTAwLCAxMDAwKTsKLS0tIFVwZGF0ZSBib3RoIEJSSU4gY29sdW1ucyAtIHNob3Vs ZCBzdGlsbCBiZSBIT1QgKG9ubHkgc3VtbWFyaXppbmcgaW5kZXhlcykKLVVQREFURSBob3Rf dGVzdCBTRVQgdHMgPSAnMjAyNC0wMS0wMicsIGJyaW5fY29sID0gMjAwMCBXSEVSRSBpZCA9 IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRl cyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDEgfCAgIDEKLSgxIHJvdykKLQot LS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBhbHNvIGJlIEhPVAotVVBE QVRFIGhvdF90ZXN0IFNFVCB2YWx1ZSA9IDIwMCBXSEVSRSBpZCA9IDE7Ci1TRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0t LS0tLSstLS0tLQotICAgICAgIDIgfCAgIDIKLSgxIHJvdykKLQotLS0gVE9BU1QgYW5kIEhP VDogVE9BU1RlZCBjb2x1bW5zIGNhbiBwYXJ0aWNpcGF0ZSBpbiBIT1QKLURST1AgVEFCTEUg aG90X3Rlc3Q7Ci1DUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAotICAgIGlkIGludCBQUklNQVJZ IEtFWSwKLSAgICBpbmRleGVkX2NvbCBpbnQsCi0gICAgbGFyZ2VfdGV4dCB0ZXh0LAotICAg IHNtYWxsX3RleHQgdGV4dAorICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQsCisgICAg Y29sX2MgaW50LAorICAgIGRhdGEgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwot Q1JFQVRFIElOREVYIGhvdF90ZXN0X2lkeCBPTiBob3RfdGVzdChpbmRleGVkX2NvbCk7Ci0t LSBJbnNlcnQgcm93IHdpdGggVE9BU1RlZCBjb2x1bW4gKD4gMktCKQotSU5TRVJUIElOVE8g aG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsIHJlcGVhdCgneCcsIDMwMDApLCAnc21hbGwnKTsK LS0tIFVwZGF0ZSBub24taW5kZXhlZCwgbm9uLVRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIGJl IEhPVAotVVBEQVRFIGhvdF90ZXN0IFNFVCBzbWFsbF90ZXh0ID0gJ3VwZGF0ZWQnOwotU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3Qg Ci0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAxIHwgICAxCitDUkVBVEUgSU5ERVggaG90X3Rl c3RfYWJfaWR4IE9OIGhvdF90ZXN0KGNvbF9hLCBjb2xfYik7CitJTlNFUlQgSU5UTyBob3Rf dGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdkYXRhJyk7CistLSBjb2xfYyBub3QgaW4g YW55IGluZGV4OiBIT1QuCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9jID0gMzU7CistLSBk YXRhIG5vdCBpbiBhbnkgaW5kZXg6IEhPVC4KK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9 ICd1cGRhdGVkJzsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAog KDEgcm93KQogCi0tLSBVcGRhdGUgVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UIGlm IGluZGV4ZWQgY29sdW1uIHVuY2hhbmdlZAotVVBEQVRFIGhvdF90ZXN0IFNFVCBsYXJnZV90 ZXh0ID0gcmVwZWF0KCd5JywgMzAwMCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQogICAgICAg IDIgfCAgIDIKICgxIHJvdykKIAotLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIC0gc2hvdWxk IE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAyMDA7Ci1T RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhv dCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDMgfCAgIDIKLSgxIHJvdykKLQotLS0gVW5p cXVlIGNvbnN0cmFpbnQgKHVuaXF1ZSBpbmRleCkgYmVoYXZlcyBsaWtlIHJlZ3VsYXIgaW5k ZXgKIERST1AgVEFCTEUgaG90X3Rlc3Q7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDYuIFVuaXF1ZSBpbmRleDogdXBkYXRlIG9mIG5vbi1pbmRleGVkIGNvbHVtbiArIHVuaXF1 ZW5lc3MgZW5mb3JjZW1lbnQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRB QkxFIGhvdF90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgdW5pcXVlX2Nv bCBpbnQgVU5JUVVFLApAQCAtMzkxLDE1ICszNTUsMTkgQEAgQ1JFQVRFIFRBQkxFIGhvdF90 ZXN0ICgKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgMTAwLCAnZGF0YTEnKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVF UyAoMiwgMjAwLCAnZGF0YTInKTsKLS0tIFVwZGF0ZSBkYXRhIChub24taW5kZXhlZCkgLSBz aG91bGQgYmUgSE9UCiBVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCc7CitT RUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwogU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogIHVwZGF0ZXMgfCBob3Qg CiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAyIHwgICAyCiAoMSByb3cpCiAKLS0tIFZlcmlm eSB1bmlxdWUgY29uc3RyYWludCBzdGlsbCBlbmZvcmNlZAogU0VMRUNUIGlkLCB1bmlxdWVf Y29sLCBkYXRhIEZST00gaG90X3Rlc3QgT1JERVIgQlkgaWQ7CiAgaWQgfCB1bmlxdWVfY29s IHwgIGRhdGEgICAKIC0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQpAQCAtNDA3LDYwICsz NzUsMTQgQEAgU0VMRUNUIGlkLCB1bmlxdWVfY29sLCBkYXRhIEZST00gaG90X3Rlc3QgT1JE RVIgQlkgaWQ7CiAgIDIgfCAgICAgICAgMjAwIHwgdXBkYXRlZAogKDIgcm93cykKIAotLS0g VGhpcyBzaG91bGQgZmFpbCAodW5pcXVlIHZpb2xhdGlvbikKKy0tIFVuaXF1ZSBjb25zdHJh aW50IHN0aWxsIGVuZm9yY2VkIG9uIGFueSBwYXRoLgogVVBEQVRFIGhvdF90ZXN0IFNFVCB1 bmlxdWVfY29sID0gMTAwIFdIRVJFIGlkID0gMjsKIEVSUk9SOiAgZHVwbGljYXRlIGtleSB2 YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAiaG90X3Rlc3RfdW5pcXVlX2NvbF9r ZXkiCiBERVRBSUw6ICBLZXkgKHVuaXF1ZV9jb2wpPSgxMDApIGFscmVhZHkgZXhpc3RzLgot LS0gTXVsdGktY29sdW1uIGluZGV4OiBhbnkgY29sdW1uIGNoYW5nZSA9IG5vbi1IT1QKIERS T1AgVEFCTEUgaG90X3Rlc3Q7Ci1DUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAotICAgIGlkIGlu dCBQUklNQVJZIEtFWSwKLSAgICBjb2xfYSBpbnQsCi0gICAgY29sX2IgaW50LAotICAgIGNv bF9jIGludCwKLSAgICBkYXRhIHRleHQKLSkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLUNS RUFURSBJTkRFWCBob3RfdGVzdF9hYl9pZHggT04gaG90X3Rlc3QoY29sX2EsIGNvbF9iKTsK LUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgJ2RhdGEnKTsK LS0tIFVwZGF0ZSBjb2xfYSAocGFydCBvZiBtdWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxk IE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNTsKLVNFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0t LS0tLS0tKy0tLS0tCi0gICAgICAgMSB8ICAgMAotKDEgcm93KQotCi0tLSBSZXNldAotVVBE QVRFIGhvdF90ZXN0IFNFVCBjb2xfYSA9IDEwOwotLS0gVXBkYXRlIGNvbF9iIChwYXJ0IG9m IG11bHRpLWNvbHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF90 ZXN0IFNFVCBjb2xfYiA9IDI1OwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf dGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAzIHwg ICAwCi0oMSByb3cpCi0KLS0tIFJlc2V0Ci1VUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9iID0g MjA7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRl cyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDQgfCAgIDAKLSgxIHJvdykKLQot LS0gVXBkYXRlIGNvbF9jIChub3QgaW5kZXhlZCkgLSBzaG91bGQgYmUgSE9UCi1VUERBVEUg aG90X3Rlc3QgU0VUIGNvbF9jID0gMzU7Ci0tLSBVcGRhdGUgZGF0YSAobm90IGluZGV4ZWQp IC0gc2hvdWxkIGJlIEhPVAotVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQn OwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotIHVwZGF0ZXMg fCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICA2IHwgICAyCi0oMSByb3cpCi0KLS0t IFBhcnRpdGlvbmVkIHRhYmxlczogSE9UIHdvcmtzIHdpdGhpbiBwYXJ0aXRpb25zCi1EUk9Q IFRBQkxFIElGIEVYSVNUUyBob3RfdGVzdF9wYXJ0aXRpb25lZCBDQVNDQURFOwotTk9USUNF OiAgdGFibGUgImhvdF90ZXN0X3BhcnRpdGlvbmVkIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBp bmcKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNy4gUGFydGl0aW9uZWQgdGFibGVz OiBIT1Qgd2l0aGluIGEgcGFydGl0aW9uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENS RUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0aXRpb25lZCAoCiAgICAgaWQgaW50LAogICAgIHBh cnRpdGlvbl9rZXkgaW50LApAQCAtNDc1LDIzICszOTcsMzIgQEAgQ1JFQVRFIFRBQkxFIGhv dF90ZXN0X3BhcnQyIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25lZAogQ1JFQVRF IElOREVYIGhvdF90ZXN0X3BhcnRfaWR4IE9OIGhvdF90ZXN0X3BhcnRpdGlvbmVkKGluZGV4 ZWRfY29sKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFZBTFVFUyAoMSwg NTAsIDEwMCwgJ2luaXRpYWwxJyk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdF9wYXJ0aXRpb25l ZCBWQUxVRVMgKDIsIDE1MCwgMjAwLCAnaW5pdGlhbDInKTsKLS0tIFVwZGF0ZSBpbiBwYXJ0 aXRpb24gMSAobm9uLWluZGV4ZWQgY29sdW1uKSAtIHNob3VsZCBiZSBIT1QKIFVQREFURSBo b3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0YSA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAx OwotLS0gVXBkYXRlIGluIHBhcnRpdGlvbiAyIChub24taW5kZXhlZCBjb2x1bW4pIC0gc2hv dWxkIGJlIEhPVAogVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3Vw ZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo KCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf dGVzdF9wYXJ0MScpOwogIHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAg ICAxIHwgICAxCiAoMSByb3cpCiAKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0X3BhcnQyJyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQogICAgICAg IDEgfCAgIDEKICgxIHJvdykKIAotLS0gVmVyaWZ5IGluZGV4ZXMgd29yayBvbiBwYXJ0aXRp b25zCiBTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRleGVk X2NvbCA9IDEwMDsKICBpZCAKIC0tLS0KQEAgLTUwNCwyNDIgKzQzNSwxMDAgQEAgU0VMRUNU IGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAyMDA7 CiAgIDIKICgxIHJvdykKIAotLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIGluIHBhcnRpdGlv biAtIHNob3VsZCBOT1QgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VU IGluZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X3Rlc3RfcGFydDEnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0t Ky0tLS0tCi0gICAgICAgMiB8ICAgMQotKDEgcm93KQotCi0tLSBWZXJpZnkgaW5kZXggd2Fz IHVwZGF0ZWQKLVNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJFIGlu ZGV4ZWRfY29sID0gMTUwOwotIGlkIAotLS0tLQotICAxCi0oMSByb3cpCi0KLS0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIFRyaWdnZXIgbW9kaWZpY2F0aW9uczogaGVhcF9tb2Rp ZnlfdHVwbGUoKSBhbmQgSE9UCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUZXN0 IHRoYXQgd2UgY29ycmVjdGx5IGRldGVjdCB3aGVuIHRyaWdnZXJzIG1vZGlmeSBpbmRleGVk IGNvbHVtbnMgdmlhCi0tLSBoZWFwX21vZGlmeV90dXBsZSgpLCBldmVuIHdoZW4gdGhvc2Ug Y29sdW1ucyBhcmVuJ3QgaW4gdGhlIFVQREFURSdzIFNFVCBjbGF1c2UKLUNSRUFURSBUQUJM RSBob3RfdHJpZ2dlcl90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgdHJp Z2dlcmVkX2NvbCBpbnQsCi0gICAgZGF0YSB0ZXh0Ci0pIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7Ci1DUkVBVEUgSU5ERVggaG90X3RyaWdnZXJfaWR4IE9OIGhvdF90cmlnZ2VyX3Rlc3Qo dHJpZ2dlcmVkX2NvbCk7Ci0tLSBDcmVhdGUgYSB0cmlnZ2VyIHRoYXQgbW9kaWZpZXMgYW4g aW5kZXhlZCBjb2x1bW4KLUNSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIG1vZGlmeV90cmln Z2VyZWRfY29sKCkKLVJFVFVSTlMgVFJJR0dFUiBBUyAkJAotQkVHSU4KLSAgICBORVcudHJp Z2dlcmVkX2NvbCA9IE5FVy50cmlnZ2VyZWRfY29sICsgMTsKLSAgICBSRVRVUk4gTkVXOwot RU5EOwotJCQgTEFOR1VBR0UgcGxwZ3NxbDsKLUNSRUFURSBUUklHR0VSIGJlZm9yZV91cGRh dGVfbW9kaWZ5Ci0gICAgQkVGT1JFIFVQREFURSBPTiBob3RfdHJpZ2dlcl90ZXN0Ci0gICAg Rk9SIEVBQ0ggUk9XCi0gICAgRVhFQ1VURSBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2Nv bCgpOwotSU5TRVJUIElOVE8gaG90X3RyaWdnZXJfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2lu aXRpYWwnKTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3RyaWdnZXJfdGVz dCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAwIHwgICAw Ci0oMSByb3cpCi0KLS0tIFVwZGF0ZSBvbmx5IGRhdGEgY29sdW1uLCBidXQgdHJpZ2dlciBt b2RpZmllcyBpbmRleGVkIGNvbHVtbgotLS0gU2hvdWxkIE5PVCBiZSBIT1QgYmVjYXVzZSB0 cmlnZ2VyIG1vZGlmaWVkIGFuIGluZGV4ZWQgY29sdW1uCi1VUERBVEUgaG90X3RyaWdnZXJf dGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJyBXSEVSRSBpZCA9IDE7Ci0tLSBWZXJpZnkgaXQg d2FzIE5PVCBhIEhPVCB1cGRhdGUgKGluZGV4ZWQgY29sdW1uIHdhcyBtb2RpZmllZCBieSB0 cmlnZ2VyKQotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdHJpZ2dlcl90ZXN0 Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDEgfCAgIDAK LSgxIHJvdykKLQotLS0gVmVyaWZ5IHRoZSB0cmlnZ2VyZWQgY29sdW1uIHdhcyBhY3R1YWxs eSBtb2RpZmllZAotU0VMRUNUIHRyaWdnZXJlZF9jb2wgRlJPTSBob3RfdHJpZ2dlcl90ZXN0 IFdIRVJFIGlkID0gMTsKLSB0cmlnZ2VyZWRfY29sIAotLS0tLS0tLS0tLS0tLS0tCi0gICAg ICAgICAgIDEwMQotKDEgcm93KQotCi1EUk9QIFRBQkxFIGhvdF90cmlnZ2VyX3Rlc3QgQ0FT Q0FERTsKLURST1AgRlVOQ1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKTsKLS0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIEpTT05CIGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgc3Vi LWF0dHJpYnV0ZSB0cmFja2luZwotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVz dCB0aGF0IHVwZGF0ZXMgdG8gbm9uLWluZGV4ZWQgSlNPTkIgcGF0aHMgY2FuIGJlIEhPVCB1 cGRhdGVzCitEUk9QIFRBQkxFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7CistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDguIEpTT05CIGV4cHJlc3Npb24gaW5kZXg6IG5v bi1pbmRleGVkIHBhdGggY2hhbmdlIGlzIEhPVAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBDUkVBVEUgVEFCTEUgaG90X2pzb25iX3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtF WSwKICAgICBkYXRhIGpzb25iCiApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0tLSBDcmVh dGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIEpTT04gcGF0aAogQ1JFQVRFIElO REVYIGhvdF9qc29uYl9uYW1lX2lkeCBPTiBob3RfanNvbmJfdGVzdCAoKGRhdGEtPj4nbmFt ZScpKTsKIElOU0VSVCBJTlRPIGhvdF9qc29uYl90ZXN0IFZBTFVFUwogICAgICgxLCAneyJu YW1lIjoiQWxpY2UiLCJhZ2UiOjMwLCJjaXR5IjoiTllDIn0nKSwKICAgICAoMiwgJ3sibmFt ZSI6IkJvYiIsImFnZSI6MjUsImNpdHkiOiJMQSJ9Jyk7Ci1TRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0t LSstLS0tLQotICAgICAgIDAgfCAgIDAKKy0tIFRoZSBqc29uYiBjb2x1bW4gaXMgdGhlIGV4 cHJlc3Npb24gaW5kZXgncyBpbnB1dCwgc28gSE9ULWluZGV4ZWQgaXMKKy0tIGRpc3F1YWxp ZmllZCAoZXhwcmVzc2lvbiBpbmRleGVzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCkgYW5kIHRo ZSBqc29uYgorLS0gY2hhbmdlIGJsb2NrcyBjbGFzc2ljIEhPVDogbm9uLUhPVCB1cGRhdGUu CitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3th Z2V9JywgJzMxJykgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9m bHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCiAoMSByb3cpCiAKLS0tIFVwZGF0ZSBub24taW5kZXhlZCBKU09OIHBh dGggKGFnZSkgLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgotVVBEQVRF IGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7YWdlfScsICcz MScpIFdIRVJFIGlkID0gMTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pz b25iX3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCiAgICAgICAg MSB8ICAgMAogKDEgcm93KQogCi0tLSBVcGRhdGUgaW5kZXhlZCBKU09OIHBhdGggKG5hbWUp IC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9 IGpzb25iX3NldChkYXRhLCAne25hbWV9JywgJyJBbGljZTIiJykgV0hFUkUgaWQgPSAxOwor LS0gTGlrZXdpc2Ugbm9uLUhPVDogZXhwcmVzc2lvbiBpbmRleCBkaXNxdWFsaWZpZXMgSE9U LWluZGV4ZWQuCitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBkYXRhIC0gJ2Np dHknIFdIRVJFIGlkID0gMjsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK KyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29u Yl90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQogICAgICAgIDIg fCAgIDAKICgxIHJvdykKIAotLS0gVmVyaWZ5IGluZGV4IHdvcmtzCi1TRUxFQ1QgaWQgRlJP TSBob3RfanNvbmJfdGVzdCBXSEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlMic7Ci0gaWQg Ci0tLS0tCi0gIDEKKy0tIExpa2V3aXNlIG5vbi1IT1Q6IGV4cHJlc3Npb24gaW5kZXggZGlz cXVhbGlmaWVzIEhPVC1pbmRleGVkLgorVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRh ID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRyeX0nLCAnIlVTQSInKSBXSEVSRSBpZCA9 IDI7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKICgxIHJvdykK IAotLS0gVGVzdCBqc29uYl9kZWxldGUgb24gbm9uLWluZGV4ZWQgcGF0aCAtIHNob3VsZCBi ZSBIT1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCi1VUERBVEUgaG90X2pzb25iX3Rlc3QgU0VU IGRhdGEgPSBkYXRhIC0gJ2NpdHknIFdIRVJFIGlkID0gMjsKIFNFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0t LS0tKy0tLS0tCiAgICAgICAgMyB8ICAgMAogKDEgcm93KQogCi0tLSBUZXN0IGpzb25iX2lu c2VydCBvbiBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVt ZW50YXRpb24KLVVQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGpzb25iX2luc2Vy dChkYXRhLCAne2NvdW50cnl9JywgJyJVU0EiJykgV0hFUkUgaWQgPSAyOwotU0VMRUNUICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3Qg Ci0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICA0IHwgICAwCi0oMSByb3cpCi0KIERST1AgVEFC TEUgaG90X2pzb25iX3Rlc3Q7Ci0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBYTUwg ZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNraW5nCi0tLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBUZXN0IHRoYXQgdXBkYXRlcyB0byBub24taW5kZXhl ZCBYTUwgcGF0aHMgY2FuIGJlIEhPVCB1cGRhdGVzCi1DUkVBVEUgVEFCTEUgaG90X3htbF90 ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgZG9jIHhtbAotKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOwotLS0gQ3JlYXRlIGV4cHJlc3Npb24gaW5kZXggb24gYSBzcGVj aWZpYyBYUGF0aAotQ1JFQVRFIElOREVYIGhvdF94bWxfbmFtZV9pZHggT04gaG90X3htbF90 ZXN0ICgoeHBhdGgoJy9wZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpKSk7Ci1JTlNFUlQgSU5U TyBob3RfeG1sX3Rlc3QgVkFMVUVTCi0gICAgKDEsICc8cGVyc29uPjxuYW1lPkFsaWNlPC9u YW1lPjxhZ2U+MzA8L2FnZT48L3BlcnNvbj4nKSwKLSAgICAoMiwgJzxwZXJzb24+PG5hbWU+ Qm9iPC9uYW1lPjxhZ2U+MjU8L2FnZT48L3BlcnNvbj4nKTsKLUVSUk9SOiAgY291bGQgbm90 IGlkZW50aWZ5IGEgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgdHlwZSB4bWwKLVNFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAK LS0tLS0tLS0tLSstLS0tLQotICAgICAgIDAgfCAgIDAKLSgxIHJvdykKLQotLS0gVXBkYXRl IG5vbi1pbmRleGVkIFhQYXRoIChhZ2UpIC0gYmVoYXZpb3IgZGVwZW5kcyBvbiBYTUwgY29t cGFyaXNvbiBmYWxsYmFjawotLS0gRnVsbCBYTUwgdmFsdWUgcmVwbGFjZW1lbnQgbWVhbnMg bm9uLWluZGV4ZWQgcGF0aCB1cGRhdGVzIHN0aWxsIHJlcXVpcmUgaW5kZXggY29tcGFyaXNv bgotVVBEQVRFIGhvdF94bWxfdGVzdCBTRVQgZG9jID0gJzxwZXJzb24+PG5hbWU+QWxpY2U8 L25hbWU+PGFnZT4zMTwvYWdlPjwvcGVyc29uPicgV0hFUkUgaWQgPSAxOwotU0VMRUNUICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAot LS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMCB8ICAgMAotKDEgcm93KQotCi0tLSBVcGRhdGUg aW5kZXhlZCBYUGF0aCAobmFtZSkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF94 bWxfdGVzdCBTRVQgZG9jID0gJzxwZXJzb24+PG5hbWU+QWxpY2UyPC9uYW1lPjxhZ2U+MzE8 L2FnZT48L3BlcnNvbj4nIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3htbF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0t LQotICAgICAgIDAgfCAgIDAKLSgxIHJvdykKLQotLS0gVmVyaWZ5IGluZGV4IHdvcmtzCi1T RUxFQ1QgaWQgRlJPTSBob3RfeG1sX3Rlc3QgV0hFUkUgeHBhdGgoJy9wZXJzb24vbmFtZS90 ZXh0KCknLCBkb2MpID0gQVJSQVlbJ0FsaWNlMic6OnRleHRdOwotRVJST1I6ICBvcGVyYXRv ciBkb2VzIG5vdCBleGlzdDogeG1sW10gPSB0ZXh0W10KLUxJTkUgMTogLi4uX3htbF90ZXN0 IFdIRVJFIHhwYXRoKCcvcGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSA9IEFSUkFZWydBLi4u Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgotREVUQUlMOiAgTm8gb3BlcmF0b3Igb2YgdGhhdCBuYW1lIGFjY2VwdHMg dGhlIGdpdmVuIGFyZ3VtZW50IHR5cGVzLgotSElOVDogIFlvdSBtaWdodCBuZWVkIHRvIGFk ZCBleHBsaWNpdCB0eXBlIGNhc3RzLgotRFJPUCBUQUJMRSBob3RfeG1sX3Rlc3Q7Ci0tLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBHSU4gaW5kZXhlcyBhbmQgYW1jb21wYXJlZGF0 dW1zIGZvciBKU09OQgotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVzdCB0aGF0 IEdJTiBpbmRleGVzIGNhbiB1c2UgYW1jb21wYXJlZGF0dW1zIHRvIGVuYWJsZSBIT1Qgd2hl biBleHRyYWN0ZWQga2V5cyBtYXRjaAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA5 LiBBIGNoYW5nZSB0byBhIEdJTi1pbmRleGVkIGNvbHVtbiBpcyBIT1QtaW5kZXhlZAorLS0K Ky0tIFRoZSByZWFkIHNpZGUgZmlsdGVycyBhIHN0YWxlIGxlYWYgdmlhIHRoZSBjcm9zc2Vk LWF0dHJpYnV0ZSBiaXRtYXAsIHdoaWNoCistLSBpcyBhY2Nlc3MtbWV0aG9kIGFnbm9zdGlj LCBzbyBhIEdJTi1jb3ZlcmVkIGNvbHVtbiBpcyBIT1QtaW5kZXhlZCBsaWtlIGFueQorLS0g b3RoZXI6IG9ubHkgdGhlIEdJTiBpbmRleCBpcyBtYWludGFpbmVkLCBhbmQgYSBHSU4gc2Nh biAod2hpY2ggcmVjaGVja3Mgb24KKy0tIHRoZSBoZWFwKSByZXR1cm5zIGNvcnJlY3QgcmVz dWx0cyBhY3Jvc3MgdGhlIGNoYWluLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVB VEUgVEFCTEUgaG90X2dpbl90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAg dGFncyB0ZXh0W10sCiAgICAgcHJvcGVydGllcyBqc29uYgogKSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOwotLS0gR0lOIGluZGV4IG9uIHRleHQgYXJyYXkKIENSRUFURSBJTkRFWCBob3Rf Z2luX3RhZ3NfaWR4IE9OIGhvdF9naW5fdGVzdCBVU0lORyBnaW4gKHRhZ3MpOwotLS0gR0lO IGluZGV4IG9uIEpTT05CIChqc29uYl9vcHMgLSBrZXlzIGFuZCB2YWx1ZXMpCiBDUkVBVEUg SU5ERVggaG90X2dpbl9wcm9wc19pZHggT04gaG90X2dpbl90ZXN0IFVTSU5HIGdpbiAocHJv cGVydGllcyk7CiBJTlNFUlQgSU5UTyBob3RfZ2luX3Rlc3QgVkFMVUVTCiAgICAgKDEsIEFS UkFZWyd0YWcxJywgJ3RhZzInXSwgJ3sia2V5MSI6InZhbDEiLCJrZXkyIjoidmFsMiJ9Jyks CiAgICAgKDIsIEFSUkFZWyd0YWczJywgJ3RhZzQnXSwgJ3sia2V5MyI6InZhbDMiLCJrZXk0 IjoidmFsNCJ9Jyk7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVz dCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAwIHwgICAw Ci0oMSByb3cpCi0KLS0tIFVwZGF0ZSB0aGF0IGNoYW5nZXMgdGFnIG9yZGVyIGJ1dCBub3Qg Y29udGVudCAtIGFmdGVyIGFtY29tcGFyZWRhdHVtcyBzaG91bGQgYmUgSE9UCi0tLSAoR0lO IGV4dHJhY3RzIHNhbWUga2V5cywganVzdCBkaWZmZXJlbnQgb3JkZXIpCistLSBSZW9yZGVy IHRhZ3M6IGEgR0lOLWNvdmVyZWQgY29sdW1uIGNoYW5nZXMsIHNvIHRoaXMgaXMgSE9ULWlu ZGV4ZWQuCiBVUERBVEUgaG90X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAn dGFnMSddIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90 X2dpbl90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAg IDEgfCAgIDAKLSgxIHJvdykKLQotLS0gVXBkYXRlIEpTT05CIHZhbHVlIChub3Qga2V5KSAt IGFmdGVyIGFtY29tcGFyZWRhdHVtcyBtYXkgYmUgSE9UIG9yIG5vbi1IT1QKLS0tIGRlcGVu ZGluZyBvbiBHSU4gb3BlcmF0b3IgY2xhc3MgKGpzb25iX29wcyBpbmRleGVzIGJvdGgga2V5 cyBhbmQgdmFsdWVzKQotVVBEQVRFIGhvdF9naW5fdGVzdCBTRVQgcHJvcGVydGllcyA9ICd7 ImtleTEiOiJ2YWwxX25ldyIsImtleTIiOiJ2YWwyIn0nIFdIRVJFIGlkID0gMTsKLVNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhv dCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDIgfCAgIDAKK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAogKDEgcm93KQogCi0tLSBBZGQgbmV3IHRhZyAtIHNo b3VsZCBOT1QgYmUgSE9UIChkaWZmZXJlbnQgZXh0cmFjdGVkIGtleXMpCi1VUERBVEUgaG90 X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMScsICd0YWc1J10gV0hF UkUgaWQgPSAxOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfZ2luX3Rlc3Qn KTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMyB8ICAgMAot KDEgcm93KQotCi0tLSBWZXJpZnkgR0lOIGluZGV4ZXMgd29yawotU0VMRUNUIGlkIEZST00g aG90X2dpbl90ZXN0IFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUnXTsKLSBpZCAKLS0tLS0K LSAgMQotKDEgcm93KQotCi1TRUxFQ1QgaWQgRlJPTSBob3RfZ2luX3Rlc3QgV0hFUkUgcHJv cGVydGllcyBAPiAneyJrZXkxIjoidmFsMV9uZXcifSc7Ci0gaWQgCi0tLS0tCi0gIDEKKyAg ICAgICAxIHwgICAxCiAoMSByb3cpCiAKIERST1AgVEFCTEUgaG90X2dpbl90ZXN0OwotLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBD bGVhbnVwCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1EUk9QIFRBQkxFIElGIEVYSVNU UyBob3RfdGVzdDsKLURST1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0X3BhcnRpdGlvbmVk IENBU0NBREU7Ci1EUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBoYXNfaG90X2NoYWluKHRleHQs IHRpZCk7Ci1EUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBwcmludF9ob3RfY2hhaW4odGV4dCwg dGlkKTsKLURST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGdldF9ob3RfY291bnQodGV4dCk7Cist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RST1AgRlVOQ1RJT04gaGFzX2hvdF9jaGFpbih0 ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBwcmludF9ob3RfY2hhaW4odGV4dCwgdGlkKTsK K0RST1AgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudCh0ZXh0KTsKIERST1AgRVhURU5TSU9OIHBh Z2VpbnNwZWN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0 ZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsCmluZGV4IGE4 ODk0MDA2MTc3Li4zNWNlN2UxY2RjZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvaG90X3VwZGF0ZXMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRh dGVzLnNxbApAQCAtMSwzNTQgKzEsMjU4IEBACiAtLQogLS0gSE9UX1VQREFURVMKLS0tIFRl c3QgSGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0ZSBkZWNpc2lvbnMKKy0tIFRlc3QgY2xh c3NpYyBIZWFwLU9ubHkgVHVwbGUgKEhPVCkgdXBkYXRlIGRlY2lzaW9ucwogLS0KLS0tIFRo aXMgdGVzdCBzeXN0ZW1hdGljYWxseSB2ZXJpZmllcyB0aGF0IEhPVCB1cGRhdGVzIGFyZSB1 c2VkIHdoZW4gYXBwcm9wcmlhdGUKLS0tIGFuZCBhdm9pZGVkIHdoZW4gbmVjZXNzYXJ5IChl LmcuLCB3aGVuIGluZGV4ZWQgY29sdW1ucyBhcmUgbW9kaWZpZWQpLgorLS0gVGhpcyBmaWxl IGNvdmVycyBIT1QgZGVjaXNpb25zIHRoYXQgYXBwbHkgaWRlbnRpY2FsbHkgb24gYSBwcmUt aG90LWluZGV4ZWQKKy0tIHNlcnZlcjogZXZlcnkgVVBEQVRFIGhlcmUgZWl0aGVyIGxlYXZl cyBhbGwgaW5kZXhlZCBhdHRyaWJ1dGVzCistLSB1bmNoYW5nZWQgb3IgdG91Y2hlcyBvbmx5 IHN1bW1hcml6aW5nLWluZGV4IChCUklOKSBhdHRyaWJ1dGVzLCBzbyB0aGUKKy0tIEhPVCB2 cyBub24tSE9UIGNob2ljZSBkb2VzIG5vdCBkZXBlbmQgb24gd2hldGhlciBTZWxlY3RpdmUg SW5kZXgKKy0tIFVwZGF0ZSAoaG90LWluZGV4ZWQpIGlzIGVuYWJsZWQuICBob3QtaW5kZXhl ZC1zcGVjaWZpYyBiZWhhdmlvdXIgKFVQREFURXMgdGhhdCBtb2RpZnkKKy0tIGEgbm9uLXN1 bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlKSBpcyBjb3ZlcmVkIGluCistLSBob3RfaW5k ZXhlZF91cGRhdGVzLnNxbC4KIC0tCi0tLSBXZSB1c2UgbXVsdGlwbGUgdmFsaWRhdGlvbiBt ZXRob2RzOgotLS0gMS4gU3RhdGlzdGljcyBmdW5jdGlvbnMgKHBnX3N0YXRfZ2V0X3R1cGxl c19ob3RfdXBkYXRlZCkKLS0tIDIuIHBhZ2VpbnNwZWN0IGV4dGVuc2lvbiBmb3IgSE9UIGNo YWluIGV4YW1pbmF0aW9uCi0tLSAzLiBFWFBMQUlOIHRvIHZlcmlmeSBpbmRleCB1c2FnZSBh ZnRlciB1cGRhdGVzCistLSBWYWxpZGF0aW9uIG1ldGhvZHM6CistLSAgIDEuIFN0YXRpc3Rp Y3MgKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZCkKKy0tICAgMi4gcGFnZWluc3Bl Y3QgZm9yIEhPVCBjaGFpbiBzdHJ1Y3R1cmUKKy0tICAgMy4gRVhQTEFJTiB0byBjb25maXJt IHRoZSBwbGFubmVyIHN0aWxsIHBpY2tzIHRoZSBpbmRleAogLS0KIAogLS0gTG9hZCByZXF1 aXJlZCBleHRlbnNpb25zCiBDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGFnZWlu c3BlY3Q7CiAKLS0tIEZ1bmN0aW9uIHRvIGdldCBIT1QgdXBkYXRlIGNvdW50CistLSBTdW0g b2YgY29tbWl0dGVkIGFuZCBpbi1wcm9ncmVzcyAobm9uLUhPVCwgSE9UKSB1cGRhdGUgY291 bnRlcnMuCiBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBnZXRfaG90X2NvdW50KHJlbF9u YW1lIHRleHQpCiBSRVRVUk5TIFRBQkxFICgKICAgICB1cGRhdGVzIEJJR0lOVCwKICAgICBo b3QgQklHSU5UCiApIEFTICQkCiBERUNMQVJFCi0gIHJlbF9vaWQgb2lkOworICAgIHJlbF9v aWQgb2lkOwogQkVHSU4KLSAgcmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsK LQotICAtLSBSZWFkIGJvdGggY29tbWl0dGVkIGFuZCB0cmFuc2FjdGlvbi1sb2NhbCBzdGF0 cwotICAtLSBJbiBhdXRvY29tbWl0IG1vZGUgKGRlZmF1bHQgZm9yIHJlZ3Jlc3Npb24gdGVz dHMpLCB0aGlzIHdvcmtzIGNvcnJlY3RseQotICAtLSBOb3RlOiBJbiBleHBsaWNpdCB0cmFu c2FjdGlvbnMgKEJFR0lOL0NPTU1JVCksIGNvbW1pdHRlZCBzdGF0cyBhbHJlYWR5Ci0gIC0t IGluY2x1ZGUgZmx1c2hlZCB1cGRhdGVzLCBzbyB0aGlzIHdvdWxkIGRvdWJsZS1jb3VudC4g Rm9yIGV4cGxpY2l0Ci0gIC0tIHRyYW5zYWN0aW9uIHRlc3RpbmcsIGNhbGwgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoKCkgYmVmb3JlIHRoaXMgZnVuY3Rpb24uCi0gIHVwZGF0ZXMgOj0g Q09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApICsKLSAg ICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJl bF9vaWQpLCAwKTsKLSAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3Rf dXBkYXRlZChyZWxfb2lkKSwgMCkgKwotICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRf eGFjdF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApOwotCi0gIFJFVFVSTiBORVhU OworICAgIHJlbF9vaWQgOj0gcmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7CisgICAgdXBkYXRl cyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkg KworICAgICAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBk YXRlZChyZWxfb2lkKSwgMCk7CisgICAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1 cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICBDT0FMRVNDRShw Z19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAg UkVUVVJOIE5FWFQ7CiBFTkQ7CiAkJCBMQU5HVUFHRSBwbHBnc3FsOwogCi0tLSBDaGVjayBp ZiBhIHR1cGxlIGlzIHBhcnQgb2YgYSBIT1QgY2hhaW4gKGhhcyBhIHByZWRlY2Vzc29yIG9u IHNhbWUgcGFnZSkKKy0tIFRydWUgaWZmIHRhcmdldF9jdGlkIGlzIHRoZSBUQUlMIG9mIGEg SE9UIGNoYWluIG9uIHRoZSBzYW1lIHBhZ2UuCiBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElP TiBoYXNfaG90X2NoYWluKHJlbF9uYW1lIHRleHQsIHRhcmdldF9jdGlkIHRpZCkKIFJFVFVS TlMgYm9vbGVhbiBBUyAkJAogREVDTEFSRQotICBibG9ja19udW0gaW50OwotICBwYWdlX2l0 ZW0gcmVjb3JkOworICAgIGJsb2NrX251bSBpbnQ7CisgICAgcGFnZV9pdGVtIHJlY29yZDsK IEJFR0lOCi0gIGJsb2NrX251bSA6PSAodGFyZ2V0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6 aW50OwotCi0gIC0tIExvb2sgZm9yIGEgZGlmZmVyZW50IHR1cGxlIG9uIHRoZSBzYW1lIHBh Z2UgdGhhdCBwb2ludHMgdG8gb3VyIHRhcmdldCB0dXBsZQotICBGT1IgcGFnZV9pdGVtIElO Ci0gICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCi0gICAgRlJPTSBoZWFwX3BhZ2Vf aXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQotICAgIFdIRVJFIGxw X2ZsYWdzID0gMQotICAgICAgQU5EIHRfY3RpZCBJUyBOT1QgTlVMTAotICAgICAgQU5EIHRf Y3RpZCA9IHRhcmdldF9jdGlkCi0gICAgICBBTkQgKCcoJyB8fCBibG9ja19udW06OnRleHQg fHwgJywnIHx8IGxwOjp0ZXh0IHx8ICcpJyk6OnRpZCAhPSB0YXJnZXRfY3RpZAotICBMT09Q Ci0gICAgUkVUVVJOIHRydWU7Ci0gIEVORCBMT09QOwotCi0gIFJFVFVSTiBmYWxzZTsKKyAg ICBibG9ja19udW0gOj0gKHRhcmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKKyAg ICBGT1IgcGFnZV9pdGVtIElOCisgICAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3Rp ZAorICAgICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUs IGJsb2NrX251bSkpCisgICAgICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAgICAgICAgIEFO RCB0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICBBTkQgdF9jdGlkID0gdGFyZ2V0X2N0 aWQKKyAgICAgICAgICBBTkQgKCcoJyB8fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IGxw Ojp0ZXh0IHx8ICcpJyk6OnRpZCAhPSB0YXJnZXRfY3RpZAorICAgIExPT1AKKyAgICAgICAg UkVUVVJOIHRydWU7CisgICAgRU5EIExPT1A7CisgICAgUkVUVVJOIGZhbHNlOwogRU5EOwog JCQgTEFOR1VBR0UgcGxwZ3NxbDsKIAotLS0gUHJpbnQgdGhlIEhPVCBjaGFpbiBzdGFydGlu ZyBmcm9tIGEgZ2l2ZW4gdHVwbGUKKy0tIEVtaXQgdGhlIEhPVCBjaGFpbiByb290ZWQgYXQg c3RhcnRfY3RpZC4KIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHByaW50X2hvdF9jaGFp bihyZWxfbmFtZSB0ZXh0LCBzdGFydF9jdGlkIHRpZCkKIFJFVFVSTlMgVEFCTEUoY2hhaW5f cG9zaXRpb24gaW50LCBjdGlkIHRpZCwgbHBfZmxhZ3MgdGV4dCwgdF9jdGlkIHRpZCwgY2hh aW5fZW5kIGJvb2xlYW4pIEFTCiAkJAogI3ZhcmlhYmxlX2NvbmZsaWN0IHVzZV9jb2x1bW4K IERFQ0xBUkUKLSAgYmxvY2tfbnVtIGludDsKLSAgbGluZV9wdHIgaW50OwotICBjdXJyZW50 X2N0aWQgdGlkIDo9IHN0YXJ0X2N0aWQ7Ci0gIG5leHRfY3RpZCB0aWQ7Ci0gIHBvc2l0aW9u IGludCA6PSAwOwotICBtYXhfaXRlcmF0aW9ucyBpbnQgOj0gMTAwOwotICBwYWdlX2l0ZW0g cmVjb3JkOwotICBmb3VuZF9wcmVkZWNlc3NvciBib29sZWFuIDo9IGZhbHNlOwotICBmbGFn c19uYW1lIHRleHQ7CisgICAgYmxvY2tfbnVtIGludDsKKyAgICBsaW5lX3B0ciBpbnQ7Cisg ICAgY3VycmVudF9jdGlkIHRpZCA6PSBzdGFydF9jdGlkOworICAgIG5leHRfY3RpZCB0aWQ7 CisgICAgcG9zaXRpb24gaW50IDo9IDA7CisgICAgbWF4X2l0ZXJhdGlvbnMgaW50IDo9IDEw MDsKKyAgICBwYWdlX2l0ZW0gcmVjb3JkOworICAgIGZvdW5kX3ByZWRlY2Vzc29yIGJvb2xl YW4gOj0gZmFsc2U7CisgICAgZmxhZ3NfbmFtZSB0ZXh0OwogQkVHSU4KLSAgYmxvY2tfbnVt IDo9IChzdGFydF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKLQotICAtLSBGaW5kIHRo ZSBwcmVkZWNlc3NvciAob2xkIHR1cGxlIHBvaW50aW5nIHRvIG91ciBzdGFydF9jdGlkKQot ICBGT1IgcGFnZV9pdGVtIElOCi0gICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCi0g ICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19u dW0pKQotICAgIFdIRVJFIGxwX2ZsYWdzID0gMQotICAgICAgQU5EIHRfY3RpZCA9IHN0YXJ0 X2N0aWQKLSAgTE9PUAotICAgIGN1cnJlbnRfY3RpZCA6PSAoJygnIHx8IGJsb2NrX251bTo6 dGV4dCB8fCAnLCcgfHwgcGFnZV9pdGVtLmxwOjp0ZXh0IHx8ICcpJyk6OnRpZDsKLSAgICBm b3VuZF9wcmVkZWNlc3NvciA6PSB0cnVlOwotICAgIEVYSVQ7Ci0gIEVORCBMT09QOwotCi0g IC0tIElmIG5vIHByZWRlY2Vzc29yIGZvdW5kLCBzdGFydCB3aXRoIHRoZSBnaXZlbiBjdGlk Ci0gIElGIE5PVCBmb3VuZF9wcmVkZWNlc3NvciBUSEVOCi0gICAgY3VycmVudF9jdGlkIDo9 IHN0YXJ0X2N0aWQ7Ci0gIEVORCBJRjsKLQotICAtLSBGb2xsb3cgdGhlIGNoYWluIGZvcndh cmQKLSAgV0hJTEUgcG9zaXRpb24gPCBtYXhfaXRlcmF0aW9ucyBMT09QCi0gICAgbGluZV9w dHIgOj0gKGN1cnJlbnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjppbnQ7CisgICAgYmxvY2tf bnVtIDo9IChzdGFydF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKIAogICAgIEZPUiBw YWdlX2l0ZW0gSU4KLSAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAotICAgICAg RlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0p KQotICAgICAgV0hFUkUgbHAgPSBsaW5lX3B0cgorICAgICAgICBTRUxFQ1QgbHAsIGxwX2Zs YWdzLCB0X2N0aWQKKyAgICAgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdl KHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgICAgICBXSEVSRSBscF9mbGFncyA9IDEKKyAg ICAgICAgICBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZAogICAgIExPT1AKLSAgICAgIC0tIE1h cCBscF9mbGFncyB0byBuYW1lcwotICAgICAgZmxhZ3NfbmFtZSA6PSBDQVNFIHBhZ2VfaXRl bS5scF9mbGFncwotICAgICAgICBXSEVOIDAgVEhFTiAndW51c2VkICgwKScKLSAgICAgICAg V0hFTiAxIFRIRU4gJ25vcm1hbCAoMSknCi0gICAgICAgIFdIRU4gMiBUSEVOICdyZWRpcmVj dCAoMiknCi0gICAgICAgIFdIRU4gMyBUSEVOICdkZWFkICgzKScKLSAgICAgICAgRUxTRSAn dW5rbm93biAoJyB8fCBwYWdlX2l0ZW0ubHBfZmxhZ3M6OnRleHQgfHwgJyknCi0gICAgICBF TkQ7Ci0KLSAgICAgIFJFVFVSTiBRVUVSWSBTRUxFQ1QKLSAgICAgICAgcG9zaXRpb24sCi0g ICAgICAgIGN1cnJlbnRfY3RpZCwKLSAgICAgICAgZmxhZ3NfbmFtZSwKLSAgICAgICAgcGFn ZV9pdGVtLnRfY3RpZCwKLSAgICAgICAgKHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBw YWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkKTo6Ym9vbGVhbgotICAgICAgOwotCi0g ICAgICBJRiBwYWdlX2l0ZW0udF9jdGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9 IGN1cnJlbnRfY3RpZCBUSEVOCi0gICAgICAgIFJFVFVSTjsKLSAgICAgIEVORCBJRjsKLQot ICAgICAgbmV4dF9jdGlkIDo9IHBhZ2VfaXRlbS50X2N0aWQ7Ci0KLSAgICAgIElGIChuZXh0 X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ICE9IGJsb2NrX251bSBUSEVOCi0gICAgICAg IFJFVFVSTjsKLSAgICAgIEVORCBJRjsKLQotICAgICAgY3VycmVudF9jdGlkIDo9IG5leHRf Y3RpZDsKLSAgICAgIHBvc2l0aW9uIDo9IHBvc2l0aW9uICsgMTsKKyAgICAgICAgY3VycmVu dF9jdGlkIDo9ICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBwYWdlX2l0ZW0u bHA6OnRleHQgfHwgJyknKTo6dGlkOworICAgICAgICBmb3VuZF9wcmVkZWNlc3NvciA6PSB0 cnVlOworICAgICAgICBFWElUOwogICAgIEVORCBMT09QOwotCi0gICAgSUYgcG9zaXRpb24g PSAwIFRIRU4KLSAgICAgIFJFVFVSTjsKKyAgICBJRiBOT1QgZm91bmRfcHJlZGVjZXNzb3Ig VEhFTgorICAgICAgICBjdXJyZW50X2N0aWQgOj0gc3RhcnRfY3RpZDsKICAgICBFTkQgSUY7 Ci0gIEVORCBMT09QOworCisgICAgV0hJTEUgcG9zaXRpb24gPCBtYXhfaXRlcmF0aW9ucyBM T09QCisgICAgICAgIGxpbmVfcHRyIDo9IChjdXJyZW50X2N0aWQ6OnRleHQ6OnBvaW50KVsx XTo6aW50OworICAgICAgICBGT1IgcGFnZV9pdGVtIElOCisgICAgICAgICAgICBTRUxFQ1Qg bHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgICAgICAgIEZST00gaGVhcF9wYWdlX2l0ZW1z KGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICAgICAgICAgIFdIRVJF IGxwID0gbGluZV9wdHIKKyAgICAgICAgTE9PUAorICAgICAgICAgICAgZmxhZ3NfbmFtZSA6 PSBDQVNFIHBhZ2VfaXRlbS5scF9mbGFncworICAgICAgICAgICAgICAgIFdIRU4gMCBUSEVO ICd1bnVzZWQgKDApJworICAgICAgICAgICAgICAgIFdIRU4gMSBUSEVOICdub3JtYWwgKDEp JworICAgICAgICAgICAgICAgIFdIRU4gMiBUSEVOICdyZWRpcmVjdCAoMiknCisgICAgICAg ICAgICAgICAgV0hFTiAzIFRIRU4gJ2RlYWQgKDMpJworICAgICAgICAgICAgICAgIEVMU0Ug J3Vua25vd24gKCcgfHwgcGFnZV9pdGVtLmxwX2ZsYWdzOjp0ZXh0IHx8ICcpJworICAgICAg ICAgICAgRU5EOworICAgICAgICAgICAgUkVUVVJOIFFVRVJZIFNFTEVDVAorICAgICAgICAg ICAgICAgIHBvc2l0aW9uLAorICAgICAgICAgICAgICAgIGN1cnJlbnRfY3RpZCwKKyAgICAg ICAgICAgICAgICBmbGFnc19uYW1lLAorICAgICAgICAgICAgICAgIHBhZ2VfaXRlbS50X2N0 aWQsCisgICAgICAgICAgICAgICAgKHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBwYWdl X2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkKTo6Ym9vbGVhbjsKKworICAgICAgICAgICAg SUYgcGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJy ZW50X2N0aWQgVEhFTgorICAgICAgICAgICAgICAgIFJFVFVSTjsKKyAgICAgICAgICAgIEVO RCBJRjsKKyAgICAgICAgICAgIG5leHRfY3RpZCA6PSBwYWdlX2l0ZW0udF9jdGlkOworICAg ICAgICAgICAgSUYgKG5leHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQgIT0gYmxvY2tf bnVtIFRIRU4KKyAgICAgICAgICAgICAgICBSRVRVUk47CisgICAgICAgICAgICBFTkQgSUY7 CisgICAgICAgICAgICBjdXJyZW50X2N0aWQgOj0gbmV4dF9jdGlkOworICAgICAgICAgICAg cG9zaXRpb24gOj0gcG9zaXRpb24gKyAxOworICAgICAgICBFTkQgTE9PUDsKKyAgICAgICAg SUYgcG9zaXRpb24gPSAwIFRIRU4KKyAgICAgICAgICAgIFJFVFVSTjsKKyAgICAgICAgRU5E IElGOworICAgIEVORCBMT09QOwogRU5EOwogJCQgTEFOR1VBR0UgcGxwZ3NxbDsKIAotLS0g QmFzaWMgSE9UIHVwZGF0ZSAodXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbikKKworLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCistLSAxLiBCYXNpYyBIT1Q6IHVwZGF0ZSBvZiBhIG5vbi1p bmRleGVkIGNvbHVtbgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUgVEFCTEUg aG90X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtFWSwKICAgICBpbmRleGVkX2NvbCBp bnQsCiAgICAgbm9uX2luZGV4ZWRfY29sIHRleHQKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKLQogQ1JFQVRFIElOREVYIGhvdF90ZXN0X2luZGV4ZWRfaWR4IE9OIGhvdF90ZXN0KGlu ZGV4ZWRfY29sKTsKIAogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdp bml0aWFsJyk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2luaXRp YWwnKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMywgMzAwLCAnaW5pdGlhbCcp OwogCi0tLSBHZXQgYmFzZWxpbmUKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gU2hv dWxkIGJlIEhPVCB1cGRhdGVzIChvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiBtb2RpZmllZCkK Ky0tIFRocmVlIGNsYXNzaWMgSE9UIHVwZGF0ZXMgKG5vbi1pbmRleGVkIGNvbCkuCiBVUERB VEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMScgV0hFUkUgaWQg PSAxOwogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDIn IFdIRVJFIGlkID0gMjsKIFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0g J3VwZGF0ZWQzJyBXSEVSRSBpZCA9IDM7Ci0KLS0tIFZlcmlmeSBIT1QgdXBkYXRlcyBvY2N1 cnJlZAotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotCi0tLSBE dW1wIHRoZSBIT1QgY2hhaW4gYmVmb3JlIFZBQ1VVTWluZwotV0lUSCBjdXJyZW50X3R1cGxl IEFTICgKLSAgU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDEKLSkKLVNF TEVDVAotICBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCkg QVMgaGFzX2NoYWluLAotICBjaGFpbl9wb3NpdGlvbiwKLSAgcHJpbnRfaG90X2NoYWluLmN0 aWQsCi0gIGxwX2ZsYWdzLAotICB0X2N0aWQKLUZST00gY3VycmVudF90dXBsZSwKLUxBVEVS QUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7Ci0K LS0tIFZhY3V1bSB0aGUgcmVsYXRpb24sIGV4cGVjdCB0aGUgSE9UIGNoYWluIHRvIGNvbGxh cHNlCi1WQUNVVU0gaG90X3Rlc3Q7Ci0KLS0tIFNob3cgdGhhdCB0aGVyZSBpcyBubyBjaGFp biBhZnRlciB2YWN1dW0KLVdJVEggY3VycmVudF90dXBsZSBBUyAoCi0gIFNFTEVDVCBjdGlk IEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxCi0pCi1TRUxFQ1QKLSAgaGFzX2hvdF9jaGFp bignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKLSAgY2hh aW5fcG9zaXRpb24sCi0gIHByaW50X2hvdF9jaGFpbi5jdGlkLAotICBscF9mbGFncywKLSAg dF9jdGlkCi1GUk9NIGN1cnJlbnRfdHVwbGUsCi1MQVRFUkFMIHByaW50X2hvdF9jaGFpbign aG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpOwotCi0tLSBOb24tSE9UIHVwZGF0ZSAo dXBkYXRlIGluZGV4ZWQgY29sdW1uKQotVVBEQVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2Nv bCA9IDE1MCBXSEVSRSBpZCA9IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF90ZXN0Jyk7Ci0KLS0tIFZlcmlmeSBpbmRleCB3YXMgdXBkYXRlZCAobmV3IHZhbHVlIGZp bmRhYmxlKQotU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOwotRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9j b2wgPSAxNTA7Ci1TRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUg aW5kZXhlZF9jb2wgPSAxNTA7Ci0KLS0tIFZlcmlmeSBvbGQgdmFsdWUgbm8gbG9uZ2VyIGlu IGluZGV4Ci1FWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdI RVJFIGluZGV4ZWRfY29sID0gMTAwOwotU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUg aW5kZXhlZF9jb2wgPSAxMDA7Ci1SRVNFVCBlbmFibGVfc2Vxc2NhbjsKLQotLS0gQWxsLW9y LW5vbmUgcHJvcGVydHk6IHVwZGF0aW5nIG9uZSBpbmRleGVkIGNvbHVtbiByZXF1aXJlcyBB TEwgaW5kZXggdXBkYXRlcwotRFJPUCBUQUJMRSBob3RfdGVzdDsKLQotQ1JFQVRFIFRBQkxF IGhvdF90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgY29sX2EgaW50LAot ICAgIGNvbF9iIGludCwKLSAgICBjb2xfYyBpbnQsCi0gICAgbm9uX2luZGV4ZWQgdGV4dAot KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCi1DUkVBVEUgSU5ERVggaG90X3Rlc3RfYV9p ZHggT04gaG90X3Rlc3QoY29sX2EpOwotQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JfaWR4IE9O IGhvdF90ZXN0KGNvbF9iKTsKLUNSRUFURSBJTkRFWCBob3RfdGVzdF9jX2lkeCBPTiBob3Rf dGVzdChjb2xfYyk7Ci0KLUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIw LCAzMCwgJ2luaXRpYWwnKTsKLQotLS0gVXBkYXRlIG9ubHkgY29sX2EgLSBzaG91bGQgTk9U IGJlIEhPVCBiZWNhdXNlIGFuIGluZGV4ZWQgY29sdW1uIGNoYW5nZWQKLS0tIFRoaXMgbWVh bnMgQUxMIGluZGV4ZXMgbXVzdCBiZSB1cGRhdGVkIChhbGwtb3Itbm9uZSBwcm9wZXJ0eSkK LVVQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNSBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIE5vdyB1cGRhdGUgb25seSBub24taW5kZXhlZCBjb2x1 bW4gLSBzaG91bGQgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkID0g J3VwZGF0ZWQnOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwor LS0gQ2hhaW4tb2YtMSBvbiBpZD0xIHN0aWxsIGhhcyBhIHByZWRlY2Vzc29yIGxpbmUgcG9p bnRlci4KK1dJVEggY3VycmVudF90dXBsZSBBUyAoU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVz dCBXSEVSRSBpZCA9IDEpCitTRUxFQ1QgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJy ZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKKyAgICAgICBjaGFpbl9wb3NpdGlvbiwg cHJpbnRfaG90X2NoYWluLmN0aWQsIGxwX2ZsYWdzLCB0X2N0aWQKK0ZST00gY3VycmVudF90 dXBsZSwgTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBs ZS5jdGlkKTsKIAotLS0gUGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBvdXRzaWRl IHByZWRpY2F0ZSAoY29uc2VydmF0aXZlID0gbm9uLUhPVCkKLURST1AgVEFCTEUgaG90X3Rl c3Q7Ci0KLUNSRUFURSBUQUJMRSBob3RfdGVzdCAoCi0gICAgaWQgaW50IFBSSU1BUlkgS0VZ LAotICAgIHN0YXR1cyB0ZXh0LAotICAgIGRhdGEgdGV4dAotKSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOwotCi0tLSBQYXJ0aWFsIGluZGV4IG9ubHkgY292ZXJzIHN0YXR1cyA9ICdhY3Rp dmUnCi1DUkVBVEUgSU5ERVggaG90X3Rlc3RfYWN0aXZlX2lkeCBPTiBob3RfdGVzdChzdGF0 dXMpIFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOwotCi1JTlNFUlQgSU5UTyBob3RfdGVzdCBW QUxVRVMgKDEsICdhY3RpdmUnLCAnZGF0YTEnKTsKLUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZB TFVFUyAoMiwgJ2luYWN0aXZlJywgJ2RhdGEyJyk7Ci1JTlNFUlQgSU5UTyBob3RfdGVzdCBW QUxVRVMgKDMsICdkZWxldGVkJywgJ2RhdGEzJyk7Ci0KLS0tIFVwZGF0ZSBub24taW5kZXhl ZCBjb2x1bW4gb24gJ2FjdGl2ZScgcm93IChpbiBwcmVkaWNhdGUsIHN0YXR1cyB1bmNoYW5n ZWQpCi0tLSBTaG91bGQgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBk YXRlZDEnIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90 X3Rlc3QnKTsKLQotLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnaW5hY3RpdmUn IHJvdyAob3V0c2lkZSBwcmVkaWNhdGUpCi0tLSBTaG91bGQgYmUgSE9UCi1VUERBVEUgaG90 X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKLVNFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKy0tIFZBQ1VVTSBjb2xsYXBzZXMgdGhl IGNoYWluLgorVkFDVVVNIGhvdF90ZXN0OwogCi0tLSBVcGRhdGUgc3RhdHVzIGZyb20gJ2lu YWN0aXZlJyB0byAnZGVsZXRlZCcgKGJvdGggb3V0c2lkZSBwcmVkaWNhdGUpCi0tLSBQb3N0 Z3JlU1FMIGlzIGNvbnNlcnZhdGl2ZTogaGVhcCBpbnNlcnQgaGFwcGVucyBiZWZvcmUgcHJl ZGljYXRlIGNoZWNrCi0tLSBTbyB0aGlzIGlzIE5PTi1IT1QgZXZlbiB0aG91Z2ggYm90aCB2 YWx1ZXMgYXJlIG91dHNpZGUgcHJlZGljYXRlCi1VUERBVEUgaG90X3Rlc3QgU0VUIHN0YXR1 cyA9ICdkZWxldGVkJyBXSEVSRSBpZCA9IDI7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF90ZXN0Jyk7CitXSVRIIGN1cnJlbnRfdHVwbGUgQVMgKFNFTEVDVCBjdGlkIEZS T00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxKQorU0VMRUNUIGhhc19ob3RfY2hhaW4oJ2hvdF90 ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgICAgICAgY2hhaW5f cG9zaXRpb24sIHByaW50X2hvdF9jaGFpbi5jdGlkLCBscF9mbGFncywgdF9jdGlkCitGUk9N IGN1cnJlbnRfdHVwbGUsIExBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1 cnJlbnRfdHVwbGUuY3RpZCk7CiAKLS0tIFZlcmlmeSBpbmRleCBzdGlsbCB3b3JrcyBmb3Ig J2FjdGl2ZScgcm93cwotU0VMRUNUIGlkLCBzdGF0dXMgRlJPTSBob3RfdGVzdCBXSEVSRSBz dGF0dXMgPSAnYWN0aXZlJzsKLQotLS0gT25seSBCUklOIChzdW1tYXJpemluZykgaW5kZXhl cyBvbiBub24tUEsgY29sdW1ucwogRFJPUCBUQUJMRSBob3RfdGVzdDsKIAorLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSAyLiBTdW1tYXJpemluZyBpbmRleGVzIChCUklOKSBkbyBu b3QgYmxvY2sgSE9UCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBo b3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkgS0VZLAogICAgIHRzIHRpbWVzdGFtcCwK ICAgICB2YWx1ZSBpbnQsCiAgICAgYnJpbl9jb2wgaW50CiApIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCk7Ci0KIENSRUFURSBJTkRFWCBob3RfdGVzdF90c19icmluIE9OIGhvdF90ZXN0IFVT SU5HIGJyaW4odHMpOwogQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2JyaW4gT04g aG90X3Rlc3QgVVNJTkcgYnJpbihicmluX2NvbCk7CiAKIElOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOwogCi0tLSBVcGRhdGUgYm90 aCBCUklOIGNvbHVtbnMgLSBzaG91bGQgc3RpbGwgYmUgSE9UIChvbmx5IHN1bW1hcml6aW5n IGluZGV4ZXMpCistLSBCUklOIGNvbHVtbnMgYXJlIHN1bW1hcml6aW5nOyB1cGRhdGluZyB0 aGVtIHN0YXlzIGNsYXNzaWMgSE9UIGV2ZW4KKy0tIHRob3VnaCB0aGVpciB2YWx1ZXMgY2hh bmdlLgogVVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcyMDI0LTAxLTAyJywgYnJpbl9jb2wg PSAyMDAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gVXBk YXRlIG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBhbHNvIGJlIEhPVAorLS0gTm9uLWlu ZGV4ZWQgY29sdW1uOiBhbHNvIEhPVC4KIFVQREFURSBob3RfdGVzdCBTRVQgdmFsdWUgPSAy MDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwog U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogCi0tLSBUT0FTVCBh bmQgSE9UOiBUT0FTVGVkIGNvbHVtbnMgY2FuIHBhcnRpY2lwYXRlIGluIEhPVAogRFJPUCBU QUJMRSBob3RfdGVzdDsKIAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAzLiBUT0FT VCBwYXJ0aWNpcGF0ZXMgaW4gSE9UIChub24taW5kZXhlZCBjb2x1bW4gcGF0aHMgb25seSkK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgaW5kZXhlZF9jb2wgaW50LAogICAgIGxhcmdl X3RleHQgdGV4dCwKICAgICBzbWFsbF90ZXh0IHRleHQKICkgV0lUSCAoZmlsbGZhY3RvciA9 IDUwKTsKLQogQ1JFQVRFIElOREVYIGhvdF90ZXN0X2lkeCBPTiBob3RfdGVzdChpbmRleGVk X2NvbCk7CiAKLS0tIEluc2VydCByb3cgd2l0aCBUT0FTVGVkIGNvbHVtbiAoPiAyS0IpCiBJ TlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgcmVwZWF0KCd4JywgMzAwMCks ICdzbWFsbCcpOwogCi0tLSBVcGRhdGUgbm9uLWluZGV4ZWQsIG5vbi1UT0FTVGVkIGNvbHVt biAtIHNob3VsZCBiZSBIT1QKKy0tIE5vbi1pbmRleGVkLCBub24tVE9BU1QgY29sdW1uOiBI T1QuCiBVUERBVEUgaG90X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBkYXRlZCc7CitTRUxF Q1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIFVwZGF0ZSBUT0FTVGVkIGNvbHVtbiAtIHNob3Vs ZCBiZSBIT1QgaWYgaW5kZXhlZCBjb2x1bW4gdW5jaGFuZ2VkCistLSBUT0FTVCBjb2x1bW4s IGluZGV4ZWRfY29sIHVuY2hhbmdlZDogSE9ULgogVVBEQVRFIGhvdF90ZXN0IFNFVCBsYXJn ZV90ZXh0ID0gcmVwZWF0KCd5JywgMzAwMCk7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAK LS0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiAtIHNob3VsZCBOT1QgYmUgSE9UCi1VUERBVEUg aG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMjAwOwotU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdCcpOwotCi0tLSBVbmlxdWUgY29uc3RyYWludCAodW5pcXVlIGlu ZGV4KSBiZWhhdmVzIGxpa2UgcmVndWxhciBpbmRleAogRFJPUCBUQUJMRSBob3RfdGVzdDsK IAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA0LiBQYXJ0aWFsIGluZGV4IHdoZXJl IHVwZGF0ZSBsZWF2ZXMgaW5kZXhlZCBhdHRycyB1bmNoYW5nZWQKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFS WSBLRVksCi0gICAgdW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIHN0YXR1cyB0ZXh0LAog ICAgIGRhdGEgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVY IGhvdF90ZXN0X2FjdGl2ZV9pZHggT04gaG90X3Rlc3Qoc3RhdHVzKSBXSEVSRSBzdGF0dXMg PSAnYWN0aXZlJzsKIAotSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdk YXRhMScpOwotSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdkYXRhMicp OworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAnYWN0aXZlJywgJ2RhdGExJyk7 CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsICdpbmFjdGl2ZScsICdkYXRhMicp OworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgzLCAnZGVsZXRlZCcsICdkYXRhMycp OwogCi0tLSBVcGRhdGUgZGF0YSAobm9uLWluZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAotVVBE QVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnOworLS0gVXBkYXRlIGRhdGEgb24g YSByb3cgd2hvc2Ugc3RhdHVzIG1hdGNoZXMgdGhlIHBhcnRpYWwgcHJlZGljYXRlOiBIT1Qu CitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsK K1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gVmVyaWZ5IHVuaXF1ZSBjb25zdHJhaW50 IHN0aWxsIGVuZm9yY2VkCi1TRUxFQ1QgaWQsIHVuaXF1ZV9jb2wsIGRhdGEgRlJPTSBob3Rf dGVzdCBPUkRFUiBCWSBpZDsKKy0tIFVwZGF0ZSBkYXRhIG9uIGEgcm93IG91dHNpZGUgdGhl IHByZWRpY2F0ZTogSE9ULgorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQy JyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIFRoaXMgc2hv dWxkIGZhaWwgKHVuaXF1ZSB2aW9sYXRpb24pCi1VUERBVEUgaG90X3Rlc3QgU0VUIHVuaXF1 ZV9jb2wgPSAxMDAgV0hFUkUgaWQgPSAyOworU0VMRUNUIGlkLCBzdGF0dXMgRlJPTSBob3Rf dGVzdCBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsKIAotLS0gTXVsdGktY29sdW1uIGluZGV4 OiBhbnkgY29sdW1uIGNoYW5nZSA9IG5vbi1IT1QKIERST1AgVEFCTEUgaG90X3Rlc3Q7CiAK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNS4gTXVsdGktY29sdW1uIGJ0cmVlOiB1 cGRhdGUgb2Ygbm9uLWluZGV4ZWQgY29sdW1uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkgS0VZLAogICAg IGNvbF9hIGludCwKQEAgLTM1NiwzNiArMjYwLDQ1IEBAIENSRUFURSBUQUJMRSBob3RfdGVz dCAoCiAgICAgY29sX2MgaW50LAogICAgIGRhdGEgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOwotCiBDUkVBVEUgSU5ERVggaG90X3Rlc3RfYWJfaWR4IE9OIGhvdF90ZXN0KGNv bF9hLCBjb2xfYik7CiAKIElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIw LCAzMCwgJ2RhdGEnKTsKIAotLS0gVXBkYXRlIGNvbF9hIChwYXJ0IG9mIG11bHRpLWNvbHVt biBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xf YSA9IDE1OworLS0gY29sX2Mgbm90IGluIGFueSBpbmRleDogSE9ULgorVVBEQVRFIGhvdF90 ZXN0IFNFVCBjb2xfYyA9IDM1OworLS0gZGF0YSBub3QgaW4gYW55IGluZGV4OiBIT1QuCitV UERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCc7CitTRUxFQ1QgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0Jyk7CiAKLS0tIFJlc2V0Ci1VUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9hID0gMTA7Ci0K LS0tIFVwZGF0ZSBjb2xfYiAocGFydCBvZiBtdWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxk IE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2IgPSAyNTsKLVNFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKK0RST1AgVEFCTEUgaG90X3Rlc3Q7 CiAKLS0tIFJlc2V0Ci1VUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9iID0gMjA7Ci1TRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDYuIFVuaXF1ZSBpbmRleDogdXBkYXRlIG9mIG5vbi1pbmRleGVkIGNvbHVt biArIHVuaXF1ZW5lc3MgZW5mb3JjZW1lbnQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor Q1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAg dW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFj dG9yID0gNTApOwogCi0tLSBVcGRhdGUgY29sX2MgKG5vdCBpbmRleGVkKSAtIHNob3VsZCBi ZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2MgPSAzNTsKK0lOU0VSVCBJTlRPIGhv dF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMiwgMjAwLCAnZGF0YTInKTsKIAotLS0gVXBkYXRlIGRhdGEgKG5vdCBpbmRl eGVkKSAtIHNob3VsZCBiZSBIT1QKIFVQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRh dGVkJzsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gUGFydGl0aW9uZWQgdGFibGVz OiBIT1Qgd29ya3Mgd2l0aGluIHBhcnRpdGlvbnMKLURST1AgVEFCTEUgSUYgRVhJU1RTIGhv dF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7CitTRUxFQ1QgaWQsIHVuaXF1ZV9jb2wsIGRh dGEgRlJPTSBob3RfdGVzdCBPUkRFUiBCWSBpZDsKIAorLS0gVW5pcXVlIGNvbnN0cmFpbnQg c3RpbGwgZW5mb3JjZWQgb24gYW55IHBhdGguCitVUERBVEUgaG90X3Rlc3QgU0VUIHVuaXF1 ZV9jb2wgPSAxMDAgV0hFUkUgaWQgPSAyOworCitEUk9QIFRBQkxFIGhvdF90ZXN0OworCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcuIFBhcnRpdGlvbmVkIHRhYmxlczogSE9U IHdpdGhpbiBhIHBhcnRpdGlvbgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUg VEFCTEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgKAogICAgIGlkIGludCwKICAgICBwYXJ0aXRp b25fa2V5IGludCwKQEAgLTQwNCwyMDIgKzMxNyw4MiBAQCBDUkVBVEUgSU5ERVggaG90X3Rl c3RfcGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0aW9uZWQoaW5kZXhlZF9jb2wpOwogSU5T RVJUIElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQgVkFMVUVTICgxLCA1MCwgMTAwLCAnaW5p dGlhbDEnKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFZBTFVFUyAoMiwg MTUwLCAyMDAsICdpbml0aWFsMicpOwogCi0tLSBVcGRhdGUgaW4gcGFydGl0aW9uIDEgKG5v bi1pbmRleGVkIGNvbHVtbikgLSBzaG91bGQgYmUgSE9UCiBVUERBVEUgaG90X3Rlc3RfcGFy dGl0aW9uZWQgU0VUIGRhdGEgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsKLQotLS0gVXBk YXRlIGluIHBhcnRpdGlvbiAyIChub24taW5kZXhlZCBjb2x1bW4pIC0gc2hvdWxkIGJlIEhP VAogVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3VwZGF0ZWQyJyBX SEVSRSBpZCA9IDI7CiAKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNF TEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFydDEnKTsKK1NFTEVDVCBw Z19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X3Rlc3RfcGFydDInKTsKIAotLS0gVmVyaWZ5IGluZGV4ZXMgd29yayBvbiBwYXJ0 aXRpb25zCiBTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRl eGVkX2NvbCA9IDEwMDsKIFNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdI RVJFIGluZGV4ZWRfY29sID0gMjAwOwogCi0tLSBVcGRhdGUgaW5kZXhlZCBjb2x1bW4gaW4g cGFydGl0aW9uIC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdF9wYXJ0aXRp b25lZCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOwotU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOwotCi0tLSBWZXJpZnkgaW5kZXgg d2FzIHVwZGF0ZWQKLVNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJF IGluZGV4ZWRfY29sID0gMTUwOwotCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU cmlnZ2VyIG1vZGlmaWNhdGlvbnM6IGhlYXBfbW9kaWZ5X3R1cGxlKCkgYW5kIEhPVAotLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVzdCB0aGF0IHdlIGNvcnJlY3RseSBkZXRl Y3Qgd2hlbiB0cmlnZ2VycyBtb2RpZnkgaW5kZXhlZCBjb2x1bW5zIHZpYQotLS0gaGVhcF9t b2RpZnlfdHVwbGUoKSwgZXZlbiB3aGVuIHRob3NlIGNvbHVtbnMgYXJlbid0IGluIHRoZSBV UERBVEUncyBTRVQgY2xhdXNlCi0KLUNSRUFURSBUQUJMRSBob3RfdHJpZ2dlcl90ZXN0ICgK LSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgdHJpZ2dlcmVkX2NvbCBpbnQsCi0gICAg ZGF0YSB0ZXh0Ci0pIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0KLUNSRUFURSBJTkRFWCBo b3RfdHJpZ2dlcl9pZHggT04gaG90X3RyaWdnZXJfdGVzdCh0cmlnZ2VyZWRfY29sKTsKLQot LS0gQ3JlYXRlIGEgdHJpZ2dlciB0aGF0IG1vZGlmaWVzIGFuIGluZGV4ZWQgY29sdW1uCi1D UkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpCi1SRVRV Uk5TIFRSSUdHRVIgQVMgJCQKLUJFR0lOCi0gICAgTkVXLnRyaWdnZXJlZF9jb2wgPSBORVcu dHJpZ2dlcmVkX2NvbCArIDE7Ci0gICAgUkVUVVJOIE5FVzsKLUVORDsKLSQkIExBTkdVQUdF IHBscGdzcWw7Ci0KLUNSRUFURSBUUklHR0VSIGJlZm9yZV91cGRhdGVfbW9kaWZ5Ci0gICAg QkVGT1JFIFVQREFURSBPTiBob3RfdHJpZ2dlcl90ZXN0Ci0gICAgRk9SIEVBQ0ggUk9XCi0g ICAgRVhFQ1VURSBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpOwotCi1JTlNFUlQg SU5UTyBob3RfdHJpZ2dlcl90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOwotCi1T RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90cmlnZ2VyX3Rlc3QnKTsKLQotLS0g VXBkYXRlIG9ubHkgZGF0YSBjb2x1bW4sIGJ1dCB0cmlnZ2VyIG1vZGlmaWVzIGluZGV4ZWQg Y29sdW1uCi0tLSBTaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIHRyaWdnZXIgbW9kaWZpZWQg YW4gaW5kZXhlZCBjb2x1bW4KLVVQREFURSBob3RfdHJpZ2dlcl90ZXN0IFNFVCBkYXRhID0g J3VwZGF0ZWQnIFdIRVJFIGlkID0gMTsKLQotLS0gVmVyaWZ5IGl0IHdhcyBOT1QgYSBIT1Qg dXBkYXRlIChpbmRleGVkIGNvbHVtbiB3YXMgbW9kaWZpZWQgYnkgdHJpZ2dlcikKLVNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3RyaWdnZXJfdGVzdCcpOwotCi0tLSBWZXJp ZnkgdGhlIHRyaWdnZXJlZCBjb2x1bW4gd2FzIGFjdHVhbGx5IG1vZGlmaWVkCi1TRUxFQ1Qg dHJpZ2dlcmVkX2NvbCBGUk9NIGhvdF90cmlnZ2VyX3Rlc3QgV0hFUkUgaWQgPSAxOwotCi1E Uk9QIFRBQkxFIGhvdF90cmlnZ2VyX3Rlc3QgQ0FTQ0FERTsKLURST1AgRlVOQ1RJT04gbW9k aWZ5X3RyaWdnZXJlZF9jb2woKTsKLQotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g SlNPTkIgZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNraW5nCi0t LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUZXN0IHRoYXQgdXBkYXRlcyB0byBub24t aW5kZXhlZCBKU09OQiBwYXRocyBjYW4gYmUgSE9UIHVwZGF0ZXMKK0RST1AgVEFCTEUgaG90 X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKIAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistLSA4LiBKU09OQiBleHByZXNzaW9uIGluZGV4OiBub24taW5kZXhlZCBwYXRoIGNoYW5n ZSBpcyBIT1QKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF9q c29uYl90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgZGF0YSBqc29uYgog KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCi0tLSBDcmVhdGUgZXhwcmVzc2lvbiBpbmRl eCBvbiBhIHNwZWNpZmljIEpTT04gcGF0aAogQ1JFQVRFIElOREVYIGhvdF9qc29uYl9uYW1l X2lkeCBPTiBob3RfanNvbmJfdGVzdCAoKGRhdGEtPj4nbmFtZScpKTsKIAogSU5TRVJUIElO VE8gaG90X2pzb25iX3Rlc3QgVkFMVUVTCiAgICAgKDEsICd7Im5hbWUiOiJBbGljZSIsImFn ZSI6MzAsImNpdHkiOiJOWUMifScpLAogICAgICgyLCAneyJuYW1lIjoiQm9iIiwiYWdlIjoy NSwiY2l0eSI6IkxBIn0nKTsKIAotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf anNvbmJfdGVzdCcpOwotCi0tLSBVcGRhdGUgbm9uLWluZGV4ZWQgSlNPTiBwYXRoIChhZ2Up IC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24KKy0tIFRoZSBqc29uYiBj b2x1bW4gaXMgdGhlIGV4cHJlc3Npb24gaW5kZXgncyBpbnB1dCwgc28gSE9ULWluZGV4ZWQg aXMKKy0tIGRpc3F1YWxpZmllZCAoZXhwcmVzc2lvbiBpbmRleGVzIGFyZSBub3QgeWV0IHN1 cHBvcnRlZCkgYW5kIHRoZSBqc29uYgorLS0gY2hhbmdlIGJsb2NrcyBjbGFzc2ljIEhPVDog bm9uLUhPVCB1cGRhdGUuCiBVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29u Yl9zZXQoZGF0YSwgJ3thZ2V9JywgJzMxJykgV0hFUkUgaWQgPSAxOwotCi1TRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7Ci0KLS0tIFVwZGF0ZSBpbmRl eGVkIEpTT04gcGF0aCAobmFtZSkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF9q c29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7bmFtZX0nLCAnIkFsaWNl MiInKSBXSEVSRSBpZCA9IDE7Ci0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKIAot LS0gVmVyaWZ5IGluZGV4IHdvcmtzCi1TRUxFQ1QgaWQgRlJPTSBob3RfanNvbmJfdGVzdCBX SEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlMic7Ci0KLS0tIFRlc3QganNvbmJfZGVsZXRl IG9uIG5vbi1pbmRleGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRh dGlvbgorLS0gTGlrZXdpc2Ugbm9uLUhPVDogZXhwcmVzc2lvbiBpbmRleCBkaXNxdWFsaWZp ZXMgSE9ULWluZGV4ZWQuCiBVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBkYXRh IC0gJ2NpdHknIFdIRVJFIGlkID0gMjsKLQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9m bHVzaCgpOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcp OwogCi0tLSBUZXN0IGpzb25iX2luc2VydCBvbiBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxk IGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24KKy0tIExpa2V3aXNlIG5vbi1IT1Q6IGV4 cHJlc3Npb24gaW5kZXggZGlzcXVhbGlmaWVzIEhPVC1pbmRleGVkLgogVVBEQVRFIGhvdF9q c29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRyeX0nLCAn IlVTQSInKSBXSEVSRSBpZCA9IDI7Ci0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsK IAogRFJPUCBUQUJMRSBob3RfanNvbmJfdGVzdDsKIAotLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gWE1MIGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgc3ViLWF0dHJpYnV0ZSB0cmFj a2luZwotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVzdCB0aGF0IHVwZGF0ZXMg dG8gbm9uLWluZGV4ZWQgWE1MIHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRlcwotCi1DUkVBVEUg VEFCTEUgaG90X3htbF90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgZG9j IHhtbAotKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCi0tLSBDcmVhdGUgZXhwcmVzc2lv biBpbmRleCBvbiBhIHNwZWNpZmljIFhQYXRoCi1DUkVBVEUgSU5ERVggaG90X3htbF9uYW1l X2lkeCBPTiBob3RfeG1sX3Rlc3QgKCh4cGF0aCgnL3BlcnNvbi9uYW1lL3RleHQoKScsIGRv YykpKTsKLQotSU5TRVJUIElOVE8gaG90X3htbF90ZXN0IFZBTFVFUwotICAgICgxLCAnPHBl cnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMwPC9hZ2U+PC9wZXJzb24+JyksCi0gICAg KDIsICc8cGVyc29uPjxuYW1lPkJvYjwvbmFtZT48YWdlPjI1PC9hZ2U+PC9wZXJzb24+Jyk7 Ci0KLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7Ci0KLS0t IFVwZGF0ZSBub24taW5kZXhlZCBYUGF0aCAoYWdlKSAtIGJlaGF2aW9yIGRlcGVuZHMgb24g WE1MIGNvbXBhcmlzb24gZmFsbGJhY2sKLS0tIEZ1bGwgWE1MIHZhbHVlIHJlcGxhY2VtZW50 IG1lYW5zIG5vbi1pbmRleGVkIHBhdGggdXBkYXRlcyBzdGlsbCByZXF1aXJlIGluZGV4IGNv bXBhcmlzb24KLVVQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8cGVyc29uPjxuYW1l PkFsaWNlPC9uYW1lPjxhZ2U+MzE8L2FnZT48L3BlcnNvbj4nIFdIRVJFIGlkID0gMTsKLQot U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3QnKTsKLQotLS0gVXBk YXRlIGluZGV4ZWQgWFBhdGggKG5hbWUpIC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBo b3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8cGVyc29uPjxuYW1lPkFsaWNlMjwvbmFtZT48YWdl PjMxPC9hZ2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7Ci0KLVNFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7Ci0KLS0tIFZlcmlmeSBpbmRleCB3b3Jrcwot U0VMRUNUIGlkIEZST00gaG90X3htbF90ZXN0IFdIRVJFIHhwYXRoKCcvcGVyc29uL25hbWUv dGV4dCgpJywgZG9jKSA9IEFSUkFZWydBbGljZTInOjp0ZXh0XTsKLQotRFJPUCBUQUJMRSBo b3RfeG1sX3Rlc3Q7Ci0KLS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEdJTiBpbmRl eGVzIGFuZCBhbWNvbXBhcmVkYXR1bXMgZm9yIEpTT05CCi0tLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBUZXN0IHRoYXQgR0lOIGluZGV4ZXMgY2FuIHVzZSBhbWNvbXBhcmVkYXR1 bXMgdG8gZW5hYmxlIEhPVCB3aGVuIGV4dHJhY3RlZCBrZXlzIG1hdGNoCi0KKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorLS0gOS4gQSBjaGFuZ2UgdG8gYSBHSU4taW5kZXhlZCBjb2x1 bW4gaXMgSE9ULWluZGV4ZWQKKy0tCistLSBUaGUgcmVhZCBzaWRlIGZpbHRlcnMgYSBzdGFs ZSBsZWFmIHZpYSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwLCB3aGljaAorLS0gaXMg YWNjZXNzLW1ldGhvZCBhZ25vc3RpYywgc28gYSBHSU4tY292ZXJlZCBjb2x1bW4gaXMgSE9U LWluZGV4ZWQgbGlrZSBhbnkKKy0tIG90aGVyOiBvbmx5IHRoZSBHSU4gaW5kZXggaXMgbWFp bnRhaW5lZCwgYW5kIGEgR0lOIHNjYW4gKHdoaWNoIHJlY2hlY2tzIG9uCistLSB0aGUgaGVh cCkgcmV0dXJucyBjb3JyZWN0IHJlc3VsdHMgYWNyb3NzIHRoZSBjaGFpbi4KKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF9naW5fdGVzdCAoCiAgICAgaWQg aW50IFBSSU1BUlkgS0VZLAogICAgIHRhZ3MgdGV4dFtdLAogICAgIHByb3BlcnRpZXMganNv bmIKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLQotLS0gR0lOIGluZGV4IG9uIHRleHQg YXJyYXkKIENSRUFURSBJTkRFWCBob3RfZ2luX3RhZ3NfaWR4IE9OIGhvdF9naW5fdGVzdCBV U0lORyBnaW4gKHRhZ3MpOwotCi0tLSBHSU4gaW5kZXggb24gSlNPTkIgKGpzb25iX29wcyAt IGtleXMgYW5kIHZhbHVlcykKIENSRUFURSBJTkRFWCBob3RfZ2luX3Byb3BzX2lkeCBPTiBo b3RfZ2luX3Rlc3QgVVNJTkcgZ2luIChwcm9wZXJ0aWVzKTsKIAogSU5TRVJUIElOVE8gaG90 X2dpbl90ZXN0IFZBTFVFUwogICAgICgxLCBBUlJBWVsndGFnMScsICd0YWcyJ10sICd7Imtl eTEiOiJ2YWwxIiwia2V5MiI6InZhbDIifScpLAogICAgICgyLCBBUlJBWVsndGFnMycsICd0 YWc0J10sICd7ImtleTMiOiJ2YWwzIiwia2V5NCI6InZhbDQifScpOwogCi1TRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVzdCcpOwotCi0tLSBVcGRhdGUgdGhhdCBj aGFuZ2VzIHRhZyBvcmRlciBidXQgbm90IGNvbnRlbnQgLSBhZnRlciBhbWNvbXBhcmVkYXR1 bXMgc2hvdWxkIGJlIEhPVAotLS0gKEdJTiBleHRyYWN0cyBzYW1lIGtleXMsIGp1c3QgZGlm ZmVyZW50IG9yZGVyKQorLS0gUmVvcmRlciB0YWdzOiBhIEdJTi1jb3ZlcmVkIGNvbHVtbiBj aGFuZ2VzLCBzbyB0aGlzIGlzIEhPVC1pbmRleGVkLgogVVBEQVRFIGhvdF9naW5fdGVzdCBT RVQgdGFncyA9IEFSUkFZWyd0YWcyJywgJ3RhZzEnXSBXSEVSRSBpZCA9IDE7Ci0KLVNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7Ci0KLS0tIFVwZGF0ZSBK U09OQiB2YWx1ZSAobm90IGtleSkgLSBhZnRlciBhbWNvbXBhcmVkYXR1bXMgbWF5IGJlIEhP VCBvciBub24tSE9UCi0tLSBkZXBlbmRpbmcgb24gR0lOIG9wZXJhdG9yIGNsYXNzIChqc29u Yl9vcHMgaW5kZXhlcyBib3RoIGtleXMgYW5kIHZhbHVlcykKLVVQREFURSBob3RfZ2luX3Rl c3QgU0VUIHByb3BlcnRpZXMgPSAneyJrZXkxIjoidmFsMV9uZXciLCJrZXkyIjoidmFsMiJ9 JyBXSEVSRSBpZCA9IDE7Ci0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK IFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7CiAKLS0tIEFk ZCBuZXcgdGFnIC0gc2hvdWxkIE5PVCBiZSBIT1QgKGRpZmZlcmVudCBleHRyYWN0ZWQga2V5 cykKLVVQREFURSBob3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJBWVsndGFnMicsICd0YWcx JywgJ3RhZzUnXSBXSEVSRSBpZCA9IDE7Ci0KLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X2dpbl90ZXN0Jyk7Ci0KLS0tIFZlcmlmeSBHSU4gaW5kZXhlcyB3b3JrCi1TRUxF Q1QgaWQgRlJPTSBob3RfZ2luX3Rlc3QgV0hFUkUgdGFncyBAPiBBUlJBWVsndGFnNSddOwot U0VMRUNUIGlkIEZST00gaG90X2dpbl90ZXN0IFdIRVJFIHByb3BlcnRpZXMgQD4gJ3sia2V5 MSI6InZhbDFfbmV3In0nOwotCiBEUk9QIFRBQkxFIGhvdF9naW5fdGVzdDsKIAotLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBDbGVh bnVwCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1EUk9QIFRBQkxFIElGIEVYSVNUUyBo b3RfdGVzdDsKLURST1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0X3BhcnRpdGlvbmVkIENB U0NBREU7Ci1EUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBoYXNfaG90X2NoYWluKHRleHQsIHRp ZCk7Ci1EUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBwcmludF9ob3RfY2hhaW4odGV4dCwgdGlk KTsKLURST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGdldF9ob3RfY291bnQodGV4dCk7CistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RST1AgRlVOQ1RJT04gaGFzX2hvdF9jaGFpbih0ZXh0 LCB0aWQpOworRFJPUCBGVU5DVElPTiBwcmludF9ob3RfY2hhaW4odGV4dCwgdGlkKTsKK0RS T1AgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudCh0ZXh0KTsKIERST1AgRVhURU5TSU9OIHBhZ2Vp bnNwZWN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg Yi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCAzYTI3MjBmYjVmOS4u Y2YzMjYxMmVkYWEgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMjc0LDYg KzEyNzQsNyBAQCBIZWFwVHVwbGVGcmVlemUKIEhlYXBUdXBsZUhlYWRlcgogSGVhcFR1cGxl SGVhZGVyRGF0YQogSGVhcFR1cGxlVGFibGVTbG90CitIZWFwVXBkYXRlSW5kZXhNb2RlCiBI aXN0Q29udHJvbAogSG9zdENhY2hlRW50cnkKIEhvc3RzRmlsZUxvYWRSZXN1bHQKQEAgLTMx MzUsNyArMzEzNiw2IEBAIFRTVmVjdG9yU3RhdAogVFN0YXRlCiBUU3RhdHVzCiBUU3RvcmVT dGF0ZQotVFVfVXBkYXRlSW5kZXhlcwogVFhORW50cnlGaWxlCiBUWVBDQVRFR09SWQogVF9B Y3Rpb24KLS0gCjIuNTAuMQoK --98b017876237f005fe98a17b40ccb28dde987108 Content-Disposition: attachment; filename*0="v48-0005-Collapse-dead-HOT-indexed-chains-to-xid-free-stu.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v48-0005-Collapse-dead-HOT-indexed-chains-to-xid-free-stu.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAxODdjOTIyNDU5NmJhMGFiNGMzM2NkN2YwOGZkMzE3OWIwNTY3YjUwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMToyODozMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ4IDUv OV0gQ29sbGFwc2UgZGVhZCBIT1QtaW5kZXhlZCBjaGFpbnMgdG8geGlkLWZyZWUgc3R1YnMg b24KIHBydW5lL3ZhY3V1bQoKQSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRzIGluZGV4IGVu dHJpZXMgdGhhdCBwb2ludCBhdCBtaWQtY2hhaW4gaGVhcC1vbmx5CnR1cGxlcywgc28gYSBk ZWFkIGNoYWluIG1lbWJlciBjYW5ub3Qgc2ltcGx5IGJlIHJlbW92ZWQ6IGEgbm90LXlldC1z d2VwdCBpbmRleAplbnRyeSBtYXkgc3RpbGwgYXJyaXZlIGF0IGl0LCBhbmQgdGhlIHBlci1o b3AgbW9kaWZpZWQtYXR0cnMgYml0bWFwIG9uIGl0IGlzCndoYXQgYSByZWFkZXIgdW5pb25z IHRvIGp1ZGdlIHN0YWxlbmVzcy4KClRlYWNoIHBydW5lIHRvIGNvbGxhcHNlIGEgZGVhZCBj aGFpbiBwcmVmaXggaW50byB4aWQtZnJlZSBmb3J3YXJkaW5nIHN0dWJzOgplYWNoIHByZXNl cnZlZCBkZWFkIGtleSB0dXBsZSBpcyByZXdyaXR0ZW4gaW4gcGxhY2UgdG8gYSBzdHViIChm cm96ZW4sCm5hdHRzID09IDAsIEhFQVBfSU5ERVhFRF9VUERBVEVELCBmb3J3YXJkaW5nIHZp YSB0X2N0aWQub2ZmbnVtKSB0aGF0IGtlZXBzIGl0cwpzZWdtZW50J3MgbW9kaWZpZWQtYXR0 cnMgYml0bWFwLCBhbmQgYSBtZW1iZXIgd2hvc2UgYXR0cmlidXRlcyBhcmUgd2hvbGx5CnN1 YnN1bWVkIGJ5IGxhdGVyIGhvcHMgaXMgcmVjbGFpbWVkIGluc3RlYWQuICBSZWFkZXJzIHN0 ZXAgdGhyb3VnaCBzdHVicwp0cmFuc3BhcmVudGx5IGFuZCBzdGlsbCBjcm9zcyBldmVyeSBz dXJ2aXZpbmcgaG9wJ3MgYml0bWFwLiAgVGhlIGNvbGxhcHNlIGJhY2sKdG8gY2xhc3NpYyBI T1QgaXMgZHJpdmVuIGJ5IHBydW5lOiBvbmNlIGEgY2hhaW4gaXMgZnVsbHkgZGVhZCwgYSBs YXRlciBwcnVuZQooaGVhcF9wcnVuZV9jaGFpbiAvIGhlYXBfcHJ1bmVfY2hhaW5fZmluZF9s aXZlKSByZWNsYWltcyBpdHMgbWVtYmVycyBhbmQKcmUtcG9pbnRzIHRoZSByb290IHJlZGly ZWN0IHN0cmFpZ2h0IGF0IHRoZSBmaXJzdCBsaXZlIHR1cGxlLiAgVkFDVVVNJ3MgaW5kZXgK Y2xlYW51cCBzd2VlcHMgdGhlIHN0YWxlIGxlYXZlczsgaXRzIHNlY29uZCBwYXNzIChsYXp5 X3ZhY3V1bV9oZWFwX3BhZ2UpIGRvZXMKdGhlIHVzdWFsIExQX0RFQUQgLT4gTFBfVU5VU0VE IGNvbnZlcnNpb24gYW5kIGxlYXZlcyB0aGUgSE9ULWluZGV4ZWQgY29sbGFwc2UKdG8gcHJ1 bmUuCgpUaGUgY29sbGFwc2UgcmV1c2VzIHRoZSBleGlzdGluZyBwcnVuZS9mcmVlemUgV0FM IHZpYSBhbiB4bGhwX3BydW5lX2l0ZW1zCnN1Yi1yZWNvcmQgY2FycnlpbmcgdGhlIChvZmZz ZXQsIGZvcndhcmQpIHN0dWIgcGFpcnM7IG5vIG5ldyByZWNvcmQgdHlwZSBpcwppbnRyb2R1 Y2VkLiAgQSBwYWdlIHRoYXQgc3RpbGwgY2FycmllcyBhIHByZXNlcnZlZCBzdHViIChvciBh IHJlZGlyZWN0IHRoYXQKZm9yd2FyZHMgaW50byBhIGxpdmUgSE9ULWluZGV4ZWQgbWVtYmVy KSBpcyBrZXB0IG5vbi1hbGwtdmlzaWJsZSBzbyBpbmRleC1vbmx5CnNjYW5zIGhlYXAtZmV0 Y2ggdGhyb3VnaCB0aGUgY2hhaW47IGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSBy ZWNvZ25pemVzCmJvdGggdGhlIHJlZGlyZWN0LXRvLVNJVSBhbmQgdGhlIHN0dWIgY2FzZSBl eHBsaWNpdGx5LgoKQ28tYXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpD by1hdXRob3JlZC1ieTogTmF0aGFuIEJvc3NhcnQgPG5hdGhhbmRib3NzYXJ0QGdtYWlsLmNv bT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgfCAg MzggKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgICB8ICAx MCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgIHwgNjQ1 ICsrKysrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jICAgICAgIHwgIDk0ICsrLQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hl YXBkZXNjLmMgICAgIHwgIDM2ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAg ICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5o ICAgICAgICAgICB8ICAxOSArLQogNyBmaWxlcyBjaGFuZ2VkLCA3NzcgaW5zZXJ0aW9ucygr KSwgNzEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvUkVBRE1FLkhPVC1JTkRFWEVEIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1F LkhPVC1JTkRFWEVECmluZGV4IDVkNGEyYzdkNjZjLi5hYjRmOGJjMTg4MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVECisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRApAQCAtMjA2LDYgKzIw Niw0NCBAQCB1bmRlciB0aGUgb3BjbGFzcyBldmVuIGlmIG5vdCBiaXR3aXNlLWlkZW50aWNh bCwgZS5nLiBudW1lcmljIDEuMCB2cyAxLjAwKSBpcwogc3RpbGwgZGV0ZWN0ZWQuICAoQXBw ZW5kaXggQSBtb3RpdmF0ZXMgdGhpcyByZWNoZWNrIGluIGRldGFpbC4pCiAKIAorUHJ1bmUg YW5kIGNoYWluIGNvbGxhcHNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JlY2F1 c2UgYSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRzIGFuIGluZGV4IGVudHJ5IHBvaW50aW5n IGF0IGEgbWlkLWNoYWluCitoZWFwLW9ubHkgdHVwbGUncyBvd24gVElELCBjbGFzc2ljIEhP VCdzIGFzc3VtcHRpb24gdGhhdCBtaWQtY2hhaW4gbGluZQorcG9pbnRlcnMgaGF2ZSBubyBl eHRlcm5hbCByZWZlcmVuY2VzIG5vIGxvbmdlciBob2xkcy4gIFBydW5pbmcgdGhlcmVmb3Jl IG11c3QKK25vdCByZWNsYWltIHN1Y2ggYSBsaW5lIHBvaW50ZXIgd2hpbGUgYSBub3QteWV0 LXN3ZXB0IGluZGV4IGVudHJ5IGNhbiBzdGlsbAorYXJyaXZlIGF0IGl0LgorCitoZWFwX3By dW5lX2NoYWluIGNvbGxhcHNlcyBhIHJ1biBvZiBkZWFkIGNoYWluIG1lbWJlcnMgdG8gYSBz aW5nbGUKK0xQX1JFRElSRUNUIHRoYXQgZm9yd2FyZHMgdG8gdGhlIGZpcnN0IGxpdmUgdHVw bGUsIGFuZCBwcmVzZXJ2ZXMgdGhlIGxpbmUKK3BvaW50ZXIgb2YgYSBsaXZlIEhPVC1pbmRl eGVkIG1lbWJlciAoaGVhcF9wcnVuZV9pdGVtX3ByZXNlcnZlc19ob3RfaW5kZXhlZCkKK3Nv IGEgcmVhZGVyIGFycml2aW5nIHZpYSBhIHN0YWxlIGVudHJ5IHN0aWxsIGZpbmRzIGEgd2Fs a2FibGUgaG9wLiAgTW9yZSB0aGFuCitvbmUgTFBfUkVESVJFQ1QgbWF5IGZvcndhcmQgdG8g dGhlIHNhbWUgbGl2ZSB0dXBsZS4gIFRoZSByZWRpcmVjdCBsaWZlY3ljbGUKK3JldXNlcyB0 aGUgZXhpc3RpbmcgcHJ1bmUgV0FMIHJlY29yZHM7IHRoZXJlIGlzIG5vIG5ldyBvbi1kaXNr IGZvcm1hdC4KKworCitWYWN1dW0gcmVjbGFtYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLQor CitWQUNVVU0ncyBpbmRleCBjbGVhbnVwIHN3ZWVwcyB0aGUgc3RhbGUgaW5kZXggZW50cmll cy4gIFRoZSBjb2xsYXBzZSBiYWNrIHRvCitjbGFzc2ljIEhPVCBpcyBkcml2ZW4gYnkgcHJ1 bmUsIG5vdCBieSBWQUNVVU0ncyBzZWNvbmQgcGFzczogb25jZSBhIGNoYWluIGlzCitmdWxs eSBkZWFkLCBhIGxhdGVyIHBydW5lIChoZWFwX3BydW5lX2NoYWluIC8gaGVhcF9wcnVuZV9j aGFpbl9maW5kX2xpdmUpCityZWNsYWltcyBpdHMgbWVtYmVycyBhbmQgcmUtcG9pbnRzIHRo ZSByb290IHJlZGlyZWN0IHN0cmFpZ2h0IGF0IGZpcnN0X2xpdmUuCitSZS1wb2ludGluZyBh IHJlZGlyZWN0IHByZXNlcnZlcyByZWFjaGFiaWxpdHkgKGV2ZXJ5IHdhbGtlciBzdGlsbCBy ZWFjaGVzCitmaXJzdF9saXZlKSwgc28gaXQgaXMgc2FmZSB1bmRlciB0aGUgZXhjbHVzaXZl IGxvY2sgcHJ1bmUgYWxyZWFkeSBob2xkcy4KKworVkFDVVVNJ3Mgc2Vjb25kIHBhc3MgKGxh enlfdmFjdXVtX2hlYXBfcGFnZSkgZG9lcyBub3QgaXRzZWxmIHJlLXBvaW50CityZWRpcmVj dHMgb3IgcmVjbGFpbSBzdHViczsgaXQgcGVyZm9ybXMgdGhlIHVzdWFsIExQX0RFQUQgLT4g TFBfVU5VU0VECitjb252ZXJzaW9uIGFuZCBsZWF2ZXMgdGhlIEhPVC1pbmRleGVkIGNvbGxh cHNlIHRvIHBydW5lLgorCitBIHBhZ2UgdGhhdCBzdGlsbCBjYXJyaWVzIGEgcHJlc2VydmVk IEhPVC1pbmRleGVkIG1lbWJlciBvciBhIGNvbGxhcHNlLXN1cnZpdm9yCitzdHViIGlzIGRl bGliZXJhdGVseSBsZWZ0IG5vbi1hbGwtdmlzaWJsZSwgc28gdGhhdCBhbiBpbmRleC1vbmx5 IHNjYW4KK2hlYXAtZmV0Y2hlcyB0aHJvdWdoIHRoZSBjaGFpbiBhbmQgdGhlIGNyb3NzZWQt YXR0cmlidXRlIGJpdG1hcCBjYW4gZmlsdGVyCitzdGFsZSBlbnRyaWVzIChlbmZvcmNlZCBp biBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdCwgdGhlIHN0dWIgcmVjb3JkZXJzLCBhbmQK K2hlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSkuCisKKwogQXBwZW5kaWNlcwogLS0t LS0tLS0tLQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f eGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCA5 ZWQ3MDI0ZTgxNC4uNTcxZWE1YTRkYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYwpAQCAtMTAzLDYgKzEwMyw4IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUo WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCVNpemUJCWRhdGFsZW47CiAJCXhsaHBfZnJl ZXplX3BsYW4gKnBsYW5zOwogCQlPZmZzZXROdW1iZXIgKmZyel9vZmZzZXRzOworCQlPZmZz ZXROdW1iZXIgKnN0dWJzOworCQlpbnQJCQluc3R1YnM7CiAJCWNoYXIJICAgKmRhdGFwdHIg PSBYTG9nUmVjR2V0QmxvY2tEYXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwogCQlib29sCQlk b19wcnVuZTsKIApAQCAtMTEwLDkgKzExMiwxMCBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXpl KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJCQkgICAmbnBsYW5zLCAmcGxh bnMsICZmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJICAgJm5yZWRpcmVjdGVkLCAmcmVkaXJl Y3RlZCwKIAkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93ZGVhZCwKLQkJCQkJCQkJCQkJICAg Jm51bnVzZWQsICZub3d1bnVzZWQpOworCQkJCQkJCQkJCQkgICAmbnVudXNlZCwgJm5vd3Vu dXNlZCwKKwkJCQkJCQkJCQkJICAgJm5zdHVicywgJnN0dWJzKTsKIAotCQlkb19wcnVuZSA9 IG5yZWRpcmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7CisJCWRvX3By dW5lID0gbnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCB8fCBu c3R1YnMgPiAwOwogCiAJCS8qIEVuc3VyZSB0aGUgcmVjb3JkIGRvZXMgc29tZXRoaW5nICov CiAJCUFzc2VydChkb19wcnVuZSB8fCBucGxhbnMgPiAwIHx8IHZtZmxhZ3MgJiBWSVNJQklM SVRZTUFQX1ZBTElEX0JJVFMpOwpAQCAtMTI2LDcgKzEyOSw4IEBAIGhlYXBfeGxvZ19wcnVu ZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQkJCQkJCQkoeGxyZWMuZmxh Z3MgJiBYTEhQX0NMRUFOVVBfTE9DSykgPT0gMCwKIAkJCQkJCQkJCXJlZGlyZWN0ZWQsIG5y ZWRpcmVjdGVkLAogCQkJCQkJCQkJbm93ZGVhZCwgbmRlYWQsCi0JCQkJCQkJCQlub3d1bnVz ZWQsIG51bnVzZWQpOworCQkJCQkJCQkJbm93dW51c2VkLCBudW51c2VkLAorCQkJCQkJCQkJ c3R1YnMsIG5zdHVicyk7CiAKIAkJLyogRnJlZXplIHR1cGxlcyAqLwogCQlmb3IgKGludCBw ID0gMDsgcCA8IG5wbGFuczsgcCsrKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCBmZGRkZDIzMDM1Yi4uYzFkYzIzYzIyNzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3Mv aGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9nLmgiCisjaW5jbHVkZSAi YWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5o IgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJh bnNhbS5oIgpAQCAtNjcsMTEgKzY4LDIwIEBAIHR5cGVkZWYgc3RydWN0CiAJaW50CQkJbnJl ZGlyZWN0ZWQ7CS8qIG51bWJlcnMgb2YgZW50cmllcyBpbiBhcnJheXMgYmVsb3cgKi8KIAlp bnQJCQluZGVhZDsKIAlpbnQJCQludW51c2VkOworCWludAkJCW5zdHViczsKIAlpbnQJCQlu ZnJvemVuOwogCS8qIGFycmF5cyB0aGF0IGFjY3VtdWxhdGUgaW5kZXhlcyBvZiBpdGVtcyB0 byBiZSBjaGFuZ2VkICovCiAJT2Zmc2V0TnVtYmVyIHJlZGlyZWN0ZWRbTWF4SGVhcFR1cGxl c1BlclBhZ2UgKiAyXTsKIAlPZmZzZXROdW1iZXIgbm93ZGVhZFtNYXhIZWFwVHVwbGVzUGVy UGFnZV07CiAJT2Zmc2V0TnVtYmVyIG5vd3VudXNlZFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07 CisKKwkvKgorCSAqIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIGNvbGxhcHNlLXN1cnZpdm9y IHN0dWJzOiAob2Zmc2V0LCBmb3J3YXJkKQorCSAqIHBhaXJzIG9mIGxpbmUgcG9pbnRlcnMg cmV3cml0dGVuIGluIHBsYWNlIGludG8geGlkLWZyZWUgZm9yd2FyZGluZworCSAqIHN0dWJz IHRoYXQgcHJlc2VydmUgdGhlaXIgc2VnbWVudCdzIG1vZGlmaWVkLWF0dHJzIGJpdG1hcC4K KwkgKi8KKwlPZmZzZXROdW1iZXIgc3R1YnNbTWF4SGVhcFR1cGxlc1BlclBhZ2UgKiAyXTsK KwogCUhlYXBUdXBsZUZyZWV6ZSBmcm96ZW5bTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwogCiAJ LyoKQEAgLTIyMCw2ICsyMzAsMTAgQEAgc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRf cHJ1bmFibGUoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQsCiBzdGF0 aWMgdm9pZCBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdChQcnVuZVN0YXRlICpwcnN0YXRl LAogCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyIG9mZm51bSwgT2Zmc2V0TnVtYmVyIHJkb2Zm bnVtLAogCQkJCQkJCQkJICAgYm9vbCB3YXNfbm9ybWFsKTsKK3N0YXRpYyB2b2lkIGhlYXBf cHJ1bmVfcmVjb3JkX3N0dWIoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCQkJICAgT2Zm c2V0TnVtYmVyIG9mZm51bSwgT2Zmc2V0TnVtYmVyIGZvcndhcmQpOworc3RhdGljIHZvaWQg aGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3N0dWIoUHJ1bmVTdGF0ZSAqcHJzdGF0 ZSwKKwkJCQkJCQkJCQkJCU9mZnNldE51bWJlciBvZmZudW0pOwogc3RhdGljIHZvaWQgaGVh cF9wcnVuZV9yZWNvcmRfZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIg b2ZmbnVtLAogCQkJCQkJCQkgICBib29sIHdhc19ub3JtYWwpOwogc3RhdGljIHZvaWQgaGVh cF9wcnVuZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zm c2V0TnVtYmVyIG9mZm51bSwKQEAgLTIzMCw2ICsyNDQsNyBAQCBzdGF0aWMgdm9pZCBoZWFw X3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfdW51c2VkKFBydW5lU3RhdGUgKnByc3RhdGUs IE9mZnNldE51bQogc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xw X25vcm1hbChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIHN0 YXRpYyB2b2lkIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9kZWFkKFBydW5lU3Rh dGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pOwogc3RhdGljIHZvaWQgaGVhcF9w cnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGlyZWN0KFBydW5lU3RhdGUgKnByc3RhdGUs IE9mZnNldE51bWJlciBvZmZudW0pOworc3RhdGljIGJvb2wgaGVhcF9wcnVuZV9pdGVtX3By ZXNlcnZlc19ob3RfaW5kZXhlZChQYWdlIHBhZ2UsIE9mZnNldE51bWJlciBvZmZudW0pOwog CiBzdGF0aWMgdm9pZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKTsKIApAQCAt NDM5LDYgKzQ1NCw3IEBAIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAq cGFyYW1zLAogCXByc3RhdGUtPm5ld19wcnVuZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAlwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAlwcnN0YXRlLT5ucmVkaXJlY3RlZCA9IHByc3RhdGUtPm5kZWFkID0gcHJzdGF0ZS0+ bnVudXNlZCA9IDA7CisJcHJzdGF0ZS0+bnN0dWJzID0gMDsKIAlwcnN0YXRlLT5uZnJvemVu ID0gMDsKIAlwcnN0YXRlLT5ucm9vdF9pdGVtcyA9IDA7CiAJcHJzdGF0ZS0+bmhlYXBvbmx5 X2l0ZW1zID0gMDsKQEAgLTYwNyw2ICs2MjMsMjMgQEAgcHJ1bmVfZnJlZXplX3BsYW4oUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyICpvZmZfbG9jKQogCQkgKiBHZXQgdGhl IHR1cGxlJ3MgdmlzaWJpbGl0eSBzdGF0dXMgYW5kIHF1ZXVlIGl0IHVwIGZvciBwcm9jZXNz aW5nLgogCQkgKi8KIAkJaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBh Z2UsIGl0ZW1pZCk7CisKKwkJLyoKKwkJICogQSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGlz IGFuIExQX05PUk1BTCBpdGVtIHRoYXQgaXMgbm90IGEgcmVhbAorCQkgKiB0dXBsZTogSEVB UF9JTkRFWEVEX1VQREFURUQgd2l0aCBuYXR0cyA9PSAwLCBwZXJtYW5lbnRseSBpbnZpc2li bGUKKwkJICogKEhFQVBfWE1JTl9JTlZBTElEKSwgY2FycnlpbmcgYSBmb3J3YXJkIGxpbmsg YW5kIHRoZSBtb2RpZmllZC1hdHRycworCQkgKiBiaXRtYXAgZm9yIHRoZSBjaGFpbiBzZWdt ZW50IGl0IHN0YW5kcyBpbiBmb3IuCisJCSAqIGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1 bSgpIHdvdWxkIGNsYXNzaWZ5IGl0IEhFQVBUVVBMRV9ERUFEIGFuZAorCQkgKiBwcnVuaW5n IHdvdWxkIHJlY2xhaW0gaXQsIGRlc3Ryb3lpbmcgdGhlIGJpdG1hcCBhIHJlYWQgbmVlZHMu CisJCSAqIFJlY29yZCBpdCBhcyBhbiB1bmNoYW5nZWQgaXRlbSBzbyBpdCBpcyBwcmVzZXJ2 ZWQ7IHRoZSBIT1QgY2hhaW4KKwkJICogd2FsayBzdGVwcyB0aHJvdWdoIGl0IHRyYW5zcGFy ZW50bHkgdG8gcmVhY2ggdGhlIGxpdmUgdHVwbGUuCisJCSAqLworCQlpZiAoSG90SW5kZXhl ZEhlYWRlcklzU3R1YihodHVwKSkKKwkJeworCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFu Z2VkX2xwX3N0dWIocHJzdGF0ZSwgb2ZmbnVtKTsKKwkJCWNvbnRpbnVlOworCQl9CisKIAkJ dHVwLnRfZGF0YSA9IGh0dXA7CiAJCXR1cC50X2xlbiA9IEl0ZW1JZEdldExlbmd0aChpdGVt aWQpOwogCQlJdGVtUG9pbnRlclNldCgmdHVwLnRfc2VsZiwgYmxvY2tubywgb2ZmbnVtKTsK QEAgLTY3NywyNSArNzEwLDIzIEBAIHBydW5lX2ZyZWV6ZV9wbGFuKFBydW5lU3RhdGUgKnBy c3RhdGUsIE9mZnNldE51bWJlciAqb2ZmX2xvYykKIAkJCUl0ZW1JZAkJaXRlbWlkID0gUGFn ZUdldEl0ZW1JZChwYWdlLCBvZmZudW0pOwogCQkJSGVhcFR1cGxlSGVhZGVyIGh0dXAgPSAo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwogCi0JCQlpZiAo bGlrZWx5KCFIZWFwVHVwbGVIZWFkZXJJc0hvdFVwZGF0ZWQoaHR1cCkpKQotCQkJewotCQkJ CUhlYXBUdXBsZUhlYWRlckFkdmFuY2VDb25mbGljdEhvcml6b24oaHR1cCwKLQkJCQkJCQkJ CQkJCQkgICZwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQpOwotCQkJCWhlYXBfcHJ1bmVf cmVjb3JkX3VudXNlZChwcnN0YXRlLCBvZmZudW0sIHRydWUpOwotCQkJfQorCQkJLyoKKwkJ CSAqIFRoaXMgZGVhZCBoZWFwLW9ubHkgdHVwbGUgd2FzIG5vdCByZWFjaGVkIGJ5IGFueSBI T1QgY2hhaW4gd2FsaworCQkJICogKGFuIGFib3J0ZWQgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0 ZWQgc3ViLWNoYWluLCBvciBhIG1lbWJlcgorCQkJICogd2hvc2UgbGl2ZSByb290IHN0b3Bw ZWQgdGhlIHdhbGspLiAgSWYgaXQgY2FycmllcyBhIHN0YWxlIGJ0cmVlCisJCQkgKiBsZWFm IChIRUFQX0lOREVYRURfVVBEQVRFRCksIG1hcmsgaXQgTFBfREVBRDogdGhhdCBwaW5zIHRo ZQorCQkJICogc2xvdCBhZ2FpbnN0IHJldXNlIGFuZCBhZGRzIGl0IHRvIHRoZSBkZWFkLWl0 ZW1zIGFycmF5IHNvCisJCQkgKiBhbWJ1bGtkZWxldGUgc3dlZXBzIHRoZSBzdGFsZSBsZWFm IGFuZCBhIGxhdGVyIHZhY3V1bSByZWNsYWltcworCQkJICogdGhlIExQLiBPdGhlcndpc2Ug KGNsYXNzaWMgSE9ULCBubyBsZWFmIG9mIGl0cyBvd24pIHJlY2xhaW0gaXQKKwkJCSAqIHRv IExQX1VOVVNFRC4KKwkJCSAqLworCQkJSGVhcFR1cGxlSGVhZGVyQWR2YW5jZUNvbmZsaWN0 SG9yaXpvbihodHVwLAorCQkJCQkJCQkJCQkJICAmcHJzdGF0ZS0+bGF0ZXN0X3hpZF9yZW1v dmVkKTsKKwkJCWlmICgoaHR1cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRF RCkgIT0gMCAmJgorCQkJCUhlYXBUdXBsZUhlYWRlckdldE5hdHRzKGh0dXApID4gMCkKKwkJ CQloZWFwX3BydW5lX3JlY29yZF9kZWFkX29yX3VudXNlZChwcnN0YXRlLCBvZmZudW0sIHRy dWUpOwogCQkJZWxzZQotCQkJewotCQkJCS8qCi0JCQkJICogVGhpcyB0dXBsZSBzaG91bGQn dmUgYmVlbiBwcm9jZXNzZWQgYW5kIHJlbW92ZWQgYXMgcGFydCBvZgotCQkJCSAqIGEgSE9U IGNoYWluLCBzbyBzb21ldGhpbmcncyB3cm9uZy4gIFRvIHByZXNlcnZlIGV2aWRlbmNlLAot CQkJCSAqIHdlIGRvbid0IGRhcmUgdG8gcmVtb3ZlIGl0LiAgV2UgY2Fubm90IGxlYXZlIGJl aGluZCBhIERFQUQKLQkJCQkgKiB0dXBsZSBlaXRoZXIsIGJlY2F1c2UgdGhhdCB3aWxsIGNh dXNlIFZBQ1VVTSB0byBlcnJvciBvdXQuCi0JCQkJICogVGhyb3dpbmcgYW4gZXJyb3Igd2l0 aCBhIGRpc3RpbmN0IGVycm9yIG1lc3NhZ2Ugc2VlbXMgbGlrZQotCQkJCSAqIHRoZSBsZWFz dCBiYWQgb3B0aW9uLgotCQkJCSAqLwotCQkJCWVsb2coRVJST1IsICJkZWFkIGhlYXAtb25s eSB0dXBsZSAoJXUsICVkKSBpcyBub3QgbGlua2VkIHRvIGZyb20gYW55IEhPVCBjaGFpbiIs Ci0JCQkJCSBibG9ja25vLCBvZmZudW0pOwotCQkJfQorCQkJCWhlYXBfcHJ1bmVfcmVjb3Jk X3VudXNlZChwcnN0YXRlLCBvZmZudW0sIHRydWUpOwogCQl9CiAJCWVsc2UKIAkJCWhlYXBf cHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwocHJzdGF0ZSwgb2ZmbnVtKTsKQEAg LTExNjMsNyArMTE5NCw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJl ZXplUGFyYW1zICpwYXJhbXMsCiAKIAlkb19wcnVuZSA9IHByc3RhdGUubnJlZGlyZWN0ZWQg PiAwIHx8CiAJCXByc3RhdGUubmRlYWQgPiAwIHx8Ci0JCXByc3RhdGUubnVudXNlZCA+IDA7 CisJCXByc3RhdGUubnVudXNlZCA+IDAgfHwKKwkJcHJzdGF0ZS5uc3R1YnMgPiAwOwogCiAJ LyoKIAkgKiBFdmVuIGlmIHdlIGRvbid0IHBydW5lIGFueXRoaW5nLCBpZiB3ZSBmb3VuZCBh IG5ldyB2YWx1ZSBmb3IgdGhlCkBAIC0xMjY0LDcgKzEyOTYsOCBAQCBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJaGVhcF9wYWdl X3BydW5lX2V4ZWN1dGUocHJzdGF0ZS5idWZmZXIsIGZhbHNlLAogCQkJCQkJCQkJcHJzdGF0 ZS5yZWRpcmVjdGVkLCBwcnN0YXRlLm5yZWRpcmVjdGVkLAogCQkJCQkJCQkJcHJzdGF0ZS5u b3dkZWFkLCBwcnN0YXRlLm5kZWFkLAotCQkJCQkJCQkJcHJzdGF0ZS5ub3d1bnVzZWQsIHBy c3RhdGUubnVudXNlZCk7CisJCQkJCQkJCQlwcnN0YXRlLm5vd3VudXNlZCwgcHJzdGF0ZS5u dW51c2VkLAorCQkJCQkJCQkJcHJzdGF0ZS5zdHVicywgcHJzdGF0ZS5uc3R1YnMpOwogCQl9 CiAKIAkJaWYgKGRvX2ZyZWV6ZSkKQEAgLTEzMDcsNyArMTM0MCw4IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkg IHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4sCiAJCQkJCQkJCQkgIHByc3RhdGUu cmVkaXJlY3RlZCwgcHJzdGF0ZS5ucmVkaXJlY3RlZCwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5u b3dkZWFkLCBwcnN0YXRlLm5kZWFkLAotCQkJCQkJCQkJICBwcnN0YXRlLm5vd3VudXNlZCwg cHJzdGF0ZS5udW51c2VkKTsKKwkJCQkJCQkJCSAgcHJzdGF0ZS5ub3d1bnVzZWQsIHByc3Rh dGUubnVudXNlZCwKKwkJCQkJCQkJCSAgcHJzdGF0ZS5zdHVicywgcHJzdGF0ZS5uc3R1YnMp OwogCQl9CiAJfQogCkBAIC0xNDQ4LDYgKzE0ODIsMTAxIEBAIGh0c3ZfZ2V0X3ZhbGlkX3N0 YXR1cyhpbnQgc3RhdHVzKQogCXJldHVybiAoSFRTVl9SZXN1bHQpIHN0YXR1czsKIH0KIAor LyoKKyAqIGhlYXBfcHJ1bmVfY2hhaW5fZmluZF9saXZlCisgKgkJRm9sbG93IGEgSE9UIGNo YWluIGZyb20gJ3N0YXJ0JyB0byBpdHMgZmlyc3Qgc3Vydml2aW5nIG1lbWJlci4KKyAqCisg KiBVc2VkIHdoZW4gcmUtcHJ1bmluZyBhIEhPVC9TSVUgY2hhaW4gdGhhdCB3YXMgY29sbGFw c2VkIGJ5IGFuIGVhcmxpZXIgcHJ1bmU6CisgKiB0aGUgcm9vdCBhbmQgYW55IGVudHJ5LWJl YXJpbmcgZGVhZCBtZW1iZXJzIHdlcmUgdHVybmVkIGludG8gTFBfUkVESVJFQ1RzIHRvCisg KiB3aGF0IHdhcyB0aGVuIHRoZSBmaXJzdCBsaXZlIHR1cGxlLiAgSWYgdGhhdCB0dXBsZSBo YXMgc2luY2UgYmVlbiBIT1QtdXBkYXRlZAorICogYWdhaW4gYW5kIGRpZWQsIHRoZSByZWRp cmVjdHMgbXVzdCBiZSByZS1wb2ludGVkIHRvIHRoZSBjdXJyZW50IGZpcnN0IGxpdmUKKyAq IHR1cGxlLCBvciBzZXZlcmFsIHJlZGlyZWN0cyBmb3J3YXJkaW5nIHRvIG9uZSBsaXZlIHR1 cGxlIG11c3QgYWdyZWUgb24gaXQuCisgKiBCb3RoIGNhc2VzIG5lZWQgdGhlIGNoYWluJ3Mg Y3VycmVudCBmaXJzdCBzdXJ2aXZpbmcgbWVtYmVyLgorICoKKyAqIFdhbGtzIHRfY3RpZCBv biB0aGlzIHBhZ2Ugc3RhcnRpbmcgYXQgJ3N0YXJ0Jywgc2tpcHBpbmcgREVBRCBtZW1iZXJz LCBhbmQKKyAqIHJldHVybnMgdGhlIG9mZnNldCBvZiB0aGUgZmlyc3Qgbm9uLURFQUQgKHN1 cnZpdmluZykgbWVtYmVyLiAgUmV0dXJucworICogSW52YWxpZE9mZnNldE51bWJlciBpZiB0 aGUgY2hhaW4gZGVhZC1lbmRzIHdpdGggbm8gc3Vydml2b3Igb3IgcnVucyBvZmYgdGhlCisg KiBwYWdlLiAgUmVhZHMgb25seSB0aGUgcGFnZSdzIHByZS1leGVjdXRlIHN0YXRlLCBzbyBp dCBpcyBjb3JyZWN0IHJlZ2FyZGxlc3MKKyAqIG9mIHRoZSBvcmRlciBpbiB3aGljaCBzaWJs aW5nIHJlZGlyZWN0cyBhcmUgcHJvY2Vzc2VkLgorICovCitzdGF0aWMgT2Zmc2V0TnVtYmVy CitoZWFwX3BydW5lX2NoYWluX2ZpbmRfbGl2ZShQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZz ZXROdW1iZXIgc3RhcnQpCit7CisJUGFnZQkJcGFnZSA9IHByc3RhdGUtPnBhZ2U7CisJT2Zm c2V0TnVtYmVyIG1heG9mZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSk7CisJT2Zm c2V0TnVtYmVyIG9mZm51bSA9IHN0YXJ0OworCU9mZnNldE51bWJlciBzdXJ2aXZvciA9IHN0 YXJ0OwkvKiBzdWNjZXNzb3Igb2YgdGhlIGxhc3QgREVBRCBtZW1iZXIgKi8KKwlpbnQJCQls b29wcyA9IDA7CisKKwl3aGlsZSAob2ZmbnVtID49IEZpcnN0T2Zmc2V0TnVtYmVyICYmIG9m Zm51bSA8PSBtYXhvZmYpCisJeworCQlJdGVtSWQJCWxwID0gUGFnZUdldEl0ZW1JZChwYWdl LCBvZmZudW0pOworCQlIVFNWX1Jlc3VsdCBzdGF0dXM7CisJCUhlYXBUdXBsZUhlYWRlciBo dHVwOworCisJCS8qIEEgcmVkaXJlY3QvZGVhZC91bnVzZWQgaXRlbSBjYW5ub3QgYmUgYSBz dXJ2aXZpbmcgY2hhaW4gbWVtYmVyLiAqLworCQlpZiAoIUl0ZW1JZElzTm9ybWFsKGxwKSkK KwkJCXJldHVybiBJbnZhbGlkT2Zmc2V0TnVtYmVyOworCisJCWh0dXAgPSAoSGVhcFR1cGxl SGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJLyoKKwkJICogQSBjb2xsYXBz ZS1zdXJ2aXZvciBzdHViIGlzIGFuIHhpZC1mcmVlIGZvcndhcmRpbmcgbm9kZSwgbm90IGEK KwkJICogY2hhaW4gbWVtYmVyOyB0aGUgcGFnZSBzY2FuIHJlY29yZHMgaXQgdW5jaGFuZ2Vk IHdpdGhvdXQgY29tcHV0aW5nCisJCSAqIHZpc2liaWxpdHksIHNvIGl0cyBodHN2IHNsb3Qg aXMgdW5zZXQuICBTdGVwIHRocm91Z2ggaXQgdG8gaXRzCisJCSAqIGZvcndhcmQgbGluayBy YXRoZXIgdGhhbiByZWFkaW5nIGh0c3YsIHdoaWNoIHdvdWxkIHRyaXAgdGhlCisJCSAqIHZh bGlkaXR5IGFzc2VydC4KKwkJICovCisJCWlmIChIb3RJbmRleGVkSGVhZGVySXNTdHViKGh0 dXApKQorCQl7CisJCQlvZmZudW0gPSBIb3RJbmRleGVkU3R1YkdldEZvcndhcmQoaHR1cCk7 CisJCQlpZiAoKytsb29wcyA+IG1heG9mZikKKwkJCQlyZXR1cm4gSW52YWxpZE9mZnNldE51 bWJlcjsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJc3RhdHVzID0gaHRzdl9nZXRfdmFsaWRf c3RhdHVzKHByc3RhdGUtPmh0c3Zbb2ZmbnVtXSk7CisJCWh0dXAgPSAoSGVhcFR1cGxlSGVh ZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJaWYgKHN0YXR1cyA9PSBIRUFQVFVQ TEVfREVBRCkKKwkJeworCQkJLyoKKwkJCSAqIEEgREVBRCBtZW1iZXIgaXMgcmVjbGFpbWVk L3JlZGlyZWN0ZWQsIHNvIHRoZSBzdXJ2aXZpbmcgdGFpbAorCQkJICogc3RhcnRzIGF0IGl0 cyBzdWNjZXNzb3IuICBBIERFQUQgbWVtYmVyIHdpdGggbm8gbGl2ZSBzdWNjZXNzb3IKKwkJ CSAqIG1lYW5zIHRoZSB3aG9sZSBjaGFpbiBpcyBkZWFkLgorCQkJICovCisJCQlpZiAoIUhl YXBUdXBsZUhlYWRlcklzSG90VXBkYXRlZChodHVwKSB8fAorCQkJCUl0ZW1Qb2ludGVyR2V0 QmxvY2tOdW1iZXIoJmh0dXAtPnRfY3RpZCkgIT0gcHJzdGF0ZS0+YmxvY2spCisJCQkJcmV0 dXJuIEludmFsaWRPZmZzZXROdW1iZXI7CisJCQlvZmZudW0gPSBJdGVtUG9pbnRlckdldE9m ZnNldE51bWJlcigmaHR1cC0+dF9jdGlkKTsKKwkJCXN1cnZpdm9yID0gb2ZmbnVtOworCQl9 CisJCWVsc2UgaWYgKHN0YXR1cyA9PSBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRCkKKwkJewor CQkJLyoKKwkJCSAqIFJFQ0VOVExZX0RFQUQgbWVtYmVycyBiZWxvbmcgdG8gdGhlIHN1cnZp dmluZyB0YWlsIHVubGVzcyBhCisJCQkgKiBERUFEIG1lbWJlciBmb2xsb3dzIHRoZW0gKHdo aWNoIHdvdWxkIG1ha2UgdGhlbSBwYXJ0IG9mIHRoZQorCQkJICogZGVhZCBwcmVmaXgpLiAg S2VlcCB3YWxraW5nIHRvIGZpbmQgb3V0LCBidXQgZG8gbm90IGFkdmFuY2UgdGhlCisJCQkg KiBzdXJ2aXZvcjsgaXQgc3RheXMgYXQgdGhlIHN1Y2Nlc3NvciBvZiB0aGUgbGFzdCBERUFE IG1lbWJlci4KKwkJCSAqLworCQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJJc0hvdFVwZGF0ZWQo aHR1cCkgfHwKKwkJCQlJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZodHVwLT50X2N0aWQp ICE9IHByc3RhdGUtPmJsb2NrKQorCQkJCXJldHVybiBzdXJ2aXZvcjsKKwkJCW9mZm51bSA9 IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZodHVwLT50X2N0aWQpOworCQl9CisJCWVs c2UKKwkJeworCQkJLyogTElWRSAob3IgaW4tcHJvZ3Jlc3MpOiB0aGUgc3Vydml2aW5nIHRh aWwgaXMgc2V0dGxlZC4gKi8KKwkJCXJldHVybiBzdXJ2aXZvcjsKKwkJfQorCisJCWlmICgr K2xvb3BzID4gbWF4b2ZmKQorCQkJcmV0dXJuIEludmFsaWRPZmZzZXROdW1iZXI7IC8qIGRl ZmVuZCBhZ2FpbnN0IGEgY29ycnVwdCBjeWNsZSAqLworCX0KKworCXJldHVybiBJbnZhbGlk T2Zmc2V0TnVtYmVyOworfQorCiAvKgogICogUHJ1bmUgc3BlY2lmaWVkIGxpbmUgcG9pbnRl ciBvciBhIEhPVCBjaGFpbiBvcmlnaW5hdGluZyBhdCBsaW5lIHBvaW50ZXIuCiAgKgpAQCAt MTUxOCw2ICsxNjQ3LDM2IEBAIGhlYXBfcHJ1bmVfY2hhaW4oT2Zmc2V0TnVtYmVyIG1heG9m ZiwgT2Zmc2V0TnVtYmVyIHJvb3RvZmZudW0sCiAJCWlmIChvZmZudW0gPiBtYXhvZmYpCiAJ CQlicmVhazsKIAorCQkvKgorCQkgKiBTdGVwIHRyYW5zcGFyZW50bHkgdGhyb3VnaCBhIGNv bGxhcHNlLXN1cnZpdm9yIHN0dWIuICBBIHJlZGlyZWN0IG9yCisJCSAqIGFuIGVhcmxpZXIg c3R1YiBtYXkgZm9yd2FyZCBpbnRvIGEgc3R1YiB0aGF0IHJlcGxhY2VkIGEgZGVhZAorCQkg KiBtaWQtY2hhaW4gbWVtYmVyOyB0aGUgc3R1YiB3YXMgYWxyZWFkeSByZWNvcmRlZCAoYXMg dW5jaGFuZ2VkKSBieQorCQkgKiB0aGUgcGFnZSBzY2FuIGFuZCBpcyBub3QgaXRzZWxmIGEg Y2hhaW4gbWVtYmVyLCBzbyBmb2xsb3cgaXRzCisJCSAqIGZvcndhcmQgbGluayByYXRoZXIg dGhhbiBzdG9wcGluZyBhdCB0aGUgcHJvY2Vzc2VkIGNoZWNrIGJlbG93LgorCQkgKi8KKwkJ eworCQkJSXRlbUlkCQlzbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIG9mZm51bSk7CisKKwkJ CWlmIChJdGVtSWRJc05vcm1hbChzbHApKQorCQkJeworCQkJCUhlYXBUdXBsZUhlYWRlciBz aHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIHNscCk7CisKKwkJ CQlpZiAoSG90SW5kZXhlZEhlYWRlcklzU3R1YihzaHR1cCkpCisJCQkJeworCQkJCQkvKgor CQkJCQkgKiBBIHN0dWIgaXMgeGlkLWZyZWUsIHNvIHRoZSB4bWluL3htYXggbGlua2FnZSBj YW5ub3QgYmUKKwkJCQkJICogdmVyaWZpZWQgYWNyb3NzIGl0LiAgVHJ1c3QgdGhlIHN0dWIn cyBmb3J3YXJkIGxpbmsgYW5kCisJCQkJCSAqIHNraXAgdGhlIHByaW9yLXhtYXggY2hlY2sg Zm9yIHRoZSBmaXJzdCBtZW1iZXIgcGFzdCBpdAorCQkJCQkgKiAob3RoZXJ3aXNlIHRoZSBj aGFpbiB3b3VsZCBiZSBzZXZlcmVkIHRoZXJlLCBkcm9wcGluZworCQkJCQkgKiBpdHMgdGFp bCkuCisJCQkJCSAqLworCQkJCQlvZmZudW0gPSBIb3RJbmRleGVkU3R1YkdldEZvcndhcmQo c2h0dXApOworCQkJCQlwcmlvclhtYXggPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJCQkJ Y29udGludWU7CisJCQkJfQorCQkJfQorCQl9CisKIAkJLyogSWYgaXRlbSBpcyBhbHJlYWR5 IHByb2Nlc3NlZCwgc3RvcCAtLS0gaXQgbXVzdCBub3QgYmUgc2FtZSBjaGFpbiAqLwogCQlp ZiAocHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pCiAJCQlicmVhazsKQEAgLTE2MjQsMTMg KzE3ODMsMjcgQEAgaGVhcF9wcnVuZV9jaGFpbihPZmZzZXROdW1iZXIgbWF4b2ZmLCBPZmZz ZXROdW1iZXIgcm9vdG9mZm51bSwKIAlpZiAoSXRlbUlkSXNSZWRpcmVjdGVkKHJvb3RscCkg JiYgbmNoYWluIDwgMikKIAl7CiAJCS8qCi0JCSAqIFdlIGZvdW5kIGEgcmVkaXJlY3QgaXRl bSB0aGF0IGRvZXNuJ3QgcG9pbnQgdG8gYSB2YWxpZCBmb2xsb3ctb24KLQkJICogaXRlbS4g IFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgbG9vcCBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZSgpCi0JCSAqIGNhdXNlZCB1cyB0byB2aXNpdCB0aGUgZGVhZCBzdWNjZXNzb3Igb2Yg YSByZWRpcmVjdCBpdGVtIGJlZm9yZQotCQkgKiB2aXNpdGluZyB0aGUgcmVkaXJlY3QgaXRl bS4gIFdlIGNhbiBjbGVhbiB1cCBieSBzZXR0aW5nIHRoZQotCQkgKiByZWRpcmVjdCBpdGVt IHRvIExQX0RFQUQgc3RhdGUgb3IgTFBfVU5VU0VEIGlmIHRoZSBjYWxsZXIKLQkJICogaW5k aWNhdGVkLgorCQkgKiBUaGUgd2FsayBjb3VsZCBub3QgZ2V0IHBhc3QgdGhlIHJlZGlyZWN0 OiBpdHMgdGFyZ2V0IHdhcyBlaXRoZXIKKwkJICogYWxyZWFkeSBwcm9jZXNzZWQgYnkgYSBz aWJsaW5nIHJlZGlyZWN0J3Mgd2FsayAoc2V2ZXJhbCByZWRpcmVjdHMKKwkJICogb2YgYSBj b2xsYXBzZWQgSE9UL1NJVSBjaGFpbiBmb3J3YXJkIHRvIHRoZSBzYW1lIGxpdmUgdHVwbGUp IG9yIGhhcworCQkgKiBzaW5jZSBkaWVkIGFuZCBiZWVuIGNvbGxhcHNlZCBmdXJ0aGVyLiAg UmUtcG9pbnQgdGhpcyByZWRpcmVjdCBhdAorCQkgKiB0aGUgY2hhaW4ncyBjdXJyZW50IGZp cnN0IHN1cnZpdmluZyBtZW1iZXIgc28gZXZlcnkgZW50cnkgdGhhdAorCQkgKiByZXNvbHZl cyB0aHJvdWdoIGl0IHN0aWxsIHJlYWNoZXMgdGhlIGxpdmUgdHVwbGUuICBJZiBubyBzdXJ2 aXZvcgorCQkgKiByZW1haW5zLCB0aGUgcmVkaXJlY3QgaXMgZGFuZ2xpbmcgYW5kIGlzIHJl Y2xhaW1lZCAoTFBfREVBRCwgb3IKKwkJICogTFBfVU5VU0VEIGlmIHRoZSBjYWxsZXIgYWxs b3dzIGl0KS4KIAkJICovCisJCU9mZnNldE51bWJlciB0YXJnZXQgPSBJdGVtSWRHZXRSZWRp cmVjdChyb290bHApOworCQlPZmZzZXROdW1iZXIgbGl2ZSA9IGhlYXBfcHJ1bmVfY2hhaW5f ZmluZF9saXZlKHByc3RhdGUsIHRhcmdldCk7CisKKwkJaWYgKE9mZnNldE51bWJlcklzVmFs aWQobGl2ZSkpCisJCXsKKwkJCWlmIChsaXZlID09IHRhcmdldCkKKwkJCQloZWFwX3BydW5l X3JlY29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3QocHJzdGF0ZSwgcm9vdG9mZm51bSk7CisJ CQllbHNlCisJCQkJaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QocHJzdGF0ZSwgcm9vdG9m Zm51bSwgbGl2ZSwgZmFsc2UpOworCQkJcmV0dXJuOworCQl9CisKIAkJaGVhcF9wcnVuZV9y ZWNvcmRfZGVhZF9vcl91bnVzZWQocHJzdGF0ZSwgcm9vdG9mZm51bSwgZmFsc2UpOwogCQly ZXR1cm47CiAJfQpAQCAtMTY1NiwyNCArMTgyOSwxMjYgQEAgcHJvY2Vzc19jaGFpbjoKIAll bHNlIGlmIChuZGVhZGNoYWluID09IG5jaGFpbikKIAl7CiAJCS8qCi0JCSAqIFRoZSBlbnRp cmUgY2hhaW4gaXMgZGVhZC4gIE1hcmsgdGhlIHJvb3QgbGluZSBwb2ludGVyIExQX0RFQUQs IGFuZAotCQkgKiBmdWxseSByZW1vdmUgdGhlIG90aGVyIHR1cGxlcyBpbiB0aGUgY2hhaW4u CisJCSAqIFRoZSBlbnRpcmUgY2hhaW4gaXMgZGVhZC4gIE5vIGxpdmUgdHVwbGUgcmVtYWlu cyB0byBmb3J3YXJkIHRvLCBzbworCQkgKiBtYXJrIHRoZSByb290IExQX0RFQUQgKG9yIExQ X1VOVVNFRCBpZiB0aGUgY2FsbGVyIGFsbG93cyBpdCkgYW5kCisJCSAqIHJlY2xhaW0gZWFj aCBtZW1iZXIuICBBIGRlYWQgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgbWVtYmVyIG1heQor CQkgKiBzdGlsbCBoYXZlIGEgc3RhbGUgYnRyZWUgbGVhZiBwb2ludGluZyBhdCBpdDogbWFy ayBpdCBMUF9ERUFEIHNvCisJCSAqIHRoZSBzbG90IGlzIHBpbm5lZCBhZ2FpbnN0IHJldXNl IGFuZCBhZGRlZCB0byB0aGUgZGVhZC1pdGVtcyBhcnJheSwKKwkJICogbGV0dGluZyBhbWJ1 bGtkZWxldGUgc3dlZXAgdGhlIGxlYWYgYW5kIGEgbGF0ZXIgdmFjdXVtIHJlY2xhaW0gdGhl CisJCSAqIGxpbmUgcG9pbnRlci4gIENsYXNzaWMtSE9UIG1lbWJlcnMgY2Fycnkgbm8gbGVh ZiBvZiB0aGVpciBvd24gYW5kCisJCSAqIGdvIHN0cmFpZ2h0IHRvIExQX1VOVVNFRC4KIAkJ ICovCiAJCWhlYXBfcHJ1bmVfcmVjb3JkX2RlYWRfb3JfdW51c2VkKHByc3RhdGUsIHJvb3Rv ZmZudW0sIEl0ZW1JZElzTm9ybWFsKHJvb3RscCkpOwogCQlmb3IgKGludCBpID0gMTsgaSA8 IG5jaGFpbjsgaSsrKQotCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIGNo YWluaXRlbXNbaV0sIHRydWUpOworCQl7CisJCQlpZiAoaGVhcF9wcnVuZV9pdGVtX3ByZXNl cnZlc19ob3RfaW5kZXhlZChwYWdlLCBjaGFpbml0ZW1zW2ldKSkKKwkJCQloZWFwX3BydW5l X3JlY29yZF9kZWFkX29yX3VudXNlZChwcnN0YXRlLCBjaGFpbml0ZW1zW2ldLCB0cnVlKTsK KwkJCWVsc2UKKwkJCQloZWFwX3BydW5lX3JlY29yZF91bnVzZWQocHJzdGF0ZSwgY2hhaW5p dGVtc1tpXSwgdHJ1ZSk7CisJCX0KIAl9CiAJZWxzZQogCXsKIAkJLyoKLQkJICogV2UgZm91 bmQgYSBERUFEIHR1cGxlIGluIHRoZSBjaGFpbi4gIFJlZGlyZWN0IHRoZSByb290IGxpbmUg cG9pbnRlcgotCQkgKiB0byB0aGUgZmlyc3Qgbm9uLURFQUQgdHVwbGUsIGFuZCBtYXJrIGFz IHVudXNlZCBlYWNoIGludGVybWVkaWF0ZQotCQkgKiBpdGVtIHRoYXQgd2UgYXJlIGFibGUg dG8gcmVtb3ZlIGZyb20gdGhlIGNoYWluLgorCQkgKiBUaGUgY2hhaW4gaGFzIGEgZGVhZCBw cmVmaXggZm9sbG93ZWQgYnkgYSBsaXZlIHJlbWFpbmRlci4gIENvbGxhcHNlCisJCSAqIGl0 IHdpdGggUEhPVC1zdHlsZSBrZXkgdHVwbGVzIHNvIHRoYXQgdGhlIHBlci1ob3AgbW9kaWZp ZWQtYXR0cnMKKwkJICogYml0bWFwcyBzdXJ2aXZlIGZvciB0aGUgYml0bWFwLW92ZXJsYXAg cmVhZCBwYXRoLgorCQkgKgorCQkgKiBXYWxrIHRoZSBkZWFkIG1lbWJlcnMgZnJvbSB0aGUg bGl2ZSBlbmQgYmFja3dhcmRzLCBhY2N1bXVsYXRpbmcgaW4KKwkJICogbGF0ZXJhdHRycyB0 aGUgdW5pb24gb2YgdGhlIG1vZGlmaWVkLWF0dHJzIGJpdG1hcHMgb2YgdGhlIG1lbWJlcnMK KwkJICogdGhhdCBmb2xsb3cgKHRoZSAibGF0ZXIgaG9wcyIpLiAgQSBkZWFkIGtleSB0dXBs ZSAtLSBvbmUgdGhhdAorCQkgKiBjYXJyaWVkIGl0cyBvd24gaW5kZXggZW50cmllcyBiZWNh dXNlIGl0IGNoYW5nZWQgYW4gaW5kZXhlZAorCQkgKiBhdHRyaWJ1dGUgYXQgaXRzIGhvcCAo aGVhcF9wcnVuZV9pdGVtX3ByZXNlcnZlc19ob3RfaW5kZXhlZCkgLS0gaXMKKwkJICogZGlz cG9zZWQgb2YgYXMgZm9sbG93czoKKwkJICoKKwkJICogLSBJZiBldmVyeSBhdHRyaWJ1dGUg aXQgY2hhbmdlZCB3YXMgY2hhbmdlZCBhZ2FpbiBieSBhIGxhdGVyIGhvcAorCQkgKiAoaXRz IGJpdG1hcCBpcyBhIHN1YnNldCBvZiBsYXRlcmF0dHJzKSwgZXZlcnkgaW5kZXggZW50cnkg cG9pbnRpbmcKKwkJICogYXQgaXQgaXMgc3VwZXJzZWRlZCwgc28gbm8gbGl2ZSBlbnRyeSBy ZWZlcmVuY2VzIGl0OiByZWNsYWltIGl0CisJCSAqIChMUF9ERUFEKSwgd2hpY2ggbGV0cyB0 aGlzIHZhY3V1bSdzIGluZGV4IHBhc3Mgc3dlZXAgaXRzIG5vdy1zdGFsZQorCQkgKiBsZWF2 ZXMgYW5kIGEgbGF0ZXIgcGFzcyBmcmVlIHRoZSBsaW5lIHBvaW50ZXIuICBUaGlzIGxvc2Vz IG5vCisJCSAqIHBlci1ob3AgaW5mb3JtYXRpb24gZm9yIHJlYWRlcnMgLS0gaXRzIGF0dHJp YnV0ZXMgYXJlIGFscmVhZHkKKwkJICogY2FycmllZCBieSB0aGUgc3Vydml2aW5nIGxhdGVy IG1lbWJlcnMgdGhlIHJlYWRlciBzdGlsbCBjcm9zc2VzLgorCQkgKgorCQkgKiAtIE90aGVy d2lzZSBpdCBpbnRyb2R1Y2VkIGFuIGF0dHJpYnV0ZSBub3QgY2hhbmdlZCBhZ2Fpbiwgc28g YSBsaXZlCisJCSAqIGVudHJ5IHN0aWxsIHBvaW50cyBhdCBpdDoga2VlcCBpdCBhcyBhbiB4 aWQtZnJlZSBzdHViIGZvcndhcmRpbmcgdG8KKwkJICogdGhlIG5leHQgc3Vydml2b3IsIHBy ZXNlcnZpbmcgaXRzIGlubGluZSBiaXRtYXAgZm9yIHRoZSByZWFkIHBhdGguCisJCSAqCisJ CSAqIENsYXNzaWMtSE9UIG1lbWJlcnMgY2Fycnkgbm8gZW50cnkgb2YgdGhlaXIgb3duIGFu ZCBhcmUgcmVjbGFpbWVkCisJCSAqIHRvIExQX1VOVVNFRDsgc3Vydml2b3JzIGZvcndhcmQg cGFzdCB0aGVtLiAgVGhlIHJvb3QgaXMgcmVkaXJlY3RlZAorCQkgKiB0byB0aGUgZmlyc3Qg c3Vydml2b3IuICBTdHVicyBjYXJyeSBubyBYSURzLCBzbyB0aGUgcGFnZSBzdGF5cworCQkg KiBmcmVlemUtc2FmZTsgYmVjYXVzZSBlYWNoIGZvcndhcmRzIHRvIHRoZSBuZXh0IHN1cnZp dm9yIChub3QgdGhlCisJCSAqIGxpdmUgdHVwbGUpLCBhIHJlYWRlciBjcm9zc2luZyB0aGUg Y29sbGFwc2VkIHByZWZpeCBzZWVzIGV2ZXJ5CisJCSAqIHN1cnZpdmluZyBob3AncyBiaXRt YXAsIGFuZCBzdHViLT5zdHViIGZvcndhcmRpbmcgbGV0cyBhIGxhdGVyCisJCSAqIGNvbGxh cHNlIGV4dGVuZCB0aGUgY2hhaW4gd2l0aG91dCByZS1wb2ludGluZyBleGlzdGluZyBzdHVi cy4KKwkJICovCisJCU9mZnNldE51bWJlciBmaXJzdF9saXZlID0gY2hhaW5pdGVtc1tuZGVh ZGNoYWluXTsKKwkJT2Zmc2V0TnVtYmVyIG5leHRfc3Vydml2b3IgPSBmaXJzdF9saXZlOwor CQlPZmZzZXROdW1iZXIgcm9vdF90YXJnZXQ7CisJCWludAkJCXJlbG5hdHRzID0gUmVsYXRp b25HZXROdW1iZXJPZkF0dHJpYnV0ZXMocHJzdGF0ZS0+cmVsYXRpb24pOworCQl1aW50OAkJ bGF0ZXJhdHRyc1soTWF4SGVhcEF0dHJpYnV0ZU51bWJlciArIDcpIC8gOF07CisKKwkJLyoK KwkJICogbGF0ZXJhdHRycyBhY2N1bXVsYXRlcyBldmVyeSBzdXJ2aXZpbmcgaG9wJ3MgbW9k aWZpZWQgYXR0cmlidXRlcy4KKwkJICogU2l6ZSBpdCBmb3IgdGhlIHJlbGF0aW9uJ3MgY3Vy cmVudCBuYXR0cyAodGhlIG1heGltdW0pOyBlYWNoCisJCSAqIGNvbnRyaWJ1dGluZyB0dXBs ZSdzIGJpdG1hcCBpcyBsb2NhdGVkIGFuZCBPUi1lZCB1c2luZyB0aGF0IHR1cGxlJ3MKKwkJ ICogd3JpdGUtdGltZSBuYXR0cyAoSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMpLCBzaW5j ZSBBREQgQ09MVU1OIG1heQorCQkgKiBoYXZlIGdyb3duIHRoZSByZWxhdGlvbiBzaW5jZSBz b21lIGhvcHMgd2VyZSB3cml0dGVuLgogCQkgKi8KLQkJaGVhcF9wcnVuZV9yZWNvcmRfcmVk aXJlY3QocHJzdGF0ZSwgcm9vdG9mZm51bSwgY2hhaW5pdGVtc1tuZGVhZGNoYWluXSwKLQkJ CQkJCQkJICAgSXRlbUlkSXNOb3JtYWwocm9vdGxwKSk7Ci0JCWZvciAoaW50IGkgPSAxOyBp IDwgbmRlYWRjaGFpbjsgaSsrKQotCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHByc3Rh dGUsIGNoYWluaXRlbXNbaV0sIHRydWUpOworCQltZW1zZXQobGF0ZXJhdHRycywgMCwgSG90 SW5kZXhlZEJpdG1hcEJ5dGVzKHJlbG5hdHRzKSk7CisJCWZvciAoaW50IGkgPSBuZGVhZGNo YWluOyBpIDwgbmNoYWluOyBpKyspCisJCXsKKwkJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRl bUlkKHBhZ2UsIGNoYWluaXRlbXNbaV0pOworCQkJSGVhcFR1cGxlSGVhZGVyIGh0dXAgPSAo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJCWlmICgoaHR1 cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKKwkJCXsKKwkJ CQlpbnQJCQlibW5hdHRzID0gSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMoaHR1cCk7CisK KwkJCQlIb3RJbmRleGVkQml0bWFwVW5pb24obGF0ZXJhdHRycywKKwkJCQkJCQkJCSAgSG90 SW5kZXhlZEdldE1vZGlmaWVkQml0bWFwKGh0dXAsCisJCQkJCQkJCQkJCQkJCQkgIEl0ZW1J ZEdldExlbmd0aChscCksCisJCQkJCQkJCQkJCQkJCQkgIGJtbmF0dHMpLAorCQkJCQkJCQkJ ICBibW5hdHRzKTsKKwkJCX0KKwkJfQorCisJCS8qIGRlYWQgcHJlZml4OiByZWNsYWltIHN1 cGVyc2VkZWQgbWVtYmVycywgc3R1YiB0aGUgcmVzdCAqLworCQlmb3IgKGludCBpID0gbmRl YWRjaGFpbiAtIDE7IGkgPj0gMTsgaS0tKQorCQl7CisJCQlpZiAoaGVhcF9wcnVuZV9pdGVt X3ByZXNlcnZlc19ob3RfaW5kZXhlZChwYWdlLCBjaGFpbml0ZW1zW2ldKSkKKwkJCXsKKwkJ CQlJdGVtSWQJCWxwID0gUGFnZUdldEl0ZW1JZChwYWdlLCBjaGFpbml0ZW1zW2ldKTsKKwkJ CQlIZWFwVHVwbGVIZWFkZXIgaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVt KHBhZ2UsIGxwKTsKKwkJCQlpbnQJCQlibW5hdHRzID0gSG90SW5kZXhlZFR1cGxlQml0bWFw TmF0dHMoaHR1cCk7CisJCQkJY29uc3QgdWludDggKmF0dHJzID0gSG90SW5kZXhlZEdldE1v ZGlmaWVkQml0bWFwKGh0dXAsCisJCQkJCQkJCQkJCQkJCSBJdGVtSWRHZXRMZW5ndGgobHAp LAorCQkJCQkJCQkJCQkJCQkgYm1uYXR0cyk7CisKKwkJCQlpZiAoSG90SW5kZXhlZEJpdG1h cElzU3Vic2V0KGF0dHJzLCBsYXRlcmF0dHJzLCBibW5hdHRzKSkKKwkJCQkJaGVhcF9wcnVu ZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQocHJzdGF0ZSwgY2hhaW5pdGVtc1tpXSwgdHJ1ZSk7 CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJaGVhcF9wcnVuZV9yZWNvcmRfc3R1YihwcnN0YXRl LCBjaGFpbml0ZW1zW2ldLCBuZXh0X3N1cnZpdm9yKTsKKwkJCQkJbmV4dF9zdXJ2aXZvciA9 IGNoYWluaXRlbXNbaV07CisJCQkJfQorCQkJCUhvdEluZGV4ZWRCaXRtYXBVbmlvbihsYXRl cmF0dHJzLCBhdHRycywgYm1uYXR0cyk7CisJCQl9CisJCQllbHNlCisJCQkJaGVhcF9wcnVu ZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIGNoYWluaXRlbXNbaV0sIHRydWUpOworCQl9CisK KwkJcm9vdF90YXJnZXQgPSBuZXh0X3N1cnZpdm9yOworCisJCS8qCisJCSAqIHJvb3QgLT4g Zmlyc3Qgc3Vydml2b3IgKHNraXAgYSByZWR1bmRhbnQgbm8tb3AgcmVkaXJlY3Qgb24KKwkJ ICogcmUtcHJ1bmUpCisJCSAqLworCQlpZiAoSXRlbUlkSXNSZWRpcmVjdGVkKHJvb3RscCkg JiYKKwkJCUl0ZW1JZEdldFJlZGlyZWN0KHJvb3RscCkgPT0gcm9vdF90YXJnZXQpCisJCQlo ZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3QocHJzdGF0ZSwgcm9vdG9m Zm51bSk7CisJCWVsc2UKKwkJCWhlYXBfcHJ1bmVfcmVjb3JkX3JlZGlyZWN0KHByc3RhdGUs IHJvb3RvZmZudW0sIHJvb3RfdGFyZ2V0LAorCQkJCQkJCQkJICAgSXRlbUlkSXNOb3JtYWwo cm9vdGxwKSk7CiAKIAkJLyogdGhlIHJlc3Qgb2YgdHVwbGVzIGluIHRoZSBjaGFpbiBhcmUg bm9ybWFsLCB1bmNoYW5nZWQgdHVwbGVzICovCiAJCWZvciAoaW50IGkgPSBuZGVhZGNoYWlu OyBpIDwgbmNoYWluOyBpKyspCkBAIC0xNzE4LDYgKzE5OTMsMzQgQEAgaGVhcF9wcnVuZV9y ZWNvcmRfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAkgKiBzZXBhcmF0ZWx5IGFz IGFuIHVuY2hhbmdlZCB0dXBsZS4KIAkgKi8KIAorCS8qCisJICogSWYgdGhlIHJlZGlyZWN0 IHBvaW50cyBhdCBhIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIGxpdmUgdHVwbGUsIHRoZQor CSAqIHBhZ2UgbWF5IHN0aWxsIGNhcnJ5IHN0YWxlIGJ0cmVlIGVudHJpZXMgdGhhdCByZXNv bHZlIHRocm91Z2ggdGhpcworCSAqIHJlZGlyZWN0IHRvIGEgdHVwbGUgd2l0aCBhIGRpZmZl cmVudCBrZXkuICBTdWNoIGVudHJpZXMgYXJlIGZpbHRlcmVkIGJ5CisJICogdGhlIHJlYWQg cGF0aCdzIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCwgd2hpY2ggcmVxdWlyZXMgZmV0Y2hp bmcgdGhlCisJICogaGVhcCB0dXBsZSAtLSBidXQgYW4gaW5kZXgtb25seSBzY2FuIHRydXN0 cyB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIHNraXBzCisJICogdGhhdCBmZXRjaC4gIFNvCisJ ICogdGhlIHBhZ2UgbXVzdCBub3QgYmUgcmVwb3J0ZWQgYWxsLXZpc2libGUvYWxsLWZyb3pl biB3aGlsZSBzdWNoIGEKKwkgKiByZWRpcmVjdCBleGlzdHM7IGl0IGJlY29tZXMgZWxpZ2li bGUgYWdhaW4gb25seSBvbmNlIHZhY3V1bSBoYXMgc3dlcHQKKwkgKiB0aGUgc3RhbGUgbGVh dmVzIGFuZCByZWNsYWltZWQgdGhlIHJlZGlyZWN0LgorCSAqLworCWlmIChyZG9mZm51bSA+ PSBGaXJzdE9mZnNldE51bWJlciAmJgorCQlyZG9mZm51bSA8PSBQYWdlR2V0TWF4T2Zmc2V0 TnVtYmVyKHByc3RhdGUtPnBhZ2UpKQorCXsKKwkJSXRlbUlkCQl0bHAgPSBQYWdlR2V0SXRl bUlkKHByc3RhdGUtPnBhZ2UsIHJkb2ZmbnVtKTsKKworCQlpZiAoSXRlbUlkSXNOb3JtYWwo dGxwKSkKKwkJeworCQkJSGVhcFR1cGxlSGVhZGVyIHRodHVwID0gKEhlYXBUdXBsZUhlYWRl cikgUGFnZUdldEl0ZW0ocHJzdGF0ZS0+cGFnZSwgdGxwKTsKKworCQkJaWYgKCh0aHR1cC0+ dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKKwkJCXsKKwkJCQlw cnN0YXRlLT5zZXRfYWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCQlwcnN0YXRlLT5zZXRfYWxs X2Zyb3plbiA9IGZhbHNlOworCQkJfQorCQl9CisJfQorCiAJQXNzZXJ0KHByc3RhdGUtPm5y ZWRpcmVjdGVkIDwgTWF4SGVhcFR1cGxlc1BlclBhZ2UpOwogCXByc3RhdGUtPnJlZGlyZWN0 ZWRbcHJzdGF0ZS0+bnJlZGlyZWN0ZWQgKiAyXSA9IG9mZm51bTsKIAlwcnN0YXRlLT5yZWRp cmVjdGVkW3Byc3RhdGUtPm5yZWRpcmVjdGVkICogMiArIDFdID0gcmRvZmZudW07CkBAIC0x NzM1LDYgKzIwMzgsNjUgQEAgaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QoUHJ1bmVTdGF0 ZSAqcHJzdGF0ZSwKIAlwcnN0YXRlLT5oYXN0dXAgPSB0cnVlOwogfQogCisvKgorICogUmVj b3JkIGEgbGluZSBwb2ludGVyIHRvIGJlIHJld3JpdHRlbiBpbiBwbGFjZSBhcyBhIEhPVC1z ZWxlY3RpdmVseS11cGRhdGVkCisgKiBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGZvcndhcmRp bmcgdG8gJ2ZvcndhcmQnLgorICoKKyAqIFRoZSBzb3VyY2UgbXVzdCBiZSBhIGRlYWQgaGVh cC1vbmx5IHR1cGxlIHRoYXQgY2FycmllZCBpdHMgb3duIGJ0cmVlCisgKiBlbnRyaWVzIChh IGtleSB0dXBsZSkgYW5kIHNvIGNhbm5vdCBiZSByZWNsYWltZWQgb3V0cmlnaHQ6IGEgc3Rh bGUgZW50cnkgbWF5CisgKiBzdGlsbCByZXNvbHZlIHRocm91Z2ggaXQuICBSZXdyaXRpbmcg aXQgaW50byBhbiB4aWQtZnJlZSBzdHViIGtlZXBzIHRoZQorICogZm9yd2FyZCBsaW5rIGFu ZCB0aGUgdHVwbGUncyBpbmxpbmUgbW9kaWZpZWQtYXR0cnMgYml0bWFwIChzbyB0aGUgcmVh ZCBwYXRoCisgKiBjYW4ganVkZ2Ugc3RhbGVuZXNzKSB3aGlsZSBkcm9wcGluZyBpdHMgWElE cywgd2hpY2gga2VlcHMgdGhlIHBhZ2UKKyAqIGZyZWV6ZS1zYWZlLgorICovCitzdGF0aWMg dm9pZAoraGVhcF9wcnVuZV9yZWNvcmRfc3R1YihQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJ CQkgICBPZmZzZXROdW1iZXIgb2ZmbnVtLCBPZmZzZXROdW1iZXIgZm9yd2FyZCkKK3sKKwlB c3NlcnQoIXByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1dKTsKKwlwcnN0YXRlLT5wcm9jZXNz ZWRbb2ZmbnVtXSA9IHRydWU7CisKKwkvKgorCSAqIEFzIHdpdGggYSByZWRpcmVjdCB0byBh IEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIHR1cGxlLCB0aGUgcGFnZSBtdXN0CisJICogbm90 IGJlIHJlcG9ydGVkIGFsbC12aXNpYmxlL2FsbC1mcm96ZW4gd2hpbGUgYSBzdHViIGV4aXN0 czogYW4KKwkgKiBpbmRleC1vbmx5IHNjYW4gd291bGQgb3RoZXJ3aXNlIHRydXN0IHRoZSBW TSBhbmQgc2tpcCB0aGUgcmVjaGVjayB0aGF0CisJICogZmlsdGVycyBhIG5vdy1zdGFsZSBl bnRyeSByZXNvbHZpbmcgdGhyb3VnaCB0aGUgc3R1Yi4gIEEgc3R1YidzCisJICogSEVBUF9Y TUlOX0lOVkFMSUQgYWxzbyBtYWtlcyBpdCBpbnZpc2libGUgdG8gZXZlcnkgc25hcHNob3Qs IHdoaWNoIGFuCisJICogYWxsLXZpc2libGUgcGFnZSBtdXN0IG5ldmVyIGNvbnRhaW4uICBF bGlnaWJpbGl0eSByZXR1cm5zIG9uY2UgdmFjdXVtCisJICogcmVjbGFpbXMgdGhlIHN0dWIu CisJICovCisJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFsc2U7CisJcHJzdGF0ZS0+ c2V0X2FsbF9mcm96ZW4gPSBmYWxzZTsKKworCUFzc2VydChwcnN0YXRlLT5uc3R1YnMgPCBN YXhIZWFwVHVwbGVzUGVyUGFnZSk7CisJcHJzdGF0ZS0+c3R1YnNbcHJzdGF0ZS0+bnN0dWJz ICogMl0gPSBvZmZudW07CisJcHJzdGF0ZS0+c3R1YnNbcHJzdGF0ZS0+bnN0dWJzICogMiAr IDFdID0gZm9yd2FyZDsKKwlwcnN0YXRlLT5uc3R1YnMrKzsKKworCS8qIFRoZSBkZWFkIGtl eSB0dXBsZSdzIHN0b3JhZ2UgaXMgYmVpbmcgZGlzY2FyZGVkOyBjb3VudCBpdCByZW1vdmVk LiAqLworCXByc3RhdGUtPm5kZWxldGVkKys7CisKKwlwcnN0YXRlLT5oYXN0dXAgPSB0cnVl OworfQorCisvKgorICogUmVjb3JkIGFuIGV4aXN0aW5nIGNvbGxhcHNlLXN1cnZpdm9yIHN0 dWIgdGhhdCBpcyB0byBiZSBsZWZ0IHVuY2hhbmdlZC4KKyAqCisgKiBFbmNvdW50ZXJlZCB3 aGVuIHJlLXBydW5pbmcgYSBwYWdlIHRoYXQgYWxyZWFkeSBob2xkcyBzdHVicyBmcm9tIGFu IGVhcmxpZXIKKyAqIGNvbGxhcHNlLiAgVGhlIHN0dWIgaXMgcHJlc2VydmVkIChpdHMgYml0 bWFwIGlzIHN0aWxsIG5lZWRlZCkgYW5kIGNvdW50cyBhcworICogYSByZWFzb24gdGhlIHBh Z2UgY2Fubm90IGJlIHJlcG9ydGVkIGFsbC12aXNpYmxlL2FsbC1mcm96ZW4uCisgKi8KK3N0 YXRpYyB2b2lkCitoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfc3R1YihQcnVuZVN0 YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKQoreworCUFzc2VydCghcHJzdGF0 ZS0+cHJvY2Vzc2VkW29mZm51bV0pOworCXByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1dID0g dHJ1ZTsKKwlwcnN0YXRlLT5oYXN0dXAgPSB0cnVlOworCisJcHJzdGF0ZS0+c2V0X2FsbF92 aXNpYmxlID0gZmFsc2U7CisJcHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gPSBmYWxzZTsKK30K KwogLyogUmVjb3JkIGxpbmUgcG9pbnRlciB0byBiZSBtYXJrZWQgZGVhZCAqLwogc3RhdGlj IHZvaWQKIGhlYXBfcHJ1bmVfcmVjb3JkX2RlYWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zm c2V0TnVtYmVyIG9mZm51bSwKQEAgLTE4MTYsNiArMjE3OCw1MiBAQCBoZWFwX3BydW5lX3Jl Y29yZF91bnVzZWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSwg Ym9vbCB3YXNfbm9ybQogCQlwcnN0YXRlLT5uZGVsZXRlZCsrOwogfQogCisKKy8qCisgKiBo ZWFwX3BydW5lX2l0ZW1fcHJlc2VydmVzX2hvdF9pbmRleGVkCisgKgkJVHJ1ZSBpZmYgdGhl IExQIGF0IGBvZmZudW1gIG9uIGBwYWdlYCBpcyBhIGxpdmUgSE9ULWluZGV4ZWQgKEhPVC9T SVUpCisgKgkJaGVhcC1vbmx5IHR1cGxlIHdob3NlIExQIG11c3QgYmUgcHJlc2VydmVkIHJh dGhlciB0aGFuIHJlY2xhaW1lZCB0bworICoJCUxQX1VOVVNFRCwgYmVjYXVzZSBhIG5vdC15 ZXQtc3dlcHQgaW5kZXggZW50cnkgbWF5IHN0aWxsIHBvaW50IGF0IGl0LgorICoKKyAqIEEg SE9ULWluZGV4ZWQgdXBkYXRlIHBsYW50cyBhIG5ldyBpbmRleCBlbnRyeSBwb2ludGluZyBh dCB0aGUgaGVhcC1vbmx5CisgKiB0dXBsZSdzIG93biBUSUQuICBDbGFzc2ljIEhPVCdzIGlu dmFyaWFudCB0aGF0IG1pZC1jaGFpbiBMUHMgaGF2ZSBubworICogZXh0ZXJuYWwgcmVmZXJl bmNlcyB0aGVyZWZvcmUgZG9lcyBub3QgaG9sZCBmb3Igc3VjaCB0dXBsZXM6IHVudGlsCisg KiBhbWJ1bGtkZWxldGUgc3dlZXBzIGFueSBzdGFsZSBpbmRleCBlbnRyeSwgYSByZWFkZXIg YXJyaXZpbmcgdmlhIGl0IG11c3QKKyAqIHN0aWxsIGZpbmQgYSB3YWxrYWJsZSBob3AgYXQg dGhlIExQLiAgQ2hhaW4gY29sbGFwc2UgY29udmVydHMgZGVhZCBtZW1iZXJzCisgKiB0byBM UF9SRURJUkVDVCBmb3J3YXJkZXJzIGZvciBleGFjdGx5IHRoaXMgcmVhc29uOyBhIGxpdmUg bWVtYmVyIGxpa2UgdGhpcworICogb25lIG11c3Qgc2ltcGx5IG5vdCBiZSByZWNsYWltZWQg b3V0IGZyb20gdW5kZXIgc3VjaCBhIHJlYWRlci4KKyAqCisgKiBFeGNsdWRlZCBmcm9tIHBy ZXNlcnZhdGlvbjoKKyAqICAgLSBpdGVtcyB0aGF0IGFyZSBub3QgTFBfTk9STUFMIChSRURJ UkVDVCwgREVBRCwgVU5VU0VEKTsKKyAqICAgLSB0dXBsZXMgd2l0aG91dCBIRUFQX0lOREVY RURfVVBEQVRFRCAoY2xhc3NpYyBIT1QgY2hhaW4gbWVtYmVycyBuZXZlcgorICogICAgIGhh ZCBhIHBlci10dXBsZSBpbmRleCBlbnRyeSBwbGFudGVkKTsKKyAqICAgLSB0dXBsZXMgd2l0 aCBubyBhdHRyaWJ1dGVzIChkZWZlbnNpdmU6IG5vdCBhIHJlYWwgY2hhaW4gbWVtYmVyKTsK KyAqICAgLSBhYm9ydGVkIGhlYXAtb25seSB0dXBsZXMgKEhFQVBfWE1JTl9JTlZBTElEKTog bmV2ZXIgdmlzaWJsZSB0aHJvdWdoIGFueQorICogICAgIGluZGV4IGVudHJ5LCBzbyByZWNs YWltaW5nIHRoZW0gaXMgc2FmZS4KKyAqLworc3RhdGljIGJvb2wKK2hlYXBfcHJ1bmVfaXRl bV9wcmVzZXJ2ZXNfaG90X2luZGV4ZWQoUGFnZSBwYWdlLCBPZmZzZXROdW1iZXIgb2ZmbnVt KQoreworCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIG9mZm51bSk7CisJSGVh cFR1cGxlSGVhZGVyIGh0dXA7CisKKwlpZiAoIUl0ZW1JZElzTm9ybWFsKGxwKSkKKwkJcmV0 dXJuIGZhbHNlOworCisJaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBh Z2UsIGxwKTsKKworCWlmICgoaHR1cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBE QVRFRCkgPT0gMCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChIZWFwVHVwbGVIZWFkZXJHZXRO YXR0cyhodHVwKSA9PSAwKQorCQlyZXR1cm4gZmFsc2U7CisJaWYgKChodHVwLT50X2luZm9t YXNrICYgSEVBUF9YTUlOX0lOVkFMSUQpICE9IDApCisJCXJldHVybiBmYWxzZTsKKworCXJl dHVybiB0cnVlOworfQorCisKKwogLyoKICAqIFJlY29yZCBhbiB1bnVzZWQgbGluZSBwb2lu dGVyIHRoYXQgaXMgbGVmdCB1bmNoYW5nZWQuCiAgKi8KQEAgLTIwNDksOCArMjQ1Nyw0NCBA QCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAq cHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bQogCSAqLwogCUFzc2VydCghcHJzdGF0ZS0+ cHJvY2Vzc2VkW29mZm51bV0pOwogCXByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1dID0gdHJ1 ZTsKKworCS8qCisJICogQXMgaW4gaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3Q6IGlmIHRo aXMgcmVkaXJlY3QgZm9yd2FyZHMgdG8gYQorCSAqIEhPVC1zZWxlY3RpdmVseS11cGRhdGVk IGxpdmUgdHVwbGUsIHRoZSBwYWdlIG1heSBjYXJyeSBzdGFsZSBidHJlZQorCSAqIGVudHJp ZXMgdGhhdCByZXNvbHZlIHRocm91Z2ggaXQsIHNvIGl0IG11c3Qgbm90IGJlIHJlcG9ydGVk CisJICogYWxsLXZpc2libGUvYWxsLWZyb3plbiAoYW4gaW5kZXgtb25seSBzY2FuIHdvdWxk IG90aGVyd2lzZSBza2lwIHRoZQorCSAqIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBjaGVj aykuICBUaGlzIG11c3QgaGFwcGVuIGhlcmUgdG9vLCBub3Qgb25seSB3aGVuIHRoZQorCSAq IHJlZGlyZWN0IGlzIGZpcnN0IGNyZWF0ZWQsIGJlY2F1c2UgYSByZS1wcnVuZSByZWNvcmRz IGFuIGV4aXN0aW5nIFNJVQorCSAqIHJlZGlyZWN0IGFzIHVuY2hhbmdlZC4KKwkgKi8KKwl7 CisJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlkKHByc3RhdGUtPnBhZ2UsIG9mZm51bSk7 CisKKwkJaWYgKEl0ZW1JZElzUmVkaXJlY3RlZChscCkpCisJCXsKKwkJCU9mZnNldE51bWJl ciByZG9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGxwKTsKKworCQkJaWYgKHJkb2ZmbnVt ID49IEZpcnN0T2Zmc2V0TnVtYmVyICYmCisJCQkJcmRvZmZudW0gPD0gUGFnZUdldE1heE9m ZnNldE51bWJlcihwcnN0YXRlLT5wYWdlKSkKKwkJCXsKKwkJCQlJdGVtSWQJCXRscCA9IFBh Z2VHZXRJdGVtSWQocHJzdGF0ZS0+cGFnZSwgcmRvZmZudW0pOworCisJCQkJaWYgKEl0ZW1J ZElzTm9ybWFsKHRscCkpCisJCQkJeworCQkJCQlIZWFwVHVwbGVIZWFkZXIgdGh0dXAgPSAo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwcnN0YXRlLT5wYWdlLCB0bHApOworCisJ CQkJCWlmICgodGh0dXAtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpICE9 IDApCisJCQkJCXsKKwkJCQkJCXByc3RhdGUtPnNldF9hbGxfdmlzaWJsZSA9IGZhbHNlOwor CQkJCQkJcHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gPSBmYWxzZTsKKwkJCQkJfQorCQkJCX0K KwkJCX0KKwkJfQorCX0KIH0KIAorCiAvKgogICogUGVyZm9ybSB0aGUgYWN0dWFsIHBhZ2Ug Y2hhbmdlcyBuZWVkZWQgYnkgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKS4KICAqCkBA IC0yMDY1LDE3ICsyNTA5LDIyIEBAIHZvaWQKIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1 ZmZlciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwKIAkJCQkJCU9mZnNldE51bWJl ciAqcmVkaXJlY3RlZCwgaW50IG5yZWRpcmVjdGVkLAogCQkJCQkJT2Zmc2V0TnVtYmVyICpu b3dkZWFkLCBpbnQgbmRlYWQsCi0JCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNlZCwgaW50 IG51bnVzZWQpCisJCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNlZCwgaW50IG51bnVzZWQs CisJCQkJCQlPZmZzZXROdW1iZXIgKnN0dWJzLCBpbnQgbnN0dWJzKQogewogCVBhZ2UJCXBh Z2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJT2Zmc2V0TnVtYmVyICpvZmZudW07CiAJ SGVhcFR1cGxlSGVhZGVyIGh0dXAgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOwogCiAJLyog U2hvdWxkbid0IGJlIGNhbGxlZCB1bmxlc3MgdGhlcmUncyBzb21ldGhpbmcgdG8gZG8gKi8K LQlBc3NlcnQobnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCk7 CisJQXNzZXJ0KG5yZWRpcmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDAg fHwgbnN0dWJzID4gMCk7CiAKLQkvKiBJZiAnbHBfdHJ1bmNhdGVfb25seScsIHdlIGNhbiBv bmx5IHJlbW92ZSBhbHJlYWR5LWRlYWQgbGluZSBwb2ludGVycyAqLwotCUFzc2VydCghbHBf dHJ1bmNhdGVfb25seSB8fCAobnJlZGlyZWN0ZWQgPT0gMCAmJiBuZGVhZCA9PSAwKSk7CisJ LyoKKwkgKiBJZiAnbHBfdHJ1bmNhdGVfb25seScsIHdlIGNhbiBvbmx5IHJlbW92ZSBhbHJl YWR5LWRlYWQgbGluZSBwb2ludGVycworCSAqIGFuZCByZS1wb2ludCByZWRpcmVjdHMgKHRo ZSBsYXR0ZXIgd2hlbiB2YWN1dW0gcmVjbGFpbXMgYSBjb2xsYXBzZWQKKwkgKiBjaGFpbiBh bmQgcmUtcG9pbnRzIGEgcm9vdCByZWRpcmVjdCBhdCB0aGUgc3Vydml2aW5nIHR1cGxlKS4K KwkgKi8KKwlBc3NlcnQoIWxwX3RydW5jYXRlX29ubHkgfHwgbmRlYWQgPT0gMCk7CiAKIAkv KiBVcGRhdGUgYWxsIHJlZGlyZWN0ZWQgbGluZSBwb2ludGVycyAqLwogCW9mZm51bSA9IHJl ZGlyZWN0ZWQ7CkBAIC0yMDg2LDYgKzI1MzUsMTYgQEAgaGVhcF9wYWdlX3BydW5lX2V4ZWN1 dGUoQnVmZmVyIGJ1ZmZlciwgYm9vbCBscF90cnVuY2F0ZV9vbmx5LAogCQlJdGVtSWQJCWZy b21scCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgZnJvbW9mZik7CiAJCUl0ZW1JZAkJdG9scCBQ R19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CiAKKwkJLyoKKwkJICogQSByZWR1bmRhbnQgcmVk aXJlY3QgKHRoZSBMUCBhbHJlYWR5IHJlZGlyZWN0cyB0byB0b29mZikgaXMgYQorCQkgKiBo YXJtbGVzcyBuby1vcC4gIFRoaXMgYXJpc2VzIHdoZW4gYSBIT1QtaW5kZXhlZCBjaGFpbiB0 aGF0IHdhcworCQkgKiBhbHJlYWR5IGNvbGxhcHNlZCBpcyByZS1wcnVuZWQgYW5kIHRoZSBy b290IHN0aWxsIHJlc29sdmVzIHRvIHRoZQorCQkgKiBzYW1lIHRhcmdldDsgc2tpcCBpdCBz byB0aGUgYXBwbHkgc3RheXMgaWRlbXBvdGVudCBvbiBib3RoIHByaW1hcnkKKwkJICogYW5k IHJlcGxheS4KKwkJICovCisJCWlmIChJdGVtSWRJc1JlZGlyZWN0ZWQoZnJvbWxwKSAmJiBJ dGVtSWRHZXRSZWRpcmVjdChmcm9tbHApID09IHRvb2ZmKQorCQkJY29udGludWU7CisKICNp ZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCiAKIAkJLyoKQEAgLTIxMDAsNyArMjU1OSwxNiBA QCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29sIGxwX3RydW5j YXRlX29ubHksCiAJCQlBc3NlcnQoSXRlbUlkSGFzU3RvcmFnZShmcm9tbHApICYmIEl0ZW1J ZElzTm9ybWFsKGZyb21scCkpOwogCiAJCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFn ZUdldEl0ZW0ocGFnZSwgZnJvbWxwKTsKLQkJCUFzc2VydCghSGVhcFR1cGxlSGVhZGVySXNI ZWFwT25seShodHVwKSk7CisKKwkJCS8qCisJCQkgKiBUaGUgcmVkaXJlY3Qgc291cmNlIGlz IG5vcm1hbGx5IHRoZSBub24taGVhcC1vbmx5IGNoYWluIHJvb3QuIEEKKwkJCSAqIEhPVC9T SVUgY2hhaW4gY29sbGFwc2UgYWRkaXRpb25hbGx5IHJlZGlyZWN0cyBkZWFkIGhlYXAtb25s eQorCQkJICogbWVtYmVycyB0aGF0IGNhcnJpZWQgdGhlaXIgb3duIGJ0cmVlIGVudHJ5IHRv IHRoZSBsaXZlIHR1cGxlLAorCQkJICogc28gYSBoZWFwLW9ubHkgcmVkaXJlY3Qgc291cmNl IGlzIGFsbG93ZWQgd2hlbiBpdCBpcworCQkJICogSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQg KEhFQVBfSU5ERVhFRF9VUERBVEVEKS4KKwkJCSAqLworCQkJQXNzZXJ0KCFIZWFwVHVwbGVI ZWFkZXJJc0hlYXBPbmx5KGh0dXApIHx8CisJCQkJICAgKGh0dXAtPnRfaW5mb21hc2syICYg SEVBUF9JTkRFWEVEX1VQREFURUQpICE9IDApOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMjEy OCwxMiArMjU5Niw1NSBAQCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVy LCBib29sIGxwX3RydW5jYXRlX29ubHksCiAJCXRvbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2Us IHRvb2ZmKTsKIAkJQXNzZXJ0KEl0ZW1JZEhhc1N0b3JhZ2UodG9scCkgJiYgSXRlbUlkSXNO b3JtYWwodG9scCkpOwogCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0o cGFnZSwgdG9scCk7CisJCS8qIEEgcmVkaXJlY3QgdGFyZ2V0cyB0aGUgZmlyc3Qgc3Vydml2 aW5nIG1lbWJlcjogYSBoZWFwLW9ubHkgdHVwbGUuICovCiAJCUFzc2VydChIZWFwVHVwbGVI ZWFkZXJJc0hlYXBPbmx5KGh0dXApKTsKICNlbmRpZgogCiAJCUl0ZW1JZFNldFJlZGlyZWN0 KGZyb21scCwgdG9vZmYpOwogCX0KIAorCS8qCisJICogUmV3cml0ZSBjb2xsYXBzZS1zdXJ2 aXZvciBzdHVicyBpbiBwbGFjZS4gIEVhY2ggKG9mZnNldCwgZm9yd2FyZCkgcGFpcgorCSAq IG5hbWVzIGEgZGVhZCBrZXkgdHVwbGUgdG8gYmUgdHVybmVkIGludG8gYW4geGlkLWZyZWUg Zm9yd2FyZGluZyBzdHViOgorCSAqIHBlcm1hbmVudGx5IGludmlzaWJsZSAoSEVBUF9YTUlO X0lOVkFMSUR8SEVBUF9YTUFYX0lOVkFMSUQpLCBmbGFnZ2VkCisJICogSEVBUF9JTkRFWEVE X1VQREFURUQgd2l0aCBuYXR0cyA9PSAwIHNvIGNvbnN1bWVycyByZWNvZ25pc2UgaXQgYXMg YQorCSAqIHN0dWIgcmF0aGVyIHRoYW4gYSB0dXBsZSwgaGVhcC1vbmx5IHByZXNlcnZlZCBz byBpdCByZW1haW5zIGEgdmFsaWQKKwkgKiByZWRpcmVjdC9mb3J3YXJkIHRhcmdldCwgYW5k IHRfY3RpZC5vZmZudW0gc2V0IHRvIHRoZSBmb3J3YXJkIG9mZnNldC4KKwkgKiBUaGUgaXRl bSdzIHN0b3JhZ2UgKGluY2x1ZGluZyBpdHMgaW5saW5lIG1vZGlmaWVkLWF0dHJzIGJpdG1h cCBpbiB0aGUKKwkgKiBmaW5hbCBieXRlcykgaXMgbGVmdCB1bmRpc3R1cmJlZCwgc28gdGhl IGJpdG1hcCBzdXJ2aXZlcyBhbmQgbmVlZCBub3QKKwkgKiBiZSBjYXJyaWVkIGluIFdBTC4K KwkgKi8KKwlvZmZudW0gPSBzdHViczsKKwlmb3IgKGludCBpID0gMDsgaSA8IG5zdHViczsg aSsrKQorCXsKKwkJT2Zmc2V0TnVtYmVyIG9mZiA9ICpvZmZudW0rKzsKKwkJT2Zmc2V0TnVt YmVyIGZvcndhcmQgPSAqb2ZmbnVtKys7CisJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlk KHBhZ2UsIG9mZik7CisJCUhlYXBUdXBsZUhlYWRlciB0dXA7CisJCWludAkJCWJpdG1hcF9u YXR0czsKKworCQlBc3NlcnQoSXRlbUlkSXNOb3JtYWwobHApKTsKKwkJdHVwID0gKEhlYXBU dXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOworCisJCS8qCisJCSAqIFByZXNl cnZlIHRoZSB0dXBsZSdzIHdyaXRlLXRpbWUgbmF0dHMgYmVmb3JlIHdlIG92ZXJ3cml0ZSB0 aGUgbmF0dHMKKwkJICogZmllbGQgd2l0aCB0aGUgc3R1YiBzZW50aW5lbCAoMCk6IHRoZSB0 cmFpbGluZyBtb2RpZmllZC1hdHRycyBiaXRtYXAKKwkJICogd2FzIHNpemVkIHdpdGggaXQs IGFuZCByZWFkZXJzIG5lZWQgaXQgdG8gbG9jYXRlIHRoZSBiaXRtYXAgd2hlbiB0aGUKKwkJ ICogcmVsYXRpb24ncyBjdXJyZW50IG5hdHRzIGhhcyBzaW5jZSBncm93biAoQUREIENPTFVN TikuICBUaGUgc3R1YidzCisJCSAqIHRfY3RpZCBvZmZzZXQgaGFsZiBob2xkcyB0aGUgZm9y d2FyZCBsaW5rOyB0aGUgYmxvY2sgaGFsZiBpcyB1bnVzZWQKKwkJICogZm9yIGEgc3R1Yiwg c28gc3Rhc2ggdGhlIG5hdHRzIHRoZXJlLiAgVGhpcyBydW5zIGlkZW50aWNhbGx5IG9uIHRo ZQorCQkgKiBwcmltYXJ5IGFuZCBpbiByZWRvICh0aGUgcHJlLXN0dWIgdHVwbGUgaXMgb24g Ym90aCBwYWdlcyksIHNvIG5vIFdBTAorCQkgKiBjaGFuZ2UgaXMgbmVlZGVkLgorCQkgKi8K KwkJYml0bWFwX25hdHRzID0gSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHModHVwKTsKKworCQl0 dXAtPnRfaW5mb21hc2sgPSBIRUFQX1hNSU5fSU5WQUxJRCB8IEhFQVBfWE1BWF9JTlZBTElE OworCQl0dXAtPnRfaW5mb21hc2syID0gSEVBUF9PTkxZX1RVUExFIHwgSEVBUF9JTkRFWEVE X1VQREFURUQ7CisJCUhlYXBUdXBsZUhlYWRlclNldE5hdHRzKHR1cCwgMCk7CisJCUl0ZW1Q b2ludGVyU2V0T2Zmc2V0TnVtYmVyKCZ0dXAtPnRfY3RpZCwgZm9yd2FyZCk7CisJCUhvdElu ZGV4ZWRTdHViU2V0Qml0bWFwTmF0dHModHVwLCBiaXRtYXBfbmF0dHMpOworCX0KKwogCS8q IFVwZGF0ZSBhbGwgbm93LWRlYWQgbGluZSBwb2ludGVycyAqLwogCW9mZm51bSA9IG5vd2Rl YWQ7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCBuZGVhZDsgaSsrKQpAQCAtMjE0OSwxMiArMjY2 MCwyMyBAQCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29sIGxw X3RydW5jYXRlX29ubHksCiAJCSAqIGFuIGluZGV4LiAgVGhpcyBzaG91bGQgbmV2ZXIgYmUg bmVjZXNzYXJ5IHdpdGggYW55IGluZGl2aWR1YWwKIAkJICogaGVhcC1vbmx5IHR1cGxlIGl0 ZW0sIHRob3VnaC4gKEl0J3Mgbm90IGNsZWFyIGhvdyBtdWNoIG9mIGEgcHJvYmxlbQogCQkg KiB0aGF0IHdvdWxkIGJlLCBidXQgdGhlcmUgaXMgbm8gcmVhc29uIHRvIGFsbG93IGl0LikK KwkJICoKKwkJICogRXhjZXB0aW9uOiBhIEhPVC1pbmRleGVkIGFib3J0ZWQgb3JwaGFuIHdo b3NlIGNoYWluIHJvb3QgaXMKKwkJICogdW5yZWFjaGFibGUgb24gdGhpcyBwYWdlIGlzIGlu dGVudGlvbmFsbHkgbWFya2VkIExQX0RFQUQgYnkgdGhlCisJCSAqIGhlYXAtb25seS10dXBs ZXMgbG9vcCBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSAoc2VlIHRoZQorCQkgKiBo ZWFwX3BydW5lX3JlY29yZF9kZWFkIGNhbGwgdGhlcmUpLiAgVGhlIHR1cGxlIGlzIGhlYXAt b25seSAoaXQgd2FzCisJCSAqIGNyZWF0ZWQgYnkgYW4gVVBEQVRFKSBhbmQgY2FycmllcyBI RUFQX0lOREVYRURfVVBEQVRFRDsgdGhlCisJCSAqIGFkamFjZW50IGJ0cmVlIGxlYWYgaXMg c3RpbGwgbGl2ZSwgc28gd2Uga2VlcCB0aGUgc2xvdCBwaW5uZWQgdmlhCisJCSAqIExQX0RF QUQgdW50aWwgYW1idWxrZGVsZXRlIHN3ZWVwcyBpdC4gIEEgc3Vic2VxdWVudCB2YWN1dW0g cmVjbGFpbXMKKwkJICogdGhlIExQIHRvIExQX1VOVVNFRC4KIAkJICovCiAJCWlmIChJdGVt SWRIYXNTdG9yYWdlKGxwKSkKIAkJewogCQkJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKGxwKSk7 CiAJCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOwot CQkJQXNzZXJ0KCFIZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KGh0dXApKTsKKwkJCUFzc2Vy dCghSGVhcFR1cGxlSGVhZGVySXNIZWFwT25seShodHVwKSB8fAorCQkJCSAgICgoaHR1cC0+ dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCAmJgorCQkJCQlIZWFw VHVwbGVIZWFkZXJHZXROYXR0cyhodHVwKSA+IDApKTsKIAkJfQogCQllbHNlCiAJCXsKQEAg LTIxNzcsNyArMjY5OSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1ZmZlciBidWZm ZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwKIAogCQlpZiAobHBfdHJ1bmNhdGVfb25seSkK IAkJewotCQkJLyogU2V0dGluZyBMUF9ERUFEIHRvIExQX1VOVVNFRCBpbiB2YWN1dW0ncyBz ZWNvbmQgcGFzcyAqLworCQkJLyogU2V0dGluZyBMUF9ERUFEIHRvIExQX1VOVVNFRCBpbiB2 YWN1dW0ncyBzZWNvbmQgcGFzcy4gKi8KIAkJCUFzc2VydChJdGVtSWRJc0RlYWQobHApICYm ICFJdGVtSWRIYXNTdG9yYWdlKGxwKSk7CiAJCX0KIAkJZWxzZQpAQCAtMjE4OCw3ICsyNzEw LDggQEAgaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUoQnVmZmVyIGJ1ZmZlciwgYm9vbCBscF90 cnVuY2F0ZV9vbmx5LAogCQkJICogaXRlbXMgdG8gYmUgbWFkZSBMUF9VTlVTRUQgaW5zdGVh ZC4gIFRoaXMgaXMgb25seSBwb3NzaWJsZSBpZgogCQkJICogdGhlIHJlbGF0aW9uIGhhcyBu byBpbmRleGVzLiAgSWYgdGhlcmUgYXJlIGFueSBkZWFkIGl0ZW1zLCB0aGVuCiAJCQkgKiBt YXJrX3VudXNlZF9ub3cgd2FzIG5vdCB0cnVlIGFuZCBldmVyeSBpdGVtIGJlaW5nIG1hcmtl ZAotCQkJICogTFBfVU5VU0VEIG11c3QgcmVmZXIgdG8gYSBoZWFwLW9ubHkgdHVwbGUuCisJ CQkgKiBMUF9VTlVTRUQgbXVzdCByZWZlciB0byBhIGhlYXAtb25seSB0dXBsZSB3aG9zZSBj aGFpbiBoYXMgYmVlbgorCQkJICogcHJ1bmVkLgogCQkJICovCiAJCQlpZiAobmRlYWQgPiAw KQogCQkJewpAQCAtMjI2NCw2ICsyNzg3LDggQEAgcGFnZV92ZXJpZnlfcmVkaXJlY3RzKFBh Z2UgcGFnZSkKIAkJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKHRhcmdpdGVtKSk7CiAJCUFzc2Vy dChJdGVtSWRIYXNTdG9yYWdlKHRhcmdpdGVtKSk7CiAJCWh0dXAgPSAoSGVhcFR1cGxlSGVh ZGVyKSBQYWdlR2V0SXRlbShwYWdlLCB0YXJnaXRlbSk7CisKKwkJLyogQSByZWRpcmVjdCB0 YXJnZXRzIHRoZSBmaXJzdCBzdXJ2aXZpbmcgY2hhaW4gbWVtYmVyOiBoZWFwLW9ubHkuICov CiAJCUFzc2VydChIZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KGh0dXApKTsKIAl9CiAjZW5k aWYKQEAgLTI1NjYsNyArMzA5MSw4IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkgIEhlYXBUdXBsZUZyZWV6 ZSAqZnJvemVuLCBpbnQgbmZyb3plbiwKIAkJCQkJCSAgT2Zmc2V0TnVtYmVyICpyZWRpcmVj dGVkLCBpbnQgbnJlZGlyZWN0ZWQsCiAJCQkJCQkgIE9mZnNldE51bWJlciAqZGVhZCwgaW50 IG5kZWFkLAotCQkJCQkJICBPZmZzZXROdW1iZXIgKnVudXNlZCwgaW50IG51bnVzZWQpCisJ CQkJCQkgIE9mZnNldE51bWJlciAqdW51c2VkLCBpbnQgbnVudXNlZCwKKwkJCQkJCSAgT2Zm c2V0TnVtYmVyICpzdHVicywgaW50IG5zdHVicykKIHsKIAl4bF9oZWFwX3BydW5lIHhscmVj OwogCVhMb2dSZWNQdHIJcmVjcHRyOwpAQCAtMjU4MSw4ICszMTA3LDEwIEBAIGxvZ19oZWFw X3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJ eGxocF9wcnVuZV9pdGVtcyByZWRpcmVjdF9pdGVtczsKIAl4bGhwX3BydW5lX2l0ZW1zIGRl YWRfaXRlbXM7CiAJeGxocF9wcnVuZV9pdGVtcyB1bnVzZWRfaXRlbXM7CisJeGxocF9wcnVu ZV9pdGVtcyBzdHViX2l0ZW1zOwogCU9mZnNldE51bWJlciBmcnpfb2Zmc2V0c1tNYXhIZWFw VHVwbGVzUGVyUGFnZV07Ci0JYm9vbAkJZG9fcHJ1bmUgPSBucmVkaXJlY3RlZCA+IDAgfHwg bmRlYWQgPiAwIHx8IG51bnVzZWQgPiAwOworCWJvb2wJCWRvX3BydW5lID0gbnJlZGlyZWN0 ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCB8fAorCQluc3R1YnMgPiAwOwog CWJvb2wJCWRvX3NldF92bSA9IHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7 CiAJYm9vbAkJaGVhcF9mcGlfYWxsb3dlZCA9IHRydWU7CiAKQEAgLTI2NzAsNiArMzE5OCwx NiBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLAogCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIHVudXNlZCwKIAkJCQkJCQlz aXplb2YoT2Zmc2V0TnVtYmVyKSAqIG51bnVzZWQpOwogCX0KKwlpZiAobnN0dWJzID4gMCkK Kwl7CisJCXhscmVjLmZsYWdzIHw9IFhMSFBfSEFTX0hPVF9JTkRFWEVEX1NUVUJTOworCisJ CXN0dWJfaXRlbXMubnRhcmdldHMgPSBuc3R1YnM7CisJCVhMb2dSZWdpc3RlckJ1ZkRhdGEo MCwgJnN0dWJfaXRlbXMsCisJCQkJCQkJb2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0 YSkpOworCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIHN0dWJzLAorCQkJCQkJCXNpemVvZihP ZmZzZXROdW1iZXJbMl0pICogbnN0dWJzKTsKKwl9CiAJaWYgKG5mcm96ZW4gPiAwKQogCQlY TG9nUmVnaXN0ZXJCdWZEYXRhKDAsIGZyel9vZmZzZXRzLAogCQkJCQkJCXNpemVvZihPZmZz ZXROdW1iZXIpICogbmZyb3plbik7CkBAIC0yNjkyLDggKzMyMzAsMTcgQEAgbG9nX2hlYXBf cHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJ eGxyZWMuZmxhZ3MgfD0gWExIUF9DTEVBTlVQX0xPQ0s7CiAJZWxzZQogCXsKLQkJQXNzZXJ0 KG5yZWRpcmVjdGVkID09IDAgJiYgbmRlYWQgPT0gMCk7Ci0JCS8qIGFsc28sIGFueSBpdGVt cyBpbiAndW51c2VkJyBtdXN0J3ZlIGJlZW4gTFBfREVBRCBwcmV2aW91c2x5ICovCisJCS8q CisJCSAqIFdpdGhvdXQgYSBjbGVhbnVwIGxvY2sgd2UgY2FuIG9ubHkgcmVtb3ZlIGFscmVh ZHktZGVhZCBsaW5lCisJCSAqIHBvaW50ZXJzIGFuZCByZS1wb2ludCByZWRpcmVjdHMuICBU aGUgbGF0dGVyIGhhcHBlbnMgd2hlbiB2YWN1dW0ncworCQkgKiBzZWNvbmQgcGFzcyByZWNs YWltcyBhIGNvbGxhcHNlZCBIT1QtaW5kZXhlZCBjaGFpbiBhbmQgcmUtcG9pbnRzCisJCSAq IHRoZSByb290IHJlZGlyZWN0IGF0IGZpcnN0X2xpdmU6IHRoYXQgY2hhbmdlIGlzIG1hZGUg dW5kZXIgYW4KKwkJICogZXhjbHVzaXZlIGxvY2sgYW5kIHByZXNlcnZlcyB0aGUgY2hhaW4n cyByZWFjaGFiaWxpdHkgKGV2ZXJ5IHdhbGtlcgorCQkgKiBzdGlsbCByZWFjaGVzIGZpcnN0 X2xpdmUpLCBzbyBubyBjbGVhbnVwIGxvY2sgaXMgbmVlZGVkIC0tIHRoZSBzYW1lCisJCSAq IGJhc2lzIG9uIHdoaWNoIHRoaXMgcGFzcyBhbHJlYWR5IHJlY2xhaW1zIGRlYWQgbGluZSBw b2ludGVycyB0bworCQkgKiBMUF9VTlVTRUQuCisJCSAqLworCQlBc3NlcnQobmRlYWQgPT0g MCk7CiAJfQogCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZIZWFwUHJ1bmUpOwog CWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChjb25mbGljdF94aWQpKQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDM5Mzk1YWVkMGQ1Li43NDJiOTlmYmQ2ZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTMxLDYgKzEzMSw3 IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaGVh cGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNp bmNsdWRlICJhY2Nlc3MvdGlkc3RvcmUuaCIKQEAgLTQ0NSw3ICs0NDYsOCBAQCBzdGF0aWMg Ym9vbCBsYXp5X3ZhY3V1bV9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3Rh dGljIHZvaWQgbGF6eV92YWN1dW1faGVhcF9yZWwoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0 YXRpYyB2b2lkIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJs b2NrTnVtYmVyIGJsa25vLAogCQkJCQkJCQkgIEJ1ZmZlciBidWZmZXIsIE9mZnNldE51bWJl ciAqZGVhZG9mZnNldHMsCi0JCQkJCQkJCSAgaW50IG51bV9vZmZzZXRzLCBCdWZmZXIgdm1i dWZmZXIpOworCQkJCQkJCQkgIGludCBudW1fb2Zmc2V0cywgQnVmZmVyIHZtYnVmZmVyLAor CQkJCQkJCQkgIGJvb2wgZ290X2NsZWFudXBfbG9jayk7CiBzdGF0aWMgYm9vbCBsYXp5X2No ZWNrX3dyYXBhcm91bmRfZmFpbHNhZmUoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2 b2lkIGxhenlfY2xlYW51cF9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3Rh dGljIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0 aW9uIGluZHJlbCwKQEAgLTE5NzIsNiArMTk3NCw3IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1w dHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywK IAkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBOVUxMLCAwLAogCQkJCQkJCQkJ CSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBOVUxMLCAw KTsKIAogCQkJRU5EX0NSSVRfU0VDVElPTigpOwpAQCAtMjIxNCw2ICsyMjE3LDcgQEAgbGF6 eV9zY2FuX25vcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCiAJCWhhc3R1cCA9IHRydWU7 CQkJLyogcGFnZSBwcmV2ZW50cyByZWwgdHJ1bmNhdGlvbiAqLwogCQl0dXBsZWhlYWRlciA9 IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CisKIAkJaWYg KGhlYXBfdHVwbGVfc2hvdWxkX2ZyZWV6ZSh0dXBsZWhlYWRlciwgJnZhY3JlbC0+Y3V0b2Zm cywKIAkJCQkJCQkJCSAmTm9GcmVlemVQYWdlUmVsZnJvemVuWGlkLAogCQkJCQkJCQkJICZO b0ZyZWV6ZVBhZ2VSZWxtaW5NeGlkKSkKQEAgLTI2ODYsNiArMjY5MCw3IEBAIGxhenlfdmFj dXVtX2hlYXBfcmVsKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJU2l6ZQkJZnJlZXNwYWNlOwog CQlPZmZzZXROdW1iZXIgb2Zmc2V0c1tNYXhPZmZzZXROdW1iZXJdOwogCQlpbnQJCQludW1f b2Zmc2V0czsKKwkJYm9vbAkJZ290X2NsZWFudXBfbG9jazsKIAogCQl2YWN1dW1fZGVsYXlf cG9pbnQoZmFsc2UpOwogCkBAIC0yNzA4LDEwICsyNzEzLDIwIEBAIGxhenlfdmFjdXVtX2hl YXBfcmVsKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJICovCiAJCXZpc2liaWxpdHltYXBfcGlu KHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKTsKIAotCQkvKiBXZSBuZWVkIGEgbm9u LWNsZWFudXAgZXhjbHVzaXZlIGxvY2sgdG8gbWFyayBkZWFkX2l0ZW1zIHVudXNlZCAqLwot CQlMb2NrQnVmZmVyKGJ1ZiwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKKwkJLyoKKwkJICog U2V0dGluZyBkZWFkIGl0ZW1zIHVudXNlZCBuZWVkcyBvbmx5IGFuIGV4Y2x1c2l2ZSBsb2Nr LCBidXQKKwkJICogcmVjbGFpbWluZyBhIGNvbGxhcHNlZCBIT1QtaW5kZXhlZCBjaGFpbiBh ZGRpdGlvbmFsbHkgcmUtcG9pbnRzIHRoZQorCQkgKiByZWRpcmVjdHMgdGhhdCBmb3J3YXJk IGludG8gaXQgLS0gbW92aW5nIGNoYWluIHN0cnVjdHVyZSBjb25jdXJyZW50CisJCSAqIHNj YW5zIGZvbGxvdywgd2hpY2ggcmVxdWlyZXMgYSBjbGVhbnVwIGxvY2suICBQcmVmZXIgYSBj bGVhbnVwIGxvY2sKKwkJICogKGFzIHRoZSBmaXJzdCBwYXNzIGRvZXMpOyBpZiB1bmF2YWls YWJsZSwgZmFsbCBiYWNrIHRvIGFuIGV4Y2x1c2l2ZQorCQkgKiBsb2NrIGFuZCBsYXp5X3Zh Y3V1bV9oZWFwX3BhZ2UgZGVmZXJzIGFueSBzdWNoIHJlY2xhaW0gb24gdGhpcyBwYWdlCisJ CSAqIHRvIGEgbGF0ZXIgdmFjdXVtIHRoYXQgY2FuIG9idGFpbiBvbmUuCisJCSAqLworCQln b3RfY2xlYW51cF9sb2NrID0gQ29uZGl0aW9uYWxMb2NrQnVmZmVyRm9yQ2xlYW51cChidWYp OworCQlpZiAoIWdvdF9jbGVhbnVwX2xvY2spCisJCQlMb2NrQnVmZmVyKGJ1ZiwgQlVGRkVS X0xPQ0tfRVhDTFVTSVZFKTsKIAkJbGF6eV92YWN1dW1faGVhcF9wYWdlKHZhY3JlbCwgYmxr bm8sIGJ1Ziwgb2Zmc2V0cywKLQkJCQkJCQkgIG51bV9vZmZzZXRzLCB2bWJ1ZmZlcik7CisJ CQkJCQkJICBudW1fb2Zmc2V0cywgdm1idWZmZXIsIGdvdF9jbGVhbnVwX2xvY2spOwogCiAJ CS8qIE5vdyB0aGF0IHdlJ3ZlIHZhY3V1bWVkIHRoZSBwYWdlLCByZWNvcmQgaXRzIGF2YWls YWJsZSBzcGFjZSAqLwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwpAQCAtMjc0Niw2 ICsyNzYxLDcgQEAgbGF6eV92YWN1dW1faGVhcF9yZWwoTFZSZWxTdGF0ZSAqdmFjcmVsKQog CXJlc3RvcmVfdmFjdXVtX2Vycm9yX2luZm8odmFjcmVsLCAmc2F2ZWRfZXJyX2luZm8pOwog fQogCisKIC8qCiAgKglsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoKSAtLSBmcmVlIHBhZ2UncyBM UF9ERUFEIGl0ZW1zIGxpc3RlZCBpbiB0aGUKICAqCQkJCQkJICB2YWNyZWwtPmRlYWRfaXRl bXMgc3RvcmUuCkBAIC0yNzU3LDcgKzI3NzMsNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3JlbChM VlJlbFN0YXRlICp2YWNyZWwpCiBzdGF0aWMgdm9pZAogbGF6eV92YWN1dW1faGVhcF9wYWdl KExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIs CiAJCQkJCSAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywgaW50IG51bV9vZmZzZXRzLAot CQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlcikKKwkJCQkJICBCdWZmZXIgdm1idWZmZXIsIGJvb2wg Z290X2NsZWFudXBfbG9jaykKIHsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZm ZXIpOwogCU9mZnNldE51bWJlciB1bnVzZWRbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwpAQCAt Mjc4Myw3ICsyNzk5LDkgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZh Y3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJICogYW5kIG1hcmsg dGhlIHBhZ2UgYWxsLXZpc2libGUgd2l0aGluIHRoZSBzYW1lIGNyaXRpY2FsIHNlY3Rpb24s CiAJICogZW5hYmxpbmcgYm90aCBjaGFuZ2VzIHRvIGJlIGVtaXR0ZWQgaW4gYSBzaW5nbGUg V0FMIHJlY29yZC4gU2luY2UgdGhlCiAJICogdmlzaWJpbGl0eSBjaGVja3MgbWF5IHBlcmZv cm0gSS9PIGFuZCBhbGxvY2F0ZSBtZW1vcnksIHRoZXkgbXVzdCBiZQotCSAqIGRvbmUgb3V0 c2lkZSB0aGUgY3JpdGljYWwgc2VjdGlvbi4KKwkgKiBkb25lIG91dHNpZGUgdGhlIGNyaXRp Y2FsIHNlY3Rpb24uICBBIGRlZmVycmVkIHJlY2xhaW0gbGVhdmVzIGEKKwkgKiBub3QteWV0 LXJlbW92ZWQgbWVtYmVyIG9uIHRoZSBwYWdlLCBzbyBza2lwIHRoZSBjaGVjayB3aGVuIGFu eXRoaW5nIHdhcworCSAqIGRlZmVycmVkLgogCSAqLwogCWlmIChoZWFwX3BhZ2Vfd291bGRf YmVfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZmZlciwKIAkJCQkJCQkJCSAgIHZhY3Jl bC0+dmlzdGVzdCwgdHJ1ZSwKQEAgLTI4MTUsMTMgKzI4MzMsMTIgQEAgbGF6eV92YWN1dW1f aGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZl ciBidWZmZXIsCiAKIAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChwYWdlLCB0b2ZmKTsKIAor CQkvKiBBIHJlY2xhaW1hYmxlIGl0ZW0gaXMgYSBjbGFzc2ljIExQX0RFQUQgbGluZSBwb2lu dGVyLiAqLwogCQlBc3NlcnQoSXRlbUlkSXNEZWFkKGl0ZW1pZCkgJiYgIUl0ZW1JZEhhc1N0 b3JhZ2UoaXRlbWlkKSk7CiAJCUl0ZW1JZFNldFVudXNlZChpdGVtaWQpOwogCQl1bnVzZWRb bnVudXNlZCsrXSA9IHRvZmY7CiAJfQogCi0JQXNzZXJ0KG51bnVzZWQgPiAwKTsKLQogCS8q IEF0dGVtcHQgdG8gdHJ1bmNhdGUgbGluZSBwb2ludGVyIGFycmF5IG5vdyAqLwogCVBhZ2VU cnVuY2F0ZUxpbmVQb2ludGVyQXJyYXkocGFnZSk7CiAKQEAgLTI4NTEsMTIgKzI4NjgsMTMg QEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1i ZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCSAgdm1mbGFncyAhPSAwID8gdm1i dWZmZXIgOiBJbnZhbGlkQnVmZmVyLAogCQkJCQkJCQkgIHZtZmxhZ3MsCiAJCQkJCQkJCSAg Y29uZmxpY3RfeGlkLAotCQkJCQkJCQkgIGZhbHNlLAkvKiBubyBjbGVhbnVwIGxvY2sgcmVx dWlyZWQgKi8KKwkJCQkJCQkJICBnb3RfY2xlYW51cF9sb2NrLAogCQkJCQkJCQkgIFBSVU5F X1ZBQ1VVTV9DTEVBTlVQLAogCQkJCQkJCQkgIE5VTEwsIDAsCS8qIGZyb3plbiAqLwogCQkJ CQkJCQkgIE5VTEwsIDAsCS8qIHJlZGlyZWN0ZWQgKi8KIAkJCQkJCQkJICBOVUxMLCAwLAkv KiBkZWFkICovCi0JCQkJCQkJCSAgdW51c2VkLCBudW51c2VkKTsKKwkJCQkJCQkJICB1bnVz ZWQsIG51bnVzZWQsCisJCQkJCQkJCSAgTlVMTCwgMCk7IC8qIHN0dWJzICovCiAJfQogCiAJ RU5EX0NSSVRfU0VDVElPTigpOwpAQCAtMzY0NywxMCArMzY2NSw0NCBAQCBoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkqbG9n Z2luZ19vZmZudW0gPSBvZmZudW07CiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwg b2ZmbnVtKTsKIAotCQkvKiBVbnVzZWQgb3IgcmVkaXJlY3QgbGluZSBwb2ludGVycyBhcmUg b2Ygbm8gaW50ZXJlc3QgKi8KLQkJaWYgKCFJdGVtSWRJc1VzZWQoaXRlbWlkKSB8fCBJdGVt SWRJc1JlZGlyZWN0ZWQoaXRlbWlkKSkKKwkJLyogVW51c2VkIGxpbmUgcG9pbnRlcnMgYXJl IG9mIG5vIGludGVyZXN0LiAqLworCQlpZiAoIUl0ZW1JZElzVXNlZChpdGVtaWQpKQogCQkJ Y29udGludWU7CiAKKwkJLyoKKwkJICogUGxhaW4gcmVkaXJlY3RzIGFyZSBvZiBubyBpbnRl cmVzdCAodGhlIGNoYWluIG1lbWJlciB0aGV5IHBvaW50IGF0CisJCSAqIGlzIGluc3BlY3Rl ZCBzZXBhcmF0ZWx5KSAtLSBleGNlcHQgYSByZWRpcmVjdCB0aGF0IGZvcndhcmRzIHRvIGEK KwkJICogSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgbGl2ZSB0dXBsZS4gIFN1Y2ggYSByZWRp cmVjdCBtYXkgc3RpbGwgYmUKKwkJICogcmVhY2hlZCBieSBhIHN0YWxlIGluZGV4IGVudHJ5 IHdob3NlIGtleSB0aGUgbGl2ZSB0dXBsZSBubyBsb25nZXIKKwkJICogaG9sZHM7IGlmIHRo ZSBwYWdlIHdlcmUgbWFya2VkIGFsbC12aXNpYmxlIGFuIGluZGV4LW9ubHkgc2NhbiB3b3Vs ZAorCQkgKiB0cnVzdCB0aGUgVk0sIHNraXAgdGhlIGhlYXAgZmV0Y2gsIGFuZCBzdXJmYWNl IHRoYXQgc3RhbGUga2V5LgorCQkgKiBLZWVwIHRoZSBwYWdlIG5vdC1hbGwtdmlzaWJsZSB1 bnRpbCB0aGUgc3RhbGUgbGVhdmVzIGFyZSBzd2VwdCBhbmQKKwkJICogdGhlIHJlZGlyZWN0 IHJlY2xhaW1lZC4gIFRoaXMgbWlycm9ycyB0aGUgZ3VhcmQgaW4KKwkJICogaGVhcF9wcnVu ZV9yZWNvcmRfcmVkaXJlY3QsIGFwcGxpZWQgaGVyZSBiZWNhdXNlIFZBQ1VVTSdzIHNlY29u ZAorCQkgKiBwYXNzIGNhbiBzZXQgYWxsLXZpc2libGUgYWZ0ZXIgcmVjbGFpbWluZyBvdGhl ciBpdGVtcyBvbiB0aGUgcGFnZS4KKwkJICovCisJCWlmIChJdGVtSWRJc1JlZGlyZWN0ZWQo aXRlbWlkKSkKKwkJeworCQkJT2Zmc2V0TnVtYmVyIHJkb2ZmID0gSXRlbUlkR2V0UmVkaXJl Y3QoaXRlbWlkKTsKKworCQkJaWYgKHJkb2ZmID49IEZpcnN0T2Zmc2V0TnVtYmVyICYmIHJk b2ZmIDw9IG1heG9mZikKKwkJCXsKKwkJCQlJdGVtSWQJCXRscCA9IFBhZ2VHZXRJdGVtSWQo cGFnZSwgcmRvZmYpOworCisJCQkJaWYgKEl0ZW1JZElzTm9ybWFsKHRscCkpCisJCQkJewor CQkJCQlIZWFwVHVwbGVIZWFkZXIgdGh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0 SXRlbShwYWdlLCB0bHApOworCisJCQkJCWlmICgodGh0dXAtPnRfaW5mb21hc2syICYgSEVB UF9JTkRFWEVEX1VQREFURUQpICE9IDApCisJCQkJCXsKKwkJCQkJCSphbGxfZnJvemVuID0g YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJ fQorCQkJY29udGludWU7CisJCX0KKwogCQlJdGVtUG9pbnRlclNldCgmKHR1cGxlLnRfc2Vs ZiksIGJsb2Nrbm8sIG9mZm51bSk7CiAKIAkJLyoKQEAgLTM2NzYsNiArMzcyOCwyNCBAQCBo ZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVm LAogCQl0dXBsZS50X2xlbiA9IEl0ZW1JZEdldExlbmd0aChpdGVtaWQpOwogCQl0dXBsZS50 X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOwogCisJCS8qCisJCSAqIEEgSE9U LWluZGV4ZWQgY29sbGFwc2Utc3Vydml2b3Igc3R1YiBpcyBhbiBMUF9OT1JNQUwgaXRlbSB0 aGF0IGlzCisJCSAqIG5vdCBhIHJlYWwgdHVwbGU6IGl0IGZvcndhcmRzIHRocm91Z2ggdGhl IGNoYWluIGFuZCBjYXJyaWVzIGEKKwkJICogcHJlc2VydmVkIG1vZGlmaWVkLWF0dHJzIGJp dG1hcCB0aGF0IGEgcmVhZGVyIGFycml2aW5nIHZpYSBhIHN0YWxlCisJCSAqIGxlYWYgbXVz dCBzdGlsbCBjcm9zcy4gIEEgcGFnZSBob2xkaW5nIG9uZSBtdXN0IHN0YXkgbm90LWFsbC12 aXNpYmxlCisJCSAqIHNvIGluZGV4LW9ubHkgc2NhbnMgaGVhcC1mZXRjaCB0aHJvdWdoIHRo ZSBjaGFpbiwgZXhhY3RseSBsaWtlIHRoZQorCQkgKiByZWRpcmVjdC10by1TSVUgY2FzZSBh Ym92ZS4gIEEgc3R1YidzIGhlYWRlciBpcyBmcm96ZW4taW52YWxpZAorCQkgKiAoSEVBUF9Y TUlOX0lOVkFMSUQpLCBzbyB0aGUgdmlzaWJpbGl0eSBjaGVjayBiZWxvdyB3b3VsZCBhbHNv IGNsYXNzCisJCSAqIGl0IG5vdC1hbGwtdmlzaWJsZSAtLSBidXQgcmVjb2duaXplIGl0IGV4 cGxpY2l0bHkgaGVyZSByYXRoZXIgdGhhbgorCQkgKiByZWx5aW5nIG9uIHRoYXQgc2lkZSBl ZmZlY3QsIHNvIHRoZSBndWFyZCBjYW5ub3Qgc2lsZW50bHkgbGFwc2UgaWYKKwkJICogdGhl IHN0dWIgZW5jb2RpbmcgZXZlciBjaGFuZ2VzLgorCQkgKi8KKwkJaWYgKEhvdEluZGV4ZWRI ZWFkZXJJc1N0dWIodHVwbGUudF9kYXRhKSkKKwkJeworCQkJKmFsbF9mcm96ZW4gPSBhbGxf dmlzaWJsZSA9IGZhbHNlOworCQkJYnJlYWs7CisJCX0KKwogCQkvKiBWaXNpYmlsaXR5IGNo ZWNrcyBtYXkgZG8gSU8gb3IgYWxsb2NhdGUgbWVtb3J5ICovCiAJCUFzc2VydChDcml0U2Vj dGlvbkNvdW50ID09IDApOwogCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUhv cml6b24oJnR1cGxlLCBidWYsICZkZWFkX2FmdGVyKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Jt Z3JkZXNjL2hlYXBkZXNjLmMKaW5kZXggNzVhZTZmOWQzNzUuLjk3ZjkyNWRmMTYxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwpAQCAtMTA4LDcgKzEwOCw4 IEBAIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNv ciwgdWludDE2IGZsYWdzLAogCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICoqZnJ6X29mZnNl dHMsCiAJCQkJCQkJCQkgICBpbnQgKm5yZWRpcmVjdGVkLCBPZmZzZXROdW1iZXIgKipyZWRp cmVjdGVkLAogCQkJCQkJCQkJICAgaW50ICpuZGVhZCwgT2Zmc2V0TnVtYmVyICoqbm93ZGVh ZCwKLQkJCQkJCQkJCSAgIGludCAqbnVudXNlZCwgT2Zmc2V0TnVtYmVyICoqbm93dW51c2Vk KQorCQkJCQkJCQkJICAgaW50ICpudW51c2VkLCBPZmZzZXROdW1iZXIgKipub3d1bnVzZWQs CisJCQkJCQkJCQkgICBpbnQgKm5zdHVicywgT2Zmc2V0TnVtYmVyICoqc3R1YnMpCiB7CiAJ aWYgKGZsYWdzICYgWExIUF9IQVNfRlJFRVpFX1BMQU5TKQogCXsKQEAgLTE3OCw2ICsxNzks MjMgQEAgaGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vy c29yLCB1aW50MTYgZmxhZ3MsCiAJCSpub3d1bnVzZWQgPSBOVUxMOwogCX0KIAorCWlmIChm bGFncyAmIFhMSFBfSEFTX0hPVF9JTkRFWEVEX1NUVUJTKQorCXsKKwkJeGxocF9wcnVuZV9p dGVtcyAqc3VicmVjb3JkID0gKHhsaHBfcHJ1bmVfaXRlbXMgKikgY3Vyc29yOworCisJCSpu c3R1YnMgPSBzdWJyZWNvcmQtPm50YXJnZXRzOworCQlBc3NlcnQoKm5zdHVicyA+IDApOwor CQkqc3R1YnMgPSAmc3VicmVjb3JkLT5kYXRhWzBdOworCisJCWN1cnNvciArPSBvZmZzZXRv Zih4bGhwX3BydW5lX2l0ZW1zLCBkYXRhKTsKKwkJY3Vyc29yICs9IHNpemVvZihPZmZzZXRO dW1iZXJbMl0pICogKm5zdHViczsKKwl9CisJZWxzZQorCXsKKwkJKm5zdHVicyA9IDA7CisJ CSpzdHVicyA9IE5VTEw7CisJfQorCiAJKmZyel9vZmZzZXRzID0gKE9mZnNldE51bWJlciAq KSBjdXJzb3I7CiB9CiAKQEAgLTMwNSw2ICszMjMsOCBAQCBoZWFwMl9kZXNjKFN0cmluZ0lu Zm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJCWludAkJCW5yZWRpcmVjdGVk OwogCQkJaW50CQkJbnVudXNlZDsKIAkJCWludAkJCW5kZWFkOworCQkJaW50CQkJbnN0dWJz OworCQkJT2Zmc2V0TnVtYmVyICpzdHViczsKIAkJCWludAkJCW5wbGFuczsKIAkJCXhsaHBf ZnJlZXplX3BsYW4gKnBsYW5zOwogCQkJT2Zmc2V0TnVtYmVyICpmcnpfb2Zmc2V0czsKQEAg LTMxNSwxMCArMzM1LDExIEBAIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJCQkJICAgJm5wbGFucywgJnBsYW5zLCAmZnJ6 X29mZnNldHMsCiAJCQkJCQkJCQkJCQkgICAmbnJlZGlyZWN0ZWQsICZyZWRpcmVjdGVkLAog CQkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93ZGVhZCwKLQkJCQkJCQkJCQkJCSAgICZudW51 c2VkLCAmbm93dW51c2VkKTsKKwkJCQkJCQkJCQkJCSAgICZudW51c2VkLCAmbm93dW51c2Vk LAorCQkJCQkJCQkJCQkJICAgJm5zdHVicywgJnN0dWJzKTsKIAotCQkJYXBwZW5kU3RyaW5n SW5mbyhidWYsICIsIG5wbGFuczogJXUsIG5yZWRpcmVjdGVkOiAldSwgbmRlYWQ6ICV1LCBu dW51c2VkOiAldSIsCi0JCQkJCQkJIG5wbGFucywgbnJlZGlyZWN0ZWQsIG5kZWFkLCBudW51 c2VkKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCBucGxhbnM6ICV1LCBucmVkaXJl Y3RlZDogJXUsIG5kZWFkOiAldSwgbnVudXNlZDogJXUsIG5zdHViczogJXUiLAorCQkJCQkJ CSBucGxhbnMsIG5yZWRpcmVjdGVkLCBuZGVhZCwgbnVudXNlZCwgbnN0dWJzKTsKIAogCQkJ aWYgKG5wbGFucyA+IDApCiAJCQl7CkBAIC0zNDcsNiArMzY4LDEzIEBAIGhlYXAyX2Rlc2Mo U3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCWFycmF5X2Rl c2MoYnVmLCBub3d1bnVzZWQsIHNpemVvZihPZmZzZXROdW1iZXIpLCBudW51c2VkLAogCQkJ CQkJICAgJm9mZnNldF9lbGVtX2Rlc2MsIE5VTEwpOwogCQkJfQorCisJCQlpZiAobnN0dWJz ID4gMCkKKwkJCXsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgc3R1YnM6 Iik7CisJCQkJYXJyYXlfZGVzYyhidWYsIHN0dWJzLCBzaXplb2YoT2Zmc2V0TnVtYmVyKSAq IDIsCisJCQkJCQkgICBuc3R1YnMsICZyZWRpcmVjdF9lbGVtX2Rlc2MsIE5VTEwpOworCQkJ fQogCQl9CiAJfQogCWVsc2UgaWYgKGluZm8gPT0gWExPR19IRUFQMl9NVUxUSV9JTlNFUlQp CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMWNkZjg5MTA1NWMuLjcyYzllNDIwM2M1IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbS5oCkBAIC00ODgsNyArNDg4LDggQEAgZXh0ZXJuIHZvaWQgaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIGV4dGVy biB2b2lkIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1ZmZlciBidWZmZXIsIGJvb2wgbHBf dHJ1bmNhdGVfb25seSwKIAkJCQkJCQkJCU9mZnNldE51bWJlciAqcmVkaXJlY3RlZCwgaW50 IG5yZWRpcmVjdGVkLAogCQkJCQkJCQkJT2Zmc2V0TnVtYmVyICpub3dkZWFkLCBpbnQgbmRl YWQsCi0JCQkJCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNlZCwgaW50IG51bnVzZWQpOwor CQkJCQkJCQkJT2Zmc2V0TnVtYmVyICpub3d1bnVzZWQsIGludCBudW51c2VkLAorCQkJCQkJ CQkJT2Zmc2V0TnVtYmVyICpzdHVicywgaW50IG5zdHVicyk7CiBleHRlcm4gdm9pZCBoZWFw X2dldF9yb290X3R1cGxlcyhQYWdlIHBhZ2UsIE9mZnNldE51bWJlciAqcm9vdF9vZmZzZXRz KTsKIGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwgdWlu dDggdm1mbGFncywKQEAgLTQ5OCw3ICs0OTksOCBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJ CQkJCQkJICBIZWFwVHVwbGVGcmVlemUgKmZyb3plbiwgaW50IG5mcm96ZW4sCiAJCQkJCQkJ CQkgIE9mZnNldE51bWJlciAqcmVkaXJlY3RlZCwgaW50IG5yZWRpcmVjdGVkLAogCQkJCQkJ CQkJICBPZmZzZXROdW1iZXIgKmRlYWQsIGludCBuZGVhZCwKLQkJCQkJCQkJCSAgT2Zmc2V0 TnVtYmVyICp1bnVzZWQsIGludCBudW51c2VkKTsKKwkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVy ICp1bnVzZWQsIGludCBudW51c2VkLAorCQkJCQkJCQkJICBPZmZzZXROdW1iZXIgKnN0dWJz LCBpbnQgbnN0dWJzKTsKIAogLyogaW4gaGVhcC9oZWFwYW0uYyAqLwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW1feGxvZy5oCmluZGV4IGZkY2E3ZDgyMWM4Li44OTk3YTUwNTAwNiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTI3Myw2ICsyNzMsMTAgQEAgdHlwZWRlZiBz dHJ1Y3QgeGxfaGVhcF91cGRhdGUKICAqCQl1aW50MTYJCQkJbnVudXNlZAogICoJCU9mZnNl dE51bWJlcgkJbm93dW51c2VkW251bnVzZWRdCiAgKgorICoJeGxocF9wcnVuZV9pdGVtcwor ICoJCXVpbnQxNgkJCQluc3R1YnMKKyAqCQlPZmZzZXROdW1iZXIJCXN0dWJzWzIgKiBuc3R1 YnNdCisgKgogICoJT2Zmc2V0TnVtYmVyCQkJZnJ6X29mZnNldHNbc3VtKFtwbGFuLm50dXBs ZXMgZm9yIHBsYW4gaW4gcGxhbnNdKV0KICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAq CkBAIC0zNDEsNiArMzQ1LDE4IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfcHJ1bmUKICNk ZWZpbmUJCVhMSFBfVk1fQUxMX1ZJU0lCTEUJCQkoMSA8PCA4KQogI2RlZmluZQkJWExIUF9W TV9BTExfRlJPWkVOCQkJKDEgPDwgOSkKIAorLyoKKyAqIEluZGljYXRlcyB0aGF0IGFuIHhs aHBfcHJ1bmVfaXRlbXMgc3ViLXJlY29yZCB3aXRoIEhPVC1zZWxlY3RpdmVseS11cGRhdGVk CisgKiBjb2xsYXBzZS1zdXJ2aXZvciBzdHVicyBpcyBwcmVzZW50LiAgRWFjaCBwYWlyIChv ZmZzZXQsIGZvcndhcmQpIG5hbWVzIGEKKyAqIGxpbmUgcG9pbnRlciB0byBiZSByZXdyaXR0 ZW4gaW4gcGxhY2UgaW50byBhbiB4aWQtZnJlZSBmb3J3YXJkaW5nIHN0dWIKKyAqIChIRUFQ X1hNSU5fSU5WQUxJRHxIRUFQX1hNQVhfSU5WQUxJRCwgSEVBUF9PTkxZX1RVUExFfEhFQVBf SU5ERVhFRF9VUERBVEVELAorICogbmF0dHM9PTApIHdob3NlIHRfY3RpZC5vZmZudW0gaXMg c2V0IHRvIHRoZSBmb3J3YXJkIG9mZnNldC4gIFRoZSBzdHViJ3MKKyAqIG1vZGlmaWVkLWF0 dHJzIGJpdG1hcCBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGl0ZW0gb24gdGhlIHBhZ2Ug KGl0IGlzIHRoZQorICogcHJlLXBydW5lIHR1cGxlJ3MgaW5saW5lIGJpdG1hcCwgbGVmdCB1 bmRpc3R1cmJlZCksIHNvIGl0IGlzIG5vdCBjYXJyaWVkIGluCisgKiB0aGUgV0FMLgorICov CisjZGVmaW5lCQlYTEhQX0hBU19IT1RfSU5ERVhFRF9TVFVCUwkoMSA8PCAxMCkKKwogLyoK ICAqIHhsaHBfZnJlZXplX3BsYW4gZGVzY3JpYmVzIGhvdyB0byBmcmVlemUgYSBncm91cCBv ZiBvbmUgb3IgbW9yZSBoZWFwIHR1cGxlcwogICogKGFwcGVhcnMgaW4geGxfaGVhcF9wcnVu ZSdzIHhsaHBfZnJlZXplX3BsYW5zIHN1Yi1yZWNvcmQpCkBAIC00OTQsNiArNTEwLDcgQEAg ZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hh ciAqY3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAJCQkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIg Kipmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJCSAgIGludCAqbnJlZGlyZWN0ZWQsIE9mZnNl dE51bWJlciAqKnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkJCQkgICBpbnQgKm5kZWFkLCBPZmZz ZXROdW1iZXIgKipub3dkZWFkLAotCQkJCQkJCQkJCQkJICAgaW50ICpudW51c2VkLCBPZmZz ZXROdW1iZXIgKipub3d1bnVzZWQpOworCQkJCQkJCQkJCQkJICAgaW50ICpudW51c2VkLCBP ZmZzZXROdW1iZXIgKipub3d1bnVzZWQsCisJCQkJCQkJCQkJCQkgICBpbnQgKm5zdHVicywg T2Zmc2V0TnVtYmVyICoqc3R1YnMpOwogCiAjZW5kaWYJCQkJCQkJLyogSEVBUEFNX1hMT0df SCAqLwotLSAKMi41MC4xCgo= --98b017876237f005fe98a17b40ccb28dde987108 Content-Disposition: attachment; filename*0="v48-0006-Teach-amcheck-to-recognize-HOT-indexed-chains-an.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v48-0006-Teach-amcheck-to-recognize-HOT-indexed-chains-an.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBhMTgzZTQ2MTc0YmEwODkzZGYzZTA4MzQ3OTExZjBmNTkxMDhlNDQ2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTozMToxMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ4IDYv OV0gVGVhY2ggYW1jaGVjayB0byByZWNvZ25pemUgSE9ULWluZGV4ZWQgY2hhaW5zIGFuZAog Y29sbGFwc2Ugc3R1YnMKCnZlcmlmeV9oZWFwYW0gbXVzdCBub3QgZmxhZyB0aGUgSE9ULWlu ZGV4ZWQgYXJ0aWZhY3RzIGFzIGNvcnJ1cHRpb246IGEgbGl2ZQpIRUFQX0lOREVYRURfVVBE QVRFRCBoZWFwLW9ubHkgdHVwbGUgd2hvc2UgbWlkLWNoYWluIGxpbmUgcG9pbnRlciBpcyBw cmVzZXJ2ZWQKYmVjYXVzZSBhbiBpbmRleCBlbnRyeSBzdGlsbCBwb2ludHMgYXQgaXQsIGFu IHhpZC1mcmVlIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIsCmFuZCBtb3JlIHRoYW4gb25lIExQ X1JFRElSRUNUIGZvcndhcmRpbmcgdG8gdGhlIHNhbWUgbGl2ZSB0dXBsZSBhcmUgYWxsCmxl Z2l0aW1hdGUuICBSZWNvZ25pemUgdGhlbSBhbmQgY29udGludWUgY2hlY2tpbmcgdGhlIHJl c3Qgb2YgdGhlIGNoYWluLgoKQ292ZXIgdGhpcyB3aXRoIGFuIGFtY2hlY2sgcmVncmVzc2lv biB0ZXN0LCBhbmQgYWRkIGEgcGdfdXBncmFkZSB0ZXN0IHRoYXQKY2FycmllcyBhIHJlbGF0 aW9uIHdpdGggSE9ULWluZGV4ZWQgY2hhaW5zLCBhbiBBQkEtY3ljbGVkIGluZGV4ZWQgY29s dW1uLCBhbgpvdXQtb2YtbGluZSBpbmRleGVkIGNvbHVtbiwgYW5kIFZBQ1VVTS1jb2xsYXBz ZWQgc3R1YnMgYWNyb3NzIGFuIHVwZ3JhZGUsCnZlcmlmeWluZyB0aGUgZGF0YSwgdmVyaWZ5 X2hlYXBhbSwgYnRfaW5kZXhfY2hlY2ssIGFuZCB0aGUgY2hhaW4gc2NhbnMgb24gdGhlCm5l dyBjbHVzdGVyLgoKQXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgotLS0K IGNvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19oZWFwLm91dCAgICB8ICA0MCArKysr KysrCiBjb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2hlYXAuc3FsICAgICAgICAgfCAgMzcg KysrKysrKwogY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9oZWFwYW0uYyAgICAgICAgICAgIHwg IDgxICsrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9U LUlOREVYRUQgfCAgMTAgKysKIHNyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZCAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4ZWQu cGwgICAgfCAxMTggKysrKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDI3 NyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvYmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4ZWQucGwKCmRpZmYgLS1naXQgYS9j b250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQgYi9jb250cmliL2FtY2hl Y2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQKaW5kZXggOTc5ZTVlODRlNzIuLmI4ZGVlMmJi NzFiIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5v dXQKKysrIGIvY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2hlYXAub3V0CkBAIC0y MzEsNiArMjMxLDQ2IEBAIFNFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgndGVzdF9mb3Jl aWduX3RhYmxlJywKIAkJCQkJCQllbmRibG9jayA6PSBOVUxMKTsKIEVSUk9SOiAgY2Fubm90 IGNoZWNrIHJlbGF0aW9uICJ0ZXN0X2ZvcmVpZ25fdGFibGUiCiBERVRBSUw6ICBUaGlzIG9w ZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBmb3JlaWduIHRhYmxlcy4KKy0tIEhPVC1p bmRleGVkIChIT1QvU0lVKSBvbi1wYWdlIGFydGlmYWN0czoKKy0tCistLSBBIEhPVC1pbmRl eGVkIFVQREFURSBrZWVwcyB0aGUgbmV3IHR1cGxlIG9uIHRoZSBzYW1lIHBhZ2UgYXMgYSBo ZWFwLW9ubHkKKy0tIHR1cGxlIG1hcmtlZCBIRUFQX0lOREVYRURfVVBEQVRFRCBhbmQgcGxh bnRzIGluZGV4IGVudHJpZXMgcG9pbnRpbmcgYXQgaXRzCistLSBvd24gVElELiAgUHJ1bmlu ZyBhIGNoYWluIG9mIHN1Y2ggdXBkYXRlcyBjb2xsYXBzZXMgZGVhZCBtZW1iZXJzIHRvCist LSBMUF9SRURJUkVDVCBmb3J3YXJkZXJzIGFuZCBwcmVzZXJ2ZXMgdGhlIExQIG9mIGEgbGl2 ZSBIT1QtaW5kZXhlZCBtZW1iZXIKKy0tIHdob3NlIGluZGV4IGVudHJpZXMgbWF5IG5vdCB5 ZXQgYmUgc3dlcHQuICB2ZXJpZnlfaGVhcGFtIG11c3QgdHJlYXQgYWxsIG9mCistLSB0aGVz ZSBhcyBsZWdpdGltYXRlLiAgVGhpcyBzY2VuYXJpbyBleGVyY2lzZXMgdGhlbSBhbmQgYXNz ZXJ0cyB0aGF0CistLSB2ZXJpZnlfaGVhcGFtIHJlcG9ydHMgemVybyBjb3JydXB0aW9uIGFn YWluc3QgbGVnaXRpbWF0ZSBIT1QtaW5kZXhlZAorLS0gYWN0aXZpdHkuCitDUkVBVEUgVEFC TEUgaG90X2luZGV4ZWRfY2hlY2sgKGlkIGludCBQUklNQVJZIEtFWSwgYzEgaW50LCBjMiBp bnQsIGMzIGludCkKKwlXSVRIIChmaWxsZmFjdG9yID0gNzApOworQ1JFQVRFIElOREVYIGhv dF9pbmRleGVkX2NoZWNrX2MxIE9OIGhvdF9pbmRleGVkX2NoZWNrIChjMSk7CitDUkVBVEUg SU5ERVggaG90X2luZGV4ZWRfY2hlY2tfYzIgT04gaG90X2luZGV4ZWRfY2hlY2sgKGMyKTsK K0lOU0VSVCBJTlRPIGhvdF9pbmRleGVkX2NoZWNrCisJU0VMRUNUIGcsIGcsIGcsIGcgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnOworLS0gU2luZ2xlLXN0ZXAgVVBEQVRFczog ZWFjaCByb3cgZ2V0cyBvbmUgSE9ULWluZGV4ZWQgdXBkYXRlLiAgRWFjaAorLS0gc3VjY2Vz c2Z1bCBIT1QtaW5kZXhlZCB1cGRhdGUga2VlcHMgaXRzIG5ldyB0dXBsZSBvbi1wYWdlIGFu ZCBpbnNlcnRzIGFuCistLSBlbnRyeSBvbmx5IGludG8gdGhlIGluZGV4IHdob3NlIGF0dHJp YnV0ZSBjaGFuZ2VkLgorVVBEQVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMSA9IGMxICsg MTAwMDsKKy0tIE11bHRpLXN0ZXAgVVBEQVRFczogZHJpdmUgc2V2ZXJhbCBzdWNjZXNzaXZl IEhPVC1pbmRleGVkIHVwZGF0ZXMgYWdhaW5zdAorLS0gdGhlIHNhbWUgcm93cyBzbyBwcnVu ZSBzZWVzIGEgY2hhaW4gb2YgZGVhZCBpbnRlcm1lZGlhdGVzIGFuZCBjb2xsYXBzZXMKKy0t IHRoZW0gdG8gTFBfUkVESVJFQ1QgZm9yd2FyZGVycy4gIEFuIGV4cGxpY2l0IFZBQ1VVTSBy dW5zIHRoZSBwcnVuZSBwYXRoCistLSBhbmQgZXhlcmNpc2VzIGNoYWluIGNvbGxhcHNlLgor VVBEQVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMiA9IGMyICsgMSBXSEVSRSBpZCA8PSA1 MDsKK1VQREFURSBob3RfaW5kZXhlZF9jaGVjayBTRVQgYzIgPSBjMiArIDEgV0hFUkUgaWQg PD0gNTA7CitVUERBVEUgaG90X2luZGV4ZWRfY2hlY2sgU0VUIGMyID0gYzIgKyAxIFdIRVJF IGlkIDw9IDUwOworVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaG90X2luZGV4ZWRfY2hl Y2s7CistLSB2ZXJpZnlfaGVhcGFtIG11c3Qgbm90IHJlcG9ydCBhbnkgY29ycnVwdGlvbiBh Z2FpbnN0IGxlZ2l0aW1hdGUgSE9ULQorLS0gaW5kZXhlZCBhcnRpZmFjdHMuICBTZWxlY3Rp bmcgdGhlIGNvcnJ1cHRpbmcgbWVzc2FnZSBtYWtlcyBhbnkKKy0tIHJlZ3Jlc3Npb24gdW5t aXN0YWthYmxlIGluIHRoZSByZWdyZXNzIGRpZmYuCitTRUxFQ1QgYmxrbm8sIG9mZm51bSwg YXR0bnVtLCBtc2cKKwlGUk9NIHZlcmlmeV9oZWFwYW0oJ2hvdF9pbmRleGVkX2NoZWNrJywK KwkJCQkJICAgc3RhcnRibG9jayA6PSBOVUxMLAorCQkJCQkgICBlbmRibG9jayA6PSBOVUxM KTsKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK0RST1AgVEFCTEUgaG90X2luZGV4ZWRfY2hl Y2s7CiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGhlYXB0ZXN0OwogRFJPUCBUQUJMRVNQQUNF IHJlZ3Jlc3NfdGVzdF9zdGF0c190YmxzcGM7CmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hl Y2svc3FsL2NoZWNrX2hlYXAuc3FsIGIvY29udHJpYi9hbWNoZWNrL3NxbC9jaGVja19oZWFw LnNxbAppbmRleCAxNzQ1YmFlNjM0ZS4uYzBiYTI2MzUxODAgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvYW1jaGVjay9zcWwvY2hlY2tfaGVhcC5zcWwKKysrIGIvY29udHJpYi9hbWNoZWNrL3Nx bC9jaGVja19oZWFwLnNxbApAQCAtMTM4LDYgKzEzOCw0MyBAQCBTRUxFQ1QgKiBGUk9NIHZl cmlmeV9oZWFwYW0oJ3Rlc3RfZm9yZWlnbl90YWJsZScsCiAJCQkJCQkJc3RhcnRibG9jayA6 PSBOVUxMLAogCQkJCQkJCWVuZGJsb2NrIDo9IE5VTEwpOwogCistLSBIT1QtaW5kZXhlZCAo SE9UL1NJVSkgb24tcGFnZSBhcnRpZmFjdHM6CistLQorLS0gQSBIT1QtaW5kZXhlZCBVUERB VEUga2VlcHMgdGhlIG5ldyB0dXBsZSBvbiB0aGUgc2FtZSBwYWdlIGFzIGEgaGVhcC1vbmx5 CistLSB0dXBsZSBtYXJrZWQgSEVBUF9JTkRFWEVEX1VQREFURUQgYW5kIHBsYW50cyBpbmRl eCBlbnRyaWVzIHBvaW50aW5nIGF0IGl0cworLS0gb3duIFRJRC4gIFBydW5pbmcgYSBjaGFp biBvZiBzdWNoIHVwZGF0ZXMgY29sbGFwc2VzIGRlYWQgbWVtYmVycyB0bworLS0gTFBfUkVE SVJFQ1QgZm9yd2FyZGVycyBhbmQgcHJlc2VydmVzIHRoZSBMUCBvZiBhIGxpdmUgSE9ULWlu ZGV4ZWQgbWVtYmVyCistLSB3aG9zZSBpbmRleCBlbnRyaWVzIG1heSBub3QgeWV0IGJlIHN3 ZXB0LiAgdmVyaWZ5X2hlYXBhbSBtdXN0IHRyZWF0IGFsbCBvZgorLS0gdGhlc2UgYXMgbGVn aXRpbWF0ZS4gIFRoaXMgc2NlbmFyaW8gZXhlcmNpc2VzIHRoZW0gYW5kIGFzc2VydHMgdGhh dAorLS0gdmVyaWZ5X2hlYXBhbSByZXBvcnRzIHplcm8gY29ycnVwdGlvbiBhZ2FpbnN0IGxl Z2l0aW1hdGUgSE9ULWluZGV4ZWQKKy0tIGFjdGl2aXR5LgorQ1JFQVRFIFRBQkxFIGhvdF9p bmRleGVkX2NoZWNrIChpZCBpbnQgUFJJTUFSWSBLRVksIGMxIGludCwgYzIgaW50LCBjMyBp bnQpCisJV0lUSCAoZmlsbGZhY3RvciA9IDcwKTsKK0NSRUFURSBJTkRFWCBob3RfaW5kZXhl ZF9jaGVja19jMSBPTiBob3RfaW5kZXhlZF9jaGVjayAoYzEpOworQ1JFQVRFIElOREVYIGhv dF9pbmRleGVkX2NoZWNrX2MyIE9OIGhvdF9pbmRleGVkX2NoZWNrIChjMik7CitJTlNFUlQg SU5UTyBob3RfaW5kZXhlZF9jaGVjaworCVNFTEVDVCBnLCBnLCBnLCBnIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDIwMCkgZzsKKy0tIFNpbmdsZS1zdGVwIFVQREFURXM6IGVhY2ggcm93 IGdldHMgb25lIEhPVC1pbmRleGVkIHVwZGF0ZS4gIEVhY2gKKy0tIHN1Y2Nlc3NmdWwgSE9U LWluZGV4ZWQgdXBkYXRlIGtlZXBzIGl0cyBuZXcgdHVwbGUgb24tcGFnZSBhbmQgaW5zZXJ0 cyBhbgorLS0gZW50cnkgb25seSBpbnRvIHRoZSBpbmRleCB3aG9zZSBhdHRyaWJ1dGUgY2hh bmdlZC4KK1VQREFURSBob3RfaW5kZXhlZF9jaGVjayBTRVQgYzEgPSBjMSArIDEwMDA7Cist LSBNdWx0aS1zdGVwIFVQREFURXM6IGRyaXZlIHNldmVyYWwgc3VjY2Vzc2l2ZSBIT1QtaW5k ZXhlZCB1cGRhdGVzIGFnYWluc3QKKy0tIHRoZSBzYW1lIHJvd3Mgc28gcHJ1bmUgc2VlcyBh IGNoYWluIG9mIGRlYWQgaW50ZXJtZWRpYXRlcyBhbmQgY29sbGFwc2VzCistLSB0aGVtIHRv IExQX1JFRElSRUNUIGZvcndhcmRlcnMuICBBbiBleHBsaWNpdCBWQUNVVU0gcnVucyB0aGUg cHJ1bmUgcGF0aAorLS0gYW5kIGV4ZXJjaXNlcyBjaGFpbiBjb2xsYXBzZS4KK1VQREFURSBo b3RfaW5kZXhlZF9jaGVjayBTRVQgYzIgPSBjMiArIDEgV0hFUkUgaWQgPD0gNTA7CitVUERB VEUgaG90X2luZGV4ZWRfY2hlY2sgU0VUIGMyID0gYzIgKyAxIFdIRVJFIGlkIDw9IDUwOwor VVBEQVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMiA9IGMyICsgMSBXSEVSRSBpZCA8PSA1 MDsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhvdF9pbmRleGVkX2NoZWNrOworLS0g dmVyaWZ5X2hlYXBhbSBtdXN0IG5vdCByZXBvcnQgYW55IGNvcnJ1cHRpb24gYWdhaW5zdCBs ZWdpdGltYXRlIEhPVC0KKy0tIGluZGV4ZWQgYXJ0aWZhY3RzLiAgU2VsZWN0aW5nIHRoZSBj b3JydXB0aW5nIG1lc3NhZ2UgbWFrZXMgYW55CistLSByZWdyZXNzaW9uIHVubWlzdGFrYWJs ZSBpbiB0aGUgcmVncmVzcyBkaWZmLgorU0VMRUNUIGJsa25vLCBvZmZudW0sIGF0dG51bSwg bXNnCisJRlJPTSB2ZXJpZnlfaGVhcGFtKCdob3RfaW5kZXhlZF9jaGVjaycsCisJCQkJCSAg IHN0YXJ0YmxvY2sgOj0gTlVMTCwKKwkJCQkJICAgZW5kYmxvY2sgOj0gTlVMTCk7CitEUk9Q IFRBQkxFIGhvdF9pbmRleGVkX2NoZWNrOworCiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGhl YXB0ZXN0OwogRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGVzdF9zdGF0c190YmxzcGM7CmRp ZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X2hlYXBhbS5jIGIvY29udHJpYi9h bWNoZWNrL3ZlcmlmeV9oZWFwYW0uYwppbmRleCAyMGZmNThhYTc4Mi4uNzNiMjA2MjMzODEg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfaGVhcGFtLmMKKysrIGIvY29u dHJpYi9hbWNoZWNrL3ZlcmlmeV9oZWFwYW0uYwpAQCAtMTMsOCArMTMsMTAgQEAKICNpbmNs dWRlICJhY2Nlc3MvZGV0b2FzdC5oIgogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgogI2lu Y2x1ZGUgImFjY2Vzcy9oZWFwdG9hc3QuaCIKKyNpbmNsdWRlICJhY2Nlc3MvaG90X2luZGV4 ZWQuaCIKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNz L3JlbGF0aW9uLmgiCisKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJh Y2Nlc3MvdG9hc3RfaW50ZXJuYWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHlt YXAuaCIKQEAgLTUyMiw5ICs1MjQsMTIgQEAgdmVyaWZ5X2hlYXBhbShQR19GVU5DVElPTl9B UkdTKQogCQkJICovCiAJCQlpZiAoSXRlbUlkSXNSZWRpcmVjdGVkKGN0eC5pdGVtaWQpKQog CQkJewotCQkJCU9mZnNldE51bWJlciByZG9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGN0 eC5pdGVtaWQpOworCQkJCU9mZnNldE51bWJlciByZG9mZm51bTsKIAkJCQlJdGVtSWQJCXJk aXRlbTsKIAorCQkJCS8qIFJlc29sdmUgdGhlIHJlZGlyZWN0J3MgdGFyZ2V0IG9mZnNldC4g Ki8KKwkJCQlyZG9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGN0eC5pdGVtaWQpOworCiAJ CQkJaWYgKHJkb2ZmbnVtIDwgRmlyc3RPZmZzZXROdW1iZXIpCiAJCQkJewogCQkJCQlyZXBv cnRfY29ycnVwdGlvbigmY3R4LApAQCAtNjE1LDE4ICs2MjAsMzggQEAgdmVyaWZ5X2hlYXBh bShQR19GVU5DVElPTl9BUkdTKQogCQkJY3R4LnR1cGhkciA9IChIZWFwVHVwbGVIZWFkZXIp IFBhZ2VHZXRJdGVtKGN0eC5wYWdlLCBjdHguaXRlbWlkKTsKIAkJCWN0eC5uYXR0cyA9IEhl YXBUdXBsZUhlYWRlckdldE5hdHRzKGN0eC50dXBoZHIpOwogCi0JCQkvKiBPaywgcmVhZHkg dG8gY2hlY2sgdGhpcyBuZXh0IHR1cGxlICovCi0JCQljaGVja190dXBsZSgmY3R4LAotCQkJ CQkJJnhtaW5fY29tbWl0X3N0YXR1c19va1tjdHgub2ZmbnVtXSwKLQkJCQkJCSZ4bWluX2Nv bW1pdF9zdGF0dXNbY3R4Lm9mZm51bV0pOworCQkJLyoKKwkJCSAqIEEgSE9ULXNlbGVjdGl2 ZWx5LXVwZGF0ZWQgY29sbGFwc2Utc3Vydml2b3Igc3R1YiBpcyBhbgorCQkJICogTFBfTk9S TUFMIGl0ZW0gdGhhdCBpcyBub3QgYSByZWFsIHR1cGxlOiBIRUFQX0lOREVYRURfVVBEQVRF RAorCQkJICogd2l0aCBuYXR0cyA9PSAwLCBwZXJtYW5lbnRseSBpbnZpc2libGUgKEhFQVBf WE1JTl9JTlZBTElEKSwKKwkJCSAqIGNhcnJ5aW5nIGEgZm9yd2FyZCBsaW5rIGFuZCBhIG1v ZGlmaWVkLWF0dHJzIGJpdG1hcC4gIFRoZQorCQkJICogcGVyLXR1cGxlIGNoZWNrcyBhc3N1 bWUgYSByZWFsIHR1cGxlIGFuZCB3b3VsZCBtaXNyZXBvcnQgaXQsIHNvCisJCQkgKiBza2lw IHRoZW07IHRoZSB1cGRhdGUtY2hhaW4gcGFzcyBiZWxvdyBzdGlsbCByZWNvcmRzIGl0cwor CQkJICogZm9yd2FyZCBlZGdlIGFuZCB0cmVhdHMgaXQgbGlrZSBhIHJlZGlyZWN0IChhIGZv cndhcmRpbmcgbm9kZSkuCisJCQkgKi8KKwkJCWlmICghSG90SW5kZXhlZEhlYWRlcklzU3R1 YihjdHgudHVwaGRyKSkKKwkJCQljaGVja190dXBsZSgmY3R4LAorCQkJCQkJCSZ4bWluX2Nv bW1pdF9zdGF0dXNfb2tbY3R4Lm9mZm51bV0sCisJCQkJCQkJJnhtaW5fY29tbWl0X3N0YXR1 c1tjdHgub2ZmbnVtXSk7CiAKIAkJCS8qCiAJCQkgKiBJZiB0aGUgQ1RJRCBmaWVsZCBvZiB0 aGlzIHR1cGxlIHNlZW1zIHRvIHBvaW50IHRvIGFub3RoZXIgdHVwbGUKIAkJCSAqIG9uIHRo ZSBzYW1lIHBhZ2UsIHJlY29yZCB0aGF0IHR1cGxlIGFzIHRoZSBzdWNjZXNzb3Igb2YgdGhp cwotCQkJICogb25lLgorCQkJICogb25lLiAgQSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIHN0 b3JlcyBpdHMgZm9yd2FyZCBsaW5rIGluIHRoZQorCQkJICogdF9jdGlkIG9mZnNldCBvbmx5 ICh0aGUgYmxvY2sgaGFsZiBpcyByZXB1cnBvc2VkIHRvIGhvbGQgdGhlCisJCQkgKiBzdHVi J3Mgd3JpdGUtdGltZSBuYXR0cyksIHNvIHJlc29sdmUgaXRzIHN1Y2Nlc3NvciB2aWEgdGhl IHN0dWIKKwkJCSAqIGFjY2Vzc29yOyB0aGUgZm9yd2FyZCB0YXJnZXQgaXMgYWx3YXlzIG9u IHRoZSBzYW1lIHBhZ2UuCiAJCQkgKi8KLQkJCW5leHRibGtubyA9IEl0ZW1Qb2ludGVyR2V0 QmxvY2tOdW1iZXIoJihjdHgudHVwaGRyKS0+dF9jdGlkKTsKLQkJCW5leHRvZmZudW0gPSBJ dGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmKGN0eC50dXBoZHIpLT50X2N0aWQpOworCQkJ aWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIoY3R4LnR1cGhkcikpCisJCQl7CisJCQkJbmV4 dGJsa25vID0gY3R4LmJsa25vOworCQkJCW5leHRvZmZudW0gPSBIb3RJbmRleGVkU3R1Ykdl dEZvcndhcmQoY3R4LnR1cGhkcik7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJbmV4dGJs a25vID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmKGN0eC50dXBoZHIpLT50X2N0aWQp OworCQkJCW5leHRvZmZudW0gPSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmKGN0eC50 dXBoZHIpLT50X2N0aWQpOworCQkJfQogCQkJaWYgKG5leHRibGtubyA9PSBjdHguYmxrbm8g JiYgbmV4dG9mZm51bSAhPSBjdHgub2ZmbnVtICYmCiAJCQkJbmV4dG9mZm51bSA+PSBGaXJz dE9mZnNldE51bWJlciAmJiBuZXh0b2ZmbnVtIDw9IG1heG9mZikKIAkJCQlzdWNjZXNzb3Jb Y3R4Lm9mZm51bV0gPSBuZXh0b2ZmbnVtOwpAQCAtNjc1LDcgKzcwMCw3IEBAIHZlcmlmeV9o ZWFwYW0oUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkgKi8KIAkJCQlBc3NlcnQoSXRlbUlkSXNO b3JtYWwobmV4dF9scCkpOwogCi0JCQkJLyogQ2FuIG9ubHkgcmVkaXJlY3QgdG8gYSBIT1Qg dHVwbGUuICovCisJCQkJLyogQSByZWRpcmVjdCB0YXJnZXRzIHRoZSBmaXJzdCBzdXJ2aXZp bmcgY2hhaW4gbWVtYmVyLiAqLwogCQkJCW5leHRfaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIp IFBhZ2VHZXRJdGVtKGN0eC5wYWdlLCBuZXh0X2xwKTsKIAkJCQlpZiAoIUhlYXBUdXBsZUhl YWRlcklzSGVhcE9ubHkobmV4dF9odHVwKSkKIAkJCQl7CkBAIC02ODcsNiArNzEyLDE5IEBA IHZlcmlmeV9oZWFwYW0oUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkvKiBIT1QgY2hhaW5zIHNo b3VsZCBub3QgaW50ZXJzZWN0LiAqLwogCQkJCWlmIChwcmVkZWNlc3NvcltuZXh0b2ZmbnVt XSAhPSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQogCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogSW4g dGhlIEhPVC9TSVUgbW9kZWwgc2V2ZXJhbCByZWRpcmVjdHMgbGVnaXRpbWF0ZWx5CisJCQkJ CSAqIGZvcndhcmQgdG8gdGhlIHNhbWUgbGl2ZSB0dXBsZTogd2hlbiBhIGNoYWluIGNvbGxh cHNlcywKKwkJCQkJICogdGhlIHJvb3QgYW5kIGVhY2ggZW50cnktYmVhcmluZyBkZWFkIG1l bWJlciBiZWNvbWUgYQorCQkJCQkgKiByZWRpcmVjdCB0byBmaXJzdF9saXZlIHNvIGV2ZXJ5 IHN0YWxlIGJ0cmVlIGVudHJ5IHN0aWxsCisJCQkJCSAqIHJlc29sdmVzIHRoZXJlICh0aGUg cmVhZCBwYXRoIHRoZW4gcmVjaGVja3MgdGhlIGxlYWYKKwkJCQkJICoga2V5KS4gIE11bHRp cGxlIHByZWRlY2Vzc29ycyBhcmUgdGhlcmVmb3JlIGV4cGVjdGVkCisJCQkJCSAqIHdoZW4g dGhlIHRhcmdldCBpcyBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZDsga2VlcCB0aGUKKwkJCQkJ ICogZmlyc3QgcHJlZGVjZXNzb3IgYW5kIGRvIG5vdCByZXBvcnQgaXQgYXMgY29ycnVwdGlv bi4KKwkJCQkJICovCisJCQkJCWlmICgobmV4dF9odHVwLT50X2luZm9tYXNrMiAmIEhFQVBf SU5ERVhFRF9VUERBVEVEKSAhPSAwKQorCQkJCQkJY29udGludWU7CisKIAkJCQkJcmVwb3J0 X2NvcnJ1cHRpb24oJmN0eCwKIAkJCQkJCQkJCSAgcHNwcmludGYoInJlZGlyZWN0IGxpbmUg cG9pbnRlciBwb2ludHMgdG8gb2Zmc2V0ICVkLCBidXQgb2Zmc2V0ICVkIGFsc28gcG9pbnRz IHRoZXJlIiwKIAkJCQkJCQkJCQkJICAgbmV4dG9mZm51bSwgcHJlZGVjZXNzb3JbbmV4dG9m Zm51bV0pKTsKQEAgLTcwMSw2ICs3MzksMzAgQEAgdmVyaWZ5X2hlYXBhbShQR19GVU5DVElP Tl9BUkdTKQogCQkJCWNvbnRpbnVlOwogCQkJfQogCisJCQkvKgorCQkJICogQSBjb2xsYXBz ZS1zdXJ2aXZvciBzdHViIGZvcndhcmRzIGxpa2UgYSByZWRpcmVjdDogaXQgaXMgbm90IGEK KwkJCSAqIHJlYWwgdHVwbGUsIHNvIGRvbid0IGFwcGx5IHRoZSB0dXBsZS10by10dXBsZSB1 cGRhdGUtY2hhaW4KKwkJCSAqIGNoZWNrcywgYnV0IGRvIHJlY29yZCB0aGUgcHJlZGVjZXNz b3IgZWRnZSB0byBpdHMgdGFyZ2V0IHNvIHRoZQorCQkJICogbGl2ZSB0dXBsZSBpdCB1bHRp bWF0ZWx5IGZvcndhcmRzIHRvIGlzIG5vdCBtaXN0YWtlbiBmb3IgYQorCQkJICogY2hhaW4g cm9vdC4gIEl0cyB0YXJnZXQgbXVzdCBiZSBoZWFwLW9ubHkgKGFub3RoZXIgc3R1YiBvciB0 aGUKKwkJCSAqIGxpdmUgaGVhcC1vbmx5IHR1cGxlKS4KKwkJCSAqLworCQkJY3Vycl9odHVw ID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0oY3R4LnBhZ2UsIGN1cnJfbHApOwor CQkJaWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIoY3Vycl9odHVwKSkKKwkJCXsKKwkJCQlp ZiAoSXRlbUlkSXNOb3JtYWwobmV4dF9scCkpCisJCQkJeworCQkJCQluZXh0X2h0dXAgPSAo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShjdHgucGFnZSwgbmV4dF9scCk7CisJCQkJ CWlmICghSGVhcFR1cGxlSGVhZGVySXNIZWFwT25seShuZXh0X2h0dXApKQorCQkJCQkJcmVw b3J0X2NvcnJ1cHRpb24oJmN0eCwKKwkJCQkJCQkJCQkgIHBzcHJpbnRmKCJIT1QtaW5kZXhl ZCBzdHViIGZvcndhcmRzIHRvIGEgbm9uLWhlYXAtb25seSB0dXBsZSBhdCBvZmZzZXQgJWQi LAorCQkJCQkJCQkJCQkJICAgbmV4dG9mZm51bSkpOworCQkJCQllbHNlIGlmIChwcmVkZWNl c3NvcltuZXh0b2ZmbnVtXSA9PSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQorCQkJCQkJcHJlZGVj ZXNzb3JbbmV4dG9mZm51bV0gPSBjdHgub2ZmbnVtOworCQkJCX0KKwkJCQljb250aW51ZTsK KwkJCX0KKwogCQkJLyoKIAkJCSAqIElmIHRoZSBuZXh0IGxpbmUgcG9pbnRlciBpcyBhIHJl ZGlyZWN0LCBvciBpZiBpdCdzIGEgdHVwbGUgYnV0CiAJCQkgKiB0aGUgWE1BWCBvZiB0aGlz IHR1cGxlIGRvZXNuJ3QgbWF0Y2ggdGhlIFhNSU4gb2YgdGhlIG5leHQKQEAgLTcwOSw3ICs3 NzEsNiBAQCB2ZXJpZnlfaGVhcGFtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgKi8KIAkJCWlm IChJdGVtSWRJc1JlZGlyZWN0ZWQobmV4dF9scCkpCiAJCQkJY29udGludWU7Ci0JCQljdXJy X2h0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShjdHgucGFnZSwgY3Vycl9s cCk7CiAJCQljdXJyX3htYXggPSBIZWFwVHVwbGVIZWFkZXJHZXRVcGRhdGVYaWQoY3Vycl9o dHVwKTsKIAkJCW5leHRfaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKGN0 eC5wYWdlLCBuZXh0X2xwKTsKIAkJCW5leHRfeG1pbiA9IEhlYXBUdXBsZUhlYWRlckdldFht aW4obmV4dF9odHVwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JF QURNRS5IT1QtSU5ERVhFRCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1Qt SU5ERVhFRAppbmRleCBhYjRmOGJjMTg4MS4uMWY0MWIwZmZmZTggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRAorKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQKQEAgLTI0NCw2ICsyNDQsMTYg QEAgc3RhbGUgZW50cmllcyAoZW5mb3JjZWQgaW4gaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJl Y3QsIHRoZSBzdHViIHJlY29yZGVycywgYW5kCiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zp c2libGUpLgogCiAKK2FtY2hlY2sgYW5kIHN0YXRpc3RpY3MKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKwordmVyaWZ5X2hlYXBhbSB0cmVhdHMgdGhlIEhPVC1pbmRleGVkIGFydGlmYWN0 cyBhcyBsZWdpdGltYXRlOiBhIGxpdmUKK0hFQVBfSU5ERVhFRF9VUERBVEVEIGhlYXAtb25s eSB0dXBsZSB3aG9zZSBsaW5lIHBvaW50ZXIgaXMgcHJlc2VydmVkLCBhbmQKK211bHRpcGxl IExQX1JFRElSRUNUcyBmb3J3YXJkaW5nIHRvIG9uZSBsaXZlIHR1cGxlLgorCitTdGF0aXN0 aWNzOiBwZ19zdGF0X2FsbF90YWJsZXMubl90dXBfaG90X2luZGV4ZWRfdXBkIGNvdW50cyBI T1QtaW5kZXhlZAorCisKIEFwcGVuZGljZXMKIC0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ191cGdyYWRlL21l c29uLmJ1aWxkCmluZGV4IGZmYmY2YWU4ZDc1Li4wYTZmYTBkY2ZmMiAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfdXBncmFk ZS9tZXNvbi5idWlsZApAQCAtNjksNiArNjksNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8w MDZfdHJhbnNmZXJfbW9kZXMucGwnLAogICAgICAgJ3QvMDA3X211bHRpeGFjdF9jb252ZXJz aW9uLnBsJywKICAgICAgICd0LzAwOF9leHRlbnNpb25fY29udHJvbF9wYXRoLnBsJywKKyAg ICAgICd0LzAwOV9ob3RfaW5kZXhlZC5wbCcsCiAgICAgXSwKICAgICAnZGVwcyc6IFt0ZXN0 X2V4dF0sCiAgICAgJ3Rlc3Rfa3dhcmdzJzogeydwcmlvcml0eSc6IDQwfSwgIyBwZ191cGdy YWRlIHRlc3RzIGFyZSBzbG93CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvdC8w MDlfaG90X2luZGV4ZWQucGwgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4 ZWQucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI3MTEyOWFl MDNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA5X2hvdF9p bmRleGVkLnBsCkBAIC0wLDAgKzEsMTE4IEBACisjIENvcHlyaWdodCAoYykgMjAyNiwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBwZ191cGdyYWRlIG11c3Qg cHJlc2VydmUgSE9ULWluZGV4ZWQgb24tZGlzayBzdGF0ZS4gIEEgcmVsYXRpb24gdGhhdCBo YXMKKyMgYWNjdW11bGF0ZWQgSE9ULWluZGV4ZWQgY2hhaW5zIC0tIGluY2x1ZGluZyBhIHZh bHVlIGN5Y2xlZCBhd2F5IGFuZCBiYWNrCisjIChBQkEpLCBhbiBvdXQtb2YtbGluZSAoVE9B U1QpIGluZGV4ZWQgY29sdW1uLCBhbmQgY2hhaW5zIGNvbGxhcHNlZCB0bworIyB4aWQtZnJl ZSBmb3J3YXJkaW5nIHN0dWJzIGJ5IFZBQ1VVTSAtLSBtdXN0IGNvbWUgdGhyb3VnaCBhbiB1 cGdyYWRlIHdpdGggaXRzCisjIGRhdGEgaW50YWN0LCBpdHMgaW5kZXhlcyBzdHJ1Y3R1cmFs bHkgc291bmQsIGFuZCBpdHMgY2hhaW5zIHN0aWxsIHNjYW5uaW5nCisjIGNvcnJlY3RseS4g IHBnX3VwZ3JhZGUgdHJhbnNmZXJzIGhlYXAgYW5kIGluZGV4IGZpbGVzIHZlcmJhdGltLCBz byB0aGlzIGlzCisjIHJlYWxseSBhIGNoZWNrIHRoYXQgdGhlIG5ldy1zdGF0ZSBiaXRzIChI RUFQX0lOREVYRURfVVBEQVRFRCwgY29sbGFwc2Ugc3R1YnMpCisjIGFyZSBub3QgcmVqZWN0 ZWQgYnkgcGdfdXBncmFkZSdzIGNoZWNrcyBhbmQgc3RheSBjb3JyZWN0IG9uIHRoZSBuZXcg Y2x1c3Rlci4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsK K3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRtb2RlID0gJEVOVntQR19URVNUX1BH X1VQR1JBREVfTU9ERX0gfHwgJy0tY29weSc7CisKK215ICRvbGRub2RlID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdvbGRfbm9kZScpOworJG9sZG5vZGUtPmluaXQ7Cisk b2xkbm9kZS0+c3RhcnQ7CisKKyMgQnVpbGQgYSByZWxhdGlvbiB3aXRoIHNldmVyYWwgc2Vj b25kYXJ5IGluZGV4ZXMgc28gc2luZ2xlLWNvbHVtbiB1cGRhdGVzCisjIHN0YXkgSE9ULWlu ZGV4ZWQsIHRoZW4gZXhlcmNpc2UgdGhlIGNhc2VzIHRoYXQgcHJvZHVjZSBpbnRlcmVzdGlu ZyBvbi1kaXNrCisjIHN0YXRlLgorJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx eworCUNSRUFURSBFWFRFTlNJT04gYW1jaGVjazsKKwlDUkVBVEUgVEFCTEUgaGkgKGlkIGlu dCBQUklNQVJZIEtFWSwgayBpbnQsIHYgaW50LCBiaWcgdGV4dCkKKwkgIFdJVEggKGZpbGxm YWN0b3IgPSA1MCk7CisJQUxURVIgVEFCTEUgaGkgQUxURVIgQ09MVU1OIGJpZyBTRVQgU1RP UkFHRSBFWFRFUk5BTDsKKwlDUkVBVEUgSU5ERVggaGlfayBPTiBoaSAoayk7CisJQ1JFQVRF IElOREVYIGhpX3YgT04gaGkgKHYpOworCUNSRUFURSBJTkRFWCBoaV9iaWcgT04gaGkgKGJp Zyk7CisJSU5TRVJUIElOVE8gaGkgU0VMRUNUIGcsIGcsIGcgKiAxMCwgcmVwZWF0KGNocig2 NCArIGcpLCAyMDAwKQorCSAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIGc7Cit9KTsK KworIyBJbnRlcmxlYXZlIHVwZGF0ZXMgb2YgZGlmZmVyZW50IGluZGV4ZWQgY29sdW1ucyBv biB0aGUgc2FtZSByb3dzLiAgQSBtZW1iZXIKKyMgdGhhdCBjaGFuZ2VkIGEgY29sdW1uIG5v dCBjaGFuZ2VkIGFnYWluIGJ5IGEgbGF0ZXIgaG9wIHN1cnZpdmVzIFZBQ1VVTSBhcyBhCisj IGNvbGxhcHNlIHN0dWI7IHRoZSByZXN0IGFyZSByZWNsYWltZWQuICBSb3cgMSBhZGRpdGlv bmFsbHkgY3ljbGVzIGsgYXdheSBhbmQKKyMgYmFjayAoQUJBKSwgYW5kIHJvdyAyIHJld3Jp dGVzIGl0cyB0b2FzdGVkIGluZGV4ZWQgY29sdW1uLgorJG9sZG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxeworCVVQREFURSBoaSBTRVQgayA9IGsgKyAxMDAgV0hFUkUgaWQgPD0g MTA7ICAgLS0gY2hhbmdlcyBrCisJVVBEQVRFIGhpIFNFVCB2ID0gdiArIDEgICBXSEVSRSBp ZCA8PSAxMDsgICAgLS0gY2hhbmdlcyB2IChzdXJ2aXZlcyBhcyBzdHViKQorCVVQREFURSBo aSBTRVQgayA9IGsgLSAxMDAgV0hFUkUgaWQgPD0gMTA7ICAgIC0tIGsgYmFjayB0byBvcmln aW5hbCAoQUJBKQorCVVQREFURSBoaSBTRVQgYmlnID0gcmVwZWF0KCdaJywgMjAwMCkgV0hF UkUgaWQgPSAyOworfSk7CisjIENvbGxhcHNlIGRlYWQgY2hhaW4gbWVtYmVycyB0byBzdHVi cy4KKyRvbGRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1ZBQ1VVTSAoSU5ERVhfQ0xF QU5VUCBvZmYpIGhpJyk7CisKKyMgVGhlIHByZS11cGdyYWRlIHN0YXRlIG11c3QgYWxyZWFk eSBiZSBzZWxmLWNvbnNpc3RlbnQuCitpcyggJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpJyl9KSwK KwknMCcsICdwcmUtdXBncmFkZSBoZWFwIGlzIGNvbnNpc3RlbnQnKTsKKworIyBTbmFwc2hv dCB0aGUgZGF0YSB3ZSB3aWxsIGNvbXBhcmUgYWZ0ZXIgdGhlIHVwZ3JhZGUuCitteSAkZXhw ZWN0ID0gJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNUIGlkLCBr LCB2LCBsZW5ndGgoYmlnKSBGUk9NIGhpIE9SREVSIEJZIGlkfSk7CisKKyRvbGRub2RlLT5z dG9wOworCisjIE5ldyBjbHVzdGVyLCBzYW1lIHZlcnNpb24uCitteSAkbmV3bm9kZSA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbmV3X25vZGUnKTsKKyRuZXdub2RlLT5p bml0OworCitteSAkb2xkYmluZGlyID0gJG9sZG5vZGUtPmNvbmZpZ19kYXRhKCctLWJpbmRp cicpOworbXkgJG5ld2JpbmRpciA9ICRuZXdub2RlLT5jb25maWdfZGF0YSgnLS1iaW5kaXIn KTsKKworIyBSdW4gcGdfdXBncmFkZSBmcm9tIGEgd3JpdGFibGUgZGlyZWN0b3J5IChtYXRj aGVzIDAwMl9wZ191cGdyYWRlKS4KK2NoZGlyICR7UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6 OnRtcF9jaGVja307CisKK2NvbW1hbmRfb2soCisJWworCQkncGdfdXBncmFkZScsICctLW5v LXN5bmMnLAorCQknLS1vbGQtZGF0YWRpcicgPT4gJG9sZG5vZGUtPmRhdGFfZGlyLAorCQkn LS1uZXctZGF0YWRpcicgPT4gJG5ld25vZGUtPmRhdGFfZGlyLAorCQknLS1vbGQtYmluZGly JyA9PiAkb2xkYmluZGlyLAorCQknLS1uZXctYmluZGlyJyA9PiAkbmV3YmluZGlyLAorCQkn LS1zb2NrZXRkaXInID0+ICRuZXdub2RlLT5ob3N0LAorCQknLS1vbGQtcG9ydCcgPT4gJG9s ZG5vZGUtPnBvcnQsCisJCSctLW5ldy1wb3J0JyA9PiAkbmV3bm9kZS0+cG9ydCwKKwkJJG1v ZGUsCisJXSwKKwkncnVuIG9mIHBnX3VwZ3JhZGUgZm9yIEhPVC1pbmRleGVkIHJlbGF0aW9u Jyk7CisKKyRuZXdub2RlLT5zdGFydDsKKworIyBEYXRhIHN1cnZpdmVkIGludGFjdC4KK215 ICRnb3QgPSAkbmV3bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgaWQs IGssIHYsIGxlbmd0aChiaWcpIEZST00gaGkgT1JERVIgQlkgaWR9KTsKK2lzKCRnb3QsICRl eHBlY3QsICdIT1QtaW5kZXhlZCB0YWJsZSBkYXRhIHByZXNlcnZlZCBhY3Jvc3MgcGdfdXBn cmFkZScpOworCisjIEhlYXAgYW5kIGluZGV4ZXMgYXJlIHN0cnVjdHVyYWxseSBzb3VuZCBv biB0aGUgbmV3IGNsdXN0ZXIuCitpcyggJG5ld25vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpJyl9KSwKKwkn MCcsICdwb3N0LXVwZ3JhZGUgaGVhcCBpcyBjb25zaXN0ZW50IChjb2xsYXBzZSBzdHVicyBy ZWNvZ25pc2VkKScpOworaXMoICRuZXdub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsK KwkJU0VMRUNUIGNvdW50KCopIEZST00gKAorCQkJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKGMu b2lkKQorCQkJRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfaW5kZXggaSBPTiBpLmluZGV4cmVs aWQgPSBjLm9pZAorCQkJV0hFUkUgaS5pbmRyZWxpZCA9ICdoaSc6OnJlZ2NsYXNzKSBzfSks CisJJzQnLCAncG9zdC11cGdyYWRlIGluZGV4ZXMgcGFzcyBidF9pbmRleF9jaGVjaycpOwor CisjIFRoZSBBQkEgY2hhaW4gb24gcm93IDEgc3RpbGwgc2NhbnMgY29ycmVjdGx5IHRocm91 Z2ggYSBmb3JjZWQgaW5kZXggc2NhbjoKKyMgaz0xIHJldHVybnMgZXhhY3RseSB0aGUgb25l IGxpdmUgcm93LCBhbmQgaXRzIHN1cGVyc2VkZWQgdmFsdWUgaXMgZ29uZS4KK2lzKCAkbmV3 bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJCVNFVCBlbmFibGVfc2Vxc2NhbiA9 IG9mZjsgU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworCQlTRUxFQ1QgY291bnQoKikg RlJPTSBoaSBXSEVSRSBrID0gMX0pLAorCScxJywgJ3Bvc3QtdXBncmFkZSBpbmRleCBzY2Fu IHJldHVybnMgdGhlIEFCQSByb3cgb25jZScpOworaXMoICRuZXdub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXsKKwkJU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOyBTRVQgZW5hYmxl X2JpdG1hcHNjYW4gPSBvZmY7CisJCVNFTEVDVCBjb3VudCgqKSBGUk9NIGhpIFdIRVJFIGsg PSAxMDF9KSwKKwknMCcsICdwb3N0LXVwZ3JhZGUgaW5kZXggc2NhbiBkcm9wcyB0aGUgc3Vw ZXJzZWRlZCB2YWx1ZScpOworCiskbmV3bm9kZS0+c3RvcDsKKworZG9uZV90ZXN0aW5nKCk7 Ci0tIAoyLjUwLjEKCg== --98b017876237f005fe98a17b40ccb28dde987108 Content-Disposition: attachment; filename*0="v48-0007-Add-HOT-indexed-statistics-and-the-comprehensive.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v48-0007-Add-HOT-indexed-statistics-and-the-comprehensive.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBkMWI1MDFhN2NmNWI4MjBmZWJkMmRkYzQyZjk0ZDg0OGNlZTAwZWFjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTozODoxMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ4IDcv OV0gQWRkIEhPVC1pbmRleGVkIHN0YXRpc3RpY3MgYW5kIHRoZSBjb21wcmVoZW5zaXZlIHRl c3QKIHN1aXRlCgpFeHBvc2UgdGhlIEhPVC1pbmRleGVkIGFjdGl2aXR5IGNvdW50ZXJzIG1h aW50YWluZWQgYnkgdGhlIHdyaXRlIHBhdGg6CnBnX3N0YXRfYWxsX3RhYmxlcy5uX3R1cF9o b3RfaW5kZXhlZF91cGQsIHRoZSBwZXItaW5kZXgKbl90dXBfaG90X2luZGV4ZWRfdXBkX21h dGNoZWQgLyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCBjb3VudGVycyBpbgpwZ19z dGF0X2FsbF9pbmRleGVzLCBhbmQgcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoKSBy ZXBvcnRpbmcgcGVyLXJlbGF0aW9uCkhPVC1pbmRleGVkIGNoYWluIGNvbXBvc2l0aW9uLiAg RG9jdW1lbnQgdGhlbSBpbiBtb25pdG9yaW5nLnNnbWwgYW5kIHRoZQpSRUFETUUuCgpXaXRo IHN0YXRpc3RpY3MsIHBydW5lL2NvbGxhcHNlLCBhbmQgYW1jaGVjayByZWNvZ25pdGlvbiBh bGwgaW4gcGxhY2UsIGFkZCB0aGUKZnVsbCBmZWF0dXJlIHRlc3Qgc3VpdGUsIHdoaWNoIHVz ZXMgdGhvc2UgZmFjaWxpdGllcyB0byB2ZXJpZnkgYmVoYXZpb3I6CgotIGhvdF9pbmRleGVk X3VwZGF0ZXMgKHJlZ3Jlc3Npb24pOiBlbGlnaWJpbGl0eSBhbmQgY2xhc3NpZmljYXRpb247 IHNlbGVjdGl2ZQogIG1haW50ZW5hbmNlIGFjcm9zcyBtdWx0aXBsZS9jb21wb3NpdGUgaW5k ZXhlczsgdGhlIGNyb3NzZWQtYXR0cmlidXRlIHJlYWQKICBwYXRoIGZvciBlcXVhbGl0eSwg cmFuZ2UsIGFuZCBpbmVxdWFsaXR5IHNjYW5zOyBhIGtleSBjeWNsZWQgYXdheSBhbmQgYmFj awogIChBQkEpLCBpbmNsdWRpbmcgYWNyb3NzIHR3byBkaXN0aW5jdCBsaXZlIHJvd3M7IFRP QVNUZWQgaW5kZXhlZCBjb2x1bW5zOwogIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlIGZsaXBz IChrZXkgYW5kIG5vbi1rZXkgcHJlZGljYXRlIGNvbHVtbnMpOwogIHRyaWdnZXItbW9kaWZp ZWQgaW5kZXhlZCBjb2x1bW5zOyBleGNsdXNpb24tY29uc3RyYWludCB0YWJsZXM7IHBhcnRp dGlvbmVkCiAgdGFibGVzOyBub24tYnRyZWUgYWNjZXNzIG1ldGhvZHMgKGhhc2gsIEdJTiwg R2lTVCk7IGEgVU5JUVVFIGluZGV4IG9uIGEgdHlwZQogIHdoZXJlIGltYWdlIGVxdWFsaXR5 IGRpZmZlcnMgZnJvbSBvcGVyYXRvciBlcXVhbGl0eTsgQ1JFQVRFIElOREVYIC8gUkVJTkRF WAogIGFuZCBEUk9QIElOREVYIG92ZXIgbGl2ZSBjaGFpbnM7IHBydW5lIHJlY2xhbWF0aW9u LCBzdHViIG1peGVzLCBhbmQKICByZS1jb2xsYXBzZSBhY3Jvc3MgcGFydGlhbCBWQUNVVU1z OyB0aGUgbmV2ZXItYWxsLXZpc2libGUgZ3VhcmQ7IGFuZCBEREwKICBhZnRlciBhIGNoYWlu IGV4aXN0cyAoQUREIENPTFVNTiBjcm9zc2luZyBhIGJpdG1hcC1zaXplIGJvdW5kYXJ5LCBE Uk9QCiAgQ09MVU1OKS4KLSBob3RfaW5kZXhlZF9hZHZlcnNhcmlhbCAoaXNvbGF0aW9uKTog Y29uY3VycmVudCBVUERBVEUgLyBWQUNVVU0gLyBwcnVuZSBhbmQKICBpbmRleCBzY2Fucywg a2V5IGN5Y2xpbmcsIGFib3J0cywgYW5kIHJlYWRlciBjb25zaXN0ZW5jeSBhY3Jvc3MgYSBj b25jdXJyZW50CiAgY29sbGFwc2UuCi0gMDU0X2hvdF9pbmRleGVkX3JlY292ZXJ5IChyZWNv dmVyeSk6IFdBTCByZXBsYXkgb2YgdGhlIGNoYWluIGFuZCBpdHMgY29sbGFwc2UKICB1bmRl ciB3YWxfY29uc2lzdGVuY3lfY2hlY2tpbmcuCi0gcGdfc3VyZ2VyeSBoYW5kbGluZyBvZiBI T1QtaW5kZXhlZCB0dXBsZXMgYW5kIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWJzLgoKQXV0aG9y ZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgotLS0KIGNvbnRyaWIvcGdfc3VyZ2Vy eS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogY29udHJpYi9wZ19zdXJn ZXJ5L2V4cGVjdGVkL2hlYXBfc3VyZ2VyeS5vdXQgIHwgICAyOSArCiBjb250cmliL3BnX3N1 cmdlcnkvc3FsL2hlYXBfc3VyZ2VyeS5zcWwgICAgICAgfCAgIDIwICsKIGRvYy9zcmMvc2dt bC9tb25pdG9yaW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAgNTcgKwogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgICAgfCAgICAzICsKIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hvdF9pbmRleGVkX3N0YXRzLmMgICB8ICAxODYgKysKIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL21lc29uLmJ1aWxkICAgICAgICAgICB8ICAgIDEgKwog c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAgNCAr CiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyAgICAgICAgICAgfCAgIDEy ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAg MjggKwogLi4uL2V4cGVjdGVkL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLm91dCAgICAgIHwg IDEzOSArKwogc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSAgICAgICAg IHwgICAgMSArCiAuLi4vc3BlY3MvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwuc3BlYyAgICAg ICAgfCAgMTIzICsrCiBzcmMvdGVzdC9yZWNvdmVyeS9NYWtlZmlsZSAgICAgICAgICAgICAg ICAgICAgfCAgICAzICstCiBzcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZCAgICAgICAg ICAgICAgICAgfCAgICAxICsKIC4uLi9yZWNvdmVyeS90LzA1NV9ob3RfaW5kZXhlZF9yZWNv dmVyeS5wbCAgICB8ICAxNDkgKysKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL2hvdF9pbmRleGVk X3VwZGF0ZXMub3V0ICB8IDE3MDYgKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICAgICB8ICAgMTIgKwogc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9ob3RfaW5kZXhlZF91cGRhdGVzLnNxbCAgfCAxMTU0ICsrKysrKysrKysr CiAyMSBmaWxlcyBjaGFuZ2VkLCAzNjMwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9ob3RfaW5kZXhl ZF9zdGF0cy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVj dGVkL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5zcGVjCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTVfaG90X2luZGV4ZWRf cmVjb3ZlcnkucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2hvdF9pbmRleGVkX3VwZGF0ZXMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvcmVncmVzcy9zcWwvaG90X2luZGV4ZWRfdXBkYXRlcy5zcWwKCmRpZmYgLS1naXQgYS9j b250cmliL3BnX3N1cmdlcnkvTWFrZWZpbGUgYi9jb250cmliL3BnX3N1cmdlcnkvTWFrZWZp bGUKaW5kZXggYTY2Nzc2YzRjNDEuLmRhNzUyYTgxMTQ3IDEwMDY0NAotLS0gYS9jb250cmli L3BnX3N1cmdlcnkvTWFrZWZpbGUKKysrIGIvY29udHJpYi9wZ19zdXJnZXJ5L01ha2VmaWxl CkBAIC0xMCw2ICsxMCw3IEBAIERBVEEgPSBwZ19zdXJnZXJ5LS0xLjAuc3FsCiBQR0ZJTEVE RVNDID0gInBnX3N1cmdlcnkgLSBwZXJmb3JtIHN1cmdlcnkgb24gYSBkYW1hZ2VkIHJlbGF0 aW9uIgogCiBSRUdSRVNTID0gaGVhcF9zdXJnZXJ5CitFWFRSQV9JTlNUQUxMID0gY29udHJp Yi9wYWdlaW5zcGVjdAogCiBpZmRlZiBVU0VfUEdYUwogUEdfQ09ORklHID0gcGdfY29uZmln CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N1cmdlcnkvZXhwZWN0ZWQvaGVhcF9zdXJnZXJ5 Lm91dCBiL2NvbnRyaWIvcGdfc3VyZ2VyeS9leHBlY3RlZC9oZWFwX3N1cmdlcnkub3V0Cmlu ZGV4IGRmN2QxM2IwOTA4Li45YzA2NmYwODdlNyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19z dXJnZXJ5L2V4cGVjdGVkL2hlYXBfc3VyZ2VyeS5vdXQKKysrIGIvY29udHJpYi9wZ19zdXJn ZXJ5L2V4cGVjdGVkL2hlYXBfc3VyZ2VyeS5vdXQKQEAgLTE3NSw2ICsxNzUsMzUgQEAgREVU QUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3Igdmlld3MuCiBzZWxl Y3QgaGVhcF9mb3JjZV9mcmVlemUoJ3Z3Jzo6cmVnY2xhc3MsIEFSUkFZWycoMCwgMSknXTo6 dGlkW10pOwogRVJST1I6ICBjYW5ub3Qgb3BlcmF0ZSBvbiByZWxhdGlvbiAidnciCiBERVRB SUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aWV3cy4KKy0tIEEg SE9UL1NJVSBjaGFpbiBjb2xsYXBzZSB0dXJucyB0aGUgY2hhaW4gcm9vdCBhbmQgZWFjaCBk ZWFkIGVudHJ5LWJlYXJpbmcKKy0tIG1lbWJlciBpbnRvIGFuIExQX1JFRElSRUNUIHRvIHRo ZSBsaXZlIHR1cGxlLiAgcGdfc3VyZ2VyeSBvcGVyYXRlcyBvbiByZWFsCistLSB0dXBsZXMg YW5kIG11c3QgbGVhdmUgdGhlIGxpdmUgcm93IHJlYWNoYWJsZSBhZnRlciBzdWNoIGEgY29s bGFwc2UuCitjcmVhdGUgZXh0ZW5zaW9uIHBhZ2VpbnNwZWN0OworY3JlYXRlIHRhYmxlIGh0 b21iIChpZCBpbnQgcHJpbWFyeSBrZXksIGEgaW50LCBiIGludCkgd2l0aCAoZmlsbGZhY3Rv ciA9IDUwKTsKK2NyZWF0ZSBpbmRleCBodG9tYl9hIG9uIGh0b21iKGEpOworaW5zZXJ0IGlu dG8gaHRvbWIgdmFsdWVzICgxLCAxMCwgMjApOworLS0gVHdvIEhPVC1pbmRleGVkIHVwZGF0 ZXMgb24gYW4gaW5kZXhlZCBhdHRyLCB0aGVuIHBydW5lOiB0aGUgZGVhZCBtaWQtY2hhaW4K Ky0tIHZlcnNpb25zIGNvbGxhcHNlIHRvIExQX1JFRElSRUNUcyB0byB0aGUgbGl2ZSB0dXBs ZS4gIElOREVYX0NMRUFOVVAgb2ZmIGtlZXBzCistLSB0aGUgc3RhbGUgYnRyZWUgbGVhdmVz IChhbmQgaGVuY2UgdGhlIHJlZGlyZWN0cykgaW4gcGxhY2UuCit1cGRhdGUgaHRvbWIgc2V0 IGEgPSAxMSB3aGVyZSBpZCA9IDE7Cit1cGRhdGUgaHRvbWIgc2V0IGEgPSAxMiB3aGVyZSBp ZCA9IDE7Cit2YWN1dW0gKGluZGV4X2NsZWFudXAgb2ZmKSBodG9tYjsKK3NlbGVjdCBuX2hv dF9pbmRleGVkID4gMCBhcyBtYWRlX2hvdF9pbmRleGVkCisgIGZyb20gcGdfcmVsYXRpb25f aG90X2luZGV4ZWRfc3RhdHMoJ2h0b21iJyk7CisgbWFkZV9ob3RfaW5kZXhlZCAKKy0tLS0t LS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gdGhlIGxpdmUgcm93IGlzIGludGFj dCBhbmQgcmVhY2hhYmxlIGFmdGVyIHRoZSBjb2xsYXBzZQorc2VsZWN0IGlkLCBhLCBiIGZy b20gaHRvbWI7CisgaWQgfCBhICB8IGIgIAorLS0tLSstLS0tKy0tLS0KKyAgMSB8IDEyIHwg MjAKKygxIHJvdykKKworZHJvcCB0YWJsZSBodG9tYjsKK2Ryb3AgZXh0ZW5zaW9uIHBhZ2Vp bnNwZWN0OwogLS0gY2xlYW51cC4KIGRyb3AgdmlldyB2dzsKIGRyb3AgZXh0ZW5zaW9uIHBn X3N1cmdlcnk7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N1cmdlcnkvc3FsL2hlYXBfc3Vy Z2VyeS5zcWwgYi9jb250cmliL3BnX3N1cmdlcnkvc3FsL2hlYXBfc3VyZ2VyeS5zcWwKaW5k ZXggNjUyNmIyNzUzNWQuLjdhMGYyNzIyZGMzIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N1 cmdlcnkvc3FsL2hlYXBfc3VyZ2VyeS5zcWwKKysrIGIvY29udHJpYi9wZ19zdXJnZXJ5L3Nx bC9oZWFwX3N1cmdlcnkuc3FsCkBAIC04Myw2ICs4MywyNiBAQCBjcmVhdGUgdmlldyB2dyBh cyBzZWxlY3QgMTsKIHNlbGVjdCBoZWFwX2ZvcmNlX2tpbGwoJ3Z3Jzo6cmVnY2xhc3MsIEFS UkFZWycoMCwgMSknXTo6dGlkW10pOwogc2VsZWN0IGhlYXBfZm9yY2VfZnJlZXplKCd2dyc6 OnJlZ2NsYXNzLCBBUlJBWVsnKDAsIDEpJ106OnRpZFtdKTsKIAorLS0gQSBIT1QvU0lVIGNo YWluIGNvbGxhcHNlIHR1cm5zIHRoZSBjaGFpbiByb290IGFuZCBlYWNoIGRlYWQgZW50cnkt YmVhcmluZworLS0gbWVtYmVyIGludG8gYW4gTFBfUkVESVJFQ1QgdG8gdGhlIGxpdmUgdHVw bGUuICBwZ19zdXJnZXJ5IG9wZXJhdGVzIG9uIHJlYWwKKy0tIHR1cGxlcyBhbmQgbXVzdCBs ZWF2ZSB0aGUgbGl2ZSByb3cgcmVhY2hhYmxlIGFmdGVyIHN1Y2ggYSBjb2xsYXBzZS4KK2Ny ZWF0ZSBleHRlbnNpb24gcGFnZWluc3BlY3Q7CitjcmVhdGUgdGFibGUgaHRvbWIgKGlkIGlu dCBwcmltYXJ5IGtleSwgYSBpbnQsIGIgaW50KSB3aXRoIChmaWxsZmFjdG9yID0gNTApOwor Y3JlYXRlIGluZGV4IGh0b21iX2Egb24gaHRvbWIoYSk7CitpbnNlcnQgaW50byBodG9tYiB2 YWx1ZXMgKDEsIDEwLCAyMCk7CistLSBUd28gSE9ULWluZGV4ZWQgdXBkYXRlcyBvbiBhbiBp bmRleGVkIGF0dHIsIHRoZW4gcHJ1bmU6IHRoZSBkZWFkIG1pZC1jaGFpbgorLS0gdmVyc2lv bnMgY29sbGFwc2UgdG8gTFBfUkVESVJFQ1RzIHRvIHRoZSBsaXZlIHR1cGxlLiAgSU5ERVhf Q0xFQU5VUCBvZmYga2VlcHMKKy0tIHRoZSBzdGFsZSBidHJlZSBsZWF2ZXMgKGFuZCBoZW5j ZSB0aGUgcmVkaXJlY3RzKSBpbiBwbGFjZS4KK3VwZGF0ZSBodG9tYiBzZXQgYSA9IDExIHdo ZXJlIGlkID0gMTsKK3VwZGF0ZSBodG9tYiBzZXQgYSA9IDEyIHdoZXJlIGlkID0gMTsKK3Zh Y3V1bSAoaW5kZXhfY2xlYW51cCBvZmYpIGh0b21iOworc2VsZWN0IG5faG90X2luZGV4ZWQg PiAwIGFzIG1hZGVfaG90X2luZGV4ZWQKKyAgZnJvbSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhl ZF9zdGF0cygnaHRvbWInKTsKKy0tIHRoZSBsaXZlIHJvdyBpcyBpbnRhY3QgYW5kIHJlYWNo YWJsZSBhZnRlciB0aGUgY29sbGFwc2UKK3NlbGVjdCBpZCwgYSwgYiBmcm9tIGh0b21iOwor ZHJvcCB0YWJsZSBodG9tYjsKK2Ryb3AgZXh0ZW5zaW9uIHBhZ2VpbnNwZWN0OworCiAtLSBj bGVhbnVwLgogZHJvcCB2aWV3IHZ3OwogZHJvcCBleHRlbnNpb24gcGdfc3VyZ2VyeTsKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sCmluZGV4IDA1YmQ1MDFjNjgyLi4zMjVmZTJlNzY5NCAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sCkBAIC00MzI2LDYgKzQzMjYsMTkgQEAgZGVzY3JpcHRpb24gfCBX YWl0aW5nIGZvciBhIG5ld2x5IGluaXRpYWxpemVkIFdBTCBmaWxlIHRvIHJlYWNoIGR1cmFi bGUgc3RvcmFnZQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5uX3R1cF9o b3RfaW5kZXhlZF91cGQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAg ICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2Ygcm93cyB1cGRhdGVk IHVzaW5nIHRoZSBIT1QtaW5kZXhlZCBwYXRoOiB0aGUgc3VjY2Vzc29yCisgICAgICAgdmVy c2lvbiBzdGF5cyBvbiB0aGUgc2FtZSBwYWdlIGFzIGEgaGVhcC1vbmx5IHR1cGxlIGV2ZW4g dGhvdWdoIGl0CisgICAgICAgY2hhbmdlZCBvbmUgb3IgbW9yZSBpbmRleGVkIGNvbHVtbnMs IGFuZCBvbmx5IHRoZSBhZmZlY3RlZCBpbmRleGVzCisgICAgICAgcmVjZWl2ZSBhIG5ldyBl bnRyeS4gIEV2ZXJ5IHN1Y2ggdXBkYXRlIGlzIGFsc28gY291bnRlZCBpbgorICAgICAgIDxz dHJ1Y3RmaWVsZD5uX3R1cF9ob3RfdXBkPC9zdHJ1Y3RmaWVsZD4uCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CiAgICAgICAgPHN0cnVjdGZpZWxkPm5fdHVwX25ld3BhZ2VfdXBkPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+YmlnaW50PC90eXBlPgpAQCAtNDc5Niw2ICs0ODA5LDI3IEBAIGRlc2NyaXB0aW9u IHwgV2FpdGluZyBmb3IgYSBuZXdseSBpbml0aWFsaXplZCBXQUwgZmlsZSB0byByZWFjaCBk dXJhYmxlIHN0b3JhZ2UKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAor ICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+bl90 dXBfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8 L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2Yg SE9ULWluZGV4ZWQgdXBkYXRlcyB0aGF0IGluc2VydGVkIGEgbmV3IGVudHJ5IGludG8gdGhp cworICAgICAgIGluZGV4ICh0aGUgdXBkYXRlIGNoYW5nZWQgb25lIG9mIHRoaXMgaW5kZXgn cyBhdHRyaWJ1dGVzKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisg ICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5uX3R1 cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiBI T1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQgc2tpcHBlZCB0aGlzIGluZGV4ICh0aGUgdXBkYXRl CisgICAgICAgY2hhbmdlZCBubyBhdHRyaWJ1dGUgb2YgdGhpcyBpbmRleCwgc28gaXRzIGV4 aXN0aW5nIGVudHJ5IGNvbnRpbnVlcworICAgICAgIHRvIHJlc29sdmUgdGhlIEhPVCBjaGFp bikKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93Pgog ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KICAgICAgICAgPHN0cnVjdGZpZWxkPnN0YXRzX3Jlc2V0PC9z dHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6b25lPC90eXBlPgpAQCAt NTQ3Nyw2ICs1NTExLDI5IEBAIGRlc2NyaXB0aW9uIHwgV2FpdGluZyBmb3IgYSBuZXdseSBp bml0aWFsaXplZCBXQUwgZmlsZSB0byByZWFjaCBkdXJhYmxlIHN0b3JhZ2UKICAgICAgPC90 aGVhZD4KIAogICAgICA8dGJvZHk+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSBpZD0i cGctcmVsYXRpb24taG90LWluZGV4ZWQtc3RhdHMiIHJvbGU9ImZ1bmNfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4KKyAg ICAgICAgIDxwcmltYXJ5PnBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzPC9wcmltYXJ5 PgorICAgICAgICA8L2luZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPnBnX3JlbGF0aW9u X2hvdF9pbmRleGVkX3N0YXRzPC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnJlbGF0aW9uPC9w YXJhbWV0ZXI+IDx0eXBlPnJlZ2NsYXNzPC90eXBlPiApCisgICAgICAgIDxyZXR1cm52YWx1 ZT5yZWNvcmQ8L3JldHVybnZhbHVlPgorICAgICAgICAoIDxwYXJhbWV0ZXI+bl9ob3RfaW5k ZXhlZDwvcGFyYW1ldGVyPiA8dHlwZT5iaWdpbnQ8L3R5cGU+LAorICAgICAgICA8cGFyYW1l dGVyPm5fY2hhaW5zPC9wYXJhbWV0ZXI+IDx0eXBlPmJpZ2ludDwvdHlwZT4sCisgICAgICAg IDxwYXJhbWV0ZXI+YXZnX2NoYWluX2xlbjwvcGFyYW1ldGVyPiA8dHlwZT5kb3VibGUgcHJl Y2lzaW9uPC90eXBlPiwKKyAgICAgICAgPHBhcmFtZXRlcj5tYXhfY2hhaW5fbGVuPC9wYXJh bWV0ZXI+IDx0eXBlPmJpZ2ludDwvdHlwZT4gKQorICAgICAgIDwvcGFyYT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgUmVwb3J0cyBIT1QtaW5kZXhlZCBzdHJ1Y3R1cmFsIHN0YXRpc3Rp Y3MgZm9yIGEgdGFibGUgYnkgc2Nhbm5pbmcKKyAgICAgICAgZXZlcnkgcGFnZSB1bmRlciA8 bGl0ZXJhbD5BY2Nlc3NTaGFyZUxvY2s8L2xpdGVyYWw+OgorICAgICAgICA8cGFyYW1ldGVy Pm5faG90X2luZGV4ZWQ8L3BhcmFtZXRlcj4gaXMgdGhlIG51bWJlciBvZiBsaXZlCisgICAg ICAgIEhPVC1pbmRleGVkIHR1cGxlIHZlcnNpb25zIHByZXNlbnQsIGFuZAorICAgICAgICA8 cGFyYW1ldGVyPm5fY2hhaW5zPC9wYXJhbWV0ZXI+LCA8cGFyYW1ldGVyPmF2Z19jaGFpbl9s ZW48L3BhcmFtZXRlcj4KKyAgICAgICAgYW5kIDxwYXJhbWV0ZXI+bWF4X2NoYWluX2xlbjwv cGFyYW1ldGVyPiBkZXNjcmliZSB0aGUgSE9ULWluZGV4ZWQKKyAgICAgICAgY2hhaW5zLiAg SW50ZW5kZWQgZm9yIGRpYWdub3N0aWNzLgorICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICAgPC9yb3c+CisKICAgICAgIDxyb3c+CiAgICAgICAgPCEtLSBTZWUgYWxzbyB0aGUgZW50 cnkgZm9yIHRoaXMgaW4gZnVuYy5zZ21sIC0tPgogICAgICAgIDxlbnRyeSByb2xlPSJmdW5j X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL01ha2VmaWxlCmluZGV4IDFkMjdjY2I5MTZlLi5kZmFmMzM1MDczNiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvTWFrZWZpbGUKQEAgLTIwLDYgKzIwLDcgQEAgT0JKUyA9IFwKIAlo ZWFwYW1feGxvZy5vIFwKIAloZWFwdG9hc3QubyBcCiAJaGlvLm8gXAorCWhvdF9pbmRleGVk X3N0YXRzLm8gXAogCXBydW5laGVhcC5vIFwKIAlyZXdyaXRlaGVhcC5vIFwKIAl2YWN1dW1s YXp5Lm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhP VC1JTkRFWEVEIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVE CmluZGV4IDFmNDFiMGZmZmU4Li4yZTVlNWY0YTA4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVECisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRApAQCAtMjUyLDYgKzI1Miw5IEBAIEhFQVBf SU5ERVhFRF9VUERBVEVEIGhlYXAtb25seSB0dXBsZSB3aG9zZSBsaW5lIHBvaW50ZXIgaXMg cHJlc2VydmVkLCBhbmQKIG11bHRpcGxlIExQX1JFRElSRUNUcyBmb3J3YXJkaW5nIHRvIG9u ZSBsaXZlIHR1cGxlLgogCiBTdGF0aXN0aWNzOiBwZ19zdGF0X2FsbF90YWJsZXMubl90dXBf aG90X2luZGV4ZWRfdXBkIGNvdW50cyBIT1QtaW5kZXhlZAordXBkYXRlczsgcGdfc3RhdF9h bGxfaW5kZXhlcy5uX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCAvIF9za2lwcGVkIGNv dW50CitwZXItaW5kZXggcmVjaGVjayBvdXRjb21lczsgYW5kIHBnX3JlbGF0aW9uX2hvdF9p bmRleGVkX3N0YXRzKCkgcmVwb3J0cworcGVyLXJlbGF0aW9uIEhPVC1pbmRleGVkIGNoYWlu IGNvdW50cy4KIAogCiBBcHBlbmRpY2VzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9ob3RfaW5kZXhlZF9zdGF0cy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aG90X2luZGV4ZWRfc3RhdHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uNTdlZjk0NjE1NjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9ob3RfaW5kZXhlZF9zdGF0cy5jCkBAIC0wLDAgKzEsMTg2IEBACisvKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqCisgKiBob3RfaW5kZXhlZF9zdGF0cy5jCisgKgkgIFNRTC1j YWxsYWJsZSBkaWFnbm9zdGljIHRoYXQgd2Fsa3MgZXZlcnkgcGFnZSBvZiBhIGhlYXAgcmVs YXRpb24gYW5kCisgKgkgIHJlcG9ydHMgaG90LWluZGV4ZWQtcmVsYXRlZCBzdHJ1Y3R1cmFs IHN0YXRpc3RpY3MuCisgKgorICogVGhlc2UgbnVtYmVycyBjb21wbGVtZW50IHRoZSBydW5u aW5nIHBnc3RhdCBjb3VudGVycworICogKG5fdHVwX2hvdF9pbmRleGVkX3VwZCBpbiBwZ19z dGF0X2FsbF90YWJsZXMpOiB0aGV5IGFuc3dlciAid2hhdCBpcyBvbiBkaXNrCisgKiByaWdo dCBub3c/IiByYXRoZXIgdGhhbiAiaG93IG9mdGVuIGRpZCBob3QtaW5kZXhlZCBmaXJlIGR1 cmluZyB0aGUgc3RhdHMKKyAqIHdpbmRvdz8iLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAor ICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hv dF9pbmRleGVkX3N0YXRzLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lu Y2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5j bHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0 YWRkcmVzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImZt Z3IuaCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisj aW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2Uu aCIKKyNpbmNsdWRlICJzdG9yYWdlL2l0ZW1wdHIuaCIKKyNpbmNsdWRlICJ1dGlscy9hY2wu aCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL3JlbC5o IgorCisvKgorICogcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMocmVnY2xhc3MpIC0+ IHJlY29yZAorICoKKyAqIFdhbGtzIGV2ZXJ5IGJsb2NrIG9mIHRoZSByZWxhdGlvbidzIG1h aW4gZm9yayBhbmQgY291bnRzOgorICogICBuX2hvdF9pbmRleGVkICAgLS0gbGl2ZSBIT1Qt aW5kZXhlZCB2ZXJzaW9ucyAoSEVBUF9JTkRFWEVEX1VQREFURUQsIG5hdHRzPjAsCisgKiAg ICAgICAgICAgICAgICAgICAgICBjYXJyeWluZyBhbiBpbmxpbmUtdHJhaWxpbmcgbW9kaWZp ZWQtYXR0cnMgYml0bWFwKQorICogICBuX2NoYWlucyAgICAgICAgLS0gTFBfUkVESVJFQ1Qg aXRlbXMsIGkuZS4gSE9UIGNoYWluIHJvb3RzLiAgTWF0Y2hlcworICogICAgICAgICAgICAg ICAgICAgICAgdGhlIG51bWJlciBvZiBkaXN0aW5jdCBIT1QgY2hhaW5zIHRoYXQgaGF2ZSBz dXJ2aXZlZAorICogICAgICAgICAgICAgICAgICAgICAgdGhlIG1vc3QgcmVjZW50IHBydW5l LiAgUm9vdC1ub3QtcmVkaXJlY3QgY2hhaW5zCisgKiAgICAgICAgICAgICAgICAgICAgICAo bGVuZ3RoIDEpIGFyZSBub3QgY291bnRlZCBoZXJlIGJlY2F1c2UgdGhleSBhcmUKKyAqICAg ICAgICAgICAgICAgICAgICAgIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gYSBub24tY2hhaW4g dHVwbGUuCisgKiAgIGF2Z19jaGFpbl9sZW4gICAtLSBtZWFuIGxlbmd0aCBhY3Jvc3MgY2hh aW5zIHJvb3RlZCBhdCBhbiBMUF9SRURJUkVDVCwKKyAqICAgICAgICAgICAgICAgICAgICAg IGRlcml2ZWQgYnkgd2Fsa2luZyBlYWNoIHJlZGlyZWN0IHRhcmdldCB0byB0aGUgZW5kCisg KiAgICAgICAgICAgICAgICAgICAgICBvZiBpdHMgSEVBUF9IT1RfVVBEQVRFRCBjaGFpbi4K KyAqICAgbWF4X2NoYWluX2xlbiAgIC0tIGxvbmdlc3QgY2hhaW4gb2JzZXJ2ZWQuCisgKgor ICogVGhlIGNhbGxlciBtdXN0IGhvbGQgU0VMRUNUIHByaXZpbGVnZSBvbiB0aGUgcmVsYXRp b24sIGxpa2Ugb3RoZXIKKyAqIHJlbGF0aW9uLWluc3BlY3Rpb24gZnVuY3Rpb25zOyBpdCB0 YWtlcyBvbmx5IEFjY2Vzc1NoYXJlTG9jayBhbmQgc2hvcnQtdGVybQorICogYnVmZmVyIHNo YXJlIGxvY2tzIHdoaWxlIHNjYW5uaW5nLgorICovCitEYXR1bQorcGdfcmVsYXRpb25faG90 X2luZGV4ZWRfc3RhdHMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQlyZWxpZCA9IFBH X0dFVEFSR19PSUQoMCk7CisJUmVsYXRpb24JcmVsOworCUFjbFJlc3VsdAlhY2xyZXN1bHQ7 CisJQmxvY2tOdW1iZXIgbmJsb2NrczsKKwlCbG9ja051bWJlciBibGs7CisJaW50NjQJCW5f aG90X2luZGV4ZWQgPSAwOworCWludDY0CQluX2NoYWlucyA9IDA7CisJaW50NjQJCXN1bV9j aGFpbl9sZW4gPSAwOworCWludDY0CQltYXhfY2hhaW5fbGVuID0gMDsKKwlUdXBsZURlc2MJ dHVwZGVzYzsKKwlEYXR1bQkJdmFsdWVzWzRdOworCWJvb2wJCW51bGxzWzRdID0gezB9Owor CUhlYXBUdXBsZQlyZXN1bHR0dXA7CisKKwlyZWwgPSByZWxhdGlvbl9vcGVuKHJlbGlkLCBB Y2Nlc3NTaGFyZUxvY2spOworCWlmIChyZWwtPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5E X1JFTEFUSU9OICYmCisJCXJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfTUFUVklF VyAmJgorCQlyZWwtPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1RPQVNUVkFMVUUpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQ RSksCisJCQkJIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHRhYmxlLCBtYXRlcmlhbGl6ZWQg dmlldywgb3IgVE9BU1QgdGFibGUiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSkpKTsKKworCS8qIENhbGxlciBtdXN0IGJlIGFibGUgdG8gcmVhZCB0aGUgcmVsYXRp b24uICovCisJYWNscmVzdWx0ID0gcGdfY2xhc3NfYWNsY2hlY2socmVsaWQsIEdldFVzZXJJ ZCgpLCBBQ0xfU0VMRUNUKTsKKwlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQlh Y2xjaGVja19lcnJvcihhY2xyZXN1bHQsCisJCQkJCSAgIGdldF9yZWxraW5kX29ianR5cGUo cmVsLT5yZF9yZWwtPnJlbGtpbmQpLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWwpKTsKKworCW5ibG9ja3MgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKHJlbCk7 CisKKwlmb3IgKGJsayA9IDA7IGJsayA8IG5ibG9ja3M7IGJsaysrKQorCXsKKwkJQnVmZmVy CQlidWY7CisJCVBhZ2UJCXBhZ2U7CisJCU9mZnNldE51bWJlciBvZmY7CisJCU9mZnNldE51 bWJlciBtYXhvZmY7CisKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQlidWYgPSBS ZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIGJsaywgUkJNX05PUk1BTCwg TlVMTCk7CisJCUxvY2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7CisJCXBhZ2Ug PSBCdWZmZXJHZXRQYWdlKGJ1Zik7CisKKwkJaWYgKFBhZ2VJc05ldyhwYWdlKSB8fCBQYWdl SXNFbXB0eShwYWdlKSkKKwkJeworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOworCQkJ Y29udGludWU7CisJCX0KKworCQltYXhvZmYgPSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBh Z2UpOworCQlmb3IgKG9mZiA9IEZpcnN0T2Zmc2V0TnVtYmVyOyBvZmYgPD0gbWF4b2ZmOyBv ZmYgPSBPZmZzZXROdW1iZXJOZXh0KG9mZikpCisJCXsKKwkJCUl0ZW1JZAkJbHAgPSBQYWdl R2V0SXRlbUlkKHBhZ2UsIG9mZik7CisKKwkJCWlmICghSXRlbUlkSXNVc2VkKGxwKSkKKwkJ CQljb250aW51ZTsKKworCQkJaWYgKEl0ZW1JZElzUmVkaXJlY3RlZChscCkpCisJCQl7CisJ CQkJLyogV2FsayB0aGUgY2hhaW4gc3RhcnRpbmcgYXQgdGhlIHJlZGlyZWN0IHRhcmdldC4g Ki8KKwkJCQlPZmZzZXROdW1iZXIgY3VyID0gSXRlbUlkR2V0UmVkaXJlY3QobHApOworCQkJ CWludDY0CQlsZW4gPSAwOworCisJCQkJLyoKKwkJCQkgKiBXYWxrIHRoZSBzYW1lLXBhZ2Ug SE9UIGNoYWluLiAgQm91bmQgdGhlIGxvb3AgYnkgdGhlIHBhZ2UncworCQkJCSAqIGl0ZW0g Y291bnQgc28gYSBjb3JydXB0IGN5Y2xpYyB0X2N0aWQgY2Fubm90IHNwaW4gZm9yZXZlcgor CQkJCSAqIHVuZGVyIHRoZSBidWZmZXIgbG9jaywgYW5kIGNoZWNrIGZvciBpbnRlcnJ1cHRz IGVhY2ggc3RlcC4KKwkJCQkgKi8KKwkJCQl3aGlsZSAoY3VyID49IEZpcnN0T2Zmc2V0TnVt YmVyICYmIGN1ciA8PSBtYXhvZmYgJiYgbGVuIDwgbWF4b2ZmKQorCQkJCXsKKwkJCQkJSXRl bUlkCQljaGFpbl9scCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgY3VyKTsKKwkJCQkJSGVhcFR1 cGxlSGVhZGVyIHRoZHI7CisKKwkJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkJ CQlpZiAoIUl0ZW1JZElzTm9ybWFsKGNoYWluX2xwKSkKKwkJCQkJCWJyZWFrOworCQkJCQl0 aGRyID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgY2hhaW5fbHApOwor CQkJCQlsZW4rKzsKKwkJCQkJaWYgKCEodGhkci0+dF9pbmZvbWFzazIgJiBIRUFQX0hPVF9V UERBVEVEKSkKKwkJCQkJCWJyZWFrOworCQkJCQkvKiBIT1QgY2hhaW5zIHN0YXkgb24gb25l IHBhZ2U7IHN0b3AgaWYgdGhlIGxpbmsgbGVhdmVzIGl0LiAqLworCQkJCQlpZiAoSXRlbVBv aW50ZXJHZXRCbG9ja051bWJlcigmdGhkci0+dF9jdGlkKSAhPSBibGspCisJCQkJCQlicmVh azsKKwkJCQkJY3VyID0gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnRoZHItPnRfY3Rp ZCk7CisJCQkJfQorCQkJCWlmIChsZW4gPiAwKQorCQkJCXsKKwkJCQkJbl9jaGFpbnMrKzsK KwkJCQkJc3VtX2NoYWluX2xlbiArPSBsZW47CisJCQkJCWlmIChsZW4gPiBtYXhfY2hhaW5f bGVuKQorCQkJCQkJbWF4X2NoYWluX2xlbiA9IGxlbjsKKwkJCQl9CisJCQl9CisJCQllbHNl IGlmIChJdGVtSWRJc05vcm1hbChscCkpCisJCQl7CisJCQkJSGVhcFR1cGxlSGVhZGVyIHRo ZHIgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJCQlp ZiAoKHRoZHItPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpICE9IDApCisJ CQkJCW5faG90X2luZGV4ZWQrKzsKKwkJCX0KKwkJfQorCisJCVVubG9ja1JlbGVhc2VCdWZm ZXIoYnVmKTsKKwl9CisKKwlyZWxhdGlvbl9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7 CisKKwl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoNCk7CisJVHVwbGVEZXNj SW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAxLCAibl9ob3RfaW5kZXhlZCIsIElO VDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1i ZXIpIDIsICJuX2NoYWlucyIsIElOVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50 cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDMsICJhdmdfY2hhaW5fbGVuIiwgRkxPQVQ4T0lE LCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA0 LCAibWF4X2NoYWluX2xlbiIsIElOVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NGaW5hbGl6 ZSh0dXBkZXNjKTsKKwl0dXBkZXNjID0gQmxlc3NUdXBsZURlc2ModHVwZGVzYyk7CisKKwl2 YWx1ZXNbMF0gPSBJbnQ2NEdldERhdHVtKG5faG90X2luZGV4ZWQpOworCXZhbHVlc1sxXSA9 IEludDY0R2V0RGF0dW0obl9jaGFpbnMpOworCWlmIChuX2NoYWlucyA+IDApCisJCXZhbHVl c1syXSA9IEZsb2F0OEdldERhdHVtKCgoZG91YmxlKSBzdW1fY2hhaW5fbGVuKSAvIChkb3Vi bGUpIG5fY2hhaW5zKTsKKwllbHNlCisJCXZhbHVlc1syXSA9IEZsb2F0OEdldERhdHVtKDAu MCk7CisJdmFsdWVzWzNdID0gSW50NjRHZXREYXR1bShtYXhfY2hhaW5fbGVuKTsKKworCXJl c3VsdHR1cCA9IGhlYXBfZm9ybV90dXBsZSh0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKTsKKwlQ R19SRVRVUk5fREFUVU0oSGVhcFR1cGxlR2V0RGF0dW0ocmVzdWx0dHVwKSk7Cit9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9tZXNvbi5idWlsZCBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL21lc29uLmJ1aWxkCmluZGV4IDAwZWMwN2Q3ZjMwLi5iNWMyYThk NWNiNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvbWVzb24uYnVpbGQK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvbWVzb24uYnVpbGQKQEAgLTgsNiArOCw3 IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ2hlYXBhbV94bG9nLmMnLAogICAn aGVhcHRvYXN0LmMnLAogICAnaGlvLmMnLAorICAnaG90X2luZGV4ZWRfc3RhdHMuYycsCiAg ICdwcnVuZWhlYXAuYycsCiAgICdyZXdyaXRlaGVhcC5jJywKICAgJ3ZhY3V1bWxhenkuYycs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggOGYxMjliYWVjOTAu LjRlYTFmYzAwNjU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBA IC03MzAsNiArNzMwLDcgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9hbGxfdGFibGVzIEFTCiAg ICAgICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChDLm9pZCkgQVMgbl90dXBf dXBkLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2RlbGV0ZWQoQy5vaWQpIEFT IG5fdHVwX2RlbCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRl ZChDLm9pZCkgQVMgbl90dXBfaG90X3VwZCwKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3R1 cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkKEMub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91 cGQsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfbmV3cGFnZV91cGRhdGVkKEMu b2lkKSBBUyBuX3R1cF9uZXdwYWdlX3VwZCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2xp dmVfdHVwbGVzKEMub2lkKSBBUyBuX2xpdmVfdHVwLAogICAgICAgICAgICAgcGdfc3RhdF9n ZXRfZGVhZF90dXBsZXMoQy5vaWQpIEFTIG5fZGVhZF90dXAsCkBAIC03NjgsNiArNzY5LDcg QEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF94YWN0X2FsbF90YWJsZXMgQVMKICAgICAgICAgICAg IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoQy5vaWQpIEFTIG5fdHVwX3VwZCwK ICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2RlbGV0ZWQoQy5vaWQpIEFT IG5fdHVwX2RlbCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91 cGRhdGVkKEMub2lkKSBBUyBuX3R1cF9ob3RfdXBkLAorICAgICAgICAgICAgcGdfc3RhdF9n ZXRfeGFjdF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZChDLm9pZCkgQVMgbl90dXBfaG90 X2luZGV4ZWRfdXBkLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfbmV3 cGFnZV91cGRhdGVkKEMub2lkKSBBUyBuX3R1cF9uZXdwYWdlX3VwZAogICAgIEZST00gcGdf Y2xhc3MgQyBMRUZUIEpPSU4KICAgICAgICAgIHBnX2luZGV4IEkgT04gQy5vaWQgPSBJLmlu ZHJlbGlkCkBAIC04NjksNiArODcxLDggQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9hbGxfaW5k ZXhlcyBBUwogICAgICAgICAgICAgcGdfc3RhdF9nZXRfbGFzdHNjYW4oSS5vaWQpIEFTIGxh c3RfaWR4X3NjYW4sCiAgICAgICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWQo SS5vaWQpIEFTIGlkeF90dXBfcmVhZCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxl c19mZXRjaGVkKEkub2lkKSBBUyBpZHhfdHVwX2ZldGNoLAorICAgICAgICAgICAgcGdfc3Rh dF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWRfc2tpcHBlZChJLm9pZCkgQVMgbl90 dXBfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQsCisgICAgICAgICAgICBwZ19zdGF0X2dldF90 dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZF9tYXRjaGVkKEkub2lkKSBBUyBuX3R1cF9ob3Rf aW5kZXhlZF91cGRfbWF0Y2hlZCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3N0YXRfcmVz ZXRfdGltZShJLm9pZCkgQVMgc3RhdHNfcmVzZXQKICAgICBGUk9NIHBnX2NsYXNzIEMgSk9J TgogICAgICAgICAgICAgcGdfaW5kZXggWCBPTiBDLm9pZCA9IFguaW5kcmVsaWQgSk9JTgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwppbmRleCAwYzZhMjA4NDNhNS4uOGVk OGU0ZmY3NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5j cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC05Myw2 ICs5MywxNSBAQCBQR19TVEFUX0dFVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfZmV0Y2hlZCkK IC8qIHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZCAqLwogUEdfU1RBVF9HRVRfUkVM RU5UUllfSU5UNjQodHVwbGVzX2hvdF91cGRhdGVkKQogCisvKiBwZ19zdGF0X2dldF90dXBs ZXNfaG90X2luZGV4ZWRfdXBkYXRlZCAqLworUEdfU1RBVF9HRVRfUkVMRU5UUllfSU5UNjQo dHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQpCisKKy8qIHBnX3N0YXRfZ2V0X3R1cGxlc19o b3RfaW5kZXhlZF91cGRhdGVkX3NraXBwZWQgKi8KK1BHX1NUQVRfR0VUX1JFTEVOVFJZX0lO VDY0KHR1cGxlc19ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCkKKworLyogcGdfc3RhdF9nZXRf dHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWRfbWF0Y2hlZCAqLworUEdfU1RBVF9HRVRfUkVM RU5UUllfSU5UNjQodHVwbGVzX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkKQorCiAvKiBwZ19z dGF0X2dldF90dXBsZXNfbmV3cGFnZV91cGRhdGVkICovCiBQR19TVEFUX0dFVF9SRUxFTlRS WV9JTlQ2NCh0dXBsZXNfbmV3cGFnZV91cGRhdGVkKQogCkBAIC0xODg4LDYgKzE4OTcsOSBA QCBQR19TVEFUX0dFVF9YQUNUX1JFTEVOVFJZX0lOVDY0KHR1cGxlc19mZXRjaGVkKQogLyog cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgKi8KIFBHX1NUQVRfR0VUX1hB Q1RfUkVMRU5UUllfSU5UNjQodHVwbGVzX2hvdF91cGRhdGVkKQogCisvKiBwZ19zdGF0X2dl dF94YWN0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkICovCitQR19TVEFUX0dFVF9YQUNU X1JFTEVOVFJZX0lOVDY0KHR1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkKQorCiAvKiBwZ19z dGF0X2dldF94YWN0X3R1cGxlc19uZXdwYWdlX3VwZGF0ZWQgKi8KIFBHX1NUQVRfR0VUX1hB Q1RfUkVMRU5UUllfSU5UNjQodHVwbGVzX25ld3BhZ2VfdXBkYXRlZCkKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQKaW5kZXggNzNiYjdmYmI0MzAuLjE5NGRjMzc4N2UwIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTU1OTQsNiArNTU5NCwyOSBAQAogICBwcm9uYW1l ID0+ICdwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQnLCBwcm92b2xhdGlsZSA9PiAn cycsCiAgIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2Fy Z3R5cGVzID0+ICdvaWQnLAogICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3R1cGxlc19ob3Rf dXBkYXRlZCcgfSwKK3sgb2lkID0+ICc5OTUzJywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6 IG51bWJlciBvZiB0dXBsZXMgdXBkYXRlZCB2aWEgSE9ULWluZGV4ZWQgKFNlbGVjdGl2ZSBJ bmRleCBVcGRhdGUpJywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9p bmRleGVkX3VwZGF0ZWQnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVsID0+ ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBw cm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkJyB9LAor eyBvaWQgPT4gJzk5NTYnLAorICBkZXNjciA9PiAnc3RhdGlzdGljczogbnVtYmVyIG9mIEhP VC1pbmRleGVkIHVwZGF0ZXMgdGhhdCBza2lwcGVkIHRoaXMgaW5kZXgnLAorICBwcm9uYW1l ID0+ICdwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZF9za2lwcGVkJywg cHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUg PT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvc3JjID0+ICdwZ19zdGF0 X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQnIH0sCit7IG9pZCA9PiAnOTk1 NycsCisgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBudW1iZXIgb2YgSE9ULWluZGV4ZWQgdXBk YXRlcyB0aGF0IGluc2VydGVkIGludG8gdGhpcyBpbmRleCcsCisgIHByb25hbWUgPT4gJ3Bn X3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkX21hdGNoZWQnLCBwcm92b2xh dGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50 OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3R1 cGxlc19ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCcgfSwKK3sgb2lkID0+ICc5OTU1JywKKyAg ZGVzY3IgPT4gJ0hPVC1pbmRleGVkIHN0cnVjdHVyYWwgc3RhdHM6IEhPVC1pbmRleGVkIHZl cnNpb25zIGFuZCBjaGFpbiBsZW5ndGhzJywKKyAgcHJvbmFtZSA9PiAncGdfcmVsYXRpb25f aG90X2luZGV4ZWRfc3RhdHMnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3BhcmFsbGVs ID0+ICdyJywgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJ3JlZ2Ns YXNzJywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tyZWdjbGFzcyxpbnQ4LGludDgsZmxvYXQ4 LGludDh9JywKKyAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG99JywKKyAgcHJvYXJnbmFt ZXMgPT4gJ3tyZWxhdGlvbixuX2hvdF9pbmRleGVkLG5fY2hhaW5zLGF2Z19jaGFpbl9sZW4s bWF4X2NoYWluX2xlbn0nLAorICBwcm9zcmMgPT4gJ3BnX3JlbGF0aW9uX2hvdF9pbmRleGVk X3N0YXRzJyB9LAogeyBvaWQgPT4gJzYyMTcnLAogICBkZXNjciA9PiAnc3RhdGlzdGljczog bnVtYmVyIG9mIHR1cGxlcyB1cGRhdGVkIG9udG8gYSBuZXcgcGFnZScsCiAgIHByb25hbWUg PT4gJ3BnX3N0YXRfZ2V0X3R1cGxlc19uZXdwYWdlX3VwZGF0ZWQnLCBwcm92b2xhdGlsZSA9 PiAncycsCkBAIC02MTcxLDYgKzYxOTQsMTEgQEAKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9n ZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQnLCBwcm92b2xhdGlsZSA9PiAndicsCiAgIHBy b3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ ICdvaWQnLAogICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRh dGVkJyB9LAoreyBvaWQgPT4gJzk5NTQnLAorICBkZXNjciA9PiAnc3RhdGlzdGljczogbnVt YmVyIG9mIEhPVC1pbmRleGVkIHR1cGxlIHVwZGF0ZXMgaW4gY3VycmVudCB0cmFuc2FjdGlv bicsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF9pbmRleGVk X3VwZGF0ZWQnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3BhcmFsbGVsID0+ICdyJywg cHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBwcm9zcmMg PT4gJ3BnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQnIH0sCiB7 IG9pZCA9PiAnNjIxOCcsCiAgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBudW1iZXIgb2YgdHVw bGVzIHVwZGF0ZWQgb250byBhIG5ldyBwYWdlIGluIGN1cnJlbnQgdHJhbnNhY3Rpb24nLAog ICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF94YWN0X3R1cGxlc19uZXdwYWdlX3VwZGF0ZWQn LCBwcm92b2xhdGlsZSA9PiAndicsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24v ZXhwZWN0ZWQvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwub3V0IGIvc3JjL3Rlc3QvaXNvbGF0 aW9uL2V4cGVjdGVkL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLm91dApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjJmNjI4MDE1MTMKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaG90X2luZGV4ZWRfYWR2ZXJzYXJp YWwub3V0CkBAIC0wLDAgKzEsMTM5IEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggNiBzZXNz aW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJfbm9zZXEgczFfY3ljbGUgczJfZXEx MCBzMl9lcTIwCitzdGVwIHMyX25vc2VxOiBTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7Citz dGVwIHMxX2N5Y2xlOiBVUERBVEUgaGlhIFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOyBVUERB VEUgaGlhIFNFVCBrID0gMTAgV0hFUkUgaWQgPSAxOworc3RlcCBzMl9lcTEwOiBTRUxFQ1Qg aWQsIGsgRlJPTSBoaWEgV0hFUkUgayA9IDEwOworaWR8IGsKKy0tKy0tCisgMXwxMAorKDEg cm93KQorCitzdGVwIHMyX2VxMjA6IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID0g MjA7CitpZHxrCistLSstCisoMCByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBz Ml9ub3NlcSBzMV9jeWNsZSBzMl9yYW5nZQorc3RlcCBzMl9ub3NlcTogU0VUIGVuYWJsZV9z ZXFzY2FuID0gb2ZmOworc3RlcCBzMV9jeWNsZTogVVBEQVRFIGhpYSBTRVQgayA9IDIwIFdI RVJFIGlkID0gMTsgVVBEQVRFIGhpYSBTRVQgayA9IDEwIFdIRVJFIGlkID0gMTsKK3N0ZXAg czJfcmFuZ2U6IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID49IDUgT1JERVIgQlkg azsKK2lkfCBrCistLSstLQorIDF8MTAKKygxIHJvdykKKworCitzdGFydGluZyBwZXJtdXRh dGlvbjogczJfbm9zZXEgczFfYmVnaW4gczFfdXBkMjAgczFfYWJvcnQgczJfZXEyMCBzMl9l cTEwCitzdGVwIHMyX25vc2VxOiBTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitzdGVwIHMx X2JlZ2luOiBCRUdJTjsKK3N0ZXAgczFfdXBkMjA6IFVQREFURSBoaWEgU0VUIGsgPSAyMCBX SEVSRSBpZCA9IDE7CitzdGVwIHMxX2Fib3J0OiBST0xMQkFDSzsKK3N0ZXAgczJfZXEyMDog U0VMRUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAyMDsKK2lkfGsKKy0tKy0KKygwIHJv d3MpCisKK3N0ZXAgczJfZXExMDogU0VMRUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAx MDsKK2lkfCBrCistLSstLQorIDF8MTAKKygxIHJvdykKKworCitzdGFydGluZyBwZXJtdXRh dGlvbjogczFfYmVnaW4gczFfdXVwZDIwIHMyX2luczEwIHMxX2NvbW1pdAorc3RlcCBzMV9i ZWdpbjogQkVHSU47CitzdGVwIHMxX3V1cGQyMDogVVBEQVRFIGhpdSBTRVQgayA9IDIwIFdI RVJFIGlkID0gMTsKK3N0ZXAgczJfaW5zMTA6IElOU0VSVCBJTlRPIGhpdSBWQUxVRVMgKDIs IDEwLCByZXBlYXQoJ3knLCA0MCkpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxX2NvbW1pdDog Q09NTUlUOworc3RlcCBzMl9pbnMxMDogPC4uLiBjb21wbGV0ZWQ+CisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMV9iZWdpbiBzMV91dXBkMjAgczFfY29tbWl0IHMyX2luczEwCitzdGVw IHMxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczFfdXVwZDIwOiBVUERBVEUgaGl1IFNFVCBrID0g MjAgV0hFUkUgaWQgPSAxOworc3RlcCBzMV9jb21taXQ6IENPTU1JVDsKK3N0ZXAgczJfaW5z MTA6IElOU0VSVCBJTlRPIGhpdSBWQUxVRVMgKDIsIDEwLCByZXBlYXQoJ3knLCA0MCkpOwor CitzdGFydGluZyBwZXJtdXRhdGlvbjogczFfYmVnaW4gczFfdXVwZDIwIHMxX2NvbW1pdCBz Ml9pbnMyMAorc3RlcCBzMV9iZWdpbjogQkVHSU47CitzdGVwIHMxX3V1cGQyMDogVVBEQVRF IGhpdSBTRVQgayA9IDIwIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7 CitzdGVwIHMyX2luczIwOiBJTlNFUlQgSU5UTyBoaXUgVkFMVUVTICgzLCAyMCwgcmVwZWF0 KCd6JywgNDApKTsKK0VSUk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlx dWUgY29uc3RyYWludCAiaGl1X2siCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzM19iZWdp biBzM19lcTEwIHMyX3RvMzAgczJfc2NhbjMwIHMzX2VxMTAgczNfY29tbWl0CitzdGVwIHMz X2JlZ2luOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyBTRVQgZW5h YmxlX3NlcXNjYW4gPSBvZmY7CitzdGVwIHMzX2VxMTA6IFNFTEVDVCBpZCwgayBGUk9NIGhp YSBXSEVSRSBrID0gMTA7CitpZHwgaworLS0rLS0KKyAxfDEwCisoMSByb3cpCisKK3N0ZXAg czJfdG8zMDogVVBEQVRFIGhpYSBTRVQgayA9IDIwIFdIRVJFIGlkID0gMTsgVVBEQVRFIGhp YSBTRVQgayA9IDMwIFdIRVJFIGlkID0gMTsKK3N0ZXAgczJfc2NhbjMwOiBTRVQgZW5hYmxl X3NlcXNjYW4gPSBvZmY7IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID0gMzA7Citp ZHwgaworLS0rLS0KKyAxfDMwCisoMSByb3cpCisKK3N0ZXAgczNfZXExMDogU0VMRUNUIGlk LCBrIEZST00gaGlhIFdIRVJFIGsgPSAxMDsKK2lkfCBrCistLSstLQorIDF8MTAKKygxIHJv dykKKworc3RlcCBzM19jb21taXQ6IENPTU1JVDsKKworc3RhcnRpbmcgcGVybXV0YXRpb246 IGIxX2JlZ2luIGIxX3NuYXAgYjJfdXBkYXRlIGIyX3ZhY3V1bSBiMV9zbmFwIGIxX2NvbW1p dCBiM19zZXEKK3N0ZXAgYjFfYmVnaW46IEJFR0lOOworc3RlcCBiMV9zbmFwOiBTRUxFQ1Qg aWQsIHYgRlJPTSBoaWIgV0hFUkUgdiA9IDQwMDsKK2lkfCAgdgorLS0rLS0tCisgMXw0MDAK KygxIHJvdykKKworc3RlcCBiMl91cGRhdGU6IFVQREFURSBoaWIgU0VUIHYgPSA1MDAgV0hF UkUgaWQgPSAxOworc3RlcCBiMl92YWN1dW06IFZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYp IGhpYjsKK3N0ZXAgYjFfc25hcDogU0VMRUNUIGlkLCB2IEZST00gaGliIFdIRVJFIHYgPSA0 MDA7CitpZHx2CistLSstCisoMCByb3dzKQorCitzdGVwIGIxX2NvbW1pdDogQ09NTUlUOwor c3RlcCBiM19zZXE6IFNFTEVDVCBpZCwgdiBGUk9NIGhpYiBPUkRFUiBCWSBpZDsKK2lkfCAg dgorLS0rLS0tCisgMXw1MDAKKyAyfCAyMAorIDN8IDMwCisgNHwgNDAKKyA1fCA1MAorKDUg cm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogYjFfYmVnaW4gYjJfdXBkYXRlIGIx X3NuYXAgYjJfdmFjdXVtIGIxX3NuYXAgYjFfY29tbWl0IGIzX3NlcQorc3RlcCBiMV9iZWdp bjogQkVHSU47CitzdGVwIGIyX3VwZGF0ZTogVVBEQVRFIGhpYiBTRVQgdiA9IDUwMCBXSEVS RSBpZCA9IDE7CitzdGVwIGIxX3NuYXA6IFNFTEVDVCBpZCwgdiBGUk9NIGhpYiBXSEVSRSB2 ID0gNDAwOworaWR8dgorLS0rLQorKDAgcm93cykKKworc3RlcCBiMl92YWN1dW06IFZBQ1VV TSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpYjsKK3N0ZXAgYjFfc25hcDogU0VMRUNUIGlkLCB2 IEZST00gaGliIFdIRVJFIHYgPSA0MDA7CitpZHx2CistLSstCisoMCByb3dzKQorCitzdGVw IGIxX2NvbW1pdDogQ09NTUlUOworc3RlcCBiM19zZXE6IFNFTEVDVCBpZCwgdiBGUk9NIGhp YiBPUkRFUiBCWSBpZDsKK2lkfCAgdgorLS0rLS0tCisgMXw1MDAKKyAyfCAyMAorIDN8IDMw CisgNHwgNDAKKyA1fCA1MAorKDUgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNv bGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRp b25fc2NoZWR1bGUKaW5kZXggYjhlYmU5MjU1M2MuLmU5YWZiNDgxOTllIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0 L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKQEAgLTEyOCwzICsxMjgsNCBAQCB0ZXN0 OiBtYXR2aWV3LXdyaXRlLXNrZXcKIHRlc3Q6IGxvY2stbm93YWl0CiB0ZXN0OiBmb3ItcG9y dGlvbi1vZgogdGVzdDogZGRsLWRlcGVuZGVuY3ktbG9ja2luZwordGVzdDogaG90X2luZGV4 ZWRfYWR2ZXJzYXJpYWwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9o b3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5zcGVjIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNz L2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjY0NzA1YmYzN2UwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLnNwZWMKQEAgLTAs MCArMSwxMjMgQEAKKyMgQWR2ZXJzYXJpYWwgY29ycmVjdG5lc3MgdGVzdHMgZm9yIEhPVC1p bmRleGVkIChTSVUpIHVwZGF0ZXMuCisjCisjIEVhY2ggcGVybXV0YXRpb24gcGlucyBhIGNh c2UgdGhhdCB0aGUgbWlkLWNoYWluLXBvaW50aW5nIGludmFyaWFudCBtdXN0CisjIHNhdGlz Znk6IGFuIGluZGV4IGVudHJ5IHBvaW50cyBhdCB0aGUgaGVhcC1vbmx5IHZlcnNpb24gd2hv c2Uga2V5IGl0CisjIG1hdGNoZWQsIGFuZCBhIGNoYWluIHdhbGsgdGhhdCBjcm9zc2VzIGEg SE9ULWluZGV4ZWQgaG9wIGRyb3BzIHRoZSBhcnJpdmluZworIyBlbnRyeSB3aGVuIHRoZSBj cm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgb3ZlcmxhcHMgdGhlIGluZGV4J3Mga2V5IGNvbHVt bnMKKyMgKG5vIGtleSBjb21wYXJpc29uKS4gIFRoZXNlIGFyZQorIyBleGFjdGx5IHRoZSBj YXNlcyB0aGF0IGhpc3RvcmljYWxseSBicm9rZSB3cml0ZS1hbXBsaWZpY2F0aW9uLXJlZHVj dGlvbgorIyBkZXNpZ25zLgorCitzZXR1cAoreworICAgIENSRUFURSBUQUJMRSBoaWEgKGlk IGludCBQUklNQVJZIEtFWSwgayBpbnQsIHBhZCB0ZXh0KSBXSVRIIChmaWxsZmFjdG9yID0g NDApOworICAgIENSRUFURSBJTkRFWCBoaWFfayBPTiBoaWEoayk7CisgICAgQ1JFQVRFIFRB QkxFIGhpdSAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgcGFkIHRleHQpIFdJVEggKGZp bGxmYWN0b3IgPSA0MCk7CisgICAgQ1JFQVRFIFVOSVFVRSBJTkRFWCBoaXVfayBPTiBoaXUo ayk7CisgICAgSU5TRVJUIElOVE8gaGlhIFZBTFVFUyAoMSwgMTAsIHJlcGVhdCgneCcsIDQw KSk7CisgICAgSU5TRVJUIElOVE8gaGl1IFZBTFVFUyAoMSwgMTAsIHJlcGVhdCgneCcsIDQw KSk7CisKKyAgICAtLSBUYWJsZSBmb3IgdGhlIGNvbmN1cnJlbnQtY29sbGFwc2UgcmVhZGVy LWNvbnNpc3RlbmN5IGNhc2UgKDcpLgorICAgIENSRUFURSBUQUJMRSBoaWIgKGlkIGludCBQ UklNQVJZIEtFWSwgdiBpbnQsIHBhZCB0ZXh0KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor ICAgIENSRUFURSBJTkRFWCBoaWJfdl9pZHggT04gaGliKHYpOworICAgIElOU0VSVCBJTlRP IGhpYiBTRUxFQ1QgZywgZyAqIDEwLCByZXBlYXQoJ3gnLCA1MCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNSkgZzsKKyAgICBVUERBVEUgaGliIFNFVCB2ID0gMTAwIFdIRVJFIGlkID0g MTsKKyAgICBVUERBVEUgaGliIFNFVCB2ID0gMjAwIFdIRVJFIGlkID0gMTsKKyAgICBVUERB VEUgaGliIFNFVCB2ID0gMzAwIFdIRVJFIGlkID0gMTsKKyAgICBVUERBVEUgaGliIFNFVCB2 ID0gNDAwIFdIRVJFIGlkID0gMTsKK30KKwordGVhcmRvd24KK3sKKyAgICBEUk9QIFRBQkxF IGhpYTsKKyAgICBEUk9QIFRBQkxFIGhpdTsKKyAgICBEUk9QIFRBQkxFIGhpYjsKK30KKwor c2Vzc2lvbiBzMQorc3RlcCBzMV9iZWdpbiAgIHsgQkVHSU47IH0KKyMgQ3ljbGUgdGhlIGlu ZGV4ZWQga2V5IGF3YXkgYW5kIGJhY2s6IDEwIC0+IDIwIC0+IDEwLiAgVGhlIG9yaWdpbmFs IDEwIGxlYWYKKyMgYW5kIHRoZSBmcmVzaGx5LWluc2VydGVkIDEwIGxlYWYgYm90aCByZXNv bHZlIHRvIHRoZSBsaXZlIHR1cGxlOyB0aGUgY2hhaW4KKyMgd2FsayBtdXN0IGRyb3AgdGhl IHN0YWxlIG9uZSBzbyBhIGxvb2t1cCByZXR1cm5zIHRoZSByb3cgZXhhY3RseSBvbmNlLgor c3RlcCBzMV9jeWNsZSAgIHsgVVBEQVRFIGhpYSBTRVQgayA9IDIwIFdIRVJFIGlkID0gMTsg VVBEQVRFIGhpYSBTRVQgayA9IDEwIFdIRVJFIGlkID0gMTsgfQorIyBBIHNpbmdsZSBIT1Qt aW5kZXhlZCB1cGRhdGUgb24gaGlhLCB1c2VkIGJ5IHRoZSBhYm9ydCBhbmQgcmVhZGVyIGNh c2VzLgorc3RlcCBzMV91cGQyMCAgIHsgVVBEQVRFIGhpYSBTRVQgayA9IDIwIFdIRVJFIGlk ID0gMTsgfQorIyBBIEhPVC1pbmRleGVkIHVwZGF0ZSBvbiB0aGUgVU5JUVVFLWluZGV4ZWQg dGFibGUsIGZyZWVpbmcga2V5IDEwIGZvciBrPTIwLgorc3RlcCBzMV91dXBkMjAgIHsgVVBE QVRFIGhpdSBTRVQgayA9IDIwIFdIRVJFIGlkID0gMTsgfQorc3RlcCBzMV9jb21taXQgIHsg Q09NTUlUOyB9CitzdGVwIHMxX2Fib3J0ICAgeyBST0xMQkFDSzsgfQorCitzZXNzaW9uIHMy CisjIEluZGV4LW9ubHkgbG9va3VwcyAoZm9yY2VkKSB0aGF0IGV4ZXJjaXNlIHRoZSBzdGFs ZS1sZWFmIHJlY2hlY2suCitzdGVwIHMyX25vc2VxICAgeyBTRVQgZW5hYmxlX3NlcXNjYW4g PSBvZmY7IH0KK3N0ZXAgczJfZXExMCAgICB7IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVS RSBrID0gMTA7IH0KK3N0ZXAgczJfZXEyMCAgICB7IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBX SEVSRSBrID0gMjA7IH0KK3N0ZXAgczJfcmFuZ2UgICB7IFNFTEVDVCBpZCwgayBGUk9NIGhp YSBXSEVSRSBrID49IDUgT1JERVIgQlkgazsgfQorIyBDb25jdXJyZW50IHVuaXF1ZSBpbnNl cnQgb2YgdGhlIGtleSBzMSBpcyBmcmVlaW5nICgxMCkgYW5kIG9mIHRoZSBrZXkgczEgaXMK KyMgdGFraW5nICgyMCk7IF9idF9jaGVja191bmlxdWUgbXVzdCBmaWx0ZXIgdGhlIHN0YWxl IDEwIGxlYWYgYnV0IHN0aWxsCisjIGNvbmZsaWN0IG9uIHRoZSBsaXZlIGtleS4KK3N0ZXAg czJfaW5zMTAgICB7IElOU0VSVCBJTlRPIGhpdSBWQUxVRVMgKDIsIDEwLCByZXBlYXQoJ3kn LCA0MCkpOyB9CitzdGVwIHMyX2luczIwICAgeyBJTlNFUlQgSU5UTyBoaXUgVkFMVUVTICgz LCAyMCwgcmVwZWF0KCd6JywgNDApKTsgfQorIyBNb3ZlIHRoZSBpbmRleGVkIGtleSB3ZWxs IGF3YXkgZnJvbSAxMCAodHdvIEhPVC1pbmRleGVkIGhvcHMpIGFuZCBmb3JjZSBhbgorIyBp bmRleCBzY2FuIG9uIHRoZSBuZXcga2V5LiAgVGhhdCBzY2FuIHJlYWNoZXMgdGhlIGxpdmUg dHVwbGUgdGhyb3VnaCB0aGUKKyMgc3RhbGUgMTAgbGVhZiBhbmQgbWF5IHRyeSB0byBraWxs IGl0IGZvciBibG9hdCByZWNsYWltLgorc3RlcCBzMl90bzMwICAgIHsgVVBEQVRFIGhpYSBT RVQgayA9IDIwIFdIRVJFIGlkID0gMTsgVVBEQVRFIGhpYSBTRVQgayA9IDMwIFdIRVJFIGlk ID0gMTsgfQorc3RlcCBzMl9zY2FuMzAgIHsgU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOyBT RUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hFUkUgayA9IDMwOyB9CisKKyMgUmVhZGVyIGhvbGRp bmcgYW4gb2xkZXIgUkVQRUFUQUJMRSBSRUFEIHNuYXBzaG90IHRoYXQgc3RpbGwgc2VlcyBr PTEwLgorc2Vzc2lvbiBzMworc3RlcCBzM19iZWdpbiAgIHsgQkVHSU4gSVNPTEFUSU9OIExF VkVMIFJFUEVBVEFCTEUgUkVBRDsgU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOyB9CitzdGVw IHMzX2VxMTAgICAgeyBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hFUkUgayA9IDEwOyB9Citz dGVwIHMzX2NvbW1pdCAgeyBDT01NSVQ7IH0KKworc2Vzc2lvbiBiMQorc3RlcCBiMV9iZWdp biAgIHsgQkVHSU47IH0KKyMgUmVhZGVyIHRha2VzIGEgc25hcHNob3QgYW5kIHJlYWRzIHRo ZSBjaGFpbiB2aWEgdGhlIHNlY29uZGFyeSBpbmRleC4KK3N0ZXAgYjFfc25hcCAgICB7IFNF TEVDVCBpZCwgdiBGUk9NIGhpYiBXSEVSRSB2ID0gNDAwOyB9CitzdGVwIGIxX2NvbW1pdCAg eyBDT01NSVQ7IH0KKworc2Vzc2lvbiBiMgorIyBGb3JjZSBwcnVuZS9jb2xsYXBzZTogYW5v dGhlciBIT1QtaW5kZXhlZCB1cGRhdGUgcGx1cyBhIFZBQ1VVTSB0aGF0CisjIGNvbGxhcHNl cyB0aGUgZGVhZCBjaGFpbiBtZW1iZXJzIHRvIExQX1JFRElSRUNUIGZvcndhcmRlcnMuCitz dGVwIGIyX3VwZGF0ZSAgeyBVUERBVEUgaGliIFNFVCB2ID0gNTAwIFdIRVJFIGlkID0gMTsg fQorc3RlcCBiMl92YWN1dW0gIHsgVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGliOyB9 CisKK3Nlc3Npb24gYjMKK3N0ZXAgYjNfc2VxICAgICB7IFNFTEVDVCBpZCwgdiBGUk9NIGhp YiBPUkRFUiBCWSBpZDsgfQorCisjIDEuIGEtPmItPmEgY3ljbGU6IGV4YWN0bHkgb25lIHJv dyBmb3IgdGhlIGN5Y2xlZC1iYWNrIGtleSwgbm9uZSBmb3IgdGhlCisjICAgIHRyYW5zaWVu dCBrZXkuCitwZXJtdXRhdGlvbiBzMl9ub3NlcSBzMV9jeWNsZSBzMl9lcTEwIHMyX2VxMjAK KworIyAyLiBSYW5nZSBzY2FuIHJldHVybnMgdGhlIGxpdmUgcm93IGV4YWN0bHkgb25jZSBh Y3Jvc3MgdGhlIHN0YWxlK2ZyZXNoCisjICAgIGxlYXZlcyBsZWZ0IGJ5IHRoZSBjeWNsZS4K K3Blcm11dGF0aW9uIHMyX25vc2VxIHMxX2N5Y2xlIHMyX3JhbmdlCisKKyMgMy4gQWJvcnQg b2YgYSBIT1QtaW5kZXhlZCB1cGRhdGU6IHRoZSBuZXcga2V5IG11c3Qgbm90IHN1cmZhY2Ug YW5kIHRoZSBvbGQKKyMgICAga2V5IG11c3Qgc3RpbGwgcmVzb2x2ZSB0byB0aGUgKHJlc3Rv cmVkKSBsaXZlIHR1cGxlLgorcGVybXV0YXRpb24gczJfbm9zZXEgczFfYmVnaW4gczFfdXBk MjAgczFfYWJvcnQgczJfZXEyMCBzMl9lcTEwCisKKyMgNC4gQ29uY3VycmVudCB1bmlxdWUg aW5zZXJ0IHdoaWxlIGEgSE9ULWluZGV4ZWQgdXBkYXRlIGlzIGluIGZsaWdodC4gIEFuCisj ICAgIGluc2VydCBvZiB0aGUga2V5IHMxIGlzIGZyZWVpbmcgKDEwKSBtdXN0IHdhaXQgb24g dGhlIHVuY29tbWl0dGVkIHVwZGF0ZXIsCisjICAgIHRoZW4gc3VjY2VlZCBvbmNlIGl0IGNv bW1pdHMgKHRoZSBzdGFsZSAxMCBsZWFmIGlzIGZpbHRlcmVkKS4KK3Blcm11dGF0aW9uIHMx X2JlZ2luIHMxX3V1cGQyMCBzMl9pbnMxMCBzMV9jb21taXQKKworIyA1LiBBZnRlciB0aGUg dXBkYXRlIGNvbW1pdHMsIHRoZSBmcmVlZCBrZXkgKDEwKSBpbnNlcnRzIGNsZWFubHkgYW5k IHRoZQorIyAgICB0YWtlbiBrZXkgKDIwKSBjb25mbGljdHMgLS0gdGhlIGxpdmUgbGVhZiBp cyBob25vdXJlZCwgdGhlIHN0YWxlIG9uZSBpcyBub3QuCitwZXJtdXRhdGlvbiBzMV9iZWdp biBzMV91dXBkMjAgczFfY29tbWl0IHMyX2luczEwCitwZXJtdXRhdGlvbiBzMV9iZWdpbiBz MV91dXBkMjAgczFfY29tbWl0IHMyX2luczIwCisKKyMgNi4gU25hcHNob3Qgc2FmZXR5IG9m IHN0YWxlLWxlYWYgcmVjbGFpbS4gIEFuIG9sZGVyIFJFUEVBVEFCTEUgUkVBRCByZWFkZXIK KyMgICAgc3RpbGwgc2VlcyBrPTEwOyBhIGNvbmN1cnJlbnQgc2Vzc2lvbiB0aGVuIG1vdmVz IHRoZSBrZXkgdG8gMzAgYW5kIHJ1bnMgYW4KKyMgICAgaW5kZXggc2NhbiB0aGF0IHJlYWNo ZXMgdGhlIGxpdmUgdHVwbGUgdGhyb3VnaCB0aGUgc3RhbGUgMTAgbGVhZiBhbmQgbWF5Cisj ICAgIHRyeSB0byByZWNsYWltIGl0LiAgVGhlIHJlY2xhaW0gaXMgZ2F0ZWQgb24gdGhlIHNr aXBwZWQgdmVyc2lvbnMgYmVpbmcKKyMgICAgZGVhZCB0byBhbGwgdHJhbnNhY3Rpb25zLCB3 aGljaCBzMydzIGhlbGQgc25hcHNob3QgcHJldmVudHMsIHNvIHMzIG11c3QKKyMgICAgc3Rp bGwgZmluZCB0aGUgcm93IGJ5IGs9MTAgYWZ0ZXIgdGhlIHNjYW4uCitwZXJtdXRhdGlvbiBz M19iZWdpbiBzM19lcTEwIHMyX3RvMzAgczJfc2NhbjMwIHMzX2VxMTAgczNfY29tbWl0CisK KyMgNy4gUmVhZGVyIGNvbnNpc3RlbmN5IGFjcm9zcyBhIGNvbmN1cnJlbnQgcHJ1bmUvY29s bGFwc2UuICBzMSdzIGluZGV4IHNjYW4sCisjICAgIGNyb3NzaW5nIHRoZSBjb2xsYXBzZWQg Y2hhaW4gYWZ0ZXIgdGhlIFZBQ1VVTSwgbXVzdCBzdGlsbCByZXR1cm4gdGhlIHJvdworIyAg ICB2aWEgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcDsgdGhlIHF1ZXJ5IG11c3Qgbm90 IGVycm9yIGFuZCB0aGUgcm93IGNvdW50CisjICAgIG11c3QgYmUgY29uc2lzdGVudC4KK3Bl cm11dGF0aW9uIGIxX2JlZ2luIGIxX3NuYXAgYjJfdXBkYXRlIGIyX3ZhY3V1bSBiMV9zbmFw IGIxX2NvbW1pdCBiM19zZXEKK3Blcm11dGF0aW9uIGIxX2JlZ2luIGIyX3VwZGF0ZSBiMV9z bmFwIGIyX3ZhY3V1bSBiMV9zbmFwIGIxX2NvbW1pdCBiM19zZXEKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlY292ZXJ5L01ha2VmaWxlIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvTWFrZWZpbGUK aW5kZXggZDQxYWFhZjhhZTEuLjI3MzZjYWExYTFiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWNvdmVyeS9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS9NYWtlZmlsZQpAQCAt OSw3ICs5LDggQEAKICMKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUVYVFJBX0lOU1RBTEw9 Y29udHJpYi9wZ19wcmV3YXJtIFwKK0VYVFJBX0lOU1RBTEw9Y29udHJpYi9hbWNoZWNrIFwK Kwljb250cmliL3BnX3ByZXdhcm0gXAogCWNvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzIFwK IAljb250cmliL3Rlc3RfZGVjb2RpbmcgXAogCXNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQgYi9z cmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZAppbmRleCBhZDBkODVmNDE4OS4uOGRiY2Rh MzU3NzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCisrKyBi L3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCkBAIC02Myw2ICs2Myw3IEBAIHRlc3Rz ICs9IHsKICAgICAgICd0LzA1Ml9jaGVja3BvaW50X3NlZ21lbnRfbWlzc2luZy5wbCcsCiAg ICAgICAndC8wNTNfc3RhbmRieV9sb2dpbl9ldmVudF90cmlnZ2VyLnBsJywKICAgICAgICd0 LzA1NF91bmxvZ2dlZF9zZXF1ZW5jZV9wcm9tb3Rpb24ucGwnLAorICAgICAgJ3QvMDU1X2hv dF9pbmRleGVkX3JlY292ZXJ5LnBsJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTVfaG90X2luZGV4ZWRfcmVjb3ZlcnkucGwgYi9zcmMv dGVzdC9yZWNvdmVyeS90LzA1NV9ob3RfaW5kZXhlZF9yZWNvdmVyeS5wbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjZmMDc3YjMxNTkKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1NV9ob3RfaW5kZXhlZF9yZWNvdmVyeS5w bApAQCAtMCwwICsxLDE0OSBAQAorCisjIENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBDcmFzaC1yZWNvdmVyeSBjb3ZlcmFn ZSBmb3IgSE9ULWluZGV4ZWQgKEhPVC9TSVUpIGNoYWlucy4KKyMKKyMgQnVpbGQgYSBIT1Qt aW5kZXhlZCBjaGFpbiBieSByZXBlYXRlZGx5IFVQREFURWluZyBhIHNpbmdsZSByb3csCisj IGNoYW5naW5nIG9uZSBpbmRleGVkIChub24tUEspIGNvbHVtbiBlYWNoIHRpbWUuICBGb3Jj ZSBhIHBydW5lIHNvIHRoZQorIyBkZWFkIGNoYWluIG1lbWJlcnMgY29sbGFwc2UgdG8gTFBf UkVESVJFQ1QgZm9yd2FyZGVycyAod2l0aCB0aGUgbGl2ZQorIyBIT1QtaW5kZXhlZCB2ZXJz aW9uIHZpc2libGUgdmlhIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzIGFzCisjIG5f aG90X2luZGV4ZWQgPiAwKS4gIENyYXNoLXJlY292ZXIgdGhlIHByaW1hcnkgd2l0aCBzdG9w KCdpbW1lZGlhdGUnKQorIyBzbyB0aGUgY29sbGFwc2VkIGNoYWluIGNvbWVzIGJhY2sgZnJv bSBXQUwgb3IgZnJvbSB0aGUgRlBJLiAgQWZ0ZXIKKyMgcmVzdGFydCwgdmVyaWZ5OgorIwor IyAgIDEuIGFuIGluZGV4IGxvb2t1cCB3YWxraW5nIHRoZSBjaGFpbiByZXR1cm5zIHRoZSBs aXZlIHR1cGxlLAorIyAgIDIuIHBnX2FtY2hlY2sgKHZlcmlmeV9oZWFwYW0pIHJlcG9ydHMg bm8gZXJyb3JzIG9uIHRoZSByZWxhdGlvbiwKKyMgICAzLiBWQUNVVU0gcmVjbGFpbXMgdGhl IGNvbGxhcHNlZCBjaGFpbiAobl9ob3RfaW5kZXhlZCBkcm9wcyB0byAwKS4KKyMKK3VzZSBz dHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0 OjpNb3JlOworCitteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygn cHJpbWFyeScpOworJG5vZGUtPmluaXQ7CisjIERpc2FibGUgYXV0b3ZhY3V1bSB0byBrZWVw IHRoZSBjaGFpbiBzaGFwZSBzdGFibGUgdXAgdG8gdGhlIGV4cGxpY2l0CisjIHBydW5lIHdl IHRyaWdnZXIgYmVsb3cuCiskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics IHF7YXV0b3ZhY3V1bSA9IG9mZgord2FsX2NvbnNpc3RlbmN5X2NoZWNraW5nID0gJ2FsbCd9 KTsKKyRub2RlLT5zdGFydDsKKworIyBhbWNoZWNrICh2ZXJpZnlfaGVhcGFtKSBpcyBzaGlw cGVkIGFzIGEgY29udHJpYiBleHRlbnNpb247IHdlIHVzZSBpdAorIyBmcm9tIFNRTCBhZnRl ciB0aGUgY3Jhc2gtcmVzdGFydCBjeWNsZS4KKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcXtDUkVBVEUgRVhURU5TSU9OIGFtY2hlY2t9KTsKKworIyBXaWRlLWlzaCB0YWJsZTog UEsgKyBmb3VyIGluZGV4ZWQgY29sdW1ucyBwbHVzIGEgbm9uLWluZGV4ZWQgcGF5bG9hZAor IyBzbyBIT1QtaW5kZXhlZCB1cGRhdGVzIGhhdmUgd2lkdGggdG8gYW1vcnRpc2UuICBmaWxs ZmFjdG9yID0gNTAga2VlcHMKKyMgZnJlZSBzcGFjZSBvbi1wYWdlIGZvciBIT1QtaW5kZXhl ZCBjb250aW51YXRpb25zLgorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCUNS RUFURSBUQUJMRSBoaV9yZWNvdiAoCisJCWlkICAgICAgaW50IFBSSU1BUlkgS0VZLAorCQlj MSAgICAgIGludCwKKwkJYzIgICAgICBpbnQsCisJCWMzICAgICAgaW50LAorCQljNCAgICAg IGludCwKKwkJcGF5bG9hZCB0ZXh0CisJKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCUNS RUFURSBJTkRFWCBoaV9yZWNvdl9jMSBPTiBoaV9yZWNvdihjMSk7CisJQ1JFQVRFIElOREVY IGhpX3JlY292X2MyIE9OIGhpX3JlY292KGMyKTsKKwlDUkVBVEUgSU5ERVggaGlfcmVjb3Zf YzMgT04gaGlfcmVjb3YoYzMpOworCUNSRUFURSBJTkRFWCBoaV9yZWNvdl9jNCBPTiBoaV9y ZWNvdihjNCk7CisJSU5TRVJUIElOVE8gaGlfcmVjb3YgVkFMVUVTICgxLCAxMDAsIDIwMCwg MzAwLCA0MDAsICdwYXlsb2FkJyk7Cit9KTsKKworIyBCdWlsZCBhIEhPVC1pbmRleGVkIGNo YWluOiBmaXZlIFVQREFURXMsIGVhY2ggdG91Y2hpbmcgb25lIGluZGV4ZWQKKyMgY29sdW1u LiAgRXZlcnkgVVBEQVRFIGtlZXBzIHRoZSBuZXcgdmVyc2lvbiBvbi1wYWdlIGFuZCBwbGFu dHMgYSBmcmVzaAorIyBpbmRleCBlbnRyeSBiZWNhdXNlIGMxIGlzIGluZGV4ZWQgYW5kIGNo YW5nZWQuICBVc2UgYSBTUUwgdHJhbnNhY3Rpb24tCisjIHJhbmdlIGxvb3Agc28gZWFjaCBV UERBVEUgaXMgaXRzIG93biB4YWN0ICh4bWluL3htYXggZGlzdGluY3QpLgorZm9yIG15ICRp ICgxIC4uIDUpCit7CisJbXkgJG5ld3ZhbCA9IDEwMCArICRpOworCSRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSBoaV9yZWNvdiBTRVQgYzEgPSAkbmV3dmFsIFdI RVJFIGlkID0gMSIpOworfQorCitteSAkcHJlX3BydW5lID0gJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXF7U0VMRUNUIG5faG90X2luZGV4ZWQgRlJPTSBwZ19yZWxhdGlvbl9o b3RfaW5kZXhlZF9zdGF0cygnaGlfcmVjb3YnKX0pOworY21wX29rKCRwcmVfcHJ1bmUsICc+ JywgMCwKKwknSE9ULWluZGV4ZWQgY2hhaW4gaGFzIGF0IGxlYXN0IG9uZSBsaXZlIEhPVC1p bmRleGVkIHZlcnNpb24gYmVmb3JlIHBydW5lJyk7CisKKyMgRm9yY2UgYSBwcnVuZS4gIFRo ZSBjaGFpbiBoYXMgZGVhZCBoZWFwLW9ubHkgbWVtYmVycyBmcm9tIHRoZSBlYXJseQorIyBV UERBVEVzICh0aGVpciB4bWlucyBhcmUgbm93IGNvbW1pdHRlZCBhbmQgYmVsb3cgdGhlIHNu YXBzaG90IGhvcml6b24pLgorIyBBIFNFTEVDVCB1bmRlciBkZWZhdWx0IGlzb2xhdGlvbiB2 aXNpdHMgdGhlIHBhZ2U7IHVuZGVyCisjIGRlZmF1bHRfc3RhdGlzdGljc190YXJnZXQgZXRj LiB0aGF0J3Mgbm90IGVub3VnaCBvbiBpdHMgb3duIHRvIHRyaWdnZXIKKyMgcHJ1bmUuICBU aGUgcmVsaWFibGUgd2F5IHRvIGRyaXZlIG9wcG9ydHVuaXN0aWMgcHJ1bmUgaXMgYSBxdWVy eSB0aGF0CisjIGV4ZXJjaXNlcyB0aGUgaGVhcF9wYWdlX3BydW5lX29wdCBwYXRoLCB3aGlj aCBmaXJlcyBmcm9tIGFuIGluZGV4c2NhbgorIyB0aGF0IGZpbmRzIHRoZSBwYWdlIG5vbi1h bGwtdmlzaWJsZS4gIFVzZSBhIHNlcXVlbnRpYWwgc2NhbiBwbHVzIGEKKyMgc3Vic2VxdWVu dCBVUERBVEUgdGhhdCBpdHNlbGYgbG9va3MgZm9yIGZyZWUgc3BhY2UgKGhlYXBfdXBkYXRl IGNhbGxzCisjIGhlYXBfcGFnZV9wcnVuZV9vcHQpLgorJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxeworCVNFVCBlbmFibGVfaW5kZXhzY2FuID0gb2ZmOworCVNFTEVDVCBjb3Vu dCgqKSBGUk9NIGhpX3JlY292OworCVVQREFURSBoaV9yZWNvdiBTRVQgcGF5bG9hZCA9ICdw cnVuZWQnIFdIRVJFIGlkID0gMTsKK30pOworCisjIFJlYWQgdGhlIGNoYWluIHN0YXRlIGFm dGVyIHRoZSBwcnVuZTogdGhlIGxpdmUgSE9ULWluZGV4ZWQgdmVyc2lvbgorIyByZW1haW5z IHdoaWxlIGRlYWQgbWVtYmVycyBjb2xsYXBzZSB0byBMUF9SRURJUkVDVCBmb3J3YXJkZXJz LgorbXkgJHBvc3RfcHJ1bmUgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtT RUxFQ1Qgbl9ob3RfaW5kZXhlZCBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRz KCdoaV9yZWNvdicpfSk7CitjbXBfb2soJHBvc3RfcHJ1bmUsICc+JywgMCwKKwknbGl2ZSBI T1QtaW5kZXhlZCB2ZXJzaW9uIHN1cnZpdmVzIG9wcG9ydHVuaXN0aWMgcHJ1bmUnKTsKKwor IyBDcmFzaC1yZXN0YXJ0LiAgc3RvcCgnaW1tZWRpYXRlJykgaXMgdGhlIHN0YW5kYXJkICJr aWxsIC05IiBzaW11bGF0aW9uCisjIHVzZWQgZWxzZXdoZXJlIGluIHNyYy90ZXN0L3JlY292 ZXJ5Ly4gIFdlIGludGVudGlvbmFsbHkgZG8gTk9UIGlzc3VlIGEKKyMgQ0hFQ0tQT0lOVCBm aXJzdDogdGhhdCB3b3VsZCBhZHZhbmNlIHRoZSByZWRvIHBvaW50IHBhc3QgdGhlIEhPVC1p bmRleGVkCisjIFVQREFURS9wcnVuZSByZWNvcmRzIGFuZCBsZWF2ZSBub3RoaW5nIGZvciBy ZWNvdmVyeSB0byByZXBsYXkuICBDcmFzaGluZworIyB3aXRob3V0IGEgY2hlY2twb2ludCBm b3JjZXMgc3RhcnR1cCByZWRvIHRvIHJlY29uc3RydWN0IHRoZSBjb2xsYXBzZWQKKyMgY2hh aW4gZnJvbSBXQUwsIGFuZCB3YWxfY29uc2lzdGVuY3lfY2hlY2tpbmcgPSAnYWxsJyAoc2V0 IGFib3ZlKSBjb21wYXJlcworIyBlYWNoIHJlcGxheWVkIHBhZ2UgYWdhaW5zdCBpdHMgZnVs bC1wYWdlIGltYWdlLCBjYXRjaGluZyBhbnkgZGl2ZXJnZW5jZQorIyBiZXR3ZWVuIHRoZSB3 cml0ZSBwYXRoIGFuZCB0aGUgcmVkbyBwYXRoLgorJG5vZGUtPnN0b3AoJ2ltbWVkaWF0ZScp OworJG5vZGUtPnN0YXJ0OworCisjIDEuIENoYWluIHdhbGsgdmlhIHRoZSBpbmRleGVkIGNv bHVtbiBvbiB0aGUgbGl2ZSByb3cgcmV0dXJucyB0aGUKKyMgICAgY29ycmVjdCAoYW5kIG9u bHkgdGhlIGNvcnJlY3QpIHR1cGxlLiAgYzEgPSAxMDUgd2FzIHRoZSBsYXN0CisjICAgIFVQ REFURSwgc28gdGhlIGxpdmUgdHVwbGUgaGFzIGMxID0gMTA1IGFuZCBjMi4uYzQgdW5jaGFu Z2VkLgorbXkgJGxpdmUgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJU0VU IGVuYWJsZV9zZXFzY2FuID0gb2ZmOworCVNFTEVDVCBpZCwgYzEsIGMyLCBjMywgYzQsIHBh eWxvYWQgRlJPTSBoaV9yZWNvdiBXSEVSRSBjMSA9IDEwNTsKK30pOworaXMoJGxpdmUsICIx fDEwNXwyMDB8MzAwfDQwMHxwcnVuZWQiLAorCSdpbmRleCBsb29rdXAgb24gY2hhaW4gcmV0 dXJucyB0aGUgcG9zdC1wcnVuZSBsaXZlIHR1cGxlJyk7CisKKyMgT2xkZXIgYzEgdmFsdWVz IGFyZSBub3QgcmVhY2hhYmxlOiBldmVyeSBzdGFsZSBidHJlZSBlbnRyeSB0aGF0CisjIGNo YWluLXJlc29sdmVzIGFjcm9zcyBhIEhPVC9TSVUgaG9wIG11c3QgYmUgZHJvcHBlZCBieSB0 aGUgcmVhZC1zaWRlCisjIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcC4KK215ICRzdGFsZV9j b3VudCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBjb3VudCgq KSBGUk9NIGhpX3JlY292IFdIRVJFIGMxID0gMTAwfSk7Citpcygkc3RhbGVfY291bnQsICcw JywKKwknc3RhbGUgYnRyZWUgZW50cmllcyBhcmUgZmlsdGVyZWQgYnkgdGhlIGNyb3NzZWQt YXR0cmlidXRlIGJpdG1hcCcpOworCisjIDIuIHZlcmlmeV9oZWFwYW0gcmVwb3J0cyBubyBl cnJvcnMgb24gdGhlIHJlbGF0aW9uIChza2lwX29wdGlvbiA9CisjICAgICdhbGwtZnJvemVu JyBpcyB0aGUgZGVmYXVsdDsgd2Ugd2FudCB0byBzY2FuIGV2ZXJ5dGhpbmcpLgorbXkgJGhl YXBjaGVjayA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwlTRUxFQ1QgY291 bnQoKikgRlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV9yZWNvdicsCisJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBza2lwIDo9ICdub25lJywKKwkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNoZWNrX3RvYXN0IDo9IGZhbHNlKTsKK30pOworaXMoJGhl YXBjaGVjaywgJzAnLAorCSd2ZXJpZnlfaGVhcGFtIHJlcG9ydHMgemVybyBlcnJvcnMgYWZ0 ZXIgY3Jhc2ggcmVjb3ZlcnknKTsKKworIyAzLiBSZWNsYW1hdGlvbjogYWZ0ZXIgdGhlIGxp dmUgcm93IGlzIGRlbGV0ZWQsIHR3byBWQUNVVU0gKEZSRUVaRSkKKyMgICAgcGFzc2VzIGRy aXZlIHBydW5lIHRvIHJldmlzaXQgdGhlIHBhZ2UgYW5kIHJlY2xhaW0gdGhlIG5vdy1mdWxs eS1kZWFkCisjICAgIGNvbGxhcHNlZCBjaGFpbiAodGhlIGZpcnN0IHJlbW92ZXMgdGhlIGRl YWQgcm93J3MgaW5kZXggZW50cmllcyBhbmQKKyMgICAgcmVkdWNlcyBpdHMgTFA7IHRoZSBz ZWNvbmQgcmVjbGFpbXMgdGhlIHVucmVmZXJlbmNlZCBtZW1iZXJzIGFuZAorIyAgICByZS1w b2ludHMgdGhlIHJlZGlyZWN0KS4gIEFmdGVyIHRoYXQsIG5faG90X2luZGV4ZWQgbXVzdCBi ZSB6ZXJvLgorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe0RFTEVURSBGUk9NIGhp X3JlY292IFdIRVJFIGlkID0gMX0pOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CXF7VkFDVVVNIChGUkVFWkUsIERJU0FCTEVfUEFHRV9TS0lQUElORykgaGlfcmVjb3Z9KTsK KyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1ZBQ1VVTSAoRlJFRVpFLCBESVNB QkxFX1BBR0VfU0tJUFBJTkcpIGhpX3JlY292fSk7CitteSAkZmluYWwgPSAkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1Qgbl9ob3RfaW5kZXhlZCBGUk9NIHBnX3Jl bGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9yZWNvdicpfSk7CitpcygkZmluYWwsICcw JywKKwkndHdvIFZBQ1VVTSAoRlJFRVpFKSBwYXNzZXMgYWZ0ZXIgREVMRVRFIHJlY2xhaW0g dGhlIGNoYWluIHBvc3QtcmVjb3ZlcnknKTsKKworJG5vZGUtPnN0b3A7CisKK2RvbmVfdGVz dGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfaW5k ZXhlZF91cGRhdGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X2luZGV4 ZWRfdXBkYXRlcy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LmE4YTdmZTM0NzllCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ob3RfaW5kZXhlZF91cGRhdGVzLm91dApAQCAtMCwwICsxLDE3MDYgQEAKKy0tCist LSBIT1RfSU5ERVhFRF9VUERBVEVTCistLSBUZXN0IEhPVC1pbmRleGVkIHVwZGF0ZSAoaG90 LWluZGV4ZWQpLCBha2EgSE9ULWluZGV4ZWQsIGJlaGF2aW91cgorLS0KKy0tIEV2ZXJ5IFVQ REFURSBpbiB0aGlzIGZpbGUgbW9kaWZpZXMgYXQgbGVhc3Qgb25lIG5vbi1zdW1tYXJpemlu ZworLS0gaW5kZXhlZCBhdHRyaWJ1dGUuICBPbiBhIHByZS1ob3QtaW5kZXhlZCBzZXJ2ZXIg YWxsIG9mIHRoZXNlIHdvdWxkIGJlCistLSBub24tSE9UOyBvbiB0aGUgaG90LWluZGV4ZWQg YnJhbmNoIGVhY2ggZWxpZ2libGUgdXBkYXRlIHN0YXlzIG9uLXBhZ2UgYW5kCistLSBpbnNl cnRzIGludG8gb25seSB0aGUgaW5kZXhlcyB3aG9zZSBhdHRyaWJ1dGVzIGFjdHVhbGx5IGNo YW5nZWQuCistLQorLS0gV2UgdmVyaWZ5IGZvdXIgdGhpbmdzOgorLS0gICAoQSkgcGdfc3Rh dCBjb3VudGVyczogSE9UIGFuZCBob3QtaW5kZXhlZCBjb3VudHMgaW5jcmVtZW50IGFzIGV4 cGVjdGVkCistLSAgIChCKSBpbmRleCBsb29rdXBzIHJldHVybiB0aGUgbmV3IHZhbHVlIGFu ZCBub3QgdGhlIHN0YWxlIHZhbHVlCistLSAgICAgICBmb3IgRVFVQUxJVFkgcXVlcmllcyAo dGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgdGVzdCBkcm9wcyBhCistLSAgICAgICBsZWFmIHdo b3NlIGNvdmVyZWQgYXR0cmlidXRlIGNoYW5nZWQgb24gdGhlIHdheSB0byB0aGUgbGl2ZSB0 dXBsZSkKKy0tICAgKEMpIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzIHJlcG9ydHMg dGhlIEhPVC1pbmRleGVkIHZlcnNpb25zIHdlIGV4cGVjdAorLS0gICAoRCkgKipSQU5HRS9J TkVRVUFMSVRZKiogcXVlcmllcyByZXR1cm4gdGhlIGNvcnJlY3QgbnVtYmVyIG9mCistLSAg ICAgICB0dXBsZXMgLS0gdGhpcyBpcyB0aGUgY2xhc3Mgb2YgYnVncyB3aGVyZSBhIHN0YWxl IGJ0cmVlCistLSAgICAgICBlbnRyeSdzIGtleSBpcyBzdGlsbCByZWFjaGFibGUgdmlhIGEg bG9vc2VyIHNjYW4ga2V5OyB0aGUKKy0tICAgICAgIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1h cCBkcm9wcyB0aGUgc3RhbGUgYXJyaXZhbCBiZWNhdXNlIHRoZSBpbmRleCdzCistLSAgICAg ICBhdHRyaWJ1dGUgY2hhbmdlZCBiZXR3ZWVuIHRoYXQgbGVhZidzIHRhcmdldCBhbmQgdGhl IGxpdmUgdHVwbGUKKy0tCitDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGFnZWlu c3BlY3Q7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBnZXRfaG90X2NvdW50KHJlbF9u YW1lIHRleHQpCitSRVRVUk5TIFRBQkxFICh1cGRhdGVzIEJJR0lOVCwgaG90IEJJR0lOVCkg QVMgJCQKK0RFQ0xBUkUgcmVsX29pZCBvaWQ7CitCRUdJTgorICAgIHJlbF9vaWQgOj0gcmVs X25hbWU6OnJlZ2NsYXNzOjpvaWQ7CisgICAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0 X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICAgICAgQ09B TEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7Cisg ICAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxf b2lkKSwgMCkgKworICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxl c19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgUkVUVVJOIE5FWFQ7CitFTkQ7Cisk JCBMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZ2V0X2hp X2NvdW50KHJlbF9uYW1lIHRleHQpCitSRVRVUk5TIFRBQkxFICh1cGRhdGVzIEJJR0lOVCwg aG90IEJJR0lOVCwgaG90X2lkeCBCSUdJTlQpIEFTICQkCitERUNMQVJFIHJlbF9vaWQgb2lk OworQkVHSU4KKyAgICByZWxfb2lkIDo9IHJlbF9uYW1lOjpyZWdjbGFzczo6b2lkOworICAg IHVwZGF0ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29p ZCksIDApICsKKyAgICAgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX3VwZGF0ZWQocmVsX29pZCksIDApOworICAgIGhvdCA6PSBDT0FMRVNDRShwZ19zdGF0 X2dldF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgQ09B TEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDAp OworICAgIGhvdF9pZHggOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRl eGVkX3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgQ09BTEVTQ0UocGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZChyZWxfb2lkKSwgMCk7Cisg ICAgUkVUVVJOIE5FWFQ7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSAxLiBCYXNpYyBob3QtaW5kZXhlZDogbW9kaWZ5aW5nIGFu IGluZGV4ZWQgY29sdW1uIHN0YXlzIEhPVCBhbmQgY291bnRzIGFzIGhvdC1pbmRleGVkCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9iYXNpYyAoCisgICAg aWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBub25faW5k ZXhlZF9jb2wgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVY IGhpX2Jhc2ljX2lkeCBPTiBoaV9iYXNpYyhpbmRleGVkX2NvbCk7CitJTlNFUlQgSU5UTyBo aV9iYXNpYyBWQUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsKKy0tIFByZS1ob3QtaW5kZXhl ZCB0aGlzIHdvdWxkIGJlIG5vbi1IT1QuICBVbmRlciBob3QtaW5kZXhlZCBpdCdzIEhPVC1p bmRleGVkOyBib3RoIHRoZQorLS0gSE9UIGNvdW50ZXIgYW5kIHRoZSBob3QtaW5kZXhlZCBj b3VudGVyIGFkdmFuY2UuCitVUERBVEUgaGlfYmFzaWMgU0VUIGluZGV4ZWRfY29sID0gMTUw IFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBw Z19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfYmFzaWMnKTsK KyB1cGRhdGVzIHwgaG90IHwgaG90X2lkeCAKKy0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0K KyAgICAgICAxIHwgICAxIHwgICAgICAgMQorKDEgcm93KQorCistLSBUaGUgbmV3IHZhbHVl IGlzIHJlYWNoYWJsZSB2aWEgdGhlIGluZGV4LgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2Zm OworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaGlf YmFzaWMgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIGhpX2Jhc2ljCisgICBSZWNoZWNrIENv bmQ6IChpbmRleGVkX2NvbCA9IDE1MCkKKyAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBo aV9iYXNpY19pZHgKKyAgICAgICAgIEluZGV4IENvbmQ6IChpbmRleGVkX2NvbCA9IDE1MCkK Kyg0IHJvd3MpCisKK1NFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBoaV9iYXNpYyBXSEVS RSBpbmRleGVkX2NvbCA9IDE1MDsKKyBpZCB8IGluZGV4ZWRfY29sIAorLS0tLSstLS0tLS0t LS0tLS0tCisgIDEgfCAgICAgICAgIDE1MAorKDEgcm93KQorCistLSBUaGUgb2xkIHZhbHVl IGlzIG5vdCByZWFjaGFibGUgdGhyb3VnaCB0aGlzIGluZGV4OiB0aGUgc3RhbGUgYnRyZWUK Ky0tIGVudHJ5IChpbmRleGVkX2NvbD0xMDApIHdhbGtzIHRvIHRoZSBjdXJyZW50IHR1cGxl IHZpYSB0aGUgaG90LWluZGV4ZWQgaG9wLAorLS0gbm9kZUluZGV4c2NhbiByZS1ldmFsdWF0 ZXMgYGluZGV4ZWRfY29sID0gMTAwYCBhZ2FpbnN0IHRoZSBjdXJyZW50CistLSB0dXBsZSAo aW5kZXhlZF9jb2w9MTUwKSwgYW5kIHRoZSByb3cgaXMgY29ycmVjdGx5IGRyb3BwZWQuICBU aGlzIGlzCistLSB0aGUgZXF1YWxpdHktbG9va3VwIGNhc2UgdGhlIGNyb3NzZWQtYXR0cmli dXRlIGJpdG1hcCBoYW5kbGVzLgorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJP TSBoaV9iYXNpYyBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKyAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gaGlfYmFzaWMKKyAgIFJlY2hl Y2sgQ29uZDogKGluZGV4ZWRfY29sID0gMTAwKQorICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIGhpX2Jhc2ljX2lkeAorICAgICAgICAgSW5kZXggQ29uZDogKGluZGV4ZWRfY29sID0g MTAwKQorKDQgcm93cykKKworU0VMRUNUIGlkIEZST00gaGlfYmFzaWMgV0hFUkUgaW5kZXhl ZF9jb2wgPSAxMDA7CisgaWQgCistLS0tCisoMCByb3dzKQorCitSRVNFVCBlbmFibGVfc2Vx c2NhbjsKKy0tIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzIHNlZXMgb25lIEhPVC1p bmRleGVkIHZlcnNpb24sIHplcm8gSE9UIHJlZGlyZWN0cyAodGhlCistLSBjaGFpbiBoYXMg bm90IHlldCBiZWVuIHBydW5lZCBzbyBubyBMUF9SRURJUkVDVCBleGlzdHMpLgorU0VMRUNU IG5faG90X2luZGV4ZWQsIG5fY2hhaW5zLCBhdmdfY2hhaW5fbGVuLCBtYXhfY2hhaW5fbGVu CitGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9iYXNpYycpOworIG5f aG90X2luZGV4ZWQgfCBuX2NoYWlucyB8IGF2Z19jaGFpbl9sZW4gfCBtYXhfY2hhaW5fbGVu IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgIDEgfCAgICAgICAgMCB8ICAgICAgICAgICAgIDAgfCAg ICAgICAgICAgICAwCisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlfYmFzaWM7CistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIuIFJBTkdFL0lORVFVQUxJVFkgY29ycmVjdG5lc3Mg YWZ0ZXIgaG90LWluZGV4ZWQgb24gYW4gaW5kZXhlZCBjb2x1bW4KKy0tCistLSBUaGlzIGlz IHRoZSB0ZXN0IGNsYXNzIHRoYXQgY2F0Y2hlcyB0aGUgaG90LWluZGV4ZWQgZmFsc2UtZHVw IGJ1ZzogYSBzdGFsZQorLS0gYnRyZWUgZW50cnkgd2hvc2Uga2V5IHZhbHVlIHN0aWxsIHNh dGlzZmllcyB0aGUgcmFuZ2UgcHJlZGljYXRlLAorLS0gcmVhY2hhYmxlIHZpYSB0aGUgaG90 LWluZGV4ZWQgY2hhaW4gaG9wLgorLS0KKy0tIFRvIGV4ZXJjaXNlIHRoZSBidWcgd2UgbXVz dCBmb3JjZSBhbiBJbmRleFNjYW4gcGxhbiAodGhlCistLSBJbmRleE9ubHlTY2FuIHBhdGgg cGVybWlzc2l2ZWx5IGRyb3BzIGV2ZXJ5IGhvdC1pbmRleGVkLXJlYWNoYWJsZSBpbmRleC1v bmx5CistLSBoaXQ7IHRoZSBCaXRtYXBIZWFwU2NhbiBwYXRoIGRlZHVwcyBieSBUSUQpLiAg V2UgaW5jbHVkZSBhIHBheWxvYWQKKy0tIGNvbHVtbiBub3QgcHJlc2VudCBpbiB0aGUgUEsg c28gdGhlIHBsYW5uZXIgbXVzdCBoZWFwLWZldGNoLgorLS0KKy0tIFRoZSByZWFkLXNpZGUg Y3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIG1ha2VzIHRoZSBJbmRleFNjYW4gcmV0dXJuIHRo ZSBjb3JyZWN0CistLSBjb3VudCBvZiAxOiB0aGUgc3RhbGUgZW50cnkgKCcxJywnNScpIGNo YWluLXdhbGtzIHRvIHRoZSBsaXZlIHR1cGxlIGFjcm9zcworLS0gdGhlIGItY2hhbmdpbmcg aG9wLCBhbmQgYmVjYXVzZSB0aGUgUEsgY292ZXJzIGIgdGhlIG92ZXJsYXAgaXMgbm9uLWVt cHR5LCBzbworLS0gdGhlIHN0YWxlIGxlYWYgaXMgZHJvcHBlZC4gIFRoZSBmcmVzaCBlbnRy eSAoJzEnLCcxNScpIHBvaW50cyBkaXJlY3RseSBhdCB0aGUKKy0tIGxpdmUgdHVwbGUgKG5v IGhvcCBhZnRlciBpdCkgYW5kIGlzIGtlcHQuICBUaGUgT1JERVIgQlkgbGlrZXdpc2UgcmV0 dXJucyB0aGUKKy0tIHNpbmdsZSBsaXZlIHJvdy4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorQ1JFQVRFIFRBQkxFIGhpX3JhbmdlICgKKyAgICBhIGludCwKKyAgICBiIGludCwKKyAg ICBwYXlsb2FkIHRleHQsCisgICAgUFJJTUFSWSBLRVkgKGEsIGIpCispIFdJVEggKGZpbGxm YWN0b3IgPSA1MCk7CitJTlNFUlQgSU5UTyBoaV9yYW5nZSBWQUxVRVMgKDEsIDUsICdoaScp OworLS0gaG90LWluZGV4ZWQgdXBkYXRlIG9uIHRoZSBzZWNvbmQgUEsgY29sdW1uOiBzdGFs ZSBidHJlZSBlbnRyeSAoJzEnLCc1JykKKy0tIHJlbWFpbnMsIG5ldyBlbnRyeSAoJzEnLCcx NScpIGluc2VydGVkLiAgVGhlIHN0YWxlIGVudHJ5IHBvaW50cyBhdAorLS0gdGhlIGNoYWlu IHJvb3Q7IHRoZSBmcmVzaCBlbnRyeSBwb2ludHMgZGlyZWN0bHkgYXQgdGhlIG5ldworLS0g aGVhcC1vbmx5IHR1cGxlLgorVVBEQVRFIGhpX3JhbmdlIFNFVCBiID0gMTUgV0hFUkUgYSA9 IDEgQU5EIGIgPSA1OworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9i aXRtYXBzY2FuID0gb2ZmOworLS0gSW5kZXhTY2FuOiBwYXlsb2FkIElTIE5PVCBOVUxMIGZv cmNlcyBoZWFwIGZldGNoLCBubyBJbmRleE9ubHlTY2FuLgorLS0gVGhlIHN0YWxlICgnMScs JzUnKSBsZWFmIGlzIGRyb3BwZWQgYnkgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCwg c28gdGhpcworLS0gcmV0dXJucyAxLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNv dW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDAgQU5EIHBheWxv YWQgSVMgTk9UIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIGhpX3Jh bmdlX3BrZXkgb24gaGlfcmFuZ2UKKyAgICAgICAgIEluZGV4IENvbmQ6ICgoYSA9IDEpIEFO RCAoYiA8IDEwMCkpCisgICAgICAgICBGaWx0ZXI6IChwYXlsb2FkIElTIE5PVCBOVUxMKQor KDQgcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEg QU5EIGIgPCAxMDAgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisgY291bnQgCistLS0tLS0t CisgICAgIDEKKygxIHJvdykKKworU0VMRUNUIGEsIGIgRlJPTSBoaV9yYW5nZSBXSEVSRSBh ID0gMSBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTCBPUkRFUiBCWSBiOworIGEgfCBiICAKKy0t LSstLS0tCisgMSB8IDE1CisoMSByb3cpCisKKy0tIEluZGV4T25seVNjYW46IHRoZSBwYWdl IGhvbGRzIGEgcHJlc2VydmVkIEhPVC1pbmRleGVkIG1lbWJlciBzbyBpdCBpcyBuZXZlciBh bGwtdmlzaWJsZTsgSU9TCistLSBwZXJmb3JtcyB0aGUgaGVhcCBmZXRjaCBhbmQgdGhlIGNy b3NzZWQtYXR0cmlidXRlIGJpdG1hcCBkcm9wcyB0aGUgc3RhbGUgKCcxJywnNScpCistLSBs ZWFmLCBzbyBjb3VudCA9IDEuCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3VudCgq KSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBiIDwgMTAwOworICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyBoaV9yYW5nZV9wa2V5IG9uIGhp X3JhbmdlCisgICAgICAgICBJbmRleCBDb25kOiAoKGEgPSAxKSBBTkQgKGIgPCAxMDApKQor KDMgcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEg QU5EIGIgPCAxMDA7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworLS0g Qml0bWFwSGVhcFNjYW46IFRJRCBkZWR1cCBjb2xsYXBzZXMgdGhlIHN0YWxlIGFuZCBmcmVz aCBoaXRzLgorU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4 b25seXNjYW4gPSBvZmY7CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK0VYUExBSU4gKENP U1RTIE9GRikgU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5E IGIgPCAxMDA7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gaGlfcmFu Z2UKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChhID0gMSkgQU5EIChiIDwgMTAwKSkKKyAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBoaV9yYW5nZV9wa2V5CisgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoKGEgPSAxKSBBTkQgKGIgPCAxMDApKQorKDUgcm93cykK KworU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAx MDA7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworUkVTRVQgZW5hYmxl X2luZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9pbmRleG9ubHlzY2FuOworLS0gU2VxU2Nhbjog cmVhZHMgdGhlIGhlYXAgZGlyZWN0bHksIHNlZXMgZXhhY3RseSBvbmUgbGl2ZSB0dXBsZS4K K1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CitT RVQgZW5hYmxlX2luZGV4b25seXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4g PSBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3Jh bmdlIFdIRVJFIGEgPSAxIEFORCBiIDwgMTAwOworICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgU2VxIFNjYW4gb24gaGlfcmFuZ2UKKyAgICAg ICAgIEZpbHRlcjogKChiIDwgMTAwKSBBTkQgKGEgPSAxKSkKKygzIHJvd3MpCisKK1NFTEVD VCBjb3VudCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBiIDwgMTAwOworIGNv dW50IAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9pbmRleHNj YW47CitSRVNFVCBlbmFibGVfaW5kZXhvbmx5c2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBz Y2FuOworLS0gU2FtZSBzaGFwZSBvbiBhIHNlY29uZGFyeSAobm9uLVBLKSBidHJlZTogYW5v dGhlciBob3QtaW5kZXhlZCB1cGRhdGUgb24gYi4KK0NSRUFURSBJTkRFWCBoaV9yYW5nZV9i X2lkeCBPTiBoaV9yYW5nZShiKTsKK1VQREFURSBoaV9yYW5nZSBTRVQgYiA9IDI1IFdIRVJF IGEgPSAxIEFORCBiID0gMTU7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5h YmxlX2JpdG1hcHNjYW4gPSBvZmY7CistLSBJbmRleFNjYW4gcGF0aCBvbiB0aGUgc2Vjb25k YXJ5IGluZGV4OyBzYW1lIGZpeCBhcHBsaWVzLgorU0VMRUNUIGNvdW50KCopIEZST00gaGlf cmFuZ2UgV0hFUkUgYiBCRVRXRUVOIDAgQU5EIDEwMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVM TDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitSRVNFVCBlbmFibGVf c2Vxc2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworRFJPUCBUQUJMRSBoaV9yYW5n ZTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMy4gQWxsLW9yLW5vbmUgb24gYSBt dWx0aS1pbmRleGVkIHRhYmxlOiBob3QtaW5kZXhlZCBvbmx5IHRvdWNoZXMgaW5kZXhlcwor LS0gICAgd2hvc2UgYXR0cmlidXRlcyBjaGFuZ2VkCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK0NSRUFURSBUQUJMRSBoaV9tdWx0aSAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAor ICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQsCisgICAgY29sX2MgaW50LAorICAgIG5v bl9pbmRleGVkIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRF WCBoaV9tdWx0aV9hX2lkeCBPTiBoaV9tdWx0aShjb2xfYSk7CitDUkVBVEUgSU5ERVggaGlf bXVsdGlfYl9pZHggT04gaGlfbXVsdGkoY29sX2IpOworQ1JFQVRFIElOREVYIGhpX211bHRp X2NfaWR4IE9OIGhpX211bHRpKGNvbF9jKTsKK0lOU0VSVCBJTlRPIGhpX211bHRpIFZBTFVF UyAoMSwgMTAsIDIwLCAzMCwgJ2luaXRpYWwnKTsKKy0tIGNvbF9hIG9ubHk6IHVuZGVyIGhv dC1pbmRleGVkIHRoaXMgaXMgSE9ULWluZGV4ZWQsIGFuZCBvbmx5IGhpX211bHRpX2FfaWR4 CistLSBnZXRzIGEgbmV3IGVudHJ5LiAgaGlfbXVsdGlfYl9pZHggLyBoaV9tdWx0aV9jX2lk eCBrZWVwIHBvaW50aW5nCistLSBhdCB0aGUgY2hhaW4gcm9vdC4KK1VQREFURSBoaV9tdWx0 aSBTRVQgY29sX2EgPSAxNSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9u ZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBnZXRfaGlfY291 bnQoJ2hpX211bHRpJyk7CisgdXBkYXRlcyB8IGhvdCB8IGhvdF9pZHggCistLS0tLS0tLS0r LS0tLS0rLS0tLS0tLS0tCisgICAgICAgMSB8ICAgMSB8ICAgICAgIDEKKygxIHJvdykKKwor LS0gTG9va3VwcyBvbiBhbGwgdGhyZWUgaW5kZXhlcyByZXR1cm4gdGhlIHJvdy4KK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX211bHRpIFdIRVJFIGNv bF9hID0gMTU7CisgaWQgCistLS0tCisgIDEKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00g aGlfbXVsdGkgV0hFUkUgY29sX2IgPSAyMDsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQor CitTRUxFQ1QgaWQgRlJPTSBoaV9tdWx0aSBXSEVSRSBjb2xfYyA9IDMwOworIGlkIAorLS0t LQorICAxCisoMSByb3cpCisKKy0tIE9sZCBjb2xfYSB2YWx1ZSBpcyB1bnJlYWNoYWJsZSBi eSBlcXVhbGl0eSAoc3RhbGUgZW50cnkgZHJvcHBlZCBieSB0aGUKKy0tIHJlYWQtc2lkZSBj cm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXApLgorU0VMRUNUIGlkIEZST00gaGlfbXVsdGkgV0hF UkUgY29sX2EgPSAxMDsKKyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9z ZXFzY2FuOworRFJPUCBUQUJMRSBoaV9tdWx0aTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorLS0gNC4gTXVsdGktY29sdW1uIGJ0cmVlOiBob3QtaW5kZXhlZCBvbiBwYXJ0IG9mIGEg Y29tcG9zaXRlIGtleQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUg aGlfY29tcG9zaXRlICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50 LAorICAgIGNvbF9iIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9 IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9jb21wb3NpdGVfYWJfaWR4IE9OIGhpX2NvbXBvc2l0 ZShjb2xfYSwgY29sX2IpOworSU5TRVJUIElOVE8gaGlfY29tcG9zaXRlIFZBTFVFUyAoMSwg MTAsIDIwLCAnZGF0YScpOworLS0gY29sX2EgaXMgcGFydCBvZiB0aGUgY29tcG9zaXRlIGtl eTogaG90LWluZGV4ZWQuCitVUERBVEUgaGlfY29tcG9zaXRlIFNFVCBjb2xfYSA9IDE1Owor U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NF TEVDVCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9jb21wb3NpdGUnKTsKKyB1cGRhdGVzIHwg aG90IHwgaG90X2lkeCAKKy0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0KKyAgICAgICAxIHwg ICAxIHwgICAgICAgMQorKDEgcm93KQorCistLSBSZXNldCBhbmQgdGhlbiB1cGRhdGUgY29s X2IgKGFsc28gcGFydCBvZiB0aGUga2V5KS4KK1VQREFURSBoaV9jb21wb3NpdGUgU0VUIGNv bF9hID0gMTA7CitVUERBVEUgaGlfY29tcG9zaXRlIFNFVCBjb2xfYiA9IDI1OworU0VMRUNU IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAq IEZST00gZ2V0X2hpX2NvdW50KCdoaV9jb21wb3NpdGUnKTsKKyB1cGRhdGVzIHwgaG90IHwg aG90X2lkeCAKKy0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0KKyAgICAgICAzIHwgICAzIHwg ICAgICAgMworKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX2NvbXBvc2l0ZTsKKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorLS0gNS4gUGFydGlhbCBpbmRleDogc3RhdHVzIHRyYW5zaXRp b24gb3V0LW9mLXByZWRpY2F0ZQorLS0KKy0tICdzdGF0dXMnIGlzIGEgcGFydGlhbC1pbmRl eCBwcmVkaWNhdGUgY29sdW1uLiAgQSBjaGFuZ2UgdG8gYSBwcmVkaWNhdGUKKy0tIGNvbHVt biBjYW4gZmxpcCBhIHJvdyBpbiBvciBvdXQgb2YgdGhlIGluZGV4LCB3aGljaCB0aGUgcmVh ZC1zaWRlIGtleQorLS0gcmVjaGVjayBjYW5ub3QgZGV0ZWN0LCBzbyBIZWFwVXBkYXRlSG90 QWxsb3dhYmxlIGNvbnNlcnZhdGl2ZWx5IGRpc3F1YWxpZmllcworLS0gSE9ULWluZGV4ZWQg Zm9yIGFueSBwcmVkaWNhdGUtY29sdW1uIGNoYW5nZSAoZXZlbiB0aGlzIG91dC1vZi1wcmVk aWNhdGUgLT4KKy0tIG91dC1vZi1wcmVkaWNhdGUgY2FzZSkuICBUaGUgdXBkYXRlIGlzIHRo ZXJlZm9yZSBub24tSE9ULCBhbmQgdGhlIHBhcnRpYWwKKy0tIGluZGV4IGNvcnJlY3RseSBz dGF5cyBlbXB0eSBmb3IgdGhlc2Ugbm9uLSdhY3RpdmUnIHJvd3MuCistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0aWFsICgKKyAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCisgICAgc3RhdHVzIHRleHQsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcGFydGlhbF9hY3RpdmVfaWR4IE9O IGhpX3BhcnRpYWwoc3RhdHVzKSBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsKK0lOU0VSVCBJ TlRPIGhpX3BhcnRpYWwgVkFMVUVTICgxLCAnYWN0aXZlJywgJ2RhdGExJyk7CitJTlNFUlQg SU5UTyBoaV9wYXJ0aWFsIFZBTFVFUyAoMiwgJ2luYWN0aXZlJywgJ2RhdGEyJyk7CitJTlNF UlQgSU5UTyBoaV9wYXJ0aWFsIFZBTFVFUyAoMywgJ2RlbGV0ZWQnLCAnZGF0YTMnKTsKKy0t IG91dCAtPiBvdXQgdHJhbnNpdGlvbiBvbiB0aGUgcHJlZGljYXRlIGNvbHVtbjogSE9ULWlu ZGV4ZWQga2VlcHMgaXQgb24tcGFnZSwKKy0tIGFuZCB0aGUgcGFydGlhbCBpbmRleCBnZXRz IG5vIGVudHJ5ICh0aGUgcm93IHNhdGlzZmllcyB0aGUgcHJlZGljYXRlIG5laXRoZXIKKy0t IGJlZm9yZSBub3IgYWZ0ZXIgdGhlIHVwZGF0ZSkuCitVUERBVEUgaGlfcGFydGlhbCBTRVQg c3RhdHVzID0gJ2RlbGV0ZWQnIFdIRVJFIGlkID0gMjsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9oaV9j b3VudCgnaGlfcGFydGlhbCcpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAorLS0tLS0t LS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEgfCAgIDEgfCAgICAgICAxCisoMSByb3cp CisKKy0tIFRoZSBwYXJ0aWFsIGluZGV4IHN0aWxsIGNvcnJlY3RseSBhbnN3ZXJzICJhY3Rp dmUiIHF1ZXJpZXMuCitTRUxFQ1QgaWQsIHN0YXR1cyBGUk9NIGhpX3BhcnRpYWwgV0hFUkUg c3RhdHVzID0gJ2FjdGl2ZSc7CisgaWQgfCBzdGF0dXMgCistLS0tKy0tLS0tLS0tCisgIDEg fCBhY3RpdmUKKygxIHJvdykKKworRFJPUCBUQUJMRSBoaV9wYXJ0aWFsOworLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSA2LiBQYXJ0aXRpb246IGhvdC1pbmRleGVkIGluc2lkZSBv bmUgcGFydGl0aW9uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBo aV9wYXJ0ICgKKyAgICBpZCBpbnQsCisgICAgcGFydGl0aW9uX2tleSBpbnQsCisgICAgaW5k ZXhlZF9jb2wgaW50LAorICAgIGRhdGEgdGV4dCwKKyAgICBQUklNQVJZIEtFWSAoaWQsIHBh cnRpdGlvbl9rZXkpCispIFBBUlRJVElPTiBCWSBSQU5HRSAocGFydGl0aW9uX2tleSk7CitD UkVBVEUgVEFCTEUgaGlfcGFydF8xIFBBUlRJVElPTiBPRiBoaV9wYXJ0CisgICAgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMTAwKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRF IElOREVYIGhpX3BhcnRfaWR4IE9OIGhpX3BhcnQoaW5kZXhlZF9jb2wpOworSU5TRVJUIElO VE8gaGlfcGFydCBWQUxVRVMgKDEsIDUwLCAxMDAsICdkYXRhJyk7CitVUERBVEUgaGlfcGFy dCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gZ2V0 X2hpX2NvdW50KCdoaV9wYXJ0XzEnKTsKKyB1cGRhdGVzIHwgaG90IHwgaG90X2lkeCAKKy0t LS0tLS0tLSstLS0tLSstLS0tLS0tLS0KKyAgICAgICAxIHwgICAxIHwgICAgICAgMQorKDEg cm93KQorCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQgRlJPTSBoaV9w YXJ0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworIGlkIAorLS0tLQorICAxCisoMSByb3cp CisKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7Cisg aWQgCistLS0tCisoMCByb3dzKQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFC TEUgaGlfcGFydCBDQVNDQURFOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA3LiBU cmlnZ2VyIG1vZGlmaWVzIGluZGV4ZWQgY29sdW1uOiBob3QtaW5kZXhlZCwgbm90IG5vbi1I T1QKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3RyaWdnZXIg KAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cmlnZ2VyZWRfY29sIGludCwKKyAg ICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBo aV90cmlnZ2VyX2lkeCBPTiBoaV90cmlnZ2VyKHRyaWdnZXJlZF9jb2wpOworQ1JFQVRFIE9S IFJFUExBQ0UgRlVOQ1RJT04gaGlfdHJpZ2dlcl9idW1wKCkKK1JFVFVSTlMgVFJJR0dFUiBB UyAkJAorQkVHSU4KKyAgICBORVcudHJpZ2dlcmVkX2NvbCA9IE5FVy50cmlnZ2VyZWRfY29s ICsgMTsKKyAgICBSRVRVUk4gTkVXOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0NS RUFURSBUUklHR0VSIGJlZm9yZV91cGRhdGVfYnVtcAorICAgIEJFRk9SRSBVUERBVEUgT04g aGlfdHJpZ2dlcgorICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgRlVOQ1RJT04gaGlf dHJpZ2dlcl9idW1wKCk7CitJTlNFUlQgSU5UTyBoaV90cmlnZ2VyIFZBTFVFUyAoMSwgMTAw LCAnaW5pdGlhbCcpOworLS0gVVBEQVRFJ3MgU0VUIGNsYXVzZSBkb2Vzbid0IHRvdWNoIHRo ZSBpbmRleGVkIGNvbHVtbiwgYnV0IHRoZQorLS0gdHJpZ2dlciBtb2RpZmllcyBpdCB2aWEg aGVhcF9tb2RpZnlfdHVwbGUuICBob3QtaW5kZXhlZCBtdXN0IGRldGVjdCB0aGlzCistLSBh bmQga2VlcCB0aGUgdHVwbGUgb24tcGFnZSAoSEVBUF9JTkRFWEVEX1VQREFURUQpIHBsdXMg YSBuZXcgYnRyZWUgZW50cnkuCitVUERBVEUgaGlfdHJpZ2dlciBTRVQgZGF0YSA9ICd1cGRh dGVkJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7 CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX3RyaWdn ZXInKTsKKyB1cGRhdGVzIHwgaG90IHwgaG90X2lkeCAKKy0tLS0tLS0tLSstLS0tLSstLS0t LS0tLS0KKyAgICAgICAxIHwgICAxIHwgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgdHJp Z2dlcmVkX2NvbCBGUk9NIGhpX3RyaWdnZXIgV0hFUkUgaWQgPSAxOworIHRyaWdnZXJlZF9j b2wgCistLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMTAxCisoMSByb3cpCisKKy0tIE5l dyB2YWx1ZSByZWFjaGFibGUuCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1Qg aWQgRlJPTSBoaV90cmlnZ2VyIFdIRVJFIHRyaWdnZXJlZF9jb2wgPSAxMDE7CisgaWQgCist LS0tCisgIDEKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaGlfdHJpZ2dlciBXSEVSRSB0 cmlnZ2VyZWRfY29sID0gMTAwOworIGlkIAorLS0tLQorKDAgcm93cykKKworUkVTRVQgZW5h YmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX3RyaWdnZXIgQ0FTQ0FERTsKK0RST1AgRlVO Q1RJT04gaGlfdHJpZ2dlcl9idW1wKCk7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDguIEpTT05CIGV4cHJlc3Npb24gaW5kZXg6IEhPVC1pbmRleGVkIGlzIG5vdCB5ZXQgc3Vw cG9ydGVkIG9uIGV4cHJlc3Npb24KKy0tICAgIGluZGV4ZXMsIHNvIHRoZSB1cGRhdGUgZmFs bHMgYmFjayB0byBhIG5vbi1IT1QgdXBkYXRlIChob3RfaWR4ID0gMCkuCistLSAgICBSZWFk cyBzdGF5IGNvcnJlY3QuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJM RSBoaV9qc29uYiAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGRhdGEganNvbmIK KykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9qc29uYl9uYW1l X2lkeCBPTiBoaV9qc29uYiAoKGRhdGEtPj4nbmFtZScpKTsKK0lOU0VSVCBJTlRPIGhpX2pz b25iIFZBTFVFUyAoMSwgJ3sibmFtZSI6IkFsaWNlIiwiYWdlIjozMH0nKTsKKy0tIENoYW5n aW5nIHRoZSBpbmRleGVkIGV4cHJlc3Npb24ncyB2YWx1ZSAobmFtZSk6IGV4cHJlc3Npb24g aW5kZXhlcyBhcmUgbm90CistLSB5ZXQgc3VwcG9ydGVkLCBzbyB0aGlzIGlzIGEgbm9uLUhP VCB1cGRhdGUuCitVUERBVEUgaGlfanNvbmIgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwg J3tuYW1lfScsICciQWxpY2UyIicpIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9o aV9jb3VudCgnaGlfanNvbmInKTsKKyB1cGRhdGVzIHwgaG90IHwgaG90X2lkeCAKKy0tLS0t LS0tLSstLS0tLSstLS0tLS0tLS0KKyAgICAgICAxIHwgICAwIHwgICAgICAgMAorKDEgcm93 KQorCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQgRlJPTSBoaV9qc29u YiBXSEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlMic7CisgaWQgCistLS0tCisgIDEKKygx IHJvdykKKworU0VMRUNUIGlkIEZST00gaGlfanNvbmIgV0hFUkUgZGF0YS0+PiduYW1lJyA9 ICdBbGljZSc7CisgaWQgCistLS0tCisoMCByb3dzKQorCitSRVNFVCBlbmFibGVfc2Vxc2Nh bjsKK0RST1AgVEFCTEUgaGlfanNvbmI7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDkuIEdJTiBpbmRleCB3aXRoIGNoYW5nZWQgZXh0cmFjdGVkIGtleXM6IGhvdC1pbmRleGVk CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9naW4gKAorICAg IGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0YWdzIHRleHRbXQorKSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2dpbl90YWdzX2lkeCBPTiBoaV9naW4gVVNJ TkcgZ2luICh0YWdzKTsKK0lOU0VSVCBJTlRPIGhpX2dpbiBWQUxVRVMgKDEsIEFSUkFZWyd0 YWcxJywgJ3RhZzInXSk7CistLSBBZGRpbmcgYSB0YWcgeWllbGRzIGEgZGlmZmVyZW50IGV4 dHJhY3RlZC1rZXkgc2V0OiBob3QtaW5kZXhlZC4KK1VQREFURSBoaV9naW4gU0VUIHRhZ3Mg PSBBUlJBWVsndGFnMScsICd0YWcyJywgJ3RhZzUnXSBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUICog RlJPTSBnZXRfaGlfY291bnQoJ2hpX2dpbicpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4 IAorLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEgfCAgIDEgfCAgICAgICAx CisoMSByb3cpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9N IGhpX2dpbiBXSEVSRSB0YWdzIEA+IEFSUkFZWyd0YWc1J107CisgaWQgCistLS0tCisgIDEK KygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX2dpbjsK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTAuIFBlci1pbmRleCBIT1QtaW5kZXhl ZCBjb3VudGVyczogc2tpcHBlZCB2cyBtYXRjaGVkCistLQorLS0gQSB0YWJsZSB3aXRoIHR3 byBpbmRlcGVuZGVudCBzZWNvbmRhcnkgaW5kZXhlcy4gIEFuIFVQREFURSB0b3VjaGVzIGEK Ky0tIGNvbHVtbiBjb3ZlcmVkIGJ5IG9ubHkgb25lIG9mIHRoZW07IHRoZSBIT1QtaW5kZXhl ZCBwYXRoIG11c3QgaW5zZXJ0CistLSBpbnRvIHRoYXQgb25lIGluZGV4IGFuZCBza2lwIHRo ZSBvdGhlci4gIHBnX3N0YXRfYWxsX2luZGV4ZXMgcmVwb3J0cworLS0gbWF0Y2hlZD4wIG9u IHRoZSB1cGRhdGVkIGluZGV4IGFuZCBza2lwcGVkPjAgb24gdGhlIHVudG91Y2hlZCBpbmRl eC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhvdGlkeF9wZXJp bmRleCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGEgaW50LAorICAgIGIgaW50 CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaG90aWR4X3Blcmlu ZGV4X2EgT04gaG90aWR4X3BlcmluZGV4KGEpOworQ1JFQVRFIElOREVYIGhvdGlkeF9wZXJp bmRleF9iIE9OIGhvdGlkeF9wZXJpbmRleChiKTsKK0lOU0VSVCBJTlRPIGhvdGlkeF9wZXJp bmRleCBWQUxVRVMgKDEsIDEwMCwgMjAwKTsKKy0tIE1vZGlmeSBvbmx5IGNvbHVtbiBhLiAg SE9ULWluZGV4ZWQgaW5zZXJ0cyBpbnRvIGhvdGlkeF9wZXJpbmRleF9hIGFuZAorLS0gc2tp cHMgaG90aWR4X3BlcmluZGV4X2IgKHByaW1hcnkga2V5IGluZHJlbGlkIGlzIHRoZSB0YWJs ZSBpdHNlbGYgYW5kCistLSBhbHNvIHVuY2hhbmdlZCwgc28gaXQgY291bnRzIGFzIHNraXBw ZWQgdG9vKS4KK1VQREFURSBob3RpZHhfcGVyaW5kZXggU0VUIGEgPSAxMDEgV0hFUkUgaWQg PSAxOworLS0gRm9yY2UgZmx1c2ggb2YgcGVuZGluZyBzdGF0cyB0byB0aGUgc2hhcmVkIGVu dHJ5LgorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK1NFTEVDVCBpbmRleHJlbG5hbWUsCisgICAgICAgbl90dXBfaG90X2luZGV4ZWRfdXBk X21hdGNoZWQgQVMgbWF0Y2hlZCwKKyAgICAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tp cHBlZCBBUyBza2lwcGVkCisgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcworIFdIRVJFIHJl bG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JworIE9SREVSIEJZIGluZGV4cmVsbmFtZTsKKyAg ICAgaW5kZXhyZWxuYW1lICAgICB8IG1hdGNoZWQgfCBza2lwcGVkIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tCisgaG90aWR4X3BlcmluZGV4X2EgICAg fCAgICAgICAxIHwgICAgICAgMAorIGhvdGlkeF9wZXJpbmRleF9iICAgIHwgICAgICAgMCB8 ICAgICAgIDEKKyBob3RpZHhfcGVyaW5kZXhfcGtleSB8ICAgICAgIDAgfCAgICAgICAxCiso MyByb3dzKQorCistLSBBIHNlY29uZCBVUERBVEUgdG91Y2hpbmcgb25seSBiIGludmVydHMg dGhlIGFzc2lnbm1lbnQuCitVUERBVEUgaG90aWR4X3BlcmluZGV4IFNFVCBiID0gMjAxIFdI RVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitTRUxFQ1QgaW5kZXhyZWxuYW1lLAorICAgICAgIG5fdHVwX2hvdF9pbmRl eGVkX3VwZF9tYXRjaGVkIEFTIG1hdGNoZWQsCisgICAgICAgbl90dXBfaG90X2luZGV4ZWRf dXBkX3NraXBwZWQgQVMgc2tpcHBlZAorICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKKyBX SEVSRSByZWxuYW1lID0gJ2hvdGlkeF9wZXJpbmRleCcKKyBPUkRFUiBCWSBpbmRleHJlbG5h bWU7CisgICAgIGluZGV4cmVsbmFtZSAgICAgfCBtYXRjaGVkIHwgc2tpcHBlZCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLQorIGhvdGlkeF9wZXJpbmRl eF9hICAgIHwgICAgICAgMSB8ICAgICAgIDEKKyBob3RpZHhfcGVyaW5kZXhfYiAgICB8ICAg ICAgIDEgfCAgICAgICAxCisgaG90aWR4X3BlcmluZGV4X3BrZXkgfCAgICAgICAwIHwgICAg ICAgMgorKDMgcm93cykKKworLS0gSW52YXJpYW50OiBtYXRjaGVkICsgc2tpcHBlZCA9PSBv d25pbmcgdGFibGUncyBuX3R1cF9ob3RfaW5kZXhlZF91cGQuCitTRUxFQ1QgaW5kZXhyZWxu YW1lLAorICAgICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkICsgbl90dXBfaG90 X2luZGV4ZWRfdXBkX3NraXBwZWQgQVMgdG90YWwsCisgICAgICAgKFNFTEVDVCBuX3R1cF9o b3RfaW5kZXhlZF91cGQgRlJPTSBwZ19zdGF0X2FsbF90YWJsZXMKKyAgICAgICAgIFdIRVJF IHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JykgQVMgdGFibGVfaG90X2lkeF91cGQKKyAg RlJPTSBwZ19zdGF0X2FsbF9pbmRleGVzCisgV0hFUkUgcmVsbmFtZSA9ICdob3RpZHhfcGVy aW5kZXgnCisgT1JERVIgQlkgaW5kZXhyZWxuYW1lOworICAgICBpbmRleHJlbG5hbWUgICAg IHwgdG90YWwgfCB0YWJsZV9ob3RfaWR4X3VwZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgaG90aWR4X3BlcmluZGV4X2EgICAgfCAg ICAgMiB8ICAgICAgICAgICAgICAgICAyCisgaG90aWR4X3BlcmluZGV4X2IgICAgfCAgICAg MiB8ICAgICAgICAgICAgICAgICAyCisgaG90aWR4X3BlcmluZGV4X3BrZXkgfCAgICAgMiB8 ICAgICAgICAgICAgICAgICAyCisoMyByb3dzKQorCistLSBCb29sZWFuIGFzc2VydGlvbiBv ZiB0aGUgc2FtZSBpbnZhcmlhbnQuICBUaGlzIGlzIHRoZSBjYW5vbmljYWwgZm9ybQorLS0g cmV2aWV3ZXJzIGFza2VkIGZvcjogZXZlcnkgaW5kZXggZW50cnkgaXMgZWl0aGVyIG1hdGNo ZWQgKHRoZSBpbmRleAorLS0gZ290IGEgZnJlc2ggaW5zZXJ0IHRoaXMgVVBEQVRFKSBvciBz a2lwcGVkIChIT1QtaW5kZXhlZCBjb3JyZWN0bHkKKy0tIGF2b2lkZWQgYW4gaW5zZXJ0IGJl Y2F1c2UgdGhlIGluZGV4J3MgYXR0cnMgZGlkIG5vdCBjaGFuZ2UpLiAgSWYgdGhlCistLSB0 d28gY291bnRlcnMgZHJpZnQgYXBhcnQgZnJvbSB0aGUgdGFibGUtbGV2ZWwgbl90dXBfaG90 X2luZGV4ZWRfdXBkIHdlCistLSBoYXZlIGVpdGhlciBsb3N0IGEgcGVyLWluZGV4IGluY3Jl bWVudCBvciBkb3VibGUtY291bnRlZCBvbmUuCitTRUxFQ1QgYm9vbF9hbmQoKG5fdHVwX2hv dF9pbmRleGVkX3VwZF9tYXRjaGVkICsgbl90dXBfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQp ID0KKyAgICAgICAgICAgICAgICAoU0VMRUNUIG5fdHVwX2hvdF9pbmRleGVkX3VwZCBGUk9N IHBnX3N0YXRfYWxsX3RhYmxlcworICAgICAgICAgICAgICAgICAgV0hFUkUgcmVsbmFtZSA9 ICdob3RpZHhfcGVyaW5kZXgnKSkKKyAgICAgICAgIEFTIHBlcmluZGV4X2ludmFyaWFudF9o b2xkcworICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKKyBXSEVSRSByZWxuYW1lID0gJ2hv dGlkeF9wZXJpbmRleCc7CisgcGVyaW5kZXhfaW52YXJpYW50X2hvbGRzIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgaG90aWR4X3Bl cmluZGV4OworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxMS4gTG9uZyBob3QtbG9v cCBVUERBVEUgc3RheXMgY29tcGFjdCBhbmQgSE9ULWluZGV4ZWQKKy0tCistLSBBIGxvbmcg cnVuIG9mIEhPVC1pbmRleGVkIFVQREFURXMgdG8gYSBzaW5nbGUgcm93IHN0YXlzIGNvbXBh Y3Q6IHBydW5lCistLSBjb2xsYXBzZXMgZWFjaCBkZWFkIHZlcnNpb24gdG8gYSByZWRpcmVj dCB0byB0aGUgbGl2ZSB0dXBsZSBhbmQgcmV1c2VzIGl0cworLS0gc2xvdCwgc28gdGhlIHJv dyBuZXZlciBsZWF2ZXMgaXRzIG9yaWdpbmFsIHBhZ2UgYW5kIHRoZSBjaGFpbiBkb2VzIG5v dCBncm93CistLSB1bmJvdW5kZWQuICBFdmVyeSBVUERBVEUgdGhhdCBjaGFuZ2VzIHRoZSBp bmRleGVkIGNvbHVtbiAoYW5kIGxlYXZlcyBhbm90aGVyCistLSBpbmRleCwgaGVyZSB0aGUg UEssIHVuY2hhbmdlZCkgdGFrZXMgdGhlIEhPVC1pbmRleGVkIHBhdGguCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9jaGFpbmNhcCAoCisgICAgaWQgaW50 IFBSSU1BUlkgS0VZLAorICAgIGEgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSAxMCk7CitD UkVBVEUgSU5ERVggaGlfY2hhaW5jYXBfYV9pZHggT04gaGlfY2hhaW5jYXAoYSk7CitJTlNF UlQgSU5UTyBoaV9jaGFpbmNhcCBWQUxVRVMgKDEsIDApOworRE8gJCQKK0RFQ0xBUkUKKyAg ICBpIGludDsKK0JFR0lOCisgICAgRk9SIGkgSU4gMSAuLiAyMDAgTE9PUAorICAgICAgICBV UERBVEUgaGlfY2hhaW5jYXAgU0VUIGEgPSBpIFdIRVJFIGlkID0gMTsKKyAgICBFTkQgTE9P UDsKK0VORCAkJDsKKy0tIEFmdGVyIDIwMCBVUERBVEVzIHRoZSByb3cncyB2YWx1ZSBpcyAy MDAuCitTRUxFQ1QgYSBGUk9NIGhpX2NoYWluY2FwIFdIRVJFIGlkID0gMTsKKyAgYSAgCist LS0tLQorIDIwMAorKDEgcm93KQorCistLSBFdmVyeSBVUERBVEUgdG9vayB0aGUgSE9ULWlu ZGV4ZWQgcGF0aCAodGhlIFBLIGluZGV4IGlzIHVuY2hhbmdlZCwgc28gaXQgaXMKKy0tIHNr aXBwZWQpLCBzbyBuX3R1cF9ob3RfaW5kZXhlZF91cGQgYWR2YW5jZWQuCitTRUxFQ1QgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGhvdF9p ZHggPiAwIEFTIGhvdF9pbmRleGVkX2ZpcmVkCisgIEZST00gZ2V0X2hpX2NvdW50KCdoaV9j aGFpbmNhcCcpOworIGhvdF9pbmRleGVkX2ZpcmVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLQor IHQKKygxIHJvdykKKworLS0gVGhlIGhlYXAgc3RheWVkIGNvbXBhY3Q6IHBydW5lK2NvbGxh cHNlIHJlY2xhaW1lZCB0aGUgZGVhZCB2ZXJzaW9ucywgc28gdGhlCistLSBzaW5nbGUgbGl2 ZSByb3cgc3RpbGwgb2NjdXBpZXMganVzdCBvbmUgcGFnZS4KK1NFTEVDVCByZWxwYWdlcyA8 PSAxIEFTIGhlYXBfc3RheWVkX2NvbXBhY3QKKyAgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxu YW1lID0gJ2hpX2NoYWluY2FwJzsKKyBoZWFwX3N0YXllZF9jb21wYWN0IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX2NoYWluY2FwOwor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxMi4gUmVjbGFtYXRpb24gb2YgYSBjb2xs YXBzZWQgSE9ULWluZGV4ZWQgY2hhaW4gYnkgcHJ1bmUKKy0tCistLSBBIGRlYWQgSE9ULWlu ZGV4ZWQgY2hhaW4gbWVtYmVyIGlzIHByZXNlcnZlZCBhdCBwcnVuZSB0aW1lIChpdHMgc3Rh bGUgbGVhZgorLS0gbWF5IHN0aWxsIGV4aXN0KSBhbmQgdGhlIGNoYWluIGNvbGxhcHNlcyB0 byBhbiBMUF9SRURJUkVDVCBmb3J3YXJkZXI7IHRoZQorLS0gaW5kZXggY2xlYW51cCBwYXNz IHRoZW4gc3dlZXBzIHRoZSBzdGFsZSBsZWFmLCBhbmQgYSBzZWNvbmQgVkFDVVVNIHJlY2xh aW1zCistLSB0aGUgbm93LXVucmVmZXJlbmNlZCBtZW1iZXIgYW5kIHJlLXBvaW50cyB0aGUg cmVkaXJlY3QuICBTbyB0aGUgY2hhaW4gaXMKKy0tIGZ1bGx5IHJlY2xhaW1lZCBhZnRlciB0 aGUgc2Vjb25kIFZBQ1VVTSwgbm90IHRoZSBmaXJzdC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQ1JFQVRFIFRBQkxFIGhpX3JlY2xhaW0gKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICBhIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVY IGhpX3JlY2xhaW1fYV9pZHggT04gaGlfcmVjbGFpbShhKTsKK0lOU0VSVCBJTlRPIGhpX3Jl Y2xhaW0gVkFMVUVTICgxLCAxMDApOworLS0gR2VuZXJhdGUgYSBjb2xsYXBzZWQgY2hhaW4g dmlhIGEgSE9ULWluZGV4ZWQgdXBkYXRlLgorVVBEQVRFIGhpX3JlY2xhaW0gU0VUIGEgPSAy MDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIG5faG90X2luZGV4ZWQgPj0gMSBBUyBob3RfaW5k ZXhlZF9wcmVzZW50X2JlZm9yZV9yZWNsYWltCisgIEZST00gcGdfcmVsYXRpb25faG90X2lu ZGV4ZWRfc3RhdHMoJ2hpX3JlY2xhaW0nKTsKKyBob3RfaW5kZXhlZF9wcmVzZW50X2JlZm9y ZV9yZWNsYWltIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAor KDEgcm93KQorCistLSBEZWxldGUgdGhlIGxpdmUgdHVwbGUuICBUaGUgZmlyc3QgVkFDVVVN IGNvbGxhcHNlcyB0aGUgZGVhZCBjaGFpbiBhbmQgc3dlZXBzCistLSB0aGUgc3RhbGUgbGVh ZjsgdGhlIHNlY29uZCByZWNsYWltcyB0aGUgbm93LXVucmVmZXJlbmNlZCBtZW1iZXJzLgor REVMRVRFIEZST00gaGlfcmVjbGFpbSBXSEVSRSBpZCA9IDE7CitWQUNVVU0gaGlfcmVjbGFp bTsKK1ZBQ1VVTSBoaV9yZWNsYWltOworU0VMRUNUIG5faG90X2luZGV4ZWQgQVMgaG90X2lu ZGV4ZWRfYWZ0ZXJfcmVjbGFpbSwKKyAgICAgICBuX2NoYWlucyBBUyBjaGFpbnNfYWZ0ZXJf cmVjbGFpbQorICBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9yZWNs YWltJyk7CisgaG90X2luZGV4ZWRfYWZ0ZXJfcmVjbGFpbSB8IGNoYWluc19hZnRlcl9yZWNs YWltIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwIHwgICAgICAgICAgICAgICAgICAgIDAK KygxIHJvdykKKworRFJPUCBUQUJMRSBoaV9yZWNsYWltOworLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCistLSAxMy4gUGFnZSB3aXRoIGEgcHJlc2VydmVkIEhPVC1pbmRleGVkIG1lbWJl ciBpcyBuZXZlciBtYXJrZWQgYWxsLXZpc2libGUKKy0tCistLSBwcnVuZWhlYXAgZGVsaWJl cmF0ZWx5IGxlYXZlcyBQRF9BTExfVklTSUJMRSBjbGVhciBvbiBhbnkgcGFnZSB0aGF0IHN0 aWxsCistLSBjYXJyaWVzIGEgcHJlc2VydmVkIEhPVC1pbmRleGVkIG1lbWJlcjogYW4gaW5k ZXgtb25seSBzY2FuIG11c3QgaGVhcC1mZXRjaAorLS0gdGhyb3VnaCB0aGUgY2hhaW4gc28g dGhlIHJlYWQtc2lkZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgY2FuIGZpbHRlciBzdGFs ZSBidHJlZQorLS0gZW50cmllcy4KKy0tCistLSBXZSBmb3JjZSB0aGUgZnJlZXplIHBhdGgg d2l0aCBWQUNVVU0gKEZSRUVaRSwgRElTQUJMRV9QQUdFX1NLSVBQSU5HKSBhbmQKKy0tIHRo ZW4gcmVhZCBwZF9mbGFncyB2aWEgcGFnZWluc3BlY3QucGFnZV9oZWFkZXIuICBUaGUgcGFn ZSBtdXN0IHN0aWxsIGNhcnJ5CistLSBhIEhPVC1pbmRleGVkIG1lbWJlciAobl9ob3RfaW5k ZXhlZCA+IDApIEFORCBtdXN0IG5vdCBoYXZlIFBEX0FMTF9WSVNJQkxFCistLSAoMHgwMDA0 KS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3ZtICgKKyAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgYSBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9 IDUwKTsKK0NSRUFURSBJTkRFWCBoaV92bV9hX2lkeCBPTiBoaV92bShhKTsKK0lOU0VSVCBJ TlRPIGhpX3ZtIFZBTFVFUyAoMSwgMSk7CistLSBUd28gSE9ULWluZGV4ZWQgdXBkYXRlcyBs ZWF2ZSBhIG11bHRpLWhvcCBjaGFpbiwgc28gYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQKKy0t IG1lbWJlciByZW1haW5zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5lLCB3aGljaCBpcyB3aGF0 IHRoaXMgdGVzdCBuZWVkcy4KK1VQREFURSBoaV92bSBTRVQgYSA9IDIgV0hFUkUgaWQgPSAx OworVVBEQVRFIGhpX3ZtIFNFVCBhID0gMyBXSEVSRSBpZCA9IDE7CistLSBGb3JjZSB0aGUg YWxsLXZpc2libGUgYml0IGRlY2lzaW9uOiBWQUNVVU0gd2l0aCBESVNBQkxFX1BBR0VfU0tJ UFBJTkcKKy0tIGNvbnNpZGVycyBldmVyeSBwYWdlOyBGUkVFWkUgcHVzaGVzIGhpbnQgYml0 cyBoYXJkLiAgQWZ0ZXIgdGhpcywgYW55CistLSBwYWdlIGJlYXJpbmcgYSBwcmVzZXJ2ZWQg SE9ULWluZGV4ZWQgbWVtYmVyIG11c3Qgc3RpbGwgcmVwb3J0IGFsbF92aXNpYmxlID0gMC4K K1ZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BBR0VfU0tJUFBJTkcpIGhpX3ZtOworU0VMRUNU IG5faG90X2luZGV4ZWQgPj0gMSBBUyBob3RfaW5kZXhlZF9wcmVzZW50CisgIEZST00gcGdf cmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX3ZtJyk7CisgaG90X2luZGV4ZWRfcHJl c2VudCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gUERfQUxM X1ZJU0lCTEUgPSAweDAwMDQuICBNdXN0IGJlIDAgb24gYSBwYWdlIHdpdGggYSBwcmVzZXJ2 ZWQgbWVtYmVyLgorU0VMRUNUIChmbGFncyAmIDQpID0gMCBBUyBub3RfbWFya2VkX2FsbF92 aXNpYmxlCisgIEZST00gcGFnZV9oZWFkZXIoZ2V0X3Jhd19wYWdlKCdoaV92bScsIDApKTsK KyBub3RfbWFya2VkX2FsbF92aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg dAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX3ZtOworLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCistLSAxNC4gQ3ljbGUta2V5IGRlZHVwOiBjb2x1bW4gcmVuYW1lIGEgLT4gYiAtPiBh IHN0YXlzIGNvcnJlY3QKKy0tCistLSBBIHJlbmFtZSBkb2VzIG5vdCByZXdyaXRlIGhlYXAg b3IgaW5kZXggZW50cmllczsgaXQgb25seSB1cGRhdGVzIHRoZQorLS0gY2F0YWxvZy4gIFRo ZSByZWxjYWNoZSBpbnZhbGlkYXRpb24gbXVzdCB0cmlnZ2VyIGEgZnJlc2ggYXR0cmlidXRl CistLSBiaXRtYXAgYW5kIHRoZSBIT1QtaW5kZXhlZCBwcmVkaWNhdGUgbXVzdCBjb21wYXJl IGF0dHJpYnV0ZSAqbnVtYmVycyosCistLSBub3QgYXR0cmlidXRlICpuYW1lcyouICBBZnRl ciB0d28gcmVuYW1lcyB0aGF0IG5ldCB0byBpZGVudGl0eSwgZXZlcnkKKy0tIHN1YnNlcXVl bnQgVVBEQVRFIG11c3QgY29udGludWUgdG8gZHJpdmUgdGhlIEhPVC1pbmRleGVkIHBhdGgu CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9jeWNsZSAoCisg ICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGEgaW50CispIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCk7CitDUkVBVEUgSU5ERVggaGlfY3ljbGVfYV9pZHggT04gaGlfY3ljbGUoYSk7CitJ TlNFUlQgSU5UTyBoaV9jeWNsZSBWQUxVRVMgKDEsIDEwMCk7CistLSBDeWNsZSB0aGUgY29s dW1uIG5hbWUgYW5kIGNvbmZpcm0gYm90aCBpbnRlcm1lZGlhdGUgZm9ybXMgZHJpdmUgSE9U LWluZGV4ZWQuCitBTFRFUiBUQUJMRSBoaV9jeWNsZSBSRU5BTUUgQ09MVU1OIGEgVE8gYjsK K1VQREFURSBoaV9jeWNsZSBTRVQgYiA9IDIwMCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGhvdF9p ZHggPiAwIEFTIGhvdF9pbmRleGVkX2FmdGVyX2ZpcnN0X3JlbmFtZQorICBGUk9NIGdldF9o aV9jb3VudCgnaGlfY3ljbGUnKTsKKyBob3RfaW5kZXhlZF9hZnRlcl9maXJzdF9yZW5hbWUg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworQUxU RVIgVEFCTEUgaGlfY3ljbGUgUkVOQU1FIENPTFVNTiBiIFRPIGE7CitVUERBVEUgaGlfY3lj bGUgU0VUIGEgPSAzMDAgV0hFUkUgaWQgPSAxOworLS0gTG9va3VwIHZpYSB0aGUgaW5kZXgg cmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSwgbm90IGFueSBvZiB0aGUKKy0tIHByZS1yZW5h bWUgdmFsdWVzLgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkLCBhIEZS T00gaGlfY3ljbGUgV0hFUkUgYSA9IDMwMDsKKyBpZCB8ICBhICAKKy0tLS0rLS0tLS0KKyAg MSB8IDMwMAorKDEgcm93KQorCitTRUxFQ1QgaWQgRlJPTSBoaV9jeWNsZSBXSEVSRSBhID0g MTAwOworIGlkIAorLS0tLQorKDAgcm93cykKKworU0VMRUNUIGlkIEZST00gaGlfY3ljbGUg V0hFUkUgYSA9IDIwMDsKKyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9z ZXFzY2FuOworRFJPUCBUQUJMRSBoaV9jeWNsZTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorLS0gMTUuIFN1bW1hcml6aW5nLW9ubHkgY29sdW1uIFVQREFURSBwcm9kdWNlcyBDTEFT U0lDLCBub3QgSU5ERVhFRAorLS0KKy0tIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUgcmV0dXJu cyBIRUFQX1VQREFURV9IT1Qgd2hlbiBldmVyeQorLS0gbW9kaWZpZWQgaW5kZXhlZCBhdHRy aWJ1dGUgaXMgY292ZXJlZCBvbmx5IGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMuCistLSBBIEJS SU4tb25seSBjb2x1bW4gaXMgdGhlIGNhbm9uaWNhbCBjYXNlOiB0aGUgQlJJTiBpbmRleCBn ZXRzIGEKKy0tIG5ldyBzdW1tYXJ5IGVudHJ5IHZpYSBhbWluc2VydCwgYnV0IG5vIHBlci11 cGRhdGUgYnRyZWUgZW50cnkgaXMKKy0tIG5lZWRlZCBhbmQgSE9ULWluZGV4ZWQgZG9lcyBu b3QgZmlyZS4gIFRoZSBzaWduYWwgaXMKKy0tIG5fdHVwX2hvdF91cGQgPiAwIHdpdGggbl90 dXBfaG90X2luZGV4ZWRfdXBkIHVuY2hhbmdlZC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorQ1JFQVRFIFRBQkxFIGhpX2JyaW4gKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAg ICBiY29sIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhp X2JyaW5faWR4IE9OIGhpX2JyaW4gVVNJTkcgYnJpbihiY29sKTsKK0lOU0VSVCBJTlRPIGhp X2JyaW4gVkFMVUVTICgxLCAxMDApOworLS0gQ2FwdHVyZSB0aGUgSE9ULWluZGV4ZWQgY291 bnRlciBiZWZvcmUsIGRyaXZlIGEgQlJJTi1vbmx5IHVwZGF0ZSwKKy0tIGFuZCBhc3NlcnQg dGhhdCBjbGFzc2ljIEhPVCBhZHZhbmNlZCB3aGlsZSBIT1QtaW5kZXhlZCBkaWQgbm90Lgor U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NF TEVDVCBob3RfaWR4IEFTIGhvdF9pZHhfYmVmb3JlIEZST00gZ2V0X2hpX2NvdW50KCdoaV9i cmluJykgXGdzZXQKK1VQREFURSBoaV9icmluIFNFVCBiY29sID0gMjAwIFdIRVJFIGlkID0g MTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitTRUxFQ1QgKGhvdCAtIDApID4gMCBBUyBjbGFzc2ljX2hvdF9maXJlZCwKKyAgICAgICBo b3RfaWR4ID0gOmhvdF9pZHhfYmVmb3JlIEFTIGhvdF9pbmRleGVkX2RpZF9ub3RfZmlyZQor ICBGUk9NIGdldF9oaV9jb3VudCgnaGlfYnJpbicpOworIGNsYXNzaWNfaG90X2ZpcmVkIHwg aG90X2luZGV4ZWRfZGlkX25vdF9maXJlIAorLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgICAgICAgIHwgdAorKDEgcm93KQor CistLSBUaGUgQlJJTiBpbmRleCBzZWVzIHRoZSBuZXcgdmFsdWUgdmlhIGFtaW5zZXJ0Lgor U0VMRUNUIGJjb2wgRlJPTSBoaV9icmluIFdIRVJFIGlkID0gMTsKKyBiY29sIAorLS0tLS0t CisgIDIwMAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX2JyaW47CistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKy0tIDE2LiBVTklRVUUgaW5kZXggb24gYSB0eXBlIHdoZXJlIGltYWdl IGVxdWFsaXR5ICE9IG9wZXJhdG9yIGVxdWFsaXR5CistLQorLS0gbnVtZXJpYyAxLjAgYW5k IDEuMDAgYXJlIGVxdWFsIHVuZGVyIHRoZSBidHJlZSBvcGNsYXNzIGJ1dCBoYXZlCistLSBk aWZmZXJlbnQgb24tZGlzayBpbWFnZXMuICBBIEhPVC1pbmRleGVkIHVwZGF0ZSAxLjAgLT4g MS4wMCBpbnNlcnRzIGEKKy0tIGZyZXNoIGxlYWYgY2FycnlpbmcgdGhlIGxpdmUgaW1hZ2Ug YW5kIGxlYXZlcyBhIHN0YWxlIGxlYWYgZm9yIDEuMAorLS0gKHRoZSBob3AncyBtb2RpZmll ZC1hdHRycyBiaXRtYXAgbWFya3MgayBjaGFuZ2VkLCBzaW5jZSBtb2RpZmllZC1jb2x1bW4K Ky0tIGRldGVjdGlvbiBpcyBpbWFnZS1iYXNlZCkuICBBIGxhdGVyIElOU0VSVCBvZiBhIHZh bHVlIGVxdWFsIHVuZGVyIHRoZQorLS0gb3BjbGFzcyBtdXN0IHN0aWxsIGJlIGRldGVjdGVk IGFzIGEgZHVwbGljYXRlOiB0aGUgdW5pcXVlIGNoZWNrIHJlYWNoZXMKKy0tIHRoZSBsaXZl IHR1cGxlIHRocm91Z2ggdGhlIGZyZXNoIGxlYWYsIHdoaWNoIHBvaW50cyBkaXJlY3RseSBh dCBpdCAobm8gaG9wCistLSBhZnRlciBpdCwgc28gdGhlIG92ZXJsYXAgaXMgZW1wdHkgYW5k IHRoZSBsZWFmIGlzIGEgZ2VudWluZSBjb25mbGljdCk7IHRoZQorLS0gc3RhbGUgMS4wIGxl YWYgaXMgc2tpcHBlZCBiZWNhdXNlIHRoZSBrLWNoYW5naW5nIGhvcCBvdmVybGFwcyB0aGUg dW5pcXVlCistLSBpbmRleCdzIGF0dHJpYnV0ZS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorQ1JFQVRFIFRBQkxFIGhpX3VudW0gKGsgbnVtZXJpYyBVTklRVUUsIGogaW50KSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3VudW1faiBPTiBoaV91bnVt KGopOyAgICAgICAgICAgICAtLSAybmQgaW5kZXhlZCBhdHRyLCBrZXB0IGZpeGVkCitJTlNF UlQgSU5UTyBoaV91bnVtIFZBTFVFUyAoMS4wLCAxMDApOworVVBEQVRFIGhpX3VudW0gU0VU IGsgPSAxLjAwIFdIRVJFIGogPSAxMDA7ICAgICAgICAtLSBIT1QtaW5kZXhlZDogMS4wIC0+ IDEuMDAKK1NFTEVDVCBuX2hvdF9pbmRleGVkID4gMCBBUyBtYWRlX2hvdF9pbmRleGVkCisg IEZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX3VudW0nKTsKKyBtYWRl X2hvdF9pbmRleGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBB IG51bWVyaWNhbGx5LWVxdWFsIGluc2VydCBtdXN0IGNvbmZsaWN0ICh0aGUgZnJlc2ggbGVh ZiBjYXRjaGVzIGl0KToKK0lOU0VSVCBJTlRPIGhpX3VudW0gVkFMVUVTICgxLjAsIDEpOyAg ICAgICAgICAgICAgLS0gZXhwZWN0IGR1cGxpY2F0ZSBrZXkgZXJyb3IKK0VSUk9SOiAgZHVw bGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAiaGlfdW51bV9r X2tleSIKK0RFVEFJTDogIEtleSAoayk9KDEuMCkgYWxyZWFkeSBleGlzdHMuCistLSBBIGdl bnVpbmVseSBkaWZmZXJlbnQgdmFsdWUgaXMgYWNjZXB0ZWQ6CitJTlNFUlQgSU5UTyBoaV91 bnVtIFZBTFVFUyAoMi4wLCAyKTsKK1NFTEVDVCBrLCBqIEZST00gaGlfdW51bSBPUkRFUiBC WSBqOworICBrICAgfCAgaiAgCistLS0tLS0rLS0tLS0KKyAgMi4wIHwgICAyCisgMS4wMCB8 IDEwMAorKDIgcm93cykKKworRFJPUCBUQUJMRSBoaV91bnVtOworLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSAxNy4gQ1JFQVRFIElOREVYIGFuZCBSRUlOREVYIG92ZXIgbGl2ZSBI T1QtaW5kZXhlZCBjaGFpbnMKKy0tCistLSBBIGZyZXNobHkgYnVpbHQgb3IgcmVidWlsdCBp bmRleCBtdXN0IHJlZmxlY3QgY3VycmVudCB2YWx1ZXMsIG5ldmVyIGEKKy0tIHN0YWxlIGNo YWluIG1lbWJlcjogdGhlIGJ1aWxkIHNjYW5zIGxpdmUgdHVwbGVzIG9ubHkgYW5kIHBvaW50 cyBlYWNoCistLSBIT1QtaW5kZXhlZCBsaXZlIHR1cGxlJ3MgZW50cnkgYXQgaXRzIG93biBU SUQsIHNvIHRoZSBuZXcgZW50cmllcyBoYXZlIG5vCistLSBob3AgYWZ0ZXIgdGhlbSBhbmQg dGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBrZWVwcyB0aGVtLgorLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcmVpbmRleCAoaWQgaW50IFBSSU1BUlkg S0VZLCBhIGludCwgYiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5E RVggaGlfcmVpbmRleF9hIE9OIGhpX3JlaW5kZXgoYSk7CitJTlNFUlQgSU5UTyBoaV9yZWlu ZGV4IFNFTEVDVCBnLCBnLCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYpIGc7CitVUERB VEUgaGlfcmVpbmRleCBTRVQgYSA9IGEgKyAxMDA7ICAgICAgICAgICAgICAgIC0tIEhPVC1p bmRleGVkIG9uIGEKK1VQREFURSBoaV9yZWluZGV4IFNFVCBhID0gYSArIDEwMDsgICAgICAg ICAgICAgICAgLS0gYWdhaW4gLT4gbG9uZ2VyIGNoYWlucworU0VMRUNUIG5faG90X2luZGV4 ZWQgPiAwIEFTIG1hZGVfaG90X2luZGV4ZWQKKyAgRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5k ZXhlZF9zdGF0cygnaGlfcmVpbmRleCcpOworIG1hZGVfaG90X2luZGV4ZWQgCistLS0tLS0t LS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIEJ1aWxkIGEgTkVXIGluZGV4IGFuZCBS RUlOREVYIHRoZSBleGlzdGluZyBvbmUgb3ZlciB0aGUgbGl2ZSBjaGFpbnMuCitDUkVBVEUg SU5ERVggaGlfcmVpbmRleF9iIE9OIGhpX3JlaW5kZXgoYik7CitSRUlOREVYIElOREVYIGhp X3JlaW5kZXhfYTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSBG Uk9NIGhpX3JlaW5kZXggV0hFUkUgYSA9IDIwNDsgICAgICAgLS0gY3VycmVudCB2YWx1ZSAt PiBpZCA0CisgaWQgfCAgYSAgCistLS0tKy0tLS0tCisgIDQgfCAyMDQKKygxIHJvdykKKwor U0VMRUNUIGNvdW50KCopIEZST00gaGlfcmVpbmRleCBXSEVSRSBhID0gNDsgICAgICAtLSBv YnNvbGV0ZSB2YWx1ZSAtPiAwCisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykK KworU0VMRUNUIGlkIEZST00gaGlfcmVpbmRleCBXSEVSRSBiID0gMjsgICAgICAgICAgICAt LSB2aWEgZnJlc2hseSBidWlsdCBpbmRleCAtPiAyCisgaWQgCistLS0tCisgIDIKKygxIHJv dykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX3JlaW5kZXg7Cist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDE4LiBEUk9QIGV2ZXJ5IGluZGV4IG92ZXIg bGl2ZSBIT1QtaW5kZXhlZCBjaGFpbnMsIHRoZW4gVkFDVVVNCistLQorLS0gQWZ0ZXIgYWxs IGluZGV4ZXMgYXJlIGRyb3BwZWQsIGhlYXAgcGFnZXMgbWF5IHN0aWxsIGNhcnJ5IHByZXNl cnZlZAorLS0gSE9ULWluZGV4ZWQgbWVtYmVycyBsZWZ0IGJ5IGVhcmxpZXIgdXBkYXRlcy4g IFZBQ1VVTSBvZiBzdWNoIGEgbm8taW5kZXgKKy0tIHJlbGF0aW9uIG11c3QgY29tcGxldGUg d2l0aG91dCBlcnJvciwgYW5kIHJlYWRzIG11c3Qgc3RheSBjb3JyZWN0IHZpYSB0aGUKKy0t IHJlZGlyZWN0IGZvcndhcmRlcnMuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFU RSBUQUJMRSBoaV9kcm9waWR4IChpZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50KSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2Ryb3BpZHhfYSBPTiBoaV9kcm9w aWR4KGEpOworSU5TRVJUIElOVE8gaGlfZHJvcGlkeCBTRUxFQ1QgZywgZyBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA2KSBnOworVVBEQVRFIGhpX2Ryb3BpZHggU0VUIGEgPSBhICsgMTAw OyAgICAgICAgICAgICAgICAtLSBIT1QtaW5kZXhlZCBvbiBhCitVUERBVEUgaGlfZHJvcGlk eCBTRVQgYSA9IGEgKyAxMDA7ICAgICAgICAgICAgICAgIC0tIGFnYWluIC0+IGxvbmdlciBj aGFpbnMKK1NFTEVDVCBuX2hvdF9pbmRleGVkID4gMCBBUyBtYWRlX2hvdF9pbmRleGVkCisg IEZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX2Ryb3BpZHgnKTsKKyBt YWRlX2hvdF9pbmRleGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCist LSBEcm9wIGV2ZXJ5IGluZGV4LCBsZWF2aW5nIHByZXNlcnZlZCBIT1QtaW5kZXhlZCBtZW1i ZXJzIHdpdGggbm8gaW5kZXggdG8gc3dlZXAuCitEUk9QIElOREVYIGhpX2Ryb3BpZHhfYTsK K0FMVEVSIFRBQkxFIGhpX2Ryb3BpZHggRFJPUCBDT05TVFJBSU5UIGhpX2Ryb3BpZHhfcGtl eTsKKy0tIE11c3Qgbm90IGNyYXNoIG9uIHRoZSBuby1pbmRleCBwYXRoOyB0d28gcGFzc2Vz IGV4ZXJjaXNlIHRoZSBzZWNvbmQtcGFzcworLS0gcmVjbGFpbSBndWFyZCBhcyB3ZWxsLgor VkFDVVVNIGhpX2Ryb3BpZHg7CitWQUNVVU0gaGlfZHJvcGlkeDsKKy0tIFJlYWRzIHJlbWFp biBjb3JyZWN0IGFmdGVyIHRoZSBpbmRleGVzIGFyZSBnb25lLgorU0VMRUNUIGlkLCBhIEZS T00gaGlfZHJvcGlkeCBPUkRFUiBCWSBpZDsKKyBpZCB8ICBhICAKKy0tLS0rLS0tLS0KKyAg MSB8IDIwMQorICAyIHwgMjAyCisgIDMgfCAyMDMKKyAgNCB8IDIwNAorICA1IHwgMjA1Cisg IDYgfCAyMDYKKyg2IHJvd3MpCisKK0RST1AgVEFCTEUgaGlfZHJvcGlkeDsKKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorLS0gMTkuIFJlLWNvbGxhcHNlIG9mIGEgZGF0YS1yZWRpcmVj dCBjaGFpbiBhY3Jvc3MgcGFydGlhbCBWQUNVVU1zCistLQorLS0gQSBjaGFpbiB0aGF0IGNv bGxhcHNlcyB0byBhIEhPVC1pbmRleGVkIGRhdGEgcmVkaXJlY3QsIGlzIHZhY3V1bWVkIHdp dGgKKy0tIElOREVYX0NMRUFOVVAgb2ZmIChzbyB0aGUgc3RhbGUgbGVhdmVzIGFuZCB0aGUg cmVkaXJlY3Qgc3Vydml2ZSksIHRoZW4KKy0tIHJlY2VpdmVzIGZ1cnRoZXIgSE9ULWluZGV4 ZWQgdXBkYXRlcyB0aGF0IHJlLWNvbGxhcHNlIHRoZSBjaGFpbiBhbmQKKy0tIHJlLXBvaW50 IHRoZSByZWRpcmVjdCBhdCBhIG5ldyBsaXZlIHR1cGxlLCBtdXN0IG5vdCBsZWF2ZSB0aGUg cmVkaXJlY3QKKy0tIGRhbmdsaW5nLiAgQSBzdWJzZXF1ZW50IGZ1bGwgVkFDVVVNIG11c3Qg Y29tcGxldGUgd2l0aG91dCBlcnJvciwgbGVhdmUgdGhlCistLSBoZWFwIGNvbnNpc3RlbnQg KHZlcmlmeV9oZWFwYW0gcmVwb3J0cyBub3RoaW5nKSwgYW5kIHJlYWRzIG11c3Qgc3RheQor LS0gY29ycmVjdC4gIChSZWdyZXNzaW9uOiBhbiBlYXJsaWVyIHJldmlzaW9uIGNyYXNoZWQg cmVjbGFpbWluZyBhIG1pZC1jaGFpbgorLS0gbWVtYmVyIHdoaWxlIGEgZGF0YSByZWRpcmVj dCBzdGlsbCBwb2ludGVkIHBhc3QgaXQuKQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitD UkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgYW1jaGVjazsKK0NSRUFURSBUQUJMRSBo aV9yZWNvbGxhcHNlIChpZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50KSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3JlY29sbGFwc2VfYSBPTiBoaV9yZWNvbGxh cHNlKGEpOworSU5TRVJUIElOVE8gaGlfcmVjb2xsYXBzZSBWQUxVRVMgKDEsIDEpOworLS0g Rmlyc3QgY2hhaW46IHR3byBIT1QtaW5kZXhlZCB1cGRhdGVzLCB0aGVuIHBydW5lIHRvIGEg ZGF0YSByZWRpcmVjdCB3aGlsZQorLS0gbGVhdmluZyB0aGUgc3RhbGUgYnRyZWUgbGVhdmVz IGluIHBsYWNlIChJTkRFWF9DTEVBTlVQIG9mZikuCitVUERBVEUgaGlfcmVjb2xsYXBzZSBT RVQgYSA9IDIgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX3JlY29sbGFwc2UgU0VUIGEgPSAz IFdIRVJFIGlkID0gMTsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpX3JlY29sbGFw c2U7CistLSBSZS1jb2xsYXBzZTogbW9yZSBIT1QtaW5kZXhlZCB1cGRhdGVzIGV4dGVuZCB0 aGUgY2hhaW4gcGFzdCB0aGUgcmVkaXJlY3QKKy0tIHRhcmdldDsgdGhlIG5leHQgcHJ1bmUg cmUtcG9pbnRzIHRoZSBkYXRhIHJlZGlyZWN0IGF0IHRoZSBuZXcgZmlyc3QgbGl2ZQorLS0g dHVwbGUgYW5kIGV4dGVuZHMgaXRzIHVuaW9uLgorVVBEQVRFIGhpX3JlY29sbGFwc2UgU0VU IGEgPSA0IFdIRVJFIGlkID0gMTsKK1VQREFURSBoaV9yZWNvbGxhcHNlIFNFVCBhID0gNSBX SEVSRSBpZCA9IDE7CitWQUNVVU0gKElOREVYX0NMRUFOVVAgb2ZmKSBoaV9yZWNvbGxhcHNl OworLS0gRnVsbCB2YWN1dW0gbm93IHJlY2xhaW1zIHRoZSBkZWFkIGNoYWluOyB0aGUgcmUt cG9pbnRlZCByZWRpcmVjdCBtdXN0IG5vdAorLS0gZGFuZ2xlLiAgVHdvIHBhc3NlcyBhbHNv IGV4ZXJjaXNlIHRoZSByZWRpcmVjdCByZS1wb2ludCBzZWNvbmQgcGFzcy4KK1ZBQ1VVTSBo aV9yZWNvbGxhcHNlOworVkFDVVVNIGhpX3JlY29sbGFwc2U7CistLSBIZWFwIG11c3QgYmUg c3RydWN0dXJhbGx5IGNvbnNpc3RlbnQgKG5vIHJvd3MgPT0gbm8gY29ycnVwdGlvbikuCitT RUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3JlY29sbGFwc2UnKTsKKyBibGtubyB8 IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0KKygwIHJvd3MpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwg YSBGUk9NIGhpX3JlY29sbGFwc2UgV0hFUkUgYSA9IDU7ICAgICAtLSBjdXJyZW50IHZhbHVl IC0+IGlkIDEKKyBpZCB8IGEgCistLS0tKy0tLQorICAxIHwgNQorKDEgcm93KQorCitTRUxF Q1QgY291bnQoKikgRlJPTSBoaV9yZWNvbGxhcHNlIFdIRVJFIGEgPSAzOyAgLS0gb2Jzb2xl dGUgdmFsdWUgLT4gMAorIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKK1JF U0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUIGlkLCBhIEZST00gaGlfcmVjb2xsYXBzZSBP UkRFUiBCWSBpZDsKKyBpZCB8IGEgCistLS0tKy0tLQorICAxIHwgNQorKDEgcm93KQorCitE Uk9QIFRBQkxFIGhpX3JlY29sbGFwc2U7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDIwLiBJbmRleCBkZWxldGlvbiBvdmVyIGFuIGVudHJ5IHRoYXQgcG9pbnRzIGF0IGEgZGF0 YS1yZWRpcmVjdCByb290CistLQorLS0gQSBkYXRhIHJlZGlyZWN0IGlzIGFuIExQX1JFRElS RUNUIHRoYXQgY2FycmllcyBhIGJpdG1hcCwgc28gaXQgcmVwb3J0cworLS0gbHBfbGVuID4g MCAoSXRlbUlkSGFzU3RvcmFnZSB0cnVlKSBldmVuIHRob3VnaCBpdCBpcyBub3QgYSBub3Jt YWwgdHVwbGUuCistLSBpbmRleF9kZWxldGVfY2hlY2tfaHRpZCBtdXN0IHRyZWF0IGl0IGFz IGEgcmVkaXJlY3QsIG5vdCByZWFkIGl0cyBibG9iIGFzIGEKKy0tIEhlYXBUdXBsZUhlYWRl ci4gIFJlcHJvZHVjZTogY29sbGFwc2UgYSBjaGFpbiByb290IHRvIGEgZGF0YSByZWRpcmVj dCB3aGlsZQorLS0ga2VlcGluZyB0aGUgc3RhbGUgbGVhZiB0aGF0IHBvaW50cyBhdCBpdCAo SU5ERVhfQ0xFQU5VUCBvZmYpLCB0aGVuIGluc2VydAorLS0gbWFueSBkdXBsaWNhdGVzIG9m IHRoZSBzdGFsZSBrZXkgc28gYnRyZWUgYm90dG9tLXVwIGRlbGV0aW9uIHJ1bnMKKy0tIGhl YXBfaW5kZXhfZGVsZXRlX3R1cGxlcyBvdmVyIHRoYXQgc3RhbGUgZW50cnkuCistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9pZGRlbCAoaWQgaW50LCBhIGlu dCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9pZGRlbF9hIE9O IGhpX2lkZGVsKGEpOworSU5TRVJUIElOVE8gaGlfaWRkZWwgVkFMVUVTICgxLCAxKTsKK1VQ REFURSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdIRVJFIGlkID0gMTsgICAgICAgICAgLS0g SE9ULWluZGV4ZWQKK1VQREFURSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdIRVJFIGlkID0g MTsgICAgICAgICAgLS0gbXVsdGktaG9wIGNoYWluCitWQUNVVU0gKElOREVYX0NMRUFOVVAg b2ZmKSBoaV9pZGRlbDsgICAgICAgICAgICAgICAgIC0tIHJvb3QgLT4gZGF0YSByZWRpcmVj dCwga2VlcCBzdGFsZSBhPTEgbGVhZgorLS0gTWFueSBkdXBsaWNhdGVzIG9mIHRoZSBzdGFs ZSBrZXkgZmlsbCB0aGUgbGVhZiBhbmQgdHJpZ2dlciBib3R0b20tdXAKKy0tIGRlbGV0aW9u LCB3aGljaCBmZWVkcyB0aGUgc3RhbGUgYT0xIGVudHJ5IChodGlkIC0+IHRoZSBkYXRhLXJl ZGlyZWN0IHJvb3QpCistLSB0byBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMuICBNdXN0IG5v dCBjcmFzaCBvciBtaXNyZWFkIHRoZSBibG9iLgorSU5TRVJUIElOVE8gaGlfaWRkZWwgU0VM RUNUIGcsIDEgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMiwgMzAwMCkgZzsKK1ZBQ1VVTSBoaV9p ZGRlbDsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfaWRkZWwnKTsKKyBibGtu byB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0KKygwIHJvd3MpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBp ZCwgYSBGUk9NIGhpX2lkZGVsIFdIRVJFIGlkID0gMTsgICAgICAgICAgICAgLS0gY3VycmVu dCB2YWx1ZSAtPiBhID0gMworIGlkIHwgYSAKKy0tLS0rLS0tCisgIDEgfCAzCisoMSByb3cp CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9pZGRlbDsKKy0tIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjEuIEEgY2hhbmdlIHRvIGEgY29sdW1uIGNvdmVy ZWQgYnkgYSBub24tYnRyZWUgaW5kZXggQU0gaXMgSE9ULWluZGV4ZWQKKy0tCistLSBBIEhP VC1pbmRleGVkIHVwZGF0ZSBsZWF2ZXMgYSBzdGFsZSBwcmUtdXBkYXRlIGxlYWYgdGhhdCB0 aGUgcmVhZCBzaWRlCistLSBmaWx0ZXJzIHZpYSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0 bWFwLCB3aGljaCBpcyBhY2Nlc3MtbWV0aG9kIGFnbm9zdGljLgorLS0gQSBjb2x1bW4gY292 ZXJlZCBieSBhIG5vbi1idHJlZSBpbmRleCAoaGVyZSBhIEdpU1QgaW5kZXggb24gYSBwb2lu dCBjb2x1bW4pCistLSBpcyB0aGVyZWZvcmUgSE9ULWluZGV4ZWQgbGlrZSBhbnkgb3RoZXIs IGFuZCB0aGUgR2lTVCBpbmRleCBzdGlsbCByZXR1cm5zCistLSBjb3JyZWN0IHJlc3VsdHMg YWNyb3NzIHRoZSBjaGFpbi4gIEEgY2hhbmdlIHRvIGEgYnRyZWUtb25seSBjb2x1bW4gb24g dGhlCistLSBzYW1lIHRhYmxlIGlzIGxpa2V3aXNlIEhPVC1pbmRleGVkLgorLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfbm9uYnRyZWUgKGlkIGludCBQUklN QVJZIEtFWSwgdGFnIGludCwgcCBwb2ludCkKKyAgICBXSVRIIChmaWxsZmFjdG9yID0gMTAp OworQ1JFQVRFIElOREVYIGhpX25vbmJ0cmVlX3RhZyBPTiBoaV9ub25idHJlZSAodGFnKTsg ICAgICAgICAgLS0gYnRyZWUgaW5kZXgKK0NSRUFURSBJTkRFWCBoaV9ub25idHJlZV9wIE9O IGhpX25vbmJ0cmVlIFVTSU5HIGdpc3QgKHApOyAgIC0tIEdpU1QsIG5vbi1idHJlZQorSU5T RVJUIElOVE8gaGlfbm9uYnRyZWUgU0VMRUNUIGcsIGcsIHBvaW50KGcsIGcpCisgICAgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnOworLS0gQ2hhbmdlIHRoZSBHaVNULWNvdmVy ZWQgY29sdW1uIGZpcnN0OiBIT1QtaW5kZXhlZCAoaG90X2lkeCA9IDIwMCkuCitVUERBVEUg aGlfbm9uYnRyZWUgU0VUIHAgPSBwb2ludChwWzBdICsgMTAwMCwgcFsxXSArIDEwMDApOwor U0VMRUNUIGhvdF9pZHggQVMgZ2lzdF9jb2xfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291 bnQoJ2hpX25vbmJ0cmVlJyk7CisgZ2lzdF9jb2xfaG90X2luZGV4ZWQgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAyMDAKKygxIHJvdykKKworLS0gVGhl IEdpU1QgaW5kZXggbXVzdCByZXR1cm4gY29ycmVjdCByZXN1bHRzOiB0aGUgb2xkIHBvc2l0 aW9ucyBhcmUgZ29uZSBhbmQKKy0tIGV2ZXJ5IHJvdyBpcyBmb3VuZCBhdCBpdHMgbmV3IHBv c2l0aW9uIChubyBzdGFsZSBsZWFmIHN1cmZhY2VzIGFuIG9sZCBrZXkpLgorU0VUIGVuYWJs ZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEFTIGF0X29sZF9wb3NpdGlvbnMK KyAgICBGUk9NIGhpX25vbmJ0cmVlIFdIRVJFIHAgPEAgYm94KHBvaW50KDAsIDApLCBwb2lu dCgzMDAsIDMwMCkpOworIGF0X29sZF9wb3NpdGlvbnMgCistLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBBUyBhdF9u ZXdfcG9zaXRpb25zCisgICAgRlJPTSBoaV9ub25idHJlZSBXSEVSRSBwIDxAIGJveChwb2lu dCgxMDAwLCAxMDAwKSwgcG9pbnQoMTMwMCwgMTMwMCkpOworIGF0X25ld19wb3NpdGlvbnMg CistLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMjAwCisoMSByb3cpCisKK1JF U0VUIGVuYWJsZV9zZXFzY2FuOworLS0gQ2hhbmdpbmcgdGhlIGJ0cmVlLW9ubHkgY29sdW1u IChwIHVuY2hhbmdlZCkgc3RheXMgSE9ULWluZGV4ZWQuCitVUERBVEUgaGlfbm9uYnRyZWUg U0VUIHRhZyA9IHRhZyArIDEwMDA7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgYnRyZWVfY29s X2lzX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9ub25idHJlZScpOworIGJ0 cmVlX2NvbF9pc19ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg dAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX25vbmJ0cmVlOworLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSAyMi4gQUJBIG9uIGEgdW5pcXVlIGtleSBhY3Jvc3MgdHdvIGRpc3Rp bmN0IGxpdmUgcm93czogYSBrZXkgY3ljbGVkIGF3YXkKKy0tIGFuZCBiYWNrIG11c3Qgc3Rp bGwgY29sbGlkZSB3aXRoIGFub3RoZXIgcm93IHRoYXQgaG9sZHMgaXQuICBUaGUgc3RhbGUK Ky0tIGxlYXZlcyBsZWZ0IGJ5IHRoZSBjeWNsZSBtdXN0IG5vdCBsZXQgYSBnZW51aW5lIGR1 cGxpY2F0ZSBzbGlwIHBhc3QgdGhlCistLSB1bmlxdWVuZXNzIGNoZWNrIC0tIHRoZSByZWFk LXNpZGUgcmVjaGVjayBjb21wYXJlcyB0aGUgbGl2ZSBrZXksIG5vdCBqdXN0CistLSBhIGNo YW5nZWQtYXR0cmlidXRlIGJpdG1hcC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JF QVRFIFRBQkxFIGhpX2FiYSAoayBpbnQsIHYgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworQ1JFQVRFIFVOSVFVRSBJTkRFWCBoaV9hYmFfayBPTiBoaV9hYmEgKGspOworQ1JFQVRF IElOREVYIGhpX2FiYV92IE9OIGhpX2FiYSAodik7CitJTlNFUlQgSU5UTyBoaV9hYmEgVkFM VUVTICgxLCAxMCksICgyLCAyMCk7CistLSBDeWNsZSByb3cxJ3MgdW5pcXVlIGtleSAxIC0+ IDMgLT4gMSAodiB1bmNoYW5nZWQsIHNvIGVhY2ggc3RlcCBpcworLS0gSE9ULWluZGV4ZWQg YW5kIGxlYXZlcyBzdGFsZSBlbnRyaWVzIGluIGhpX2FiYV9rKS4KK1VQREFURSBoaV9hYmEg U0VUIGsgPSAzIFdIRVJFIHYgPSAxMDsKK1VQREFURSBoaV9hYmEgU0VUIGsgPSAxIFdIRVJF IHYgPSAxMDsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBjeWNsZWRfaG90X2luZGV4ZWQgRlJP TSBnZXRfaGlfY291bnQoJ2hpX2FiYScpOworIGN5Y2xlZF9ob3RfaW5kZXhlZCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSByb3cxIGlzIGxpdmUgYXQgayA9 IDEgYWdhaW4uICBNb3Zpbmcgcm93MiBvbnRvIGsgPSAxIG11c3QgcmFpc2UgYSB1bmlxdWUK Ky0tIHZpb2xhdGlvbiBkZXNwaXRlIHRoZSBzdGFsZSAnMScgbGVhdmVzIGZyb20gdGhlIGN5 Y2xlLgorVVBEQVRFIGhpX2FiYSBTRVQgayA9IDEgV0hFUkUgdiA9IDIwOworRVJST1I6ICBk dXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJoaV9hYmFf ayIKK0RFVEFJTDogIEtleSAoayk9KDEpIGFscmVhZHkgZXhpc3RzLgorRFJPUCBUQUJMRSBo aV9hYmE7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIzLiBQYXJ0aWFsIGluZGV4 IHdob3NlIHByZWRpY2F0ZSByZWZlcmVuY2VzIGEgbm9uLWtleSBjb2x1bW4uICBGbGlwcGlu ZyB0aGUKKy0tIHJvdyBvdXQgb2YgdGhlIHByZWRpY2F0ZSB3aGlsZSBsZWF2aW5nIHRoZSBp bmRleGVkIGtleSB1bmNoYW5nZWQgaXMKKy0tIEhPVC1pbmRleGVkOiB0aGUgcHJlZGljYXRl IGNvbHVtbiBpcyBwYXJ0IG9mIHRoZSBpbmRleCdzIGF0dHJpYnV0ZSBzZXQsIHNvCistLSB0 aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBub3ctc3RhbGUgcGFydGlh bC1pbmRleCBlbnRyeSBvbiByZWFkCistLSAobm8gdmFsdWUgcmVjaGVjayBpcyBpbnZvbHZl ZCkuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0cHJl ZCAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgYWN0aXZlIGJvb2xlYW4pCisgICAgV0lU SCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0cHJlZF9rIE9OIGhp X3BhcnRwcmVkIChrKSBXSEVSRSBhY3RpdmU7CitJTlNFUlQgSU5UTyBoaV9wYXJ0cHJlZCBW QUxVRVMgKDEsIDEwMCwgdHJ1ZSk7CistLSBGbGlwIHRoZSBwcmVkaWNhdGUgY29sdW1uICdh Y3RpdmUnIHRydWUgLT4gZmFsc2U7IHRoZSBpbmRleCBrZXkgayBpcworLS0gdW5jaGFuZ2Vk LiAgVGhlIHJvdyBubyBsb25nZXIgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUsIHNvIGl0cyBw YXJ0aWFsLWluZGV4CistLSBlbnRyeSBtdXN0IGJlIHJlbW92ZWQsIG5vdCBsZWZ0IHBvaW50 aW5nIGludG8gdGhlIGNoYWluLgorVVBEQVRFIGhpX3BhcnRwcmVkIFNFVCBhY3RpdmUgPSBm YWxzZSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7 CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUIGhvdCwgaG90X2lkeCBGUk9NIGdldF9oaV9jb3Vu dCgnaGlfcGFydHByZWQnKTsKKyBob3QgfCBob3RfaWR4IAorLS0tLS0rLS0tLS0tLS0tCisg ICAxIHwgICAgICAgMQorKDEgcm93KQorCistLSBUaGUgcGFydGlhbCBpbmRleCBtdXN0IG5v dCBzdXJmYWNlIHRoZSByb3cgbm93IHRoYXQgYWN0aXZlID0gZmFsc2UuCistLSBBIHF1ZXJ5 IHdob3NlIHF1YWwgZXhhY3RseSBtYXRjaGVzIHRoZSBwYXJ0aWFsIHByZWRpY2F0ZSB1c2Vz IHRoZSBpbmRleAorLS0gd2l0aG91dCByZS1maWx0ZXJpbmcgJ2FjdGl2ZScgb24gdGhlIGhl YXAsIHNvIGEgc3RhbGUgZW50cnkgd291bGQgc3VyZmFjZS4KK1NFVCBlbmFibGVfc2Vxc2Nh biA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK0VYUExBSU4gKENPU1RT IE9GRikgU0VMRUNUIGlkIEZST00gaGlfcGFydHByZWQgV0hFUkUgYWN0aXZlOworICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2lu ZyBoaV9wYXJ0cHJlZF9rIG9uIGhpX3BhcnRwcmVkCisoMSByb3cpCisKK1NFTEVDVCBpZCBG Uk9NIGhpX3BhcnRwcmVkIFdIRVJFIGsgPSAxMDAgQU5EIGFjdGl2ZTsKKyBpZCAKKy0tLS0K KygwIHJvd3MpCisKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnRwcmVkIFdIRVJFIGFjdGl2ZTsK KyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVT RVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX3BhcnRwcmVkOworLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSAyNC4gUmVjbGFpbSArIHN0dWIgbWl4LiAgUmVwZWF0ZWQg dXBkYXRlcyBvZiBjb2x1bW4gYSBmb2xsb3dlZCBieSBhbiB1cGRhdGUKKy0tIG9mIGNvbHVt biBiIGJ1aWxkIGEgY2hhaW4gd2hvc2UgcHJ1bmUgcmVjbGFpbXMgdGhlIG1lbWJlcnMgd2hv c2UgY2hhbmdlIHdhcworLS0gc3VwZXJzZWRlZCAoYSBjaGFuZ2VkIGFnYWluKSBhbmQga2Vl cHMgc3R1YnMgZm9yIHRob3NlIHRoYXQgd2VyZSBub3QsIHNvIGEKKy0tIHJvb3QgcmVkaXJl Y3QgZW5kcyB1cCBwb2ludGluZyBhdCBhIHN0dWIgYW5kIGEgbGF0ZXIgd2FsayBjcm9zc2Vz IG1pZC1jaGFpbgorLS0gc3R1YnMuICBSZWFkcyB0aHJvdWdoIGVhY2ggaW5kZXggYW5kIGFt Y2hlY2sgbXVzdCBzdGF5IGNvcnJlY3QgYWNyb3NzIHRoZQorLS0gY29sbGFwc2UsIGFuZCBh IHNlY29uZCByb3VuZCBtdXN0IHdhbGsgdGhlIGV4aXN0aW5nIHN0dWJzIHdpdGhvdXQgc2V2 ZXJpbmcKKy0tIHRoZSBjaGFpbi4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRF IFRBQkxFIGhpX3N0dWJtaXggKGlkIGludCBQUklNQVJZIEtFWSwgYSBpbnQsIGIgaW50KSBX SVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3N0dWJtaXhfYSBPTiBo aV9zdHVibWl4IChhKTsKK0NSRUFURSBJTkRFWCBoaV9zdHVibWl4X2IgT04gaGlfc3R1Ym1p eCAoYik7CitJTlNFUlQgSU5UTyBoaV9zdHVibWl4IFZBTFVFUyAoMSwgMTAsIDEwMCk7CitV UERBVEUgaGlfc3R1Ym1peCBTRVQgYSA9IDExIFdIRVJFIGlkID0gMTsgICAtLSBjaGFuZ2Vz IGEKK1VQREFURSBoaV9zdHVibWl4IFNFVCBhID0gMTIgV0hFUkUgaWQgPSAxOyAgIC0tIGNo YW5nZXMgYSBhZ2FpbiAoc3VwZXJzZWRlcykKK1VQREFURSBoaV9zdHVibWl4IFNFVCBiID0g MTAxIFdIRVJFIGlkID0gMTsgIC0tIGNoYW5nZXMgYgorVkFDVVVNIGhpX3N0dWJtaXg7CitT RVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7 CitTRUxFQ1QgaWQsIGEsIGIgRlJPTSBoaV9zdHVibWl4IFdIRVJFIGEgPSAxMjsgICAtLSBj dXJyZW50IGEKKyBpZCB8IGEgIHwgIGIgIAorLS0tLSstLS0tKy0tLS0tCisgIDEgfCAxMiB8 IDEwMQorKDEgcm93KQorCitTRUxFQ1QgaWQsIGEsIGIgRlJPTSBoaV9zdHVibWl4IFdIRVJF IGIgPSAxMDE7ICAtLSBjdXJyZW50IGIKKyBpZCB8IGEgIHwgIGIgIAorLS0tLSstLS0tKy0t LS0tCisgIDEgfCAxMiB8IDEwMQorKDEgcm93KQorCitTRUxFQ1QgaWQgRlJPTSBoaV9zdHVi bWl4IFdIRVJFIGEgPSAxMDsgICAgICAgICAtLSBzdGFsZSBhOiAwIHJvd3MKKyBpZCAKKy0t LS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxl X3NlcXNjYW47CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3N0dWJtaXgnKTsg ICAgICAtLSBubyBjb3JydXB0aW9uIGFjcm9zcyBzdHVicworIGJsa25vIHwgb2ZmbnVtIHwg YXR0bnVtIHwgbXNnIAorLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLQorKDAgcm93 cykKKworLS0gQSBzZWNvbmQgcm91bmQgbXVzdCB3YWxrIHRoZSBleGlzdGluZyBzdHVicyAo bm8gcHJpb3JYbWF4IHNldmVyKS4KK1VQREFURSBoaV9zdHVibWl4IFNFVCBhID0gMTMgV0hF UkUgaWQgPSAxOworVkFDVVVNIGhpX3N0dWJtaXg7CitTRUxFQ1QgaWQsIGEsIGIgRlJPTSBo aV9zdHVibWl4IFdIRVJFIGEgPSAxMzsKKyBpZCB8IGEgIHwgIGIgIAorLS0tLSstLS0tKy0t LS0tCisgIDEgfCAxMyB8IDEwMQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9o ZWFwYW0oJ2hpX3N0dWJtaXgnKTsKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAK Ky0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK0RST1AgVEFC TEUgaGlfc3R1Ym1peDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjMuIEV4Y2x1 c2lvbi1jb25zdHJhaW50IHRhYmxlcyBhcmUgSE9ULWluZGV4ZWQtZWxpZ2libGUuCistLQor LS0gQW4gZXhjbHVzaW9uIGNvbnN0cmFpbnQgaXMgZW5mb3JjZWQgYnkgY2hlY2tfZXhjbHVz aW9uX29yX3VuaXF1ZV9jb25zdHJhaW50LAorLS0gd2hpY2ggcmVjaGVja3MgZWFjaCBjYW5k aWRhdGUgYWdhaW5zdCB0aGUgbGl2ZSB0dXBsZSdzIGN1cnJlbnQgaW5kZXgtZm9ybQorLS0g d2l0aCB0aGUgY29uc3RyYWludCdzIG93biBvcGVyYXRvcnMsIHNvIGEgc3RhbGUgZW50cnkg bGVmdCBieSBhIEhPVC1pbmRleGVkCistLSB1cGRhdGUgaXMgc2tpcHBlZCB3aGlsZSB0aGUg bGl2ZSBrZXkgYWx3YXlzIGhhcyBpdHMgb3duIGVudHJ5LiAgVXBkYXRpbmcgYQorLS0gbm9u LWNvbnN0cmFpbmVkIGluZGV4ZWQgY29sdW1uIGlzIEhPVC1pbmRleGVkICh0aGUgR2lTVCBl eGNsdXNpb24gaW5kZXggaXMKKy0tIHNraXBwZWQpLCBhbmQgdGhlIGNvbnN0cmFpbnQgc3Rh eXMgY29ycmVjdC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhp X2V4Y2wgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0YWcgaW50LAorICAgIGR1 cmluZyBpbnQ0cmFuZ2UsCisgICAgRVhDTFVERSBVU0lORyBnaXN0IChkdXJpbmcgV0lUSCAm JikKKykgV0lUSCAoZmlsbGZhY3RvciA9IDEwKTsKK0NSRUFURSBJTkRFWCBoaV9leGNsX3Rh ZyBPTiBoaV9leGNsKHRhZyk7CitJTlNFUlQgSU5UTyBoaV9leGNsIFZBTFVFUyAoMSwgMTAw LCBpbnQ0cmFuZ2UoMSwgMTApKSwgKDIsIDIwMCwgaW50NHJhbmdlKDIwLCAzMCkpOworLS0g VXBkYXRlIGEgbm9uLWNvbnN0cmFpbmVkIGluZGV4ZWQgY29sdW1uOiBIT1QtaW5kZXhlZCAo R2lTVCBleGNsdXNpb24gaW5kZXgKKy0tIGFuZCBQSyBza2lwcGVkKSwgYW5kIHRoZSBleGNs dXNpb24gY29uc3RyYWludCBpcyBzdGlsbCBlbmZvcmNlZC4KK1VQREFURSBoaV9leGNsIFNF VCB0YWcgPSB0YWcgKyAxIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyB0 YWdfdXBkYXRlX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9leGNsJyk7Cisg dGFnX3VwZGF0ZV9ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQK KygxIHJvdykKKworSU5TRVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDMsIDMwMCwgaW50NHJh bmdlKDUsIDE1KSk7ICAtLSBvdmVybGFwcyBpZD0xJ3MgKDEsMTApCitFUlJPUjogIGNvbmZs aWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAiaGlfZXhj bF9kdXJpbmdfZXhjbCIKK0RFVEFJTDogIEtleSAoZHVyaW5nKT0oWzUsMTUpKSBjb25mbGlj dHMgd2l0aCBleGlzdGluZyBrZXkgKGR1cmluZyk9KFsxLDEwKSkuCistLSBNb3ZlIGlkPTEn cyByYW5nZSBhd2F5ICh0aGlzIHVwZGF0ZXMgdGhlIEdpU1QgaW5kZXgsIGxlYXZpbmcgYSBz dGFsZSBlbnRyeQorLS0gZm9yIHRoZSBvbGQgKDEsMTApIHJhbmdlKS4gIEEgcmFuZ2Ugb3Zl cmxhcHBpbmcgb25seSB0aGUgT0xEIHJhbmdlIG5vdworLS0gaW5zZXJ0cyBjbGVhbmx5ICh0 aGUgc3RhbGUgZW50cnkgaXMgc2tpcHBlZCk7IG9uZSBvdmVybGFwcGluZyB0aGUgTkVXIHJh bmdlCistLSBzdGlsbCBjb25mbGljdHMuCitVUERBVEUgaGlfZXhjbCBTRVQgZHVyaW5nID0g aW50NHJhbmdlKDEwMCwgMTEwKSBXSEVSRSBpZCA9IDE7CitJTlNFUlQgSU5UTyBoaV9leGNs IFZBTFVFUyAoNCwgNDAwLCBpbnQ0cmFuZ2UoNSwgMTUpKTsgICAtLSBvbmx5IG92ZXJsYXBw ZWQgb2xkIHJhbmdlOiBPSworSU5TRVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDUsIDUwMCwg aW50NHJhbmdlKDEwNSwgMTE1KSk7LS0gb3ZlcmxhcHMgbmV3ICgxMDAsMTEwKTogY29uZmxp Y3QKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBj b25zdHJhaW50ICJoaV9leGNsX2R1cmluZ19leGNsIgorREVUQUlMOiAgS2V5IChkdXJpbmcp PShbMTA1LDExNSkpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoZHVyaW5nKT0oWzEw MCwxMTApKS4KK0RST1AgVEFCTEUgaGlfZXhjbDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorLS0gMjUuIFRPQVNUIGludGVyYWN0aW9uLiAgQW4gaW5kZXhlZCBjb2x1bW4gc3RvcmVk IG91dC1vZi1saW5lIG11c3QgYmVoYXZlCistLSBjb3JyZWN0bHkgYWNyb3NzIEhPVC1pbmRl eGVkIHVwZGF0ZXM6IGFuIGVudHJ5IGtlcHQgYWNyb3NzIGFuIHVwZGF0ZSBvZiBhCistLSBk aWZmZXJlbnQgY29sdW1uIHN0aWxsIHJlc29sdmVzIHRvIHRoZSAodW5jaGFuZ2VkKSB0b2Fz dGVkIHZhbHVlLCBhbmQgYWZ0ZXIKKy0tIHRoZSB0b2FzdGVkIGNvbHVtbiBpdHNlbGYgaXMg Y2hhbmdlZCB0aGUgc3RhbGUgZW50cnkgaXMgZHJvcHBlZCBieSB0aGUKKy0tIGNyb3NzZWQt YXR0cmlidXRlIGJpdG1hcCAobm8gdmFsdWUgY29tcGFyaXNvbiBvciBkZXRvYXN0aW5nIGlz IG5lZWRlZCkuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV90 b2FzdCAoaWQgaW50IFBSSU1BUlkgS0VZLCBiaWcgdGV4dCwgdGFnIGludCkgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKK0FMVEVSIFRBQkxFIGhpX3RvYXN0IEFMVEVSIENPTFVNTiBiaWcg U0VUIFNUT1JBR0UgRVhURVJOQUw7ICAtLSBubyBjb21wcmVzc2lvbgorQ1JFQVRFIElOREVY IGhpX3RvYXN0X2JpZyBPTiBoaV90b2FzdCAoYmlnKTsKK0NSRUFURSBJTkRFWCBoaV90b2Fz dF90YWcgT04gaGlfdG9hc3QgKHRhZyk7CitJTlNFUlQgSU5UTyBoaV90b2FzdCBWQUxVRVMg KDEsIHJlcGVhdCgnQScsIDIwMDApLCAxMCk7CistLSBUaGUgYmlnIHZhbHVlIGlzIHN0b3Jl ZCBvdXQtb2YtbGluZS4KK1NFTEVDVCBwZ19jb2x1bW5fc2l6ZShiaWcpID4gMTUwMCBBUyBi aWdfaXNfZXh0ZXJuYWwgRlJPTSBoaV90b2FzdCBXSEVSRSBpZCA9IDE7CisgYmlnX2lzX2V4 dGVybmFsIAorLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIEhPVC1pbmRl eGVkIHVwZGF0ZSBvZiB0YWcgbGVhdmVzIGJpZyAoYW5kIGl0cyBpbmRleCBlbnRyeSkgdW5j aGFuZ2VkLgorVVBEQVRFIGhpX3RvYXN0IFNFVCB0YWcgPSAxMSBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgaG90X2lkeCA+IDAgQVMgdGFnX3VwZGF0ZV9ob3RfaW5kZXhlZCBGUk9NIGdldF9o aV9jb3VudCgnaGlfdG9hc3QnKTsKKyB0YWdfdXBkYXRlX2hvdF9pbmRleGVkIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRVQgZW5hYmxlX3NlcXNjYW4g PSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1QgaWQsIHRhZywg bGVuZ3RoKGJpZykgRlJPTSBoaV90b2FzdCBXSEVSRSBiaWcgPSByZXBlYXQoJ0EnLCAyMDAw KTsKKyBpZCB8IHRhZyB8IGxlbmd0aCAKKy0tLS0rLS0tLS0rLS0tLS0tLS0KKyAgMSB8ICAx MSB8ICAgMjAwMAorKDEgcm93KQorCistLSBIT1QtaW5kZXhlZCB1cGRhdGUgb2YgdGhlIHRv YXN0ZWQgaW5kZXhlZCBjb2x1bW4gaXRzZWxmOiB0aGUgb2xkIGVudHJ5IGlzCistLSBub3cg c3RhbGUgYmVjYXVzZSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIHNob3dzIGJpZyBj aGFuZ2VkLgorVVBEQVRFIGhpX3RvYXN0IFNFVCBiaWcgPSByZXBlYXQoJ0InLCAyMDAwKSBX SEVSRSBpZCA9IDE7CitTRUxFQ1QgaWQgRlJPTSBoaV90b2FzdCBXSEVSRSBiaWcgPSByZXBl YXQoJ0EnLCAyMDAwKTsgICAtLSBzdGFsZTogMCByb3dzCisgaWQgCistLS0tCisoMCByb3dz KQorCitTRUxFQ1QgaWQsIGxlbmd0aChiaWcpIEZST00gaGlfdG9hc3QgV0hFUkUgYmlnID0g cmVwZWF0KCdCJywgMjAwMCk7ICAtLSBjdXJyZW50CisgaWQgfCBsZW5ndGggCistLS0tKy0t LS0tLS0tCisgIDEgfCAgIDIwMDAKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX2JpdG1hcHNj YW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBh bSgnaGlfdG9hc3QnKTsKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK0RST1AgVEFCTEUgaGlf dG9hc3Q7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI2LiBBQkEgb24gYW4gaW5k ZXhlZCBjb2x1bW4uICBBIEhPVC1pbmRleGVkIHVwZGF0ZSB0aGF0IHNldHMgYW4gaW5kZXhl ZAorLS0gY29sdW1uIHRvIGEgdmFsdWUgYW4gZWFybGllciBjaGFpbiBtZW1iZXIgYWxyZWFk eSBoZWxkIGxlYXZlcyB0d28gbGVhdmVzCistLSB3aXRoIHRoYXQgc2FtZSBrZXksIGJvdGgg Y2hhaW4tcmVzb2x2aW5nIHRvIHRoZSBsaXZlIHR1cGxlLiAgQSB2YWx1ZS1iYXNlZAorLS0g cmVjaGVjayBjYW5ub3QgdGVsbCB0aGVtIGFwYXJ0IGFuZCB3b3VsZCByZXR1cm4gdGhlIHJv dyB0d2ljZTsgdGhlCistLSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgZHJvcHMgdGhlIHN0 YWxlIGFuY2VzdG9yIGxlYWYgKGl0cyB3YWxrIGNyb3NzZXMgdGhlCistLSBrZXktY2hhbmdp bmcgaG9wcykgYW5kIGtlZXBzIG9ubHkgdGhlIGZyZXNoIGVudHJ5LCBzbyBhIGZvcmNlZCBp bmRleCBzY2FuCistLSByZXR1cm5zIHRoZSByb3cgZXhhY3RseSBvbmNlLiAgUkVJTkRFWCBt dXN0IG5vdCBjaGFuZ2UgdGhhdC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRF IFRBQkxFIGhpX2FiYSAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgdiBpbnQpIFdJVEgg KGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfYWJhX2sgT04gaGlfYWJhIChr KTsKK0NSRUFURSBJTkRFWCBoaV9hYmFfdiBPTiBoaV9hYmEgKHYpOworSU5TRVJUIElOVE8g aGlfYWJhIFZBTFVFUyAoMSwgMSwgMTAwKTsKK1VQREFURSBoaV9hYmEgU0VUIGsgPSAzIFdI RVJFIGlkID0gMTsgICAtLSBIT1QtaW5kZXhlZDogayBjaGFuZ2VkLCB2IGtlcHQKK1VQREFU RSBoaV9hYmEgU0VUIGsgPSAxIFdIRVJFIGlkID0gMTsgICAtLSBIT1QtaW5kZXhlZDogayBj eWNsZWQgYmFjayAoQUJBKQorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJs ZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEFTIGsxX29uY2UgRlJPTSBo aV9hYmEgV0hFUkUgayA9IDE7ICAgICAtLSBleGFjdGx5IDEKKyBrMV9vbmNlIAorLS0tLS0t LS0tCisgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgazNfZ29uZSBG Uk9NIGhpX2FiYSBXSEVSRSBrID0gMzsgICAgIC0tIDAgKHN0YWxlIGRyb3BwZWQpCisgazNf Z29uZSAKKy0tLS0tLS0tLQorICAgICAgIDAKKygxIHJvdykKKworUkVJTkRFWCBJTkRFWCBo aV9hYmFfazsKK1NFTEVDVCBjb3VudCgqKSBBUyBrMV9hZnRlcl9yZWluZGV4IEZST00gaGlf YWJhIFdIRVJFIGsgPSAxOyAgLS0gc3RpbGwgMQorIGsxX2FmdGVyX3JlaW5kZXggCistLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKK1JFU0VUIGVu YWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitTRUxFQ1QgKiBGUk9N IHZlcmlmeV9oZWFwYW0oJ2hpX2FiYScpOworIGJsa25vIHwgb2ZmbnVtIHwgYXR0bnVtIHwg bXNnIAorLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLQorKDAgcm93cykKKworRFJP UCBUQUJMRSBoaV9hYmE7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI3LiBQYXJ0 aWFsIGluZGV4LCBwcmVkaWNhdGUgY29sdW1uIGNoYW5nZWQgYnV0IHRoZSByb3cgU1RBWVMg aW4gdGhlIGluZGV4CistLSAocHJlZGljYXRlIHN0aWxsIHRydWUsIGtleSB1bmNoYW5nZWQp LiAgVGhlIHVwZGF0ZSBpcyBIT1QtaW5kZXhlZDsgc2VsZWN0aXZlCistLSBtYWludGVuYW5j ZSByZS1pbnNlcnRzIGEgZnJlc2ggZW50cnkgKHRoZSBwcmVkaWNhdGUgY29sdW1uIGNoYW5n ZWQgYW5kIHN0aWxsCistLSBob2xkcyksIHNvIHRoZSByb3cgaXMgc3RpbGwgcmV0dXJuZWQg LS0gdGhlIGJpdG1hcCBkcm9wcyB0aGUgb2xkZXIgZW50cnkgYW5kCistLSB0aGUgZnJlc2gg b25lIHJlLXN1cHBsaWVzIGl0LiAgR3VhcmRzIGFnYWluc3QgYSAibG9zdCByb3ciIGZyb20g b3Zlci1lYWdlcgorLS0gZHJvcHBpbmcuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NS RUFURSBUQUJMRSBoaV9wYXJ0c3RheSAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgbiBp bnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcGFydHN0YXlf ayBPTiBoaV9wYXJ0c3RheSAoaykgV0hFUkUgbiA+IDA7CitDUkVBVEUgSU5ERVggaGlfcGFy dHN0YXlfaWQyIE9OIGhpX3BhcnRzdGF5IChpZCk7CitJTlNFUlQgSU5UTyBoaV9wYXJ0c3Rh eSBWQUxVRVMgKDEsIDUsIDMpOworVVBEQVRFIGhpX3BhcnRzdGF5IFNFVCBuID0gNyBXSEVS RSBpZCA9IDE7ICAgLS0gbiAzLT43LCBzdGlsbCA+IDAsIGsgdW5jaGFuZ2VkCitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGhv dF9pZHggPiAwIEFTIHN0YXlfaXNfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hp X3BhcnRzdGF5Jyk7Cisgc3RheV9pc19ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHQKKygxIHJvdykKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVu YWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEFTIHN0YXlfcm93cyBG Uk9NIGhpX3BhcnRzdGF5IFdIRVJFIGsgPSA1IEFORCBuID4gMDsgICAtLSB3YW50IDEKKyBz dGF5X3Jvd3MgCistLS0tLS0tLS0tLQorICAgICAgICAgMQorKDEgcm93KQorCitSRVNFVCBl bmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBo aV9wYXJ0c3RheTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjguIFBhcnRpdGlv bmVkIHRhYmxlLiAgQSB3aXRoaW4tcGFydGl0aW9uIFVQREFURSBvZiBvbmUgaW5kZXhlZCBj b2x1bW4gaXMKKy0tIEhPVC1pbmRleGVkIG9uIHRoZSBsZWFmIHBhcnRpdGlvbidzIGhlYXAg ZXhhY3RseSBhcyBmb3IgYSBub24tcGFydGl0aW9uZWQKKy0tIHRhYmxlOyBhIGNyb3NzLXBh cnRpdGlvbiB1cGRhdGUgaXMgYSBkZWxldGUraW5zZXJ0IGFuZCBuZXZlciBIT1QuCistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0IChpZCBpbnQsIGEg aW50LCBiIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpZCk7CitDUkVBVEUgVEFCTEUgaGlf cGFydDEgUEFSVElUSU9OIE9GIGhpX3BhcnQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTAw KQorICAgIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcGFydF9h IE9OIGhpX3BhcnQgKGEpOworQ1JFQVRFIElOREVYIGhpX3BhcnRfYiBPTiBoaV9wYXJ0IChi KTsKK0lOU0VSVCBJTlRPIGhpX3BhcnQgVkFMVUVTICgxLCAxMCwgMjApOworVVBEQVRFIGhp X3BhcnQgU0VUIGEgPSAxMSBXSEVSRSBpZCA9IDE7ICAgLS0gb25lIGluZGV4ZWQgY29sLCB3 aXRoaW4gcGFydGl0aW9uCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7Cisg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworU0VMRUNUIGhvdF9pZHggPiAwIEFTIHBhcnRfaXNfaG90X2luZGV4 ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX3BhcnQxJyk7CisgcGFydF9pc19ob3RfaW5kZXhl ZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VUIGVuYWJsZV9z ZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNv dW50KCopIEFTIGExMSBGUk9NIGhpX3BhcnQgV0hFUkUgYSA9IDExOyAgIC0tIHdhbnQgMQor IGExMSAKKy0tLS0tCisgICAxCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBBUyBhMTAg RlJPTSBoaV9wYXJ0IFdIRVJFIGEgPSAxMDsgICAtLSB3YW50IDAgKHN0YWxlIGRyb3BwZWQp CisgYTEwIAorLS0tLS0KKyAgIDAKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX2JpdG1hcHNj YW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBh bSgnaGlfcGFydDEnKTsKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK0RST1AgVEFCTEUgaGlf cGFydDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjkuIE5vbi1idHJlZSBhY2Nl c3MgbWV0aG9kIChoYXNoKS4gIFJlYWQtc2lkZSBzdGFsZW5lc3MgaXMgYWNjZXNzLW1ldGhv ZAorLS0gYWdub3N0aWMgKHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXApLCBzbyBhbnkg aW5kZXggQU0ncyBjb2x1bW4gaXMKKy0tIEhPVC1pbmRleGVkLiAgSGFzaCBpcyB0aGUgc2hh cnBlc3QgY2FzZTogaXRzIHNjYW5zIHJlY2hlY2sgdGhlIGhlYXAgdmFsdWUsCistLSB3aGlj aCBhbG9uZSBjYW5ub3QgZGlzYW1iaWd1YXRlIGEgdmFsdWUgY3ljbGVkIGF3YXkgYW5kIGJh Y2sgKEFCQSkgLS0gdGhlCistLSBiaXRtYXAgZHJvcHMgdGhlIHN0YWxlIGFuY2VzdG9yIHNv IHRoZSByb3cgaXMgcmV0dXJuZWQgZXhhY3RseSBvbmNlLgorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfaGFzaCAoaWQgaW50IFBSSU1BUlkgS0VZLCB2IGlu dCwgdyBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfaGFz aF92IE9OIGhpX2hhc2ggVVNJTkcgaGFzaCAodik7CitDUkVBVEUgSU5ERVggaGlfaGFzaF93 IE9OIGhpX2hhc2ggKHcpOworSU5TRVJUIElOVE8gaGlfaGFzaCBWQUxVRVMgKDEsIDEwLCAx MDApOworVVBEQVRFIGhpX2hhc2ggU0VUIHYgPSA5OSBXSEVSRSBpZCA9IDE7CitVUERBVEUg aGlfaGFzaCBTRVQgdiA9IDEwIFdIRVJFIGlkID0gMTsgICAtLSBBQkE6IDEwIC0+IDk5IC0+ IDEwLCB3IHVuY2hhbmdlZAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwor IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBoYXNoX2lzX2hvdF9pbmRl eGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9oYXNoJyk7CisgaGFzaF9pc19ob3RfaW5kZXhl ZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VUIGVuYWJsZV9z ZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNv dW50KCopIEFTIGhhc2hfdjEwIEZST00gaGlfaGFzaCBXSEVSRSB2ID0gMTA7ICAgLS0gd2Fu dCAxIChubyBkdXBsaWNhdGUpCisgaGFzaF92MTAgCistLS0tLS0tLS0tCisgICAgICAgIDEK KygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEFTIGhhc2hfdjk5IEZST00gaGlfaGFzaCBX SEVSRSB2ID0gOTk7ICAgLS0gd2FudCAwIChzdGFsZSBkcm9wcGVkKQorIGhhc2hfdjk5IAor LS0tLS0tLS0tLQorICAgICAgICAwCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9iaXRtYXBz Y2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX2hhc2g7CistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDMwLiBEREwgYWZ0ZXIgYSBIT1QtaW5kZXhlZCBj aGFpbiBleGlzdHMuICBUaGUgcGVyLWhvcCBtb2RpZmllZC1hdHRycworLS0gYml0bWFwIG9u IHRoZSBwYWdlIGlzIGtleWVkIGJ5IHBoeXNpY2FsIGF0dHJpYnV0ZSBudW1iZXIgYW5kIHNp emVkIGJ5IHRoZQorLS0gcmVsYXRpb24ncyBuYXR0cyBBVCBXUklURSBUSU1FLiAgSW5kZXhl cyBhZGRlZC9kcm9wcGVkIGFmdGVyIHRoZSBjaGFpbgorLS0gZm9ybXMsIGFuZCBBREQvRFJP UCBDT0xVTU4sIG11c3Qgbm90IGNvcnJ1cHQgdGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgdGVz dC4KKy0tIFRoZSBzaGFycCBjYXNlIGlzIEFERCBDT0xVTU4gY3Jvc3NpbmcgYW4gOC1hdHRy aWJ1dGUgYm91bmRhcnksIHdoaWNoIGdyb3dzCistLSBjZWlsKG5hdHRzLzgpOiByZWFkZXJz IG11c3QgbG9jYXRlIGVhY2ggaG9wJ3MgYml0bWFwIGZyb20gdGhhdCBob3AncyBvd24KKy0t IHdyaXRlLXRpbWUgbmF0dHMgKEhlYXBUdXBsZUhlYWRlckdldE5hdHRzIC8gdGhlIHN0dWIn cyBzdGFzaGVkIG5hdHRzKSwgbm90CistLSB0aGUgcmVsYXRpb24ncyBjdXJyZW50IG5hdHRz LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFeGFjdGx5IDggYXR0cmlidXRlcyAo YzEuLmM3ICsgcGF5bG9hZCkgc28gYWRkaW5nIHRoZSA5dGggZmxpcHMgdGhlIGJpdG1hcAor LS0gZnJvbSAxIGJ5dGUgdG8gMi4gIGM3IGlzIHRoZSBjb2x1bW4gd2UgY2h1cm47IGMyIGlz IGFuIHVuY2hhbmdlZCBpbmRleGVkCistLSBjb2x1bW4gd2hvc2UgbGVhZiBtdXN0IHN0YXkg Y3VycmVudC4KK0NSRUFURSBUQUJMRSBoaV9kZGwgKAorICAgIGMxIGludCBQUklNQVJZIEtF WSwgYzIgaW50LCBjMyBpbnQsIGM0IGludCwKKyAgICBjNSBpbnQsIGM2IGludCwgYzcgaW50 LCBwYXlsb2FkIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRF WCBoaV9kZGxfYzIgT04gaGlfZGRsKGMyKTsKK0NSRUFURSBJTkRFWCBoaV9kZGxfYzcgT04g aGlfZGRsKGM3KTsKK0lOU0VSVCBJTlRPIGhpX2RkbCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAs IDQwLCA1MCwgNzAsICdwJyk7CistLSBGb3JtIGEgSE9ULWluZGV4ZWQgY2hhaW4gb24gYzcg QkVGT1JFIGFueSBmdXJ0aGVyIERETC4KK1VQREFURSBoaV9kZGwgU0VUIGM3ID0gNzEgV0hF UkUgYzEgPSAxOworVVBEQVRFIGhpX2RkbCBTRVQgYzcgPSA3MiBXSEVSRSBjMSA9IDE7Cist LSAoYSkgQ1JFQVRFIElOREVYIGFmdGVyIHRoZSBjaGFpbiBleGlzdHM6IHRoZSBuZXcgaW5k ZXggaXMgYnVpbHQgYWdhaW5zdCB0aGUKKy0tIGxpdmUgdHVwbGUgdW5kZXIgaXRzIG93biBU SUQsIHNvIGl0cyBlbnRyeSBpcyBuZXZlciBzdGFsZS4KK0NSRUFURSBJTkRFWCBoaV9kZGxf YzMgT04gaGlfZGRsKGMzKTsKKy0tIChiKSBBREQgQ09MVU1OIGNyb3NzaW5nIHRoZSA4LWF0 dHJpYnV0ZSBib3VuZGFyeSAobmF0dHMgOCAtPiA5KS4gIEV4aXN0aW5nCistLSBob3BzIGtl ZXAgdGhlaXIgMS1ieXRlIGJpdG1hcHM7IHRoZSByZWxhdGlvbiBub3cgd2FudHMgMi4gIFJl YWRzIHRocm91Z2ggdGhlCistLSBvbGQgY2hhaW4gbXVzdCBzdGlsbCBiZSBjb3JyZWN0Lgor QUxURVIgVEFCTEUgaGlfZGRsIEFERCBDT0xVTU4gYzkgaW50OworQ1JFQVRFIElOREVYIGhp X2RkbF9jOSBPTiBoaV9kZGwoYzkpOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VU IGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9pbmRleG9ubHlzY2FuID0g b2ZmOworLS0gTGl2ZSBjNyBpcyA3Mi4gIFRoZSBjNyBpbmRleCBtdXN0IHJldHVybiB0aGUg bGl2ZSByb3cgZm9yIDcyIGFuZCBkcm9wIHRoZQorLS0gc3RhbGUgbGVhdmVzIGZvciA3MCBh bmQgNzEgKG9mZnNldHMgbWlzcmVhZCB3b3VsZCBjb3JydXB0IHRoaXMpLgorU0VMRUNUIGNv dW50KCopIEFTIGM3X2VxXzcyIEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzIgQU5EIHBheWxv YWQgSVMgTk9UIE5VTEw7CisgYzdfZXFfNzIgCistLS0tLS0tLS0tCisgICAgICAgIDEKKygx IHJvdykKKworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzcwX3N0YWxlIEZST00gaGlfZGRs IFdIRVJFIGM3ID0gNzAgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisgYzdfZXFfNzBfc3Rh bGUgCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDAKKygxIHJvdykKKworU0VM RUNUIGNvdW50KCopIEFTIGM3X2VxXzcxX3N0YWxlIEZST00gaGlfZGRsIFdIRVJFIGM3ID0g NzEgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisgYzdfZXFfNzFfc3RhbGUgCistLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgIDAKKygxIHJvdykKKworLS0gYzIgbmV2ZXIgY2hh bmdlZCBhY3Jvc3MgdGhlIGNoYWluOiBpdHMgbGVhZiBtdXN0IE5PVCBiZSBqdWRnZWQgc3Rh bGUgZXZlbgorLS0gdGhvdWdoIGEgY3Jvc3NlZCBob3AgY2hhbmdlZCBjNy4gIEEgbWlzcmVh ZCBiaXRtYXAgY291bGQgc3B1cmlvdXNseSBmbGFnIGl0LgorU0VMRUNUIGNvdW50KCopIEFT IGMyX2VxXzEwX2N1cnJlbnQgRlJPTSBoaV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9h ZCBJUyBOT1QgTlVMTDsKKyBjMl9lcV8xMF9jdXJyZW50IAorLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSAoYykgQ29udGludWUgY2h1cm5p bmcgYzcgQUZURVIgdGhlIEFERCBDT0xVTU46IHRoZSBuZXcgaG9wJ3MgYml0bWFwIGlzIHNp emVkCistLSBmb3IgbmF0dHMgOSAoMiBieXRlcyk7IHRoZSBvbGQgaG9wcyBhcmUgMSBieXRl LiAgQSBjaGFpbiB3aXRoIG1peGVkLXNpemUKKy0tIGJpdG1hcHMgbXVzdCBzdGlsbCByZXNv bHZlIGNvcnJlY3RseS4KK1VQREFURSBoaV9kZGwgU0VUIGM3ID0gNzMgV0hFUkUgYzEgPSAx OworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzczIEZST00gaGlfZGRsIFdIRVJFIGM3ID0g NzMgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisgYzdfZXFfNzMgCistLS0tLS0tLS0tCisg ICAgICAgIDEKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzcyX25vd19z dGFsZSBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDcyIEFORCBwYXlsb2FkIElTIE5PVCBOVUxM OworIGM3X2VxXzcyX25vd19zdGFsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgICAwCisoMSByb3cpCisKKy0tIChkKSBDb2xsYXBzZSB0aGUgY2hhaW4gdG8g c3R1YnMgdmlhIFZBQ1VVTSwgdGhlbiByZWFkIGFnYWluOiB0aGUgc3R1YiBtdXN0CistLSBw cmVzZXJ2ZSBpdHMgd3JpdGUtdGltZSBuYXR0cyBzbyBpdHMgYml0bWFwIHN0YXlzIGxvY2F0 YWJsZSBwb3N0LUFERCBDT0xVTU4uCitVUERBVEUgaGlfZGRsIFNFVCBjNyA9IDc0IFdIRVJF IGMxID0gMTsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpX2RkbDsKK1NFTEVDVCBj b3VudCgqKSBBUyBjN19lcV83NF9hZnRlcl92YWN1dW0gRlJPTSBoaV9kZGwgV0hFUkUgYzcg PSA3NCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19lcV83NF9hZnRlcl92YWN1dW0g CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgMQorKDEg cm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYzJfZXFfMTBfYWZ0ZXJfdmFjdXVtIEZST00g aGlfZGRsIFdIRVJFIGMyID0gMTAgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisgYzJfZXFf MTBfYWZ0ZXJfdmFjdXVtIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgIDEKKygxIHJvdykKKworLS0gKGUpIERST1AgQ09MVU1OIGtlZXBzIHRoZSBh dHRudW0gc2xvdCAobm8gcmVudW1iZXIpLCBzbyBiaXRtYXBzIHN0YXkgYWxpZ25lZC4KK0FM VEVSIFRBQkxFIGhpX2RkbCBEUk9QIENPTFVNTiBjNDsKK1NFTEVDVCBjb3VudCgqKSBBUyBj N19hZnRlcl9kcm9wIEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzQgQU5EIHBheWxvYWQgSVMg Tk9UIE5VTEw7CisgYzdfYWZ0ZXJfZHJvcCAKKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgIDEKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEFTIGMyX2FmdGVyX2Ryb3AgRlJP TSBoaV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjMl9h ZnRlcl9kcm9wIAorLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMQorKDEgcm93KQor CistLSAoZikgRFJPUCBJTkRFWCBvbiB0aGUgY2h1cm5lZCBjb2x1bW46IHJlbWFpbmluZyBp bmRleGVzIHN0aWxsIHJlc29sdmUuCitEUk9QIElOREVYIGhpX2RkbF9jNzsKK1NFTEVDVCBj b3VudCgqKSBBUyBjMl9hZnRlcl9kcm9waWR4IEZST00gaGlfZGRsIFdIRVJFIGMyID0gMTAg QU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisgYzJfYWZ0ZXJfZHJvcGlkeCAKKy0tLS0tLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworUkVTRVQgZW5hYmxl X3NlcXNjYW47CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9pbmRl eG9ubHlzY2FuOworLS0gVGhlIHNlcXNjYW4gdHJ1dGggY29uZmlybXMgdGhlIGxpdmUgcm93 OyB0aGUgY291bnQgYXNzZXJ0aW9ucyBhYm92ZSAocmVhZAorLS0gdGhyb3VnaCB0aGUgcG9z dC1EREwgaW5kZXhlcykgbWF0Y2ggaXQsIHdoaWNoIGlzIHdoYXQgd291bGQgYnJlYWsgaWYg YQorLS0gbWlzLXNpemVkIGJpdG1hcCBjb3JydXB0ZWQgdGhlIHN0YWxlbmVzcyB2ZXJkaWN0 LgorU0VMRUNUIGMxLCBjMiwgYzcgRlJPTSBoaV9kZGwgV0hFUkUgYzEgPSAxOworIGMxIHwg YzIgfCBjNyAKKy0tLS0rLS0tLSstLS0tCisgIDEgfCAxMCB8IDc0CisoMSByb3cpCisKK0RS T1AgVEFCTEUgaGlfZGRsOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBDbGVhbnVw CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RST1AgRlVOQ1RJT04gZ2V0X2hpX2NvdW50 KHRleHQpOworRFJPUCBGVU5DVElPTiBnZXRfaG90X2NvdW50KHRleHQpOworRFJPUCBFWFRF TlNJT04gcGFnZWluc3BlY3Q7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0Cmlu ZGV4IGE2NWE1YmYwYzRmLi5iOTgyNmRlMzFhNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKQEAgLTE4MTAsNiArMTgxMCw4IEBAIHBnX3N0YXRfYWxsX2luZGV4ZXN8 IFNFTEVDVCBjLm9pZCBBUyByZWxpZCwKICAgICBwZ19zdGF0X2dldF9sYXN0c2NhbihpLm9p ZCkgQVMgbGFzdF9pZHhfc2NhbiwKICAgICBwZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWQo aS5vaWQpIEFTIGlkeF90dXBfcmVhZCwKICAgICBwZ19zdGF0X2dldF90dXBsZXNfZmV0Y2hl ZChpLm9pZCkgQVMgaWR4X3R1cF9mZXRjaCwKKyAgICBwZ19zdGF0X2dldF90dXBsZXNfaG90 X2luZGV4ZWRfdXBkYXRlZF9za2lwcGVkKGkub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91 cGRfc2tpcHBlZCwKKyAgICBwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRl ZF9tYXRjaGVkKGkub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCwKICAg ICBwZ19zdGF0X2dldF9zdGF0X3Jlc2V0X3RpbWUoaS5vaWQpIEFTIHN0YXRzX3Jlc2V0CiAg ICBGUk9NICgoKHBnX2NsYXNzIGMKICAgICAgSk9JTiBwZ19pbmRleCB4IE9OICgoYy5vaWQg PSB4LmluZHJlbGlkKSkpCkBAIC0xODI5LDYgKzE4MzEsNyBAQCBwZ19zdGF0X2FsbF90YWJs ZXN8IFNFTEVDVCBjLm9pZCBBUyByZWxpZCwKICAgICBwZ19zdGF0X2dldF90dXBsZXNfdXBk YXRlZChjLm9pZCkgQVMgbl90dXBfdXBkLAogICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19kZWxl dGVkKGMub2lkKSBBUyBuX3R1cF9kZWwsCiAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91 cGRhdGVkKGMub2lkKSBBUyBuX3R1cF9ob3RfdXBkLAorICAgIHBnX3N0YXRfZ2V0X3R1cGxl c19ob3RfaW5kZXhlZF91cGRhdGVkKGMub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91cGQs CiAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX25ld3BhZ2VfdXBkYXRlZChjLm9pZCkgQVMgbl90 dXBfbmV3cGFnZV91cGQsCiAgICAgcGdfc3RhdF9nZXRfbGl2ZV90dXBsZXMoYy5vaWQpIEFT IG5fbGl2ZV90dXAsCiAgICAgcGdfc3RhdF9nZXRfZGVhZF90dXBsZXMoYy5vaWQpIEFTIG5f ZGVhZF90dXAsCkBAIC0yMzI0LDYgKzIzMjcsOCBAQCBwZ19zdGF0X3N5c19pbmRleGVzfCBT RUxFQ1QgcmVsaWQsCiAgICAgbGFzdF9pZHhfc2NhbiwKICAgICBpZHhfdHVwX3JlYWQsCiAg ICAgaWR4X3R1cF9mZXRjaCwKKyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCwK KyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCwKICAgICBzdGF0c19yZXNldAog ICAgRlJPTSBwZ19zdGF0X2FsbF9pbmRleGVzCiAgIFdIRVJFICgoc2NoZW1hbmFtZSA9IEFO WSAoQVJSQVlbJ3BnX2NhdGFsb2cnOjpuYW1lLCAnaW5mb3JtYXRpb25fc2NoZW1hJzo6bmFt ZV0pKSBPUiAoc2NoZW1hbmFtZSB+ICdecGdfdG9hc3QnOjp0ZXh0KSk7CkBAIC0yMzQwLDYg KzIzNDUsNyBAQCBwZ19zdGF0X3N5c190YWJsZXN8IFNFTEVDVCByZWxpZCwKICAgICBuX3R1 cF91cGQsCiAgICAgbl90dXBfZGVsLAogICAgIG5fdHVwX2hvdF91cGQsCisgICAgbl90dXBf aG90X2luZGV4ZWRfdXBkLAogICAgIG5fdHVwX25ld3BhZ2VfdXBkLAogICAgIG5fbGl2ZV90 dXAsCiAgICAgbl9kZWFkX3R1cCwKQEAgLTIzNzksNiArMjM4NSw4IEBAIHBnX3N0YXRfdXNl cl9pbmRleGVzfCBTRUxFQ1QgcmVsaWQsCiAgICAgbGFzdF9pZHhfc2NhbiwKICAgICBpZHhf dHVwX3JlYWQsCiAgICAgaWR4X3R1cF9mZXRjaCwKKyAgICBuX3R1cF9ob3RfaW5kZXhlZF91 cGRfc2tpcHBlZCwKKyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCwKICAgICBz dGF0c19yZXNldAogICAgRlJPTSBwZ19zdGF0X2FsbF9pbmRleGVzCiAgIFdIRVJFICgoc2No ZW1hbmFtZSA8PiBBTEwgKEFSUkFZWydwZ19jYXRhbG9nJzo6bmFtZSwgJ2luZm9ybWF0aW9u X3NjaGVtYSc6Om5hbWVdKSkgQU5EIChzY2hlbWFuYW1lICF+ICdecGdfdG9hc3QnOjp0ZXh0 KSk7CkBAIC0yMzk1LDYgKzI0MDMsNyBAQCBwZ19zdGF0X3VzZXJfdGFibGVzfCBTRUxFQ1Qg cmVsaWQsCiAgICAgbl90dXBfdXBkLAogICAgIG5fdHVwX2RlbCwKICAgICBuX3R1cF9ob3Rf dXBkLAorICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZCwKICAgICBuX3R1cF9uZXdwYWdlX3Vw ZCwKICAgICBuX2xpdmVfdHVwLAogICAgIG5fZGVhZF90dXAsCkBAIC0yNDUwLDYgKzI0NTks NyBAQCBwZ19zdGF0X3hhY3RfYWxsX3RhYmxlc3wgU0VMRUNUIGMub2lkIEFTIHJlbGlkLAog ICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoYy5vaWQpIEFTIG5fdHVwX3Vw ZCwKICAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19kZWxldGVkKGMub2lkKSBBUyBuX3R1 cF9kZWwsCiAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoYy5vaWQp IEFTIG5fdHVwX2hvdF91cGQsCisgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X2lu ZGV4ZWRfdXBkYXRlZChjLm9pZCkgQVMgbl90dXBfaG90X2luZGV4ZWRfdXBkLAogICAgIHBn X3N0YXRfZ2V0X3hhY3RfdHVwbGVzX25ld3BhZ2VfdXBkYXRlZChjLm9pZCkgQVMgbl90dXBf bmV3cGFnZV91cGQKICAgIEZST00gKChwZ19jbGFzcyBjCiAgICAgIExFRlQgSk9JTiBwZ19p bmRleCBpIE9OICgoYy5vaWQgPSBpLmluZHJlbGlkKSkpCkBAIC0yNDY3LDYgKzI0NzcsNyBA QCBwZ19zdGF0X3hhY3Rfc3lzX3RhYmxlc3wgU0VMRUNUIHJlbGlkLAogICAgIG5fdHVwX3Vw ZCwKICAgICBuX3R1cF9kZWwsCiAgICAgbl90dXBfaG90X3VwZCwKKyAgICBuX3R1cF9ob3Rf aW5kZXhlZF91cGQsCiAgICAgbl90dXBfbmV3cGFnZV91cGQKICAgIEZST00gcGdfc3RhdF94 YWN0X2FsbF90YWJsZXMKICAgV0hFUkUgKChzY2hlbWFuYW1lID0gQU5ZIChBUlJBWVsncGdf Y2F0YWxvZyc6Om5hbWUsICdpbmZvcm1hdGlvbl9zY2hlbWEnOjpuYW1lXSkpIE9SIChzY2hl bWFuYW1lIH4gJ15wZ190b2FzdCc6OnRleHQpKTsKQEAgLTI0OTAsNiArMjUwMSw3IEBAIHBn X3N0YXRfeGFjdF91c2VyX3RhYmxlc3wgU0VMRUNUIHJlbGlkLAogICAgIG5fdHVwX3VwZCwK ICAgICBuX3R1cF9kZWwsCiAgICAgbl90dXBfaG90X3VwZCwKKyAgICBuX3R1cF9ob3RfaW5k ZXhlZF91cGQsCiAgICAgbl90dXBfbmV3cGFnZV91cGQKICAgIEZST00gcGdfc3RhdF94YWN0 X2FsbF90YWJsZXMKICAgV0hFUkUgKChzY2hlbWFuYW1lIDw+IEFMTCAoQVJSQVlbJ3BnX2Nh dGFsb2cnOjpuYW1lLCAnaW5mb3JtYXRpb25fc2NoZW1hJzo6bmFtZV0pKSBBTkQgKHNjaGVt YW5hbWUgIX4gJ15wZ190b2FzdCc6OnRleHQpKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCmluZGV4IGJkOTVjYzI0OTc3Li40ZmRlNWI2YjBjNiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xNDcsNiArMTQ3LDcgQEAgdGVzdDogZmFzdF9kZWZh dWx0CiAjIEhPVCB1cGRhdGVzIHRlc3RzCiAjIC0tLS0tLS0tLS0KIHRlc3Q6IGhvdF91cGRh dGVzCit0ZXN0OiBob3RfaW5kZXhlZF91cGRhdGVzCiAKICMgcnVuIHRhYmxlc3BhY2UgdGVz dCBhdCB0aGUgZW5kIGJlY2F1c2UgaXQgZHJvcHMgdGhlIHRhYmxlc3BhY2UgY3JlYXRlZCBk dXJpbmcKICMgc2V0dXAgdGhhdCBvdGhlciB0ZXN0cyBtYXkgdXNlLgpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X2luZGV4ZWRfdXBkYXRlcy5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9ob3RfaW5kZXhlZF91cGRhdGVzLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGU4ZDE2MjJjMTcKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfaW5kZXhlZF91cGRhdGVzLnNxbApAQCAtMCww ICsxLDExNTQgQEAKKy0tCistLSBIT1RfSU5ERVhFRF9VUERBVEVTCistLSBUZXN0IEhPVC1p bmRleGVkIHVwZGF0ZSAoaG90LWluZGV4ZWQpLCBha2EgSE9ULWluZGV4ZWQsIGJlaGF2aW91 cgorLS0KKy0tIEV2ZXJ5IFVQREFURSBpbiB0aGlzIGZpbGUgbW9kaWZpZXMgYXQgbGVhc3Qg b25lIG5vbi1zdW1tYXJpemluZworLS0gaW5kZXhlZCBhdHRyaWJ1dGUuICBPbiBhIHByZS1o b3QtaW5kZXhlZCBzZXJ2ZXIgYWxsIG9mIHRoZXNlIHdvdWxkIGJlCistLSBub24tSE9UOyBv biB0aGUgaG90LWluZGV4ZWQgYnJhbmNoIGVhY2ggZWxpZ2libGUgdXBkYXRlIHN0YXlzIG9u LXBhZ2UgYW5kCistLSBpbnNlcnRzIGludG8gb25seSB0aGUgaW5kZXhlcyB3aG9zZSBhdHRy aWJ1dGVzIGFjdHVhbGx5IGNoYW5nZWQuCistLQorLS0gV2UgdmVyaWZ5IGZvdXIgdGhpbmdz OgorLS0gICAoQSkgcGdfc3RhdCBjb3VudGVyczogSE9UIGFuZCBob3QtaW5kZXhlZCBjb3Vu dHMgaW5jcmVtZW50IGFzIGV4cGVjdGVkCistLSAgIChCKSBpbmRleCBsb29rdXBzIHJldHVy biB0aGUgbmV3IHZhbHVlIGFuZCBub3QgdGhlIHN0YWxlIHZhbHVlCistLSAgICAgICBmb3Ig RVFVQUxJVFkgcXVlcmllcyAodGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgdGVzdCBkcm9wcyBh CistLSAgICAgICBsZWFmIHdob3NlIGNvdmVyZWQgYXR0cmlidXRlIGNoYW5nZWQgb24gdGhl IHdheSB0byB0aGUgbGl2ZSB0dXBsZSkKKy0tICAgKEMpIHBnX3JlbGF0aW9uX2hvdF9pbmRl eGVkX3N0YXRzIHJlcG9ydHMgdGhlIEhPVC1pbmRleGVkIHZlcnNpb25zIHdlIGV4cGVjdAor LS0gICAoRCkgKipSQU5HRS9JTkVRVUFMSVRZKiogcXVlcmllcyByZXR1cm4gdGhlIGNvcnJl Y3QgbnVtYmVyIG9mCistLSAgICAgICB0dXBsZXMgLS0gdGhpcyBpcyB0aGUgY2xhc3Mgb2Yg YnVncyB3aGVyZSBhIHN0YWxlIGJ0cmVlCistLSAgICAgICBlbnRyeSdzIGtleSBpcyBzdGls bCByZWFjaGFibGUgdmlhIGEgbG9vc2VyIHNjYW4ga2V5OyB0aGUKKy0tICAgICAgIGNyb3Nz ZWQtYXR0cmlidXRlIGJpdG1hcCBkcm9wcyB0aGUgc3RhbGUgYXJyaXZhbCBiZWNhdXNlIHRo ZSBpbmRleCdzCistLSAgICAgICBhdHRyaWJ1dGUgY2hhbmdlZCBiZXR3ZWVuIHRoYXQgbGVh ZidzIHRhcmdldCBhbmQgdGhlIGxpdmUgdHVwbGUKKy0tCisKK0NSRUFURSBFWFRFTlNJT04g SUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJ T04gZ2V0X2hvdF9jb3VudChyZWxfbmFtZSB0ZXh0KQorUkVUVVJOUyBUQUJMRSAodXBkYXRl cyBCSUdJTlQsIGhvdCBCSUdJTlQpIEFTICQkCitERUNMQVJFIHJlbF9vaWQgb2lkOworQkVH SU4KKyAgICByZWxfb2lkIDo9IHJlbF9uYW1lOjpyZWdjbGFzczo6b2lkOworICAgIHVwZGF0 ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDAp ICsKKyAgICAgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3Vw ZGF0ZWQocmVsX29pZCksIDApOworICAgIGhvdCA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90 dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgQ09BTEVTQ0Uo cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApOworICAg IFJFVFVSTiBORVhUOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIE9S IFJFUExBQ0UgRlVOQ1RJT04gZ2V0X2hpX2NvdW50KHJlbF9uYW1lIHRleHQpCitSRVRVUk5T IFRBQkxFICh1cGRhdGVzIEJJR0lOVCwgaG90IEJJR0lOVCwgaG90X2lkeCBCSUdJTlQpIEFT ICQkCitERUNMQVJFIHJlbF9vaWQgb2lkOworQkVHSU4KKyAgICByZWxfb2lkIDo9IHJlbF9u YW1lOjpyZWdjbGFzczo6b2lkOworICAgIHVwZGF0ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9n ZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgICAgIENPQUxF U0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApOworICAg IGhvdCA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29p ZCksIDApICsKKyAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNf aG90X3VwZGF0ZWQocmVsX29pZCksIDApOworICAgIGhvdF9pZHggOj0gQ09BTEVTQ0UocGdf c3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAg ICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X2luZGV4ZWRf dXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgUkVUVVJOIE5FWFQ7CitFTkQ7CiskJCBMQU5H VUFHRSBwbHBnc3FsOworCisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMS4gQmFz aWMgaG90LWluZGV4ZWQ6IG1vZGlmeWluZyBhbiBpbmRleGVkIGNvbHVtbiBzdGF5cyBIT1Qg YW5kIGNvdW50cyBhcyBob3QtaW5kZXhlZAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitD UkVBVEUgVEFCTEUgaGlfYmFzaWMgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBp bmRleGVkX2NvbCBpbnQsCisgICAgbm9uX2luZGV4ZWRfY29sIHRleHQKKykgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9iYXNpY19pZHggT04gaGlfYmFzaWMo aW5kZXhlZF9jb2wpOworCitJTlNFUlQgSU5UTyBoaV9iYXNpYyBWQUxVRVMgKDEsIDEwMCwg J2luaXRpYWwnKTsKKworLS0gUHJlLWhvdC1pbmRleGVkIHRoaXMgd291bGQgYmUgbm9uLUhP VC4gIFVuZGVyIGhvdC1pbmRleGVkIGl0J3MgSE9ULWluZGV4ZWQ7IGJvdGggdGhlCistLSBI T1QgY291bnRlciBhbmQgdGhlIGhvdC1pbmRleGVkIGNvdW50ZXIgYWR2YW5jZS4KK1VQREFU RSBoaV9iYXNpYyBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNU IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUICogRlJPTSBnZXRfaGlfY291 bnQoJ2hpX2Jhc2ljJyk7CisKKy0tIFRoZSBuZXcgdmFsdWUgaXMgcmVhY2hhYmxlIHZpYSB0 aGUgaW5kZXguCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitFWFBMQUlOIChDT1NUUyBP RkYpIFNFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBoaV9iYXNpYyBXSEVSRSBpbmRleGVk X2NvbCA9IDE1MDsKK1NFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBoaV9iYXNpYyBXSEVS RSBpbmRleGVkX2NvbCA9IDE1MDsKKworLS0gVGhlIG9sZCB2YWx1ZSBpcyBub3QgcmVhY2hh YmxlIHRocm91Z2ggdGhpcyBpbmRleDogdGhlIHN0YWxlIGJ0cmVlCistLSBlbnRyeSAoaW5k ZXhlZF9jb2w9MTAwKSB3YWxrcyB0byB0aGUgY3VycmVudCB0dXBsZSB2aWEgdGhlIGhvdC1p bmRleGVkIGhvcCwKKy0tIG5vZGVJbmRleHNjYW4gcmUtZXZhbHVhdGVzIGBpbmRleGVkX2Nv bCA9IDEwMGAgYWdhaW5zdCB0aGUgY3VycmVudAorLS0gdHVwbGUgKGluZGV4ZWRfY29sPTE1 MCksIGFuZCB0aGUgcm93IGlzIGNvcnJlY3RseSBkcm9wcGVkLiAgVGhpcyBpcworLS0gdGhl IGVxdWFsaXR5LWxvb2t1cCBjYXNlIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgaGFu ZGxlcy4KK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlkIEZST00gaGlfYmFzaWMgV0hF UkUgaW5kZXhlZF9jb2wgPSAxMDA7CitTRUxFQ1QgaWQgRlJPTSBoaV9iYXNpYyBXSEVSRSBp bmRleGVkX2NvbCA9IDEwMDsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCistLSBwZ19yZWxh dGlvbl9ob3RfaW5kZXhlZF9zdGF0cyBzZWVzIG9uZSBIT1QtaW5kZXhlZCB2ZXJzaW9uLCB6 ZXJvIEhPVCByZWRpcmVjdHMgKHRoZQorLS0gY2hhaW4gaGFzIG5vdCB5ZXQgYmVlbiBwcnVu ZWQgc28gbm8gTFBfUkVESVJFQ1QgZXhpc3RzKS4KK1NFTEVDVCBuX2hvdF9pbmRleGVkLCBu X2NoYWlucywgYXZnX2NoYWluX2xlbiwgbWF4X2NoYWluX2xlbgorRlJPTSBwZ19yZWxhdGlv bl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfYmFzaWMnKTsKKworRFJPUCBUQUJMRSBoaV9iYXNp YzsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyLiBSQU5HRS9JTkVRVUFMSVRZ IGNvcnJlY3RuZXNzIGFmdGVyIGhvdC1pbmRleGVkIG9uIGFuIGluZGV4ZWQgY29sdW1uCist LQorLS0gVGhpcyBpcyB0aGUgdGVzdCBjbGFzcyB0aGF0IGNhdGNoZXMgdGhlIGhvdC1pbmRl eGVkIGZhbHNlLWR1cCBidWc6IGEgc3RhbGUKKy0tIGJ0cmVlIGVudHJ5IHdob3NlIGtleSB2 YWx1ZSBzdGlsbCBzYXRpc2ZpZXMgdGhlIHJhbmdlIHByZWRpY2F0ZSwKKy0tIHJlYWNoYWJs ZSB2aWEgdGhlIGhvdC1pbmRleGVkIGNoYWluIGhvcC4KKy0tCistLSBUbyBleGVyY2lzZSB0 aGUgYnVnIHdlIG11c3QgZm9yY2UgYW4gSW5kZXhTY2FuIHBsYW4gKHRoZQorLS0gSW5kZXhP bmx5U2NhbiBwYXRoIHBlcm1pc3NpdmVseSBkcm9wcyBldmVyeSBob3QtaW5kZXhlZC1yZWFj aGFibGUgaW5kZXgtb25seQorLS0gaGl0OyB0aGUgQml0bWFwSGVhcFNjYW4gcGF0aCBkZWR1 cHMgYnkgVElEKS4gIFdlIGluY2x1ZGUgYSBwYXlsb2FkCistLSBjb2x1bW4gbm90IHByZXNl bnQgaW4gdGhlIFBLIHNvIHRoZSBwbGFubmVyIG11c3QgaGVhcC1mZXRjaC4KKy0tCistLSBU aGUgcmVhZC1zaWRlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBtYWtlcyB0aGUgSW5kZXhT Y2FuIHJldHVybiB0aGUgY29ycmVjdAorLS0gY291bnQgb2YgMTogdGhlIHN0YWxlIGVudHJ5 ICgnMScsJzUnKSBjaGFpbi13YWxrcyB0byB0aGUgbGl2ZSB0dXBsZSBhY3Jvc3MKKy0tIHRo ZSBiLWNoYW5naW5nIGhvcCwgYW5kIGJlY2F1c2UgdGhlIFBLIGNvdmVycyBiIHRoZSBvdmVy bGFwIGlzIG5vbi1lbXB0eSwgc28KKy0tIHRoZSBzdGFsZSBsZWFmIGlzIGRyb3BwZWQuICBU aGUgZnJlc2ggZW50cnkgKCcxJywnMTUnKSBwb2ludHMgZGlyZWN0bHkgYXQgdGhlCistLSBs aXZlIHR1cGxlIChubyBob3AgYWZ0ZXIgaXQpIGFuZCBpcyBrZXB0LiAgVGhlIE9SREVSIEJZ IGxpa2V3aXNlIHJldHVybnMgdGhlCistLSBzaW5nbGUgbGl2ZSByb3cuCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9yYW5nZSAoCisgICAgYSBpbnQsCisg ICAgYiBpbnQsCisgICAgcGF5bG9hZCB0ZXh0LAorICAgIFBSSU1BUlkgS0VZIChhLCBiKQor KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCitJTlNFUlQgSU5UTyBoaV9yYW5nZSBWQUxV RVMgKDEsIDUsICdoaScpOworCistLSBob3QtaW5kZXhlZCB1cGRhdGUgb24gdGhlIHNlY29u ZCBQSyBjb2x1bW46IHN0YWxlIGJ0cmVlIGVudHJ5ICgnMScsJzUnKQorLS0gcmVtYWlucywg bmV3IGVudHJ5ICgnMScsJzE1JykgaW5zZXJ0ZWQuICBUaGUgc3RhbGUgZW50cnkgcG9pbnRz IGF0CistLSB0aGUgY2hhaW4gcm9vdDsgdGhlIGZyZXNoIGVudHJ5IHBvaW50cyBkaXJlY3Rs eSBhdCB0aGUgbmV3CistLSBoZWFwLW9ubHkgdHVwbGUuCitVUERBVEUgaGlfcmFuZ2UgU0VU IGIgPSAxNSBXSEVSRSBhID0gMSBBTkQgYiA9IDU7CisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9 IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKKworLS0gSW5kZXhTY2FuOiBw YXlsb2FkIElTIE5PVCBOVUxMIGZvcmNlcyBoZWFwIGZldGNoLCBubyBJbmRleE9ubHlTY2Fu LgorLS0gVGhlIHN0YWxlICgnMScsJzUnKSBsZWFmIGlzIGRyb3BwZWQgYnkgdGhlIGNyb3Nz ZWQtYXR0cmlidXRlIGJpdG1hcCwgc28gdGhpcworLS0gcmV0dXJucyAxLgorRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEg QU5EIGIgPCAxMDAgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CitTRUxFQ1QgY291bnQoKikg RlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMCBBTkQgcGF5bG9hZCBJUyBO T1QgTlVMTDsKK1NFTEVDVCBhLCBiIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIHBh eWxvYWQgSVMgTk9UIE5VTEwgT1JERVIgQlkgYjsKKworLS0gSW5kZXhPbmx5U2NhbjogdGhl IHBhZ2UgaG9sZHMgYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyIHNvIGl0IGlzIG5l dmVyIGFsbC12aXNpYmxlOyBJT1MKKy0tIHBlcmZvcm1zIHRoZSBoZWFwIGZldGNoIGFuZCB0 aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBzdGFsZSAoJzEnLCc1JykK Ky0tIGxlYWYsIHNvIGNvdW50ID0gMS4KK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNv dW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7CitTRUxFQ1Qg Y291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsKKworLS0g Qml0bWFwSGVhcFNjYW46IFRJRCBkZWR1cCBjb2xsYXBzZXMgdGhlIHN0YWxlIGFuZCBmcmVz aCBoaXRzLgorU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4 b25seXNjYW4gPSBvZmY7CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK0VYUExBSU4gKENP U1RTIE9GRikgU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5E IGIgPCAxMDA7CitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBB TkQgYiA8IDEwMDsKK1JFU0VUIGVuYWJsZV9pbmRleHNjYW47CitSRVNFVCBlbmFibGVfaW5k ZXhvbmx5c2NhbjsKKworLS0gU2VxU2NhbjogcmVhZHMgdGhlIGhlYXAgZGlyZWN0bHksIHNl ZXMgZXhhY3RseSBvbmUgbGl2ZSB0dXBsZS4KK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VU IGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4b25seXNjYW4gPSBv ZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYp IFNFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBiIDwgMTAw OworU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAx MDA7CitSRVNFVCBlbmFibGVfaW5kZXhzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4b25seXNj YW47CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKKworLS0gU2FtZSBzaGFwZSBvbiBhIHNl Y29uZGFyeSAobm9uLVBLKSBidHJlZTogYW5vdGhlciBob3QtaW5kZXhlZCB1cGRhdGUgb24g Yi4KK0NSRUFURSBJTkRFWCBoaV9yYW5nZV9iX2lkeCBPTiBoaV9yYW5nZShiKTsKK1VQREFU RSBoaV9yYW5nZSBTRVQgYiA9IDI1IFdIRVJFIGEgPSAxIEFORCBiID0gMTU7CisKK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKKy0t IEluZGV4U2NhbiBwYXRoIG9uIHRoZSBzZWNvbmRhcnkgaW5kZXg7IHNhbWUgZml4IGFwcGxp ZXMuCitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBiIEJFVFdFRU4gMCBB TkQgMTAwIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworUkVTRVQgZW5hYmxlX3NlcXNjYW47 CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKKworRFJPUCBUQUJMRSBoaV9yYW5nZTsKKwor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAzLiBBbGwtb3Itbm9uZSBvbiBhIG11bHRp LWluZGV4ZWQgdGFibGU6IGhvdC1pbmRleGVkIG9ubHkgdG91Y2hlcyBpbmRleGVzCistLSAg ICB3aG9zZSBhdHRyaWJ1dGVzIGNoYW5nZWQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor Q1JFQVRFIFRBQkxFIGhpX211bHRpICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAg Y29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBjb2xfYyBpbnQsCisgICAgbm9uX2lu ZGV4ZWQgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhp X211bHRpX2FfaWR4IE9OIGhpX211bHRpKGNvbF9hKTsKK0NSRUFURSBJTkRFWCBoaV9tdWx0 aV9iX2lkeCBPTiBoaV9tdWx0aShjb2xfYik7CitDUkVBVEUgSU5ERVggaGlfbXVsdGlfY19p ZHggT04gaGlfbXVsdGkoY29sX2MpOworCitJTlNFUlQgSU5UTyBoaV9tdWx0aSBWQUxVRVMg KDEsIDEwLCAyMCwgMzAsICdpbml0aWFsJyk7CisKKy0tIGNvbF9hIG9ubHk6IHVuZGVyIGhv dC1pbmRleGVkIHRoaXMgaXMgSE9ULWluZGV4ZWQsIGFuZCBvbmx5IGhpX211bHRpX2FfaWR4 CistLSBnZXRzIGEgbmV3IGVudHJ5LiAgaGlfbXVsdGlfYl9pZHggLyBoaV9tdWx0aV9jX2lk eCBrZWVwIHBvaW50aW5nCistLSBhdCB0aGUgY2hhaW4gcm9vdC4KK1VQREFURSBoaV9tdWx0 aSBTRVQgY29sX2EgPSAxNSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9u ZXh0X2ZsdXNoKCk7CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfbXVsdGknKTsK KworLS0gTG9va3VwcyBvbiBhbGwgdGhyZWUgaW5kZXhlcyByZXR1cm4gdGhlIHJvdy4KK1NF VCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX211bHRpIFdIRVJF IGNvbF9hID0gMTU7CitTRUxFQ1QgaWQgRlJPTSBoaV9tdWx0aSBXSEVSRSBjb2xfYiA9IDIw OworU0VMRUNUIGlkIEZST00gaGlfbXVsdGkgV0hFUkUgY29sX2MgPSAzMDsKKworLS0gT2xk IGNvbF9hIHZhbHVlIGlzIHVucmVhY2hhYmxlIGJ5IGVxdWFsaXR5IChzdGFsZSBlbnRyeSBk cm9wcGVkIGJ5IHRoZQorLS0gcmVhZC1zaWRlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCku CitTRUxFQ1QgaWQgRlJPTSBoaV9tdWx0aSBXSEVSRSBjb2xfYSA9IDEwOworUkVTRVQgZW5h YmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgaGlfbXVsdGk7CisKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gNC4gTXVsdGktY29sdW1uIGJ0cmVlOiBob3QtaW5kZXhlZCBvbiBw YXJ0IG9mIGEgY29tcG9zaXRlIGtleQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVB VEUgVEFCTEUgaGlfY29tcG9zaXRlICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAg Y29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9jb21wb3NpdGVfYWJfaWR4IE9OIGhp X2NvbXBvc2l0ZShjb2xfYSwgY29sX2IpOworCitJTlNFUlQgSU5UTyBoaV9jb21wb3NpdGUg VkFMVUVTICgxLCAxMCwgMjAsICdkYXRhJyk7CisKKy0tIGNvbF9hIGlzIHBhcnQgb2YgdGhl IGNvbXBvc2l0ZSBrZXk6IGhvdC1pbmRleGVkLgorVVBEQVRFIGhpX2NvbXBvc2l0ZSBTRVQg Y29sX2EgPSAxNTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVD VCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9jb21wb3NpdGUnKTsKKworLS0gUmVzZXQgYW5k IHRoZW4gdXBkYXRlIGNvbF9iIChhbHNvIHBhcnQgb2YgdGhlIGtleSkuCitVUERBVEUgaGlf Y29tcG9zaXRlIFNFVCBjb2xfYSA9IDEwOworVVBEQVRFIGhpX2NvbXBvc2l0ZSBTRVQgY29s X2IgPSAyNTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAq IEZST00gZ2V0X2hpX2NvdW50KCdoaV9jb21wb3NpdGUnKTsKKworRFJPUCBUQUJMRSBoaV9j b21wb3NpdGU7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNS4gUGFydGlhbCBp bmRleDogc3RhdHVzIHRyYW5zaXRpb24gb3V0LW9mLXByZWRpY2F0ZQorLS0KKy0tICdzdGF0 dXMnIGlzIGEgcGFydGlhbC1pbmRleCBwcmVkaWNhdGUgY29sdW1uLiAgQSBjaGFuZ2UgdG8g YSBwcmVkaWNhdGUKKy0tIGNvbHVtbiBjYW4gZmxpcCBhIHJvdyBpbiBvciBvdXQgb2YgdGhl IGluZGV4LCB3aGljaCB0aGUgcmVhZC1zaWRlIGtleQorLS0gcmVjaGVjayBjYW5ub3QgZGV0 ZWN0LCBzbyBIZWFwVXBkYXRlSG90QWxsb3dhYmxlIGNvbnNlcnZhdGl2ZWx5IGRpc3F1YWxp ZmllcworLS0gSE9ULWluZGV4ZWQgZm9yIGFueSBwcmVkaWNhdGUtY29sdW1uIGNoYW5nZSAo ZXZlbiB0aGlzIG91dC1vZi1wcmVkaWNhdGUgLT4KKy0tIG91dC1vZi1wcmVkaWNhdGUgY2Fz ZSkuICBUaGUgdXBkYXRlIGlzIHRoZXJlZm9yZSBub24tSE9ULCBhbmQgdGhlIHBhcnRpYWwK Ky0tIGluZGV4IGNvcnJlY3RseSBzdGF5cyBlbXB0eSBmb3IgdGhlc2Ugbm9uLSdhY3RpdmUn IHJvd3MuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0 aWFsICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgc3RhdHVzIHRleHQsCisgICAg ZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlf cGFydGlhbF9hY3RpdmVfaWR4IE9OIGhpX3BhcnRpYWwoc3RhdHVzKSBXSEVSRSBzdGF0dXMg PSAnYWN0aXZlJzsKKworSU5TRVJUIElOVE8gaGlfcGFydGlhbCBWQUxVRVMgKDEsICdhY3Rp dmUnLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhpX3BhcnRpYWwgVkFMVUVTICgyLCAnaW5h Y3RpdmUnLCAnZGF0YTInKTsKK0lOU0VSVCBJTlRPIGhpX3BhcnRpYWwgVkFMVUVTICgzLCAn ZGVsZXRlZCcsICdkYXRhMycpOworCistLSBvdXQgLT4gb3V0IHRyYW5zaXRpb24gb24gdGhl IHByZWRpY2F0ZSBjb2x1bW46IEhPVC1pbmRleGVkIGtlZXBzIGl0IG9uLXBhZ2UsCistLSBh bmQgdGhlIHBhcnRpYWwgaW5kZXggZ2V0cyBubyBlbnRyeSAodGhlIHJvdyBzYXRpc2ZpZXMg dGhlIHByZWRpY2F0ZSBuZWl0aGVyCistLSBiZWZvcmUgbm9yIGFmdGVyIHRoZSB1cGRhdGUp LgorVVBEQVRFIGhpX3BhcnRpYWwgU0VUIHN0YXR1cyA9ICdkZWxldGVkJyBXSEVSRSBpZCA9 IDI7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgKiBGUk9N IGdldF9oaV9jb3VudCgnaGlfcGFydGlhbCcpOworCistLSBUaGUgcGFydGlhbCBpbmRleCBz dGlsbCBjb3JyZWN0bHkgYW5zd2VycyAiYWN0aXZlIiBxdWVyaWVzLgorU0VMRUNUIGlkLCBz dGF0dXMgRlJPTSBoaV9wYXJ0aWFsIFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOworCitEUk9Q IFRBQkxFIGhpX3BhcnRpYWw7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNi4g UGFydGl0aW9uOiBob3QtaW5kZXhlZCBpbnNpZGUgb25lIHBhcnRpdGlvbgorLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcGFydCAoCisgICAgaWQgaW50LAor ICAgIHBhcnRpdGlvbl9rZXkgaW50LAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBkYXRh IHRleHQsCisgICAgUFJJTUFSWSBLRVkgKGlkLCBwYXJ0aXRpb25fa2V5KQorKSBQQVJUSVRJ T04gQlkgUkFOR0UgKHBhcnRpdGlvbl9rZXkpOworQ1JFQVRFIFRBQkxFIGhpX3BhcnRfMSBQ QVJUSVRJT04gT0YgaGlfcGFydAorICAgIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwMCkg V0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0X2lkeCBPTiBo aV9wYXJ0KGluZGV4ZWRfY29sKTsKKworSU5TRVJUIElOVE8gaGlfcGFydCBWQUxVRVMgKDEs IDUwLCAxMDAsICdkYXRhJyk7CisKK1VQREFURSBoaV9wYXJ0IFNFVCBpbmRleGVkX2NvbCA9 IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7 CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfcGFydF8xJyk7CisKK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnQgV0hFUkUgaW5kZXhl ZF9jb2wgPSAxNTA7CitTRUxFQ1QgaWQgRlJPTSBoaV9wYXJ0IFdIRVJFIGluZGV4ZWRfY29s ID0gMTAwOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgaGlfcGFydCBD QVNDQURFOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcuIFRyaWdnZXIgbW9k aWZpZXMgaW5kZXhlZCBjb2x1bW46IGhvdC1pbmRleGVkLCBub3Qgbm9uLUhPVAorLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdHJpZ2dlciAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIHRyaWdnZXJlZF9jb2wgaW50LAorICAgIGRhdGEgdGV4 dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3RyaWdnZXJf aWR4IE9OIGhpX3RyaWdnZXIodHJpZ2dlcmVkX2NvbCk7CisKK0NSRUFURSBPUiBSRVBMQUNF IEZVTkNUSU9OIGhpX3RyaWdnZXJfYnVtcCgpCitSRVRVUk5TIFRSSUdHRVIgQVMgJCQKK0JF R0lOCisgICAgTkVXLnRyaWdnZXJlZF9jb2wgPSBORVcudHJpZ2dlcmVkX2NvbCArIDE7Cisg ICAgUkVUVVJOIE5FVzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBU UklHR0VSIGJlZm9yZV91cGRhdGVfYnVtcAorICAgIEJFRk9SRSBVUERBVEUgT04gaGlfdHJp Z2dlcgorICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgRlVOQ1RJT04gaGlfdHJpZ2dl cl9idW1wKCk7CisKK0lOU0VSVCBJTlRPIGhpX3RyaWdnZXIgVkFMVUVTICgxLCAxMDAsICdp bml0aWFsJyk7CisKKy0tIFVQREFURSdzIFNFVCBjbGF1c2UgZG9lc24ndCB0b3VjaCB0aGUg aW5kZXhlZCBjb2x1bW4sIGJ1dCB0aGUKKy0tIHRyaWdnZXIgbW9kaWZpZXMgaXQgdmlhIGhl YXBfbW9kaWZ5X3R1cGxlLiAgaG90LWluZGV4ZWQgbXVzdCBkZXRlY3QgdGhpcworLS0gYW5k IGtlZXAgdGhlIHR1cGxlIG9uLXBhZ2UgKEhFQVBfSU5ERVhFRF9VUERBVEVEKSBwbHVzIGEg bmV3IGJ0cmVlIGVudHJ5LgorVVBEQVRFIGhpX3RyaWdnZXIgU0VUIGRhdGEgPSAndXBkYXRl ZCcgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwor U0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX3RyaWdnZXInKTsKK1NFTEVDVCB0cmln Z2VyZWRfY29sIEZST00gaGlfdHJpZ2dlciBXSEVSRSBpZCA9IDE7CisKKy0tIE5ldyB2YWx1 ZSByZWFjaGFibGUuCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQgRlJP TSBoaV90cmlnZ2VyIFdIRVJFIHRyaWdnZXJlZF9jb2wgPSAxMDE7CitTRUxFQ1QgaWQgRlJP TSBoaV90cmlnZ2VyIFdIRVJFIHRyaWdnZXJlZF9jb2wgPSAxMDA7CitSRVNFVCBlbmFibGVf c2Vxc2NhbjsKKworRFJPUCBUQUJMRSBoaV90cmlnZ2VyIENBU0NBREU7CitEUk9QIEZVTkNU SU9OIGhpX3RyaWdnZXJfYnVtcCgpOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDguIEpTT05CIGV4cHJlc3Npb24gaW5kZXg6IEhPVC1pbmRleGVkIGlzIG5vdCB5ZXQgc3Vw cG9ydGVkIG9uIGV4cHJlc3Npb24KKy0tICAgIGluZGV4ZXMsIHNvIHRoZSB1cGRhdGUgZmFs bHMgYmFjayB0byBhIG5vbi1IT1QgdXBkYXRlIChob3RfaWR4ID0gMCkuCistLSAgICBSZWFk cyBzdGF5IGNvcnJlY3QuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJM RSBoaV9qc29uYiAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGRhdGEganNvbmIK KykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9qc29uYl9uYW1l X2lkeCBPTiBoaV9qc29uYiAoKGRhdGEtPj4nbmFtZScpKTsKKworSU5TRVJUIElOVE8gaGlf anNvbmIgVkFMVUVTICgxLCAneyJuYW1lIjoiQWxpY2UiLCJhZ2UiOjMwfScpOworCistLSBD aGFuZ2luZyB0aGUgaW5kZXhlZCBleHByZXNzaW9uJ3MgdmFsdWUgKG5hbWUpOiBleHByZXNz aW9uIGluZGV4ZXMgYXJlIG5vdAorLS0geWV0IHN1cHBvcnRlZCwgc28gdGhpcyBpcyBhIG5v bi1IT1QgdXBkYXRlLgorVVBEQVRFIGhpX2pzb25iIFNFVCBkYXRhID0ganNvbmJfc2V0KGRh dGEsICd7bmFtZX0nLCAnIkFsaWNlMiInKSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlf anNvbmInKTsKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkIEZST00g aGlfanNvbmIgV0hFUkUgZGF0YS0+PiduYW1lJyA9ICdBbGljZTInOworU0VMRUNUIGlkIEZS T00gaGlfanNvbmIgV0hFUkUgZGF0YS0+PiduYW1lJyA9ICdBbGljZSc7CitSRVNFVCBlbmFi bGVfc2Vxc2NhbjsKKworRFJPUCBUQUJMRSBoaV9qc29uYjsKKworLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSA5LiBHSU4gaW5kZXggd2l0aCBjaGFuZ2VkIGV4dHJhY3RlZCBrZXlz OiBob3QtaW5kZXhlZAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUg aGlfZ2luICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdGFncyB0ZXh0W10KKykg V0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9naW5fdGFnc19pZHgg T04gaGlfZ2luIFVTSU5HIGdpbiAodGFncyk7CisKK0lOU0VSVCBJTlRPIGhpX2dpbiBWQUxV RVMgKDEsIEFSUkFZWyd0YWcxJywgJ3RhZzInXSk7CisKKy0tIEFkZGluZyBhIHRhZyB5aWVs ZHMgYSBkaWZmZXJlbnQgZXh0cmFjdGVkLWtleSBzZXQ6IGhvdC1pbmRleGVkLgorVVBEQVRF IGhpX2dpbiBTRVQgdGFncyA9IEFSUkFZWyd0YWcxJywgJ3RhZzInLCAndGFnNSddIFdIRVJF IGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAq IEZST00gZ2V0X2hpX2NvdW50KCdoaV9naW4nKTsKKworU0VUIGVuYWJsZV9zZXFzY2FuID0g b2ZmOworU0VMRUNUIGlkIEZST00gaGlfZ2luIFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUn XTsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCitEUk9QIFRBQkxFIGhpX2dpbjsKKworLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxMC4gUGVyLWluZGV4IEhPVC1pbmRleGVkIGNv dW50ZXJzOiBza2lwcGVkIHZzIG1hdGNoZWQKKy0tCistLSBBIHRhYmxlIHdpdGggdHdvIGlu ZGVwZW5kZW50IHNlY29uZGFyeSBpbmRleGVzLiAgQW4gVVBEQVRFIHRvdWNoZXMgYQorLS0g Y29sdW1uIGNvdmVyZWQgYnkgb25seSBvbmUgb2YgdGhlbTsgdGhlIEhPVC1pbmRleGVkIHBh dGggbXVzdCBpbnNlcnQKKy0tIGludG8gdGhhdCBvbmUgaW5kZXggYW5kIHNraXAgdGhlIG90 aGVyLiAgcGdfc3RhdF9hbGxfaW5kZXhlcyByZXBvcnRzCistLSBtYXRjaGVkPjAgb24gdGhl IHVwZGF0ZWQgaW5kZXggYW5kIHNraXBwZWQ+MCBvbiB0aGUgdW50b3VjaGVkIGluZGV4Lgor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaG90aWR4X3BlcmluZGV4 ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgYSBpbnQsCisgICAgYiBpbnQKKykg V0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBob3RpZHhfcGVyaW5kZXhf YSBPTiBob3RpZHhfcGVyaW5kZXgoYSk7CitDUkVBVEUgSU5ERVggaG90aWR4X3BlcmluZGV4 X2IgT04gaG90aWR4X3BlcmluZGV4KGIpOworCitJTlNFUlQgSU5UTyBob3RpZHhfcGVyaW5k ZXggVkFMVUVTICgxLCAxMDAsIDIwMCk7CisKKy0tIE1vZGlmeSBvbmx5IGNvbHVtbiBhLiAg SE9ULWluZGV4ZWQgaW5zZXJ0cyBpbnRvIGhvdGlkeF9wZXJpbmRleF9hIGFuZAorLS0gc2tp cHMgaG90aWR4X3BlcmluZGV4X2IgKHByaW1hcnkga2V5IGluZHJlbGlkIGlzIHRoZSB0YWJs ZSBpdHNlbGYgYW5kCistLSBhbHNvIHVuY2hhbmdlZCwgc28gaXQgY291bnRzIGFzIHNraXBw ZWQgdG9vKS4KK1VQREFURSBob3RpZHhfcGVyaW5kZXggU0VUIGEgPSAxMDEgV0hFUkUgaWQg PSAxOworCistLSBGb3JjZSBmbHVzaCBvZiBwZW5kaW5nIHN0YXRzIHRvIHRoZSBzaGFyZWQg ZW50cnkuCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisKK1NFTEVDVCBp bmRleHJlbG5hbWUsCisgICAgICAgbl90dXBfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQgQVMg bWF0Y2hlZCwKKyAgICAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCBBUyBza2lw cGVkCisgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcworIFdIRVJFIHJlbG5hbWUgPSAnaG90 aWR4X3BlcmluZGV4JworIE9SREVSIEJZIGluZGV4cmVsbmFtZTsKKworLS0gQSBzZWNvbmQg VVBEQVRFIHRvdWNoaW5nIG9ubHkgYiBpbnZlcnRzIHRoZSBhc3NpZ25tZW50LgorVVBEQVRF IGhvdGlkeF9wZXJpbmRleCBTRVQgYiA9IDIwMSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisKK1NFTEVDVCBpbmRleHJlbG5hbWUsCisgICAg ICAgbl90dXBfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQgQVMgbWF0Y2hlZCwKKyAgICAgICBu X3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCBBUyBza2lwcGVkCisgIEZST00gcGdfc3Rh dF9hbGxfaW5kZXhlcworIFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JworIE9S REVSIEJZIGluZGV4cmVsbmFtZTsKKworLS0gSW52YXJpYW50OiBtYXRjaGVkICsgc2tpcHBl ZCA9PSBvd25pbmcgdGFibGUncyBuX3R1cF9ob3RfaW5kZXhlZF91cGQuCitTRUxFQ1QgaW5k ZXhyZWxuYW1lLAorICAgICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkICsgbl90 dXBfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQgQVMgdG90YWwsCisgICAgICAgKFNFTEVDVCBu X3R1cF9ob3RfaW5kZXhlZF91cGQgRlJPTSBwZ19zdGF0X2FsbF90YWJsZXMKKyAgICAgICAg IFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JykgQVMgdGFibGVfaG90X2lkeF91 cGQKKyAgRlJPTSBwZ19zdGF0X2FsbF9pbmRleGVzCisgV0hFUkUgcmVsbmFtZSA9ICdob3Rp ZHhfcGVyaW5kZXgnCisgT1JERVIgQlkgaW5kZXhyZWxuYW1lOworCistLSBCb29sZWFuIGFz c2VydGlvbiBvZiB0aGUgc2FtZSBpbnZhcmlhbnQuICBUaGlzIGlzIHRoZSBjYW5vbmljYWwg Zm9ybQorLS0gcmV2aWV3ZXJzIGFza2VkIGZvcjogZXZlcnkgaW5kZXggZW50cnkgaXMgZWl0 aGVyIG1hdGNoZWQgKHRoZSBpbmRleAorLS0gZ290IGEgZnJlc2ggaW5zZXJ0IHRoaXMgVVBE QVRFKSBvciBza2lwcGVkIChIT1QtaW5kZXhlZCBjb3JyZWN0bHkKKy0tIGF2b2lkZWQgYW4g aW5zZXJ0IGJlY2F1c2UgdGhlIGluZGV4J3MgYXR0cnMgZGlkIG5vdCBjaGFuZ2UpLiAgSWYg dGhlCistLSB0d28gY291bnRlcnMgZHJpZnQgYXBhcnQgZnJvbSB0aGUgdGFibGUtbGV2ZWwg bl90dXBfaG90X2luZGV4ZWRfdXBkIHdlCistLSBoYXZlIGVpdGhlciBsb3N0IGEgcGVyLWlu ZGV4IGluY3JlbWVudCBvciBkb3VibGUtY291bnRlZCBvbmUuCitTRUxFQ1QgYm9vbF9hbmQo KG5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkICsgbl90dXBfaG90X2luZGV4ZWRfdXBk X3NraXBwZWQpID0KKyAgICAgICAgICAgICAgICAoU0VMRUNUIG5fdHVwX2hvdF9pbmRleGVk X3VwZCBGUk9NIHBnX3N0YXRfYWxsX3RhYmxlcworICAgICAgICAgICAgICAgICAgV0hFUkUg cmVsbmFtZSA9ICdob3RpZHhfcGVyaW5kZXgnKSkKKyAgICAgICAgIEFTIHBlcmluZGV4X2lu dmFyaWFudF9ob2xkcworICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKKyBXSEVSRSByZWxu YW1lID0gJ2hvdGlkeF9wZXJpbmRleCc7CisKK0RST1AgVEFCTEUgaG90aWR4X3BlcmluZGV4 OworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDExLiBMb25nIGhvdC1sb29wIFVQ REFURSBzdGF5cyBjb21wYWN0IGFuZCBIT1QtaW5kZXhlZAorLS0KKy0tIEEgbG9uZyBydW4g b2YgSE9ULWluZGV4ZWQgVVBEQVRFcyB0byBhIHNpbmdsZSByb3cgc3RheXMgY29tcGFjdDog cHJ1bmUKKy0tIGNvbGxhcHNlcyBlYWNoIGRlYWQgdmVyc2lvbiB0byBhIHJlZGlyZWN0IHRv IHRoZSBsaXZlIHR1cGxlIGFuZCByZXVzZXMgaXRzCistLSBzbG90LCBzbyB0aGUgcm93IG5l dmVyIGxlYXZlcyBpdHMgb3JpZ2luYWwgcGFnZSBhbmQgdGhlIGNoYWluIGRvZXMgbm90IGdy b3cKKy0tIHVuYm91bmRlZC4gIEV2ZXJ5IFVQREFURSB0aGF0IGNoYW5nZXMgdGhlIGluZGV4 ZWQgY29sdW1uIChhbmQgbGVhdmVzIGFub3RoZXIKKy0tIGluZGV4LCBoZXJlIHRoZSBQSywg dW5jaGFuZ2VkKSB0YWtlcyB0aGUgSE9ULWluZGV4ZWQgcGF0aC4KKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2NoYWluY2FwICgKKyAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCisgICAgYSBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDEwKTsKK0NSRUFU RSBJTkRFWCBoaV9jaGFpbmNhcF9hX2lkeCBPTiBoaV9jaGFpbmNhcChhKTsKKworSU5TRVJU IElOVE8gaGlfY2hhaW5jYXAgVkFMVUVTICgxLCAwKTsKKworRE8gJCQKK0RFQ0xBUkUKKyAg ICBpIGludDsKK0JFR0lOCisgICAgRk9SIGkgSU4gMSAuLiAyMDAgTE9PUAorICAgICAgICBV UERBVEUgaGlfY2hhaW5jYXAgU0VUIGEgPSBpIFdIRVJFIGlkID0gMTsKKyAgICBFTkQgTE9P UDsKK0VORCAkJDsKKworLS0gQWZ0ZXIgMjAwIFVQREFURXMgdGhlIHJvdydzIHZhbHVlIGlz IDIwMC4KK1NFTEVDVCBhIEZST00gaGlfY2hhaW5jYXAgV0hFUkUgaWQgPSAxOworCistLSBF dmVyeSBVUERBVEUgdG9vayB0aGUgSE9ULWluZGV4ZWQgcGF0aCAodGhlIFBLIGluZGV4IGlz IHVuY2hhbmdlZCwgc28gaXQgaXMKKy0tIHNraXBwZWQpLCBzbyBuX3R1cF9ob3RfaW5kZXhl ZF91cGQgYWR2YW5jZWQuCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitT RUxFQ1QgaG90X2lkeCA+IDAgQVMgaG90X2luZGV4ZWRfZmlyZWQKKyAgRlJPTSBnZXRfaGlf Y291bnQoJ2hpX2NoYWluY2FwJyk7CisKKy0tIFRoZSBoZWFwIHN0YXllZCBjb21wYWN0OiBw cnVuZStjb2xsYXBzZSByZWNsYWltZWQgdGhlIGRlYWQgdmVyc2lvbnMsIHNvIHRoZQorLS0g c2luZ2xlIGxpdmUgcm93IHN0aWxsIG9jY3VwaWVzIGp1c3Qgb25lIHBhZ2UuCitTRUxFQ1Qg cmVscGFnZXMgPD0gMSBBUyBoZWFwX3N0YXllZF9jb21wYWN0CisgIEZST00gcGdfY2xhc3Mg V0hFUkUgcmVsbmFtZSA9ICdoaV9jaGFpbmNhcCc7CisKK0RST1AgVEFCTEUgaGlfY2hhaW5j YXA7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTIuIFJlY2xhbWF0aW9uIG9m IGEgY29sbGFwc2VkIEhPVC1pbmRleGVkIGNoYWluIGJ5IHBydW5lCistLQorLS0gQSBkZWFk IEhPVC1pbmRleGVkIGNoYWluIG1lbWJlciBpcyBwcmVzZXJ2ZWQgYXQgcHJ1bmUgdGltZSAo aXRzIHN0YWxlIGxlYWYKKy0tIG1heSBzdGlsbCBleGlzdCkgYW5kIHRoZSBjaGFpbiBjb2xs YXBzZXMgdG8gYW4gTFBfUkVESVJFQ1QgZm9yd2FyZGVyOyB0aGUKKy0tIGluZGV4IGNsZWFu dXAgcGFzcyB0aGVuIHN3ZWVwcyB0aGUgc3RhbGUgbGVhZiwgYW5kIGEgc2Vjb25kIFZBQ1VV TSByZWNsYWltcworLS0gdGhlIG5vdy11bnJlZmVyZW5jZWQgbWVtYmVyIGFuZCByZS1wb2lu dHMgdGhlIHJlZGlyZWN0LiAgU28gdGhlIGNoYWluIGlzCistLSBmdWxseSByZWNsYWltZWQg YWZ0ZXIgdGhlIHNlY29uZCBWQUNVVU0sIG5vdCB0aGUgZmlyc3QuCistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9yZWNsYWltICgKKyAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCisgICAgYSBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFU RSBJTkRFWCBoaV9yZWNsYWltX2FfaWR4IE9OIGhpX3JlY2xhaW0oYSk7CisKK0lOU0VSVCBJ TlRPIGhpX3JlY2xhaW0gVkFMVUVTICgxLCAxMDApOworLS0gR2VuZXJhdGUgYSBjb2xsYXBz ZWQgY2hhaW4gdmlhIGEgSE9ULWluZGV4ZWQgdXBkYXRlLgorVVBEQVRFIGhpX3JlY2xhaW0g U0VUIGEgPSAyMDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIG5faG90X2luZGV4ZWQgPj0gMSBB UyBob3RfaW5kZXhlZF9wcmVzZW50X2JlZm9yZV9yZWNsYWltCisgIEZST00gcGdfcmVsYXRp b25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX3JlY2xhaW0nKTsKKworLS0gRGVsZXRlIHRoZSBs aXZlIHR1cGxlLiAgVGhlIGZpcnN0IFZBQ1VVTSBjb2xsYXBzZXMgdGhlIGRlYWQgY2hhaW4g YW5kIHN3ZWVwcworLS0gdGhlIHN0YWxlIGxlYWY7IHRoZSBzZWNvbmQgcmVjbGFpbXMgdGhl IG5vdy11bnJlZmVyZW5jZWQgbWVtYmVycy4KK0RFTEVURSBGUk9NIGhpX3JlY2xhaW0gV0hF UkUgaWQgPSAxOworVkFDVVVNIGhpX3JlY2xhaW07CitWQUNVVU0gaGlfcmVjbGFpbTsKKwor U0VMRUNUIG5faG90X2luZGV4ZWQgQVMgaG90X2luZGV4ZWRfYWZ0ZXJfcmVjbGFpbSwKKyAg ICAgICBuX2NoYWlucyBBUyBjaGFpbnNfYWZ0ZXJfcmVjbGFpbQorICBGUk9NIHBnX3JlbGF0 aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9yZWNsYWltJyk7CisKK0RST1AgVEFCTEUgaGlf cmVjbGFpbTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxMy4gUGFnZSB3aXRo IGEgcHJlc2VydmVkIEhPVC1pbmRleGVkIG1lbWJlciBpcyBuZXZlciBtYXJrZWQgYWxsLXZp c2libGUKKy0tCistLSBwcnVuZWhlYXAgZGVsaWJlcmF0ZWx5IGxlYXZlcyBQRF9BTExfVklT SUJMRSBjbGVhciBvbiBhbnkgcGFnZSB0aGF0IHN0aWxsCistLSBjYXJyaWVzIGEgcHJlc2Vy dmVkIEhPVC1pbmRleGVkIG1lbWJlcjogYW4gaW5kZXgtb25seSBzY2FuIG11c3QgaGVhcC1m ZXRjaAorLS0gdGhyb3VnaCB0aGUgY2hhaW4gc28gdGhlIHJlYWQtc2lkZSBjcm9zc2VkLWF0 dHJpYnV0ZSBiaXRtYXAgY2FuIGZpbHRlciBzdGFsZSBidHJlZQorLS0gZW50cmllcy4KKy0t CistLSBXZSBmb3JjZSB0aGUgZnJlZXplIHBhdGggd2l0aCBWQUNVVU0gKEZSRUVaRSwgRElT QUJMRV9QQUdFX1NLSVBQSU5HKSBhbmQKKy0tIHRoZW4gcmVhZCBwZF9mbGFncyB2aWEgcGFn ZWluc3BlY3QucGFnZV9oZWFkZXIuICBUaGUgcGFnZSBtdXN0IHN0aWxsIGNhcnJ5CistLSBh IEhPVC1pbmRleGVkIG1lbWJlciAobl9ob3RfaW5kZXhlZCA+IDApIEFORCBtdXN0IG5vdCBo YXZlIFBEX0FMTF9WSVNJQkxFCistLSAoMHgwMDA0KS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQ1JFQVRFIFRBQkxFIGhpX3ZtICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisg ICAgYSBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV92 bV9hX2lkeCBPTiBoaV92bShhKTsKKworSU5TRVJUIElOVE8gaGlfdm0gVkFMVUVTICgxLCAx KTsKKy0tIFR3byBIT1QtaW5kZXhlZCB1cGRhdGVzIGxlYXZlIGEgbXVsdGktaG9wIGNoYWlu LCBzbyBhIHByZXNlcnZlZCBIT1QtaW5kZXhlZAorLS0gbWVtYmVyIHJlbWFpbnMgb24gdGhl IHBhZ2UgYWZ0ZXIgcHJ1bmUsIHdoaWNoIGlzIHdoYXQgdGhpcyB0ZXN0IG5lZWRzLgorVVBE QVRFIGhpX3ZtIFNFVCBhID0gMiBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfdm0gU0VUIGEg PSAzIFdIRVJFIGlkID0gMTsKKworLS0gRm9yY2UgdGhlIGFsbC12aXNpYmxlIGJpdCBkZWNp c2lvbjogVkFDVVVNIHdpdGggRElTQUJMRV9QQUdFX1NLSVBQSU5HCistLSBjb25zaWRlcnMg ZXZlcnkgcGFnZTsgRlJFRVpFIHB1c2hlcyBoaW50IGJpdHMgaGFyZC4gIEFmdGVyIHRoaXMs IGFueQorLS0gcGFnZSBiZWFyaW5nIGEgcHJlc2VydmVkIEhPVC1pbmRleGVkIG1lbWJlciBt dXN0IHN0aWxsIHJlcG9ydCBhbGxfdmlzaWJsZSA9IDAuCitWQUNVVU0gKEZSRUVaRSwgRElT QUJMRV9QQUdFX1NLSVBQSU5HKSBoaV92bTsKKworU0VMRUNUIG5faG90X2luZGV4ZWQgPj0g MSBBUyBob3RfaW5kZXhlZF9wcmVzZW50CisgIEZST00gcGdfcmVsYXRpb25faG90X2luZGV4 ZWRfc3RhdHMoJ2hpX3ZtJyk7CisKKy0tIFBEX0FMTF9WSVNJQkxFID0gMHgwMDA0LiAgTXVz dCBiZSAwIG9uIGEgcGFnZSB3aXRoIGEgcHJlc2VydmVkIG1lbWJlci4KK1NFTEVDVCAoZmxh Z3MgJiA0KSA9IDAgQVMgbm90X21hcmtlZF9hbGxfdmlzaWJsZQorICBGUk9NIHBhZ2VfaGVh ZGVyKGdldF9yYXdfcGFnZSgnaGlfdm0nLCAwKSk7CisKK0RST1AgVEFCTEUgaGlfdm07CisK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTQuIEN5Y2xlLWtleSBkZWR1cDogY29s dW1uIHJlbmFtZSBhIC0+IGIgLT4gYSBzdGF5cyBjb3JyZWN0CistLQorLS0gQSByZW5hbWUg ZG9lcyBub3QgcmV3cml0ZSBoZWFwIG9yIGluZGV4IGVudHJpZXM7IGl0IG9ubHkgdXBkYXRl cyB0aGUKKy0tIGNhdGFsb2cuICBUaGUgcmVsY2FjaGUgaW52YWxpZGF0aW9uIG11c3QgdHJp Z2dlciBhIGZyZXNoIGF0dHJpYnV0ZQorLS0gYml0bWFwIGFuZCB0aGUgSE9ULWluZGV4ZWQg cHJlZGljYXRlIG11c3QgY29tcGFyZSBhdHRyaWJ1dGUgKm51bWJlcnMqLAorLS0gbm90IGF0 dHJpYnV0ZSAqbmFtZXMqLiAgQWZ0ZXIgdHdvIHJlbmFtZXMgdGhhdCBuZXQgdG8gaWRlbnRp dHksIGV2ZXJ5CistLSBzdWJzZXF1ZW50IFVQREFURSBtdXN0IGNvbnRpbnVlIHRvIGRyaXZl IHRoZSBIT1QtaW5kZXhlZCBwYXRoLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVB VEUgVEFCTEUgaGlfY3ljbGUgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBhIGlu dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2N5Y2xlX2Ff aWR4IE9OIGhpX2N5Y2xlKGEpOworCitJTlNFUlQgSU5UTyBoaV9jeWNsZSBWQUxVRVMgKDEs IDEwMCk7CisKKy0tIEN5Y2xlIHRoZSBjb2x1bW4gbmFtZSBhbmQgY29uZmlybSBib3RoIGlu dGVybWVkaWF0ZSBmb3JtcyBkcml2ZSBIT1QtaW5kZXhlZC4KK0FMVEVSIFRBQkxFIGhpX2N5 Y2xlIFJFTkFNRSBDT0xVTU4gYSBUTyBiOworVVBEQVRFIGhpX2N5Y2xlIFNFVCBiID0gMjAw IFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NF TEVDVCBob3RfaWR4ID4gMCBBUyBob3RfaW5kZXhlZF9hZnRlcl9maXJzdF9yZW5hbWUKKyAg RlJPTSBnZXRfaGlfY291bnQoJ2hpX2N5Y2xlJyk7CisKK0FMVEVSIFRBQkxFIGhpX2N5Y2xl IFJFTkFNRSBDT0xVTU4gYiBUTyBhOworVVBEQVRFIGhpX2N5Y2xlIFNFVCBhID0gMzAwIFdI RVJFIGlkID0gMTsKKy0tIExvb2t1cCB2aWEgdGhlIGluZGV4IHJldHVybnMgdGhlIGN1cnJl bnQgdmFsdWUsIG5vdCBhbnkgb2YgdGhlCistLSBwcmUtcmVuYW1lIHZhbHVlcy4KK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSBGUk9NIGhpX2N5Y2xlIFdIRVJF IGEgPSAzMDA7CitTRUxFQ1QgaWQgRlJPTSBoaV9jeWNsZSBXSEVSRSBhID0gMTAwOworU0VM RUNUIGlkIEZST00gaGlfY3ljbGUgV0hFUkUgYSA9IDIwMDsKK1JFU0VUIGVuYWJsZV9zZXFz Y2FuOworCitEUk9QIFRBQkxFIGhpX2N5Y2xlOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIDE1LiBTdW1tYXJpemluZy1vbmx5IGNvbHVtbiBVUERBVEUgcHJvZHVjZXMgQ0xB U1NJQywgbm90IElOREVYRUQKKy0tCistLSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlIHJldHVy bnMgSEVBUF9VUERBVEVfSE9UIHdoZW4gZXZlcnkKKy0tIG1vZGlmaWVkIGluZGV4ZWQgYXR0 cmlidXRlIGlzIGNvdmVyZWQgb25seSBieSBzdW1tYXJpemluZyBpbmRleGVzLgorLS0gQSBC UklOLW9ubHkgY29sdW1uIGlzIHRoZSBjYW5vbmljYWwgY2FzZTogdGhlIEJSSU4gaW5kZXgg Z2V0cyBhCistLSBuZXcgc3VtbWFyeSBlbnRyeSB2aWEgYW1pbnNlcnQsIGJ1dCBubyBwZXIt dXBkYXRlIGJ0cmVlIGVudHJ5IGlzCistLSBuZWVkZWQgYW5kIEhPVC1pbmRleGVkIGRvZXMg bm90IGZpcmUuICBUaGUgc2lnbmFsIGlzCistLSBuX3R1cF9ob3RfdXBkID4gMCB3aXRoIG5f dHVwX2hvdF9pbmRleGVkX3VwZCB1bmNoYW5nZWQuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK0NSRUFURSBUQUJMRSBoaV9icmluICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisg ICAgYmNvbCBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBo aV9icmluX2lkeCBPTiBoaV9icmluIFVTSU5HIGJyaW4oYmNvbCk7CisKK0lOU0VSVCBJTlRP IGhpX2JyaW4gVkFMVUVTICgxLCAxMDApOworCistLSBDYXB0dXJlIHRoZSBIT1QtaW5kZXhl ZCBjb3VudGVyIGJlZm9yZSwgZHJpdmUgYSBCUklOLW9ubHkgdXBkYXRlLAorLS0gYW5kIGFz c2VydCB0aGF0IGNsYXNzaWMgSE9UIGFkdmFuY2VkIHdoaWxlIEhPVC1pbmRleGVkIGRpZCBu b3QuCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgaG90X2lk eCBBUyBob3RfaWR4X2JlZm9yZSBGUk9NIGdldF9oaV9jb3VudCgnaGlfYnJpbicpIFxnc2V0 CitVUERBVEUgaGlfYnJpbiBTRVQgYmNvbCA9IDIwMCBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgKGhvdCAtIDApID4gMCBBUyBj bGFzc2ljX2hvdF9maXJlZCwKKyAgICAgICBob3RfaWR4ID0gOmhvdF9pZHhfYmVmb3JlIEFT IGhvdF9pbmRleGVkX2RpZF9ub3RfZmlyZQorICBGUk9NIGdldF9oaV9jb3VudCgnaGlfYnJp bicpOworCistLSBUaGUgQlJJTiBpbmRleCBzZWVzIHRoZSBuZXcgdmFsdWUgdmlhIGFtaW5z ZXJ0LgorU0VMRUNUIGJjb2wgRlJPTSBoaV9icmluIFdIRVJFIGlkID0gMTsKKworRFJPUCBU QUJMRSBoaV9icmluOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDE2LiBVTklR VUUgaW5kZXggb24gYSB0eXBlIHdoZXJlIGltYWdlIGVxdWFsaXR5ICE9IG9wZXJhdG9yIGVx dWFsaXR5CistLQorLS0gbnVtZXJpYyAxLjAgYW5kIDEuMDAgYXJlIGVxdWFsIHVuZGVyIHRo ZSBidHJlZSBvcGNsYXNzIGJ1dCBoYXZlCistLSBkaWZmZXJlbnQgb24tZGlzayBpbWFnZXMu ICBBIEhPVC1pbmRleGVkIHVwZGF0ZSAxLjAgLT4gMS4wMCBpbnNlcnRzIGEKKy0tIGZyZXNo IGxlYWYgY2FycnlpbmcgdGhlIGxpdmUgaW1hZ2UgYW5kIGxlYXZlcyBhIHN0YWxlIGxlYWYg Zm9yIDEuMAorLS0gKHRoZSBob3AncyBtb2RpZmllZC1hdHRycyBiaXRtYXAgbWFya3MgayBj aGFuZ2VkLCBzaW5jZSBtb2RpZmllZC1jb2x1bW4KKy0tIGRldGVjdGlvbiBpcyBpbWFnZS1i YXNlZCkuICBBIGxhdGVyIElOU0VSVCBvZiBhIHZhbHVlIGVxdWFsIHVuZGVyIHRoZQorLS0g b3BjbGFzcyBtdXN0IHN0aWxsIGJlIGRldGVjdGVkIGFzIGEgZHVwbGljYXRlOiB0aGUgdW5p cXVlIGNoZWNrIHJlYWNoZXMKKy0tIHRoZSBsaXZlIHR1cGxlIHRocm91Z2ggdGhlIGZyZXNo IGxlYWYsIHdoaWNoIHBvaW50cyBkaXJlY3RseSBhdCBpdCAobm8gaG9wCistLSBhZnRlciBp dCwgc28gdGhlIG92ZXJsYXAgaXMgZW1wdHkgYW5kIHRoZSBsZWFmIGlzIGEgZ2VudWluZSBj b25mbGljdCk7IHRoZQorLS0gc3RhbGUgMS4wIGxlYWYgaXMgc2tpcHBlZCBiZWNhdXNlIHRo ZSBrLWNoYW5naW5nIGhvcCBvdmVybGFwcyB0aGUgdW5pcXVlCistLSBpbmRleCdzIGF0dHJp YnV0ZS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3VudW0g KGsgbnVtZXJpYyBVTklRVUUsIGogaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JF QVRFIElOREVYIGhpX3VudW1faiBPTiBoaV91bnVtKGopOyAgICAgICAgICAgICAtLSAybmQg aW5kZXhlZCBhdHRyLCBrZXB0IGZpeGVkCitJTlNFUlQgSU5UTyBoaV91bnVtIFZBTFVFUyAo MS4wLCAxMDApOworVVBEQVRFIGhpX3VudW0gU0VUIGsgPSAxLjAwIFdIRVJFIGogPSAxMDA7 ICAgICAgICAtLSBIT1QtaW5kZXhlZDogMS4wIC0+IDEuMDAKK1NFTEVDVCBuX2hvdF9pbmRl eGVkID4gMCBBUyBtYWRlX2hvdF9pbmRleGVkCisgIEZST00gcGdfcmVsYXRpb25faG90X2lu ZGV4ZWRfc3RhdHMoJ2hpX3VudW0nKTsKKy0tIEEgbnVtZXJpY2FsbHktZXF1YWwgaW5zZXJ0 IG11c3QgY29uZmxpY3QgKHRoZSBmcmVzaCBsZWFmIGNhdGNoZXMgaXQpOgorSU5TRVJUIElO VE8gaGlfdW51bSBWQUxVRVMgKDEuMCwgMSk7ICAgICAgICAgICAgICAtLSBleHBlY3QgZHVw bGljYXRlIGtleSBlcnJvcgorLS0gQSBnZW51aW5lbHkgZGlmZmVyZW50IHZhbHVlIGlzIGFj Y2VwdGVkOgorSU5TRVJUIElOVE8gaGlfdW51bSBWQUxVRVMgKDIuMCwgMik7CitTRUxFQ1Qg aywgaiBGUk9NIGhpX3VudW0gT1JERVIgQlkgajsKK0RST1AgVEFCTEUgaGlfdW51bTsKKwor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxNy4gQ1JFQVRFIElOREVYIGFuZCBSRUlO REVYIG92ZXIgbGl2ZSBIT1QtaW5kZXhlZCBjaGFpbnMKKy0tCistLSBBIGZyZXNobHkgYnVp bHQgb3IgcmVidWlsdCBpbmRleCBtdXN0IHJlZmxlY3QgY3VycmVudCB2YWx1ZXMsIG5ldmVy IGEKKy0tIHN0YWxlIGNoYWluIG1lbWJlcjogdGhlIGJ1aWxkIHNjYW5zIGxpdmUgdHVwbGVz IG9ubHkgYW5kIHBvaW50cyBlYWNoCistLSBIT1QtaW5kZXhlZCBsaXZlIHR1cGxlJ3MgZW50 cnkgYXQgaXRzIG93biBUSUQsIHNvIHRoZSBuZXcgZW50cmllcyBoYXZlIG5vCistLSBob3Ag YWZ0ZXIgdGhlbSBhbmQgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBrZWVwcyB0aGVt LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcmVpbmRleCAo aWQgaW50IFBSSU1BUlkgS0VZLCBhIGludCwgYiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CitDUkVBVEUgSU5ERVggaGlfcmVpbmRleF9hIE9OIGhpX3JlaW5kZXgoYSk7CitJTlNF UlQgSU5UTyBoaV9yZWluZGV4IFNFTEVDVCBnLCBnLCBnIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDYpIGc7CitVUERBVEUgaGlfcmVpbmRleCBTRVQgYSA9IGEgKyAxMDA7ICAgICAgICAg ICAgICAgIC0tIEhPVC1pbmRleGVkIG9uIGEKK1VQREFURSBoaV9yZWluZGV4IFNFVCBhID0g YSArIDEwMDsgICAgICAgICAgICAgICAgLS0gYWdhaW4gLT4gbG9uZ2VyIGNoYWlucworU0VM RUNUIG5faG90X2luZGV4ZWQgPiAwIEFTIG1hZGVfaG90X2luZGV4ZWQKKyAgRlJPTSBwZ19y ZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfcmVpbmRleCcpOworLS0gQnVpbGQgYSBO RVcgaW5kZXggYW5kIFJFSU5ERVggdGhlIGV4aXN0aW5nIG9uZSBvdmVyIHRoZSBsaXZlIGNo YWlucy4KK0NSRUFURSBJTkRFWCBoaV9yZWluZGV4X2IgT04gaGlfcmVpbmRleChiKTsKK1JF SU5ERVggSU5ERVggaGlfcmVpbmRleF9hOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOwor U0VMRUNUIGlkLCBhIEZST00gaGlfcmVpbmRleCBXSEVSRSBhID0gMjA0OyAgICAgICAtLSBj dXJyZW50IHZhbHVlIC0+IGlkIDQKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JlaW5kZXgg V0hFUkUgYSA9IDQ7ICAgICAgLS0gb2Jzb2xldGUgdmFsdWUgLT4gMAorU0VMRUNUIGlkIEZS T00gaGlfcmVpbmRleCBXSEVSRSBiID0gMjsgICAgICAgICAgICAtLSB2aWEgZnJlc2hseSBi dWlsdCBpbmRleCAtPiAyCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlf cmVpbmRleDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxOC4gRFJPUCBldmVy eSBpbmRleCBvdmVyIGxpdmUgSE9ULWluZGV4ZWQgY2hhaW5zLCB0aGVuIFZBQ1VVTQorLS0K Ky0tIEFmdGVyIGFsbCBpbmRleGVzIGFyZSBkcm9wcGVkLCBoZWFwIHBhZ2VzIG1heSBzdGls bCBjYXJyeSBwcmVzZXJ2ZWQKKy0tIEhPVC1pbmRleGVkIG1lbWJlcnMgbGVmdCBieSBlYXJs aWVyIHVwZGF0ZXMuICBWQUNVVU0gb2Ygc3VjaCBhIG5vLWluZGV4CistLSByZWxhdGlvbiBt dXN0IGNvbXBsZXRlIHdpdGhvdXQgZXJyb3IsIGFuZCByZWFkcyBtdXN0IHN0YXkgY29ycmVj dCB2aWEgdGhlCistLSByZWRpcmVjdCBmb3J3YXJkZXJzLgorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfZHJvcGlkeCAoaWQgaW50IFBSSU1BUlkgS0VZLCBh IGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9kcm9waWR4 X2EgT04gaGlfZHJvcGlkeChhKTsKK0lOU0VSVCBJTlRPIGhpX2Ryb3BpZHggU0VMRUNUIGcs IGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNikgZzsKK1VQREFURSBoaV9kcm9waWR4IFNF VCBhID0gYSArIDEwMDsgICAgICAgICAgICAgICAgLS0gSE9ULWluZGV4ZWQgb24gYQorVVBE QVRFIGhpX2Ryb3BpZHggU0VUIGEgPSBhICsgMTAwOyAgICAgICAgICAgICAgICAtLSBhZ2Fp biAtPiBsb25nZXIgY2hhaW5zCitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCA+IDAgQVMgbWFkZV9o b3RfaW5kZXhlZAorICBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9k cm9waWR4Jyk7CistLSBEcm9wIGV2ZXJ5IGluZGV4LCBsZWF2aW5nIHByZXNlcnZlZCBIT1Qt aW5kZXhlZCBtZW1iZXJzIHdpdGggbm8gaW5kZXggdG8gc3dlZXAuCitEUk9QIElOREVYIGhp X2Ryb3BpZHhfYTsKK0FMVEVSIFRBQkxFIGhpX2Ryb3BpZHggRFJPUCBDT05TVFJBSU5UIGhp X2Ryb3BpZHhfcGtleTsKKy0tIE11c3Qgbm90IGNyYXNoIG9uIHRoZSBuby1pbmRleCBwYXRo OyB0d28gcGFzc2VzIGV4ZXJjaXNlIHRoZSBzZWNvbmQtcGFzcworLS0gcmVjbGFpbSBndWFy ZCBhcyB3ZWxsLgorVkFDVVVNIGhpX2Ryb3BpZHg7CitWQUNVVU0gaGlfZHJvcGlkeDsKKy0t IFJlYWRzIHJlbWFpbiBjb3JyZWN0IGFmdGVyIHRoZSBpbmRleGVzIGFyZSBnb25lLgorU0VM RUNUIGlkLCBhIEZST00gaGlfZHJvcGlkeCBPUkRFUiBCWSBpZDsKK0RST1AgVEFCTEUgaGlf ZHJvcGlkeDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxOS4gUmUtY29sbGFw c2Ugb2YgYSBkYXRhLXJlZGlyZWN0IGNoYWluIGFjcm9zcyBwYXJ0aWFsIFZBQ1VVTXMKKy0t CistLSBBIGNoYWluIHRoYXQgY29sbGFwc2VzIHRvIGEgSE9ULWluZGV4ZWQgZGF0YSByZWRp cmVjdCwgaXMgdmFjdXVtZWQgd2l0aAorLS0gSU5ERVhfQ0xFQU5VUCBvZmYgKHNvIHRoZSBz dGFsZSBsZWF2ZXMgYW5kIHRoZSByZWRpcmVjdCBzdXJ2aXZlKSwgdGhlbgorLS0gcmVjZWl2 ZXMgZnVydGhlciBIT1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQgcmUtY29sbGFwc2UgdGhlIGNo YWluIGFuZAorLS0gcmUtcG9pbnQgdGhlIHJlZGlyZWN0IGF0IGEgbmV3IGxpdmUgdHVwbGUs IG11c3Qgbm90IGxlYXZlIHRoZSByZWRpcmVjdAorLS0gZGFuZ2xpbmcuICBBIHN1YnNlcXVl bnQgZnVsbCBWQUNVVU0gbXVzdCBjb21wbGV0ZSB3aXRob3V0IGVycm9yLCBsZWF2ZSB0aGUK Ky0tIGhlYXAgY29uc2lzdGVudCAodmVyaWZ5X2hlYXBhbSByZXBvcnRzIG5vdGhpbmcpLCBh bmQgcmVhZHMgbXVzdCBzdGF5CistLSBjb3JyZWN0LiAgKFJlZ3Jlc3Npb246IGFuIGVhcmxp ZXIgcmV2aXNpb24gY3Jhc2hlZCByZWNsYWltaW5nIGEgbWlkLWNoYWluCistLSBtZW1iZXIg d2hpbGUgYSBkYXRhIHJlZGlyZWN0IHN0aWxsIHBvaW50ZWQgcGFzdCBpdC4pCistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBhbWNo ZWNrOworQ1JFQVRFIFRBQkxFIGhpX3JlY29sbGFwc2UgKGlkIGludCBQUklNQVJZIEtFWSwg YSBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcmVjb2xs YXBzZV9hIE9OIGhpX3JlY29sbGFwc2UoYSk7CitJTlNFUlQgSU5UTyBoaV9yZWNvbGxhcHNl IFZBTFVFUyAoMSwgMSk7CistLSBGaXJzdCBjaGFpbjogdHdvIEhPVC1pbmRleGVkIHVwZGF0 ZXMsIHRoZW4gcHJ1bmUgdG8gYSBkYXRhIHJlZGlyZWN0IHdoaWxlCistLSBsZWF2aW5nIHRo ZSBzdGFsZSBidHJlZSBsZWF2ZXMgaW4gcGxhY2UgKElOREVYX0NMRUFOVVAgb2ZmKS4KK1VQ REFURSBoaV9yZWNvbGxhcHNlIFNFVCBhID0gMiBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlf cmVjb2xsYXBzZSBTRVQgYSA9IDMgV0hFUkUgaWQgPSAxOworVkFDVVVNIChJTkRFWF9DTEVB TlVQIG9mZikgaGlfcmVjb2xsYXBzZTsKKy0tIFJlLWNvbGxhcHNlOiBtb3JlIEhPVC1pbmRl eGVkIHVwZGF0ZXMgZXh0ZW5kIHRoZSBjaGFpbiBwYXN0IHRoZSByZWRpcmVjdAorLS0gdGFy Z2V0OyB0aGUgbmV4dCBwcnVuZSByZS1wb2ludHMgdGhlIGRhdGEgcmVkaXJlY3QgYXQgdGhl IG5ldyBmaXJzdCBsaXZlCistLSB0dXBsZSBhbmQgZXh0ZW5kcyBpdHMgdW5pb24uCitVUERB VEUgaGlfcmVjb2xsYXBzZSBTRVQgYSA9IDQgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX3Jl Y29sbGFwc2UgU0VUIGEgPSA1IFdIRVJFIGlkID0gMTsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5V UCBvZmYpIGhpX3JlY29sbGFwc2U7CistLSBGdWxsIHZhY3V1bSBub3cgcmVjbGFpbXMgdGhl IGRlYWQgY2hhaW47IHRoZSByZS1wb2ludGVkIHJlZGlyZWN0IG11c3Qgbm90CistLSBkYW5n bGUuICBUd28gcGFzc2VzIGFsc28gZXhlcmNpc2UgdGhlIHJlZGlyZWN0IHJlLXBvaW50IHNl Y29uZCBwYXNzLgorVkFDVVVNIGhpX3JlY29sbGFwc2U7CitWQUNVVU0gaGlfcmVjb2xsYXBz ZTsKKy0tIEhlYXAgbXVzdCBiZSBzdHJ1Y3R1cmFsbHkgY29uc2lzdGVudCAobm8gcm93cyA9 PSBubyBjb3JydXB0aW9uKS4KK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfcmVj b2xsYXBzZScpOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkLCBhIEZS T00gaGlfcmVjb2xsYXBzZSBXSEVSRSBhID0gNTsgICAgIC0tIGN1cnJlbnQgdmFsdWUgLT4g aWQgMQorU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmVjb2xsYXBzZSBXSEVSRSBhID0gMzsg IC0tIG9ic29sZXRlIHZhbHVlIC0+IDAKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNU IGlkLCBhIEZST00gaGlfcmVjb2xsYXBzZSBPUkRFUiBCWSBpZDsKK0RST1AgVEFCTEUgaGlf cmVjb2xsYXBzZTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyMC4gSW5kZXgg ZGVsZXRpb24gb3ZlciBhbiBlbnRyeSB0aGF0IHBvaW50cyBhdCBhIGRhdGEtcmVkaXJlY3Qg cm9vdAorLS0KKy0tIEEgZGF0YSByZWRpcmVjdCBpcyBhbiBMUF9SRURJUkVDVCB0aGF0IGNh cnJpZXMgYSBiaXRtYXAsIHNvIGl0IHJlcG9ydHMKKy0tIGxwX2xlbiA+IDAgKEl0ZW1JZEhh c1N0b3JhZ2UgdHJ1ZSkgZXZlbiB0aG91Z2ggaXQgaXMgbm90IGEgbm9ybWFsIHR1cGxlLgor LS0gaW5kZXhfZGVsZXRlX2NoZWNrX2h0aWQgbXVzdCB0cmVhdCBpdCBhcyBhIHJlZGlyZWN0 LCBub3QgcmVhZCBpdHMgYmxvYiBhcyBhCistLSBIZWFwVHVwbGVIZWFkZXIuICBSZXByb2R1 Y2U6IGNvbGxhcHNlIGEgY2hhaW4gcm9vdCB0byBhIGRhdGEgcmVkaXJlY3Qgd2hpbGUKKy0t IGtlZXBpbmcgdGhlIHN0YWxlIGxlYWYgdGhhdCBwb2ludHMgYXQgaXQgKElOREVYX0NMRUFO VVAgb2ZmKSwgdGhlbiBpbnNlcnQKKy0tIG1hbnkgZHVwbGljYXRlcyBvZiB0aGUgc3RhbGUg a2V5IHNvIGJ0cmVlIGJvdHRvbS11cCBkZWxldGlvbiBydW5zCistLSBoZWFwX2luZGV4X2Rl bGV0ZV90dXBsZXMgb3ZlciB0aGF0IHN0YWxlIGVudHJ5LgorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfaWRkZWwgKGlkIGludCwgYSBpbnQpIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfaWRkZWxfYSBPTiBoaV9pZGRlbChh KTsKK0lOU0VSVCBJTlRPIGhpX2lkZGVsIFZBTFVFUyAoMSwgMSk7CitVUERBVEUgaGlfaWRk ZWwgU0VUIGEgPSBhICsgMSBXSEVSRSBpZCA9IDE7ICAgICAgICAgIC0tIEhPVC1pbmRleGVk CitVUERBVEUgaGlfaWRkZWwgU0VUIGEgPSBhICsgMSBXSEVSRSBpZCA9IDE7ICAgICAgICAg IC0tIG11bHRpLWhvcCBjaGFpbgorVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGlfaWRk ZWw7ICAgICAgICAgICAgICAgICAtLSByb290IC0+IGRhdGEgcmVkaXJlY3QsIGtlZXAgc3Rh bGUgYT0xIGxlYWYKKy0tIE1hbnkgZHVwbGljYXRlcyBvZiB0aGUgc3RhbGUga2V5IGZpbGwg dGhlIGxlYWYgYW5kIHRyaWdnZXIgYm90dG9tLXVwCistLSBkZWxldGlvbiwgd2hpY2ggZmVl ZHMgdGhlIHN0YWxlIGE9MSBlbnRyeSAoaHRpZCAtPiB0aGUgZGF0YS1yZWRpcmVjdCByb290 KQorLS0gdG8gaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzLiAgTXVzdCBub3QgY3Jhc2ggb3Ig bWlzcmVhZCB0aGUgYmxvYi4KK0lOU0VSVCBJTlRPIGhpX2lkZGVsIFNFTEVDVCBnLCAxIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDIsIDMwMDApIGc7CitWQUNVVU0gaGlfaWRkZWw7CitTRUxF Q1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX2lkZGVsJyk7CitTRVQgZW5hYmxlX3NlcXNj YW4gPSBvZmY7CitTRUxFQ1QgaWQsIGEgRlJPTSBoaV9pZGRlbCBXSEVSRSBpZCA9IDE7ICAg ICAgICAgICAgIC0tIGN1cnJlbnQgdmFsdWUgLT4gYSA9IDMKK1JFU0VUIGVuYWJsZV9zZXFz Y2FuOworRFJPUCBUQUJMRSBoaV9pZGRlbDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistLSAyMS4gQSBjaGFuZ2UgdG8gYSBjb2x1bW4gY292ZXJlZCBieSBhIG5vbi1idHJlZSBp bmRleCBBTSBpcyBIT1QtaW5kZXhlZAorLS0KKy0tIEEgSE9ULWluZGV4ZWQgdXBkYXRlIGxl YXZlcyBhIHN0YWxlIHByZS11cGRhdGUgbGVhZiB0aGF0IHRoZSByZWFkIHNpZGUKKy0tIGZp bHRlcnMgdmlhIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAsIHdoaWNoIGlzIGFjY2Vz cy1tZXRob2QgYWdub3N0aWMuCistLSBBIGNvbHVtbiBjb3ZlcmVkIGJ5IGEgbm9uLWJ0cmVl IGluZGV4IChoZXJlIGEgR2lTVCBpbmRleCBvbiBhIHBvaW50IGNvbHVtbikKKy0tIGlzIHRo ZXJlZm9yZSBIT1QtaW5kZXhlZCBsaWtlIGFueSBvdGhlciwgYW5kIHRoZSBHaVNUIGluZGV4 IHN0aWxsIHJldHVybnMKKy0tIGNvcnJlY3QgcmVzdWx0cyBhY3Jvc3MgdGhlIGNoYWluLiAg QSBjaGFuZ2UgdG8gYSBidHJlZS1vbmx5IGNvbHVtbiBvbiB0aGUKKy0tIHNhbWUgdGFibGUg aXMgbGlrZXdpc2UgSE9ULWluZGV4ZWQuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NS RUFURSBUQUJMRSBoaV9ub25idHJlZSAoaWQgaW50IFBSSU1BUlkgS0VZLCB0YWcgaW50LCBw IHBvaW50KQorICAgIFdJVEggKGZpbGxmYWN0b3IgPSAxMCk7CitDUkVBVEUgSU5ERVggaGlf bm9uYnRyZWVfdGFnIE9OIGhpX25vbmJ0cmVlICh0YWcpOyAgICAgICAgICAtLSBidHJlZSBp bmRleAorQ1JFQVRFIElOREVYIGhpX25vbmJ0cmVlX3AgT04gaGlfbm9uYnRyZWUgVVNJTkcg Z2lzdCAocCk7ICAgLS0gR2lTVCwgbm9uLWJ0cmVlCitJTlNFUlQgSU5UTyBoaV9ub25idHJl ZSBTRUxFQ1QgZywgZywgcG9pbnQoZywgZykKKyAgICBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAyMDApIGc7CisKKy0tIENoYW5nZSB0aGUgR2lTVC1jb3ZlcmVkIGNvbHVtbiBmaXJzdDog SE9ULWluZGV4ZWQgKGhvdF9pZHggPSAyMDApLgorVVBEQVRFIGhpX25vbmJ0cmVlIFNFVCBw ID0gcG9pbnQocFswXSArIDEwMDAsIHBbMV0gKyAxMDAwKTsKK1NFTEVDVCBob3RfaWR4IEFT IGdpc3RfY29sX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9ub25idHJlZScp OworCistLSBUaGUgR2lTVCBpbmRleCBtdXN0IHJldHVybiBjb3JyZWN0IHJlc3VsdHM6IHRo ZSBvbGQgcG9zaXRpb25zIGFyZSBnb25lIGFuZAorLS0gZXZlcnkgcm93IGlzIGZvdW5kIGF0 IGl0cyBuZXcgcG9zaXRpb24gKG5vIHN0YWxlIGxlYWYgc3VyZmFjZXMgYW4gb2xkIGtleSku CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgY291bnQoKikgQVMgYXRfb2xk X3Bvc2l0aW9ucworICAgIEZST00gaGlfbm9uYnRyZWUgV0hFUkUgcCA8QCBib3gocG9pbnQo MCwgMCksIHBvaW50KDMwMCwgMzAwKSk7CitTRUxFQ1QgY291bnQoKikgQVMgYXRfbmV3X3Bv c2l0aW9ucworICAgIEZST00gaGlfbm9uYnRyZWUgV0hFUkUgcCA8QCBib3gocG9pbnQoMTAw MCwgMTAwMCksIHBvaW50KDEzMDAsIDEzMDApKTsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOwor CistLSBDaGFuZ2luZyB0aGUgYnRyZWUtb25seSBjb2x1bW4gKHAgdW5jaGFuZ2VkKSBzdGF5 cyBIT1QtaW5kZXhlZC4KK1VQREFURSBoaV9ub25idHJlZSBTRVQgdGFnID0gdGFnICsgMTAw MDsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBidHJlZV9jb2xfaXNfaG90X2luZGV4ZWQgRlJP TSBnZXRfaGlfY291bnQoJ2hpX25vbmJ0cmVlJyk7CitEUk9QIFRBQkxFIGhpX25vbmJ0cmVl OworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIyLiBBQkEgb24gYSB1bmlxdWUg a2V5IGFjcm9zcyB0d28gZGlzdGluY3QgbGl2ZSByb3dzOiBhIGtleSBjeWNsZWQgYXdheQor LS0gYW5kIGJhY2sgbXVzdCBzdGlsbCBjb2xsaWRlIHdpdGggYW5vdGhlciByb3cgdGhhdCBo b2xkcyBpdC4gIFRoZSBzdGFsZQorLS0gbGVhdmVzIGxlZnQgYnkgdGhlIGN5Y2xlIG11c3Qg bm90IGxldCBhIGdlbnVpbmUgZHVwbGljYXRlIHNsaXAgcGFzdCB0aGUKKy0tIHVuaXF1ZW5l c3MgY2hlY2sgLS0gdGhlIHJlYWQtc2lkZSByZWNoZWNrIGNvbXBhcmVzIHRoZSBsaXZlIGtl eSwgbm90IGp1c3QKKy0tIGEgY2hhbmdlZC1hdHRyaWJ1dGUgYml0bWFwLgorLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfYWJhIChrIGludCwgdiBpbnQpIFdJ VEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgVU5JUVVFIElOREVYIGhpX2FiYV9rIE9O IGhpX2FiYSAoayk7CitDUkVBVEUgSU5ERVggaGlfYWJhX3YgT04gaGlfYWJhICh2KTsKK0lO U0VSVCBJTlRPIGhpX2FiYSBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKKworLS0gQ3ljbGUg cm93MSdzIHVuaXF1ZSBrZXkgMSAtPiAzIC0+IDEgKHYgdW5jaGFuZ2VkLCBzbyBlYWNoIHN0 ZXAgaXMKKy0tIEhPVC1pbmRleGVkIGFuZCBsZWF2ZXMgc3RhbGUgZW50cmllcyBpbiBoaV9h YmFfaykuCitVUERBVEUgaGlfYWJhIFNFVCBrID0gMyBXSEVSRSB2ID0gMTA7CitVUERBVEUg aGlfYWJhIFNFVCBrID0gMSBXSEVSRSB2ID0gMTA7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMg Y3ljbGVkX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9hYmEnKTsKKworLS0g cm93MSBpcyBsaXZlIGF0IGsgPSAxIGFnYWluLiAgTW92aW5nIHJvdzIgb250byBrID0gMSBt dXN0IHJhaXNlIGEgdW5pcXVlCistLSB2aW9sYXRpb24gZGVzcGl0ZSB0aGUgc3RhbGUgJzEn IGxlYXZlcyBmcm9tIHRoZSBjeWNsZS4KK1VQREFURSBoaV9hYmEgU0VUIGsgPSAxIFdIRVJF IHYgPSAyMDsKK0RST1AgVEFCTEUgaGlfYWJhOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIDIzLiBQYXJ0aWFsIGluZGV4IHdob3NlIHByZWRpY2F0ZSByZWZlcmVuY2VzIGEg bm9uLWtleSBjb2x1bW4uICBGbGlwcGluZyB0aGUKKy0tIHJvdyBvdXQgb2YgdGhlIHByZWRp Y2F0ZSB3aGlsZSBsZWF2aW5nIHRoZSBpbmRleGVkIGtleSB1bmNoYW5nZWQgaXMKKy0tIEhP VC1pbmRleGVkOiB0aGUgcHJlZGljYXRlIGNvbHVtbiBpcyBwYXJ0IG9mIHRoZSBpbmRleCdz IGF0dHJpYnV0ZSBzZXQsIHNvCistLSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRy b3BzIHRoZSBub3ctc3RhbGUgcGFydGlhbC1pbmRleCBlbnRyeSBvbiByZWFkCistLSAobm8g dmFsdWUgcmVjaGVjayBpcyBpbnZvbHZlZCkuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K0NSRUFURSBUQUJMRSBoaV9wYXJ0cHJlZCAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwg YWN0aXZlIGJvb2xlYW4pCisgICAgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJ TkRFWCBoaV9wYXJ0cHJlZF9rIE9OIGhpX3BhcnRwcmVkIChrKSBXSEVSRSBhY3RpdmU7CitJ TlNFUlQgSU5UTyBoaV9wYXJ0cHJlZCBWQUxVRVMgKDEsIDEwMCwgdHJ1ZSk7CisKKy0tIEZs aXAgdGhlIHByZWRpY2F0ZSBjb2x1bW4gJ2FjdGl2ZScgdHJ1ZSAtPiBmYWxzZTsgdGhlIGlu ZGV4IGtleSBrIGlzCistLSB1bmNoYW5nZWQuICBUaGUgcm93IG5vIGxvbmdlciBzYXRpc2Zp ZXMgdGhlIHByZWRpY2F0ZSwgc28gaXRzIHBhcnRpYWwtaW5kZXgKKy0tIGVudHJ5IG11c3Qg YmUgcmVtb3ZlZCwgbm90IGxlZnQgcG9pbnRpbmcgaW50byB0aGUgY2hhaW4uCitVUERBVEUg aGlfcGFydHByZWQgU0VUIGFjdGl2ZSA9IGZhbHNlIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBw Z19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCBob3QsIGhvdF9pZHggRlJPTSBn ZXRfaGlfY291bnQoJ2hpX3BhcnRwcmVkJyk7CisKKy0tIFRoZSBwYXJ0aWFsIGluZGV4IG11 c3Qgbm90IHN1cmZhY2UgdGhlIHJvdyBub3cgdGhhdCBhY3RpdmUgPSBmYWxzZS4KKy0tIEEg cXVlcnkgd2hvc2UgcXVhbCBleGFjdGx5IG1hdGNoZXMgdGhlIHBhcnRpYWwgcHJlZGljYXRl IHVzZXMgdGhlIGluZGV4CistLSB3aXRob3V0IHJlLWZpbHRlcmluZyAnYWN0aXZlJyBvbiB0 aGUgaGVhcCwgc28gYSBzdGFsZSBlbnRyeSB3b3VsZCBzdXJmYWNlLgorU0VUIGVuYWJsZV9z ZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworRVhQTEFJTiAo Q09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJPTSBoaV9wYXJ0cHJlZCBXSEVSRSBhY3RpdmU7CitT RUxFQ1QgaWQgRlJPTSBoaV9wYXJ0cHJlZCBXSEVSRSBrID0gMTAwIEFORCBhY3RpdmU7CitT RUxFQ1QgaWQgRlJPTSBoaV9wYXJ0cHJlZCBXSEVSRSBhY3RpdmU7CitSRVNFVCBlbmFibGVf Yml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9wYXJ0 cHJlZDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyNC4gUmVjbGFpbSArIHN0 dWIgbWl4LiAgUmVwZWF0ZWQgdXBkYXRlcyBvZiBjb2x1bW4gYSBmb2xsb3dlZCBieSBhbiB1 cGRhdGUKKy0tIG9mIGNvbHVtbiBiIGJ1aWxkIGEgY2hhaW4gd2hvc2UgcHJ1bmUgcmVjbGFp bXMgdGhlIG1lbWJlcnMgd2hvc2UgY2hhbmdlIHdhcworLS0gc3VwZXJzZWRlZCAoYSBjaGFu Z2VkIGFnYWluKSBhbmQga2VlcHMgc3R1YnMgZm9yIHRob3NlIHRoYXQgd2VyZSBub3QsIHNv IGEKKy0tIHJvb3QgcmVkaXJlY3QgZW5kcyB1cCBwb2ludGluZyBhdCBhIHN0dWIgYW5kIGEg bGF0ZXIgd2FsayBjcm9zc2VzIG1pZC1jaGFpbgorLS0gc3R1YnMuICBSZWFkcyB0aHJvdWdo IGVhY2ggaW5kZXggYW5kIGFtY2hlY2sgbXVzdCBzdGF5IGNvcnJlY3QgYWNyb3NzIHRoZQor LS0gY29sbGFwc2UsIGFuZCBhIHNlY29uZCByb3VuZCBtdXN0IHdhbGsgdGhlIGV4aXN0aW5n IHN0dWJzIHdpdGhvdXQgc2V2ZXJpbmcKKy0tIHRoZSBjaGFpbi4KKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3N0dWJtaXggKGlkIGludCBQUklNQVJZIEtF WSwgYSBpbnQsIGIgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVY IGhpX3N0dWJtaXhfYSBPTiBoaV9zdHVibWl4IChhKTsKK0NSRUFURSBJTkRFWCBoaV9zdHVi bWl4X2IgT04gaGlfc3R1Ym1peCAoYik7CitJTlNFUlQgSU5UTyBoaV9zdHVibWl4IFZBTFVF UyAoMSwgMTAsIDEwMCk7CitVUERBVEUgaGlfc3R1Ym1peCBTRVQgYSA9IDExIFdIRVJFIGlk ID0gMTsgICAtLSBjaGFuZ2VzIGEKK1VQREFURSBoaV9zdHVibWl4IFNFVCBhID0gMTIgV0hF UkUgaWQgPSAxOyAgIC0tIGNoYW5nZXMgYSBhZ2FpbiAoc3VwZXJzZWRlcykKK1VQREFURSBo aV9zdHVibWl4IFNFVCBiID0gMTAxIFdIRVJFIGlkID0gMTsgIC0tIGNoYW5nZXMgYgorVkFD VVVNIGhpX3N0dWJtaXg7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxl X2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1QgaWQsIGEsIGIgRlJPTSBoaV9zdHVibWl4IFdI RVJFIGEgPSAxMjsgICAtLSBjdXJyZW50IGEKK1NFTEVDVCBpZCwgYSwgYiBGUk9NIGhpX3N0 dWJtaXggV0hFUkUgYiA9IDEwMTsgIC0tIGN1cnJlbnQgYgorU0VMRUNUIGlkIEZST00gaGlf c3R1Ym1peCBXSEVSRSBhID0gMTA7ICAgICAgICAgLS0gc3RhbGUgYTogMCByb3dzCitSRVNF VCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICog RlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV9zdHVibWl4Jyk7ICAgICAgLS0gbm8gY29ycnVwdGlv biBhY3Jvc3Mgc3R1YnMKKy0tIEEgc2Vjb25kIHJvdW5kIG11c3Qgd2FsayB0aGUgZXhpc3Rp bmcgc3R1YnMgKG5vIHByaW9yWG1heCBzZXZlcikuCitVUERBVEUgaGlfc3R1Ym1peCBTRVQg YSA9IDEzIFdIRVJFIGlkID0gMTsKK1ZBQ1VVTSBoaV9zdHVibWl4OworU0VMRUNUIGlkLCBh LCBiIEZST00gaGlfc3R1Ym1peCBXSEVSRSBhID0gMTM7CitTRUxFQ1QgKiBGUk9NIHZlcmlm eV9oZWFwYW0oJ2hpX3N0dWJtaXgnKTsKK0RST1AgVEFCTEUgaGlfc3R1Ym1peDsKKworLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyMy4gRXhjbHVzaW9uLWNvbnN0cmFpbnQgdGFi bGVzIGFyZSBIT1QtaW5kZXhlZC1lbGlnaWJsZS4KKy0tCistLSBBbiBleGNsdXNpb24gY29u c3RyYWludCBpcyBlbmZvcmNlZCBieSBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0 cmFpbnQsCistLSB3aGljaCByZWNoZWNrcyBlYWNoIGNhbmRpZGF0ZSBhZ2FpbnN0IHRoZSBs aXZlIHR1cGxlJ3MgY3VycmVudCBpbmRleC1mb3JtCistLSB3aXRoIHRoZSBjb25zdHJhaW50 J3Mgb3duIG9wZXJhdG9ycywgc28gYSBzdGFsZSBlbnRyeSBsZWZ0IGJ5IGEgSE9ULWluZGV4 ZWQKKy0tIHVwZGF0ZSBpcyBza2lwcGVkIHdoaWxlIHRoZSBsaXZlIGtleSBhbHdheXMgaGFz IGl0cyBvd24gZW50cnkuICBVcGRhdGluZyBhCistLSBub24tY29uc3RyYWluZWQgaW5kZXhl ZCBjb2x1bW4gaXMgSE9ULWluZGV4ZWQgKHRoZSBHaVNUIGV4Y2x1c2lvbiBpbmRleCBpcwor LS0gc2tpcHBlZCksIGFuZCB0aGUgY29uc3RyYWludCBzdGF5cyBjb3JyZWN0LgorLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfZXhjbCAoCisgICAgaWQgaW50 IFBSSU1BUlkgS0VZLAorICAgIHRhZyBpbnQsCisgICAgZHVyaW5nIGludDRyYW5nZSwKKyAg ICBFWENMVURFIFVTSU5HIGdpc3QgKGR1cmluZyBXSVRIICYmKQorKSBXSVRIIChmaWxsZmFj dG9yID0gMTApOworQ1JFQVRFIElOREVYIGhpX2V4Y2xfdGFnIE9OIGhpX2V4Y2wodGFnKTsK K0lOU0VSVCBJTlRPIGhpX2V4Y2wgVkFMVUVTICgxLCAxMDAsIGludDRyYW5nZSgxLCAxMCkp LCAoMiwgMjAwLCBpbnQ0cmFuZ2UoMjAsIDMwKSk7CisKKy0tIFVwZGF0ZSBhIG5vbi1jb25z dHJhaW5lZCBpbmRleGVkIGNvbHVtbjogSE9ULWluZGV4ZWQgKEdpU1QgZXhjbHVzaW9uIGlu ZGV4CistLSBhbmQgUEsgc2tpcHBlZCksIGFuZCB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQg aXMgc3RpbGwgZW5mb3JjZWQuCitVUERBVEUgaGlfZXhjbCBTRVQgdGFnID0gdGFnICsgMSBX SEVSRSBpZCA9IDE7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgdGFnX3VwZGF0ZV9ob3RfaW5k ZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfZXhjbCcpOworSU5TRVJUIElOVE8gaGlfZXhj bCBWQUxVRVMgKDMsIDMwMCwgaW50NHJhbmdlKDUsIDE1KSk7ICAtLSBvdmVybGFwcyBpZD0x J3MgKDEsMTApCisKKy0tIE1vdmUgaWQ9MSdzIHJhbmdlIGF3YXkgKHRoaXMgdXBkYXRlcyB0 aGUgR2lTVCBpbmRleCwgbGVhdmluZyBhIHN0YWxlIGVudHJ5CistLSBmb3IgdGhlIG9sZCAo MSwxMCkgcmFuZ2UpLiAgQSByYW5nZSBvdmVybGFwcGluZyBvbmx5IHRoZSBPTEQgcmFuZ2Ug bm93CistLSBpbnNlcnRzIGNsZWFubHkgKHRoZSBzdGFsZSBlbnRyeSBpcyBza2lwcGVkKTsg b25lIG92ZXJsYXBwaW5nIHRoZSBORVcgcmFuZ2UKKy0tIHN0aWxsIGNvbmZsaWN0cy4KK1VQ REFURSBoaV9leGNsIFNFVCBkdXJpbmcgPSBpbnQ0cmFuZ2UoMTAwLCAxMTApIFdIRVJFIGlk ID0gMTsKK0lOU0VSVCBJTlRPIGhpX2V4Y2wgVkFMVUVTICg0LCA0MDAsIGludDRyYW5nZSg1 LCAxNSkpOyAgIC0tIG9ubHkgb3ZlcmxhcHBlZCBvbGQgcmFuZ2U6IE9LCitJTlNFUlQgSU5U TyBoaV9leGNsIFZBTFVFUyAoNSwgNTAwLCBpbnQ0cmFuZ2UoMTA1LCAxMTUpKTstLSBvdmVy bGFwcyBuZXcgKDEwMCwxMTApOiBjb25mbGljdAorRFJPUCBUQUJMRSBoaV9leGNsOworCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI1LiBUT0FTVCBpbnRlcmFjdGlvbi4gIEFu IGluZGV4ZWQgY29sdW1uIHN0b3JlZCBvdXQtb2YtbGluZSBtdXN0IGJlaGF2ZQorLS0gY29y cmVjdGx5IGFjcm9zcyBIT1QtaW5kZXhlZCB1cGRhdGVzOiBhbiBlbnRyeSBrZXB0IGFjcm9z cyBhbiB1cGRhdGUgb2YgYQorLS0gZGlmZmVyZW50IGNvbHVtbiBzdGlsbCByZXNvbHZlcyB0 byB0aGUgKHVuY2hhbmdlZCkgdG9hc3RlZCB2YWx1ZSwgYW5kIGFmdGVyCistLSB0aGUgdG9h c3RlZCBjb2x1bW4gaXRzZWxmIGlzIGNoYW5nZWQgdGhlIHN0YWxlIGVudHJ5IGlzIGRyb3Bw ZWQgYnkgdGhlCistLSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgKG5vIHZhbHVlIGNvbXBh cmlzb24gb3IgZGV0b2FzdGluZyBpcyBuZWVkZWQpLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitDUkVBVEUgVEFCTEUgaGlfdG9hc3QgKGlkIGludCBQUklNQVJZIEtFWSwgYmlnIHRl eHQsIHRhZyBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitBTFRFUiBUQUJMRSBoaV90 b2FzdCBBTFRFUiBDT0xVTU4gYmlnIFNFVCBTVE9SQUdFIEVYVEVSTkFMOyAgLS0gbm8gY29t cHJlc3Npb24KK0NSRUFURSBJTkRFWCBoaV90b2FzdF9iaWcgT04gaGlfdG9hc3QgKGJpZyk7 CitDUkVBVEUgSU5ERVggaGlfdG9hc3RfdGFnIE9OIGhpX3RvYXN0ICh0YWcpOworSU5TRVJU IElOVE8gaGlfdG9hc3QgVkFMVUVTICgxLCByZXBlYXQoJ0EnLCAyMDAwKSwgMTApOworLS0g VGhlIGJpZyB2YWx1ZSBpcyBzdG9yZWQgb3V0LW9mLWxpbmUuCitTRUxFQ1QgcGdfY29sdW1u X3NpemUoYmlnKSA+IDE1MDAgQVMgYmlnX2lzX2V4dGVybmFsIEZST00gaGlfdG9hc3QgV0hF UkUgaWQgPSAxOworLS0gSE9ULWluZGV4ZWQgdXBkYXRlIG9mIHRhZyBsZWF2ZXMgYmlnIChh bmQgaXRzIGluZGV4IGVudHJ5KSB1bmNoYW5nZWQuCitVUERBVEUgaGlfdG9hc3QgU0VUIHRh ZyA9IDExIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyB0YWdfdXBkYXRl X2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV90b2FzdCcpOworU0VUIGVuYWJs ZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNU IGlkLCB0YWcsIGxlbmd0aChiaWcpIEZST00gaGlfdG9hc3QgV0hFUkUgYmlnID0gcmVwZWF0 KCdBJywgMjAwMCk7CistLSBIT1QtaW5kZXhlZCB1cGRhdGUgb2YgdGhlIHRvYXN0ZWQgaW5k ZXhlZCBjb2x1bW4gaXRzZWxmOiB0aGUgb2xkIGVudHJ5IGlzCistLSBub3cgc3RhbGUgYmVj YXVzZSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIHNob3dzIGJpZyBjaGFuZ2VkLgor VVBEQVRFIGhpX3RvYXN0IFNFVCBiaWcgPSByZXBlYXQoJ0InLCAyMDAwKSBXSEVSRSBpZCA9 IDE7CitTRUxFQ1QgaWQgRlJPTSBoaV90b2FzdCBXSEVSRSBiaWcgPSByZXBlYXQoJ0EnLCAy MDAwKTsgICAtLSBzdGFsZTogMCByb3dzCitTRUxFQ1QgaWQsIGxlbmd0aChiaWcpIEZST00g aGlfdG9hc3QgV0hFUkUgYmlnID0gcmVwZWF0KCdCJywgMjAwMCk7ICAtLSBjdXJyZW50CitS RVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNU ICogRlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV90b2FzdCcpOworRFJPUCBUQUJMRSBoaV90b2Fz dDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyNi4gQUJBIG9uIGFuIGluZGV4 ZWQgY29sdW1uLiAgQSBIT1QtaW5kZXhlZCB1cGRhdGUgdGhhdCBzZXRzIGFuIGluZGV4ZWQK Ky0tIGNvbHVtbiB0byBhIHZhbHVlIGFuIGVhcmxpZXIgY2hhaW4gbWVtYmVyIGFscmVhZHkg aGVsZCBsZWF2ZXMgdHdvIGxlYXZlcworLS0gd2l0aCB0aGF0IHNhbWUga2V5LCBib3RoIGNo YWluLXJlc29sdmluZyB0byB0aGUgbGl2ZSB0dXBsZS4gIEEgdmFsdWUtYmFzZWQKKy0tIHJl Y2hlY2sgY2Fubm90IHRlbGwgdGhlbSBhcGFydCBhbmQgd291bGQgcmV0dXJuIHRoZSByb3cg dHdpY2U7IHRoZQorLS0gY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBzdGFs ZSBhbmNlc3RvciBsZWFmIChpdHMgd2FsayBjcm9zc2VzIHRoZQorLS0ga2V5LWNoYW5naW5n IGhvcHMpIGFuZCBrZWVwcyBvbmx5IHRoZSBmcmVzaCBlbnRyeSwgc28gYSBmb3JjZWQgaW5k ZXggc2NhbgorLS0gcmV0dXJucyB0aGUgcm93IGV4YWN0bHkgb25jZS4gIFJFSU5ERVggbXVz dCBub3QgY2hhbmdlIHRoYXQuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBU QUJMRSBoaV9hYmEgKGlkIGludCBQUklNQVJZIEtFWSwgayBpbnQsIHYgaW50KSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2FiYV9rIE9OIGhpX2FiYSAoayk7 CitDUkVBVEUgSU5ERVggaGlfYWJhX3YgT04gaGlfYWJhICh2KTsKK0lOU0VSVCBJTlRPIGhp X2FiYSBWQUxVRVMgKDEsIDEsIDEwMCk7CitVUERBVEUgaGlfYWJhIFNFVCBrID0gMyBXSEVS RSBpZCA9IDE7ICAgLS0gSE9ULWluZGV4ZWQ6IGsgY2hhbmdlZCwgdiBrZXB0CitVUERBVEUg aGlfYWJhIFNFVCBrID0gMSBXSEVSRSBpZCA9IDE7ICAgLS0gSE9ULWluZGV4ZWQ6IGsgY3lj bGVkIGJhY2sgKEFCQSkKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVf Yml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBrMV9vbmNlIEZST00gaGlf YWJhIFdIRVJFIGsgPSAxOyAgICAgLS0gZXhhY3RseSAxCitTRUxFQ1QgY291bnQoKikgQVMg azNfZ29uZSBGUk9NIGhpX2FiYSBXSEVSRSBrID0gMzsgICAgIC0tIDAgKHN0YWxlIGRyb3Bw ZWQpCitSRUlOREVYIElOREVYIGhpX2FiYV9rOworU0VMRUNUIGNvdW50KCopIEFTIGsxX2Fm dGVyX3JlaW5kZXggRlJPTSBoaV9hYmEgV0hFUkUgayA9IDE7ICAtLSBzdGlsbCAxCitSRVNF VCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICog RlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV9hYmEnKTsKK0RST1AgVEFCTEUgaGlfYWJhOworCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI3LiBQYXJ0aWFsIGluZGV4LCBwcmVkaWNh dGUgY29sdW1uIGNoYW5nZWQgYnV0IHRoZSByb3cgU1RBWVMgaW4gdGhlIGluZGV4CistLSAo cHJlZGljYXRlIHN0aWxsIHRydWUsIGtleSB1bmNoYW5nZWQpLiAgVGhlIHVwZGF0ZSBpcyBI T1QtaW5kZXhlZDsgc2VsZWN0aXZlCistLSBtYWludGVuYW5jZSByZS1pbnNlcnRzIGEgZnJl c2ggZW50cnkgKHRoZSBwcmVkaWNhdGUgY29sdW1uIGNoYW5nZWQgYW5kIHN0aWxsCistLSBo b2xkcyksIHNvIHRoZSByb3cgaXMgc3RpbGwgcmV0dXJuZWQgLS0gdGhlIGJpdG1hcCBkcm9w cyB0aGUgb2xkZXIgZW50cnkgYW5kCistLSB0aGUgZnJlc2ggb25lIHJlLXN1cHBsaWVzIGl0 LiAgR3VhcmRzIGFnYWluc3QgYSAibG9zdCByb3ciIGZyb20gb3Zlci1lYWdlcgorLS0gZHJv cHBpbmcuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0 c3RheSAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgbiBpbnQpIFdJVEggKGZpbGxmYWN0 b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcGFydHN0YXlfayBPTiBoaV9wYXJ0c3RheSAo aykgV0hFUkUgbiA+IDA7CitDUkVBVEUgSU5ERVggaGlfcGFydHN0YXlfaWQyIE9OIGhpX3Bh cnRzdGF5IChpZCk7CitJTlNFUlQgSU5UTyBoaV9wYXJ0c3RheSBWQUxVRVMgKDEsIDUsIDMp OworVVBEQVRFIGhpX3BhcnRzdGF5IFNFVCBuID0gNyBXSEVSRSBpZCA9IDE7ICAgLS0gbiAz LT43LCBzdGlsbCA+IDAsIGsgdW5jaGFuZ2VkCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoKCk7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgc3RheV9pc19ob3RfaW5kZXhlZCBG Uk9NIGdldF9oaV9jb3VudCgnaGlfcGFydHN0YXknKTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9 IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBB UyBzdGF5X3Jvd3MgRlJPTSBoaV9wYXJ0c3RheSBXSEVSRSBrID0gNSBBTkQgbiA+IDA7ICAg LS0gd2FudCAxCitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFz Y2FuOworRFJPUCBUQUJMRSBoaV9wYXJ0c3RheTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCistLSAyOC4gUGFydGl0aW9uZWQgdGFibGUuICBBIHdpdGhpbi1wYXJ0aXRpb24gVVBE QVRFIG9mIG9uZSBpbmRleGVkIGNvbHVtbiBpcworLS0gSE9ULWluZGV4ZWQgb24gdGhlIGxl YWYgcGFydGl0aW9uJ3MgaGVhcCBleGFjdGx5IGFzIGZvciBhIG5vbi1wYXJ0aXRpb25lZAor LS0gdGFibGU7IGEgY3Jvc3MtcGFydGl0aW9uIHVwZGF0ZSBpcyBhIGRlbGV0ZStpbnNlcnQg YW5kIG5ldmVyIEhPVC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxF IGhpX3BhcnQgKGlkIGludCwgYSBpbnQsIGIgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGlk KTsKK0NSRUFURSBUQUJMRSBoaV9wYXJ0MSBQQVJUSVRJT04gT0YgaGlfcGFydCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxMDApCisgICAgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NS RUFURSBJTkRFWCBoaV9wYXJ0X2EgT04gaGlfcGFydCAoYSk7CitDUkVBVEUgSU5ERVggaGlf cGFydF9iIE9OIGhpX3BhcnQgKGIpOworSU5TRVJUIElOVE8gaGlfcGFydCBWQUxVRVMgKDEs IDEwLCAyMCk7CitVUERBVEUgaGlfcGFydCBTRVQgYSA9IDExIFdIRVJFIGlkID0gMTsgICAt LSBvbmUgaW5kZXhlZCBjb2wsIHdpdGhpbiBwYXJ0aXRpb24KK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBwYXJ0X2lzX2hvdF9p bmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9wYXJ0MScpOworU0VUIGVuYWJsZV9zZXFz Y2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50 KCopIEFTIGExMSBGUk9NIGhpX3BhcnQgV0hFUkUgYSA9IDExOyAgIC0tIHdhbnQgMQorU0VM RUNUIGNvdW50KCopIEFTIGExMCBGUk9NIGhpX3BhcnQgV0hFUkUgYSA9IDEwOyAgIC0tIHdh bnQgMCAoc3RhbGUgZHJvcHBlZCkKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQg ZW5hYmxlX3NlcXNjYW47CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3BhcnQx Jyk7CitEUk9QIFRBQkxFIGhpX3BhcnQ7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor LS0gMjkuIE5vbi1idHJlZSBhY2Nlc3MgbWV0aG9kIChoYXNoKS4gIFJlYWQtc2lkZSBzdGFs ZW5lc3MgaXMgYWNjZXNzLW1ldGhvZAorLS0gYWdub3N0aWMgKHRoZSBjcm9zc2VkLWF0dHJp YnV0ZSBiaXRtYXApLCBzbyBhbnkgaW5kZXggQU0ncyBjb2x1bW4gaXMKKy0tIEhPVC1pbmRl eGVkLiAgSGFzaCBpcyB0aGUgc2hhcnBlc3QgY2FzZTogaXRzIHNjYW5zIHJlY2hlY2sgdGhl IGhlYXAgdmFsdWUsCistLSB3aGljaCBhbG9uZSBjYW5ub3QgZGlzYW1iaWd1YXRlIGEgdmFs dWUgY3ljbGVkIGF3YXkgYW5kIGJhY2sgKEFCQSkgLS0gdGhlCistLSBiaXRtYXAgZHJvcHMg dGhlIHN0YWxlIGFuY2VzdG9yIHNvIHRoZSByb3cgaXMgcmV0dXJuZWQgZXhhY3RseSBvbmNl LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfaGFzaCAoaWQg aW50IFBSSU1BUlkgS0VZLCB2IGludCwgdyBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaGlfaGFzaF92IE9OIGhpX2hhc2ggVVNJTkcgaGFzaCAodik7CitD UkVBVEUgSU5ERVggaGlfaGFzaF93IE9OIGhpX2hhc2ggKHcpOworSU5TRVJUIElOVE8gaGlf aGFzaCBWQUxVRVMgKDEsIDEwLCAxMDApOworVVBEQVRFIGhpX2hhc2ggU0VUIHYgPSA5OSBX SEVSRSBpZCA9IDE7CitVUERBVEUgaGlfaGFzaCBTRVQgdiA9IDEwIFdIRVJFIGlkID0gMTsg ICAtLSBBQkE6IDEwIC0+IDk5IC0+IDEwLCB3IHVuY2hhbmdlZAorU0VMRUNUIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGhhc2hfaXNfaG90 X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX2hhc2gnKTsKK1NFVCBlbmFibGVfc2Vx c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3Vu dCgqKSBBUyBoYXNoX3YxMCBGUk9NIGhpX2hhc2ggV0hFUkUgdiA9IDEwOyAgIC0tIHdhbnQg MSAobm8gZHVwbGljYXRlKQorU0VMRUNUIGNvdW50KCopIEFTIGhhc2hfdjk5IEZST00gaGlf aGFzaCBXSEVSRSB2ID0gOTk7ICAgLS0gd2FudCAwIChzdGFsZSBkcm9wcGVkKQorUkVTRVQg ZW5hYmxlX2JpdG1hcHNjYW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUg aGlfaGFzaDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAzMC4gRERMIGFmdGVy IGEgSE9ULWluZGV4ZWQgY2hhaW4gZXhpc3RzLiAgVGhlIHBlci1ob3AgbW9kaWZpZWQtYXR0 cnMKKy0tIGJpdG1hcCBvbiB0aGUgcGFnZSBpcyBrZXllZCBieSBwaHlzaWNhbCBhdHRyaWJ1 dGUgbnVtYmVyIGFuZCBzaXplZCBieSB0aGUKKy0tIHJlbGF0aW9uJ3MgbmF0dHMgQVQgV1JJ VEUgVElNRS4gIEluZGV4ZXMgYWRkZWQvZHJvcHBlZCBhZnRlciB0aGUgY2hhaW4KKy0tIGZv cm1zLCBhbmQgQUREL0RST1AgQ09MVU1OLCBtdXN0IG5vdCBjb3JydXB0IHRoZSByZWFkLXNp ZGUgc3RhbGVuZXNzIHRlc3QuCistLSBUaGUgc2hhcnAgY2FzZSBpcyBBREQgQ09MVU1OIGNy b3NzaW5nIGFuIDgtYXR0cmlidXRlIGJvdW5kYXJ5LCB3aGljaCBncm93cworLS0gY2VpbChu YXR0cy84KTogcmVhZGVycyBtdXN0IGxvY2F0ZSBlYWNoIGhvcCdzIGJpdG1hcCBmcm9tIHRo YXQgaG9wJ3Mgb3duCistLSB3cml0ZS10aW1lIG5hdHRzIChIZWFwVHVwbGVIZWFkZXJHZXRO YXR0cyAvIHRoZSBzdHViJ3Mgc3Rhc2hlZCBuYXR0cyksIG5vdAorLS0gdGhlIHJlbGF0aW9u J3MgY3VycmVudCBuYXR0cy4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gRXhhY3Rs eSA4IGF0dHJpYnV0ZXMgKGMxLi5jNyArIHBheWxvYWQpIHNvIGFkZGluZyB0aGUgOXRoIGZs aXBzIHRoZSBiaXRtYXAKKy0tIGZyb20gMSBieXRlIHRvIDIuICBjNyBpcyB0aGUgY29sdW1u IHdlIGNodXJuOyBjMiBpcyBhbiB1bmNoYW5nZWQgaW5kZXhlZAorLS0gY29sdW1uIHdob3Nl IGxlYWYgbXVzdCBzdGF5IGN1cnJlbnQuCitDUkVBVEUgVEFCTEUgaGlfZGRsICgKKyAgICBj MSBpbnQgUFJJTUFSWSBLRVksIGMyIGludCwgYzMgaW50LCBjNCBpbnQsCisgICAgYzUgaW50 LCBjNiBpbnQsIGM3IGludCwgcGF5bG9hZCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CitDUkVBVEUgSU5ERVggaGlfZGRsX2MyIE9OIGhpX2RkbChjMik7CitDUkVBVEUgSU5E RVggaGlfZGRsX2M3IE9OIGhpX2RkbChjNyk7CitJTlNFUlQgSU5UTyBoaV9kZGwgVkFMVUVT ICgxLCAxMCwgMjAsIDMwLCA0MCwgNTAsIDcwLCAncCcpOworCistLSBGb3JtIGEgSE9ULWlu ZGV4ZWQgY2hhaW4gb24gYzcgQkVGT1JFIGFueSBmdXJ0aGVyIERETC4KK1VQREFURSBoaV9k ZGwgU0VUIGM3ID0gNzEgV0hFUkUgYzEgPSAxOworVVBEQVRFIGhpX2RkbCBTRVQgYzcgPSA3 MiBXSEVSRSBjMSA9IDE7CisKKy0tIChhKSBDUkVBVEUgSU5ERVggYWZ0ZXIgdGhlIGNoYWlu IGV4aXN0czogdGhlIG5ldyBpbmRleCBpcyBidWlsdCBhZ2FpbnN0IHRoZQorLS0gbGl2ZSB0 dXBsZSB1bmRlciBpdHMgb3duIFRJRCwgc28gaXRzIGVudHJ5IGlzIG5ldmVyIHN0YWxlLgor Q1JFQVRFIElOREVYIGhpX2RkbF9jMyBPTiBoaV9kZGwoYzMpOworCistLSAoYikgQUREIENP TFVNTiBjcm9zc2luZyB0aGUgOC1hdHRyaWJ1dGUgYm91bmRhcnkgKG5hdHRzIDggLT4gOSku ICBFeGlzdGluZworLS0gaG9wcyBrZWVwIHRoZWlyIDEtYnl0ZSBiaXRtYXBzOyB0aGUgcmVs YXRpb24gbm93IHdhbnRzIDIuICBSZWFkcyB0aHJvdWdoIHRoZQorLS0gb2xkIGNoYWluIG11 c3Qgc3RpbGwgYmUgY29ycmVjdC4KK0FMVEVSIFRBQkxFIGhpX2RkbCBBREQgQ09MVU1OIGM5 IGludDsKK0NSRUFURSBJTkRFWCBoaV9kZGxfYzkgT04gaGlfZGRsKGM5KTsKKworU0VUIGVu YWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VU IGVuYWJsZV9pbmRleG9ubHlzY2FuID0gb2ZmOworCistLSBMaXZlIGM3IGlzIDcyLiAgVGhl IGM3IGluZGV4IG11c3QgcmV0dXJuIHRoZSBsaXZlIHJvdyBmb3IgNzIgYW5kIGRyb3AgdGhl CistLSBzdGFsZSBsZWF2ZXMgZm9yIDcwIGFuZCA3MSAob2Zmc2V0cyBtaXNyZWFkIHdvdWxk IGNvcnJ1cHQgdGhpcykuCitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzIgRlJPTSBoaV9k ZGwgV0hFUkUgYzcgPSA3MiBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKK1NFTEVDVCBjb3Vu dCgqKSBBUyBjN19lcV83MF9zdGFsZSBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDcwIEFORCBw YXlsb2FkIElTIE5PVCBOVUxMOworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzcxX3N0YWxl IEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzEgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisK Ky0tIGMyIG5ldmVyIGNoYW5nZWQgYWNyb3NzIHRoZSBjaGFpbjogaXRzIGxlYWYgbXVzdCBO T1QgYmUganVkZ2VkIHN0YWxlIGV2ZW4KKy0tIHRob3VnaCBhIGNyb3NzZWQgaG9wIGNoYW5n ZWQgYzcuICBBIG1pc3JlYWQgYml0bWFwIGNvdWxkIHNwdXJpb3VzbHkgZmxhZyBpdC4KK1NF TEVDVCBjb3VudCgqKSBBUyBjMl9lcV8xMF9jdXJyZW50IEZST00gaGlfZGRsIFdIRVJFIGMy ID0gMTAgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisKKy0tIChjKSBDb250aW51ZSBjaHVy bmluZyBjNyBBRlRFUiB0aGUgQUREIENPTFVNTjogdGhlIG5ldyBob3AncyBiaXRtYXAgaXMg c2l6ZWQKKy0tIGZvciBuYXR0cyA5ICgyIGJ5dGVzKTsgdGhlIG9sZCBob3BzIGFyZSAxIGJ5 dGUuICBBIGNoYWluIHdpdGggbWl4ZWQtc2l6ZQorLS0gYml0bWFwcyBtdXN0IHN0aWxsIHJl c29sdmUgY29ycmVjdGx5LgorVVBEQVRFIGhpX2RkbCBTRVQgYzcgPSA3MyBXSEVSRSBjMSA9 IDE7CitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzMgRlJPTSBoaV9kZGwgV0hFUkUgYzcg PSA3MyBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKK1NFTEVDVCBjb3VudCgqKSBBUyBjN19l cV83Ml9ub3dfc3RhbGUgRlJPTSBoaV9kZGwgV0hFUkUgYzcgPSA3MiBBTkQgcGF5bG9hZCBJ UyBOT1QgTlVMTDsKKworLS0gKGQpIENvbGxhcHNlIHRoZSBjaGFpbiB0byBzdHVicyB2aWEg VkFDVVVNLCB0aGVuIHJlYWQgYWdhaW46IHRoZSBzdHViIG11c3QKKy0tIHByZXNlcnZlIGl0 cyB3cml0ZS10aW1lIG5hdHRzIHNvIGl0cyBiaXRtYXAgc3RheXMgbG9jYXRhYmxlIHBvc3Qt QUREIENPTFVNTi4KK1VQREFURSBoaV9kZGwgU0VUIGM3ID0gNzQgV0hFUkUgYzEgPSAxOwor VkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGlfZGRsOworU0VMRUNUIGNvdW50KCopIEFT IGM3X2VxXzc0X2FmdGVyX3ZhY3V1bSBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDc0IEFORCBw YXlsb2FkIElTIE5PVCBOVUxMOworU0VMRUNUIGNvdW50KCopIEFTIGMyX2VxXzEwX2FmdGVy X3ZhY3V1bSBGUk9NIGhpX2RkbCBXSEVSRSBjMiA9IDEwIEFORCBwYXlsb2FkIElTIE5PVCBO VUxMOworCistLSAoZSkgRFJPUCBDT0xVTU4ga2VlcHMgdGhlIGF0dG51bSBzbG90IChubyBy ZW51bWJlciksIHNvIGJpdG1hcHMgc3RheSBhbGlnbmVkLgorQUxURVIgVEFCTEUgaGlfZGRs IERST1AgQ09MVU1OIGM0OworU0VMRUNUIGNvdW50KCopIEFTIGM3X2FmdGVyX2Ryb3AgRlJP TSBoaV9kZGwgV0hFUkUgYzcgPSA3NCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKK1NFTEVD VCBjb3VudCgqKSBBUyBjMl9hZnRlcl9kcm9wIEZST00gaGlfZGRsIFdIRVJFIGMyID0gMTAg QU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisKKy0tIChmKSBEUk9QIElOREVYIG9uIHRoZSBj aHVybmVkIGNvbHVtbjogcmVtYWluaW5nIGluZGV4ZXMgc3RpbGwgcmVzb2x2ZS4KK0RST1Ag SU5ERVggaGlfZGRsX2M3OworU0VMRUNUIGNvdW50KCopIEFTIGMyX2FmdGVyX2Ryb3BpZHgg RlJPTSBoaV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKwor UkVTRVQgZW5hYmxlX3NlcXNjYW47CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VU IGVuYWJsZV9pbmRleG9ubHlzY2FuOworCistLSBUaGUgc2Vxc2NhbiB0cnV0aCBjb25maXJt cyB0aGUgbGl2ZSByb3c7IHRoZSBjb3VudCBhc3NlcnRpb25zIGFib3ZlIChyZWFkCistLSB0 aHJvdWdoIHRoZSBwb3N0LURETCBpbmRleGVzKSBtYXRjaCBpdCwgd2hpY2ggaXMgd2hhdCB3 b3VsZCBicmVhayBpZiBhCistLSBtaXMtc2l6ZWQgYml0bWFwIGNvcnJ1cHRlZCB0aGUgc3Rh bGVuZXNzIHZlcmRpY3QuCitTRUxFQ1QgYzEsIGMyLCBjNyBGUk9NIGhpX2RkbCBXSEVSRSBj MSA9IDE7CisKK0RST1AgVEFCTEUgaGlfZGRsOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIENsZWFudXAKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRFJPUCBGVU5DVElP TiBnZXRfaGlfY291bnQodGV4dCk7CitEUk9QIEZVTkNUSU9OIGdldF9ob3RfY291bnQodGV4 dCk7CitEUk9QIEVYVEVOU0lPTiBwYWdlaW5zcGVjdDsKLS0gCjIuNTAuMQoK --98b017876237f005fe98a17b40ccb28dde987108 Content-Disposition: attachment; filename*0="v48-0008-Gate-HOT-indexed-updates-on-the-logical-replicat.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v48-0008-Gate-HOT-indexed-updates-on-the-logical-replicat.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAyMDMyMGZmYTdmZjE2MTQwYmNkMDMxZGJiODFhMGU0ODViNmM0YzdhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTo0Mzo1MyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ4IDgv OV0gR2F0ZSBIT1QtaW5kZXhlZCB1cGRhdGVzIG9uIHRoZSBsb2dpY2FsLXJlcGxpY2F0aW9u CiBhcHBseSBwYXRoCgpBIEhPVC1pbmRleGVkIHVwZGF0ZSBvZiBhIHJlcGxpY2EtaWRlbnRp dHkgYXR0cmlidXRlIG9uIGEgc3Vic2NyaWJlciBsZWF2ZXMgYQpzdGFsZSBpbmRleCBsZWFm IHRoYXQgdGhlIGFwcGx5IHdvcmtlcidzIHJlcGxpY2EtaWRlbnRpdHkgbG9va3VwcyBtdXN0 IHRvbGVyYXRlCi0tIHdoaWNoIHRoZXkgZG8sIGJ1dCBvbmx5IHdoZW4gdGhlIHN1YnNjcmli ZXIncyBpbmRleGVkIGF0dHJpYnV0ZXMgZG8gbm90CmV4dGVuZCBwYXN0IHRoZSBjb2x1bW5z IHRob3NlIGxvb2t1cHMga2V5IG9uLiAgQWRkIHRoZSBwZXItc3Vic2NyaXB0aW9uCmhvdF9p bmRleGVkX29uX2FwcGx5IG9wdGlvbiAoc3ViaG90aW5kZXhlZG9uYXBwbHk6IG9mZiAvIHN1 YnNldF9vbmx5IChkZWZhdWx0KQovIGFsd2F5cykgYW5kIGhhdmUgSGVhcFVwZGF0ZUhvdEFs bG93YWJsZSBjb25zdWx0IGl0IHdoZW4gcnVubmluZyBpbiBhbiBhcHBseQp3b3JrZXIsIGNv bXBhcmluZyB0aGUgcmVsYXRpb24ncyBpbmRleGVkLWF0dHJpYnV0ZSBzZXQgYWdhaW5zdCBp dHMgcHJpbWFyeS1rZXkKYXR0cmlidXRlczogIm9mZiIgZGlzcXVhbGlmaWVzIEhPVC1pbmRl eGVkIHdoZW5ldmVyIGFueSBpbmRleGVkIGF0dHJpYnV0ZSBsaWVzCm91dHNpZGUgdGhlIHBy aW1hcnkga2V5LCAic3Vic2V0X29ubHkiIHJlcXVpcmVzIHRoZSBpbmRleGVkIGF0dHJpYnV0 ZXMgdG8gYmUgYQpzdWJzZXQgb2YgdGhlIHByaW1hcnkga2V5LCBhbmQgImFsd2F5cyIgYXBw bGllcyBubyBhcHBseS1wYXRoIGdhdGluZy4KCldpcmUgdGhlIG9wdGlvbiB0aHJvdWdoIENS RUFURS9BTFRFUiBTVUJTQ1JJUFRJT04sIHBnX3N1YnNjcmlwdGlvbiwgcGdfZHVtcCwKYW5k IHBzcWwncyBcZFJzKywgYW5kIGRvY3VtZW50IGl0IChjcmVhdGVfc3Vic2NyaXB0aW9uLCBh bHRlcl9zdWJzY3JpcHRpb24sCmNhdGFsb2dzKS4gIENvdmVyIGFwcGx5IHVuZGVyIGVhY2gg bW9kZSAoMDM5KSwgYXBwbHkgdW5kZXIgUkVQTElDQSBJREVOVElUWQpGVUxMIGFuZCBhIG5v bi1QSyBVU0lORyBJTkRFWCB3aG9zZSBrZXkgaXMgY3ljbGVkICgwNDApLCBhbmQgZGVjb2Rp bmcgb2YKSE9ULWluZGV4ZWQgdXBkYXRlIGNoYWlucyAodGVzdF9kZWNvZGluZykuCgpBdXRo b3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+Ci0tLQogY29udHJpYi90ZXN0X2Rl Y29kaW5nL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAyICstCiAuLi4vdGVzdF9kZWNv ZGluZy9leHBlY3RlZC9ob3RfaW5kZXhlZC5vdXQgICAgfCAgNTkgKysrCiBjb250cmliL3Rl c3RfZGVjb2RpbmcvbWVzb24uYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogY29udHJpYi90 ZXN0X2RlY29kaW5nL3NxbC9ob3RfaW5kZXhlZC5zcWwgICAgIHwgIDI5ICsrCiBkb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgMTYgKwogZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCAgICAgIHwgICA0ICsKIGRvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8ICA1NSArKysKIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCAgICB8ICAzNCArKwog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgIDMwICsr CiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICAgfCAgIDEg Kwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICA0 MyArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwg IDMzICsrCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAg fCAgMTcgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAg IHwgICAxICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAgNiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmggICAgICAgICAg ICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oICAg ICAgICAgfCAgMjcgKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIu aCAgICAgICB8ICAgOCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlv bi5vdXQgICAgfCAxNzYgKysrKy0tLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5i dWlsZCAgICAgICAgICAgICB8ICAgMiArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDM5X2hvdF9p bmRleGVkX2FwcGx5LnBsICAgfCA0MTYgKysrKysrKysrKysrKysrKysrCiAuLi4vdC8wNDBf aG90X2luZGV4ZWRfcmVwbGljYV9pZGVudGl0eS5wbCAgICAgfCAxMTAgKysrKysKIDIzIGZp bGVzIGNoYW5nZWQsIDk4MCBpbnNlcnRpb25zKCspLCA5MyBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBjb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvaG90X2luZGV4 ZWQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9o b3RfaW5kZXhlZC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMzlfaG90X2luZGV4ZWRfYXBwbHkucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wNDBfaG90X2luZGV4ZWRfcmVwbGljYV9pZGVudGl0eS5w bAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZSBiL2NvbnRy aWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZQppbmRleCAwMTExMTI0Mzk5YS4uODAwMjE2YjJh ZTQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZQorKysgYi9j b250cmliL3Rlc3RfZGVjb2RpbmcvTWFrZWZpbGUKQEAgLTUsNyArNSw3IEBAIFBHRklMRURF U0MgPSAidGVzdF9kZWNvZGluZyAtIGV4YW1wbGUgb2YgYSBsb2dpY2FsIGRlY29kaW5nIG91 dHB1dCBwbHVnaW4iCiAKIFJFR1JFU1MgPSBkZGwgeGFjdCByZXdyaXRlIHRvYXN0IHBlcm1p c3Npb25zIGRlY29kaW5nX2luX3hhY3QgXAogCWRlY29kaW5nX2ludG9fcmVsIGJpbmFyeSBw cmVwYXJlZCByZXBsb3JpZ2luIHRpbWUgbWVzc2FnZXMgXAotCXJlcGFjayBzcGlsbCBzbG90 IHRydW5jYXRlIHN0cmVhbSBzdGF0cyB0d29waGFzZSB0d29waGFzZV9zdHJlYW0KKwlyZXBh Y2sgc3BpbGwgc2xvdCB0cnVuY2F0ZSBzdHJlYW0gc3RhdHMgdHdvcGhhc2UgdHdvcGhhc2Vf c3RyZWFtIGhvdF9pbmRleGVkCiBJU09MQVRJT04gPSBteGFjdCBkZWxheWVkX3N0YXJ0dXAg b25kaXNrX3N0YXJ0dXAgY29uY3VycmVudF9kZGxfZG1sIFwKIAlvbGRlc3RfeG1pbiBzbmFw c2hvdF90cmFuc2ZlciBzdWJ4YWN0X3dpdGhvdXRfdG9wIGNvbmN1cnJlbnRfc3RyZWFtIFwK IAl0d29waGFzZV9zbmFwc2hvdCBzbG90X2NyZWF0aW9uX2Vycm9yIGNhdGFsb2dfY2hhbmdl X3NuYXBzaG90IFwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3Rl ZC9ob3RfaW5kZXhlZC5vdXQgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvaG90 X2luZGV4ZWQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4x ZTIxODZmZGE1NgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9l eHBlY3RlZC9ob3RfaW5kZXhlZC5vdXQKQEAgLTAsMCArMSw1OSBAQAorLS0gTG9naWNhbCBk ZWNvZGluZyBvZiBIT1QtaW5kZXhlZCBVUERBVEVzLiAgQSBIT1QtaW5kZXhlZCB1cGRhdGUg aXMgYW4KKy0tIG9yZGluYXJ5IGhlYXAgdXBkYXRlIGF0IHRoZSBXQUwgbGV2ZWwgKHRoZSBu ZXcgdmVyc2lvbiBpcyBsb2dnZWQgaW4gZnVsbCksCistLSBzbyBpdCBtdXN0IGRlY29kZSBl eGFjdGx5IGxpa2UgYW55IG90aGVyIHVwZGF0ZS4gIEV4ZXJjaXNlIGEgY2hhaW4gb2YKKy0t IEhPVC1pbmRleGVkIHVwZGF0ZXMgdW5kZXIgUkVQTElDQSBJREVOVElUWSBGVUxMIHNvIHRo ZSBkZWNvZGVkIG9sZCB0dXBsZSBhbmQKKy0tIG5ldyB0dXBsZSBjYW4gYm90aCBiZSBjaGVj a2VkLgorU0VUIHN5bmNocm9ub3VzX2NvbW1pdCA9IG9uOworU0VMRUNUICdpbml0JyBGUk9N IHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcs ICd0ZXN0X2RlY29kaW5nJyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgaW5pdAorKDEg cm93KQorCitDUkVBVEUgVEFCTEUgaGlfZGVjb2RlIChpZCBpbnQgUFJJTUFSWSBLRVksIGEg aW50LCBiIGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9k ZWNvZGVfYSBPTiBoaV9kZWNvZGUgKGEpOworQ1JFQVRFIElOREVYIGhpX2RlY29kZV9iIE9O IGhpX2RlY29kZSAoYik7CitBTFRFUiBUQUJMRSBoaV9kZWNvZGUgUkVQTElDQSBJREVOVElU WSBGVUxMOworSU5TRVJUIElOVE8gaGlfZGVjb2RlIFZBTFVFUyAoMSwgMTAsIDEwMCk7Cist LSBlYWNoIHVwZGF0ZSBjaGFuZ2VzIG9uZSBpbmRleGVkIGNvbHVtbiwgc28gZWFjaCBzdGF5 cyBIT1QtaW5kZXhlZAorVVBEQVRFIGhpX2RlY29kZSBTRVQgYSA9IDExIFdIRVJFIGlkID0g MTsKK1VQREFURSBoaV9kZWNvZGUgU0VUIGIgPSAxMDEgV0hFUkUgaWQgPSAxOworVVBEQVRF IGhpX2RlY29kZSBTRVQgYSA9IDEyIFdIRVJFIGlkID0gMTsKKy0tIGN5Y2xlIGEgYXdheSBh bmQgYmFjayAoQUJBKSBhbmQgdGhlbiBkZWxldGUKK1VQREFURSBoaV9kZWNvZGUgU0VUIGEg PSA5OSBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfZGVjb2RlIFNFVCBhID0gMTIgV0hFUkUg aWQgPSAxOworREVMRVRFIEZST00gaGlfZGVjb2RlIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBk YXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3Qn LCBOVUxMLCBOVUxMLAorICAgICAgICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5 LXhhY3RzJywgJzEnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCRUdJTgorIHRhYmxlIHB1YmxpYy5oaV9k ZWNvZGU6IElOU0VSVDogaWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjEwIGJbaW50ZWdlcl06 MTAwCisgQ09NTUlUCisgQkVHSU4KKyB0YWJsZSBwdWJsaWMuaGlfZGVjb2RlOiBVUERBVEU6 IG9sZC1rZXk6IGlkW2ludGVnZXJdOjEgYVtpbnRlZ2VyXToxMCBiW2ludGVnZXJdOjEwMCBu ZXctdHVwbGU6IGlkW2ludGVnZXJdOjEgYVtpbnRlZ2VyXToxMSBiW2ludGVnZXJdOjEwMAor IENPTU1JVAorIEJFR0lOCisgdGFibGUgcHVibGljLmhpX2RlY29kZTogVVBEQVRFOiBvbGQt a2V5OiBpZFtpbnRlZ2VyXToxIGFbaW50ZWdlcl06MTEgYltpbnRlZ2VyXToxMDAgbmV3LXR1 cGxlOiBpZFtpbnRlZ2VyXToxIGFbaW50ZWdlcl06MTEgYltpbnRlZ2VyXToxMDEKKyBDT01N SVQKKyBCRUdJTgorIHRhYmxlIHB1YmxpYy5oaV9kZWNvZGU6IFVQREFURTogb2xkLWtleTog aWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjExIGJbaW50ZWdlcl06MTAxIG5ldy10dXBsZTog aWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjEyIGJbaW50ZWdlcl06MTAxCisgQ09NTUlUCisg QkVHSU4KKyB0YWJsZSBwdWJsaWMuaGlfZGVjb2RlOiBVUERBVEU6IG9sZC1rZXk6IGlkW2lu dGVnZXJdOjEgYVtpbnRlZ2VyXToxMiBiW2ludGVnZXJdOjEwMSBuZXctdHVwbGU6IGlkW2lu dGVnZXJdOjEgYVtpbnRlZ2VyXTo5OSBiW2ludGVnZXJdOjEwMQorIENPTU1JVAorIEJFR0lO CisgdGFibGUgcHVibGljLmhpX2RlY29kZTogVVBEQVRFOiBvbGQta2V5OiBpZFtpbnRlZ2Vy XToxIGFbaW50ZWdlcl06OTkgYltpbnRlZ2VyXToxMDEgbmV3LXR1cGxlOiBpZFtpbnRlZ2Vy XToxIGFbaW50ZWdlcl06MTIgYltpbnRlZ2VyXToxMDEKKyBDT01NSVQKKyBCRUdJTgorIHRh YmxlIHB1YmxpYy5oaV9kZWNvZGU6IERFTEVURTogaWRbaW50ZWdlcl06MSBhW2ludGVnZXJd OjEyIGJbaW50ZWdlcl06MTAxCisgQ09NTUlUCisoMjEgcm93cykKKworU0VMRUNUIHBnX2Ry b3BfcmVwbGljYXRpb25fc2xvdCgncmVncmVzc2lvbl9zbG90Jyk7CisgcGdfZHJvcF9yZXBs aWNhdGlvbl9zbG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworRFJPUCBUQUJMRSBoaV9kZWNvZGU7CmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVj b2RpbmcvbWVzb24uYnVpbGQgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvbWVzb24uYnVpbGQK aW5kZXggYWM2NTU4NTNkMjYuLjkxNzY1Y2EwZTcyIDEwMDY0NAotLS0gYS9jb250cmliL3Rl c3RfZGVjb2RpbmcvbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL21l c29uLmJ1aWxkCkBAIC00Miw2ICs0Miw3IEBAIHRlc3RzICs9IHsKICAgICAgICdzdGF0cycs CiAgICAgICAndHdvcGhhc2UnLAogICAgICAgJ3R3b3BoYXNlX3N0cmVhbScsCisgICAgICAn aG90X2luZGV4ZWQnLAogICAgIF0sCiAgICAgJ3JlZ3Jlc3NfYXJncyc6IFsKICAgICAgICct LXRlbXAtY29uZmlnJywgZmlsZXMoJ2xvZ2ljYWwuY29uZicpLApkaWZmIC0tZ2l0IGEvY29u dHJpYi90ZXN0X2RlY29kaW5nL3NxbC9ob3RfaW5kZXhlZC5zcWwgYi9jb250cmliL3Rlc3Rf ZGVjb2Rpbmcvc3FsL2hvdF9pbmRleGVkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMDVkN2QwOTFiNjIKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmli L3Rlc3RfZGVjb2Rpbmcvc3FsL2hvdF9pbmRleGVkLnNxbApAQCAtMCwwICsxLDI5IEBACist LSBMb2dpY2FsIGRlY29kaW5nIG9mIEhPVC1pbmRleGVkIFVQREFURXMuICBBIEhPVC1pbmRl eGVkIHVwZGF0ZSBpcyBhbgorLS0gb3JkaW5hcnkgaGVhcCB1cGRhdGUgYXQgdGhlIFdBTCBs ZXZlbCAodGhlIG5ldyB2ZXJzaW9uIGlzIGxvZ2dlZCBpbiBmdWxsKSwKKy0tIHNvIGl0IG11 c3QgZGVjb2RlIGV4YWN0bHkgbGlrZSBhbnkgb3RoZXIgdXBkYXRlLiAgRXhlcmNpc2UgYSBj aGFpbiBvZgorLS0gSE9ULWluZGV4ZWQgdXBkYXRlcyB1bmRlciBSRVBMSUNBIElERU5USVRZ IEZVTEwgc28gdGhlIGRlY29kZWQgb2xkIHR1cGxlIGFuZAorLS0gbmV3IHR1cGxlIGNhbiBi b3RoIGJlIGNoZWNrZWQuCitTRVQgc3luY2hyb25vdXNfY29tbWl0ID0gb247CisKK1NFTEVD VCAnaW5pdCcgRlJPTSBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdyZWdy ZXNzaW9uX3Nsb3QnLCAndGVzdF9kZWNvZGluZycpOworCitDUkVBVEUgVEFCTEUgaGlfZGVj b2RlIChpZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50LCBiIGludCkgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9kZWNvZGVfYSBPTiBoaV9kZWNvZGUgKGEpOwor Q1JFQVRFIElOREVYIGhpX2RlY29kZV9iIE9OIGhpX2RlY29kZSAoYik7CitBTFRFUiBUQUJM RSBoaV9kZWNvZGUgUkVQTElDQSBJREVOVElUWSBGVUxMOworCitJTlNFUlQgSU5UTyBoaV9k ZWNvZGUgVkFMVUVTICgxLCAxMCwgMTAwKTsKKy0tIGVhY2ggdXBkYXRlIGNoYW5nZXMgb25l IGluZGV4ZWQgY29sdW1uLCBzbyBlYWNoIHN0YXlzIEhPVC1pbmRleGVkCitVUERBVEUgaGlf ZGVjb2RlIFNFVCBhID0gMTEgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX2RlY29kZSBTRVQg YiA9IDEwMSBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfZGVjb2RlIFNFVCBhID0gMTIgV0hF UkUgaWQgPSAxOworLS0gY3ljbGUgYSBhd2F5IGFuZCBiYWNrIChBQkEpIGFuZCB0aGVuIGRl bGV0ZQorVVBEQVRFIGhpX2RlY29kZSBTRVQgYSA9IDk5IFdIRVJFIGlkID0gMTsKK1VQREFU RSBoaV9kZWNvZGUgU0VUIGEgPSAxMiBXSEVSRSBpZCA9IDE7CitERUxFVEUgRlJPTSBoaV9k ZWNvZGUgV0hFUkUgaWQgPSAxOworCitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xv dF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwKKyAgICAgICAn aW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7CisKK1NFTEVD VCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcpOworRFJPUCBU QUJMRSBoaV9kZWNvZGU7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDRiNDc0YzEzOTE3Li40Yzlh YmE3MmJhNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTg3MjcsNiArODcyNywyMiBAQCBTQ1JB TS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFj ZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwv cm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5zdWJob3RpbmRleGVkb25hcHBseTwvc3RydWN0ZmllbGQ+IDx0eXBlPmNoYXI8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBHYXRpbmcgbW9kZSBm b3IgdGhlIEhPVC1pbmRleGVkIGFwcGx5IHBhdGguICBDb3JyZXNwb25kcyB0byB0aGUKKyAg ICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRo LWhvdC1pbmRleGVkLW9uLWFwcGx5Ij48bGl0ZXJhbD5ob3RfaW5kZXhlZF9vbl9hcHBseTwv bGl0ZXJhbD48L2xpbms+CisgICAgICAgc3Vic2NyaXB0aW9uIG9wdGlvbjoKKyAgICAgICA8 aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpdGVyYWw+bzwvbGl0 ZXJhbD4gPSBvZmY8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJh PjxsaXRlcmFsPnM8L2xpdGVyYWw+ID0gc3Vic2V0X29ubHkgKGRlZmF1bHQpPC9wYXJhPjwv bGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGl0ZXJhbD5hPC9saXRlcmFs PiA9IGFsd2F5czwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgIDwvaXRlbWl6ZWRsaXN0Pgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzZXJ2ZXI8L3N0cnVjdGZp ZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3Jp cHRpb24uc2dtbAppbmRleCBlNGYwYjZiMTZjNy4uMzQyM2M1ZTdlZDEgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjk1LDYgKzI5NSwxMCBA QCBBTFRFUiBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPAogICAgICAgPGxpbmsgbGlua2VuZD0ic3Fs LWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1yZXRhaW4tZGVhZC10dXBsZXMiPjxs aXRlcmFsPnJldGFpbl9kZWFkX3R1cGxlczwvbGl0ZXJhbD48L2xpbms+LAogICAgICAgPGxp bmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1tYXgtcmV0 ZW50aW9uLWR1cmF0aW9uIj48bGl0ZXJhbD5tYXhfcmV0ZW50aW9uX2R1cmF0aW9uPC9saXRl cmFsPjwvbGluaz4sIGFuZAogICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNj cmlwdGlvbi1wYXJhbXMtd2l0aC13YWwtcmVjZWl2ZXItdGltZW91dCI+PGxpdGVyYWw+d2Fs X3JlY2VpdmVyX3RpbWVvdXQ8L2xpdGVyYWw+PC9saW5rPi4KKyAgICAgIFRoZQorICAgICAg PGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1ob3Qt aW5kZXhlZC1vbi1hcHBseSI+PGxpdGVyYWw+aG90X2luZGV4ZWRfb25fYXBwbHk8L2xpdGVy YWw+PC9saW5rPgorICAgICAgb3B0aW9uIGNhbiBhbHNvIGJlIGFsdGVyZWQ7IHRoZSBuZXcg dmFsdWUgdGFrZXMgZWZmZWN0IGF0IHRoZSBhcHBseQorICAgICAgd29ya2VyJ3MgbmV4dCBj YXRhbG9nIHJlbG9hZC4KICAgICAgIE9ubHkgYSBzdXBlcnVzZXIgY2FuIHNldCA8bGl0ZXJh bD5wYXNzd29yZF9yZXF1aXJlZCA9IGZhbHNlPC9saXRlcmFsPi4KICAgICAgPC9wYXJhPgog CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDA3 ZDViMWJkNzdjLi43ZjEyZWVkOTYyNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf c3Vic2NyaXB0aW9uLnNnbWwKQEAgLTYwMiw2ICs2MDIsNjEgQEAgQ1JFQVRFIFNVQlNDUklQ VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8 L3JlcGxhY2VhYmwKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAg ICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNy ZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1ob3QtaW5kZXhlZC1vbi1hcHBseSI+Cisg ICAgICAgIDx0ZXJtPjxsaXRlcmFsPmhvdF9pbmRleGVkX29uX2FwcGx5PC9saXRlcmFsPiAo PHR5cGU+dGV4dDwvdHlwZT4pPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAg ICA8cGFyYT4KKyAgICAgICAgICBDb250cm9scyB3aGV0aGVyIHRoZSBzdWJzY3JpcHRpb24n cyBhcHBseSB3b3JrZXIgbWF5IHRha2UgdGhlCisgICAgICAgICAgSE9ULWluZGV4ZWQgdXBk YXRlIHBhdGggd2hlbiBhbiA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+IHJlcGxpY2F0ZWQK KyAgICAgICAgICBmcm9tIHRoZSBwdWJsaXNoZXIgdG91Y2hlcyBhbiBpbmRleGVkIGF0dHJp YnV0ZS4gIEJlY2F1c2UgdGhlCisgICAgICAgICAgc3Vic2NyaWJlcidzIGluZGV4IHNldCBt YXkgZGlmZmVyIGZyb20gdGhlIHB1Ymxpc2hlcidzLCBhbgorICAgICAgICAgIHVuY29uc3Ry YWluZWQgSE9ULWluZGV4ZWQgZGVjaXNpb24gb24gdGhlIGFwcGx5IHBhdGggY2FuIHByb2R1 Y2UgYQorICAgICAgICAgIGhlYXAgY2hhaW4gd2hvc2UgaW5kZXggc3RhdGUgZGlzYWdyZWVz IHdpdGggdGhlIHVwc3RyZWFtIHJvdy4gIFRoZQorICAgICAgICAgIG9wdGlvbiByZXN0cmlj dHMgd2hlbiB0aGUgYXBwbHkgd29ya2VyIGlzIGFsbG93ZWQgdG8gdGFrZSB0aGF0IHBhdGgu CisgICAgICAgICA8L3BhcmE+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBBY2NlcHRl ZCB2YWx1ZXMgYXJlOgorICAgICAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICAgICAgIDx2 YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5vZmY8L2xpdGVyYWw+ PC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgIDxwYXJhPgor ICAgICAgICAgICAgICBGb3JjZSBub24tSE9UIG9uIGFwcGx5IHdoZW5ldmVyIHRoZSBzdWJz Y3JpYmVyIGhhcyBhbnkgaW5kZXhlZAorICAgICAgICAgICAgICBhdHRyaWJ1dGUgYmV5b25k IHRoZSBwcmltYXJ5IGtleS4gIFRoaXMgbWF0Y2hlcyB0aGUgY29uc2VydmF0aXZlCisgICAg ICAgICAgICAgIHByZS1leGlzdGluZyBiZWhhdmlvdXIuCisgICAgICAgICAgICAgPC9wYXJh PgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+ CisgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT48bGl0ZXJh bD5zdWJzZXRfb25seTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIEFsbG93IHRoZSBIT1QtaW5k ZXhlZCBhcHBseSBwYXRoIHdoZW4gdGhlIHN1YnNjcmliZXIncworICAgICAgICAgICAgICBp bmRleGVkLWF0dHIgc2V0IGlzIGEgc3Vic2V0IG9mIGl0cyBwcmltYXJ5LWtleSBhdHRycyAo d2hpY2gKKyAgICAgICAgICAgICAgaW5jbHVkZXMgdGhlIG5vLXNlY29uZGFyeS1pbmRleCBj YXNlKS4gIFRoaXMgaXMgdGhlIGRlZmF1bHQgYW5kCisgICAgICAgICAgICAgIGNhcHR1cmVz IHRoZSBjb21tb24gcmVwbGljYXRpb24tcmVhZHkgc2NoZW1hIHNoYXBlIHdoaWxlIHN0YXlp bmcKKyAgICAgICAgICAgICAgc2FmZSB3aGVuIHRoZSBzdWJzY3JpYmVyIGFkZHMgaW5kZXhl cyB0aGUgcHVibGlzaGVyIGRvZXMgbm90CisgICAgICAgICAgICAgIGhhdmUuCisgICAgICAg ICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgPC92 YXJsaXN0ZW50cnk+CisgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8 dGVybT48bGl0ZXJhbD5hbHdheXM8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgICAgPGxp c3RpdGVtPgorICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBVbmNvbmRpdGlv bmFsIEhPVC1pbmRleGVkIGVsaWdpYmlsaXR5IG9uIGFwcGx5LiAgVGhlIG9wZXJhdG9yCisg ICAgICAgICAgICAgIHRha2VzIHJlc3BvbnNpYmlsaXR5IGZvciBrZWVwaW5nIHRoZSBzdWJz Y3JpYmVyJ3MgaW5kZXhlZC1hdHRyCisgICAgICAgICAgICAgIHNldCBjb21wYXRpYmxlIHdp dGggdGhlIHB1Ymxpc2hlcidzOyBkaXZlcmdlbnQgc2NoZW1hcyBjYW4KKyAgICAgICAgICAg ICAgcHJvZHVjZSBzcHVyaW91cyBkdXBsaWNhdGUta2V5IGNvbmZsaWN0cyBmb3Igc3Vic2Vx dWVudAorICAgICAgICAgICAgICBpbnNlcnRzIG9uIHRoZSBzdWJzY3JpYmVyLgorICAgICAg ICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgIDwv dmFybGlzdGVudHJ5PgorICAgICAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgICAgPC9w YXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAg ICAgPC92YXJpYWJsZWxpc3Q+PC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxp c3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5I T1QtSU5ERVhFRCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhF RAppbmRleCAyZTVlNWY0YTA4MS4uNTU2MTQ5OGQ5NWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRAorKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQKQEAgLTI1Nyw2ICsyNTcsNDAgQEAgcGVy LWluZGV4IHJlY2hlY2sgb3V0Y29tZXM7IGFuZCBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9z dGF0cygpIHJlcG9ydHMKIHBlci1yZWxhdGlvbiBIT1QtaW5kZXhlZCBjaGFpbiBjb3VudHMu CiAKIAorTG9naWNhbCByZXBsaWNhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIEhP VC1pbmRleGVkIHVwZGF0ZSBvZiBhIHJlcGxpY2EtaWRlbnRpdHkgYXR0cmlidXRlIG9uIGEg c3Vic2NyaWJlciBsZWF2ZXMgYQorc3RhbGUgaW5kZXggbGVhZjsgdGhlIGFwcGx5IHdvcmtl cidzIHJlcGxpY2EtaWRlbnRpdHkgbG9va3VwcyB0b2xlcmF0ZSB0aGF0Citvbmx5IHdoZW4g dGhlIGluZGV4ZWQgYXR0cmlidXRlcyBhcmUgY292ZXJlZCBieSB0aGUgcmVwbGljYSBpZGVu dGl0eS4gIFRoZQorcGVyLXN1YnNjcmlwdGlvbiBob3RfaW5kZXhlZF9vbl9hcHBseSBvcHRp b24gKHBnX3N1YnNjcmlwdGlvbi5zdWJob3RpbmRleGVkb25hcHBseSwKK29mZiAvIHN1YnNl dF9vbmx5IC8gYWx3YXlzOyBzdWJzZXRfb25seSBpcyB0aGUgZGVmYXVsdCkgY29udHJvbHMg dGhpczoKK0hlYXBVcGRhdGVIb3RBbGxvd2FibGUgY29uc3VsdHMgR2V0SG90SW5kZXhlZEFw cGx5TW9kZSBvbiB0aGUgYXBwbHkgcGF0aCBhbmQKK2ZhbGxzIGJhY2sgdG8gbm9uLUhPVCB3 aGVuIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBleGFjdGx5IHRoZSBwcmltYXJ5 CitrZXkgKG9mZikgb3Igbm90IGEgc3Vic2V0IG9mIGl0IChzdWJzZXRfb25seSkuCisKKwor UmVjb3ZlcnkKKy0tLS0tLS0tCisKK0hPVC1pbmRleGVkIHVwZGF0ZXMgYW5kIHRoZSBwcnVu ZS9jb2xsYXBzZSB1c2UgdGhlIGV4aXN0aW5nIGhlYXAgVVBEQVRFIGFuZAorcHJ1bmUvZnJl ZXplIFdBTCByZWNvcmRzLCBzbyBjcmFzaCByZWNvdmVyeSByZXBsYXlzIHRoZW0gd2l0aCBu byBuZXcgcmVjb3JkCit0eXBlcy4gIHNyYy90ZXN0L3JlY292ZXJ5L3QvMDU0X2hvdF9pbmRl eGVkX3JlY292ZXJ5LnBsIGJ1aWxkcyBhIGNoYWluLAorY3Jhc2hlcyB3aXRob3V0IGEgY2hl Y2twb2ludCAoZm9yY2luZyBXQUwgcmVkbyksIGFuZCB2ZXJpZmllcyB0aGUgY2hhaW4gd2Fs aywKK3ZlcmlmeV9oZWFwYW0sIGFuZCB2YWN1dW0gcmVjbGFtYXRpb24gYWZ0ZXIgcmVzdGFy dCwgd2l0aAord2FsX2NvbnNpc3RlbmN5X2NoZWNraW5nID0gJ2FsbCcgY29tcGFyaW5nIGVh Y2ggcmVwbGF5ZWQgcGFnZSB0byBpdHMgRlBJLgorCisKK0FkdmVyc2FyaWFsIHRlc3RzCist LS0tLS0tLS0tLS0tLS0tLQorCitzcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvaG90X2luZGV4 ZWRfYWR2ZXJzYXJpYWwuc3BlYyBleGVyY2lzZXMgdGhlIGNhc2VzIHRoZQoraW52YXJpYW50 IG11c3Qgc2F0aXNmeSB1bmRlciBjb25jdXJyZW5jeToga2V5IGN5Y2xpbmcgKFgtPlktPlgp LCBhYm9ydGVkCitIT1QtaW5kZXhlZCB1cGRhdGVzLCBjb25jdXJyZW50IHVuaXF1ZSBpbnNl cnRzIGFnYWluc3QgYSBmcmVlZC90YWtlbiBrZXksCitzbmFwc2hvdC1zYWZlIHJlY2xhaW0g b2Ygc3RhbGUgbGVhdmVzLCBhbmQgcmVhZGVyIGNvbnNpc3RlbmN5IGFjcm9zcyBhCitjb25j dXJyZW50IHBydW5lL2NvbGxhcHNlLgorCisKIEFwcGVuZGljZXMKIC0tLS0tLS0tLS0KIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCA5MGE1YWFhNTFiMy4uNzY2ZjQzZTQ1 YTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC00NTAxLDYgKzQ1MDEsMzYg QEAgSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0 bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMpCiAJYWxsX2lkeF9hdHRycyA9IFJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwTm9Db3B5KHJlbGF0aW9uLAogCQkJCQkJCQkJCQkgICBJTkRF WF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKIAorCS8qCisJICogVGhlIGxvZ2ljYWwtcmVwbGlj YXRpb24gYXBwbHkgcGF0aCBnYXRlcyBIT1QtaW5kZXhlZCB1cGRhdGVzIG9uIHRoZQorCSAq IHBlci1zdWJzY3JpcHRpb24gaG90X2luZGV4ZWRfb25fYXBwbHkgb3B0aW9uLiAgQSBIT1Qt aW5kZXhlZCB1cGRhdGUgb2YKKwkgKiBhIHJlcGxpY2EtaWRlbnRpdHkgYXR0cmlidXRlIGxl YXZlcyBhIHN0YWxlIGluZGV4IGxlYWY7IHRoZSBhcHBseQorCSAqIHdvcmtlcidzIHJlcGxp Y2EtaWRlbnRpdHkgbG9va3VwcyBjb3BlIHdpdGggdGhhdCAoc2VlCisJICogUmVsYXRpb25G aW5kUmVwbFR1cGxlQnlJbmRleCksIGJ1dCBvbmx5IHdoZW4gdGhlIGluZGV4ZWQgYXR0cmli dXRlcyBhcmUKKwkgKiBhIHN1YnNldCBvZiB0aGUgcmVwbGljYSBpZGVudGl0eS4gICJvZmYi IGRpc3F1YWxpZmllcyB3aGVuZXZlciB0aGUKKwkgKiBzdWJzY3JpYmVyIGhhcyBhbnkgaW5k ZXhlZCBhdHRyaWJ1dGUgYmV5b25kIGl0cyBQSzsgInN1YnNldF9vbmx5IiAodGhlCisJICog ZGVmYXVsdCkgcmVxdWlyZXMgdGhlIGluZGV4ZWQgYXR0cmlidXRlcyB0byBiZSBhIHN1YnNl dCBvZiB0aGUgUEs7CisJICogImFsd2F5cyIgYXBwbGllcyBubyBhcHBseS1wYXRoIGdhdGlu Zy4KKwkgKi8KKwlpZiAoSXNMb2dpY2FsV29ya2VyKCkpCisJeworCQljaGFyCQltb2RlID0g R2V0SG90SW5kZXhlZEFwcGx5TW9kZSgpOworCQljb25zdCBCaXRtYXBzZXQgICpwa19hdHRy cyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwTm9Db3B5KHJlbGF0aW9uLAorCQkJCQkJ CQkJCQkgIElOREVYX0FUVFJfQklUTUFQX1BSSU1BUllfS0VZKTsKKworCQlpZiAobW9kZSA9 PSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX09GRikKKwkJeworCQkJaWYgKCFibXNfZXF1YWwo YWxsX2lkeF9hdHRycywgcGtfYXR0cnMpKQorCQkJCXJldHVybiBIRUFQX1VQREFURV9BTExf SU5ERVhFUzsKKwkJfQorCQllbHNlIGlmIChtb2RlID09IExPR0lDQUxSRVBfSE9UX0lOREVY RURfU1VCU0VUX09OTFkpCisJCXsKKwkJCWlmICghYm1zX2lzX3N1YnNldChhbGxfaWR4X2F0 dHJzLCBwa19hdHRycykpCisJCQkJcmV0dXJuIEhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTOwor CQl9CisJCS8qIExPR0lDQUxSRVBfSE9UX0lOREVYRURfQUxXQVlTOiBubyBhcHBseS1wYXRo IGdhdGluZy4gKi8KKwl9CisKIAkvKgogCSAqIFN5c3RlbSBjYXRhbG9ncyBrZWVwIGNsYXNz aWMgSE9UIChhbiBVUERBVEUgdG91Y2hpbmcgbm8gbm9uLXN1bW1hcml6aW5nCiAJICogaW5k ZXhlZCBhdHRyaWJ1dGUgYWxyZWFkeSByZXR1cm5lZCBIRUFQX0hFQVBfT05MWV9VUERBVEUg YWJvdmUpLCBidXQgZG8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmlu ZGV4IGI1Y2IzMDFkYjg4Li5mNTYyNjhlZGJkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5jCkBAIC0xMzIsNiArMTMyLDcgQEAgR2V0U3Vic2NyaXB0aW9uKE9p ZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rLCBib29sIGNvbm5pbmZvX25lZWRlZCwKIAlzdWIt PnJldGFpbmRlYWR0dXBsZXMgPSBzdWJmb3JtLT5zdWJyZXRhaW5kZWFkdHVwbGVzOwogCXN1 Yi0+bWF4cmV0ZW50aW9uID0gc3ViZm9ybS0+c3VibWF4cmV0ZW50aW9uOwogCXN1Yi0+cmV0 ZW50aW9uYWN0aXZlID0gc3ViZm9ybS0+c3VicmV0ZW50aW9uYWN0aXZlOworCXN1Yi0+aG90 aW5kZXhlZG1vZGUgPSBzdWJmb3JtLT5zdWJob3RpbmRleGVkb25hcHBseTsKIAogCWlmIChj b25uaW5mb19uZWVkZWQpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs CmluZGV4IDRlYTFmYzAwNjU5Li4zN2VkYmViMDZmZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv c3lzdGVtX3ZpZXdzLnNxbApAQCAtMTUzMSw2ICsxNTMxLDcgQEAgR1JBTlQgU0VMRUNUIChv aWQsIHN1YmRiaWQsIHN1YnNraXBsc24sIHN1Ym5hbWUsIHN1Ym93bmVyLCBzdWJlbmFibGVk LAogICAgICAgICAgICAgICBzdWJiaW5hcnksIHN1YnN0cmVhbSwgc3VidHdvcGhhc2VzdGF0 ZSwgc3ViZGlzYWJsZW9uZXJyLAogCQkJICBzdWJwYXNzd29yZHJlcXVpcmVkLCBzdWJydW5h c293bmVyLCBzdWJmYWlsb3ZlciwKICAgICAgICAgICAgICAgc3VicmV0YWluZGVhZHR1cGxl cywgc3VibWF4cmV0ZW50aW9uLCBzdWJyZXRlbnRpb25hY3RpdmUsCisgICAgICAgICAgICAg IHN1YmhvdGluZGV4ZWRvbmFwcGx5LAogICAgICAgICAgICAgICBzdWJzZXJ2ZXIsIHN1YnNs b3RuYW1lLCBzdWJzeW5jY29tbWl0LCBzdWJ3YWxyY3Z0aW1lb3V0LAogICAgICAgICAgICAg ICBzdWJwdWJsaWNhdGlvbnMsIHN1Ym9yaWdpbikKICAgICBPTiBwZ19zdWJzY3JpcHRpb24g VE8gcHVibGljOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmlu ZGV4IGVlMDZhNzI2ZjQyLi4zNzlmMGQ4MzUyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNzksNiArNzksNyBAQAogI2RlZmluZSBTVUJPUFRf V0FMX1JFQ0VJVkVSX1RJTUVPVVQJCQkweDAwMDEwMDAwCiAjZGVmaW5lIFNVQk9QVF9MU04J CQkJCTB4MDAwMjAwMDAKICNkZWZpbmUgU1VCT1BUX09SSUdJTgkJCQkweDAwMDQwMDAwCisj ZGVmaW5lIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWQkweDAwMDgwMDAwCiAKIC8qIGNo ZWNrIGlmIHRoZSAndmFsJyBoYXMgJ2JpdHMnIHNldCAqLwogI2RlZmluZSBJc1NldCh2YWws IGJpdHMpICAoKCh2YWwpICYgKGJpdHMpKSA9PSAoYml0cykpCkBAIC0xMDksNiArMTEwLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgU3ViT3B0cwogCWNoYXIJICAgKm9yaWdpbjsKIAlYTG9nUmVj UHRyCWxzbjsKIAljaGFyCSAgICp3YWxfcmVjZWl2ZXJfdGltZW91dDsKKwljaGFyCQlob3Rp bmRleGVkbW9kZTsKIH0gU3ViT3B0czsKIAogLyoKQEAgLTE5Niw2ICsxOTgsOCBAQCBwYXJz ZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRf b3B0aW9ucywKIAkJb3B0cy0+bWF4cmV0ZW50aW9uID0gMDsKIAlpZiAoSXNTZXQoc3VwcG9y dGVkX29wdHMsIFNVQk9QVF9PUklHSU4pKQogCQlvcHRzLT5vcmlnaW4gPSBwc3RyZHVwKExP R0lDQUxSRVBfT1JJR0lOX0FOWSk7CisJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJP UFRfSE9UX0lOREVYRURfT05fQVBQTFkpKQorCQlvcHRzLT5ob3RpbmRleGVkbW9kZSA9IExP R0lDQUxSRVBfSE9UX0lOREVYRURfU1VCU0VUX09OTFk7CiAKIAkvKiBQYXJzZSBvcHRpb25z ICovCiAJZm9yZWFjaChsYywgc3RtdF9vcHRpb25zKQpAQCAtNDM2LDYgKzQ0MCwzMCBAQCBw YXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0 bXRfb3B0aW9ucywKIAkJCQkJCQkJCQkgUEdDX0JBQ0tFTkQsIFBHQ19TX1RFU1QsIEdVQ19B Q1RJT05fU0VULAogCQkJCQkJCQkJCSBmYWxzZSwgMCwgZmFsc2UpOwogCQl9CisJCWVsc2Ug aWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfSE9UX0lOREVYRURfT05fQVBQTFkp ICYmCisJCQkJIHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImhvdF9pbmRleGVkX29uX2FwcGx5 IikgPT0gMCkKKwkJeworCQkJY2hhcgkgICAqdmFsOworCisJCQlpZiAoSXNTZXQob3B0cy0+ c3BlY2lmaWVkX29wdHMsIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWSkpCisJCQkJZXJy b3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CisKKwkJCW9wdHMtPnNwZWNp ZmllZF9vcHRzIHw9IFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWTsKKwkJCXZhbCA9IGRl ZkdldFN0cmluZyhkZWZlbCk7CisKKwkJCWlmIChwZ19zdHJjYXNlY21wKHZhbCwgIm9mZiIp ID09IDApCisJCQkJb3B0cy0+aG90aW5kZXhlZG1vZGUgPSBMT0dJQ0FMUkVQX0hPVF9JTkRF WEVEX09GRjsKKwkJCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAodmFsLCAic3Vic2V0X29ubHki KSA9PSAwKQorCQkJCW9wdHMtPmhvdGluZGV4ZWRtb2RlID0gTE9HSUNBTFJFUF9IT1RfSU5E RVhFRF9TVUJTRVRfT05MWTsKKwkJCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAodmFsLCAiYWx3 YXlzIikgPT0gMCkKKwkJCQlvcHRzLT5ob3RpbmRleGVkbW9kZSA9IExPR0lDQUxSRVBfSE9U X0lOREVYRURfQUxXQVlTOworCQkJZWxzZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCSBlcnJt c2coInVucmVjb2duaXplZCB2YWx1ZSBmb3Igc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBcIiVz XCI6IFwiJXNcIiIsCisJCQkJCQkJCSJob3RfaW5kZXhlZF9vbl9hcHBseSIsIHZhbCksCisJ CQkJCQkgZXJyaGludCgiVmFsaWQgdmFsdWVzIGFyZSBcIm9mZlwiLCBcInN1YnNldF9vbmx5 XCIsIGFuZCBcImFsd2F5c1wiLiIpKSk7CisJCX0KIAkJZWxzZQogCQkJZXJlcG9ydChFUlJP UiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApAQCAtNjc0LDcgKzcw Miw4IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1 YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCSAgU1VCT1BUX1JVTl9BU19PV05FUiB8IFNV Qk9QVF9GQUlMT1ZFUiB8CiAJCQkJCSAgU1VCT1BUX1JFVEFJTl9ERUFEX1RVUExFUyB8CiAJ CQkJCSAgU1VCT1BUX01BWF9SRVRFTlRJT05fRFVSQVRJT04gfAotCQkJCQkgIFNVQk9QVF9X QUxfUkVDRUlWRVJfVElNRU9VVCB8IFNVQk9QVF9PUklHSU4pOworCQkJCQkgIFNVQk9QVF9X QUxfUkVDRUlWRVJfVElNRU9VVCB8IFNVQk9QVF9PUklHSU4gfAorCQkJCQkgIFNVQk9QVF9I T1RfSU5ERVhFRF9PTl9BUFBMWSk7CiAJcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMocHN0 YXRlLCBzdG10LT5vcHRpb25zLCBzdXBwb3J0ZWRfb3B0cywgJm9wdHMpOwogCiAJLyoKQEAg LTgyOCw2ICs4NTcsOCBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQlJbnQzMkdldERhdHVtKG9wdHMu bWF4cmV0ZW50aW9uKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0ZW50 aW9uYWN0aXZlIC0gMV0gPQogCQlCb29sR2V0RGF0dW0ob3B0cy5yZXRhaW5kZWFkdHVwbGVz KTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViaG90aW5kZXhlZG9uYXBwbHkg LSAxXSA9CisJCUNoYXJHZXREYXR1bShvcHRzLmhvdGluZGV4ZWRtb2RlKTsKIAl2YWx1ZXNb QW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic2VydmVyIC0gMV0gPSBPYmplY3RJZEdldERhdHVt KHNlcnZlcmlkKTsKIAlpZiAoIU9pZElzVmFsaWQoc2VydmVyaWQpKQogCQl2YWx1ZXNbQW51 bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8gLSAxXSA9CkBAIC0xNDk5LDcgKzE1MzAs OCBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2Ny aXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJCQkgIFNVQk9QVF9SRVRBSU5fREVBRF9UVVBMRVMg fAogCQkJCQkJCSAgU1VCT1BUX01BWF9SRVRFTlRJT05fRFVSQVRJT04gfAogCQkJCQkJCSAg U1VCT1BUX1dBTF9SRUNFSVZFUl9USU1FT1VUIHwKLQkJCQkJCQkgIFNVQk9QVF9PUklHSU4p OworCQkJCQkJCSAgU1VCT1BUX09SSUdJTiB8CisJCQkJCQkJICBTVUJPUFRfSE9UX0lOREVY RURfT05fQVBQTFkpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBBTFRFUl9TVUJTQ1JJUFRJT05f RU5BQkxFRDoKQEAgLTE4NTgsNiArMTg5MCwxMyBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJcmVw bGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vid2FscmN2dGltZW91dCAtIDFdID0gdHJ1 ZTsKIAkJCQl9CiAKKwkJCQlpZiAoSXNTZXQob3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BU X0hPVF9JTkRFWEVEX09OX0FQUExZKSkKKwkJCQl7CisJCQkJCXZhbHVlc1tBbnVtX3BnX3N1 YnNjcmlwdGlvbl9zdWJob3RpbmRleGVkb25hcHBseSAtIDFdID0KKwkJCQkJCUNoYXJHZXRE YXR1bShvcHRzLmhvdGluZGV4ZWRtb2RlKTsKKwkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJz Y3JpcHRpb25fc3ViaG90aW5kZXhlZG9uYXBwbHkgLSAxXSA9IHRydWU7CisJCQkJfQorCiAJ CQkJdXBkYXRlX3R1cGxlID0gdHJ1ZTsKIAkJCQlicmVhazsKIAkJCX0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDc3OTkyNjZjNjE0Li4wM2Y2 MDU4YzY3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j CkBAIC00ODQsNiArNDg0LDE0IEBAIFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2Fs UmN2Q29ubiA9IE5VTEw7CiBTdWJzY3JpcHRpb24gKk15U3Vic2NyaXB0aW9uID0gTlVMTDsK IHN0YXRpYyBib29sIE15U3Vic2NyaXB0aW9uVmFsaWQgPSBmYWxzZTsKIAorLyoKKyAqIENh Y2hlIG9mIHRoZSBwZXItc3Vic2NyaXB0aW9uIGhvdF9pbmRleGVkX29uX2FwcGx5IG1vZGUu ICBUaGUgYXBwbHkgd29ya2VyCisgKiByZWZyZXNoZXMgdGhpcyBhZnRlciBldmVyeSBzdWNj ZXNzZnVsIGxvYWQgb2YgTXlTdWJzY3JpcHRpb247IHJlYWRlcnMKKyAqIG91dHNpZGUgd29y a2VyLmMgZ28gdGhyb3VnaCBHZXRIb3RJbmRleGVkQXBwbHlNb2RlKCkgc28gdGhleSBkb24n dCBuZWVkCisgKiB2aXNpYmlsaXR5IGludG8gdGhlIFN1YnNjcmlwdGlvbiBzdHJ1Y3Qgb3Ig dGhlIGFwcGx5IHdvcmtlcidzIGdsb2JhbHMuCisgKi8KK3N0YXRpYyBjaGFyIGhvdF9pbmRl eGVkX2FwcGx5X21vZGUgPSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX09GRjsKKwogc3RhdGlj IExpc3QgKm9uX2NvbW1pdF93YWtldXBfd29ya2Vyc19zdWJpZHMgPSBOSUw7CiAKIGJvb2wJ CWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwpAQCAtNTE3MSw2ICs1MTc5LDkgQEAg bWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCU1lbW9yeUNvbnRleHREZWxldGUo TXlTdWJzY3JpcHRpb24tPmN4dCk7CiAJTXlTdWJzY3JpcHRpb24gPSBuZXdzdWI7CiAKKwkv KiBSZWZyZXNoIHRoZSBjYWNoZWQgSE9ULWluZGV4ZWQgYXBwbHkgbW9kZSBmcm9tIHRoZSBu ZXcgdHVwbGUuICovCisJaG90X2luZGV4ZWRfYXBwbHlfbW9kZSA9IE15U3Vic2NyaXB0aW9u LT5ob3RpbmRleGVkbW9kZTsKKwogCS8qIENoYW5nZSBzeW5jaHJvbm91cyBjb21taXQgYWNj b3JkaW5nIHRvIHRoZSB1c2VyJ3Mgd2lzaGVzICovCiAJU2V0Q29uZmlnT3B0aW9uKCJzeW5j aHJvbm91c19jb21taXQiLCBNeVN1YnNjcmlwdGlvbi0+c3luY2NvbW1pdCwKIAkJCQkJUEdD X0JBQ0tFTkQsIFBHQ19TX09WRVJSSURFKTsKQEAgLTU4NDQsNiArNTg1NSwxMiBAQCBJbml0 aWFsaXplTG9nUmVwV29ya2VyKHZvaWQpCiAKIAlNeVN1YnNjcmlwdGlvblZhbGlkID0gdHJ1 ZTsKIAorCS8qCisJICogQ2FjaGUgdGhlIHN1YnNjcmlwdGlvbidzIEhPVC1pbmRleGVkIGFw cGx5IG1vZGUgc28gaXQgaXMgY2hlYXAgdG8KKwkgKiBjb25zdWx0IGZyb20gdGhlIGhlYXAg YWNjZXNzIG1ldGhvZCAodmlhIEdldEhvdEluZGV4ZWRBcHBseU1vZGUoKSkuCisJICovCisJ aG90X2luZGV4ZWRfYXBwbHlfbW9kZSA9IE15U3Vic2NyaXB0aW9uLT5ob3RpbmRleGVkbW9k ZTsKKwogCWlmICghTXlTdWJzY3JpcHRpb24tPmVuYWJsZWQpCiAJewogCQllcmVwb3J0KExP RywKQEAgLTYwODMsNiArNjEwMCwyMiBAQCBJc0xvZ2ljYWxXb3JrZXIodm9pZCkKIAlyZXR1 cm4gTXlMb2dpY2FsUmVwV29ya2VyICE9IE5VTEw7CiB9CiAKKy8qCisgKiBSZXR1cm4gdGhl IGNhY2hlZCBIT1QtaW5kZXhlZCBhcHBseSBtb2RlIG9mIHRoZSBjdXJyZW50IGxvZ2ljYWwg cmVwbGljYXRpb24KKyAqIHdvcmtlcidzIHN1YnNjcmlwdGlvbi4KKyAqCisgKiBDYWxsZXJz IG91dHNpZGUgd29ya2VyLmMgKG5vdGFibHkgaGVhcGFtLmMncyBIZWFwVXBkYXRlSG90QWxs b3dhYmxlKSB1c2UKKyAqIHRoaXMgYWNjZXNzb3IgdG8gYXZvaWQgcHVsbGluZyBpbiB3b3Jr ZXJfaW50ZXJuYWwuaCBvciB0aGUgU3Vic2NyaXB0aW9uCisgKiBzdHJ1Y3QuICBOb24tYXBw bHkgcHJvY2Vzc2VzIGdldCBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX09GRiwgd2hpY2ggaXMg dGhlCisgKiBjb25zZXJ2YXRpdmUgdmFsdWU7IGNhbGxlcnMgYXJlIGV4cGVjdGVkIHRvIGd1 YXJkIHdpdGggSXNMb2dpY2FsV29ya2VyKCkKKyAqIGZpcnN0IGZvciBjbGFyaXR5LCBidXQg dGhlIGFjY2Vzc29yIGlzIHNhZmUgZWl0aGVyIHdheS4KKyAqLworY2hhcgorR2V0SG90SW5k ZXhlZEFwcGx5TW9kZSh2b2lkKQoreworCXJldHVybiBob3RfaW5kZXhlZF9hcHBseV9tb2Rl OworfQorCiAvKgogICogSXMgY3VycmVudCBwcm9jZXNzIGEgbG9naWNhbCByZXBsaWNhdGlv biBwYXJhbGxlbCBhcHBseSB3b3JrZXI/CiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGM1NjQz N2Q2MDU3Li5iZjFhNzk3N2JlMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC01MTg0LDYgKzUxODQs NyBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJaW50CQkJaV9zdWJmYWls b3ZlcjsKIAlpbnQJCQlpX3N1YnJldGFpbmRlYWR0dXBsZXM7CiAJaW50CQkJaV9zdWJtYXhy ZXRlbnRpb247CisJaW50CQkJaV9zdWJob3RpbmRleGVkb25hcHBseTsKIAlpbnQJCQlpLAog CQkJCW50dXBzOwogCkBAIC01MjgxLDYgKzUyODIsMTQgQEAgZ2V0U3Vic2NyaXB0aW9ucyhB cmNoaXZlICpmb3V0KQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkg IiAnLTEnIEFTIHN1YndhbHJjdnRpbWVvdXQsXG4iKTsKIAorCWlmIChmb3V0LT5yZW1vdGVW ZXJzaW9uID49IDE5MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJ CQkJICIgcy5zdWJob3RpbmRleGVkb25hcHBseSxcbiIpOworCWVsc2UKKwkJYXBwZW5kUFFF eHBCdWZmZXIocXVlcnksCisJCQkJCQkgICIgJyVjJyBBUyBzdWJob3RpbmRleGVkb25hcHBs eSxcbiIsCisJCQkJCQkgIExPR0lDQUxSRVBfSE9UX0lOREVYRURfU1VCU0VUX09OTFkpOwor CiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTkwMDAwKQogCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiBmcy5zcnZuYW1lIEFTIHN1YnNlcnZlcm5hbWVcbiIpOwogCWVs c2UKQEAgLTUzMjUsNiArNTMzNCw3IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91 dCkKIAlpX3N1YmZhaWxvdmVyID0gUFFmbnVtYmVyKHJlcywgInN1YmZhaWxvdmVyIik7CiAJ aV9zdWJyZXRhaW5kZWFkdHVwbGVzID0gUFFmbnVtYmVyKHJlcywgInN1YnJldGFpbmRlYWR0 dXBsZXMiKTsKIAlpX3N1Ym1heHJldGVudGlvbiA9IFBRZm51bWJlcihyZXMsICJzdWJtYXhy ZXRlbnRpb24iKTsKKwlpX3N1YmhvdGluZGV4ZWRvbmFwcGx5ID0gUFFmbnVtYmVyKHJlcywg InN1YmhvdGluZGV4ZWRvbmFwcGx5Iik7CiAJaV9zdWJzZXJ2ZXJuYW1lID0gUFFmbnVtYmVy KHJlcywgInN1YnNlcnZlcm5hbWUiKTsKIAlpX3N1YmNvbm5pbmZvID0gUFFmbnVtYmVyKHJl cywgInN1YmNvbm5pbmZvIik7CiAJaV9zdWJzbG90bmFtZSA9IFBRZm51bWJlcihyZXMsICJz dWJzbG90bmFtZSIpOwpAQCAtNTM2OCw2ICs1Mzc4LDggQEAgZ2V0U3Vic2NyaXB0aW9ucyhB cmNoaXZlICpmb3V0KQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJyZXRh aW5kZWFkdHVwbGVzKSwgInQiKSA9PSAwKTsKIAkJc3ViaW5mb1tpXS5zdWJtYXhyZXRlbnRp b24gPQogCQkJYXRvaShQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJtYXhyZXRlbnRpb24pKTsK KwkJc3ViaW5mb1tpXS5zdWJob3RpbmRleGVkb25hcHBseSA9CisJCQkqKFBRZ2V0dmFsdWUo cmVzLCBpLCBpX3N1YmhvdGluZGV4ZWRvbmFwcGx5KSk7CiAJCWlmIChQUWdldGlzbnVsbChy ZXMsIGksIGlfc3ViY29ubmluZm8pKQogCQkJc3ViaW5mb1tpXS5zdWJjb25uaW5mbyA9IE5V TEw7CiAJCWVsc2UKQEAgLTU2NDUsNiArNTY1NywxMSBAQCBkdW1wU3Vic2NyaXB0aW9uKEFy Y2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHN1 YmluZm8tPnN1Ym1heHJldGVudGlvbikKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIs IG1heF9yZXRlbnRpb25fZHVyYXRpb24gPSAlZCIsIHN1YmluZm8tPnN1Ym1heHJldGVudGlv bik7CiAKKwlpZiAoc3ViaW5mby0+c3ViaG90aW5kZXhlZG9uYXBwbHkgPT0gTE9HSUNBTFJF UF9IT1RfSU5ERVhFRF9PRkYpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBo b3RfaW5kZXhlZF9vbl9hcHBseSA9IG9mZiIpOworCWVsc2UgaWYgKHN1YmluZm8tPnN1Ymhv dGluZGV4ZWRvbmFwcGx5ID09IExPR0lDQUxSRVBfSE9UX0lOREVYRURfQUxXQVlTKQorCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgaG90X2luZGV4ZWRfb25fYXBwbHkgPSBh bHdheXMiKTsKKwogCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3luY2NvbW1pdCwgIm9mZiIp ICE9IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiLCBzeW5jaHJvbm91c19jb21t aXQgPSAlcyIsIGZtdElkKHN1YmluZm8tPnN1YnN5bmNjb21taXQpKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmgKaW5kZXggNWE2NzI2ZDhiMTIuLmUzZTc0MDFkZjA4IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAg LTcyMiw2ICs3MjIsNyBAQCB0eXBlZGVmIHN0cnVjdCBfU3Vic2NyaXB0aW9uSW5mbwogCWJv b2wJCXN1YmZhaWxvdmVyOwogCWJvb2wJCXN1YnJldGFpbmRlYWR0dXBsZXM7CiAJaW50CQkJ c3VibWF4cmV0ZW50aW9uOworCWNoYXIJCXN1YmhvdGluZGV4ZWRvbmFwcGx5OwogCWNoYXIJ ICAgKnN1YnNlcnZlcm5hbWU7CiAJY2hhcgkgICAqc3ViY29ubmluZm87CiAJY2hhcgkgICAq c3Vic2xvdG5hbWU7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3Ny Yy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IGFmMzkzNWIwMDc4Li45MmM3N2Q3YTM1OSAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMKQEAgLTcwOTMsNyArNzA5Myw3IEBAIGRlc2NyaWJlU3Vic2NyaXB0aW9u cyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJcHJpbnRRdWVyeU9wdCBt eW9wdCA9IHBzZXQucG9wdDsKIAlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1u c1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAogCQlmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwK LQlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisJ ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl fTsKIAogCWlmIChwc2V0LnN2ZXJzaW9uIDwgMTAwMDAwKQogCXsKQEAgLTcxNzYsNiArNzE3 NiwxMCBAQCBkZXNjcmliZVN1YnNjcmlwdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9v bCB2ZXJib3NlKQogCQkJCQkJCSAgIiwgc3VibWF4cmV0ZW50aW9uIEFTIFwiJXNcIlxuIiwK IAkJCQkJCQkgIGdldHRleHRfbm9vcCgiTWF4IHJldGVudGlvbiBkdXJhdGlvbiIpKTsKIAor CQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkgICIsIHN1YmhvdGluZGV4ZWRv bmFwcGx5IEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkgIGdldHRleHRfbm9vcCgiSE9ULWluZGV4 ZWQgb24gYXBwbHkiKSk7CisKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJ ICAiLCBzdWJyZXRlbnRpb25hY3RpdmUgQVMgXCIlc1wiXG4iLAogCQkJCQkJCSAgZ2V0dGV4 dF9ub29wKCJSZXRlbnRpb24gYWN0aXZlIikpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9jYXR2ZXJzaW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24u aAppbmRleCBlMDZlYjJhYmJjYi4uY2VmZGNlOWQ5MGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0 dmVyc2lvbi5oCkBAIC01Nyw2ICs1Nyw2IEBACiAgKi8KIAogLyoJCQkJCQkJeXl5eW1tZGRO ICovCi0jZGVmaW5lIENBVEFMT0dfVkVSU0lPTl9OTwkyMDI2MDYzMDIKKyNkZWZpbmUgQ0FU QUxPR19WRVJTSU9OX05PCTIwMjYwNjMwMwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oCmluZGV4IDQ4OTQ0MjAxODg5Li5lYjdlYjE1YTllYSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC05Miw2ICs5MiwxMCBA QCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQp IEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwogCQkJCQkJCQkJICogZXhjZWVkZWQgbWF4 X3JldGVudGlvbl9kdXJhdGlvbiwgd2hlbgogCQkJCQkJCQkJICogZGVmaW5lZCAqLwogCisJ Y2hhcgkJc3ViaG90aW5kZXhlZG9uYXBwbHk7CS8qIFBlci1zdWJzY3JpcHRpb24gZ2F0aW5n IG9mIHRoZSBIT1QtCisJCQkJCQkJCQkJICogaW5kZXhlZCBhcHBseSBwYXRoLiAgU2VlCisJ CQkJCQkJCQkJICogTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF8qIGNvbnN0YW50cy4gKi8KKwog CU9pZAkJCXN1YnNlcnZlciBCS0lfTE9PS1VQX09QVChwZ19mb3JlaWduX3NlcnZlcik7CS8q IElmIGNvbm5lY3Rpb24gdXNlcwogCQkJCQkJCQkJCQkJCQkJCSAqIHNlcnZlciAqLwogCkBA IC0xNjQsNiArMTY4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJCQkJCQkJ CQkgKiBhbmQgdGhlIHJldGVudGlvbiBkdXJhdGlvbiBoYXMgbm90CiAJCQkJCQkJCQkgKiBl eGNlZWRlZCBtYXhfcmV0ZW50aW9uX2R1cmF0aW9uLCB3aGVuCiAJCQkJCQkJCQkgKiBkZWZp bmVkICovCisJY2hhcgkJaG90aW5kZXhlZG1vZGU7IC8qIFBlci1zdWJzY3JpcHRpb24gZ2F0 aW5nIG9mIHRoZSBIT1QtIGluZGV4ZWQKKwkJCQkJCQkJICogYXBwbHkgcGF0aC4gIFNlZSBM T0dJQ0FMUkVQX0hPVF9JTkRFWEVEXyoKKwkJCQkJCQkJICogY29uc3RhbnRzLiAqLwogCWNo YXIJICAgKmNvbm5pbmZvOwkJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hl ciAqLwogCWNoYXIJICAgKnNsb3RuYW1lOwkJLyogTmFtZSBvZiB0aGUgcmVwbGljYXRpb24g c2xvdCAqLwogCWNoYXIJICAgKnN5bmNjb21taXQ7CQkvKiBTeW5jaHJvbm91cyBjb21taXQg c2V0dGluZyBmb3Igd29ya2VyICovCkBAIC0yMTAsNiArMjE3LDI2IEBAIHR5cGVkZWYgc3Ry dWN0IFN1YnNjcmlwdGlvbgogICovCiAjZGVmaW5lIExPR0lDQUxSRVBfU1RSRUFNX1BBUkFM TEVMICdwJwogCisvKgorICogUGVyLXN1YnNjcmlwdGlvbiBnYXRpbmcgb2YgdGhlIEhPVC1p bmRleGVkIGFwcGx5IHBhdGguICBSZWNvcmRlZCBhcyBhCisgKiBzaW5nbGUtY2hhcmFjdGVy IGNvZGUgaW4gcGdfc3Vic2NyaXB0aW9uLnN1YmhvdGluZGV4ZWRvbmFwcGx5LgorICoKKyAq ICAgJ28nIC0tIE9GRjogZm9yY2Ugbm9uLUhPVCBvbiBhcHBseSB3aGVuZXZlciB0aGUgc3Vi c2NyaWJlciBjYXJyaWVzIGFueQorICoJCSAgaW5kZXhlZCBhdHRyaWJ1dGUgYmV5b25kIHRo ZSBwcmltYXJ5IGtleS4gIE1hdGNoZXMgdGhlIGNvbnNlcnZhdGl2ZQorICoJCSAgYmVoYXZp b3VyIGJlZm9yZSB0aGlzIG9wdGlvbiB3YXMgaW50cm9kdWNlZC4KKyAqICAgJ3MnIC0tIFNV QlNFVF9PTkxZIChkZWZhdWx0IGZvciBmcmVzaGx5IGNyZWF0ZWQgc3Vic2NyaXB0aW9ucyk6 IGFsbG93IHRoZQorICoJCSAgSE9ULWluZGV4ZWQgYXBwbHkgcGF0aCB3aGVuIHRoZSBzdWJz Y3JpYmVyJ3MgZnVsbCBpbmRleGVkLWF0dHIgc2V0IGlzCisgKgkJICBhIHN1YnNldCBvZiBp dHMgcHJpbWFyeS1rZXkgYXR0cnMgKHdoaWNoIGNvdmVycyB0aGUgbm8tc2Vjb25kYXJ5LQor ICoJCSAgaW5kZXggY2FzZSBhcyB3ZWxsKS4gIFNhZmUgb24gbWF0Y2hpbmcgc2NoZW1hczsg ZmFsbHMgYmFjayB0byBub24tSE9UCisgKgkJICB3aGVuIHRoZSBzdWJzY3JpYmVyIGFkZHMg aW5kZXhlcyBiZXlvbmQgdGhlIHByaW1hcnkga2V5LgorICogICAnYScgLS0gQUxXQVlTOiB1 bmNvbmRpdGlvbmFsIEhPVC1pbmRleGVkIGVsaWdpYmlsaXR5IG9uIGFwcGx5LiAgVGhlCisg KgkJICBvcGVyYXRvciBhY2NlcHRzIHJlc3BvbnNpYmlsaXR5IGZvciBrZWVwaW5nIHN1YnNj cmliZXIgYW5kIHB1Ymxpc2hlcgorICoJCSAgaW5kZXhlZC1hdHRyIHNldHMgY29tcGF0aWJs ZS4KKyAqLworI2RlZmluZSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX09GRgkJCSdvJworI2Rl ZmluZSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX1NVQlNFVF9PTkxZCSdzJworI2RlZmluZSBM T0dJQ0FMUkVQX0hPVF9JTkRFWEVEX0FMV0FZUwkJJ2EnCisKICNlbmRpZgkJCQkJCQkvKiBF WFBPU0VfVE9fQ0xJRU5UX0NPREUgKi8KIAogZXh0ZXJuIFN1YnNjcmlwdGlvbiAqR2V0U3Vi c2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbHdvcmtlci5oCmluZGV4IDdkNzQ4YTI4ZGE4Li5jOWRmN2QzMmYy ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaApAQCAtMjQs NiArMjQsMTQgQEAgZXh0ZXJuIHZvaWQgU2VxdWVuY2VTeW5jV29ya2VyTWFpbihEYXR1bSBt YWluX2FyZyk7CiBleHRlcm4gYm9vbCBJc0xvZ2ljYWxXb3JrZXIodm9pZCk7CiBleHRlcm4g Ym9vbCBJc0xvZ2ljYWxQYXJhbGxlbEFwcGx5V29ya2VyKHZvaWQpOwogCisvKgorICogQWNj ZXNzb3IgZm9yIHRoZSBjYWNoZWQgaG90X2luZGV4ZWRfb25fYXBwbHkgbW9kZSBvZiB0aGUg Y3VycmVudCBhcHBseQorICogd29ya2VyJ3Mgc3Vic2NyaXB0aW9uLiAgUmV0dXJucyBhIExP R0lDQUxSRVBfSE9UX0lOREVYRURfKiBjb2RlIChzZWUKKyAqIGNhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmgpLiAgTm9uLWFwcGx5IHByb2Nlc3NlcyBhbHdheXMgc2VlCisgKiBMT0dJQ0FM UkVQX0hPVF9JTkRFWEVEX09GRi4KKyAqLworZXh0ZXJuIGNoYXIgR2V0SG90SW5kZXhlZEFw cGx5TW9kZSh2b2lkKTsKKwogZXh0ZXJuIHZvaWQgSGFuZGxlUGFyYWxsZWxBcHBseU1lc3Nh Z2VJbnRlcnJ1cHQodm9pZCk7CiBleHRlcm4gdm9pZCBQcm9jZXNzUGFyYWxsZWxBcHBseU1l c3NhZ2VzKHZvaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlw dGlvbi5vdXQKaW5kZXggOGRiZmFjNjYzMjYuLmViNzkxNWE0M2YzIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CkBAIC0xMzksMTggKzEzOSwx OCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjQgQ09OTkVDVElPTiAn ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVQogV0FSTklORzogIHN1YnNjcmlwdGlv biB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0 ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlv biBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFsdGVyIHRoZSBzdWJzY3Jp cHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCiBcZFJzKyByZWdyZXNzX3Rlc3RzdWI0 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5 IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8 IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24g fCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29u bmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNj cmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190 ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IG5vbmUgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8w MDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAg ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4g YXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBN YXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRp b24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAK Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0KKyByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgbm9uZSAgIHwgdCAgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgcyAgICAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJv dykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjQgU0VUIChvcmlnaW4g PSBhbnkpOwogXGRScysgcmVncmVzc190ZXN0c3ViNAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKLSAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFz ZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWly ZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0 dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5 bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2Vp dmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxs ZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0 ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8 IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAg ICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICAgTmFtZSAgICAgICB8ICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwg U2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8 IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3Vz IGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVv dXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViNCB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAg ICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgMCB8IHMgICAgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAg ICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YjM7CkBAIC0yMzcsMTAgKzIzNywxMCBAQCBBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2Zvb2Jhcic7CiBFUlJPUjogIGlu dmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4OiBtaXNzaW5nICI9IiBhZnRlciAiZm9v YmFyIiBpbiBjb25uZWN0aW9uIGluZm8gc3RyaW5nCiAKIFxkUnMrCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3 b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0 YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBh Y3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8ICAgIERlc2NyaXB0aW9uICAg IAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8 IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAw MDAwMCB8IHRlc3Qgc3Vic2NyaXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3 by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQg cmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4g ZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24g YXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAg ICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAg fCAgICBEZXNjcmlwdGlvbiAgICAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwg ICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8 IHMgICAgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAg ICAgfCAwLzAwMDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRpb24KICgxIHJvdykKIAogQUxURVIg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgUFVCTElDQVRJT04gdGVzdHB1YjIs IHRlc3RwdWIzIFdJVEggKHJlZnJlc2ggPSBmYWxzZSk7CkBAIC0yNDksMTAgKzI0OSwxMCBA QCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0g J25ld25hbWUnKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChw YXNzd29yZF9yZXF1aXJlZCA9IGZhbHNlKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgU0VUIChydW5fYXNfb3duZXIgPSB0cnVlKTsKIFxkUnMrCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8 IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVy IHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlv biB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCAg ICBEZXNjcmlwdGlvbiAgICAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBwYXJhbGxl bCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IGYg ICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwg ZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAg ICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QyIHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNjcmlw dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisg ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1 cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8 IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29u bmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCAgICBE ZXNjcmlwdGlvbiAgICAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIz fSB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgZiAgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwg ZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAwIHwgcyAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IC0x ICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRpb24KICgxIHJv dykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHBhc3N3b3Jk X3JlcXVpcmVkID0gdHJ1ZSk7CkBAIC0yNjgsMTAgKzI2OCwxMCBAQCBFUlJPUjogIHVucmVj b2duaXplZCBzdWJzY3JpcHRpb24gcGFyYW1ldGVyOiAiY3JlYXRlX3Nsb3QiCiAtLSBvawog QUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTS0lQIChsc24gPSAnMC8xMjM0 NScpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAg IFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21t aXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBS dW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMg fCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9u b3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0 aW1lb3V0IHwgIFNraXAgTFNOICB8ICAgIERlc2NyaXB0aW9uICAgIAotLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3Rw dWIzfSB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAtMSAgICAgICAgICAgICAgIHwgMC8w MDAxMjM0NSB8IHRlc3Qgc3Vic2NyaXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwg U2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8 IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3Vz IGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1l b3V0IHwgIFNraXAgTFNOICB8ICAgIERlc2NyaXB0aW9uICAgIAorLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t CisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzICAgICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QyIHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMTIzNDUgfCB0 ZXN0IHN1YnNjcmlwdGlvbgogKDEgcm93KQogCiAtLSBvayAtIHdpdGggbHNuID0gTk9ORQpA QCAtMjgwLDEwICsyODAsMTAgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBTS0lQIChsc24gPSBOT05FKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgU0tJUCAobHNuID0gJzAvMCcpOwogRVJST1I6ICBpbnZhbGlkIFdBTCBsb2NhdGlvbiAo TFNOKTogMC8wCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0g ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1 cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2Vp dmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVzY3JpcHRpb24gICAgCi0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIs dGVzdHB1YjN9IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92 ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0 aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVy IHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVzY3JpcHRpb24gICAgCistLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBwYXJhbGxlbCAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMgICAgICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAw MCB8IHRlc3Qgc3Vic2NyaXB0aW9uCiAoMSByb3cpCiAKIEJFR0lOOwpAQCAtMzE5LDEwICsz MTksMTAgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gU0VUICh3 YWxfcmVjZWl2ZXJfdGltZW91dCA9ICc4MHMnKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWJfZm9vIFNFVCAod2FsX3JlY2VpdmVyX3RpbWVvdXQgPSAnZm9vYmFyJyk7 CiBFUlJPUjogIGludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciAid2FsX3JlY2VpdmVyX3Rp bWVvdXQiOiAiZm9vYmFyIgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCi0gICAgICAgIE5hbWUgICAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFz c3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBS ZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9u IGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAg ICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8ICAgIERlc2NyaXB0aW9u ICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0KLSByZWdyZXNzX3Rlc3RzdWJfZm9vIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8 IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAg ICAgIHwgbG9jYWwgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 MiB8IDgwcyAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRpb24K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAg ICAgIE5hbWUgICAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVk IHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFz ZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWly ZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0 dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkg fCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAg RGVzY3JpcHRpb24gICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3Vi X2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIy LHRlc3RwdWIzfSB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAwIHwgcyAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgbG9jYWwgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0MiB8IDgwcyAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRp b24KICgxIHJvdykKIAogLS0gcmVuYW1lIGJhY2sgdG8ga2VlcCB0aGUgcmVzdCBzaW1wbGUK QEAgLTM1MSwxOSArMzUxLDE5IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJO SU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAog SElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVh dGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQg YWx0ZXIgdGhlIHN1YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0aW9ucy4KIFxkUnMr Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwg U2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8 IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25u aW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2Ny aXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCB0ICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8 IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAw MDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVi bGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93 bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJl dGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFj dGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAg ICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBy ZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgIDAgfCBzICAgICAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiBB TFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoYmluYXJ5ID0gZmFsc2Up OwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9 IE5PTkUpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1l ICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNh dGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/ IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50 aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tp cCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ci0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAg ICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFz ZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWly ZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0 dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkg fCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29u bmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNj cmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMgICAgICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwg CiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKQEAgLTM3 NSwyNyArMzc1LDI3IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENP Tk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJOSU5HOiAg c3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDog IFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhl IHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgYWx0ZXIg dGhlIHN1YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0aW9ucy4KIFxkUnMrCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBP d25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8 IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVy IHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVu dGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAg ICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9u IAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAg ICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8 IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8 IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlv biBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8 IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJl Y2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgIDAgfCBzICAgICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiBBTFRFUiBT VUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwp OwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFp bG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1 cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAg ICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04g IHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJs ZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21t aXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBS dW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMg fCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRl bnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8g ICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlv biAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMgICAgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSBy b3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1p bmcgPSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAo c2xvdF9uYW1lID0gTk9ORSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMK LSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxl ZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1 biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8 IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25v dXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGlt ZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg LTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNz d29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJl dGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhl ZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAg TFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJz Y3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAg ICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg dCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAg fCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgcyAgICAg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAv MDAwMDAwMDAgfCAKICgxIHJvdykKIAogLS0gZmFpbCAtIHB1YmxpY2F0aW9uIGFscmVhZHkg ZXhpc3RzCkBAIC00MTAsMTAgKzQxMCwxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVz c190ZXN0c3ViIEFERCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVm cgogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBBREQgUFVCTElDQVRJT04g dGVzdHB1YjEsIHRlc3RwdWIyIFdJVEggKHJlZnJlc2ggPSBmYWxzZSk7CiBFUlJPUjogIHB1 YmxpY2F0aW9uICJ0ZXN0cHViMSIgaXMgYWxyZWFkeSBpbiBzdWJzY3JpcHRpb24gInJlZ3Jl c3NfdGVzdHN1YiIKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z Ci0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJs ZWQgfCAgICAgICAgIFB1YmxpY2F0aW9uICAgICAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3 b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0 YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBh Y3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHViLHRlc3RwdWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9m ZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAg ICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICAgICAgUHVibGljYXRpb24gICAgICAgICB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFp bG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1 cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2 ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAg ICAgICB8IHt0ZXN0cHViLHRlc3RwdWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IG9mZiAgICAg ICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBm ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgcyAgICAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAw MDAwMDAgfCAKICgxIHJvdykKIAogLS0gZmFpbCAtIHB1YmxpY2F0aW9uIHVzZWQgbW9yZSB0 aGFuIG9uY2UKQEAgLTQyOCwxMCArNDI4LDEwIEBAIEVSUk9SOiAgcHVibGljYXRpb24gInRl c3RwdWIzIiBpcyBub3QgaW4gc3Vic2NyaXB0aW9uICJyZWdyZXNzX3Rlc3RzdWIiCiAtLSBv ayAtIGRlbGV0ZSBwdWJsaWNhdGlvbnMKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVmcmVz aCA9IGZhbHNlKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVi bGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93 bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJl dGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21t aXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwg IFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYg ICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAg ICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28t cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJl cXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRl YWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFw cGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg IENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwg RGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzICAgICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAw MCB8IAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7CkBA IC00NjcsMTkgKzQ2NywxOSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQgogV0FSTklO RzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKIEhJ TlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRl IHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFs dGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCiBcZFJzKwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmln aW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNl cnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBS ZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmlu Zm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlw dGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBm ICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAw MDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5h bWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1Ymxp Y2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2Fi bGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25l cj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRl bnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3Rp dmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IHAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAwIHwgcyAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogLS0g d2UgY2FuIGFsdGVyIHN0cmVhbWluZyB3aGVuIHR3b19waGFzZSBlbmFibGVkCiBBTFRFUiBT VUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gdHJ1ZSk7CiBc ZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3Ig fCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3Zl ciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRp b24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBE ZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAv MDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAg ICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8 IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8 IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBh cyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1h eCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlv biBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAg ICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t CisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAwIHwgcyAgICAgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykK IAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9 IE5PTkUpOwpAQCAtNDg5LDEwICs0ODksMTAgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQ VUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29u bmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVh bGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRp b24sIGFuZCBhbHRlciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRpb25z LgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFp bG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1 cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAg ICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04g IHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJs ZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21t aXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBS dW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMg fCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRl bnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8g ICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlv biAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBwICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMgICAgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSBy b3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25h bWUgPSBOT05FKTsKQEAgLTUwNSwxOCArNTA1LDE4IEBAIENSRUFURSBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCcgUFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90 IGNvbm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBt YW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2Ny aXB0aW9uLCBhbmQgYWx0ZXIgdGhlIHN1YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0 aW9ucy4KIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8 IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlv biBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAg TFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQot IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAg ICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0 aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBF bmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2Ug Y29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVk IHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVw bGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwg UmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3Jp cHRpb24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzICAgICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAog KDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoZGlz YWJsZV9vbl9lcnJvciA9IHRydWUpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBj b21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQg fCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBs ZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNo cm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVy IHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8 IGQgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAg ICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg UGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIg fCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWlu ZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBT a2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBw YXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgICB8IGFueSAg ICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAg ICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMg ICAgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAgLTUyOSwxMCArNTI5LDEwIEBA IENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdh cyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJl cGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNs b3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgYWx0ZXIgdGhlIHN1YnNjcmlwdGlv biB0byByZWZyZXNoIHB1YmxpY2F0aW9ucy4KIFxkUnMrCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2Ny aXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhh c2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVp cmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQg dHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNl aXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxl bCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQg ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwg ZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAg ICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBT dHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdp biB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2Vy dmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhP VC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNv bW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQg fCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAg IHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBh bnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8 ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAg fCBzICAgICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAg ICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CkBAIC01NDksMTAgKzU0OSwx MCBAQCBOT1RJQ0U6ICBtYXhfcmV0ZW50aW9uX2R1cmF0aW9uIGlzIGluZWZmZWN0aXZlIHdo ZW4gcmV0YWluX2RlYWRfdHVwbGVzIGlzIGRpc2FibAogV0FSTklORzogIHN1YnNjcmlwdGlv biB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0 ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlv biBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFsdGVyIHRoZSBzdWJzY3Jp cHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCiBcZFJzKwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCBy ZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBk ZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZl IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwg UmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFy YWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAg ICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIDEwMDAgfCBmICAg ICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5 IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8 IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24g fCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91 cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1l b3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAg ICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAx MDAwIHwgcyAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAg ICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogLS0gZmFpbCAtIG1heF9yZXRl bnRpb25fZHVyYXRpb24gbXVzdCBiZSBub24tbmVnYXRpdmUKQEAgLTU2MSwxMCArNTYxLDEw IEBAIEVSUk9SOiAgbWF4X3JldGVudGlvbl9kdXJhdGlvbiBjYW5ub3QgYmUgbmVnYXRpdmUK IC0tIG9rCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAobWF4X3Jl dGVudGlvbl9kdXJhdGlvbiA9IDApOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBj b21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQg fCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBs ZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNo cm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVy IHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAg ICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg UGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIg fCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWlu ZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBT a2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBw YXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAg ICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMg ICAgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNv bi5idWlsZAppbmRleCBlNzFlOTVjNjI5Ny4uZjdlZTViODQ0OWEgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vbWVzb24uYnVpbGQKQEAgLTQ4LDYgKzQ4LDggQEAgdGVzdHMgKz0gewogICAgICAg J3QvMDM2X3NlcXVlbmNlcy5wbCcsCiAgICAgICAndC8wMzdfZXhjZXB0LnBsJywKICAgICAg ICd0LzAzOF93YWxzbmRfc2h1dGRvd25fdGltZW91dC5wbCcsCisgICAgICAndC8wMzlfaG90 X2luZGV4ZWRfYXBwbHkucGwnLAorICAgICAgJ3QvMDQwX2hvdF9pbmRleGVkX3JlcGxpY2Ff aWRlbnRpdHkucGwnLAogICAgICAgJ3QvMTAwX2J1Z3MucGwnLAogICAgIF0sCiAgIH0sCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzlfaG90X2luZGV4ZWRfYXBw bHkucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzlfaG90X2luZGV4ZWRfYXBwbHku cGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZlMTA4ZTZmMDgx Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM5X2hvdF9p bmRleGVkX2FwcGx5LnBsCkBAIC0wLDAgKzEsNDE2IEBACisKKyMgQ29weXJpZ2h0IChjKSAy MDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFBlci1zdWJz Y3JpcHRpb24gaG90X2luZGV4ZWRfb25fYXBwbHkgb3B0aW9uOiBwYXJzZXIsIGNhdGFsb2cg cm91bmQtdHJpcCwKKyMgQUxURVIgYmVoYXZpb3VyLCBhbmQgYXBwbHktcGF0aCBnYXRpbmcg dW5kZXIgZWFjaCBvZiB0aGUgdGhyZWUgbW9kZXMuCit1c2Ugc3RyaWN0OwordXNlIHdhcm5p bmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1 c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKK3VzZSBUaW1l OjpIaVJlcyBxdyh1c2xlZXApOworCitteSAkcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRwdWJsaXNoZXItPmluaXQoYWxsb3dz X3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJHB1Ymxpc2hlci0+c3RhcnQ7CisKK215ICRz dWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVy Jyk7Ciskc3Vic2NyaWJlci0+aW5pdDsKKyRzdWJzY3JpYmVyLT5zdGFydDsKKworbXkgJHB1 Yl9jb25uaW5mbyA9ICRwdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7 CisKKyMgLS0tIFNjaGVtYSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIHRhYl9leHRyYSBoYXMgYW4gZXh0cmEg YnRyZWUgaW5kZXggYmV5b25kIHRoZSBwcmltYXJ5IGtleSBvbiB0aGUKKyMgc3Vic2NyaWJl ciBzaWRlOyB0aGF0IGlzIHRoZSBzY2hlbWEgc2hhcGUgdGhhdCBzdWJzZXRfb25seSBtdXN0 IGRlbW90ZQorIyB0byBub24tSE9UIG9uIGFwcGx5IGJ1dCBhbHdheXMgbXVzdCBsZXQgdGhy b3VnaC4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7Q1JFQVRFIFRB QkxFIHRhYl9leHRyYSAoaWQgaW50IFBSSU1BUlkgS0VZLCBwYXlsb2FkIGludCwgdGFnIHRl eHQpfSk7CisKKyMgdGFiX3BrIGhhcyBvbmx5IHRoZSBwcmltYXJ5IGtleTsgaW5kZXhlZC1h dHRyIHNldCBpcyBhIHN1YnNldCBvZiB0aGUgUEsKKyMgYXR0cnMsIHNvIHN1YnNldF9vbmx5 IGFuZCBhbHdheXMgc2hvdWxkIGJvdGggYWxsb3cgSE9ULWluZGV4ZWQgb24gYXBwbHkuCisk cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0NSRUFURSBUQUJMRSB0YWJf cGsgKGlkIGludCBQUklNQVJZIEtFWSwgcGF5bG9hZCBpbnQpfSk7CisKKyRwdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7Q1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1Ig VEFCTEUgdGFiX2V4dHJhLCB0YWJfcGt9KTsKKworIyBTdWJzY3JpYmVyIG1pcnJvcnMgYm90 aCB0YWJsZXMuICB0YWJfZXh0cmEgaGFzIHRoZSBleHRyYSBzZWNvbmRhcnkgaW5kZXgKKyMg b25seSBvbiB0aGUgc3Vic2NyaWJlciwgd2hpY2ggaXMgdGhlIHNjaGVtYS1kaXZlcmdlbmNl IGNhc2UgdGhlIG9wdGlvbgorIyBnYXRlcy4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwlxe0NSRUFURSBUQUJMRSB0YWJfZXh0cmEgKGlkIGludCBQUklNQVJZIEtF WSwgcGF5bG9hZCBpbnQsIHRhZyB0ZXh0KX0pOworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXF7Q1JFQVRFIElOREVYIHRhYl9leHRyYV9wYXlsb2FkX2lkeCBPTiB0 YWJfZXh0cmEocGF5bG9hZCl9KTsKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwlxe0NSRUFURSBUQUJMRSB0YWJfcGsgKGlkIGludCBQUklNQVJZIEtFWSwgcGF5bG9h ZCBpbnQpfSk7CisKKyMgLS0tIFBhcnNlciAvIGNhdGFsb2cgY2hlY2tzIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVmYXVsdCBvbiBmcmVz aCBzdWJzY3JpcHRpb24gaXMgJ3MnIChzdWJzZXRfb25seSkuCiskc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViX2RlZmF1 bHQKKwkgIENPTk5FQ1RJT04gJyRwdWJfY29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIK KwkgIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc2xvdF9uYW1lID0gTk9ORSwgZW5hYmxlZCA9 IGZhbHNlLAorCSAgICAgICAgY3JlYXRlX3Nsb3QgPSBmYWxzZSk7Cit9KTsKK2lzKCAkc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIHN1YmhvdGluZGV4 ZWRvbmFwcGx5IEZST00gcGdfc3Vic2NyaXB0aW9uCisJCSAgV0hFUkUgc3VibmFtZSA9ICdz dWJfZGVmYXVsdCd9KSwKKwkncycsCisJJ2ZyZXNoIHN1YnNjcmlwdGlvbiBkZWZhdWx0cyB0 byBzdWJzZXRfb25seScpOworCisjIEV4cGxpY2l0ICdhbHdheXMnIGlzIHN0b3JlZCBhcyAn YScuCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBT VUJTQ1JJUFRJT04gc3ViX2Fsd2F5c19wCisJICBDT05ORUNUSU9OICckcHViX2Nvbm5pbmZv JworCSAgUFVCTElDQVRJT04gcHViCisJICBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHNsb3Rf bmFtZSA9IE5PTkUsIGVuYWJsZWQgPSBmYWxzZSwKKwkgICAgICAgIGNyZWF0ZV9zbG90ID0g ZmFsc2UsIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJ2Fsd2F5cycpOworfSk7CitpcyggJHN1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBzdWJob3RpbmRl eGVkb25hcHBseSBGUk9NIHBnX3N1YnNjcmlwdGlvbgorCQkgIFdIRVJFIHN1Ym5hbWUgPSAn c3ViX2Fsd2F5c19wJ30pLAorCSdhJywKKwknQ1JFQVRFIHdpdGggaG90X2luZGV4ZWRfb25f YXBwbHkgPSBhbHdheXMgc3RvcmVzIGEnKTsKKworIyBBTFRFUiBTVUJTQ1JJUFRJT04gU0VU IHVwZGF0ZXMgdGhlIGNvbHVtbi4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwlxe0FMVEVSIFNVQlNDUklQVElPTiBzdWJfZGVmYXVsdCBTRVQgKGhvdF9pbmRleGVk X29uX2FwcGx5ID0gJ29mZicpfSk7CitpcyggJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQlxe1NFTEVDVCBzdWJob3RpbmRleGVkb25hcHBseSBGUk9NIHBnX3N1YnNj cmlwdGlvbgorCQkgIFdIRVJFIHN1Ym5hbWUgPSAnc3ViX2RlZmF1bHQnfSksCisJJ28nLAor CSdBTFRFUiBTVUJTQ1JJUFRJT04gU0VUIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gb2ZmIHN0 b3JlcyBvJyk7CisKKyMgVW5rbm93biB2YWx1ZXMgYXJlIHJlamVjdGVkLgorbXkgKCRyZXQs ICRzdGRvdXQsICRzdGRlcnIpID0gJHN1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywgcXF7 CisJQ1JFQVRFIFNVQlNDUklQVElPTiBzdWJfYm9ndXMKKwkgIENPTk5FQ1RJT04gJyRwdWJf Y29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIKKwkgIFdJVEggKGNvbm5lY3QgPSBmYWxz ZSwgc2xvdF9uYW1lID0gTk9ORSwgZW5hYmxlZCA9IGZhbHNlLAorCSAgICAgICAgY3JlYXRl X3Nsb3QgPSBmYWxzZSwgaG90X2luZGV4ZWRfb25fYXBwbHkgPSAnYm9ndXMnKTsKK30pOwor aXNudCgkcmV0LCAwLCAnYm9ndXMgaG90X2luZGV4ZWRfb25fYXBwbHkgdmFsdWUgaXMgcmVq ZWN0ZWQnKTsKK2xpa2UoJHN0ZGVyciwKKwkgcXIvdW5yZWNvZ25pemVkIHZhbHVlIGZvciBz dWJzY3JpcHRpb24gcGFyYW1ldGVyICJob3RfaW5kZXhlZF9vbl9hcHBseSIvLAorCSAnYm9n dXMgaG90X2luZGV4ZWRfb25fYXBwbHkgdmFsdWUgcmVwb3J0cyB0aGUgZXhwZWN0ZWQgZXJy b3InKTsKKworIyBEcm9wIHRoZSBwbGFjZWhvbGRlciBzdWJzY3JpcHRpb25zIHNvIHdlIGNh biByZWJ1aWxkIHdpdGggcmVhbCBzbG90cy4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHN1Yl9kZWZhdWx0Jyk7Ciskc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiBzdWJfYWx3YXlz X3AnKTsKKworIyAtLS0gQXBwbHktcGF0aCBiZWhhdmlvdXIgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcmUtcG9wdWxhdGUgYm90aCBz aWRlcyBpZGVudGljYWxseSBzbyB3ZSBjYW4gdXNlIGNvcHlfZGF0YT1mYWxzZSBhbmQKKyMg YXZvaWQgZHVwbGljYXRlLWtleSBjb25mbGljdHMgd2hlbiB3ZSByZWNyZWF0ZSBzdWJzY3Jp cHRpb25zIGFjcm9zcyB0aGUKKyMgdGhyZWUgdGVzdCBjYXNlcy4gIFdlIHVwZGF0ZSBub24t b3ZlcmxhcHBpbmcgaWQgcmFuZ2VzIHBlciBjYXNlIHNvIHRoZQorIyBwZ19zdGF0IGNvdW50 ZXJzIHNlZ21lbnQgY2xlYW5seS4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCXF7SU5TRVJUIElOVE8gdGFiX2V4dHJhCisJICBTRUxFQ1QgZywgMCwgJ3QnIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgZ30pOworJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0YWJfcGsKKwkgIFNFTEVDVCBnLCAwIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgZ30pOworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXF7SU5TRVJUIElOVE8gdGFiX2V4dHJhCisJICBTRUxFQ1QgZywgMCwg J3QnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgZ30pOworJHN1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7SU5TRVJUIElOVE8gdGFiX3BrCisJICBTRUxFQ1Qg ZywgMCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIGd9KTsKKworIyBIZWxwZXI6IHJl YWQgY291bnRlcnMgYW5kIHBvbGwgdXAgdG8gMTAgcyBmb3Igbl90dXBfdXBkIHRvIHJlYWNo IGEKKyMgbWluaW11bSB0YXJnZXQgdmFsdWUgKHRoZSBhcHBseSB3b3JrZXIgZmx1c2hlcyBw Z3N0YXQgYXN5bmNocm9ub3VzbHkpLgorc3ViIHBvbGxfY291bnRlcnMKK3sKKwlteSAoJG5v ZGUsICR0YWJsZSwgJHVwZF90YXJnZXQpID0gQF87CisKKwlteSAkZGVhZGxpbmUgPSB0aW1l KCkgKyAxMDsKKwlteSAkcm93ID0gJyc7CisJd2hpbGUgKDEpCisJeworCQkkcm93ID0gJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkJcXF7U0VMRUNUIGNvYWxlc2NlKG5fdHVw X3VwZCwgMCksCisJCQkgICAgICAgICAgY29hbGVzY2Uobl90dXBfaG90X3VwZCwgMCksCisJ CQkgICAgICAgICAgY29hbGVzY2Uobl90dXBfaG90X2luZGV4ZWRfdXBkLCAwKQorCQkJICAg RlJPTSBwZ19zdGF0X3VzZXJfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAnJHRhYmxlJ30pOwor CQlteSAoJHVwZCkgPSBzcGxpdCAvXHwvLCAkcm93OworCQlsYXN0IGlmICgkdXBkICsgMCkg Pj0gJHVwZF90YXJnZXQgfHwgdGltZSgpID49ICRkZWFkbGluZTsKKwkJdXNsZWVwKDEwMF8w MDApOworCX0KKwlteSAoJHVwZCwgJGhvdCwgJGhvdF9pZHgpID0gc3BsaXQgL1x8LywgJHJv dzsKKwlyZXR1cm4gKCR1cGQgKyAwLCAkaG90ICsgMCwgJGhvdF9pZHggKyAwKTsKK30KKwor IyBIZWxwZXI6IGZpcmUgVVBEQVRFcyB0aGF0IHRvdWNoIHRoZSBpbmRleGVkIHBheWxvYWQg Y29sdW1uIG9uIGEgZ2l2ZW4KKyMgaWQgcmFuZ2UgYW5kIHJldHVybiB0aGUgZGVsdGFzIGlu IChuX3R1cF91cGQsIG5fdHVwX2hvdF91cGQsCisjIG5fdHVwX2hvdF9pbmRleGVkX3VwZCkg b24gdGhlIHN1YnNjcmliZXIuCitzdWIgYXBwbHlfdXBkYXRlc19hbmRfcmVhZAoreworCW15 ICgkdGFibGUsICRzdWJfbmFtZSwgJGlkX2xvLCAkaWRfaGkpID0gQF87CisKKwlteSAoJHVw ZDAsICRob3QwLCAkaG90aWR4MCkgPQorCSAgcG9sbF9jb3VudGVycygkc3Vic2NyaWJlciwg JHRhYmxlLCAwKTsKKworCWZvciBteSAkaSAoJGlkX2xvIC4uICRpZF9oaSkKKwl7CisJCSRw dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkJIlVQREFURSAkdGFibGUgU0VU IHBheWxvYWQgPSBwYXlsb2FkICsgMSBXSEVSRSBpZCA9ICRpIik7CisJfQorCSRwdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJHN1Yl9uYW1lKTsKKworCW15ICRuID0gJGlkX2hpIC0g JGlkX2xvICsgMTsKKwlteSAoJHVwZDEsICRob3QxLCAkaG90aWR4MSkgPQorCSAgcG9sbF9j b3VudGVycygkc3Vic2NyaWJlciwgJHRhYmxlLCAkdXBkMCArICRuKTsKKwlub3RlKCIkdGFi bGUgJHN1Yl9uYW1lICRpZF9sby4uJGlkX2hpOiBkbl91cGQ9IgorCQkgLiAoJHVwZDEgLSAk dXBkMCkgLiAiIGRob3Q9IiAuICgkaG90MSAtICRob3QwKQorCQkgLiAiIGRob3RpZHg9IiAu ICgkaG90aWR4MSAtICRob3RpZHgwKSk7CisJcmV0dXJuICgkdXBkMSAtICR1cGQwLCAkaG90 MSAtICRob3QwLCAkaG90aWR4MSAtICRob3RpZHgwKTsKK30KKworIyBDYXNlIDE6IG9mZiwg c3Vic2NyaWJlci1vbmx5IHNlY29uZGFyeSBpbmRleC4gIEhPVC1pbmRleGVkIG11c3QgYmUK KyMgc3VwcHJlc3NlZCBvbiB0YWJfZXh0cmEuICBQbGFpbiBIT1QgdXBkYXRlcyBhbHNvIHN0 YXkgemVybyBiZWNhdXNlIGV2ZXJ5CisjIFVQREFURSB0b3VjaGVzIGBwYXlsb2FkYCB3aGlj aCBpcyBpbmRleGVkIG9uIHRoZSBzdWJzY3JpYmVyLgorJHN1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9vZmYKKwkgIENP Tk5FQ1RJT04gJyRwdWJfY29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIKKwkgIFdJVEgg KHNsb3RfbmFtZSA9ICdzdWJfb2ZmX3Nsb3QnLCBjcmVhdGVfc2xvdCA9IHRydWUsCisJICAg ICAgICBob3RfaW5kZXhlZF9vbl9hcHBseSA9ICdvZmYnLCBjb3B5X2RhdGEgPSBmYWxzZSk7 Cit9KTsKKyRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1Yl9vZmYnKTsKKworbXkg KHVuZGVmLCB1bmRlZiwgJG9mZl9leHRyYV9ob3RpZHgpID0KKyAgYXBwbHlfdXBkYXRlc19h bmRfcmVhZCgndGFiX2V4dHJhJywgJ3N1Yl9vZmYnLCAxLCAyMCk7Citpcygkb2ZmX2V4dHJh X2hvdGlkeCwgMCwKKyAgICdob3RfaW5kZXhlZF9vbl9hcHBseSA9IG9mZjogbm8gSE9ULWlu ZGV4ZWQgdXBkYXRlcyBvbiB0YWJfZXh0cmEnKTsKKworJHN1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gc3ViX29mZicpOworCisjIENhc2Ug Mjogc3Vic2V0X29ubHkuICBPbiB0YWJfcGsgKG5vIHNlY29uZGFyeSBpbmRleCwgaW5kZXhl ZC1hdHRyIHNldCBpcworIyBhIHN1YnNldCBvZiBQSyBhdHRycyksIGNsYXNzaWMgSE9UIG11 c3QgZmlyZSBiZWNhdXNlIGBwYXlsb2FkYCBpcyBub3QKKyMgaW5kZXhlZCB0aGVyZS4gIE9u IHRhYl9leHRyYSAoc3Vic2NyaWJlcidzIGBwYXlsb2FkYCBpbmRleCBpcyBOT1QgY292ZXJl ZAorIyBieSB0aGUgUEspLCB0aGUgYXBwbHkgd29ya2VyIG11c3QgZGVtb3RlIHRvIG5vbi1I T1QganVzdCBsaWtlICdvZmYnLgorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9zdWJzZXQKKwkgIENPTk5FQ1RJT04g JyRwdWJfY29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIKKwkgIFdJVEggKHNsb3RfbmFt ZSA9ICdzdWJfc3Vic2V0X3Nsb3QnLCBjcmVhdGVfc2xvdCA9IHRydWUsCisJICAgICAgICBo b3RfaW5kZXhlZF9vbl9hcHBseSA9ICdzdWJzZXRfb25seScsIGNvcHlfZGF0YSA9IGZhbHNl KTsKK30pOworJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViX3N1YnNldCcpOwor CitteSAodW5kZWYsICRzc19wa19ob3QsICRzc19wa19ob3RpZHgpID0KKyAgYXBwbHlfdXBk YXRlc19hbmRfcmVhZCgndGFiX3BrJywgJ3N1Yl9zdWJzZXQnLCAxLCAyMCk7CitjbXBfb2so JHNzX3BrX2hvdCwgJz4nLCAwLAorCSAgICdob3RfaW5kZXhlZF9vbl9hcHBseSA9IHN1YnNl dF9vbmx5OiBjbGFzc2ljIEhPVCBmaXJlcyBvbiB0YWJfcGsnKTsKKworbXkgKHVuZGVmLCB1 bmRlZiwgJHNzX2V4dHJhX2hvdGlkeCkgPQorICBhcHBseV91cGRhdGVzX2FuZF9yZWFkKCd0 YWJfZXh0cmEnLCAnc3ViX3N1YnNldCcsIDIxLCA0MCk7Citpcygkc3NfZXh0cmFfaG90aWR4 LCAwLAorICAgJ2hvdF9pbmRleGVkX29uX2FwcGx5ID0gc3Vic2V0X29ubHk6IG5vIEhPVC1p bmRleGVkIG9uIHRhYl9leHRyYScpOworCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiBzdWJfc3Vic2V0Jyk7CisKKyMgQ2FzZSAzOiBh bHdheXMuICBVbmNvbmRpdGlvbmFsIEhPVC1pbmRleGVkIGVsaWdpYmlsaXR5LiAgT24gdGFi X2V4dHJhCisjIHVwZGF0ZXMgdG91Y2hpbmcgdGhlIGluZGV4ZWQgcGF5bG9hZCBjb2x1bW4g c2hvdWxkIG5vdyBydW4gb24gdGhlCisjIEhPVC1pbmRleGVkIHBhdGg6IG5fdHVwX2hvdF9p bmRleGVkX3VwZCBtdXN0IGluY3JlYXNlLgorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9hbHdheXMKKwkgIENPTk5F Q1RJT04gJyRwdWJfY29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIKKwkgIFdJVEggKHNs b3RfbmFtZSA9ICdzdWJfYWx3YXlzX3Nsb3QnLCBjcmVhdGVfc2xvdCA9IHRydWUsCisJICAg ICAgICBob3RfaW5kZXhlZF9vbl9hcHBseSA9ICdhbHdheXMnLCBjb3B5X2RhdGEgPSBmYWxz ZSk7Cit9KTsKKyRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1Yl9hbHdheXMnKTsK KworbXkgKHVuZGVmLCB1bmRlZiwgJGFsX2V4dHJhX2hvdGlkeCkgPQorICBhcHBseV91cGRh dGVzX2FuZF9yZWFkKCd0YWJfZXh0cmEnLCAnc3ViX2Fsd2F5cycsIDQxLCA4MCk7CitjbXBf b2soJGFsX2V4dHJhX2hvdGlkeCwgJz4nLCAwLAorCSAgICdob3RfaW5kZXhlZF9vbl9hcHBs eSA9IGFsd2F5czogSE9ULWluZGV4ZWQgZmlyZXMgb24gdGFiX2V4dHJhJyk7CisKKyMgQUxU RVIgYmFjayB0byBvZmYgYW5kIHZlcmlmeSB0aGUgYXBwbHkgd29ya2VyIHBpY2tzIHVwIHRo ZSBuZXcgbW9kZS4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0FM VEVSIFNVQlNDUklQVElPTiBzdWJfYWx3YXlzIFNFVCAoaG90X2luZGV4ZWRfb25fYXBwbHkg PSAnb2ZmJyl9KTsKK2lzKCAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CXF7U0VMRUNUIHN1YmhvdGluZGV4ZWRvbmFwcGx5IEZST00gcGdfc3Vic2NyaXB0aW9uCisJ CSAgV0hFUkUgc3VibmFtZSA9ICdzdWJfYWx3YXlzJ30pLAorCSdvJywKKwknQUxURVIgc3Vi X2Fsd2F5cyBTRVQgaG90X2luZGV4ZWRfb25fYXBwbHkgPSBvZmYgcGVyc2lzdHMnKTsKKwor IyBEcml2ZSBhbm90aGVyIGJhdGNoIG9mIHVwZGF0ZXMgYW5kIGNvbmZpcm0gbl90dXBfaG90 X2luZGV4ZWRfdXBkIGRvZXMgTk9UCisjIGFkdmFuY2UgYWZ0ZXIgdGhlIHdvcmtlciByZXJl YWRzIHRoZSBjYXRhbG9nLgorbXkgKHVuZGVmLCB1bmRlZiwgJHBvc3RfYWx0ZXJfaG90aWR4 KSA9CisgIGFwcGx5X3VwZGF0ZXNfYW5kX3JlYWQoJ3RhYl9leHRyYScsICdzdWJfYWx3YXlz JywgODEsIDEwMCk7CitpcygkcG9zdF9hbHRlcl9ob3RpZHgsIDAsCisgICAnQUxURVIgdG8g b2ZmIGZyZWV6ZXMgbl90dXBfaG90X2luZGV4ZWRfdXBkIGFmdGVyIHdvcmtlciByZXJlYWQn KTsKKworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJ UFRJT04gc3ViX2Fsd2F5cycpOworCisjIC0tLSBTdWJzY3JpYmVyIElOU0VSVC1hZnRlci1y ZXBsaWNhdGVkLVVQREFURSBwZXIgbW9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjIFZl cmlmeSB0aGF0IGEgc3Vic2NyaWJlciBJTlNFUlQgdXNpbmcgdGhlIE9MRCB2YWx1ZSBvZiBh IHJlcGxpY2F0ZWQKKyMgVVBEQVRFJ3MgaW5kZXhlZCBjb2x1bW4gc3VjY2VlZHMgd2l0aG91 dCBhIHNwdXJpb3VzIHVuaXF1ZS12aW9sYXRpb24KKyMgdW5kZXIgZWFjaCBhcHBseSBtb2Rl LiAgVXNlIGEgZGVkaWNhdGVkIHRhYmxlICh0YWJfdWspIHNvIHRoZSB1bmlxdWUKKyMgY29u c3RyYWludCBjYW4gYmUgZGVmaW5lZCB1cC1mcm9udCBhbmQgdGhlIHRlc3QgZG9lcyBub3Qg Y29sbGlkZSB3aXRoCisjIHByZS1wb3B1bGF0ZWQgcm93cyBmcm9tIHRoZSBhcHBseS1wYXRo IHNjZW5hcmlvcyBhYm92ZS4KKyMKKyMgUHVibGlzaGVyIHVwZGF0ZXMgcm93ICR1cGRfaWQg Y2hhbmdpbmcgcGF5bG9hZCBmcm9tIDAgdG8gOTk5LiAgVGhlCisjIHN1YnNjcmliZXIgdGhl biBpbnNlcnRzIGEgZnJlc2ggcm93IHdpdGggcGF5bG9hZD0wICh0aGUgcHJlLXVwZGF0ZQor IyB2YWx1ZSkuICBVbmRlciBhbGwgdGhyZWUgbW9kZXMgX2J0X2NoZWNrX3VuaXF1ZSdzIHJl Y2hlY2sgb2YgdGhlCisjIGNvbmZsaWN0aW5nIHR1cGxlJ3MgbGl2ZSBrZXkgbXVzdCByZWNv Z25pemUgdGhlIHN0YWxlIGxlYWYgZW50cnkgcG9pbnRpbmcKKyMgYXQgdGhlIGNoYWluIHJv b3QsIHNvIHRoZSBJTlNFUlQgc3VjY2VlZHMuCisKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXF7Q1JFQVRFIFRBQkxFIHRhYl91ayAoCisJICAgIGlkICAgICAgaW50 IFBSSU1BUlkgS0VZLAorCSAgICBwYXlsb2FkIGludCwKKwkgICAgdGFnICAgICB0ZXh0LAor CSAgICBVTklRVUUgKHBheWxvYWQsIHRhZykpfSk7Ciskc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgVEFCTEUgdGFiX3VrICgKKwkgICAgaWQgICAgICBp bnQgUFJJTUFSWSBLRVksCisJICAgIHBheWxvYWQgaW50LAorCSAgICB0YWcgICAgIHRleHQs CisJICAgIFVOSVFVRSAocGF5bG9hZCwgdGFnKSl9KTsKKyRwdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCXF7QUxURVIgUFVCTElDQVRJT04gcHViIEFERCBUQUJMRSB0YWJf dWt9KTsKKworZm9yIG15ICRtb2RlICgnb2ZmJywgJ3N1YnNldF9vbmx5JywgJ2Fsd2F5cycp Cit7CisJbXkgJGJhc2VfaWQgPSAoJG1vZGUgZXEgJ29mZicpID8gMQorCSAgICAgICAgICAg ICAgOiAoJG1vZGUgZXEgJ3N1YnNldF9vbmx5JykgPyAxMDAgOiAyMDA7CisJbXkgJHVwZF9p ZCAgPSAkYmFzZV9pZCArIDE7CisJbXkgJGluc19pZCAgPSAkYmFzZV9pZCArIDI7CisKKwkj IFNlZWQgYSByb3cgdGhhdCB3ZSB3aWxsIFVQREFURSBvbiB0aGUgcHVibGlzaGVyIChwYXls b2FkIHN0YXJ0cyBhdCAwKSwKKwkjIGFuZCBkcmFpbiB0aGUgYXBwbHkgZm9yIGl0IGJlZm9y ZSBjaGFuZ2luZyBwYXlsb2FkLgorCSRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiSU5TRVJUIElOVE8gdGFiX3VrIFZBTFVFUyAoJHVwZF9pZCwgMCwgJ21vZGVfJG1v ZGUnKSIpOworCisJJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwkJ Q1JFQVRFIFNVQlNDUklQVElPTiBzdWJfdWtfJG1vZGUKKwkJICBDT05ORUNUSU9OICckcHVi X2Nvbm5pbmZvJworCQkgIFBVQkxJQ0FUSU9OIHB1YgorCQkgIFdJVEggKHNsb3RfbmFtZSA9 ICdzdWJfdWtfJHttb2RlfV9zbG90JywgY3JlYXRlX3Nsb3QgPSB0cnVlLAorCQkgICAgICAg IGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJyRtb2RlJywgY29weV9kYXRhID0gdHJ1ZSk7CisJ fSk7CisJJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgic3ViX3VrXyRtb2RlIik7CisK KwkjIFB1Ymxpc2hlciBVUERBVEU6IHBheWxvYWQgMCAtPiA5OTkuCisJJHB1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGFiX3VrIFNFVCBwYXlsb2FkID0g OTk5IFdIRVJFIGlkID0gJHVwZF9pZCIpOworCSRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoInN1Yl91a18kbW9kZSIpOworCisJIyBTdWJzY3JpYmVyIElOU0VSVCB3aXRoIHRoZSBP TEQgcGF5bG9hZCB2YWx1ZSBidXQgYSB1bmlxdWUgdGFnLiAgVGhlCisJIyBleGlzdGluZyBj aGFpbiBsZWFmIHdpdGgga2V5ICgwLCAnbW9kZV8kbW9kZScpIGlzIG5vdyBzdGFsZTogdGhl CisJIyBsaXZlIHR1cGxlIGF0IHRoZSBjaGFpbiByb290IGhhcyBwYXlsb2FkPTk5OS4gIF9i dF9jaGVja191bmlxdWUKKwkjIHJlY2hlY2tzIHRoZSBjb25mbGljdGluZyB0dXBsZSdzIGxp dmUga2V5IGFuZCByZWNvZ25pemVzIHRoZSBzdGFsZQorCSMgbGVhZiwgYWxsb3dpbmcgdGhp cyBJTlNFUlQgdG8gc3VjY2VlZC4KKwlteSAoJHIsICRvdXQsICRlcnIpID0gJHN1YnNjcmli ZXItPnBzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRhYl91ayBWQUxVRVMgKCRp bnNfaWQsIDAsICdmcmVzaF8kbW9kZScpIik7CisJaXMoJHIsIDAsCisJICAgImhvdF9pbmRl eGVkX29uX2FwcGx5ID0gJG1vZGU6ICIKKwkgICAuICJzdWJzY3JpYmVyIElOU0VSVCB3aXRo IG9sZCBwYXlsb2FkIHZhbHVlIHN1Y2NlZWRzIik7CisJbGlrZSgkZXJyLCBxci9eJC8sCisJ CSAiaG90X2luZGV4ZWRfb25fYXBwbHkgPSAkbW9kZTogIgorCQkgLiAiSU5TRVJUIGRpZCBu b3QgcmFpc2UgYW4gZXJyb3IiKTsKKworCSRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIkRST1AgU1VCU0NSSVBUSU9OIHN1Yl91a18kbW9kZSIpOworfQorCisjIC0t LSBhbHdheXMtbW9kZSBzYWZldHkgd2l0aCBpbmRleGVkIGF0dHJzIGJleW9uZCB0aGUgcmVw bGljYSBpZGVudGl0eSAtLS0tLQorIworIyBBbWl0J3MgY29ybmVyOiB1bmRlciBob3RfaW5k ZXhlZF9vbl9hcHBseSA9ICdhbHdheXMnIHRoZSBhcHBseSB3b3JrZXIgbWF5CisjIHJ1biBh IEhPVC1pbmRleGVkIHVwZGF0ZSBldmVuIHdoZW4gdGhlIHRhYmxlIGhhcyBhbiBpbmRleGVk IGF0dHJpYnV0ZSB0aGF0CisjIGlzIE5PVCBjb3ZlcmVkIGJ5IHRoZSByZXBsaWNhIGlkZW50 aXR5LiAgVGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgbWVjaGFuaXNtCisjIG11c3Qgc3RpbGwg bGV0IHRoZSBhcHBseSB3b3JrZXIncyBsYXRlciByZXBsaWNhLWlkZW50aXR5IGxvb2t1cHMg ZmluZCB0aGUKKyMgcm93LCBhbmQgREVMRVRFL1VQREFURSByZXBsaWNhdGlvbiBtdXN0IGNv bnZlcmdlLCBpbmNsdWRpbmcgd2hlbiB0aGUKKyMgcmVwbGljYS1pZGVudGl0eSBjb2x1bW4g aXRzZWxmIGlzIGN5Y2xlZCBhd2F5IGFuZCBiYWNrIChBQkEpLgorIworIyB0YWJfcmk6IHJl cGxpY2EgaWRlbnRpdHkgaXMgYSBVTklRVUUgaW5kZXggb24gcmlkIChub3QgdGhlIFBLKSwg YW5kIHRoZXJlCisjIGlzIGFuIGV4dHJhIHNlY29uZGFyeSBpbmRleCBvbiBwYXlsb2FkIHRo YXQgaXMgTk9UIHBhcnQgb2YgdGhlIHJlcGxpY2EKKyMgaWRlbnRpdHkuICBTbyBhIHBheWxv YWQgY2hhbmdlIG1ha2VzIHRoZSBwYXlsb2FkIGxlYWYgc3RhbGUsIGFuZCBhbiByaWQKKyMg QUJBIGN5Y2xlIG1ha2VzIHRoZSByaWQgKHJlcGxpY2EtaWRlbnRpdHkpIGxlYWYgc3RhbGUg LS0gYm90aCB3aGlsZQorIyAnYWx3YXlzJyBrZWVwcyB0aGUgdXBkYXRlcyBvbiB0aGUgSE9U IGNoYWluLgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJQ1JFQVRF IFRBQkxFIHRhYl9yaSAoaWQgaW50IFBSSU1BUlkgS0VZLCByaWQgaW50IE5PVCBOVUxMLCBw YXlsb2FkIGludCk7CisJQ1JFQVRFIFVOSVFVRSBJTkRFWCB0YWJfcmlfcmlkX3VrIE9OIHRh Yl9yaShyaWQpOworCUFMVEVSIFRBQkxFIHRhYl9yaSBSRVBMSUNBIElERU5USVRZIFVTSU5H IElOREVYIHRhYl9yaV9yaWRfdWs7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9yaSBGT1Ig VEFCTEUgdGFiX3JpOworfSk7Ciskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs IHF7CisJQ1JFQVRFIFRBQkxFIHRhYl9yaSAoaWQgaW50IFBSSU1BUlkgS0VZLCByaWQgaW50 IE5PVCBOVUxMLCBwYXlsb2FkIGludCk7CisJQ1JFQVRFIFVOSVFVRSBJTkRFWCB0YWJfcmlf cmlkX3VrIE9OIHRhYl9yaShyaWQpOworCUFMVEVSIFRBQkxFIHRhYl9yaSBSRVBMSUNBIElE RU5USVRZIFVTSU5HIElOREVYIHRhYl9yaV9yaWRfdWs7CisJQ1JFQVRFIElOREVYIHRhYl9y aV9wYXlsb2FkX2lkeCBPTiB0YWJfcmkocGF5bG9hZCk7Cit9KTsKKworJHB1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0YWJfcmkgVkFMVUVTICgx LCAxMCwgMCksICgyLCAyMCwgMCl9KTsKKworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9yaQorCSAgQ09OTkVDVElP TiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1Yl9yaQorCSAgV0lUSCAoc2xv dF9uYW1lID0gJ3N1Yl9yaV9zbG90JywgY3JlYXRlX3Nsb3QgPSB0cnVlLAorCSAgICAgICAg aG90X2luZGV4ZWRfb25fYXBwbHkgPSAnYWx3YXlzJywgY29weV9kYXRhID0gdHJ1ZSk7Cit9 KTsKKyMgV2FpdCBmb3IgdGhlIGluaXRpYWwgdGFibGUgQ09QWSB0byBmaW5pc2gsIG5vdCBq dXN0IHN0cmVhbWluZyBjYXRjaC11cCwgc28KKyMgdGhlIHNlZWRlZCByb3dzIGFyZSBwcmVz ZW50IGJlZm9yZSB3ZSBzdGFydCB1cGRhdGluZyB0aGVtLgorJHN1YnNjcmliZXItPndhaXRf Zm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRwdWJsaXNoZXIsICdzdWJfcmknKTsKKworIyBDeWNs ZSB0aGUgcmVwbGljYS1pZGVudGl0eSBjb2x1bW4gYXdheSBhbmQgYmFjayAoQUJBKSwgYW5k IGFsc28gY2h1cm4gdGhlCisjIGV4dHJhIHBheWxvYWQgaW5kZXgsIGFsbCByZXBsaWNhdGVk IHVuZGVyICdhbHdheXMnLiAgRWFjaCBzdGVwIGlzIGEKKyMgSE9ULWluZGV4ZWQgdXBkYXRl IG9uIHRoZSBzdWJzY3JpYmVyIHRoYXQgbGVhdmVzIGEgc3RhbGUgbGVhZi4KKyRwdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCVVQREFURSB0YWJfcmkgU0VUIHJpZCA9 IDExLCBwYXlsb2FkID0gcGF5bG9hZCArIDEgV0hFUkUgaWQgPSAxOworCVVQREFURSB0YWJf cmkgU0VUIHJpZCA9IDEwLCBwYXlsb2FkID0gcGF5bG9hZCArIDEgV0hFUkUgaWQgPSAxOyAg LS0gcmlkIEFCQQorCVVQREFURSB0YWJfcmkgU0VUIHBheWxvYWQgPSBwYXlsb2FkICsgMSBX SEVSRSBpZCA9IDI7Cit9KTsKKyRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1Yl9y aScpOworCisjIENvbmZpcm0gdGhlIGFwcGx5IHdvcmtlciBhY3R1YWxseSB0b29rIHRoZSBI T1QtaW5kZXhlZCBwYXRoIG9uIHRhYl9yaSAodGhlCisjIHdob2xlIHBvaW50IG9mICdhbHdh eXMnIHdpdGggaW5kZXhlZCBhdHRycyBiZXlvbmQgdGhlIHJlcGxpY2EgaWRlbnRpdHkpLgor IyBXaXRob3V0IHRoaXMgdGhlIGNvbnZlcmdlbmNlL3ZlcmlmeV9oZWFwYW0gYXNzZXJ0cyBi ZWxvdyBjb3VsZCBwYXNzCisjIHZhY3VvdXNseSBpZiBlbGlnaWJpbGl0eSBzaWxlbnRseSBy ZWdyZXNzZWQgdG8gcGxhaW4gbm9uLUhPVC4KK215ICh1bmRlZiwgdW5kZWYsICRyaV9ob3Rp ZHgpID0gcG9sbF9jb3VudGVycygkc3Vic2NyaWJlciwgJ3RhYl9yaScsIDMpOworY21wX29r KCRyaV9ob3RpZHgsICc+JywgMCwKKwkgICAnYWx3YXlzLW1vZGU6IEhPVC1pbmRleGVkIHBh dGggZmlyZWQgb24gdGFiX3JpIChyaWQvcGF5bG9hZCBjaHVybiknKTsKKworIyBBIHN1YnNl cXVlbnQgcmVwbGljYXRlZCBVUERBVEUga2V5ZWQgYnkgdGhlIHJlcGxpY2EgaWRlbnRpdHkg KHJpZCkgbXVzdAorIyBmaW5kIHRoZSByb3cgZGVzcGl0ZSB0aGUgc3RhbGUgcmlkL3BheWxv YWQgbGVhdmVzIHRoZSBBQkEgbGVmdCBiZWhpbmQuCiskcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwlxe1VQREFURSB0YWJfcmkgU0VUIHBheWxvYWQgPSAxMDAgV0hFUkUg aWQgPSAxfSk7CisjIEFuZCBhIHJlcGxpY2F0ZWQgREVMRVRFIHJlc29sdmVkIHRocm91Z2gg dGhlIHJlcGxpY2EtaWRlbnRpdHkgaW5kZXggbXVzdAorIyBhbHNvIGZpbmQgYW5kIHJlbW92 ZSB0aGUgcmlnaHQgcm93LgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7 REVMRVRFIEZST00gdGFiX3JpIFdIRVJFIGlkID0gMn0pOworJHB1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgnc3ViX3JpJyk7CisKK2lzKCAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCXF7U0VMRUNUIHJpZCB8fCAnOicgfHwgcGF5bG9hZCBGUk9NIHRhYl9y aSBXSEVSRSBpZCA9IDF9KSwKKwknMTA6MTAwJywKKwknYWx3YXlzLW1vZGU6IHJlcGxpY2F0 ZWQgVVBEQVRFIGZvdW5kIHRoZSByb3cgdmlhIFJJIGFmdGVyIHJpZCBBQkEnKTsKK2lzKCAk c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIGNvdW50KCop IEZST00gdGFiX3JpIFdIRVJFIGlkID0gMn0pLAorCScwJywKKwknYWx3YXlzLW1vZGU6IHJl cGxpY2F0ZWQgREVMRVRFIGZvdW5kIHRoZSByb3cgdmlhIFJJIHdpdGggc3RhbGUgbGVhdmVz Jyk7CisjIEZ1bGwgY29udmVyZ2VuY2UgY3Jvc3MtY2hlY2suCitpcyggJHN1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBzdHJpbmdfYWdnKGlkIHx8ICcs JyB8fCByaWQgfHwgJywnIHx8IHBheWxvYWQsICc7JyBPUkRFUiBCWSBpZCkKKwkJICBGUk9N IHRhYl9yaX0pLAorCSRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NF TEVDVCBzdHJpbmdfYWdnKGlkIHx8ICcsJyB8fCByaWQgfHwgJywnIHx8IHBheWxvYWQsICc7 JyBPUkRFUiBCWSBpZCkKKwkJICBGUk9NIHRhYl9yaX0pLAorCSdhbHdheXMtbW9kZTogdGFi X3JpIGNvbnZlcmdlcyBiZXR3ZWVuIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlcicpOworCisj IHZlcmlmeV9oZWFwYW0gZmluZHMgbm8gY29ycnVwdGlvbiBpbiB0aGUgSE9ULWluZGV4ZWQg Y2hhaW5zIGxlZnQgYmVoaW5kLgorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIGFtY2hlY2snKTsKK2lzKCAkc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIGNvdW50KCopIEZS T00gdmVyaWZ5X2hlYXBhbSgndGFiX3JpJyl9KSwKKwknMCcsCisJJ2Fsd2F5cy1tb2RlOiB2 ZXJpZnlfaGVhcGFtIGNsZWFuIG9uIHRhYl9yaSBhZnRlciBzdGFsZS1sZWFmIGNodXJuJyk7 CisKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBU SU9OIHN1Yl9yaScpOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzA0MF9ob3RfaW5kZXhlZF9yZXBsaWNhX2lkZW50aXR5LnBsIGIv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQwX2hvdF9pbmRleGVkX3JlcGxpY2FfaWRlbnRp dHkucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY4MDE3ODdi NGMwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQwX2hv dF9pbmRleGVkX3JlcGxpY2FfaWRlbnRpdHkucGwKQEAgLTAsMCArMSwxMTAgQEAKKyMgQ29w eXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAor CisjIExpdmUgbG9naWNhbCByZXBsaWNhdGlvbiBvZiBIT1QtaW5kZXhlZCB1cGRhdGVzIHVu ZGVyIG5vbi1kZWZhdWx0IHJlcGxpY2EKKyMgaWRlbnRpdGllcy4gIFRoZSBhcHBseSB3b3Jr ZXIgbG9jYXRlcyB0aGUgcm93IHRvIHVwZGF0ZSBvciBkZWxldGUgdmlhIHRoZQorIyByZXBs aWNhIGlkZW50aXR5OiBhIHNlcXNjYW4gZm9yIFJFUExJQ0EgSURFTlRJVFkgRlVMTCwgYW5k IHRoZSBub21pbmF0ZWQKKyMgaW5kZXggZm9yIFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5E RVguICBPbiBhIHN1YnNjcmliZXIgd2hvc2UgdGFibGVzIGNhcnJ5CisjIGV4dHJhIGluZGV4 ZXMgKHNvIGFwcGx5IHBlcmZvcm1zIEhPVC1pbmRleGVkIHVwZGF0ZXMgYW5kIGxlYXZlcyBz dGFsZSBpbmRleAorIyBsZWF2ZXMpLCB0aGF0IGxvb2t1cCBtdXN0IHN0aWxsIGZpbmQgdGhl IGN1cnJlbnQgcm93IC0tIGluY2x1ZGluZyBhZnRlciB0aGUKKyMgaWRlbnRpdHkgY29sdW1u J3MgdmFsdWUgaXMgY3ljbGVkIGF3YXkgYW5kIGJhY2sgKEFCQSkuCit1c2Ugc3RyaWN0Owor dXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsK KworbXkgJHB1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVi bGlzaGVyJyk7CiskcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2lj YWwnKTsKKyRwdWJsaXNoZXItPnN0YXJ0OworCitteSAkc3Vic2NyaWJlciA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJHN1YnNjcmliZXItPmlu aXQ7Ciskc3Vic2NyaWJlci0+c3RhcnQ7CisKK215ICRwdWJfY29ubmluZm8gPSAkcHVibGlz aGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOworCisjIHRhYl9mdWxsOiBSRVBM SUNBIElERU5USVRZIEZVTEwgKGFwcGx5IHVzZXMgYSBzZXF1ZW50aWFsIHNjYW4pLgorIyB0 YWJfaWR4OiAgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCBvbiBhIG5vbi1QSyB1bmlx dWUgaW5kZXggd2hvc2UKKyMgICAgICAgICAgIGNvbHVtbiBpcyBpdHNlbGYgdXBkYXRlZCwg c28gdGhlIGFwcGx5LXNpZGUgaW5kZXggbG9va3VwIG11c3QKKyMgICAgICAgICAgIHRvbGVy YXRlIHN0YWxlIGxlYXZlcyBsZWZ0IGJ5IGVhcmxpZXIgSE9ULWluZGV4ZWQgdXBkYXRlcy4K KyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCUNSRUFURSBUQUJMRSB0 YWJfZnVsbCAoYSBpbnQsIGIgaW50LCBjIGludCk7CisJQUxURVIgVEFCTEUgdGFiX2Z1bGwg UkVQTElDQSBJREVOVElUWSBGVUxMOworCUNSRUFURSBUQUJMRSB0YWJfaWR4IChrIGludCBO T1QgTlVMTCwgdiBpbnQsIHcgaW50KTsKKwlDUkVBVEUgVU5JUVVFIElOREVYIHRhYl9pZHhf ayBPTiB0YWJfaWR4IChrKTsKKwlBTFRFUiBUQUJMRSB0YWJfaWR4IFJFUExJQ0EgSURFTlRJ VFkgVVNJTkcgSU5ERVggdGFiX2lkeF9rOworCUNSRUFURSBQVUJMSUNBVElPTiBwdWIgRk9S IFRBQkxFIHRhYl9mdWxsLCB0YWJfaWR4OworfSk7CisKKyMgVGhlIHN1YnNjcmliZXIgYWRk cyBleHRyYSBzZWNvbmRhcnkgaW5kZXhlcyBzbyB0aGF0IGFuIFVQREFURSBjaGFuZ2luZyBv bmUKKyMgaW5kZXhlZCBjb2x1bW4gc3RheXMgSE9ULWluZGV4ZWQgb24gYXBwbHkuCiskc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJQ1JFQVRFIFRBQkxFIHRhYl9m dWxsIChhIGludCwgYiBpbnQsIGMgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCUNS RUFURSBJTkRFWCB0YWJfZnVsbF9iIE9OIHRhYl9mdWxsIChiKTsKKwlDUkVBVEUgSU5ERVgg dGFiX2Z1bGxfYyBPTiB0YWJfZnVsbCAoYyk7CisJQUxURVIgVEFCTEUgdGFiX2Z1bGwgUkVQ TElDQSBJREVOVElUWSBGVUxMOworCUNSRUFURSBUQUJMRSB0YWJfaWR4IChrIGludCBOT1Qg TlVMTCwgdiBpbnQsIHcgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCUNSRUFURSBV TklRVUUgSU5ERVggdGFiX2lkeF9rIE9OIHRhYl9pZHggKGspOworCUNSRUFURSBJTkRFWCB0 YWJfaWR4X3YgT04gdGFiX2lkeCAodik7CisJQ1JFQVRFIElOREVYIHRhYl9pZHhfdyBPTiB0 YWJfaWR4ICh3KTsKKwlBTFRFUiBUQUJMRSB0YWJfaWR4IFJFUExJQ0EgSURFTlRJVFkgVVNJ TkcgSU5ERVggdGFiX2lkeF9rOworfSk7CisKKyMgQWxsb3cgSE9ULWluZGV4ZWQgdXBkYXRl cyBvbiB0aGUgYXBwbHkgcGF0aC4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcXF7CisJQ1JFQVRFIFNVQlNDUklQVElPTiBzdWIKKwkgIENPTk5FQ1RJT04gJyRwdWJf Y29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIKKwkgIFdJVEggKGhvdF9pbmRleGVkX29u X2FwcGx5ID0gYWx3YXlzKTsKK30pOworJHN1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlw dGlvbl9zeW5jKCRwdWJsaXNoZXIsICdzdWInKTsKKworIyBTZWVkIGJvdGggdGFibGVzLgor JHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJSU5TRVJUIElOVE8gdGFi X2Z1bGwgVkFMVUVTICgxLCAxMCwgMTAwKSwgKDIsIDIwLCAyMDApOworCUlOU0VSVCBJTlRP IHRhYl9pZHggVkFMVUVTICgxLCAxMCwgMTAwMCksICgyLCAyMCwgMjAwMCk7Cit9KTsKKyRw dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1YicpOworCisjIEEgcnVuIG9mIHNpbmds ZS1jb2x1bW4gdXBkYXRlczogZWFjaCBzdGF5cyBIT1QtaW5kZXhlZCBvbiB0aGUgc3Vic2Ny aWJlciBhbmQKKyMgbGVhdmVzIHN0YWxlIGxlYXZlcywgdGhlbiB0aGUgaWRlbnRpdHkvUEsg cm93IGlzIG1hdGNoZWQgYWdhaW4gYnkgdGhlIG5leHQKKyMgY2hhbmdlLiAgSW5jbHVkZSBh biBBQkEgY3ljbGUgb24gdGhlIFVTSU5HIElOREVYIGNvbHVtbiBrICgxIC0+IDMgLT4gMSku CiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwlVUERBVEUgdGFiX2Z1 bGwgU0VUIGIgPSBiICsgMSBXSEVSRSBhID0gMTsKKwlVUERBVEUgdGFiX2Z1bGwgU0VUIGMg PSBjICsgMSBXSEVSRSBhID0gMTsKKwlVUERBVEUgdGFiX2Z1bGwgU0VUIGIgPSBiICsgMSBX SEVSRSBhID0gMTsKKwlVUERBVEUgdGFiX2lkeCBTRVQgdiA9IHYgKyAxIFdIRVJFIGsgPSAx OworCVVQREFURSB0YWJfaWR4IFNFVCBrID0gMyBXSEVSRSBrID0gMTsKKwlVUERBVEUgdGFi X2lkeCBTRVQgdyA9IHcgKyAxIFdIRVJFIGsgPSAzOworCVVQREFURSB0YWJfaWR4IFNFVCBr ID0gMSBXSEVSRSBrID0gMzsKKwlERUxFVEUgRlJPTSB0YWJfZnVsbCBXSEVSRSBhID0gMjsK KwlERUxFVEUgRlJPTSB0YWJfaWR4IFdIRVJFIGsgPSAyOworfSk7CiskcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCdzdWInKTsKKworIyBUaGUgc3Vic2NyaWJlciBtdXN0IG1hdGNo IHRoZSBwdWJsaXNoZXIgZXhhY3RseTogdGhlIFJJIGxvb2t1cHMgZm91bmQgdGhlCisjIHJp Z2h0IHJvd3MgYWNyb3NzIHRoZSBIT1QtaW5kZXhlZCBjaGFpbnMgYW5kIHRoZSBBQkEgY3lj bGUuCitteSAkcHViX2Z1bGwgPSAkcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK Kwlxe1NFTEVDVCBhLCBiLCBjIEZST00gdGFiX2Z1bGwgT1JERVIgQlkgYX0pOworbXkgJHN1 Yl9mdWxsID0gJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNU IGEsIGIsIGMgRlJPTSB0YWJfZnVsbCBPUkRFUiBCWSBhfSk7Citpcygkc3ViX2Z1bGwsICRw dWJfZnVsbCwgJ1JFUExJQ0EgSURFTlRJVFkgRlVMTDogc3Vic2NyaWJlciBtYXRjaGVzIHB1 Ymxpc2hlcicpOworCitteSAkcHViX2lkeCA9ICRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCXF7U0VMRUNUIGssIHYsIHcgRlJPTSB0YWJfaWR4IE9SREVSIEJZIGt9KTsK K215ICRzdWJfaWR4ID0gJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7 U0VMRUNUIGssIHYsIHcgRlJPTSB0YWJfaWR4IE9SREVSIEJZIGt9KTsKK2lzKCRzdWJfaWR4 LCAkcHViX2lkeCwKKwknUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWDogc3Vic2NyaWJl ciBtYXRjaGVzIHB1Ymxpc2hlciBhY3Jvc3MgQUJBJyk7CisKKyMgVGhlIHN1YnNjcmliZXIn cyB0YWJsZXMgbXVzdCBiZSBzdHJ1Y3R1cmFsbHkgY29uc2lzdGVudCAoc3R1YnMgcmVjb2du aXNlZCkuCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7Q1JFQVRFIEVY VEVOU0lPTiBhbWNoZWNrfSk7CitpcyggJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHZlcmlmeV9oZWFwYW0oJ3RhYl9pZHgn KX0pLAorCScwJywKKwknc3Vic2NyaWJlciB0YWJfaWR4IGhhcyBubyBoZWFwIGNvcnJ1cHRp b24gYWZ0ZXIgSE9ULWluZGV4ZWQgYXBwbHknKTsKKworJHN1YnNjcmliZXItPnN0b3A7Cisk cHVibGlzaGVyLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNTAuMQoK --98b017876237f005fe98a17b40ccb28dde987108 Content-Disposition: attachment; filename*0="v48-0009-DO-NOT-MERGE-Add-a-HOT-SIU-benchmark-harness.patch" Content-Type: text/x-patch; name="=?UTF-8?Q?v48-0009-DO-NOT-MERGE-Add-a-HOT-SIU-benchmark-harness.patch?=" Content-Transfer-Encoding: base64 RnJvbSAyZTdjNjViNjA3MTBmMDY3YWVjNDEwYTdkMDI3OTlhM2I1M2VmM2M4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog TW9uLCAxNSBKdW4gMjAyNiAxNDoyMjo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ4IDkv OV0gW0RPIE5PVCBNRVJHRV0gQWRkIGEgSE9UL1NJVSBiZW5jaG1hcmsgaGFybmVzcwoKQS9C IGFuZCBzaW5nbGUtdmFyaWFudCBiZW5jaG1hcmsgc2NyaXB0cyBmb3IgSE9ULWluZGV4ZWQg dXBkYXRlczogYnVpbGQgdHdvCnBvc3RncmVzIHZhcmlhbnRzLCBydW4gcGdiZW5jaCB3b3Jr bG9hZHMgZXhlcmNpc2luZyBjbGFzc2ljLUhPVCwgbm9uLUhPVCwgYW5kCkhPVC1pbmRleGVk IHBhdGhzLCBhbmQgYSBzZWxmLWNvbnRhaW5lZCBibG9hdCBwcm9iZSB0aGF0IHJlcG9ydHMg dGhlIHNraXAgY291bnQKKGluZGV4IHdyaXRlcyBhdm9pZGVkIG9uIHVuY2hhbmdlZCBpbmRl eGVzKSBhbmQgY2hhbmdlZC1pbmRleCBib3VuZGluZy4gIE5vdApmb3IgbWVyZ2U7IGtlcHQg Zm9yIGV2YWx1YXRpbmcgdGhlIGZlYXR1cmUuCi0tLQogc3JjL3Rlc3QvYmVuY2htYXJrcy9z aXUvUkVBRE1FLm1kICAgICAgICAgICAgIHwgIDgyICsrKysKIHNyYy90ZXN0L2JlbmNobWFy a3Mvc2l1L3NjcmlwdHMvYmxvYXQuc2ggICAgICB8ICA4NCArKysrCiBzcmMvdGVzdC9iZW5j aG1hcmtzL3NpdS9zY3JpcHRzL2J1aWxkLnNoICAgICAgfCAgNTQgKysrCiAuLi4vc2l1L3Nj cmlwdHMvaG90X2luZGV4ZWRfbWl4ZWQuc3FsICAgICAgICAgfCAgMTEgKwogLi4uL3NpdS9z Y3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWwgICAgICAgIHwgICA2ICsKIC4uLi9iZW5j aG1hcmtzL3NpdS9zY3JpcHRzL3JlYWRfaW5kZXhzY2FuLnNxbCB8ICAxMSArCiBzcmMvdGVz dC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3J1bi5zaCAgICAgICAgfCAzNzcgKysrKysrKysr KysrKysrKysrCiBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3NvYWsuc2ggICAg ICAgfCAxMjggKysrKysrCiAuLi4vYmVuY2htYXJrcy9zaXUvc2NyaXB0cy93aWRlX3VwZGF0 ZS5zcWwgICAgfCAgIDcgKwogOSBmaWxlcyBjaGFuZ2VkLCA3NjAgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2JlbmNobWFya3Mvc2l1L1JFQURNRS5tZAog Y3JlYXRlIG1vZGUgMTAwNzU1IHNyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvYmxv YXQuc2gKIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3Jp cHRzL2J1aWxkLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvYmVuY2htYXJrcy9z aXUvc2NyaXB0cy9ob3RfaW5kZXhlZF9taXhlZC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWwK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3Jl YWRfaW5kZXhzY2FuLnNxbAogY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy90ZXN0L2JlbmNobWFy a3Mvc2l1L3NjcmlwdHMvcnVuLnNoCiBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3Rlc3QvYmVu Y2htYXJrcy9zaXUvc2NyaXB0cy9zb2FrLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy93aWRlX3VwZGF0ZS5zcWwKCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9SRUFETUUubWQgYi9zcmMvdGVzdC9iZW5jaG1h cmtzL3NpdS9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjlhNjJkMjY4YWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJr cy9zaXUvUkVBRE1FLm1kCkBAIC0wLDAgKzEsODIgQEAKKyMgaG90LWluZGV4ZWQgKEhPVC1p bmRleGVkKSBBL0IgYmVuY2htYXJrIGhhcm5lc3MKKworVHdvIHBvc3RncmVzIHZhcmlhbnRz LCBpZGVudGljYWwgcGdkYXRhIGxheW91dHMsIHBnYmVuY2ggd29ya2xvYWRzCitleGVyY2lz aW5nIGNsYXNzaWMgSE9ULCBub24tSE9ULCBhbmQgSE9ULWluZGV4ZWQgcGF0aHMuCisKKyMj IENvbnRlbnRzCisKKy0gYHNjcmlwdHMvYnVpbGQuc2hgIC0tIGJ1aWxkcyB0d28gcG9zdGdy ZXMgdmFyaWFudHMgKGBtYXN0ZXJgID0gdGVwaWQncworICBtZXJnZS1iYXNlIHdpdGggb3Jp Z2luL21hc3RlcjsgYHRlcGlkYCA9IHRoZSBicmFuY2ggdW5kZXIgdGVzdCkuICBSZXF1aXJl cworICBhIHdyaXRhYmxlIGJlbmNobWFyayByb290IHZpYSBgQkVOQ0hgIChkZWZhdWx0IGAv c2NyYXRjaC90ZXBpZC1iZW5jaGApLgorLSBgc2NyaXB0cy9ydW4uc2hgIC0tIEEvQiBkcml2 ZXIuICBSdW5zIGBzaW1wbGVfdXBkYXRlYCAocGdiZW5jaCAtTiksCisgIGBob3RfaW5kZXhl ZF91cGRhdGVgLCBgaG90X2luZGV4ZWRfbWl4ZWRgLCBgcmVhZF9pbmRleHNjYW5gLCBhbmQg YHdpZGVfTmAKKyAgZm9yIE4gaW4gYCRXSURFX1NURVBTYC4KKyAgQ29sbGVjdHMgVFBTLCBs YXRlbmN5LCBXQUwgYnl0ZXMsIEhPVCB1cGRhdGUgY291bnQsIHByZS9wb3N0IGhlYXAgYW5k CisgIGluZGV4IHNpemUsIHBlYWsgQ1BVJSBhbmQgUlNTLiAgV3JpdGVzIGEgQ1NWIHBlciBy dW4gdG8gYCRCRU5DSC9yZXN1bHRzL2AuCistIGBzY3JpcHRzL3NvYWsuc2hgIC0tIGxvbmct cnVubmluZyBzaW5nbGUtd29ya2xvYWQgZHJpdmVyIHRoYXQgc2FtcGxlcworICBUUFMvSE9U JS9XQUwvYmxvYXQgZXZlcnkgYCRTQU1QTEVgIHNlY29uZHMgdW5kZXIgYCREVVJBVElPTmAg c2Vjb25kcworICBvZiBjb25zdGFudCBwcmVzc3VyZSwgcGVyIHZhcmlhbnQuCistIGBzY3Jp cHRzL2Jsb2F0LnNoYCAtLSBzaW5nbGUtdmFyaWFudCBibG9hdCBwcm9iZS4gIFJ1bnMgdXBk YXRlK3ZhY3V1bSBjeWNsZXMKKyAgb24gYSB0YWJsZSB3aG9zZSBjaGFuZ2VkIGNvbHVtbiBh bmQgYW4gdW5jaGFuZ2VkIGNvbHVtbiBhcmUgYm90aCBpbmRleGVkLCBhbmQKKyAgcmVwb3J0 cyAodmlhIHBnc3RhdHR1cGxlKSB0aGF0IHRoZSBjaGFuZ2VkIGluZGV4IHN0YXlzIGJvdW5k ZWQgd2l0aCBwZXJpb2RpYworICBWQUNVVU0gYnV0IGdyb3dzIHVuYm91bmRlZCB3aXRob3V0 IGl0LCBwbHVzIHRoZSBza2lwIGNvdW50IHNob3dpbmcKKyAgSE9ULWluZGV4ZWQgdXBkYXRl cyBhdm9pZGluZyB0aGUgdW5jaGFuZ2VkIGluZGV4LiAgU3BpbnMgaXRzIG93biB0aHJvd2F3 YXkKKyAgY2x1c3Rlciwgc28gaXQgZG9lcyBub3QgdG91Y2ggdGhlIEEvQiBwZ2RhdGEuCist IGBzY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWxgIC0tIGBVUERBVEUgc2l1X3RhYmxl IFNFVCBiID0gcmFuZCBXSEVSRSBhID0gcmFuZGAuCistIGBzY3JpcHRzL2hvdF9pbmRleGVk X21peGVkLnNxbGAgIC0tIDgwICUgU0VMRUNUIGJ5IFBLICsgMjAgJSBpbmRleGVkLWNvbCBV UERBVEUuCistIGBzY3JpcHRzL3JlYWRfaW5kZXhzY2FuLnNxbGAgLS0gcmVhZC1vbmx5IGJ0 cmVlIGluZGV4IHNjYW5zIG9uIGEgZnJlc2hseQorICByZXNldCBgc2l1X3RhYmxlYCAobm8g c3RhbGUgZW50cmllcyk7IGNvbmZpcm1zIHRoZSBIT1QtaW5kZXhlZCByZWFkIHBhdGgKKyAg YWRkcyBubyBwZXItc2NhbiBvdmVyaGVhZCwgc2luY2UgdGhlIGNyb3NzZWQtYXR0cmlidXRl IGJpdG1hcCBkZWNpZGVzCisgIHN0YWxlbmVzcyB3aXRob3V0IGEga2V5IGNvbXBhcmlzb24g YW5kIHRoZSBzY2FuIHJlcXVlc3RzIG5vIGluZGV4IHR1cGxlLgorLSBgc2NyaXB0cy93aWRl X3VwZGF0ZS5zcWxgIC0tIGRyaXZlciBzY3JpcHQgZm9yIHRoZSB3aWRlLXRhYmxlIHdvcmts b2FkOworICB0aGUgYFNFVGAgY2xhdXNlIGlzIGJ1aWx0IGF0IHJ1biB0aW1lIGZyb20gYCRX SURFX1NURVBTYC4KKworIyMgUnVubmluZworCitgYGAKKyMgQnVpbGQgYm90aCB2YXJpYW50 cyAocnVuIG9uY2UgcGVyIGJlbmNobWFyayBob3N0KQorUkVQTz0kSE9NRS93cy9wb3N0Z3Jl cy90ZXBpZCBCRU5DSD0vc2NyYXRjaC90ZXBpZC1iZW5jaCBcCisgIC4vc2NyaXB0cy9idWls ZC5zaAorCisjIFN0YW5kYXJkIEEvQgorU0NBTEU9MjAgQ0xJRU5UUz0xNiBUSFJFQURTPTgg RFVSQVRJT049MTIwIFwKKyAgV0lERV9DT0xTPTE2IFdJREVfU1RFUFM9MCwxLDIsNCw4LDE2 IFwKKyAgLi9zY3JpcHRzL3J1bi5zaAorCisjIFNvYWsKK1NDQUxFPTUwIENMSUVOVFM9MTYg VEhSRUFEUz04IERVUkFUSU9OPTkwMCBTQU1QTEU9NjAgXAorICAuL3NjcmlwdHMvc29hay5z aAorCisjIEJsb2F0IHByb2JlIChzaW5nbGUgdmFyaWFudDsgZGVmYXVsdHMgdG8gdGhlIHRl cGlkIGJ1aWxkKQorQkVOQ0g9L3NjcmF0Y2gvdGVwaWQtYmVuY2ggUk9XUz01MDAwIENZQ0xF Uz04IFVQREFURVM9MjAgXAorICAuL3NjcmlwdHMvYmxvYXQuc2gKK2BgYAorCisjIyBFbnYg dmFycworCitgYGAKK1JFUE8gICAgICAgICBwYXRoIHRvIHBvc3RncmVzIHNvdXJjZSAoaGFz IC5naXQpCitCRU5DSCAgICAgICAgYmVuY2ggcm9vdCAoaW5zdGFsbCBwcmVmaXhlcywgYnVp bGQgdHJlZXMsIHJlc3VsdHMpCitTQ0FMRSAgICAgICAgcGdiZW5jaCAtcyAoYWxzbyBkcml2 ZXMgc2l1X3RhYmxlIHJvdyBjb3VudCA9IFNDQUxFKjEwMGspCitDTElFTlRTICAgICAgcGdi ZW5jaCAtYworVEhSRUFEUyAgICAgIHBnYmVuY2ggLWoKK0RVUkFUSU9OICAgICBzZWNvbmRz IHBlciB3b3JrbG9hZAorV0lERV9DT0xTICAgIG51bWJlciBvZiBpbmRleGVkIGludCBjb2x1 bW5zIGluIHdpZGVfdGFibGUgKGRlZmF1bHQgMTYpCitXSURFX1NURVBTICAgY29tbWEtc2Vw YXJhdGVkIGxpc3Qgb2YgY29sdW1ucy1tb2RpZmllZCB2YWx1ZXMgdG8gZXhlcmNpc2UKKyAg ICAgICAgICAgICAoZGVmYXVsdCAwLDEsNCw4LDE2KQorUE9SVCAgICAgICAgIHBvc3RncmVz IHBvcnQgZm9yIHRoZSBiZW5jaCBzZXJ2ZXJzCitTSEFSRURfQlVGRkVSUyAgcG9zdGdyZXNx bC5jb25mIHNldHRpbmcgKGRlZmF1bHQgNTEyTUIpCitNQVNURVJfUkVWICAgcmV2aXNpb24g Zm9yIHRoZSBtYXN0ZXIgdmFyaWFudCAoZGVmYXVsdDogdGVwaWQncyBtZXJnZS1iYXNlCisg ICAgICAgICAgICAgd2l0aCBvcmlnaW4vbWFzdGVyKQorVEVQSURfUkVWICAgIHJldmlzaW9u IGZvciB0aGUgdGVwaWQgdmFyaWFudCAoZGVmYXVsdDogdGVwaWQpCisKK2Jsb2F0LnNoIG9u bHk6CitCSU5ESVIgICAgICAgcG9zdGdyZXMgYmluIGRpciB0byB0ZXN0IChkZWZhdWx0OiB0 ZXBpZCB2YXJpYW50IHVuZGVyICRCRU5DSCkKK1JPV1MgICAgICAgICBzZWVkZWQgcm93cyAo ZGVmYXVsdCA1MDAwKQorQ1lDTEVTICAgICAgIHVwZGF0ZSt2YWN1dW0gY3ljbGVzIChkZWZh dWx0IDgpCitVUERBVEVTICAgICAgdXBkYXRlcyBwZXIgcm93IHBlciBjeWNsZSAoZGVmYXVs dCAyMCkKK2BgYAorCitUaGUgc2NyaXB0cyBhcmUgcG9ydGFibGUgYmV0d2VlbiBMaW51eCBh bmQgRnJlZUJTRDsgdGhlIENQVS9SU1Mgc2FtcGxlcgordXNlcyBgcHMgLW8gcGNwdT0scnNz PSAtLXBwaWQgTEVBREVSIC1wIExFQURFUmAgKExpbnV4KSBvciBgcGdyZXAgLVBgICsKK3Bl ci1waWQgYHBzYCAoRnJlZUJTRCkgLS0gcGVhayB2YWx1ZXMgYXJlIGFwcHJveGltYXRlLgpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ibG9hdC5zaCBi L3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvYmxvYXQuc2gKbmV3IGZpbGUgbW9k ZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAuLjM0MTcxYzY4ZjViCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ibG9hdC5zaApAQCAtMCww ICsxLDg0IEBACisjIS91c3IvYmluL2VudiBiYXNoCisjIFNpbmdsZS12YXJpYW50IGJsb2F0 IGJlbmNobWFyayBmb3IgSE9ULWluZGV4ZWQgKFNJVSkgdXBkYXRlcy4KKyMKKyMgVGhlIEEv QiBydW4uc2ggbWVhc3VyZXMgVFBTL1dBTC9hZ2dyZWdhdGUgc2l6ZTsgaXQgZG9lcyBub3Qg aXNvbGF0ZSB0d28KKyMgYmxvYXQgcHJvcGVydGllcyBvZiB0aGUgSE9ULWluZGV4ZWQgcGF0 aCwgd2hpY2ggdGhpcyBzY3JpcHQgZGVtb25zdHJhdGVzOgorIworIyAgIDEuIFN0YWxlIGlu ZGV4IGVudHJpZXMgb24gdGhlIENIQU5HRUQgaW5kZXggYWNjdW11bGF0ZSBiZXR3ZWVuIHZh Y3V1bXMsCisjICAgICAgYnV0IFZBQ1VVTSByZWNsYWltcyB0aGVtLCBzbyBzaXplIHN0YXlz IGJvdW5kZWQgYWNyb3NzIHVwZGF0ZSt2YWN1dW0KKyMgICAgICBjeWNsZXMuICBTa2lwcGlu ZyB2YWN1dW0gbGV0cyB0aGVtIGdyb3cgdW5ib3VuZGVkICh0aGUgaW5oZXJlbnQKKyMgICAg ICBpbnRlci12YWN1dW0gYmxvYXQ7IHJlYWQtZmlsdGVyZWQgYnkgdGhlIGNyb3NzZWQtYXR0 cmlidXRlIGJpdG1hcCBtZWFud2hpbGUpLgorIyAgIDIuIEFuIGluZGV4IG9uIGFuIFVOQ0hB TkdFRCBjb2x1bW4gaXMgc2tpcHBlZCBieSBIT1QtaW5kZXhlZCB1cGRhdGVzICh0aGUKKyMg ICAgICBzZWxlY3RpdmUtdXBkYXRlIGJlbmVmaXQpIC0tIHZpc2libGUgYXMgYSBza2lwIGNv dW50LiAgVXBkYXRlcyB0aGF0IGZhbGwKKyMgICAgICBiYWNrIHRvIG5vbi1IT1QgKGUuZy4g d2hlbiB0aGUgcGFnZSBoYXMgbm8gcm9vbSBmb3IgdGhlIGNoYWluKSBzdGlsbAorIyAgICAg IGluc2VydCBpbnRvIGl0LCBzbyBpdHMgc2l6ZSByZWZsZWN0cyBvbmx5IHRoZSBub24tSE9U IHJlbWFpbmRlci4KKyMKKyMgVXNlcyB0aGUgdGVwaWQgdmFyaWFudCBidWlsdCBieSBidWls ZC5zaCAob3ZlcnJpZGUgQklORElSIGZvciBhbnkgYnVpbGQpIGFuZAorIyBhIHRocm93YXdh eSBjbHVzdGVyIHVuZGVyICRCRU5DSCwgc28gaXQgbmV2ZXIgdG91Y2hlcyB0aGUgQS9CIHBn ZGF0YS4KKyMKKyMgRW52OiBCRU5DSCAoZGVmYXVsdCAvc2NyYXRjaC9zaXUtYmVuY2gpLCBC SU5ESVIgKGRlZmF1bHQgdGVwaWQgdmFyaWFudCBiaW4pLAorIyAgICAgIFBPUlQgKGRlZmF1 bHQgNTc0ODEpLCBST1dTIChkZWZhdWx0IDUwMDApLCBDWUNMRVMgKGRlZmF1bHQgOCksCisj ICAgICAgVVBEQVRFUyAodXBkYXRlcyBwZXIgcm93IHBlciBjeWNsZSwgZGVmYXVsdCAyMCku CitzZXQgLWV1byBwaXBlZmFpbAorCitCRU5DSD0ke0JFTkNIOi0vc2NyYXRjaC9zaXUtYmVu Y2h9CitCSU5ESVI9JHtCSU5ESVI6LSRCRU5DSC90ZXBpZC91c3IvbG9jYWwvcGdzcWwvYmlu fQorUE9SVD0ke1BPUlQ6LTU3NDgxfQorUk9XUz0ke1JPV1M6LTUwMDB9CitDWUNMRVM9JHtD WUNMRVM6LTh9CitVUERBVEVTPSR7VVBEQVRFUzotMjB9CitEQVRBRElSPSRCRU5DSC9fZGF0 YV9ibG9hdAorCitiYXNlPSQoZGlybmFtZSAiJEJJTkRJUiIpCitpZiBbIC1kICIkYmFzZS9s aWI2NCIgXTsgdGhlbgorICBleHBvcnQgTERfTElCUkFSWV9QQVRIPSIkYmFzZS9saWI2NCR7 TERfTElCUkFSWV9QQVRIOis6JExEX0xJQlJBUllfUEFUSH0iCitlbHNlCisgIGV4cG9ydCBM RF9MSUJSQVJZX1BBVEg9IiRiYXNlL2xpYiR7TERfTElCUkFSWV9QQVRIOis6JExEX0xJQlJB UllfUEFUSH0iCitmaQorCitQU1FMPSgiJEJJTkRJUi9wc3FsIiAtaCAvdG1wIC1wICIkUE9S VCIgLVUgcG9zdGdyZXMgLVggLXEpCitQKCkgeyAiJHtQU1FMW0BdfSIgLUF0ICIkQCI7IH0K KworIiRCSU5ESVIvcGdfY3RsIiAtRCAiJERBVEFESVIiIHN0b3AgLW0gZmFzdCA+L2Rldi9u dWxsIDI+JjEgfHwgdHJ1ZQorcm0gLXJmICIkREFUQURJUiIKKyIkQklORElSL2luaXRkYiIg LUQgIiREQVRBRElSIiAtVSBwb3N0Z3JlcyAtLW5vLXN5bmMgPi9kZXYvbnVsbAorY2F0ID4+ ICIkREFUQURJUi9wb3N0Z3Jlc3FsLmNvbmYiIDw8RU9GCitwb3J0ID0gJFBPUlQKK2F1dG92 YWN1dW0gPSBvZmYKK2ZzeW5jID0gb2ZmCitFT0YKKyIkQklORElSL3BnX2N0bCIgLUQgIiRE QVRBRElSIiAtbyAiLXAgJFBPUlQiIC1sICIkQkVOQ0gvX2Jsb2F0LmxvZyIgLXcgc3RhcnQg Pi9kZXYvbnVsbAordHJhcCAnIiRCSU5ESVIvcGdfY3RsIiAtRCAiJERBVEFESVIiIHN0b3Ag LW0gZmFzdCA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZScgRVhJVAorIiR7UFNRTFtAXX0iIC1j ICJDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGdzdGF0dHVwbGU7IiA+L2Rldi9u dWxsCisKKyMgJDEgPSB0YWJsZSBuYW1lLCAkMiA9IHZhY3V1bV9lYWNoICgxLzApLiAgUmV0 dXJucyBmaW5hbCBpZHhfYSBjb21wb3NpdGlvbi4KK3J1bl9hcm0oKSB7CisgIGxvY2FsIHRi bD0kMSB2YWM9JDIKKyAgIiR7UFNRTFtAXX0iIDw8U1FMID4vZGV2L251bGwKK0RST1AgVEFC TEUgSUYgRVhJU1RTICR0Ymw7CitDUkVBVEUgVEFCTEUgJHRibCAoaWQgaW50IFBSSU1BUlkg S0VZLCBhIGludCwgYiBpbnQsIHBhZCB0ZXh0KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYICR7dGJsfV9hIE9OICR0YmwoYSk7ICAgLS0gY2hhbmdlZCBjb2x1bW4K K0NSRUFURSBJTkRFWCAke3RibH1fYiBPTiAkdGJsKGIpOyAgIC0tIG5ldmVyIGNoYW5nZWQK K0lOU0VSVCBJTlRPICR0YmwgU0VMRUNUIGcsIGcsIGcsIHJlcGVhdCgneCcsIDQwKSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAkUk9XUykgZzsKK1ZBQ1VVTSAoRlJFRVpFLCBBTkFMWVpF KSAkdGJsOworU1FMCisgIGxvY2FsIGN5YworICBmb3IgKChjeWMgPSAxOyBjeWMgPD0gQ1lD TEVTOyBjeWMrKykpOyBkbworICAgICIke1BTUUxbQF19IiAtYyAiRE8gXCRcJCBCRUdJTiBG T1IgdSBJTiAxLi4kVVBEQVRFUyBMT09QIFVQREFURSAkdGJsIFNFVCBhID0gYSArIDE7IEVO RCBMT09QOyBFTkQgXCRcJDsiID4vZGV2L251bGwKKyAgICBbICIkdmFjIiA9IDEgXSAmJiAi JHtQU1FMW0BdfSIgLWMgIlZBQ1VVTSAkdGJsOyIgPi9kZXYvbnVsbAorICBkb25lCisgIFAg LWMgIlNFTEVDVCAnJHRibCh2YWN1dW1fZWFjaD0kdmFjKTonCisgICAgICAgIHx8ICcgaWR4 X2Ffa2I9JyB8fCBwZ19yZWxhdGlvbl9zaXplKCcke3RibH1fYScpLzEwMjQKKyAgICAgICAg fHwgJyBpZHhfYV9saXZlPScgfHwgKFNFTEVDVCB0dXBsZV9jb3VudCBGUk9NIHBnc3RhdHR1 cGxlKCcke3RibH1fYScpKQorICAgICAgICB8fCAnIGlkeF9hX2ZyZWUlPScgfHwgcm91bmQo KFNFTEVDVCBmcmVlX3BlcmNlbnQgRlJPTSBwZ3N0YXR0dXBsZSgnJHt0Ymx9X2EnKSk6Om51 bWVyaWMsMSkKKyAgICAgICAgfHwgJyBpZHhfYl9rYj0nIHx8IHBnX3JlbGF0aW9uX3NpemUo JyR7dGJsfV9iJykvMTAyNAorICAgICAgICB8fCAnIGlkeF9iX3NraXBzPScgfHwgY29hbGVz Y2UoKFNFTEVDVCBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcyBX SEVSRSBpbmRleHJlbG5hbWU9JyR7dGJsfV9iJyksIDApOyIKK30KKworZWNobyAiPT09IEhP VC1pbmRleGVkIGJsb2F0OiAkQ1lDTEVTIGN5Y2xlcyB4ICgkVVBEQVRFUyB1cGRhdGVzL3Jv dyB4ICRST1dTIHJvd3MpID09PSIKK3J1bl9hcm0gdF92YWMgMQorcnVuX2FybSB0X25vdmFj IDAKK2VjaG8gImlkeF9hOiBib3VuZGVkIHdpdGggdmFjdXVtX2VhY2g9MSwgdW5ib3VuZGVk IHdpdGggPTAgKHN0YWxlIGVudHJpZXMgYWNjdW11bGF0ZSIKK2VjaG8gInVudGlsIHJlY2xh aW1lZCkuICBpZHhfYl9za2lwcyBjb3VudHMgZW50cmllcyB0aGUgSE9ULWluZGV4ZWQgcGF0 aCBhdm9pZGVkIG9uIgorZWNobyAidGhlIHVuY2hhbmdlZCBpbmRleDsgaWR4X2Jfa2IgaXMg b25seSB0aGUgbm9uLUhPVC1mYWxsYmFjayByZW1haW5kZXIuIgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9idWlsZC5zaCBiL3NyYy90ZXN0L2JlbmNo bWFya3Mvc2l1L3NjcmlwdHMvYnVpbGQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg MDAwMDAwMDAwMDAuLmIyZjBlZTUyNWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv YmVuY2htYXJrcy9zaXUvc2NyaXB0cy9idWlsZC5zaApAQCAtMCwwICsxLDU0IEBACisjIS91 c3IvYmluL2VudiBiYXNoCisjIEJ1aWxkIHR3byBwb3N0Z3JlcyB2YXJpYW50cyBmb3IgdGVw aWQgKEhPVC1pbmRleGVkKSBBL0IgYmVuY2htYXJrcy4KKyMKKyMgRW52IHZhcnMgKGFsbCBv cHRpb25hbCk6CisjICAgUkVQTyAgICAgICAgICAtLSBwYXRoIHRvIHBvc3RncmVzIHNvdXJj ZSByZXBvIChkZWZhdWx0OiAkSE9NRS93cy9wb3N0Z3Jlcy90ZXBpZCwgb3IgL3NjcmF0Y2gv c2l1LWJlbmNoL3JlcG8pCisjICAgQkVOQ0ggICAgICAgICAtLSBiZW5jaCByb290IChkZWZh dWx0OiAvc2NyYXRjaC9zaXUtYmVuY2gpCisjICAgTUFTVEVSX1JFViAgICAtLSByZXZpc2lv biBmb3IgdGhlICJtYXN0ZXIiIHZhcmlhbnQgKGRlZmF1bHQ6IHRlcGlkJ3MgbWVyZ2UtYmFz ZSB3aXRoIG9yaWdpbi9tYXN0ZXIpCisjICAgVEVQSURfUkVWICAgICAtLSByZXZpc2lvbiBm b3IgdGhlICJ0ZXBpZCIgIHZhcmlhbnQgKGRlZmF1bHQ6IHRlcGlkKQorIyAgIEpPQlMgICAg ICAgICAgLS0gcGFyYWxsZWwgY29tcGlsZSBqb2JzIChkZWZhdWx0OiBucHJvYyBvciA4KQor c2V0IC1ldW8gcGlwZWZhaWwKKworQkVOQ0g9JHtCRU5DSDotL3NjcmF0Y2gvc2l1LWJlbmNo fQorSk9CUz0ke0pPQlM6LSQoIChjb21tYW5kIC12IG5wcm9jID4vZGV2L251bGwgJiYgbnBy b2MpIHx8IHN5c2N0bCAtbiBody5uY3B1IDI+L2Rldi9udWxsIHx8IGVjaG8gOCApfQoraWYg WyAteiAiJHtSRVBPOi19IiBdOyB0aGVuCisgIGZvciBjYW5kaWRhdGUgaW4gIiRIT01FL3dz L3Bvc3RncmVzL3RlcGlkIiAiJEJFTkNIL3JlcG8iIC9zY3JhdGNoL3BnOyBkbworICAgIGlm IFsgLWQgIiRjYW5kaWRhdGUvLmdpdCIgXTsgdGhlbiBSRVBPPSRjYW5kaWRhdGU7IGJyZWFr OyBmaQorICBkb25lCitmaQorOiAiJHtSRVBPOj9SRVBPIG5vdCBzZXQgYW5kIG5vIGRlZmF1 bHQgZm91bmR9IgorY2QgIiRSRVBPIgorCitURVBJRF9SRVY9JHtURVBJRF9SRVY6LXRlcGlk fQorTUFTVEVSX1JFVj0ke01BU1RFUl9SRVY6LSQoZ2l0IG1lcmdlLWJhc2UgIiRURVBJRF9S RVYiIG9yaWdpbi9tYXN0ZXIgMj4vZGV2L251bGwgfHwgZ2l0IG1lcmdlLWJhc2UgIiRURVBJ RF9SRVYiIG1hc3Rlcil9CisKK2VjaG8gIlJFUE89JFJFUE8gIE1BU1RFUj0kTUFTVEVSX1JF ViAgVEVQSUQ9JFRFUElEX1JFViAgSk9CUz0kSk9CUyAgQkVOQ0g9JEJFTkNIIgorCitkaWUo KSB7IHByaW50ZiAnYnVpbGQ6ICVzXG4nICIkKiIgPiYyOyBleGl0IDE7IH0KK2lmIGdpdCBz dGF0dXMgLS1wb3JjZWxhaW4gfCBncmVwIC12ICdePz8nIHwgZ3JlcCAtcSAuOyB0aGVuCisg IGRpZSAicmVwbyBoYXMgdW5zdGFnZWQvdW5jb21taXR0ZWQgY2hhbmdlczsgc3Rhc2ggb3Ig Y29tbWl0IGZpcnN0IgorZmkKKworYnVpbGRfdmFyaWFudCgpIHsKKyAgbG9jYWwgbmFtZT0k MQorICBsb2NhbCByZXY9JDIKKyAgbG9jYWwgcHJlZml4PSRCRU5DSC8kbmFtZQorICBlY2hv ICI9PT0gYnVpbGRpbmcgJG5hbWUgKCRyZXYpIGludG8gJHByZWZpeCIKKyAgWyAtZCAiJHBy ZWZpeCIgXSAmJiBmaW5kICIkcHJlZml4IiAtbWluZGVwdGggMSAtZGVsZXRlICYmIHJtZGly ICIkcHJlZml4IgorICBta2RpciAtcCAiJHByZWZpeCIKKyAgZ2l0IGNoZWNrb3V0IC0tcXVp ZXQgLS1kZXRhY2ggIiRyZXYiCisgIGxvY2FsIGJsZD0kQkVOQ0gvX2J1aWxkXyRuYW1lCisg IFsgLWQgIiRibGQiIF0gJiYgZmluZCAiJGJsZCIgLW1pbmRlcHRoIDEgLWRlbGV0ZSAmJiBy bWRpciAiJGJsZCIKKyAgbWVzb24gc2V0dXAgIiRibGQiIC0tcHJlZml4PSIkcHJlZml4L3Vz ci9sb2NhbC9wZ3NxbCIgXAorICAgIC1EYnVpbGR0eXBlPXJlbGVhc2UgLURjYXNzZXJ0PWZh bHNlIFwKKyAgICAtRGV4dHJhX3ZlcnNpb249LXNpdWJlbmNoLSRuYW1lID4vZGV2L251bGwK KyAgbWVzb24gY29tcGlsZSAtQyAiJGJsZCIgLWogIiRKT0JTIgorICBtZXNvbiBpbnN0YWxs IC1DICIkYmxkIiAtLWRlc3RkaXI9LyA+L2Rldi9udWxsCisgICIkcHJlZml4L3Vzci9sb2Nh bC9wZ3NxbC9iaW4vcG9zdGdyZXMiIC0tdmVyc2lvbgorfQorCitPUklHPSQoZ2l0IHN5bWJv bGljLXJlZiAtLXF1aWV0IC0tc2hvcnQgSEVBRCB8fCBnaXQgcmV2LXBhcnNlIEhFQUQpCit0 cmFwICdnaXQgY2hlY2tvdXQgLS1xdWlldCAiJE9SSUciJyBFWElUCisKK2J1aWxkX3Zhcmlh bnQgbWFzdGVyICIkTUFTVEVSX1JFViIKK2J1aWxkX3ZhcmlhbnQgdGVwaWQgICIkVEVQSURf UkVWIgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ob3Rf aW5kZXhlZF9taXhlZC5zcWwgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hv dF9pbmRleGVkX21peGVkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uM2FiMzI4OWRmMjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9iZW5jaG1h cmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX21peGVkLnNxbApAQCAtMCwwICsxLDExIEBA CistLSBNaXhlZCB3b3JrbG9hZDogODAlIHNlbGVjdHMsIDIwJSBpbmRleGVkLWNvbHVtbiB1 cGRhdGVzLgorLS0gRXhlcmNpc2VzIGJvdGggdGhlIGhvdC1pbmRleGVkIHdyaXRlciBhbmQg dGhlIGNyb3NzZWQtYXR0cmlidXRlLWJpdG1hcCByZWFkZXIuCitcc2V0IGFpZCByYW5kb20o MSwgOnNjYWxlICogMTAwMDAwKQorXHNldCBiaWQgcmFuZG9tKDEsIDEwMDAwMDApCitcc2V0 IHdoaWNoIHJhbmRvbSgxLCAxMDApCitCRUdJTjsKK1NFTEVDVCAqIEZST00gc2l1X3RhYmxl IFdIRVJFIGEgPSA6YWlkOworXGlmIDp3aGljaCA+IDgwCisgIFVQREFURSBzaXVfdGFibGUg U0VUIGIgPSA6YmlkIFdIRVJFIGEgPSA6YWlkOworXGVuZGlmCitDT01NSVQ7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0 ZS5zcWwgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3Vw ZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYxYmNm OTU5YzY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2Ny aXB0cy9ob3RfaW5kZXhlZF91cGRhdGUuc3FsCkBAIC0wLDAgKzEsNiBAQAorLS0gaG90LWlu ZGV4ZWQtZnJpZW5kbHkgd29ya2xvYWQ6IG5hcnJvdyB0YWJsZSB3aXRoIGEgZmV3IG5vbi1Q SyBpbmRleGVzLgorLS0gRWFjaCBVUERBVEUgY2hhbmdlcyBhIG5vbi1zdW1tYXJpemluZyBp bmRleGVkIGNvbHVtbiBvbiBhIHJhbmRvbSByb3cuCistLSBXaXRoIGhvdC1pbmRleGVkIHRo aXMgaXMgSE9ULWluZGV4ZWQ7IHdpdGhvdXQgaG90LWluZGV4ZWQgaXQgaXMgbm9uLUhPVC4K K1xzZXQgYWlkIHJhbmRvbSgxLCA6c2NhbGUgKiAxMDAwMDApCitcc2V0IG5ld19iIHJhbmRv bSgxLCAxMDAwMDAwKQorVVBEQVRFIHNpdV90YWJsZSBTRVQgYiA9IDpuZXdfYiBXSEVSRSBh ID0gOmFpZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMv cmVhZF9pbmRleHNjYW4uc3FsIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9y ZWFkX2luZGV4c2Nhbi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjQ2NTY4OTc2M2VhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJr cy9zaXUvc2NyaXB0cy9yZWFkX2luZGV4c2Nhbi5zcWwKQEAgLTAsMCArMSwxMSBAQAorLS0g cmVhZF9pbmRleHNjYW46IHJlYWQtb25seSBidHJlZSBpbmRleC1zY2FuIHdvcmtsb2FkIGNv bmZpcm1pbmcgdGhlCistLSBIT1QtaW5kZXhlZCByZWFkIHBhdGggYWRkcyBubyBwZXItc2Nh biBvdmVyaGVhZCBvbiB0YWJsZXMgd2l0aCBubyBzdGFsZQorLS0gZW50cmllcy4KKy0tIFRo ZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgZGVjaWRlcyBzdGFsZW5lc3Mgd2l0aG91dCBh IGtleSBjb21wYXJpc29uIGFuZAorLS0gdGhlIHNjYW4gZG9lcyBub3QgcmVxdWVzdCB0aGUg aW5kZXggdHVwbGUsIHNvIG9uIGEgZnJlc2hseSByZXNldCBzaXVfdGFibGUKKy0tIChubyBz dGFsZSBIT1QtaW5kZXhlZCBlbnRyaWVzKSB0aGVyZSBzaG91bGQgYmUgbm8gbWFzdGVyLXZz LXRlcGlkCistLSBkaWZmZXJlbmNlIG9uIHRoaXMgY2VsbC4gIFRoZSBwcmVkaWNhdGUgaXMg YW4gZXF1YWxpdHkgb24gdGhlCistLSBpbmRleGVkIGNvbHVtbiBiIGFuZCB0aGUgdGFyZ2V0 IGxpc3QgaW5jbHVkZXMgdGhlIG5vbi1pbmRleGVkIGNvbHVtbiBlLAorLS0gZm9yY2luZyBh IHBsYWluIChoZWFwLWZldGNoaW5nKSBpbmRleCBzY2FuIHJhdGhlciB0aGFuIGFuIGluZGV4 LW9ubHkgc2Nhbi4KK1xzZXQgaWQgcmFuZG9tKDEsIDpyb3dzKQorU0VMRUNUIGEsIGIsIGMs IGQsIGUgRlJPTSBzaXVfdGFibGUgV0hFUkUgYiA9IDppZDsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvcnVuLnNoIGIvc3JjL3Rlc3QvYmVuY2htYXJr cy9zaXUvc2NyaXB0cy9ydW4uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw MDAwMDAuLmZhMzMwYWQ0ZjZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2ht YXJrcy9zaXUvc2NyaXB0cy9ydW4uc2gKQEAgLTAsMCArMSwzNzcgQEAKKyMhL3Vzci9iaW4v ZW52IGJhc2gKKyMgQS9CIHBnYmVuY2ggaGFybmVzcyBmb3IgdGVwaWQ6IG1hc3RlciAodXBz dHJlYW0pIHZzIHRlcGlkIChIT1QtaW5kZXhlZCkuCisjCisjIEVudiB2YXJzOgorIyAgIFND QUxFICAgICAgIC0tIHBnYmVuY2ggLXMgKGFsc28gbXVsdGlwbGllciBmb3Igc2l1X3RhYmxl IHJvdyBjb3VudCA9IFNDQUxFKjEwMGspCisjICAgQ0xJRU5UUyAgICAgLS0gcGdiZW5jaCAt YworIyAgIFRIUkVBRFMgICAgIC0tIHBnYmVuY2ggLWoKKyMgICBEVVJBVElPTiAgICAtLSBw Z2JlbmNoIC1UIChzZWNvbmRzIHBlciB3b3JrbG9hZCkKKyMgICBXSURFX0NPTFMgICAtLSAj IG9mIGluZGV4ZWQgY29sdW1ucyBpbiB0aGUgd2lkZV90YWJsZSAoZGVmYXVsdCAxNikKKyMg ICBXSURFX1NURVBTICAtLSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiAidXBkYXRlZCBjb2x1 bW5zIiBjb3VudHMgZm9yCisjICAgICAgICAgICAgICAgICB0aGUgd2lkZSB3b3JrbG9hZCAo ZGVmYXVsdCAiMCwxLDQsOCxXSURFX0NPTFMiKQorIyAgIFBPUlQgICAgICAgIC0tIHBvc3Rn cmVzIHBvcnQgKGRlZmF1bHQgNTc0ODApCisjCisjIEZvciBlYWNoIHZhcmlhbnQgaW4ge21h c3RlciwgdGVwaWR9OgorIyAgIGluaXRkYiBmcmVzaCBwZ2RhdGEsIHN0YXJ0IHBvc3RncmVz LCBjcmVhdGUgdGVzdCBvYmplY3RzLAorIyAgIHJ1biB3b3JrbG9hZHMgKHBnYmVuY2ggLU4g c2ltcGxlX3VwZGF0ZSwgaG90X2luZGV4ZWRfdXBkYXRlLCBob3RfaW5kZXhlZF9taXhlZCwK KyMgICByZWFkX2luZGV4c2NhbiwgYW5kIHdpZGVfTiBmb3IgZWFjaCB2YWx1ZSBpbiBXSURF X1NURVBTKSwgY29sbGVjdCBUUFMgKyBIT1QKKyMgICBjb3VudHMgKyBXQUwgZGVsdGEgKyBw ZWFrIENQVS9SU1Mgc2FtcGxlZCB2aWEgcGlkc3RhdC4KKyMgRW1pdHMgQ1NWICsgTWFya2Rv d24gc3VtbWFyeSB1bmRlciAvc2NyYXRjaC9zaXUtYmVuY2gvcmVzdWx0cy8uCitzZXQgLWV1 byBwaXBlZmFpbAorCitCRU5DSD0ke0JFTkNIOi0vc2NyYXRjaC9zaXUtYmVuY2h9CitTQ0FM RT0ke1NDQUxFOi0yMH0KK0NMSUVOVFM9JHtDTElFTlRTOi0xNn0KK1RIUkVBRFM9JHtUSFJF QURTOi04fQorRFVSQVRJT049JHtEVVJBVElPTjotMTIwfQorV0lERV9DT0xTPSR7V0lERV9D T0xTOi0xNn0KK1dJREVfU1RFUFM9JHtXSURFX1NURVBTOi0wLDEsNCw4LDE2fQorUE9SVD0k e1BPUlQ6LTU3NDgwfQorCitUUz0kKGRhdGUgLXUgKyVZJW0lZFQlSCVNJVNaKQorT1VUPSRC RU5DSC9yZXN1bHRzLyRUUy5jc3YKK0xPR0RJUj0kQkVOQ0gvbG9ncy8kVFMKK21rZGlyIC1w ICIkTE9HRElSIgorZWNobyAidmFyaWFudCx3b3JrbG9hZCx0cHMsbGF0ZW5jeV9hdmdfbXMs Y2xhc3NpY19ob3RfdXBkYXRlcyxob3RfaW5kZXhlZF91cGRhdGVzLG5vbl9ob3RfdXBkYXRl cyx0b3RhbF91cGRhdGVzLHdhbF9ieXRlcyxibG9hdF9wYWdlc19iZWZvcmUsYmxvYXRfcGFn ZXNfYWZ0ZXIsaW5kZXhfc2l6ZV9iZWZvcmUsaW5kZXhfc2l6ZV9hZnRlcixjcHVfcGN0X3Bl YWsscnNzX21pYl9wZWFrLHBlcl9pbmRleF9iZWZvcmUscGVyX2luZGV4X2FmdGVyIiA+ICIk T1VUIgorZWNobyAiPT09IHNpdS1iZW5jaCBBL0IgcnVuICRUUyAtPiAkT1VUIChzY2FsZT0k U0NBTEUgY2xpZW50cz0kQ0xJRU5UUyB0aHJlYWRzPSRUSFJFQURTIGR1cmF0aW9uPSR7RFVS QVRJT059cykiCisKK2Jpbl9vZigpIHsKKyAgZWNobyAiJEJFTkNILyQxL3Vzci9sb2NhbC9w Z3NxbC9iaW4iCit9CisKK0xEX29mKCkgeworICBsb2NhbCBiYXNlPSRCRU5DSC8kMS91c3Iv bG9jYWwvcGdzcWwKKyAgIyBMaW51eCBkaXN0cm9zIHRoYXQgc3BsaXQgNjQtYml0IGxpYnMg dXNlIGxpYjY0OyBtb3N0IG90aGVycyB1c2UgbGliLgorICBpZiBbIC1kICIkYmFzZS9saWI2 NCIgXTsgdGhlbgorICAgIGVjaG8gIiRiYXNlL2xpYjY0IgorICBlbHNlCisgICAgZWNobyAi JGJhc2UvbGliIgorICBmaQorfQorCitwc3FsX2FzKCkgeworICBsb2NhbCB2PSQxOyBzaGlm dAorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9w c3FsIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9zdGdyZXMgLVggIiRAIgorfQorCitwZ2Jl bmNoX2FzKCkgeworICBsb2NhbCB2PSQxOyBzaGlmdAorICBMRF9MSUJSQVJZX1BBVEg9IiQo TERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9wZ2JlbmNoIiAtaCAvdG1wIC1wICIkUE9S VCIgLVUgcG9zdGdyZXMgIiRAIgorfQorCitzdGFydF9wZygpIHsKKyAgbG9jYWwgdj0kMQor ICBsb2NhbCBkYXRhZGlyPSRCRU5DSC9fZGF0YV8kdgorICBbIC1kICIkZGF0YWRpciIgXSAm JiBmaW5kICIkZGF0YWRpciIgLW1pbmRlcHRoIDEgLWRlbGV0ZSAmJiBybWRpciAiJGRhdGFk aXIiCisgIG1rZGlyIC1wICIkZGF0YWRpciIKKworICBMRF9MSUJSQVJZX1BBVEg9IiQoTERf b2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9pbml0ZGIiIC1EICIkZGF0YWRpciIgLVUgcG9z dGdyZXMgPiIkTE9HRElSL2luaXRkYl8kdi5sb2ciIDI+JjEKKyAgbG9jYWwgc2I9JHtTSEFS RURfQlVGRkVSUzotNTEyTUJ9CisgIGNhdCA+PiAiJGRhdGFkaXIvcG9zdGdyZXNxbC5jb25m IiA8PEVPRgorc2hhcmVkX2J1ZmZlcnMgPSAkc2IKK3dvcmtfbWVtID0gMzJNQgorbWF4X3dh bF9zaXplID0gNEdCCitzeW5jaHJvbm91c19jb21taXQgPSBvbgorY2hlY2twb2ludF90aW1l b3V0ID0gMTBtaW4KK3dhbF9sZXZlbCA9IHJlcGxpY2EKK2xvZ19kZXN0aW5hdGlvbiA9ICdz dGRlcnInCitsb2dnaW5nX2NvbGxlY3RvciA9IG9mZgorcG9ydCA9ICRQT1JUCitFT0YKKyAg TERfTElCUkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcGdfY3Rs IiAtRCAiJGRhdGFkaXIiIFwKKyAgICAtbyAiLXAgJFBPUlQiIC1sICIkTE9HRElSL3BnXyR2 LmxvZyIgc3RhcnQgPi9kZXYvbnVsbAorICBzbGVlcCAyCit9CisKK3N0b3BfcGcoKSB7Cisg IGxvY2FsIHY9JDEKKyAgbG9jYWwgZGF0YWRpcj0kQkVOQ0gvX2RhdGFfJHYKKyAgTERfTElC UkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcGdfY3RsIiAtRCAi JGRhdGFkaXIiIHN0b3AgLW0gZmFzdCA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQorfQorCitw b3N0bWFzdGVyX3BpZCgpIHsKKyAgbG9jYWwgdj0kMQorICBoZWFkIC0xICIkQkVOQ0gvX2Rh dGFfJHYvcG9zdG1hc3Rlci5waWQiIDI+L2Rldi9udWxsCit9CisKK3NldHVwX3NjaGVtYXMo KSB7CisgIGxvY2FsIHY9JDEKKyAgc2VlZF9zaXVfdGFibGUgIiR2IgorICBzZWVkX3dpZGVf dGFibGUgIiR2IgorICAjIHBnYmVuY2ggc2NoZW1hIGZvciBidWlsdC1pbiBzaW1wbGVfdXBk YXRlLgorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYi KS9wZ2JlbmNoIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9zdGdyZXMgXAorICAgIC1pIC1z ICIkU0NBTEUiIC1xIHBvc3RncmVzID4iJExPR0RJUi9wZ2JlbmNoX2luaXRfJHYubG9nIiAy PiYxCit9CisKKyMgc2VlZF9zaXVfdGFibGU6IChyZSljcmVhdGUgdGhlIG5hcnJvdyB0YWJs ZSB1c2VkIGJ5IHRoZSBzaXVfKiB3b3JrbG9hZHMuCitzZWVkX3NpdV90YWJsZSgpIHsKKyAg bG9jYWwgdj0kMQorICBsb2NhbCByb3dzPSQoKFNDQUxFICogMTAwMDAwKSkKKyAgcHNxbF9h cyAiJHYiIDw8U1FMCitEUk9QIFRBQkxFIElGIEVYSVNUUyBzaXVfdGFibGU7CitDUkVBVEUg VEFCTEUgc2l1X3RhYmxlKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCwgYyBpbnQsIGQgaW50 LCBlIHRleHQpOworQ1JFQVRFIElOREVYIHNpdV9iIE9OIHNpdV90YWJsZShiKTsKK0NSRUFU RSBJTkRFWCBzaXVfYyBPTiBzaXVfdGFibGUoYyk7CitDUkVBVEUgSU5ERVggc2l1X2QgT04g c2l1X3RhYmxlKGQpOworSU5TRVJUIElOVE8gc2l1X3RhYmxlCisgIFNFTEVDVCBpLCBpLCBp LCBpLCByZXBlYXQoJ3gnLCAyMCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgJHJvd3MpIEFT IGk7CitWQUNVVU0gKEZVTEwsIEFOQUxZWkUpIHNpdV90YWJsZTsKK0NIRUNLUE9JTlQ7CitT UUwKK30KKworIyBzZWVkX3dpZGVfdGFibGU6IChyZSljcmVhdGUgdGhlIHdpZGUgdGFibGUg d2l0aCBXSURFX0NPTFMgaW5kZXhlZCBjb2x1bW5zLgorc2VlZF93aWRlX3RhYmxlKCkgewor ICBsb2NhbCB2PSQxCisgIGxvY2FsIGNvbGRlZnM9IiIgaW5zZXJ0Y29scz0iIiBpbnNlcnR2 YWxzPSIiIGlkeGxpc3Q9IiIKKyAgZm9yIGkgaW4gJChzZXEgMSAiJFdJREVfQ09MUyIpOyBk bworICAgIGNvbGRlZnMrPSIsIGMkaSBpbnQiCisgICAgaW5zZXJ0Y29scys9IiwgYyRpIgor ICAgIGluc2VydHZhbHMrPSIsIGkiCisgICAgaWR4bGlzdCs9IkNSRUFURSBJTkRFWCB3aWRl X2MkaSBPTiB3aWRlX3RhYmxlKGMkaSk7ICIKKyAgZG9uZQorICBsb2NhbCB3aWRlX3Jvd3M9 JCgoU0NBTEUgKiAxMDAwKSkKKyAgcHNxbF9hcyAiJHYiIDw8U1FMCitEUk9QIFRBQkxFIElG IEVYSVNUUyB3aWRlX3RhYmxlOworQ1JFQVRFIFRBQkxFIHdpZGVfdGFibGUoaWQgaW50IFBS SU1BUlkgS0VZICRjb2xkZWZzKTsKKyRpZHhsaXN0CitJTlNFUlQgSU5UTyB3aWRlX3RhYmxl KGlkICRpbnNlcnRjb2xzKSBTRUxFQ1QgaSAkaW5zZXJ0dmFscyBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAkd2lkZV9yb3dzKSBBUyBpOworVkFDVVVNIChGVUxMLCBBTkFMWVpFKSB3aWRl X3RhYmxlOworQ0hFQ0tQT0lOVDsKK1NRTAorfQorCisjIHJlc2V0X3N0YXRlOiByZXN0b3Jl IGEgd29ya2xvYWQncyB0YXJnZXQgdGFibGUgdG8gaXRzIHNlZWRlZCBiYXNlbGluZS4KKyMg VXNlZCBiZXR3ZWVuIHdvcmtsb2FkcyBzbyBwZXItd29ya2xvYWQgYmxvYXQvaWR4X3NpemUg ZGVsdGFzIGFyZSBub3QKKyMgcG9sbHV0ZWQgYnkgY2FycnlvdmVyIGZyb20gZWFybGllciB3 b3JrbG9hZHMgaW4gdGhlIHNhbWUgdmFyaWFudCBydW4uCisjIEZvciBwZ2JlbmNoX2FjY291 bnRzIHdlIHJlLWluaXRpYWxpc2UgdmlhIGBwZ2JlbmNoIC1pYDsgZm9yIG91cgorIyBoYW5k LXJvbGxlZCB0YWJsZXMgd2UgZHJvcCArIHJlY3JlYXRlICsgcmVzZWVkLgorcmVzZXRfc3Rh dGUoKSB7CisgIGxvY2FsIHY9JDEgdGFibGU9JDIKKyAgY2FzZSAiJHRhYmxlIiBpbgorICAg IHBnYmVuY2hfYWNjb3VudHMpCisgICAgICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2 IikiICIkKGJpbl9vZiAiJHYiKS9wZ2JlbmNoIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9z dGdyZXMgXAorICAgICAgICAtaSAtcyAiJFNDQUxFIiAtcSBwb3N0Z3JlcyA+PiIkTE9HRElS L3BnYmVuY2hfaW5pdF8kdi5sb2ciIDI+JjEKKyAgICAgIHBzcWxfYXMgIiR2IiAtYyAiQ0hF Q0tQT0lOVCIgPi9kZXYvbnVsbAorICAgICAgOzsKKyAgICBzaXVfdGFibGUpCisgICAgICBz ZWVkX3NpdV90YWJsZSAiJHYiCisgICAgICA7OworICAgIHdpZGVfdGFibGUpCisgICAgICBz ZWVkX3dpZGVfdGFibGUgIiR2IgorICAgICAgOzsKKyAgICAqKQorICAgICAgZWNobyAicmVz ZXRfc3RhdGU6IHVua25vd24gdGFibGUgJHRhYmxlIiA+JjIKKyAgICAgIHJldHVybiAxCisg ICAgICA7OworICBlc2FjCisgIHBzcWxfYXMgIiR2IiAtYyAiU0VMRUNUIHBnX3N0YXRfcmVz ZXRfc2luZ2xlX3RhYmxlX2NvdW50ZXJzKCckdGFibGUnOjpyZWdjbGFzczo6b2lkKSIgPi9k ZXYvbnVsbAorfQorCitibG9hdF9zdGF0cygpIHsKKyAgbG9jYWwgdj0kMSB0YWJsZT0kMgor ICBwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX3RhYmxlX3NpemUoJyR0YWJsZScpLzgx OTIgfHwgJywnIHx8IHBnX2luZGV4ZXNfc2l6ZSgnJHRhYmxlJykiCit9CisKKyMgc2l1X2Nv dW50OiBudW1iZXIgb2YgSE9ULWluZGV4ZWQgdXBkYXRlcyBvYnNlcnZlZCBvbiAkdGFibGUg c2luY2UgaXRzCisjIHBnc3RhdCBjb3VudGVycyB3ZXJlIGxhc3QgcmVzZXQuICBSZXR1cm5z ICIwIiBvbiBtYXN0ZXIgKHdoZXJlIHRoZQorIyBjb3VudGVyIGNvbHVtbiBkb2VzIG5vdCBl eGlzdCkgc28gdGhlIENTViBjb2x1bW4gc3RheXMgbnVtZXJpYy4KK3NpdV9jb3VudCgpIHsK KyAgbG9jYWwgdj0kMSB0YWJsZT0kMgorICBsb2NhbCB2YWwKKyAgdmFsPSQocHNxbF9hcyAi JHYiIC1BdGMgXAorICAgICJTRUxFQ1QgY29hbGVzY2Uobl90dXBfaG90X2luZGV4ZWRfdXBk LCAwKSBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZT0nJHRhYmxlJyIg Mj4vZGV2L251bGwpCisgIFtbICIkdmFsIiA9fiBeWzAtOV0rJCBdXSB8fCB2YWw9MAorICBl Y2hvICIkdmFsIgorfQorCisjIHBlcl9pbmRleF9zaXplczogZW1pdCAiaWR4MT1ieXRlcztp ZHgyPWJ5dGVzOy4uLiIgZm9yIHRoZSBpbmRleGVzIG9uCisjICR0YWJsZSwgc29ydGVkIGJ5 IGluZGV4cmVsaWQuICBVc2VkIGJ5IHRoZSB3aWRlXyogd29ya2xvYWRzIHNvIHdlIGNhbgor IyBzZWUgcGVyLWNvbHVtbiBpbmRleCBncm93dGggcmF0aGVyIHRoYW4ganVzdCB0aGUgYWdn cmVnYXRlLiAgUmV0dXJucworIyB0aGUgbGl0ZXJhbCAibm9uZSIgd2hlbiAkdGFibGUgaGFz IG5vIGluZGV4ZXMuCitwZXJfaW5kZXhfc2l6ZXMoKSB7CisgIGxvY2FsIHY9JDEgdGFibGU9 JDIKKyAgbG9jYWwgb3V0CisgIG91dD0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1Qgc3Ry aW5nX2FnZygKKyAgICAgICAgICAgaS5yZWxuYW1lIHx8ICc9JyB8fCBwZ19yZWxhdGlvbl9z aXplKGkub2lkKTo6dGV4dCwKKyAgICAgICAgICAgJzsnIE9SREVSIEJZIGkub2lkKQorICAg ICAgICAgRlJPTSBwZ19jbGFzcyB0CisgICAgICAgICBKT0lOIHBnX2luZGV4IGl4IE9OIGl4 LmluZHJlbGlkID0gdC5vaWQKKyAgICAgICAgIEpPSU4gcGdfY2xhc3MgaSAgT04gaS5vaWQg PSBpeC5pbmRleHJlbGlkCisgICAgICAgICBXSEVSRSB0LnJlbG5hbWUgPSAnJHRhYmxlJyIp CisgIFsgLW4gIiRvdXQiIF0gfHwgb3V0PSJub25lIgorICBlY2hvICIkb3V0IgorfQorCitz YW1wbGVfcGVhaygpIHsKKyAgIyBTYW1wbGUgQ1BVIC8gUlNTIG9mIHRoZSBwb3N0bWFzdGVy IHRyZWUgZm9yICREVVJBVElPTis1IHNlY29uZHMuCisgICMgV3JpdGVzICJwZWFrX2NwdV9w Y3QscGVha19yc3NfbWliIiB0byB0aGUgZ2l2ZW4gb3V0ZmlsZS4gIFBvcnRhYmxlIGFjcm9z cworICAjIExpbnV4IC8gRnJlZUJTRCAoZmFsbHMgYmFjayB0byBwZ3JlcCArIHBlci1waWQg cHMgd2hlcmUgLS1wcGlkIGlzbid0CisgICMgYXZhaWxhYmxlKS4gIFJldHVybnMgJ05BLE5B JyBpZiB0aGUgc2FtcGxlciBjYW4ndCBjb2xsZWN0IHVzZWZ1bCBkYXRhLgorICBsb2NhbCBv dXRmaWxlPSQxIHY9JDIKKyAgbG9jYWwgbGVhZGVyCisgIGxlYWRlcj0kKHBvc3RtYXN0ZXJf cGlkICIkdiIpCisgIFsgLXogIiRsZWFkZXIiIF0gJiYgeyBlY2hvICJOQSxOQSIgPiAiJG91 dGZpbGUiOyByZXR1cm47IH0KKyAgbG9jYWwgZHVyPSQoKCBEVVJBVElPTiArIDUgKSkKKyAg KAorICAgIGxvY2FsIG1heF9jcHU9MAorICAgIGxvY2FsIG1heF9yc3M9MAorICAgIGxvY2Fs IHQwPSQoZGF0ZSArJXMpCisgICAgd2hpbGUgOjsgZG8KKyAgICAgICMgQ2hpbGRyZW4gb2Yg dGhlIGxlYWRlciArIHRoZSBsZWFkZXIgaXRzZWxmLgorICAgICAgbG9jYWwgcGlkcworICAg ICAgcGlkcz0kKCAocGdyZXAgLVAgIiRsZWFkZXIiIDI+L2Rldi9udWxsOyBlY2hvICIkbGVh ZGVyIikgfCB0ciAnXG4nICcgJykKKyAgICAgIGxvY2FsIHNhbXBsZQorICAgICAgc2FtcGxl PSQocHMgLW8gcGNwdT0scnNzPSAtcCAkcGlkcyAyPi9kZXYvbnVsbCB8IFwKKyAgICAgICAg ICAgICAgIGF3ayAne2NwdSs9JDE7IHJzcys9JDJ9IEVORHtwcmludGYgIiUuMWYgJWRcbiIs IGNwdSswLCByc3MrMH0nKQorICAgICAgbG9jYWwgYyByCisgICAgICByZWFkIC1yIGMgciA8 PDwiJHNhbXBsZSIKKyAgICAgIGlmIFsgLW4gIiR7YzotfSIgXSAmJiBbIC1uICIke3I6LX0i IF07IHRoZW4KKyAgICAgICAgYXdrIC12IG09IiRtYXhfY3B1IiAtdiBjPSIkYyIgJ0JFR0lO e2V4aXQgIShjPm0pfScgJiYgbWF4X2NwdT0kYworICAgICAgICBbICIkciIgLWd0ICIkbWF4 X3JzcyIgXSAyPi9kZXYvbnVsbCAmJiBtYXhfcnNzPSRyCisgICAgICBmaQorICAgICAgbG9j YWwgbm93PSQoZGF0ZSArJXMpCisgICAgICBbICQoKG5vdyAtIHQwKSkgLWdlICIkZHVyIiBd ICYmIGJyZWFrCisgICAgICBzbGVlcCAxCisgICAgZG9uZQorICAgIGxvY2FsIHJzc19taWI9 JCgoIG1heF9yc3MgLyAxMDI0ICkpCisgICAgZWNobyAiJG1heF9jcHUsJHJzc19taWIiID4g IiRvdXRmaWxlIgorICApICYKKyAgZWNobyAkIQorfQorCitydW5fb25lKCkgeworICBsb2Nh bCB2PSQxIHdvcmtsb2FkPSQyIHNjcmlwdD0kMyB0YWJsZT0kezQ6LXNpdV90YWJsZX0gZXh0 cmFfc2V0PSR7NTotfQorCisgIGxvY2FsIHdhbF9zdGFydCB3YWxfZW5kIGhvdF9zdGFydCBo b3RfZW5kIHRvdGFsX3N0YXJ0IHRvdGFsX2VuZCB0cHMgbGF0CisgIGxvY2FsIHNpdV9zdGFy dCBzaXVfZW5kCisgIGxvY2FsIGJsb2F0X2JlZm9yZSBibG9hdF9hZnRlciBpZHhfYmVmb3Jl IGlkeF9hZnRlcgorICBsb2NhbCBwZXJfaWR4X2JlZm9yZSBwZXJfaWR4X2FmdGVyCisgIHJl YWQgLXIgYmxvYXRfYmVmb3JlIGlkeF9iZWZvcmUgPDw8IiQoYmxvYXRfc3RhdHMgIiR2IiAi JHRhYmxlIiB8IHRyICwgJyAnKSIKKyAgcGVyX2lkeF9iZWZvcmU9JChwZXJfaW5kZXhfc2l6 ZXMgIiR2IiAiJHRhYmxlIikKKworICB3YWxfc3RhcnQ9JChwc3FsX2FzICIkdiIgLUF0YyAi U0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpOjp0ZXh0IikKKyAgaG90X3N0YXJ0PSQocHNx bF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF9ob3RfdXBkLDApIEZST00g cGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSckdGFibGUnIikKKyAgc2l1X3N0 YXJ0PSQoc2l1X2NvdW50ICIkdiIgIiR0YWJsZSIpCisgIHRvdGFsX3N0YXJ0PSQocHNxbF9h cyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF91cGQsMCkgRlJPTSBwZ19zdGF0 X3VzZXJfdGFibGVzIFdIRVJFIHJlbG5hbWU9JyR0YWJsZSciKQorCisgIGxvY2FsIG91dD0i JExPR0RJUi8ke3Z9XyR7d29ya2xvYWR9LmxvZyIKKyAgbG9jYWwgY3B1X3Jzc19maWxlPSRM T0dESVIvJHt2fV8ke3dvcmtsb2FkfS5jcHUKKyAgbG9jYWwgc2FtcGxlcl9waWQKKyAgc2Ft cGxlcl9waWQ9JChzYW1wbGVfcGVhayAiJGNwdV9yc3NfZmlsZSIgIiR2IikKKworICBzZXQg K2UKKyAgY2FzZSAiJHdvcmtsb2FkIiBpbgorICAgIHNpbXBsZV91cGRhdGUpCisgICAgICBw Z2JlbmNoX2FzICIkdiIgLU4gLWMgIiRDTElFTlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVS QVRJT04iIFwKKyAgICAgICAgLW4gcG9zdGdyZXMgPiIkb3V0IiAyPiYxCisgICAgICA7Owor ICAgIHdpZGVfKikKKyAgICAgICMgYnVpbGQgdGhlIFNFVCBjbGF1c2UgZnJvbSBleHRyYV9z ZXQgd2hpY2ggaXMgImMxPTp2LGMyPTp2LC4uLiIKKyAgICAgIHBnYmVuY2hfYXMgIiR2IiAt ZiA8KHNlZCAicy86d2lkZV9zZXRfY2xhdXNlLyRleHRyYV9zZXQvIiAiJHNjcmlwdCIpIFwK KyAgICAgICAgLWMgIiRDTElFTlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVSQVRJT04iIFwK KyAgICAgICAgLUQgInNjYWxlPSRTQ0FMRSIgLW4gcG9zdGdyZXMgPiIkb3V0IiAyPiYxCisg ICAgICA7OworICAgIHJlYWRfaW5kZXhzY2FuKQorICAgICAgIyByZWFkLW9ubHk7IHBhc3Mg dGhlIHJvdyBjb3VudCBzbyB0aGUgc2NyaXB0IGNhbiBwaWNrIHJhbmRvbSBrZXlzCisgICAg ICBwZ2JlbmNoX2FzICIkdiIgLWYgIiRzY3JpcHQiIC1jICIkQ0xJRU5UUyIgLWogIiRUSFJF QURTIiAtVCAiJERVUkFUSU9OIiBcCisgICAgICAgIC1EICJyb3dzPSQoKFNDQUxFICogMTAw MDAwKSkiIC1uIHBvc3RncmVzID4iJG91dCIgMj4mMQorICAgICAgOzsKKyAgICAqKQorICAg ICAgcGdiZW5jaF9hcyAiJHYiIC1mICIkc2NyaXB0IiAtYyAiJENMSUVOVFMiIC1qICIkVEhS RUFEUyIgLVQgIiREVVJBVElPTiIgXAorICAgICAgICAtbiBwb3N0Z3JlcyA+IiRvdXQiIDI+ JjEKKyAgICAgIDs7CisgIGVzYWMKKyAgc2V0IC1lCisKKyAgd2FpdCAiJHNhbXBsZXJfcGlk IiAyPi9kZXYvbnVsbCB8fCB0cnVlCisgIGxvY2FsIGNwdV9yc3MKKyAgY3B1X3Jzcz0kKGNh dCAiJGNwdV9yc3NfZmlsZSIgMj4vZGV2L251bGwgfHwgZWNobyAiTkEsTkEiKQorCisgIHRw cz0kKGF3ayAnL3RwcyA9IC97cHJpbnQgJDM7IGV4aXR9JyAiJG91dCIpCisgIGxhdD0kKGF3 ayAnL2xhdGVuY3kgYXZlcmFnZSA9IC97cHJpbnQgJDQ7IGV4aXR9JyAiJG91dCIpCisgIHRw cz0ke3RwczotTkF9CisgIGxhdD0ke2xhdDotTkF9CisKKyAgd2FsX2VuZD0kKHBzcWxfYXMg IiR2IiAtQXRjICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCk6OnRleHQiKQorICBob3Rf ZW5kPSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF9ob3RfdXBk LDApIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSckdGFibGUnIikK KyAgc2l1X2VuZD0kKHNpdV9jb3VudCAiJHYiICIkdGFibGUiKQorICB0b3RhbF9lbmQ9JChw c3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIGNvYWxlc2NlKG5fdHVwX3VwZCwwKSBGUk9NIHBn X3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZT0nJHRhYmxlJyIpCisKKyAgbG9jYWwg d2FsX2J5dGVzCisgIHdhbF9ieXRlcz0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1QgcGdf d2FsX2xzbl9kaWZmKCckd2FsX2VuZCc6OnBnX2xzbiwgJyR3YWxfc3RhcnQnOjpwZ19sc24p OjpiaWdpbnQiKQorCisgICMgQ2FwdHVyZSBhIFdBTCByZWNvcmQtdHlwZSBoaXN0b2dyYW0g Zm9yIHRoaXMgd29ya2xvYWQuICBwZ193YWxkdW1wJ3MKKyAgIyAtLXN0YXRzPXJlY29yZCBv dXRwdXQgaXMgcmljaCAofjYwIGxpbmVzKSBzbyBzdGFzaCBpdCBpbiBMT0dESVIKKyAgIyBy YXRoZXIgdGhhbiB0cnlpbmcgdG8gZm9sZCBpbnRvIHRoZSBDU1YuICBUb2xlcmF0ZSBmYWls dXJlczogaWYgdGhlCisgICMgc2VnbWVudCBjb250YWluaW5nIHdhbF9zdGFydCBoYXMgYmVl biByZWN5Y2xlZCAocmFyZSB3aXRoCisgICMgbWF4X3dhbF9zaXplPTRHQiBidXQgcG9zc2li bGUgdW5kZXIgbG9uZyBjaGFpbmVkIHJ1bnMpLCB3ZSBlbWl0IGEKKyAgIyBub3RlIGFuZCBt b3ZlIG9uIGluc3RlYWQgb2YgYWJvcnRpbmcgdGhlIHdob2xlIHJ1bi4KKyAgbG9jYWwgd2Fs X3N0YXRzX2ZpbGU9JExPR0RJUi8ke3Z9XyR7d29ya2xvYWR9LndhbHN0YXRzCisgIExEX0xJ QlJBUllfUEFUSD0iJChMRF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnX3dhbGR1bXAi IFwKKyAgICAtLXN0YXRzPXJlY29yZCAtcCAiJEJFTkNIL19kYXRhXyR2L3BnX3dhbCIgXAor ICAgIC0tc3RhcnQ9IiR3YWxfc3RhcnQiIC0tZW5kPSIkd2FsX2VuZCIgXAorICAgID4gIiR3 YWxfc3RhdHNfZmlsZSIgMj4gIiR7d2FsX3N0YXRzX2ZpbGV9LmVyciIgXAorICAgIHx8IGVj aG8gInBnX3dhbGR1bXAgdW5hdmFpbGFibGUgZm9yIHRoaXMgcmFuZ2U7IHNlZSAke3dhbF9z dGF0c19maWxlfS5lcnIiID4gIiR3YWxfc3RhdHNfZmlsZSIKKworICByZWFkIC1yIGJsb2F0 X2FmdGVyIGlkeF9hZnRlciA8PDwiJChibG9hdF9zdGF0cyAiJHYiICIkdGFibGUiIHwgdHIg LCAnICcpIgorICBwZXJfaWR4X2FmdGVyPSQocGVyX2luZGV4X3NpemVzICIkdiIgIiR0YWJs ZSIpCisKKyAgbG9jYWwgaG90PSQoKGhvdF9lbmQgLSBob3Rfc3RhcnQpKQorICBsb2NhbCBz aXU9JCgoc2l1X2VuZCAtIHNpdV9zdGFydCkpCisgIGxvY2FsIHRvdD0kKCh0b3RhbF9lbmQg LSB0b3RhbF9zdGFydCkpCisgIGxvY2FsIGNsYXNzaWNfaG90PSQoKGhvdCAtIHNpdSkpCisg IGxvY2FsIG5vbl9ob3Q9JCgodG90IC0gaG90KSkKKworICBwcmludGYgJyVzLCVzLCVzLCVz LCVkLCVkLCVkLCVkLCVzLCVzLCVzLCVzLCVzLCVzLCVzLCVzXG4nIFwKKyAgICAiJHYiICIk d29ya2xvYWQiICIkdHBzIiAiJGxhdCIgIiRjbGFzc2ljX2hvdCIgIiRzaXUiICIkbm9uX2hv dCIgIiR0b3QiIFwKKyAgICAiJHdhbF9ieXRlcyIgXAorICAgICIkYmxvYXRfYmVmb3JlIiAi JGJsb2F0X2FmdGVyIiBcCisgICAgIiRpZHhfYmVmb3JlIiAiJGlkeF9hZnRlciIgXAorICAg ICIkY3B1X3JzcyIgIiRwZXJfaWR4X2JlZm9yZSIgIiRwZXJfaWR4X2FmdGVyIiA+PiAiJE9V VCIKKyAgcHJpbnRmICcgICUtOHMgJS0xNHMgdHBzPSUxMHMgbGF0PSU2cyBjbGFzc2ljX2hv dD0lN2QgaGk9JTdkIG5vbl9ob3Q9JTdkIHRvdD0lLTdkIHdhbD0lMTJzIGJsb2F0PSVzLT4l cyBpZHg9JXMtPiVzIGNwdV9yc3M9JXNcbicgXAorICAgICIkdiIgIiR3b3JrbG9hZCIgIiR0 cHMiICIkbGF0IiAiJGNsYXNzaWNfaG90IiAiJHNpdSIgIiRub25faG90IiAiJHRvdCIgIiR3 YWxfYnl0ZXMiIFwKKyAgICAiJGJsb2F0X2JlZm9yZSIgIiRibG9hdF9hZnRlciIgIiRpZHhf YmVmb3JlIiAiJGlkeF9hZnRlciIgIiRjcHVfcnNzIgorfQorCitidWlsZF93aWRlX3NldF9j bGF1c2UoKSB7CisgICMgZW1pdCBlLmcuICJjMT06dixjMj06diwuLi4sY049OnYiIGZvciBm aXJzdCBOIGNvbHMuCisgIGxvY2FsIG49JDEKKyAgaWYgWyAiJG4iIC1lcSAwIF07IHRoZW4K KyAgICAjIE5vIGluZGV4ZWQtY29sIHVwZGF0ZTsgdG91Y2ggYSBub24taW5kZXhlZCBjb2x1 bW4gKGlkICUgMSBzbyBpdCdzIGEgbm8tb3ApCisgICAgZWNobyAiaWQ9aWQiCisgICAgcmV0 dXJuCisgIGZpCisgIGxvY2FsIGNsYXVzZXM9IiIKKyAgZm9yIGkgaW4gJChzZXEgMSAiJG4i KTsgZG8KKyAgICBbIC1uICIkY2xhdXNlcyIgXSAmJiBjbGF1c2VzKz0iLCIKKyAgICBjbGF1 c2VzKz0iYyRpPTp2IgorICBkb25lCisgIGVjaG8gIiRjbGF1c2VzIgorfQorCitmb3IgdiBp biBtYXN0ZXIgdGVwaWQ7IGRvCisgIGVjaG8gIi0tLSB2YXJpYW50OiAkdiIKKyAgc3RvcF9w ZyAiJHYiIHx8IHRydWUKKyAgc3RhcnRfcGcgIiR2IgorICBzZXR1cF9zY2hlbWFzICIkdiIK KworICBydW5fb25lICIkdiIgc2ltcGxlX3VwZGF0ZSAnJyAgICAgICAgICAgICAgICAgICAg cGdiZW5jaF9hY2NvdW50cworICByZXNldF9zdGF0ZSAiJHYiIHNpdV90YWJsZQorICBydW5f b25lICIkdiIgaG90X2luZGV4ZWRfdXBkYXRlICAgICIkQkVOQ0gvc2NyaXB0cy9ob3RfaW5k ZXhlZF91cGRhdGUuc3FsIiAgc2l1X3RhYmxlCisgIHJlc2V0X3N0YXRlICIkdiIgc2l1X3Rh YmxlCisgIHJ1bl9vbmUgIiR2IiBob3RfaW5kZXhlZF9taXhlZCAgICAgIiRCRU5DSC9zY3Jp cHRzL2hvdF9pbmRleGVkX21peGVkLnNxbCIgICBzaXVfdGFibGUKKyAgcmVzZXRfc3RhdGUg IiR2IiBzaXVfdGFibGUKKyAgcnVuX29uZSAiJHYiIHJlYWRfaW5kZXhzY2FuICAgICAgICAi JEJFTkNIL3NjcmlwdHMvcmVhZF9pbmRleHNjYW4uc3FsIiAgICAgIHNpdV90YWJsZQorCisg IGZvciBuIGluICR7V0lERV9TVEVQUy8vLC8gfTsgZG8KKyAgICByZXNldF9zdGF0ZSAiJHYi IHdpZGVfdGFibGUKKyAgICBydW5fb25lICIkdiIgIndpZGVfJHtufSIgIiRCRU5DSC9zY3Jp cHRzL3dpZGVfdXBkYXRlLnNxbCIgd2lkZV90YWJsZSBcCisgICAgICAgICAgICAiJChidWls ZF93aWRlX3NldF9jbGF1c2UgIiRuIikiCisgIGRvbmUKKworICBzdG9wX3BnICIkdiIKK2Rv bmUKKworZWNobyAiPT09IHJlc3VsdHM6ICRPVVQiCitjb2x1bW4gLXQgLXMsICIkT1VUIiB8 IGhlYWQgLTUwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRz L3NvYWsuc2ggYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3NvYWsuc2gKbmV3 IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAuLjZkMTI3ZjFjMDEyCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9zb2FrLnNo CkBAIC0wLDAgKzEsMTI4IEBACisjIS91c3IvYmluL2VudiBiYXNoCisjIHRlcGlkIHNvYWs6 IHJ1biBob3RfaW5kZXhlZF91cGRhdGUgZm9yICREVVJBVElPTiBzZWNvbmRzIG9uIGVhY2gg dmFyaWFudCwgc2FtcGxpbmcKKyMgVFBTIC8gSE9ULXJhdGUgLyBXQUwgdm9sdW1lIC8gdGFi bGUraW5kZXggYmxvYXQgZXZlcnkgJFNBTVBMRSBzZWNvbmRzLgorIyBFbWl0cyBhIENTViB3 aXRoIG9uZSBzYW1wbGUgcm93IHBlciB0aWNrIHBlciB2YXJpYW50Lgorc2V0IC1ldW8gcGlw ZWZhaWwKKworQkVOQ0g9JHtCRU5DSDotL3NjcmF0Y2gvc2l1LWJlbmNofQorU0NBTEU9JHtT Q0FMRTotNTB9CitDTElFTlRTPSR7Q0xJRU5UUzotMTZ9CitUSFJFQURTPSR7VEhSRUFEUzot OH0KK0RVUkFUSU9OPSR7RFVSQVRJT046LTkwMH0gICAgICMgMTUgbWludXRlcworU0FNUExF PSR7U0FNUExFOi02MH0gICAgICAgICAgIyBldmVyeSA2MCBzCitQT1JUPSR7UE9SVDotNTc1 MDN9CitTSEFSRURfQlVGRkVSUz0ke1NIQVJFRF9CVUZGRVJTOi0yR0J9CisKK1RTPSQoZGF0 ZSAtdSArJVklbSVkVCVIJU0lU1opCitPVVQ9JEJFTkNIL3Jlc3VsdHMvc29ha18kVFMuY3N2 CitMT0dESVI9JEJFTkNIL2xvZ3Mvc29ha18kVFMKK21rZGlyIC1wICIkTE9HRElSIgorZWNo byAidmFyaWFudCx0X3NlY3MsdHBzX2luc3RhbnQsaG90X3BjdF9pbnN0YW50LGhlYXBfcGFn ZXMsaW5kZXhfYnl0ZXMsd2FsX2J5dGVzX3NpbmNlX3N0YXJ0LG5fZGVhZF90dXAiID4gIiRP VVQiCitlY2hvICI9PT0gc29hayAkVFMgLT4gJE9VVCIKKworYmluX29mKCkgIHsgZWNobyAi JEJFTkNILyQxL3Vzci9sb2NhbC9wZ3NxbC9iaW4iOyB9CitMRF9vZigpICAgeyBsb2NhbCBi PSRCRU5DSC8kMS91c3IvbG9jYWwvcGdzcWw7IFsgLWQgIiRiL2xpYjY0IiBdICYmIGVjaG8g IiRiL2xpYjY0IiB8fCBlY2hvICIkYi9saWIiOyB9CisKK3BzcWxfYXMoKSB7IGxvY2FsIHY9 JDE7IHNoaWZ0OyBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAi JHYiKS9wc3FsIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9zdGdyZXMgLVggIiRAIjsgfQor cGdiZW5jaF9hcygpIHsgbG9jYWwgdj0kMTsgc2hpZnQ7IExEX0xJQlJBUllfUEFUSD0iJChM RF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnYmVuY2giIC1oIC90bXAgLXAgIiRQT1JU IiAtVSBwb3N0Z3JlcyAiJEAiOyB9CisKK3N0YXJ0X3BnKCkgeworICBsb2NhbCB2PSQxIGRh dGFkaXI9JEJFTkNIL19kYXRhXyR2CisgIFsgLWQgIiRkYXRhZGlyIiBdICYmIGZpbmQgIiRk YXRhZGlyIiAtbWluZGVwdGggMSAtZGVsZXRlICYmIHJtZGlyICIkZGF0YWRpciIKKyAgbWtk aXIgLXAgIiRkYXRhZGlyIgorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIk KGJpbl9vZiAiJHYiKS9pbml0ZGIiIC1EICIkZGF0YWRpciIgLVUgcG9zdGdyZXMgPiIkTE9H RElSL2luaXRkYl8kdi5sb2ciIDI+JjEKKyAgY2F0ID4+ICIkZGF0YWRpci9wb3N0Z3Jlc3Fs LmNvbmYiIDw8RU9GCitzaGFyZWRfYnVmZmVycyA9ICRTSEFSRURfQlVGRkVSUword29ya19t ZW0gPSAzMk1CCittYXhfd2FsX3NpemUgPSA4R0IKK3N5bmNocm9ub3VzX2NvbW1pdCA9IG9u CitjaGVja3BvaW50X3RpbWVvdXQgPSAxMG1pbgord2FsX2xldmVsID0gcmVwbGljYQorYXV0 b3ZhY3V1bSA9IG9uCithdXRvdmFjdXVtX25hcHRpbWUgPSAxMHMKK2F1dG92YWN1dW1fdmFj dXVtX3RocmVzaG9sZCA9IDUwCithdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IgPSAw LjEKK3BvcnQgPSAkUE9SVAorRU9GCisgIExEX0xJQlJBUllfUEFUSD0iJChMRF9vZiAiJHYi KSIgIiQoYmluX29mICIkdiIpL3BnX2N0bCIgLUQgIiRkYXRhZGlyIiBcCisgICAgLW8gIi1w ICRQT1JUIiAtbCAiJExPR0RJUi9wZ18kdi5sb2ciIHN0YXJ0ID4vZGV2L251bGwKKyAgc2xl ZXAgMgorfQorCitzdG9wX3BnKCkgeworICBsb2NhbCB2PSQxCisgIExEX0xJQlJBUllfUEFU SD0iJChMRF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnX2N0bCIgLUQgIiRCRU5DSC9f ZGF0YV8kdiIgc3RvcCAtbSBmYXN0ID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCit9CisKK3Nl dHVwKCkgeworICBsb2NhbCB2PSQxIHJvd3M9JCgoU0NBTEUgKiAxMDAwMDApKQorICBwc3Fs X2FzICIkdiIgPDxTUUwKK0RST1AgVEFCTEUgSUYgRVhJU1RTIHNpdV90YWJsZTsKK0NSRUFU RSBUQUJMRSBzaXVfdGFibGUoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50LCBjIGludCwgZCBp bnQsIGUgdGV4dCk7CitDUkVBVEUgSU5ERVggc2l1X2IgT04gc2l1X3RhYmxlKGIpOworQ1JF QVRFIElOREVYIHNpdV9jIE9OIHNpdV90YWJsZShjKTsKK0NSRUFURSBJTkRFWCBzaXVfZCBP TiBzaXVfdGFibGUoZCk7CitJTlNFUlQgSU5UTyBzaXVfdGFibGUKKyAgU0VMRUNUIGksIGks IGksIGksIHJlcGVhdCgneCcsIDIwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAkcm93cykg QVMgaTsKK1ZBQ1VVTSAoQU5BTFlaRSkgc2l1X3RhYmxlOworU1FMCit9CisKK3J1bl9zb2Fr KCkgeworICBsb2NhbCB2PSQxCisgIGVjaG8gIi0tLSBzb2FrICR2IGZvciAke0RVUkFUSU9O fXMsIHNhbXBsaW5nIGV2ZXJ5ICR7U0FNUExFfXMiCisgIHN0b3BfcGcgIiR2IiB8fCB0cnVl CisgIHN0YXJ0X3BnICIkdiIKKyAgc2V0dXAgIiR2IgorICBsb2NhbCB3YWwwCisgIHdhbDA9 JChwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpOjp0ZXh0 IikKKyAgbG9jYWwgaG90MCB0b3QwCisgIGhvdDA9JChwc3FsX2FzICIkdiIgLUF0YyAiU0VM RUNUIGNvYWxlc2NlKG5fdHVwX2hvdF91cGQsMCkgRlJPTSBwZ19zdGF0X3VzZXJfdGFibGVz IFdIRVJFIHJlbG5hbWU9J3NpdV90YWJsZSciKQorICB0b3QwPSQocHNxbF9hcyAiJHYiIC1B dGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF91cGQsMCkgICAgIEZST00gcGdfc3RhdF91c2Vy X3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKyAgbG9jYWwgcHJldl9ob3Q9 JGhvdDAgcHJldl90b3Q9JHRvdDAKKworICAjIERyaXZlIHBnYmVuY2ggaW4gdGhlIGJhY2tn cm91bmQ7IHNhbXBsZXIgaW4gZm9yZWdyb3VuZC4KKyAgcGdiZW5jaF9hcyAiJHYiIC1mICIk QkVOQ0gvc2NyaXB0cy9ob3RfaW5kZXhlZF91cGRhdGUuc3FsIiBcCisgICAgLWMgIiRDTElF TlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVSQVRJT04iIFwKKyAgICAtUCAiJFNBTVBMRSIg LW4gcG9zdGdyZXMgPiIkTE9HRElSL3BnYmVuY2hfJHYubG9nIiAyPiYxICYKKyAgbG9jYWwg cGdiPSQhCisKKyAgbG9jYWwgdD0wCisgIHdoaWxlIFsgIiR0IiAtbHQgIiREVVJBVElPTiIg XTsgZG8KKyAgICBzbGVlcCAiJFNBTVBMRSIKKyAgICB0PSQoKHQgKyBTQU1QTEUpKQorICAg IGxvY2FsIG5vd19ob3Qgbm93X3RvdCB3YWxfbm93IHdhbF9ieXRlcyBoZWFwX3BhZ2VzIGlk eF9ieXRlcyBuX2RlYWQKKyAgICBub3dfaG90PSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVD VCBjb2FsZXNjZShuX3R1cF9ob3RfdXBkLDApIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBX SEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKyAgICBub3dfdG90PSQocHNxbF9hcyAiJHYi IC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF91cGQsMCkgICAgIEZST00gcGdfc3RhdF91 c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKyAgICB3YWxfbm93PSQo cHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKTo6dGV4dCIp CisgICAgd2FsX2J5dGVzPSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBwZ193YWxfbHNu X2RpZmYoJyR3YWxfbm93Jzo6cGdfbHNuLCAnJHdhbDAnOjpwZ19sc24pOjpiaWdpbnQiKQor ICAgIGhlYXBfcGFnZXM9JChwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX3RhYmxlX3Np emUoJ3NpdV90YWJsZScpLzgxOTIiKQorICAgIGlkeF9ieXRlcz0kKHBzcWxfYXMgIiR2IiAt QXRjICJTRUxFQ1QgcGdfaW5kZXhlc19zaXplKCdzaXVfdGFibGUnKSIpCisgICAgbl9kZWFk PSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX2RlYWRfdHVwLDApIEZS T00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKwor ICAgIGxvY2FsIGRfaG90PSQoKG5vd19ob3QgLSBwcmV2X2hvdCkpCisgICAgbG9jYWwgZF90 b3Q9JCgobm93X3RvdCAtIHByZXZfdG90KSkKKyAgICBsb2NhbCB0cHNfaSBob3RfcGN0Cisg ICAgaWYgWyAiJGRfdG90IiAtZ3QgMCBdOyB0aGVuCisgICAgICB0cHNfaT0kKGF3ayAtdiBk PSIkZF90b3QiIC12IHM9IiRTQU1QTEUiICdCRUdJTntwcmludGYgIiUuMWYiLCBkL3N9JykK KyAgICAgIGhvdF9wY3Q9JChhd2sgLXYgaD0iJGRfaG90IiAtdiB0PSIkZF90b3QiICdCRUdJ TntwcmludGYgIiUuMWYiLCAxMDAqaC90fScpCisgICAgZWxzZQorICAgICAgdHBzX2k9MDsg aG90X3BjdD0wCisgICAgZmkKKyAgICBwcmludGYgJyVzLCVkLCVzLCVzLCVzLCVzLCVzLCVz XG4nICIkdiIgIiR0IiAiJHRwc19pIiAiJGhvdF9wY3QiICIkaGVhcF9wYWdlcyIgIiRpZHhf Ynl0ZXMiICIkd2FsX2J5dGVzIiAiJG5fZGVhZCIgPj4gIiRPVVQiCisgICAgcHJpbnRmICcg ICUtNnMgdD0lLTVkIHRwcz0lOHMgaG90PSUtNXMlJSBoZWFwX3Bncz0lLTdzIGlkeD0lLTEy cyB3YWw9JS0xMnMgZGVhZD0lc1xuJyBcCisgICAgICAiJHYiICIkdCIgIiR0cHNfaSIgIiRo b3RfcGN0IiAiJGhlYXBfcGFnZXMiICIkaWR4X2J5dGVzIiAiJHdhbF9ieXRlcyIgIiRuX2Rl YWQiCisgICAgcHJldl9ob3Q9JG5vd19ob3QKKyAgICBwcmV2X3RvdD0kbm93X3RvdAorICBk b25lCisKKyAgd2FpdCAiJHBnYiIgMj4vZGV2L251bGwgfHwgdHJ1ZQorICBzdG9wX3BnICIk diIKK30KKworZm9yIHYgaW4gbWFzdGVyIHRlcGlkOyBkbworICBydW5fc29hayAiJHYiCitk b25lCisKK2VjaG8gIj09PSBzb2FrIHJlc3VsdHM6ICRPVVQiCitjb2x1bW4gLXQgLXMsICIk T1VUIiB8IGhlYWQgLTgwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9z Y3JpcHRzL3dpZGVfdXBkYXRlLnNxbCBiL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3Njcmlw dHMvd2lkZV91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5jMmMyZmYxNGFjNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2JlbmNobWFy a3Mvc2l1L3NjcmlwdHMvd2lkZV91cGRhdGUuc3FsCkBAIC0wLDAgKzEsNyBAQAorLS0gV2lk ZS10YWJsZSB3b3JrbG9hZC4gIFRoZSBzZXR1cCBzY3JpcHQgY3JlYXRlcyBhIHRhYmxlIHdp dGggV0lERV9DT0xTIGludGVnZXIKKy0tIGNvbHVtbnMsIGVhY2ggc2VwYXJhdGVseSBidHJl ZS1pbmRleGVkLiAgVGhlIHdvcmtsb2FkIFVQREFURXMgYQorLS0gY29uZmlndXJhYmxlIG51 bWJlciBvZiB0aG9zZSBpbmRleGVkIGNvbHVtbnMgcGVyIHRyYW5zYWN0aW9uCistLSAoV0lE RV9VUERDT0xTIGVudiB2YXIpIG9uIGEgcmFuZG9tIHJvdy4KK1xzZXQgcmlkIHJhbmRvbSgx LCA6c2NhbGUgKiAxMDAwKQorXHNldCB2IHJhbmRvbSgxLCAxMDAwMDAwMDAwKQorVVBEQVRF IHdpZGVfdGFibGUgU0VUIDp3aWRlX3NldF9jbGF1c2UgV0hFUkUgaWQgPSA6cmlkOwotLSAK Mi41MC4xCgo= --98b017876237f005fe98a17b40ccb28dde987108--