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 1wjJyD-0003DH-2d for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Jul 2026 16:57:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wjJxA-000N6I-0W for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Jul 2026 16:56:25 +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 1wjJVK-000KpK-3B for pgsql-hackers@lists.postgresql.org; Mon, 13 Jul 2026 16:27:40 +0000 Received: from fhigh-b4-smtp.messagingengine.com ([202.12.124.155]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wjJV7-00000000295-1j1A for pgsql-hackers@postgresql.org; Mon, 13 Jul 2026 16:27:39 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfhigh.stl.internal (Postfix) with ESMTP id 64E487A00E9 for ; Mon, 13 Jul 2026 12:27:22 -0400 (EDT) Received: from phl-imap-02 ([10.202.2.81]) by phl-compute-02.internal (MEProxy); Mon, 13 Jul 2026 12:27:22 -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 :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm2; t=1783960042; x=1784046442; bh=N8QCSrj6+P OI/81AyptAI25I/HcOo03B689YhjbzV6s=; b=FzyFAMyX+bjUppGkyBRtQxQrX/ KY6DxgNcJohlZXKEOZhrGIcRIvOslFObwLJg14HJaBEOE00WbroN7hfH2aW5FVow Q77Rb6dj5zj5+N7WWPkaJwFpx3D6CRLSFILo0Wzc0oB/fvVHu6l6kenixeiOdrXN WpQj1PQL5DMGcpW05JePZUBJrQION5v26ycJAhHgK6ei6oTTPAev//uN7y1TfQzv l1Nso8E9eFmyb8Kl3qYmX5yjO+g43o9nL3rmhix8l2tBePYhpgKVjWID6rNeVGSb f+3wQ4BO2VHxcQ+e0fxk0OB8sEnyB/oDSwDZgUeUfOXclL0gxC5nUdO3HCQQ== 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:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1783960042; x=1784046442; bh=N8QCSrj6+POI/81AyptAI25I/HcOo03B689 YhjbzV6s=; b=OWXBf4vocipT1zhnOqLdg9qeVLA7npLalsDPkA3ZIZiRrnoEuFB hHBnHyoAfE36G//k5GZ1id8FKLMBogkVO3vbUbhfuFPVCmoa1KtcwqE9uwJolxx0 +nMIMKKKLZ7VrK3TZOpnkPsr5hzf9Z54zRh4Ryzq8UJiw+0c/+kTpQaPnjy0emKV /TAFbHfUm38J/uGSBnoggTBZfrUeIXoqBlUIadNA+AG9TA3M4zX4tMlzJXAGO95b YrmN6dhZaPNjbhGC+XfF0MJGFE0rf9vFsut2YqzbiBF9DdlFKtsVEddzOTO2nxUh AY/eXlN0wkLa1V2ZO9p9UHmpLXfjqjPRHAw== X-ME-Sender: X-ME-Proxy-Cause: dmFkZTFFJJtlMXoFZBVmbsxEeOYeFh6RJXP/H1ta4bItGX90L42SqxufgWF+1pZNc/HTU7 TIBGv0bm/gzg56iIOSObP5pUpJP64FpiMgVnb/2rU3cKVBYCvWFAwhLleoOAGRxL8Liv3L 4witYd8JcZsqYto/ayn3/Gb2x9m7HKwrFJP7YMRTmNzTmnJRubsMwgdPVc7GNNvmN9Zucf i9TV7IMPR/ZW/EX6LPNTZev1jEx7F8sZ0yOE7wuTZ0wl3nHhkxsd1R+vtAlRBhIL32vgy8 GWQP8HxT/9AM0595qxGaARsUi5FWFOdD5LXNvbAb44HdhztLdsEsSCPVdppfnObgRF9AS2 zL/b68z9nQDbDBeRP30EDnz31MTkDgHZ+cl/Aq9vvBtLz9qeSwpw6O79y8r9wHmCsY0dbn +hIF7EAN7i335UOZyisR/r9qHdHfzo2V5g77YxxWQL7JfATJPCr6A6dIKE4Zaud0B0lp7U gc9ha6AUo+/HoKGFB2bp/MZeHoG2ygI6wKcTxifH+z/bzNGuT/ZHV+Tl4Bc+e6xGUVJBFk LUoGun50ceyheu627tWykcKTV/QtSL5Ztv1Ah6XhJqDodQpzVb0aXHvLXTX+Q88utHiLse 04d/LQ6SsjX89ZsnLTqI0esBSEgKWG9kmbAl2IhQ4Z5m2JnszeTjRbpsKhiw X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id C79D2700065; Mon, 13 Jul 2026 12:27:21 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: APOwk72ga2TB Date: Mon, 13 Jul 2026 12:26:23 -0400 From: "Greg Burd" To: pgsql-hackers Message-Id: In-Reply-To: <3dc5d57e-6c77-4713-b97e-bf0a5a891226@app.fastmail.com> References: <97d5e5a3-f8e2-49ec-bd52-5b43e5d2b30a@app.fastmail.com> <3dc5d57e-6c77-4713-b97e-bf0a5a891226@app.fastmail.com> Subject: Re: Tepid: selective index updates for heap relations Content-Type: multipart/mixed; boundary=ffc971266f692fe98c1088dac35356ed85e7d5db List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --ffc971266f692fe98c1088dac35356ed85e7d5db Content-Type: text/plain Content-Transfer-Encoding: 7bit Hello, Attached is v63 which has a few fixes and is rebased (0b3e646fd7f) as well. What changed vs v60? Eight of the ten patches changed in content since v60; only 0001 (heap HOT-update tests) and 0007 (amcheck) are unchanged apart from rebase-induced hunk offsets. The headline is the CLUSTER data-loss fix (0004, with its regression test in 0008); the rest are correctness, robustness, and consistency fixes found in review, plus a test relocation. The headline: CLUSTER data loss on HOT-indexed (SIU) tables CLUSTER ... USING silently dropped live rows. On a table with an SIU chain where the clustering column changed (or ABA-cycled) in an earlier hop and a different indexed column changed in the last hop, with the chain left uncollapsed (no VACUUM), CLUSTER returned 14 of 20 rows; six live rows gone from the heap (seqscan-verified). Row count depending on which index you cluster by is an unambiguous correctness bug. Root cause: CLUSTER-by-index copies the heap via an index scan under SnapshotAny, trusting the clustering index to reach every live tuple directly. On an uncollapsed SIU chain, a live tuple whose last hop changed a different column has no clustering-index entry pointing at it, so it's unreachable through that index -> never copied -> lost. This affects any clusterable index AM, not just btree. Both btree and GiST (the only two amclusterable core AMs) lose the same rows, and a btree-only fix would have left GiST (and any out-of-tree clusterable AM) exposed. The fix (patch 0004): In the heap AM (heapam_relation_copy_for_cluster, heapam_handler.c). The copy routes through the relation_copy_for_cluster tableam callback, so the heap AM -- the layer that actually creates index-unreachable live tuples -- refuses the lossy index-scan copy path itself when it holds SIU chains (heap has >1 index): - btree clustering index -> switch to seqscan+sort (cluster order preserved); - any other clusterable AM (GiST, or out-of-tree) -> plain seqscan copy (order dropped, no row lost). Both direct-scan paths visit every heap tuple, the same way VACUUM FULL already does. No index AM (core or out-of-tree) needs any change; the heap guarantees its own invariant regardless of which index drove the CLUSTER. (An earlier iteration carried a btree-only guard in repack.c; that is reverted to pristine and the guard now lives in the heap AM.) The regression test (patch 0008, hot_indexed_updates.sql): reproduces the actual losing shape (a-ABA early, b in the last hop, fillfactor=40, autovacuum_enabled=false, no VACUUM before CLUSTER), asserting all 20 rows survive and remain findable, plus bt_index_check(heapallindexed => true). A GiST case (CLUSTER ... USING ) proves the fix is AM-agnostic -- a guard a btree-only fix would miss. Both cases lose 6 rows without the fix and pass with it. Changes since v60 0002: identify modified indexed attributes in the executor - Comment-only; the code is unchanged from v60. Documents why ExecCompareSlotAttrs (used by ExecUpdateModifiedIdxAttrs on the executor path) compares slots with datum_image_eq while the non-executor path (simple_heap_update -> HeapUpdateModifiedIdxAttrs -> heap_attr_equals) uses datumIsEqual. The difference is intentional: at the executor stage the slot values are logical and cannot be TOASTed (TOAST is a heapam storage detail applied later), the executor must stay agnostic of how a table AM stores variable-length data, and datumIsEqual would force a needless slot->Datum transform on a hot path. - Also notes on heap_attr_equals and HeapUpdateModifiedIdxAttrs that they are not public API -- their only consumer is simple_heap_update(), and they are targeted for eventual removal once catalog-tuple updates track their own changed columns. 0003: on-disk format - Comment corrections only. (1) The inline attribute bitmap is located using the tuple's own write-time attribute count, not the relation's current natts -- after ADD COLUMN a chain can hold tuples whose bitmaps were sized for a smaller natts, and sizing from the relation's current natts would read past the tuple's data. (2) A new README.HOT-INDEXED section spells out the datum_image_eq-vs-datumIsEqual rationale described under 0002. 0004: selective index maintenance and reads, beyond the CLUSTER fix above - Ordered/distance index scans (GiST/SP-GiST, ORDER BY <->) now drop stale HOT-indexed entries, which the non-ordered scan path already did; the ordered path (IndexNextWithReorder) was the one remaining gap. - The HOT/SIU chain walk in heap_hot_search_buffer is bounded by a per-page hop guard and now calls CHECK_FOR_INTERRUPTS. A corrupt page whose forward links form a cycle among valid in-range offsets would otherwise spin forever under a buffer share-lock. - The unique-insert self-check tolerates the legitimate repeat self-arrival (the canonical direct entry plus stale chain-walk entries resolving to the same TID, in either arrival order) while still raising on a genuine duplicate TID. - In _bt_check_unique, the right-sibling buffer is kept pinned while scanning equal tuples on the HOT-indexed skip paths: page, opaque, and curitup may point into it, so releasing it early would dereference a freed buffer. - The palloc'd per-row modified-attrs bitmap is freed after the index inserts consume it (a bulk UPDATE previously accumulated one Bitmapset per updated row for the statement's lifetime), and the "update all indexes" sentinel is accepted on input for an index whose expression references a whole-row Var. 0005: BitmapAnd/BitmapOr false negative - Assert that the stale marker (ItemPointerSetSIUMaybeStale) is only ever set on a genuine in-range offset, not a sentinel offset. 0006: collapse dead chains to xid-free stubs - Bound the stub-forward walk in heap_prune_chain with a per-page hop guard, so a corrupt stub->stub cycle cannot spin forever (mirroring the guard heap_prune_chain_find_live already has). - Drop the got_cleanup_lock plumbing through lazy_vacuum_heap_page; rely on heap_page_would_be_all_visible()'s own SIU-redirect and stub guards to refuse marking a page all-visible while an unreclaimed HOT-indexed member is still present. 0008: statistics + comprehensive test suite - The SIU regression tests that depend on pageinspect/amcheck/btree_gist moved from src/test/regress into contrib/pageinspect (core "make check" does not install contrib, so those CREATE EXTENSION calls would fail under a standard build; contrib/pageinspect is the idiomatic home and pulls the other two in via EXTRA_INSTALL). The suite gained the CLUSTER and GiST-CLUSTER cases described above, plus a KNN case for the ordered-scan fix in 0004. 0009: gate HOT-indexed updates on the logical-replication apply path - Derive the apply mode directly from MySubscription instead of caching it in a worker.c static, removing a second copy that had to be kept in sync across subscription reloads. 0010: benchmark harness - DO NOT MERGE. Script-only robustness/comment fixes (results-dir creation, early validation of the resolved base revision, skipping failed pgbench iterations rather than recording NA rows, and a workload that actually changes the indexed value); no change to what it benchmarks. best. -greg --ffc971266f692fe98c1088dac35356ed85e7d5db Content-Disposition: attachment; filename*0="v63-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v63-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBjMDNmYjgzZDU3NmVmZWM5NjA2Njk2MTRiY2ZjNGNiZGZhY2Y3MjkzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwOToyODoxNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjYzIDAx LzEwXSBBZGQgdGVzdHMgdG8gY292ZXIgYSB2YXJpZXR5IG9mIGhlYXAgSE9UIHVwZGF0ZQog YmVoYXZpb3JzCgpBZGQgcmVncmVzc2lvbiBjb3ZlcmFnZSBmb3IgZXhpc3RpbmcgY2xhc3Np YyBIZWFwLU9ubHkgVHVwbGUgKEhPVCkgdXBkYXRlCmJlaGF2aW9yLCBjb21taXR0ZWQgZmly c3Qgc28gdGhlIGJlaGF2aW9yYWwgY2hhbmdlcyBpbiB0aGUgbGF0ZXIgSE9ULWluZGV4ZWQK Y29tbWl0cyBhcmUgZGlmZmFibGUgYWdhaW5zdCBhIGtub3duLWdvb2QgYmFzZWxpbmUuICBU aGlzIGNvbW1pdCBhZGRzCnRlc3RzIHNvIGFzIHRvIGNvZGlmeSBleHBsaWNpdGx5IHRoZSBI T1QgY29udHJhY3QgZm9yIHRoZSBoZWFwIEFNLgoKVGhlIG5ldyBob3RfdXBkYXRlcyByZWdy ZXNzaW9uIHRlc3QgZXhlcmNpc2VzOgotIEJhc2ljIEhPVCB2cyBub24tSE9UIHVwZGF0ZSBk ZWNpc2lvbnMKLSBUaGUgYWxsLW9yLW5vbmUgcHJvcGVydHkgYWNyb3NzIG11bHRpcGxlIGlu ZGV4ZXMKLSBQYXJ0aWFsIGluZGV4ZXMgYW5kIHByZWRpY2F0ZSBoYW5kbGluZwotIEJSSU4g KHN1bW1hcml6aW5nKSBpbmRleGVzIGFsbG93aW5nIEhPVCB1cGRhdGVzCi0gVE9BU1QgY29s dW1uIGhhbmRsaW5nIHdpdGggSE9UCi0gVW5pcXVlIGNvbnN0cmFpbnQgYmVoYXZpb3IKLSBN dWx0aS1jb2x1bW4gaW5kZXhlcwotIFBhcnRpdGlvbmVkIHRhYmxlIEhPVCB1cGRhdGVzCi0g SE9UIGNoYWluIGZvcm1hdGlvbiBhbmQgdGhlIGluZGV4LXNjYW4gd2FsayBvdmVyIGEgY2hh aW4KCkF1dGhvcmVkLWJ5OiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KLS0tCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dCB8IDc0NSArKysrKysrKysrKysr KysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICB8 ICAgNSArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwgICAgICB8IDYw NSArKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTM1NSBpbnNlcnRpb25z KCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3Rf dXBkYXRlcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9o b3RfdXBkYXRlcy5zcWwKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2hvdF91cGRhdGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3VwZGF0 ZXMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yNzNmZTMz MTBkYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90 X3VwZGF0ZXMub3V0CkBAIC0wLDAgKzEsNzQ1IEBACistLQorLS0gSE9UX1VQREFURVMKKy0t IFRlc3QgSGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0ZSBkZWNpc2lvbnMKKy0tCistLSBU aGlzIHRlc3Qgc3lzdGVtYXRpY2FsbHkgdmVyaWZpZXMgdGhhdCBIT1QgdXBkYXRlcyBhcmUg dXNlZCB3aGVuIGFwcHJvcHJpYXRlCistLSBhbmQgYXZvaWRlZCB3aGVuIG5lY2Vzc2FyeSAo ZS5nLiwgd2hlbiBpbmRleGVkIGNvbHVtbnMgYXJlIG1vZGlmaWVkKS4KKy0tCistLSBXZSB1 c2UgbXVsdGlwbGUgdmFsaWRhdGlvbiBtZXRob2RzOgorLS0gMS4gU3RhdGlzdGljcyBmdW5j dGlvbnMgKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZCkKKy0tIDIuIHBhZ2VpbnNw ZWN0IGV4dGVuc2lvbiBmb3IgSE9UIGNoYWluIGV4YW1pbmF0aW9uCistLSAzLiBFWFBMQUlO IHRvIHZlcmlmeSBpbmRleCB1c2FnZSBhZnRlciB1cGRhdGVzCistLQorLS0gTG9hZCByZXF1 aXJlZCBleHRlbnNpb25zCitDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGFnZWlu c3BlY3Q7CistLSBGdW5jdGlvbiB0byBnZXQgSE9UIHVwZGF0ZSBjb3VudAorQ1JFQVRFIE9S IFJFUExBQ0UgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudChyZWxfbmFtZSB0ZXh0KQorUkVUVVJO UyBUQUJMRSAoCisgICAgdXBkYXRlcyBCSUdJTlQsCisgICAgaG90IEJJR0lOVAorKSBBUyAk JAorREVDTEFSRQorICByZWxfb2lkIG9pZDsKK0JFR0lOCisgIHJlbF9vaWQgOj0gcmVsX25h bWU6OnJlZ2NsYXNzOjpvaWQ7CisKKyAgLS0gUmVhZCBib3RoIGNvbW1pdHRlZCBhbmQgdHJh bnNhY3Rpb24tbG9jYWwgc3RhdHMKKyAgLS0gSW4gYXV0b2NvbW1pdCBtb2RlIChkZWZhdWx0 IGZvciByZWdyZXNzaW9uIHRlc3RzKSwgdGhpcyB3b3JrcyBjb3JyZWN0bHkKKyAgLS0gTm90 ZTogSW4gZXhwbGljaXQgdHJhbnNhY3Rpb25zIChCRUdJTi9DT01NSVQpLCBjb21taXR0ZWQg c3RhdHMgYWxyZWFkeQorICAtLSBpbmNsdWRlIGZsdXNoZWQgdXBkYXRlcywgc28gdGhpcyB3 b3VsZCBkb3VibGUtY291bnQuIEZvciBleHBsaWNpdAorICAtLSB0cmFuc2FjdGlvbiB0ZXN0 aW5nLCBjYWxsIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpIGJlZm9yZSB0aGlzIGZ1bmN0 aW9uLgorICB1cGRhdGVzIDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVk KHJlbF9vaWQpLCAwKSArCisgICAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgIGhvdCA6PSBDT0FMRVNDRShwZ19z dGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgIENP QUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAw KTsKKworICBSRVRVUk4gTkVYVDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CistLSBD aGVjayBpZiBhIHR1cGxlIGlzIHBhcnQgb2YgYSBIT1QgY2hhaW4gKGhhcyBhIHByZWRlY2Vz c29yIG9uIHNhbWUgcGFnZSkKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGhhc19ob3Rf Y2hhaW4ocmVsX25hbWUgdGV4dCwgdGFyZ2V0X2N0aWQgdGlkKQorUkVUVVJOUyBib29sZWFu IEFTICQkCitERUNMQVJFCisgIGJsb2NrX251bSBpbnQ7CisgIHBhZ2VfaXRlbSByZWNvcmQ7 CitCRUdJTgorICBibG9ja19udW0gOj0gKHRhcmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06 OmludDsKKworICAtLSBMb29rIGZvciBhIGRpZmZlcmVudCB0dXBsZSBvbiB0aGUgc2FtZSBw YWdlIHRoYXQgcG9pbnRzIHRvIG91ciB0YXJnZXQgdHVwbGUKKyAgRk9SIHBhZ2VfaXRlbSBJ TgorICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAorICAgIEZST00gaGVhcF9wYWdl X2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICBXSEVSRSBs cF9mbGFncyA9IDEKKyAgICAgIEFORCB0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgIEFORCB0 X2N0aWQgPSB0YXJnZXRfY3RpZAorICAgICAgQU5EICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0 IHx8ICcsJyB8fCBscDo6dGV4dCB8fCAnKScpOjp0aWQgIT0gdGFyZ2V0X2N0aWQKKyAgTE9P UAorICAgIFJFVFVSTiB0cnVlOworICBFTkQgTE9PUDsKKworICBSRVRVUk4gZmFsc2U7CitF TkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gUHJpbnQgdGhlIEhPVCBjaGFpbiBzdGFy dGluZyBmcm9tIGEgZ2l2ZW4gdHVwbGUKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHBy aW50X2hvdF9jaGFpbihyZWxfbmFtZSB0ZXh0LCBzdGFydF9jdGlkIHRpZCkKK1JFVFVSTlMg VEFCTEUoY2hhaW5fcG9zaXRpb24gaW50LCBjdGlkIHRpZCwgbHBfZmxhZ3MgdGV4dCwgdF9j dGlkIHRpZCwgY2hhaW5fZW5kIGJvb2xlYW4pIEFTCiskJAorI3ZhcmlhYmxlX2NvbmZsaWN0 IHVzZV9jb2x1bW4KK0RFQ0xBUkUKKyAgYmxvY2tfbnVtIGludDsKKyAgbGluZV9wdHIgaW50 OworICBjdXJyZW50X2N0aWQgdGlkIDo9IHN0YXJ0X2N0aWQ7CisgIG5leHRfY3RpZCB0aWQ7 CisgIHBvc2l0aW9uIGludCA6PSAwOworICBtYXhfaXRlcmF0aW9ucyBpbnQgOj0gMTAwOwor ICBwYWdlX2l0ZW0gcmVjb3JkOworICBmb3VuZF9wcmVkZWNlc3NvciBib29sZWFuIDo9IGZh bHNlOworICBmbGFnc19uYW1lIHRleHQ7CitCRUdJTgorICBibG9ja19udW0gOj0gKHN0YXJ0 X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50OworCisgIC0tIEZpbmQgdGhlIHByZWRlY2Vz c29yIChvbGQgdHVwbGUgcG9pbnRpbmcgdG8gb3VyIHN0YXJ0X2N0aWQpCisgIEZPUiBwYWdl X2l0ZW0gSU4KKyAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICBGUk9NIGhl YXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisgICAg V0hFUkUgbHBfZmxhZ3MgPSAxCisgICAgICBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZAorICBM T09QCisgICAgY3VycmVudF9jdGlkIDo9ICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcs JyB8fCBwYWdlX2l0ZW0ubHA6OnRleHQgfHwgJyknKTo6dGlkOworICAgIGZvdW5kX3ByZWRl Y2Vzc29yIDo9IHRydWU7CisgICAgRVhJVDsKKyAgRU5EIExPT1A7CisKKyAgLS0gSWYgbm8g cHJlZGVjZXNzb3IgZm91bmQsIHN0YXJ0IHdpdGggdGhlIGdpdmVuIGN0aWQKKyAgSUYgTk9U IGZvdW5kX3ByZWRlY2Vzc29yIFRIRU4KKyAgICBjdXJyZW50X2N0aWQgOj0gc3RhcnRfY3Rp ZDsKKyAgRU5EIElGOworCisgIC0tIEZvbGxvdyB0aGUgY2hhaW4gZm9yd2FyZAorICBXSElM RSBwb3NpdGlvbiA8IG1heF9pdGVyYXRpb25zIExPT1AKKyAgICBsaW5lX3B0ciA6PSAoY3Vy cmVudF9jdGlkOjp0ZXh0Ojpwb2ludClbMV06OmludDsKKworICAgIEZPUiBwYWdlX2l0ZW0g SU4KKyAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAorICAgICAgRlJPTSBoZWFw X3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgICAg V0hFUkUgbHAgPSBsaW5lX3B0cgorICAgIExPT1AKKyAgICAgIC0tIE1hcCBscF9mbGFncyB0 byBuYW1lcworICAgICAgZmxhZ3NfbmFtZSA6PSBDQVNFIHBhZ2VfaXRlbS5scF9mbGFncwor ICAgICAgICBXSEVOIDAgVEhFTiAndW51c2VkICgwKScKKyAgICAgICAgV0hFTiAxIFRIRU4g J25vcm1hbCAoMSknCisgICAgICAgIFdIRU4gMiBUSEVOICdyZWRpcmVjdCAoMiknCisgICAg ICAgIFdIRU4gMyBUSEVOICdkZWFkICgzKScKKyAgICAgICAgRUxTRSAndW5rbm93biAoJyB8 fCBwYWdlX2l0ZW0ubHBfZmxhZ3M6OnRleHQgfHwgJyknCisgICAgICBFTkQ7CisKKyAgICAg IFJFVFVSTiBRVUVSWSBTRUxFQ1QKKyAgICAgICAgcG9zaXRpb24sCisgICAgICAgIGN1cnJl bnRfY3RpZCwKKyAgICAgICAgZmxhZ3NfbmFtZSwKKyAgICAgICAgcGFnZV9pdGVtLnRfY3Rp ZCwKKyAgICAgICAgKHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBwYWdlX2l0ZW0udF9j dGlkID0gY3VycmVudF9jdGlkKTo6Ym9vbGVhbgorICAgICAgOworCisgICAgICBJRiBwYWdl X2l0ZW0udF9jdGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3Rp ZCBUSEVOCisgICAgICAgIFJFVFVSTjsKKyAgICAgIEVORCBJRjsKKworICAgICAgbmV4dF9j dGlkIDo9IHBhZ2VfaXRlbS50X2N0aWQ7CisKKyAgICAgIElGIChuZXh0X2N0aWQ6OnRleHQ6 OnBvaW50KVswXTo6aW50ICE9IGJsb2NrX251bSBUSEVOCisgICAgICAgIFJFVFVSTjsKKyAg ICAgIEVORCBJRjsKKworICAgICAgY3VycmVudF9jdGlkIDo9IG5leHRfY3RpZDsKKyAgICAg IHBvc2l0aW9uIDo9IHBvc2l0aW9uICsgMTsKKyAgICBFTkQgTE9PUDsKKworICAgIElGIHBv c2l0aW9uID0gMCBUSEVOCisgICAgICBSRVRVUk47CisgICAgRU5EIElGOworICBFTkQgTE9P UDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CistLSBCYXNpYyBIT1QgdXBkYXRlICh1 cGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uKQorQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIG5vbl9p bmRleGVkX2NvbCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5E RVggaG90X3Rlc3RfaW5kZXhlZF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wpOworSU5T RVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CitJTlNFUlQg SU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2luaXRpYWwnKTsKK0lOU0VSVCBJTlRP IGhvdF90ZXN0IFZBTFVFUyAoMywgMzAwLCAnaW5pdGlhbCcpOworLS0gR2V0IGJhc2VsaW5l CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8 IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDAgfCAgIDAKKygxIHJvdykKKworLS0g U2hvdWxkIGJlIEhPVCB1cGRhdGVzIChvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiBtb2RpZmll ZCkKK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQxJyBX SEVSRSBpZCA9IDE7CitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1 cGRhdGVkMicgV0hFUkUgaWQgPSAyOworVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhl ZF9jb2wgPSAndXBkYXRlZDMnIFdIRVJFIGlkID0gMzsKKy0tIFZlcmlmeSBIT1QgdXBkYXRl cyBvY2N1cnJlZAorU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwor IHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAzIHwgICAzCisoMSBy b3cpCisKKy0tIER1bXAgdGhlIEhPVCBjaGFpbiBiZWZvcmUgVkFDVVVNaW5nCitXSVRIIGN1 cnJlbnRfdHVwbGUgQVMgKAorICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlk ID0gMQorKQorU0VMRUNUCisgIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90 dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgIGNoYWluX3Bvc2l0aW9uLAorICBwcmludF9o b3RfY2hhaW4uY3RpZCwKKyAgbHBfZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBjdXJyZW50X3R1 cGxlLAorTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBs ZS5jdGlkKTsKKyBoYXNfY2hhaW4gfCBjaGFpbl9wb3NpdGlvbiB8IGN0aWQgIHwgIGxwX2Zs YWdzICB8IHRfY3RpZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0KKyB0ICAgICAgICAgfCAgICAgICAgICAgICAgMCB8ICgw LDEpIHwgbm9ybWFsICgxKSB8ICgwLDQpCisgdCAgICAgICAgIHwgICAgICAgICAgICAgIDEg fCAoMCw0KSB8IG5vcm1hbCAoMSkgfCAoMCw0KQorKDIgcm93cykKKworLS0gVmFjdXVtIHRo ZSByZWxhdGlvbiwgZXhwZWN0IHRoZSBIT1QgY2hhaW4gdG8gY29sbGFwc2UKK1ZBQ1VVTSBo b3RfdGVzdDsKKy0tIFNob3cgdGhhdCB0aGVyZSBpcyBubyBjaGFpbiBhZnRlciB2YWN1dW0K K1dJVEggY3VycmVudF90dXBsZSBBUyAoCisgIFNFTEVDVCBjdGlkIEZST00gaG90X3Rlc3Qg V0hFUkUgaWQgPSAxCispCitTRUxFQ1QKKyAgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBj dXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKKyAgY2hhaW5fcG9zaXRpb24sCisg IHByaW50X2hvdF9jaGFpbi5jdGlkLAorICBscF9mbGFncywKKyAgdF9jdGlkCitGUk9NIGN1 cnJlbnRfdHVwbGUsCitMQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJy ZW50X3R1cGxlLmN0aWQpOworIGhhc19jaGFpbiB8IGNoYWluX3Bvc2l0aW9uIHwgY3RpZCAg fCAgbHBfZmxhZ3MgIHwgdF9jdGlkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLQorIGYgICAgICAgICB8ICAgICAgICAgICAg ICAwIHwgKDAsNCkgfCBub3JtYWwgKDEpIHwgKDAsNCkKKygxIHJvdykKKworLS0gTm9uLUhP VCB1cGRhdGUgKHVwZGF0ZSBpbmRleGVkIGNvbHVtbikKK1VQREFURSBob3RfdGVzdCBTRVQg aW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0K KyAgICAgICA0IHwgICAzCisoMSByb3cpCisKKy0tIFZlcmlmeSBpbmRleCB3YXMgdXBkYXRl ZCAobmV3IHZhbHVlIGZpbmRhYmxlKQorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworRVhQ TEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3Qg V0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgaG90X3Rlc3RfaW5k ZXhlZF9pZHggb24gaG90X3Rlc3QKKyAgIEluZGV4IENvbmQ6IChpbmRleGVkX2NvbCA9IDE1 MCkKKygyIHJvd3MpCisKK1NFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBob3RfdGVzdCBX SEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKKyBpZCB8IGluZGV4ZWRfY29sIAorLS0tLSstLS0t LS0tLS0tLS0tCisgIDEgfCAgICAgICAgIDE1MAorKDEgcm93KQorCistLSBWZXJpZnkgb2xk IHZhbHVlIG5vIGxvbmdlciBpbiBpbmRleAorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKyAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1 c2luZyBob3RfdGVzdF9pbmRleGVkX2lkeCBvbiBob3RfdGVzdAorICAgSW5kZXggQ29uZDog KGluZGV4ZWRfY29sID0gMTAwKQorKDIgcm93cykKKworU0VMRUNUIGlkIEZST00gaG90X3Rl c3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7CisgaWQgCistLS0tCisoMCByb3dzKQorCitS RVNFVCBlbmFibGVfc2Vxc2NhbjsKKy0tIEFsbC1vci1ub25lIHByb3BlcnR5OiB1cGRhdGlu ZyBvbmUgaW5kZXhlZCBjb2x1bW4gcmVxdWlyZXMgQUxMIGluZGV4IHVwZGF0ZXMKK0RST1Ag VEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQ UklNQVJZIEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2IgaW50LAorICAgIGNvbF9j IGludCwKKyAgICBub25faW5kZXhlZCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYV9pZHggT04gaG90X3Rlc3QoY29sX2EpOworQ1JF QVRFIElOREVYIGhvdF90ZXN0X2JfaWR4IE9OIGhvdF90ZXN0KGNvbF9iKTsKK0NSRUFURSBJ TkRFWCBob3RfdGVzdF9jX2lkeCBPTiBob3RfdGVzdChjb2xfYyk7CitJTlNFUlQgSU5UTyBo b3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdpbml0aWFsJyk7CistLSBVcGRhdGUg b25seSBjb2xfYSAtIHNob3VsZCBOT1QgYmUgSE9UIGJlY2F1c2UgYW4gaW5kZXhlZCBjb2x1 bW4gY2hhbmdlZAorLS0gVGhpcyBtZWFucyBBTEwgaW5kZXhlcyBtdXN0IGJlIHVwZGF0ZWQg KGFsbC1vci1ub25lIHByb3BlcnR5KQorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYSA9IDE1 IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMSB8ICAgMAor KDEgcm93KQorCistLSBOb3cgdXBkYXRlIG9ubHkgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hv dWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZCA9ICd1cGRhdGVk JzsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVz IHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMiB8ICAgMQorKDEgcm93KQorCist LSBQYXJ0aWFsIGluZGV4OiBib3RoIG9sZCBhbmQgbmV3IG91dHNpZGUgcHJlZGljYXRlIChj b25zZXJ2YXRpdmUgPSBub24tSE9UKQorRFJPUCBUQUJMRSBob3RfdGVzdDsKK0NSRUFURSBU QUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHN0YXR1cyB0 ZXh0LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworLS0gUGFy dGlhbCBpbmRleCBvbmx5IGNvdmVycyBzdGF0dXMgPSAnYWN0aXZlJworQ1JFQVRFIElOREVY IGhvdF90ZXN0X2FjdGl2ZV9pZHggT04gaG90X3Rlc3Qoc3RhdHVzKSBXSEVSRSBzdGF0dXMg PSAnYWN0aXZlJzsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgJ2FjdGl2ZScs ICdkYXRhMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAnaW5hY3RpdmUn LCAnZGF0YTInKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMywgJ2RlbGV0ZWQn LCAnZGF0YTMnKTsKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gb24gJ2FjdGl2ZScg cm93IChpbiBwcmVkaWNhdGUsIHN0YXR1cyB1bmNoYW5nZWQpCistLSBTaG91bGQgYmUgSE9U CitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsK K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMSB8ICAgMQorKDEgcm93KQorCistLSBV cGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIG9uICdpbmFjdGl2ZScgcm93IChvdXRzaWRlIHBy ZWRpY2F0ZSkKKy0tIFNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9 ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAg ICAyIHwgICAyCisoMSByb3cpCisKKy0tIFVwZGF0ZSBzdGF0dXMgZnJvbSAnaW5hY3RpdmUn IHRvICdkZWxldGVkJyAoYm90aCBvdXRzaWRlIHByZWRpY2F0ZSkKKy0tIFBvc3RncmVTUUwg aXMgY29uc2VydmF0aXZlOiBoZWFwIGluc2VydCBoYXBwZW5zIGJlZm9yZSBwcmVkaWNhdGUg Y2hlY2sKKy0tIFNvIHRoaXMgaXMgTk9OLUhPVCBldmVuIHRob3VnaCBib3RoIHZhbHVlcyBh cmUgb3V0c2lkZSBwcmVkaWNhdGUKK1VQREFURSBob3RfdGVzdCBTRVQgc3RhdHVzID0gJ2Rl bGV0ZWQnIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90 X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMyB8 ICAgMgorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggc3RpbGwgd29ya3MgZm9yICdhY3Rp dmUnIHJvd3MKK1NFTEVDVCBpZCwgc3RhdHVzIEZST00gaG90X3Rlc3QgV0hFUkUgc3RhdHVz ID0gJ2FjdGl2ZSc7CisgaWQgfCBzdGF0dXMgCistLS0tKy0tLS0tLS0tCisgIDEgfCBhY3Rp dmUKKygxIHJvdykKKworLS0gT25seSBCUklOIChzdW1tYXJpemluZykgaW5kZXhlcyBvbiBu b24tUEsgY29sdW1ucworRFJPUCBUQUJMRSBob3RfdGVzdDsKK0NSRUFURSBUQUJMRSBob3Rf dGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRzIHRpbWVzdGFtcCwKKyAg ICB2YWx1ZSBpbnQsCisgICAgYnJpbl9jb2wgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfdHNfYnJpbiBPTiBob3RfdGVzdCBVU0lORyBi cmluKHRzKTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9icmluX2NvbF9icmluIE9OIGhvdF90 ZXN0IFVTSU5HIGJyaW4oYnJpbl9jb2wpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVT ICgxLCAnMjAyNC0wMS0wMScsIDEwMCwgMTAwMCk7CistLSBVcGRhdGUgYm90aCBCUklOIGNv bHVtbnMgLSBzaG91bGQgc3RpbGwgYmUgSE9UIChvbmx5IHN1bW1hcml6aW5nIGluZGV4ZXMp CitVUERBVEUgaG90X3Rlc3QgU0VUIHRzID0gJzIwMjQtMDEtMDInLCBicmluX2NvbCA9IDIw MDAgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVz dCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAxIHwgICAx CisoMSByb3cpCisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgYWxz byBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgdmFsdWUgPSAyMDAgV0hFUkUgaWQgPSAx OworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMg fCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAyIHwgICAyCisoMSByb3cpCisKKy0t IFRPQVNUIGFuZCBIT1Q6IFRPQVNUZWQgY29sdW1ucyBjYW4gcGFydGljaXBhdGUgaW4gSE9U CitEUk9QIFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBp ZCBpbnQgUFJJTUFSWSBLRVksCisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIGxhcmdlX3Rl eHQgdGV4dCwKKyAgICBzbWFsbF90ZXh0IHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wp OworLS0gSW5zZXJ0IHJvdyB3aXRoIFRPQVNUZWQgY29sdW1uICg+IDJLQikKK0lOU0VSVCBJ TlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAwLCByZXBlYXQoJ3gnLCAzMDAwKSwgJ3NtYWxs Jyk7CistLSBVcGRhdGUgbm9uLWluZGV4ZWQsIG5vbi1UT0FTVGVkIGNvbHVtbiAtIHNob3Vs ZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgc21hbGxfdGV4dCA9ICd1cGRhdGVkJzsK K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMSB8ICAgMQorKDEgcm93KQorCistLSBV cGRhdGUgVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UIGlmIGluZGV4ZWQgY29sdW1u IHVuY2hhbmdlZAorVVBEQVRFIGhvdF90ZXN0IFNFVCBsYXJnZV90ZXh0ID0gcmVwZWF0KCd5 JywgMzAwMCk7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Cisg dXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDIKKygxIHJv dykKKworLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQ REFURSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAyMDA7CitTRUxFQ1QgKiBGUk9NIGdl dF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSst LS0tLQorICAgICAgIDMgfCAgIDIKKygxIHJvdykKKworLS0gVW5pcXVlIGNvbnN0cmFpbnQg KHVuaXF1ZSBpbmRleCkgYmVoYXZlcyBsaWtlIHJlZ3VsYXIgaW5kZXgKK0RST1AgVEFCTEUg aG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZ IEtFWSwKKyAgICB1bmlxdWVfY29sIGludCBVTklRVUUsCisgICAgZGF0YSB0ZXh0CispIFdJ VEggKGZpbGxmYWN0b3IgPSA1MCk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEs IDEwMCwgJ2RhdGExJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwg J2RhdGEyJyk7CistLSBVcGRhdGUgZGF0YSAobm9uLWluZGV4ZWQpIC0gc2hvdWxkIGJlIEhP VAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnOworU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0t LS0rLS0tLS0KKyAgICAgICAyIHwgICAyCisoMSByb3cpCisKKy0tIFZlcmlmeSB1bmlxdWUg Y29uc3RyYWludCBzdGlsbCBlbmZvcmNlZAorU0VMRUNUIGlkLCB1bmlxdWVfY29sLCBkYXRh IEZST00gaG90X3Rlc3QgT1JERVIgQlkgaWQ7CisgaWQgfCB1bmlxdWVfY29sIHwgIGRhdGEg ICAKKy0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQorICAxIHwgICAgICAgIDEwMCB8IHVw ZGF0ZWQKKyAgMiB8ICAgICAgICAyMDAgfCB1cGRhdGVkCisoMiByb3dzKQorCistLSBUaGlz IHNob3VsZCBmYWlsICh1bmlxdWUgdmlvbGF0aW9uKQorVVBEQVRFIGhvdF90ZXN0IFNFVCB1 bmlxdWVfY29sID0gMTAwIFdIRVJFIGlkID0gMjsKK0VSUk9SOiAgZHVwbGljYXRlIGtleSB2 YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAiaG90X3Rlc3RfdW5pcXVlX2NvbF9r ZXkiCitERVRBSUw6ICBLZXkgKHVuaXF1ZV9jb2wpPSgxMDApIGFscmVhZHkgZXhpc3RzLgor LS0gTXVsdGktY29sdW1uIGluZGV4OiBhbnkgY29sdW1uIGNoYW5nZSA9IG5vbi1IT1QKK0RS T1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGlu dCBQUklNQVJZIEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2IgaW50LAorICAgIGNv bF9jIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NS RUFURSBJTkRFWCBob3RfdGVzdF9hYl9pZHggT04gaG90X3Rlc3QoY29sX2EsIGNvbF9iKTsK K0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgJ2RhdGEnKTsK Ky0tIFVwZGF0ZSBjb2xfYSAocGFydCBvZiBtdWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxk IE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNTsKK1NFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0t LS0tLS0tKy0tLS0tCisgICAgICAgMSB8ICAgMAorKDEgcm93KQorCistLSBSZXNldAorVVBE QVRFIGhvdF90ZXN0IFNFVCBjb2xfYSA9IDEwOworLS0gVXBkYXRlIGNvbF9iIChwYXJ0IG9m IG11bHRpLWNvbHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF90 ZXN0IFNFVCBjb2xfYiA9IDI1OworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf dGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAzIHwg ICAwCisoMSByb3cpCisKKy0tIFJlc2V0CitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9iID0g MjA7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRl cyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDQgfCAgIDAKKygxIHJvdykKKwor LS0gVXBkYXRlIGNvbF9jIChub3QgaW5kZXhlZCkgLSBzaG91bGQgYmUgSE9UCitVUERBVEUg aG90X3Rlc3QgU0VUIGNvbF9jID0gMzU7CistLSBVcGRhdGUgZGF0YSAobm90IGluZGV4ZWQp IC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQn OworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMg fCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICA2IHwgICAyCisoMSByb3cpCisKKy0t IFBhcnRpdGlvbmVkIHRhYmxlczogSE9UIHdvcmtzIHdpdGhpbiBwYXJ0aXRpb25zCitEUk9Q IFRBQkxFIElGIEVYSVNUUyBob3RfdGVzdF9wYXJ0aXRpb25lZCBDQVNDQURFOworTk9USUNF OiAgdGFibGUgImhvdF90ZXN0X3BhcnRpdGlvbmVkIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBp bmcKK0NSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0aXRpb25lZCAoCisgICAgaWQgaW50LAor ICAgIHBhcnRpdGlvbl9rZXkgaW50LAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBkYXRh IHRleHQsCisgICAgUFJJTUFSWSBLRVkgKGlkLCBwYXJ0aXRpb25fa2V5KQorKSBQQVJUSVRJ T04gQlkgUkFOR0UgKHBhcnRpdGlvbl9rZXkpOworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0X3Bh cnQxIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25lZAorICAgIEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDEwMCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBUQUJM RSBob3RfdGVzdF9wYXJ0MiBQQVJUSVRJT04gT0YgaG90X3Rlc3RfcGFydGl0aW9uZWQKKyAg ICBGT1IgVkFMVUVTIEZST00gKDEwMCkgVE8gKDIwMCkgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9wYXJ0X2lkeCBPTiBob3RfdGVzdF9wYXJ0aXRp b25lZChpbmRleGVkX2NvbCk7CitJTlNFUlQgSU5UTyBob3RfdGVzdF9wYXJ0aXRpb25lZCBW QUxVRVMgKDEsIDUwLCAxMDAsICdpbml0aWFsMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3Rf cGFydGl0aW9uZWQgVkFMVUVTICgyLCAxNTAsIDIwMCwgJ2luaXRpYWwyJyk7CistLSBVcGRh dGUgaW4gcGFydGl0aW9uIDEgKG5vbi1pbmRleGVkIGNvbHVtbikgLSBzaG91bGQgYmUgSE9U CitVUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VUIGRhdGEgPSAndXBkYXRlZDEnIFdI RVJFIGlkID0gMTsKKy0tIFVwZGF0ZSBpbiBwYXJ0aXRpb24gMiAobm9uLWluZGV4ZWQgY29s dW1uKSAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQg ZGF0YSA9ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0r LS0tLS0KKyAgICAgICAxIHwgICAxCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X3Rlc3RfcGFydDInKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0t Ky0tLS0tCisgICAgICAgMSB8ICAgMQorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXhlcyB3 b3JrIG9uIHBhcnRpdGlvbnMKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVk IFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworIGlkIAorLS0tLQorICAxCisoMSByb3cpCisK K1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJFIGluZGV4ZWRfY29s ID0gMjAwOworIGlkIAorLS0tLQorICAyCisoMSByb3cpCisKKy0tIFVwZGF0ZSBpbmRleGVk IGNvbHVtbiBpbiBwYXJ0aXRpb24gLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF90 ZXN0X3BhcnRpdGlvbmVkIFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0X3BhcnQxJyk7CisgdXBkYXRl cyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDEKKygxIHJvdykKKwor LS0gVmVyaWZ5IGluZGV4IHdhcyB1cGRhdGVkCitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9w YXJ0aXRpb25lZCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKKyBpZCAKKy0tLS0KKyAgMQor KDEgcm93KQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUcmlnZ2VyIG1vZGlm aWNhdGlvbnM6IGhlYXBfbW9kaWZ5X3R1cGxlKCkgYW5kIEhPVAorLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gVGVzdCB0aGF0IHdlIGNvcnJlY3RseSBkZXRlY3Qgd2hlbiB0cmln Z2VycyBtb2RpZnkgaW5kZXhlZCBjb2x1bW5zIHZpYQorLS0gaGVhcF9tb2RpZnlfdHVwbGUo KSwgZXZlbiB3aGVuIHRob3NlIGNvbHVtbnMgYXJlbid0IGluIHRoZSBVUERBVEUncyBTRVQg Y2xhdXNlCitDUkVBVEUgVEFCTEUgaG90X3RyaWdnZXJfdGVzdCAoCisgICAgaWQgaW50IFBS SU1BUlkgS0VZLAorICAgIHRyaWdnZXJlZF9jb2wgaW50LAorICAgIGRhdGEgdGV4dAorKSBX SVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhvdF90cmlnZ2VyX2lkeCBP TiBob3RfdHJpZ2dlcl90ZXN0KHRyaWdnZXJlZF9jb2wpOworLS0gQ3JlYXRlIGEgdHJpZ2dl ciB0aGF0IG1vZGlmaWVzIGFuIGluZGV4ZWQgY29sdW1uCitDUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpCitSRVRVUk5TIFRSSUdHRVIgQVMgJCQK K0JFR0lOCisgICAgTkVXLnRyaWdnZXJlZF9jb2wgPSBORVcudHJpZ2dlcmVkX2NvbCArIDE7 CisgICAgUkVUVVJOIE5FVzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUg VFJJR0dFUiBiZWZvcmVfdXBkYXRlX21vZGlmeQorICAgIEJFRk9SRSBVUERBVEUgT04gaG90 X3RyaWdnZXJfdGVzdAorICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgRlVOQ1RJT04g bW9kaWZ5X3RyaWdnZXJlZF9jb2woKTsKK0lOU0VSVCBJTlRPIGhvdF90cmlnZ2VyX3Rlc3Qg VkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF90cmlnZ2VyX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0t LS0tCisgICAgICAgMCB8ICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgb25seSBkYXRhIGNv bHVtbiwgYnV0IHRyaWdnZXIgbW9kaWZpZXMgaW5kZXhlZCBjb2x1bW4KKy0tIFNob3VsZCBO T1QgYmUgSE9UIGJlY2F1c2UgdHJpZ2dlciBtb2RpZmllZCBhbiBpbmRleGVkIGNvbHVtbgor VVBEQVRFIGhvdF90cmlnZ2VyX3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCcgV0hFUkUgaWQg PSAxOworLS0gVmVyaWZ5IGl0IHdhcyBOT1QgYSBIT1QgdXBkYXRlIChpbmRleGVkIGNvbHVt biB3YXMgbW9kaWZpZWQgYnkgdHJpZ2dlcikKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X3RyaWdnZXJfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0t LS0KKyAgICAgICAxIHwgICAwCisoMSByb3cpCisKKy0tIFZlcmlmeSB0aGUgdHJpZ2dlcmVk IGNvbHVtbiB3YXMgYWN0dWFsbHkgbW9kaWZpZWQKK1NFTEVDVCB0cmlnZ2VyZWRfY29sIEZS T00gaG90X3RyaWdnZXJfdGVzdCBXSEVSRSBpZCA9IDE7CisgdHJpZ2dlcmVkX2NvbCAKKy0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAxMDEKKygxIHJvdykKKworRFJPUCBUQUJMRSBo b3RfdHJpZ2dlcl90ZXN0IENBU0NBREU7CitEUk9QIEZVTkNUSU9OIG1vZGlmeV90cmlnZ2Vy ZWRfY29sKCk7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBKU09OQiBleHByZXNz aW9uIGluZGV4ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tpbmcKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tIFRlc3QgdGhhdCB1cGRhdGVzIHRvIG5vbi1pbmRleGVkIEpTT05C IHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRlcworQ1JFQVRFIFRBQkxFIGhvdF9qc29uYl90ZXN0 ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgZGF0YSBqc29uYgorKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworLS0gQ3JlYXRlIGV4cHJlc3Npb24gaW5kZXggb24gYSBzcGVj aWZpYyBKU09OIHBhdGgKK0NSRUFURSBJTkRFWCBob3RfanNvbmJfbmFtZV9pZHggT04gaG90 X2pzb25iX3Rlc3QgKChkYXRhLT4+J25hbWUnKSk7CitJTlNFUlQgSU5UTyBob3RfanNvbmJf dGVzdCBWQUxVRVMKKyAgICAoMSwgJ3sibmFtZSI6IkFsaWNlIiwiYWdlIjozMCwiY2l0eSI6 Ik5ZQyJ9JyksCisgICAgKDIsICd7Im5hbWUiOiJCb2IiLCJhZ2UiOjI1LCJjaXR5IjoiTEEi fScpOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOwor IHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAwIHwgICAwCisoMSBy b3cpCisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBKU09OIHBhdGggKGFnZSkgLSBzaG91bGQg YmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNF VCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7YWdlfScsICczMScpIFdIRVJFIGlkID0gMTsK K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKyB1cGRh dGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMSB8ICAgMAorKDEgcm93KQor CistLSBVcGRhdGUgaW5kZXhlZCBKU09OIHBhdGggKG5hbWUpIC0gc2hvdWxkIE5PVCBiZSBI T1QKK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGpzb25iX3NldChkYXRhLCAn e25hbWV9JywgJyJBbGljZTIiJykgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0t LS0rLS0tLS0KKyAgICAgICAyIHwgICAwCisoMSByb3cpCisKKy0tIFZlcmlmeSBpbmRleCB3 b3JrcworU0VMRUNUIGlkIEZST00gaG90X2pzb25iX3Rlc3QgV0hFUkUgZGF0YS0+PiduYW1l JyA9ICdBbGljZTInOworIGlkIAorLS0tLQorICAxCisoMSByb3cpCisKKy0tIFRlc3QganNv bmJfZGVsZXRlIG9uIG5vbi1pbmRleGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGlu c3RydW1lbnRhdGlvbgorVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0gZGF0YSAt ICdjaXR5JyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF9qc29uYl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAg ICAgIDMgfCAgIDAKKygxIHJvdykKKworLS0gVGVzdCBqc29uYl9pbnNlcnQgb24gbm9uLWlu ZGV4ZWQgcGF0aCAtIHNob3VsZCBiZSBIT1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCitVUERB VEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9pbnNlcnQoZGF0YSwgJ3tjb3Vu dHJ5fScsICciVVNBIicpIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0t LS0tCisgICAgICAgNCB8ICAgMAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhvdF9qc29uYl90 ZXN0OworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gWE1MIGV4cHJlc3Npb24gaW5k ZXhlcyBhbmQgc3ViLWF0dHJpYnV0ZSB0cmFja2luZworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gVGVzdCB0aGF0IHVwZGF0ZXMgdG8gbm9uLWluZGV4ZWQgWE1MIHBhdGhzIGNh biBiZSBIT1QgdXBkYXRlcworQ1JFQVRFIFRBQkxFIGhvdF94bWxfdGVzdCAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIGRvYyB4bWwKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKKy0tIENyZWF0ZSBleHByZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lmaWMgWFBhdGgKK0NS RUFURSBJTkRFWCBob3RfeG1sX25hbWVfaWR4IE9OIGhvdF94bWxfdGVzdCAoKHhwYXRoKCcv cGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSkpOworSU5TRVJUIElOVE8gaG90X3htbF90ZXN0 IFZBTFVFUworICAgICgxLCAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMwPC9h Z2U+PC9wZXJzb24+JyksCisgICAgKDIsICc8cGVyc29uPjxuYW1lPkJvYjwvbmFtZT48YWdl PjI1PC9hZ2U+PC9wZXJzb24+Jyk7CitFUlJPUjogIGNvdWxkIG5vdCBpZGVudGlmeSBhIGNv bXBhcmlzb24gZnVuY3Rpb24gZm9yIHR5cGUgeG1sCitTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF94bWxfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0t LS0KKyAgICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBY UGF0aCAoYWdlKSAtIGJlaGF2aW9yIGRlcGVuZHMgb24gWE1MIGNvbXBhcmlzb24gZmFsbGJh Y2sKKy0tIEZ1bGwgWE1MIHZhbHVlIHJlcGxhY2VtZW50IG1lYW5zIG5vbi1pbmRleGVkIHBh dGggdXBkYXRlcyBzdGlsbCByZXF1aXJlIGluZGV4IGNvbXBhcmlzb24KK1VQREFURSBob3Rf eG1sX3Rlc3QgU0VUIGRvYyA9ICc8cGVyc29uPjxuYW1lPkFsaWNlPC9uYW1lPjxhZ2U+MzE8 L2FnZT48L3BlcnNvbj4nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3htbF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0t LQorICAgICAgIDAgfCAgIDAKKygxIHJvdykKKworLS0gVXBkYXRlIGluZGV4ZWQgWFBhdGgg KG5hbWUpIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRv YyA9ICc8cGVyc29uPjxuYW1lPkFsaWNlMjwvbmFtZT48YWdlPjMxPC9hZ2U+PC9wZXJzb24+ JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF94bWxf dGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAwIHwg ICAwCisoMSByb3cpCisKKy0tIFZlcmlmeSBpbmRleCB3b3JrcworU0VMRUNUIGlkIEZST00g aG90X3htbF90ZXN0IFdIRVJFIHhwYXRoKCcvcGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSA9 IEFSUkFZWydBbGljZTInOjp0ZXh0XTsKK0VSUk9SOiAgb3BlcmF0b3IgZG9lcyBub3QgZXhp c3Q6IHhtbFtdID0gdGV4dFtdCitMSU5FIDE6IC4uLl94bWxfdGVzdCBXSEVSRSB4cGF0aCgn L3BlcnNvbi9uYW1lL3RleHQoKScsIGRvYykgPSBBUlJBWVsnQS4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RF VEFJTDogIE5vIG9wZXJhdG9yIG9mIHRoYXQgbmFtZSBhY2NlcHRzIHRoZSBnaXZlbiBhcmd1 bWVudCB0eXBlcy4KK0hJTlQ6ICBZb3UgbWlnaHQgbmVlZCB0byBhZGQgZXhwbGljaXQgdHlw ZSBjYXN0cy4KK0RST1AgVEFCTEUgaG90X3htbF90ZXN0OworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gR0lOIGluZGV4ZXMgYW5kIGFtY29tcGFyZWRhdHVtcyBmb3IgSlNPTkIK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3QgdGhhdCBHSU4gaW5kZXhlcyBj YW4gdXNlIGFtY29tcGFyZWRhdHVtcyB0byBlbmFibGUgSE9UIHdoZW4gZXh0cmFjdGVkIGtl eXMgbWF0Y2gKK0NSRUFURSBUQUJMRSBob3RfZ2luX3Rlc3QgKAorICAgIGlkIGludCBQUklN QVJZIEtFWSwKKyAgICB0YWdzIHRleHRbXSwKKyAgICBwcm9wZXJ0aWVzIGpzb25iCispIFdJ VEggKGZpbGxmYWN0b3IgPSA1MCk7CistLSBHSU4gaW5kZXggb24gdGV4dCBhcnJheQorQ1JF QVRFIElOREVYIGhvdF9naW5fdGFnc19pZHggT04gaG90X2dpbl90ZXN0IFVTSU5HIGdpbiAo dGFncyk7CistLSBHSU4gaW5kZXggb24gSlNPTkIgKGpzb25iX29wcyAtIGtleXMgYW5kIHZh bHVlcykKK0NSRUFURSBJTkRFWCBob3RfZ2luX3Byb3BzX2lkeCBPTiBob3RfZ2luX3Rlc3Qg VVNJTkcgZ2luIChwcm9wZXJ0aWVzKTsKK0lOU0VSVCBJTlRPIGhvdF9naW5fdGVzdCBWQUxV RVMKKyAgICAoMSwgQVJSQVlbJ3RhZzEnLCAndGFnMiddLCAneyJrZXkxIjoidmFsMSIsImtl eTIiOiJ2YWwyIn0nKSwKKyAgICAoMiwgQVJSQVlbJ3RhZzMnLCAndGFnNCddLCAneyJrZXkz IjoidmFsMyIsImtleTQiOiJ2YWw0In0nKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X2dpbl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQor ICAgICAgIDAgfCAgIDAKKygxIHJvdykKKworLS0gVXBkYXRlIHRoYXQgY2hhbmdlcyB0YWcg b3JkZXIgYnV0IG5vdCBjb250ZW50IC0gYWZ0ZXIgYW1jb21wYXJlZGF0dW1zIHNob3VsZCBi ZSBIT1QKKy0tIChHSU4gZXh0cmFjdHMgc2FtZSBrZXlzLCBqdXN0IGRpZmZlcmVudCBvcmRl cikKK1VQREFURSBob3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJBWVsndGFnMicsICd0YWcx J10gV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfZ2lu X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMSB8 ICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgSlNPTkIgdmFsdWUgKG5vdCBrZXkpIC0gYWZ0 ZXIgYW1jb21wYXJlZGF0dW1zIG1heSBiZSBIT1Qgb3Igbm9uLUhPVAorLS0gZGVwZW5kaW5n IG9uIEdJTiBvcGVyYXRvciBjbGFzcyAoanNvbmJfb3BzIGluZGV4ZXMgYm90aCBrZXlzIGFu ZCB2YWx1ZXMpCitVUERBVEUgaG90X2dpbl90ZXN0IFNFVCBwcm9wZXJ0aWVzID0gJ3sia2V5 MSI6InZhbDFfbmV3Iiwia2V5MiI6InZhbDIifScgV0hFUkUgaWQgPSAxOworU0VMRUNUICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfZ2luX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAor LS0tLS0tLS0tKy0tLS0tCisgICAgICAgMiB8ICAgMAorKDEgcm93KQorCistLSBBZGQgbmV3 IHRhZyAtIHNob3VsZCBOT1QgYmUgSE9UIChkaWZmZXJlbnQgZXh0cmFjdGVkIGtleXMpCitV UERBVEUgaG90X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMScsICd0 YWc1J10gV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf Z2luX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAg MyB8ICAgMAorKDEgcm93KQorCistLSBWZXJpZnkgR0lOIGluZGV4ZXMgd29yaworU0VMRUNU IGlkIEZST00gaG90X2dpbl90ZXN0IFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUnXTsKKyBp ZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitTRUxFQ1QgaWQgRlJPTSBob3RfZ2luX3Rlc3Qg V0hFUkUgcHJvcGVydGllcyBAPiAneyJrZXkxIjoidmFsMV9uZXcifSc7CisgaWQgCistLS0t CisgIDEKKygxIHJvdykKKworRFJPUCBUQUJMRSBob3RfZ2luX3Rlc3Q7CistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBDbGVhbnVwCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CitEUk9QIFRBQkxFIElGIEVYSVNUUyBob3RfdGVzdDsKK0RST1AgVEFCTEUgSUYgRVhJU1RT IGhvdF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNU UyBoYXNfaG90X2NoYWluKHRleHQsIHRpZCk7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBw cmludF9ob3RfY2hhaW4odGV4dCwgdGlkKTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGdl dF9ob3RfY291bnQodGV4dCk7CitEUk9QIEVYVEVOU0lPTiBwYWdlaW5zcGVjdDsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDhmYTBhNmM0N2ZiLi5iZDk1Y2MyNDk3 NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xNDMsNiArMTQzLDEx IEBAIHRlc3Q6IGV2ZW50X3RyaWdnZXJfbG9naW4KICMgdGhpcyB0ZXN0IGFsc28gdXNlcyBl dmVudCB0cmlnZ2Vycywgc28gbGlrZXdpc2UgcnVuIGl0IGJ5IGl0c2VsZgogdGVzdDogZmFz dF9kZWZhdWx0CiAKKyMgLS0tLS0tLS0tLQorIyBIT1QgdXBkYXRlcyB0ZXN0cworIyAtLS0t LS0tLS0tCit0ZXN0OiBob3RfdXBkYXRlcworCiAjIHJ1biB0YWJsZXNwYWNlIHRlc3QgYXQg dGhlIGVuZCBiZWNhdXNlIGl0IGRyb3BzIHRoZSB0YWJsZXNwYWNlIGNyZWF0ZWQgZHVyaW5n CiAjIHNldHVwIHRoYXQgb3RoZXIgdGVzdHMgbWF5IHVzZS4KIHRlc3Q6IHRhYmxlc3BhY2UK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRhdGVzLnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRhdGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uYTg4OTQwMDYxNzcKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwKQEAgLTAsMCArMSw2MDUgQEAK Ky0tCistLSBIT1RfVVBEQVRFUworLS0gVGVzdCBIZWFwLU9ubHkgVHVwbGUgKEhPVCkgdXBk YXRlIGRlY2lzaW9ucworLS0KKy0tIFRoaXMgdGVzdCBzeXN0ZW1hdGljYWxseSB2ZXJpZmll cyB0aGF0IEhPVCB1cGRhdGVzIGFyZSB1c2VkIHdoZW4gYXBwcm9wcmlhdGUKKy0tIGFuZCBh dm9pZGVkIHdoZW4gbmVjZXNzYXJ5IChlLmcuLCB3aGVuIGluZGV4ZWQgY29sdW1ucyBhcmUg bW9kaWZpZWQpLgorLS0KKy0tIFdlIHVzZSBtdWx0aXBsZSB2YWxpZGF0aW9uIG1ldGhvZHM6 CistLSAxLiBTdGF0aXN0aWNzIGZ1bmN0aW9ucyAocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91 cGRhdGVkKQorLS0gMi4gcGFnZWluc3BlY3QgZXh0ZW5zaW9uIGZvciBIT1QgY2hhaW4gZXhh bWluYXRpb24KKy0tIDMuIEVYUExBSU4gdG8gdmVyaWZ5IGluZGV4IHVzYWdlIGFmdGVyIHVw ZGF0ZXMKKy0tCisKKy0tIExvYWQgcmVxdWlyZWQgZXh0ZW5zaW9ucworQ1JFQVRFIEVYVEVO U0lPTiBJRiBOT1QgRVhJU1RTIHBhZ2VpbnNwZWN0OworCistLSBGdW5jdGlvbiB0byBnZXQg SE9UIHVwZGF0ZSBjb3VudAorQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZ2V0X2hvdF9j b3VudChyZWxfbmFtZSB0ZXh0KQorUkVUVVJOUyBUQUJMRSAoCisgICAgdXBkYXRlcyBCSUdJ TlQsCisgICAgaG90IEJJR0lOVAorKSBBUyAkJAorREVDTEFSRQorICByZWxfb2lkIG9pZDsK K0JFR0lOCisgIHJlbF9vaWQgOj0gcmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7CisKKyAgLS0g UmVhZCBib3RoIGNvbW1pdHRlZCBhbmQgdHJhbnNhY3Rpb24tbG9jYWwgc3RhdHMKKyAgLS0g SW4gYXV0b2NvbW1pdCBtb2RlIChkZWZhdWx0IGZvciByZWdyZXNzaW9uIHRlc3RzKSwgdGhp cyB3b3JrcyBjb3JyZWN0bHkKKyAgLS0gTm90ZTogSW4gZXhwbGljaXQgdHJhbnNhY3Rpb25z IChCRUdJTi9DT01NSVQpLCBjb21taXR0ZWQgc3RhdHMgYWxyZWFkeQorICAtLSBpbmNsdWRl IGZsdXNoZWQgdXBkYXRlcywgc28gdGhpcyB3b3VsZCBkb3VibGUtY291bnQuIEZvciBleHBs aWNpdAorICAtLSB0cmFuc2FjdGlvbiB0ZXN0aW5nLCBjYWxsIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCgpIGJlZm9yZSB0aGlzIGZ1bmN0aW9uLgorICB1cGRhdGVzIDo9IENPQUxFU0NF KHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICAg ICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwg MCk7CisgIGhvdCA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQo cmVsX29pZCksIDApICsKKyAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKTsKKworICBSRVRVUk4gTkVYVDsKK0VORDsK KyQkIExBTkdVQUdFIHBscGdzcWw7CisKKy0tIENoZWNrIGlmIGEgdHVwbGUgaXMgcGFydCBv ZiBhIEhPVCBjaGFpbiAoaGFzIGEgcHJlZGVjZXNzb3Igb24gc2FtZSBwYWdlKQorQ1JFQVRF IE9SIFJFUExBQ0UgRlVOQ1RJT04gaGFzX2hvdF9jaGFpbihyZWxfbmFtZSB0ZXh0LCB0YXJn ZXRfY3RpZCB0aWQpCitSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0RFQ0xBUkUKKyAgYmxvY2tf bnVtIGludDsKKyAgcGFnZV9pdGVtIHJlY29yZDsKK0JFR0lOCisgIGJsb2NrX251bSA6PSAo dGFyZ2V0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50OworCisgIC0tIExvb2sgZm9yIGEg ZGlmZmVyZW50IHR1cGxlIG9uIHRoZSBzYW1lIHBhZ2UgdGhhdCBwb2ludHMgdG8gb3VyIHRh cmdldCB0dXBsZQorICBGT1IgcGFnZV9pdGVtIElOCisgICAgU0VMRUNUIGxwLCBscF9mbGFn cywgdF9jdGlkCisgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9u YW1lLCBibG9ja19udW0pKQorICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAgICAgQU5EIHRf Y3RpZCBJUyBOT1QgTlVMTAorICAgICAgQU5EIHRfY3RpZCA9IHRhcmdldF9jdGlkCisgICAg ICBBTkQgKCcoJyB8fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IGxwOjp0ZXh0IHx8ICcp Jyk6OnRpZCAhPSB0YXJnZXRfY3RpZAorICBMT09QCisgICAgUkVUVVJOIHRydWU7CisgIEVO RCBMT09QOworCisgIFJFVFVSTiBmYWxzZTsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7 CisKKy0tIFByaW50IHRoZSBIT1QgY2hhaW4gc3RhcnRpbmcgZnJvbSBhIGdpdmVuIHR1cGxl CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBwcmludF9ob3RfY2hhaW4ocmVsX25hbWUg dGV4dCwgc3RhcnRfY3RpZCB0aWQpCitSRVRVUk5TIFRBQkxFKGNoYWluX3Bvc2l0aW9uIGlu dCwgY3RpZCB0aWQsIGxwX2ZsYWdzIHRleHQsIHRfY3RpZCB0aWQsIGNoYWluX2VuZCBib29s ZWFuKSBBUworJCQKKyN2YXJpYWJsZV9jb25mbGljdCB1c2VfY29sdW1uCitERUNMQVJFCisg IGJsb2NrX251bSBpbnQ7CisgIGxpbmVfcHRyIGludDsKKyAgY3VycmVudF9jdGlkIHRpZCA6 PSBzdGFydF9jdGlkOworICBuZXh0X2N0aWQgdGlkOworICBwb3NpdGlvbiBpbnQgOj0gMDsK KyAgbWF4X2l0ZXJhdGlvbnMgaW50IDo9IDEwMDsKKyAgcGFnZV9pdGVtIHJlY29yZDsKKyAg Zm91bmRfcHJlZGVjZXNzb3IgYm9vbGVhbiA6PSBmYWxzZTsKKyAgZmxhZ3NfbmFtZSB0ZXh0 OworQkVHSU4KKyAgYmxvY2tfbnVtIDo9IChzdGFydF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06 OmludDsKKworICAtLSBGaW5kIHRoZSBwcmVkZWNlc3NvciAob2xkIHR1cGxlIHBvaW50aW5n IHRvIG91ciBzdGFydF9jdGlkKQorICBGT1IgcGFnZV9pdGVtIElOCisgICAgU0VMRUNUIGxw LCBscF9mbGFncywgdF9jdGlkCisgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19w YWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAg ICAgQU5EIHRfY3RpZCA9IHN0YXJ0X2N0aWQKKyAgTE9PUAorICAgIGN1cnJlbnRfY3RpZCA6 PSAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcgfHwgcGFnZV9pdGVtLmxwOjp0ZXh0 IHx8ICcpJyk6OnRpZDsKKyAgICBmb3VuZF9wcmVkZWNlc3NvciA6PSB0cnVlOworICAgIEVY SVQ7CisgIEVORCBMT09QOworCisgIC0tIElmIG5vIHByZWRlY2Vzc29yIGZvdW5kLCBzdGFy dCB3aXRoIHRoZSBnaXZlbiBjdGlkCisgIElGIE5PVCBmb3VuZF9wcmVkZWNlc3NvciBUSEVO CisgICAgY3VycmVudF9jdGlkIDo9IHN0YXJ0X2N0aWQ7CisgIEVORCBJRjsKKworICAtLSBG b2xsb3cgdGhlIGNoYWluIGZvcndhcmQKKyAgV0hJTEUgcG9zaXRpb24gPCBtYXhfaXRlcmF0 aW9ucyBMT09QCisgICAgbGluZV9wdHIgOj0gKGN1cnJlbnRfY3RpZDo6dGV4dDo6cG9pbnQp WzFdOjppbnQ7CisKKyAgICBGT1IgcGFnZV9pdGVtIElOCisgICAgICBTRUxFQ1QgbHAsIGxw X2ZsYWdzLCB0X2N0aWQKKyAgICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFn ZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICAgIFdIRVJFIGxwID0gbGluZV9wdHIKKyAg ICBMT09QCisgICAgICAtLSBNYXAgbHBfZmxhZ3MgdG8gbmFtZXMKKyAgICAgIGZsYWdzX25h bWUgOj0gQ0FTRSBwYWdlX2l0ZW0ubHBfZmxhZ3MKKyAgICAgICAgV0hFTiAwIFRIRU4gJ3Vu dXNlZCAoMCknCisgICAgICAgIFdIRU4gMSBUSEVOICdub3JtYWwgKDEpJworICAgICAgICBX SEVOIDIgVEhFTiAncmVkaXJlY3QgKDIpJworICAgICAgICBXSEVOIDMgVEhFTiAnZGVhZCAo MyknCisgICAgICAgIEVMU0UgJ3Vua25vd24gKCcgfHwgcGFnZV9pdGVtLmxwX2ZsYWdzOjp0 ZXh0IHx8ICcpJworICAgICAgRU5EOworCisgICAgICBSRVRVUk4gUVVFUlkgU0VMRUNUCisg ICAgICAgIHBvc2l0aW9uLAorICAgICAgICBjdXJyZW50X2N0aWQsCisgICAgICAgIGZsYWdz X25hbWUsCisgICAgICAgIHBhZ2VfaXRlbS50X2N0aWQsCisgICAgICAgIChwYWdlX2l0ZW0u dF9jdGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCk6OmJv b2xlYW4KKyAgICAgIDsKKworICAgICAgSUYgcGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9S IHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQgVEhFTgorICAgICAgICBSRVRVUk47 CisgICAgICBFTkQgSUY7CisKKyAgICAgIG5leHRfY3RpZCA6PSBwYWdlX2l0ZW0udF9jdGlk OworCisgICAgICBJRiAobmV4dF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludCAhPSBibG9j a19udW0gVEhFTgorICAgICAgICBSRVRVUk47CisgICAgICBFTkQgSUY7CisKKyAgICAgIGN1 cnJlbnRfY3RpZCA6PSBuZXh0X2N0aWQ7CisgICAgICBwb3NpdGlvbiA6PSBwb3NpdGlvbiAr IDE7CisgICAgRU5EIExPT1A7CisKKyAgICBJRiBwb3NpdGlvbiA9IDAgVEhFTgorICAgICAg UkVUVVJOOworICAgIEVORCBJRjsKKyAgRU5EIExPT1A7CitFTkQ7CiskJCBMQU5HVUFHRSBw bHBnc3FsOworCistLSBCYXNpYyBIT1QgdXBkYXRlICh1cGRhdGUgbm9uLWluZGV4ZWQgY29s dW1uKQorQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVks CisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIG5vbl9pbmRleGVkX2NvbCB0ZXh0CispIFdJ VEggKGZpbGxmYWN0b3IgPSA1MCk7CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9pbmRleGVk X2lkeCBPTiBob3RfdGVzdChpbmRleGVkX2NvbCk7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFM VUVTICgyLCAyMDAsICdpbml0aWFsJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDMsIDMwMCwgJ2luaXRpYWwnKTsKKworLS0gR2V0IGJhc2VsaW5lCitTRUxFQ1QgKiBGUk9N IGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFNob3VsZCBiZSBIT1QgdXBkYXRl cyAob25seSBub24taW5kZXhlZCBjb2x1bW4gbW9kaWZpZWQpCitVUERBVEUgaG90X3Rlc3Qg U0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAxOworVVBEQVRF IGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDInIFdIRVJFIGlkID0g MjsKK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQzJyBX SEVSRSBpZCA9IDM7CisKKy0tIFZlcmlmeSBIT1QgdXBkYXRlcyBvY2N1cnJlZAorU0VMRUNU ICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBEdW1wIHRoZSBIT1Qg Y2hhaW4gYmVmb3JlIFZBQ1VVTWluZworV0lUSCBjdXJyZW50X3R1cGxlIEFTICgKKyAgU0VM RUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDEKKykKK1NFTEVDVAorICBoYXNf aG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCkgQVMgaGFzX2NoYWlu LAorICBjaGFpbl9wb3NpdGlvbiwKKyAgcHJpbnRfaG90X2NoYWluLmN0aWQsCisgIGxwX2Zs YWdzLAorICB0X2N0aWQKK0ZST00gY3VycmVudF90dXBsZSwKK0xBVEVSQUwgcHJpbnRfaG90 X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7CisKKy0tIFZhY3V1bSB0 aGUgcmVsYXRpb24sIGV4cGVjdCB0aGUgSE9UIGNoYWluIHRvIGNvbGxhcHNlCitWQUNVVU0g aG90X3Rlc3Q7CisKKy0tIFNob3cgdGhhdCB0aGVyZSBpcyBubyBjaGFpbiBhZnRlciB2YWN1 dW0KK1dJVEggY3VycmVudF90dXBsZSBBUyAoCisgIFNFTEVDVCBjdGlkIEZST00gaG90X3Rl c3QgV0hFUkUgaWQgPSAxCispCitTRUxFQ1QKKyAgaGFzX2hvdF9jaGFpbignaG90X3Rlc3Qn LCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKKyAgY2hhaW5fcG9zaXRpb24s CisgIHByaW50X2hvdF9jaGFpbi5jdGlkLAorICBscF9mbGFncywKKyAgdF9jdGlkCitGUk9N IGN1cnJlbnRfdHVwbGUsCitMQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBj dXJyZW50X3R1cGxlLmN0aWQpOworCistLSBOb24tSE9UIHVwZGF0ZSAodXBkYXRlIGluZGV4 ZWQgY29sdW1uKQorVVBEQVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVS RSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisK Ky0tIFZlcmlmeSBpbmRleCB3YXMgdXBkYXRlZCAobmV3IHZhbHVlIGZpbmRhYmxlKQorU0VU IGVuYWJsZV9zZXFzY2FuID0gb2ZmOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQs IGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CitT RUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wg PSAxNTA7CisKKy0tIFZlcmlmeSBvbGQgdmFsdWUgbm8gbG9uZ2VyIGluIGluZGV4CitFWFBM QUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRf Y29sID0gMTAwOworU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wg PSAxMDA7CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKworLS0gQWxsLW9yLW5vbmUgcHJvcGVy dHk6IHVwZGF0aW5nIG9uZSBpbmRleGVkIGNvbHVtbiByZXF1aXJlcyBBTEwgaW5kZXggdXBk YXRlcworRFJPUCBUQUJMRSBob3RfdGVzdDsKKworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgK KyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGlu dCwKKyAgICBjb2xfYyBpbnQsCisgICAgbm9uX2luZGV4ZWQgdGV4dAorKSBXSVRIIChmaWxs ZmFjdG9yID0gNTApOworCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYV9pZHggT04gaG90X3Rl c3QoY29sX2EpOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JfaWR4IE9OIGhvdF90ZXN0KGNv bF9iKTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9jX2lkeCBPTiBob3RfdGVzdChjb2xfYyk7 CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgJ2luaXRp YWwnKTsKKworLS0gVXBkYXRlIG9ubHkgY29sX2EgLSBzaG91bGQgTk9UIGJlIEhPVCBiZWNh dXNlIGFuIGluZGV4ZWQgY29sdW1uIGNoYW5nZWQKKy0tIFRoaXMgbWVhbnMgQUxMIGluZGV4 ZXMgbXVzdCBiZSB1cGRhdGVkIChhbGwtb3Itbm9uZSBwcm9wZXJ0eSkKK1VQREFURSBob3Rf dGVzdCBTRVQgY29sX2EgPSAxNSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIE5vdyB1cGRhdGUgb25seSBub24taW5kZXhl ZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRl eGVkID0gJ3VwZGF0ZWQnOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVz dCcpOworCistLSBQYXJ0aWFsIGluZGV4OiBib3RoIG9sZCBhbmQgbmV3IG91dHNpZGUgcHJl ZGljYXRlIChjb25zZXJ2YXRpdmUgPSBub24tSE9UKQorRFJPUCBUQUJMRSBob3RfdGVzdDsK KworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisg ICAgc3RhdHVzIHRleHQsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CisKKy0tIFBhcnRpYWwgaW5kZXggb25seSBjb3ZlcnMgc3RhdHVzID0gJ2FjdGl2ZScK K0NSRUFURSBJTkRFWCBob3RfdGVzdF9hY3RpdmVfaWR4IE9OIGhvdF90ZXN0KHN0YXR1cykg V0hFUkUgc3RhdHVzID0gJ2FjdGl2ZSc7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVF UyAoMSwgJ2FjdGl2ZScsICdkYXRhMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVT ICgyLCAnaW5hY3RpdmUnLCAnZGF0YTInKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVF UyAoMywgJ2RlbGV0ZWQnLCAnZGF0YTMnKTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNv bHVtbiBvbiAnYWN0aXZlJyByb3cgKGluIHByZWRpY2F0ZSwgc3RhdHVzIHVuY2hhbmdlZCkK Ky0tIFNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVk MScgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVz dCcpOworCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIG9uICdpbmFjdGl2ZScgcm93 IChvdXRzaWRlIHByZWRpY2F0ZSkKKy0tIFNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVz dCBTRVQgZGF0YSA9ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBVcGRhdGUgc3RhdHVzIGZyb20gJ2lu YWN0aXZlJyB0byAnZGVsZXRlZCcgKGJvdGggb3V0c2lkZSBwcmVkaWNhdGUpCistLSBQb3N0 Z3JlU1FMIGlzIGNvbnNlcnZhdGl2ZTogaGVhcCBpbnNlcnQgaGFwcGVucyBiZWZvcmUgcHJl ZGljYXRlIGNoZWNrCistLSBTbyB0aGlzIGlzIE5PTi1IT1QgZXZlbiB0aG91Z2ggYm90aCB2 YWx1ZXMgYXJlIG91dHNpZGUgcHJlZGljYXRlCitVUERBVEUgaG90X3Rlc3QgU0VUIHN0YXR1 cyA9ICdkZWxldGVkJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFZlcmlmeSBpbmRleCBzdGlsbCB3b3JrcyBmb3IgJ2Fj dGl2ZScgcm93cworU0VMRUNUIGlkLCBzdGF0dXMgRlJPTSBob3RfdGVzdCBXSEVSRSBzdGF0 dXMgPSAnYWN0aXZlJzsKKworLS0gT25seSBCUklOIChzdW1tYXJpemluZykgaW5kZXhlcyBv biBub24tUEsgY29sdW1ucworRFJPUCBUQUJMRSBob3RfdGVzdDsKKworQ1JFQVRFIFRBQkxF IGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdHMgdGltZXN0YW1w LAorICAgIHZhbHVlIGludCwKKyAgICBicmluX2NvbCBpbnQKKykgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3RzX2JyaW4gT04gaG90X3Rlc3Qg VVNJTkcgYnJpbih0cyk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYnJpbl9jb2xfYnJpbiBP TiBob3RfdGVzdCBVU0lORyBicmluKGJyaW5fY29sKTsKKworSU5TRVJUIElOVE8gaG90X3Rl c3QgVkFMVUVTICgxLCAnMjAyNC0wMS0wMScsIDEwMCwgMTAwMCk7CisKKy0tIFVwZGF0ZSBi b3RoIEJSSU4gY29sdW1ucyAtIHNob3VsZCBzdGlsbCBiZSBIT1QgKG9ubHkgc3VtbWFyaXpp bmcgaW5kZXhlcykKK1VQREFURSBob3RfdGVzdCBTRVQgdHMgPSAnMjAyNC0wMS0wMicsIGJy aW5fY29sID0gMjAwMCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gLSBzaG91 bGQgYWxzbyBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgdmFsdWUgPSAyMDAgV0hFUkUg aWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCist LSBUT0FTVCBhbmQgSE9UOiBUT0FTVGVkIGNvbHVtbnMgY2FuIHBhcnRpY2lwYXRlIGluIEhP VAorRFJPUCBUQUJMRSBob3RfdGVzdDsKKworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIGxhcmdl X3RleHQgdGV4dCwKKyAgICBzbWFsbF90ZXh0IHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9 IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2lkeCBPTiBob3RfdGVzdChpbmRleGVk X2NvbCk7CisKKy0tIEluc2VydCByb3cgd2l0aCBUT0FTVGVkIGNvbHVtbiAoPiAyS0IpCitJ TlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgcmVwZWF0KCd4JywgMzAwMCks ICdzbWFsbCcpOworCistLSBVcGRhdGUgbm9uLWluZGV4ZWQsIG5vbi1UT0FTVGVkIGNvbHVt biAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgc21hbGxfdGV4dCA9ICd1 cGRhdGVkJzsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKwor LS0gVXBkYXRlIFRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhPVCBpZiBpbmRleGVkIGNv bHVtbiB1bmNoYW5nZWQKK1VQREFURSBob3RfdGVzdCBTRVQgbGFyZ2VfdGV4dCA9IHJlcGVh dCgneScsIDMwMDApOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcp OworCistLSBVcGRhdGUgaW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgTk9UIGJlIEhPVAorVVBE QVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2NvbCA9IDIwMDsKK1NFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVW5pcXVlIGNvbnN0cmFpbnQgKHVuaXF1 ZSBpbmRleCkgYmVoYXZlcyBsaWtlIHJlZ3VsYXIgaW5kZXgKK0RST1AgVEFCTEUgaG90X3Rl c3Q7CisKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZ LAorICAgIHVuaXF1ZV9jb2wgaW50IFVOSVFVRSwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAo ZmlsbGZhY3RvciA9IDUwKTsKKworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAx MDAsICdkYXRhMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdk YXRhMicpOworCistLSBVcGRhdGUgZGF0YSAobm9uLWluZGV4ZWQpIC0gc2hvdWxkIGJlIEhP VAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnOworU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBWZXJpZnkgdW5pcXVlIGNvbnN0 cmFpbnQgc3RpbGwgZW5mb3JjZWQKK1NFTEVDVCBpZCwgdW5pcXVlX2NvbCwgZGF0YSBGUk9N IGhvdF90ZXN0IE9SREVSIEJZIGlkOworCistLSBUaGlzIHNob3VsZCBmYWlsICh1bmlxdWUg dmlvbGF0aW9uKQorVVBEQVRFIGhvdF90ZXN0IFNFVCB1bmlxdWVfY29sID0gMTAwIFdIRVJF IGlkID0gMjsKKworLS0gTXVsdGktY29sdW1uIGluZGV4OiBhbnkgY29sdW1uIGNoYW5nZSA9 IG5vbi1IT1QKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBob3RfdGVz dCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGNvbF9hIGludCwKKyAgICBjb2xf YiBpbnQsCisgICAgY29sX2MgaW50LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYWJfaWR4IE9OIGhvdF90ZXN0 KGNvbF9hLCBjb2xfYik7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAs IDIwLCAzMCwgJ2RhdGEnKTsKKworLS0gVXBkYXRlIGNvbF9hIChwYXJ0IG9mIG11bHRpLWNv bHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBj b2xfYSA9IDE1OworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwor CistLSBSZXNldAorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYSA9IDEwOworCistLSBVcGRh dGUgY29sX2IgKHBhcnQgb2YgbXVsdGktY29sdW1uIGluZGV4KSAtIHNob3VsZCBOT1QgYmUg SE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9iID0gMjU7CitTRUxFQ1QgKiBGUk9NIGdl dF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFJlc2V0CitVUERBVEUgaG90X3Rlc3Qg U0VUIGNvbF9iID0gMjA7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0 Jyk7CisKKy0tIFVwZGF0ZSBjb2xfYyAobm90IGluZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAor VVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYyA9IDM1OworCistLSBVcGRhdGUgZGF0YSAobm90 IGluZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0g J3VwZGF0ZWQnOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwor CistLSBQYXJ0aXRpb25lZCB0YWJsZXM6IEhPVCB3b3JrcyB3aXRoaW4gcGFydGl0aW9ucwor RFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKKwor Q1JFQVRFIFRBQkxFIGhvdF90ZXN0X3BhcnRpdGlvbmVkICgKKyAgICBpZCBpbnQsCisgICAg cGFydGl0aW9uX2tleSBpbnQsCisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIGRhdGEgdGV4 dCwKKyAgICBQUklNQVJZIEtFWSAoaWQsIHBhcnRpdGlvbl9rZXkpCispIFBBUlRJVElPTiBC WSBSQU5HRSAocGFydGl0aW9uX2tleSk7CisKK0NSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0 MSBQQVJUSVRJT04gT0YgaG90X3Rlc3RfcGFydGl0aW9uZWQKKyAgICBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgxMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgVEFCTEUg aG90X3Rlc3RfcGFydDIgUEFSVElUSU9OIE9GIGhvdF90ZXN0X3BhcnRpdGlvbmVkCisgICAg Rk9SIFZBTFVFUyBGUk9NICgxMDApIFRPICgyMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9wYXJ0X2lkeCBPTiBob3RfdGVzdF9wYXJ0aXRp b25lZChpbmRleGVkX2NvbCk7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVk IFZBTFVFUyAoMSwgNTAsIDEwMCwgJ2luaXRpYWwxJyk7CitJTlNFUlQgSU5UTyBob3RfdGVz dF9wYXJ0aXRpb25lZCBWQUxVRVMgKDIsIDE1MCwgMjAwLCAnaW5pdGlhbDInKTsKKworLS0g VXBkYXRlIGluIHBhcnRpdGlvbiAxIChub24taW5kZXhlZCBjb2x1bW4pIC0gc2hvdWxkIGJl IEhPVAorVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3VwZGF0ZWQx JyBXSEVSRSBpZCA9IDE7CisKKy0tIFVwZGF0ZSBpbiBwYXJ0aXRpb24gMiAobm9uLWluZGV4 ZWQgY29sdW1uKSAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdF9wYXJ0aXRpb25l ZCBTRVQgZGF0YSA9ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOworCitTRUxFQ1QgKiBGUk9N IGdldF9ob3RfY291bnQoJ2hvdF90ZXN0X3BhcnQxJyk7CitTRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0X3BhcnQyJyk7CisKKy0tIFZlcmlmeSBpbmRleGVzIHdvcmsg b24gcGFydGl0aW9ucworU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hF UkUgaW5kZXhlZF9jb2wgPSAxMDA7CitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRp b25lZCBXSEVSRSBpbmRleGVkX2NvbCA9IDIwMDsKKworLS0gVXBkYXRlIGluZGV4ZWQgY29s dW1uIGluIHBhcnRpdGlvbiAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3Rf cGFydGl0aW9uZWQgU0VUIGluZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKK1NFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFydDEnKTsKKworLS0gVmVyaWZ5 IGluZGV4IHdhcyB1cGRhdGVkCitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25l ZCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKKworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gVHJpZ2dlciBtb2RpZmljYXRpb25zOiBoZWFwX21vZGlmeV90dXBsZSgpIGFuZCBI T1QKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3QgdGhhdCB3ZSBjb3JyZWN0 bHkgZGV0ZWN0IHdoZW4gdHJpZ2dlcnMgbW9kaWZ5IGluZGV4ZWQgY29sdW1ucyB2aWEKKy0t IGhlYXBfbW9kaWZ5X3R1cGxlKCksIGV2ZW4gd2hlbiB0aG9zZSBjb2x1bW5zIGFyZW4ndCBp biB0aGUgVVBEQVRFJ3MgU0VUIGNsYXVzZQorCitDUkVBVEUgVEFCTEUgaG90X3RyaWdnZXJf dGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRyaWdnZXJlZF9jb2wgaW50 LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCitDUkVBVEUg SU5ERVggaG90X3RyaWdnZXJfaWR4IE9OIGhvdF90cmlnZ2VyX3Rlc3QodHJpZ2dlcmVkX2Nv bCk7CisKKy0tIENyZWF0ZSBhIHRyaWdnZXIgdGhhdCBtb2RpZmllcyBhbiBpbmRleGVkIGNv bHVtbgorQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2wo KQorUkVUVVJOUyBUUklHR0VSIEFTICQkCitCRUdJTgorICAgIE5FVy50cmlnZ2VyZWRfY29s ID0gTkVXLnRyaWdnZXJlZF9jb2wgKyAxOworICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJCBM QU5HVUFHRSBwbHBnc3FsOworCitDUkVBVEUgVFJJR0dFUiBiZWZvcmVfdXBkYXRlX21vZGlm eQorICAgIEJFRk9SRSBVUERBVEUgT04gaG90X3RyaWdnZXJfdGVzdAorICAgIEZPUiBFQUNI IFJPVworICAgIEVYRUNVVEUgRlVOQ1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKTsKKwor SU5TRVJUIElOVE8gaG90X3RyaWdnZXJfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwn KTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdHJpZ2dlcl90ZXN0Jyk7 CisKKy0tIFVwZGF0ZSBvbmx5IGRhdGEgY29sdW1uLCBidXQgdHJpZ2dlciBtb2RpZmllcyBp bmRleGVkIGNvbHVtbgorLS0gU2hvdWxkIE5PVCBiZSBIT1QgYmVjYXVzZSB0cmlnZ2VyIG1v ZGlmaWVkIGFuIGluZGV4ZWQgY29sdW1uCitVUERBVEUgaG90X3RyaWdnZXJfdGVzdCBTRVQg ZGF0YSA9ICd1cGRhdGVkJyBXSEVSRSBpZCA9IDE7CisKKy0tIFZlcmlmeSBpdCB3YXMgTk9U IGEgSE9UIHVwZGF0ZSAoaW5kZXhlZCBjb2x1bW4gd2FzIG1vZGlmaWVkIGJ5IHRyaWdnZXIp CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90cmlnZ2VyX3Rlc3QnKTsKKwor LS0gVmVyaWZ5IHRoZSB0cmlnZ2VyZWQgY29sdW1uIHdhcyBhY3R1YWxseSBtb2RpZmllZAor U0VMRUNUIHRyaWdnZXJlZF9jb2wgRlJPTSBob3RfdHJpZ2dlcl90ZXN0IFdIRVJFIGlkID0g MTsKKworRFJPUCBUQUJMRSBob3RfdHJpZ2dlcl90ZXN0IENBU0NBREU7CitEUk9QIEZVTkNU SU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCk7CisKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIEpTT05CIGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgc3ViLWF0dHJpYnV0ZSB0cmFj a2luZworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdCB0aGF0IHVwZGF0ZXMg dG8gbm9uLWluZGV4ZWQgSlNPTkIgcGF0aHMgY2FuIGJlIEhPVCB1cGRhdGVzCisKK0NSRUFU RSBUQUJMRSBob3RfanNvbmJfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAg IGRhdGEganNvbmIKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKworLS0gQ3JlYXRlIGV4 cHJlc3Npb24gaW5kZXggb24gYSBzcGVjaWZpYyBKU09OIHBhdGgKK0NSRUFURSBJTkRFWCBo b3RfanNvbmJfbmFtZV9pZHggT04gaG90X2pzb25iX3Rlc3QgKChkYXRhLT4+J25hbWUnKSk7 CisKK0lOU0VSVCBJTlRPIGhvdF9qc29uYl90ZXN0IFZBTFVFUworICAgICgxLCAneyJuYW1l IjoiQWxpY2UiLCJhZ2UiOjMwLCJjaXR5IjoiTllDIn0nKSwKKyAgICAoMiwgJ3sibmFtZSI6 IkJvYiIsImFnZSI6MjUsImNpdHkiOiJMQSJ9Jyk7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIEpT T04gcGF0aCAoYWdlKSAtIHNob3VsZCBiZSBIT1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCitV UERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3thZ2V9 JywgJzMxJykgV0hFUkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF9qc29uYl90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBpbmRleGVkIEpTT04gcGF0aCAobmFt ZSkgLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRh ID0ganNvbmJfc2V0KGRhdGEsICd7bmFtZX0nLCAnIkFsaWNlMiInKSBXSEVSRSBpZCA9IDE7 CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKwor LS0gVmVyaWZ5IGluZGV4IHdvcmtzCitTRUxFQ1QgaWQgRlJPTSBob3RfanNvbmJfdGVzdCBX SEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlMic7CisKKy0tIFRlc3QganNvbmJfZGVsZXRl IG9uIG5vbi1pbmRleGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRh dGlvbgorVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0gZGF0YSAtICdjaXR5JyBX SEVSRSBpZCA9IDI7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25i X3Rlc3QnKTsKKworLS0gVGVzdCBqc29uYl9pbnNlcnQgb24gbm9uLWluZGV4ZWQgcGF0aCAt IHNob3VsZCBiZSBIT1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCitVUERBVEUgaG90X2pzb25i X3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9pbnNlcnQoZGF0YSwgJ3tjb3VudHJ5fScsICciVVNB IicpIFdIRVJFIGlkID0gMjsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf anNvbmJfdGVzdCcpOworCitEUk9QIFRBQkxFIGhvdF9qc29uYl90ZXN0OworCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBYTUwgZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBzdWIt YXR0cmlidXRlIHRyYWNraW5nCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0 IHRoYXQgdXBkYXRlcyB0byBub24taW5kZXhlZCBYTUwgcGF0aHMgY2FuIGJlIEhPVCB1cGRh dGVzCisKK0NSRUFURSBUQUJMRSBob3RfeG1sX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZ IEtFWSwKKyAgICBkb2MgeG1sCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CisKKy0tIENy ZWF0ZSBleHByZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lmaWMgWFBhdGgKK0NSRUFURSBJTkRF WCBob3RfeG1sX25hbWVfaWR4IE9OIGhvdF94bWxfdGVzdCAoKHhwYXRoKCcvcGVyc29uL25h bWUvdGV4dCgpJywgZG9jKSkpOworCitJTlNFUlQgSU5UTyBob3RfeG1sX3Rlc3QgVkFMVUVT CisgICAgKDEsICc8cGVyc29uPjxuYW1lPkFsaWNlPC9uYW1lPjxhZ2U+MzA8L2FnZT48L3Bl cnNvbj4nKSwKKyAgICAoMiwgJzxwZXJzb24+PG5hbWU+Qm9iPC9uYW1lPjxhZ2U+MjU8L2Fn ZT48L3BlcnNvbj4nKTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1s X3Rlc3QnKTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIFhQYXRoIChhZ2UpIC0gYmVoYXZp b3IgZGVwZW5kcyBvbiBYTUwgY29tcGFyaXNvbiBmYWxsYmFjaworLS0gRnVsbCBYTUwgdmFs dWUgcmVwbGFjZW1lbnQgbWVhbnMgbm9uLWluZGV4ZWQgcGF0aCB1cGRhdGVzIHN0aWxsIHJl cXVpcmUgaW5kZXggY29tcGFyaXNvbgorVVBEQVRFIGhvdF94bWxfdGVzdCBTRVQgZG9jID0g JzxwZXJzb24+PG5hbWU+QWxpY2U8L25hbWU+PGFnZT4zMTwvYWdlPjwvcGVyc29uPicgV0hF UkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF94bWxfdGVz dCcpOworCistLSBVcGRhdGUgaW5kZXhlZCBYUGF0aCAobmFtZSkgLSBzaG91bGQgTk9UIGJl IEhPVAorVVBEQVRFIGhvdF94bWxfdGVzdCBTRVQgZG9jID0gJzxwZXJzb24+PG5hbWU+QWxp Y2UyPC9uYW1lPjxhZ2U+MzE8L2FnZT48L3BlcnNvbj4nIFdIRVJFIGlkID0gMTsKKworU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3QnKTsKKworLS0gVmVyaWZ5 IGluZGV4IHdvcmtzCitTRUxFQ1QgaWQgRlJPTSBob3RfeG1sX3Rlc3QgV0hFUkUgeHBhdGgo Jy9wZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpID0gQVJSQVlbJ0FsaWNlMic6OnRleHRdOwor CitEUk9QIFRBQkxFIGhvdF94bWxfdGVzdDsKKworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gR0lOIGluZGV4ZXMgYW5kIGFtY29tcGFyZWRhdHVtcyBmb3IgSlNPTkIKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3QgdGhhdCBHSU4gaW5kZXhlcyBjYW4gdXNl IGFtY29tcGFyZWRhdHVtcyB0byBlbmFibGUgSE9UIHdoZW4gZXh0cmFjdGVkIGtleXMgbWF0 Y2gKKworQ1JFQVRFIFRBQkxFIGhvdF9naW5fdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkg S0VZLAorICAgIHRhZ3MgdGV4dFtdLAorICAgIHByb3BlcnRpZXMganNvbmIKKykgV0lUSCAo ZmlsbGZhY3RvciA9IDUwKTsKKworLS0gR0lOIGluZGV4IG9uIHRleHQgYXJyYXkKK0NSRUFU RSBJTkRFWCBob3RfZ2luX3RhZ3NfaWR4IE9OIGhvdF9naW5fdGVzdCBVU0lORyBnaW4gKHRh Z3MpOworCistLSBHSU4gaW5kZXggb24gSlNPTkIgKGpzb25iX29wcyAtIGtleXMgYW5kIHZh bHVlcykKK0NSRUFURSBJTkRFWCBob3RfZ2luX3Byb3BzX2lkeCBPTiBob3RfZ2luX3Rlc3Qg VVNJTkcgZ2luIChwcm9wZXJ0aWVzKTsKKworSU5TRVJUIElOVE8gaG90X2dpbl90ZXN0IFZB TFVFUworICAgICgxLCBBUlJBWVsndGFnMScsICd0YWcyJ10sICd7ImtleTEiOiJ2YWwxIiwi a2V5MiI6InZhbDIifScpLAorICAgICgyLCBBUlJBWVsndGFnMycsICd0YWc0J10sICd7Imtl eTMiOiJ2YWwzIiwia2V5NCI6InZhbDQifScpOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF9naW5fdGVzdCcpOworCistLSBVcGRhdGUgdGhhdCBjaGFuZ2VzIHRhZyBv cmRlciBidXQgbm90IGNvbnRlbnQgLSBhZnRlciBhbWNvbXBhcmVkYXR1bXMgc2hvdWxkIGJl IEhPVAorLS0gKEdJTiBleHRyYWN0cyBzYW1lIGtleXMsIGp1c3QgZGlmZmVyZW50IG9yZGVy KQorVVBEQVRFIGhvdF9naW5fdGVzdCBTRVQgdGFncyA9IEFSUkFZWyd0YWcyJywgJ3RhZzEn XSBXSEVSRSBpZCA9IDE7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dp bl90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBKU09OQiB2YWx1ZSAobm90IGtleSkgLSBhZnRlciBh bWNvbXBhcmVkYXR1bXMgbWF5IGJlIEhPVCBvciBub24tSE9UCistLSBkZXBlbmRpbmcgb24g R0lOIG9wZXJhdG9yIGNsYXNzIChqc29uYl9vcHMgaW5kZXhlcyBib3RoIGtleXMgYW5kIHZh bHVlcykKK1VQREFURSBob3RfZ2luX3Rlc3QgU0VUIHByb3BlcnRpZXMgPSAneyJrZXkxIjoi dmFsMV9uZXciLCJrZXkyIjoidmFsMiJ9JyBXSEVSRSBpZCA9IDE7CisKK1NFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7CisKKy0tIEFkZCBuZXcgdGFnIC0g c2hvdWxkIE5PVCBiZSBIT1QgKGRpZmZlcmVudCBleHRyYWN0ZWQga2V5cykKK1VQREFURSBo b3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJBWVsndGFnMicsICd0YWcxJywgJ3RhZzUnXSBX SEVSRSBpZCA9IDE7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90 ZXN0Jyk7CisKKy0tIFZlcmlmeSBHSU4gaW5kZXhlcyB3b3JrCitTRUxFQ1QgaWQgRlJPTSBo b3RfZ2luX3Rlc3QgV0hFUkUgdGFncyBAPiBBUlJBWVsndGFnNSddOworU0VMRUNUIGlkIEZS T00gaG90X2dpbl90ZXN0IFdIRVJFIHByb3BlcnRpZXMgQD4gJ3sia2V5MSI6InZhbDFfbmV3 In0nOworCitEUk9QIFRBQkxFIGhvdF9naW5fdGVzdDsKKworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gQ2xlYW51cAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRFJPUCBU QUJMRSBJRiBFWElTVFMgaG90X3Rlc3Q7CitEUk9QIFRBQkxFIElGIEVYSVNUUyBob3RfdGVz dF9wYXJ0aXRpb25lZCBDQVNDQURFOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgaGFzX2hv dF9jaGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgcHJpbnRfaG90 X2NoYWluKHRleHQsIHRpZCk7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBnZXRfaG90X2Nv dW50KHRleHQpOworRFJPUCBFWFRFTlNJT04gcGFnZWluc3BlY3Q7Ci0tIAoyLjUwLjEKCg== --ffc971266f692fe98c1088dac35356ed85e7d5db Content-Disposition: attachment; filename*0="v63-0002-Identify-modified-indexed-attributes-in-the-exec.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v63-0002-Identify-modified-indexed-attributes-in-the-exec.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAzNWZhNzYzNjdjMWZlNWEzZDQyMTgyMGZhYTk2Yjk2MjQxMGM5YTRjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwODoxNzozMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjYzIDAy LzEwXSBJZGVudGlmeSBtb2RpZmllZCBpbmRleGVkIGF0dHJpYnV0ZXMgaW4gdGhlCiBleGVj dXRvciBvbiBVUERBVEUKClJlZmFjdG9yIGV4ZWN1dG9yIHVwZGF0ZSBsb2dpYyB0byBkZXRl cm1pbmUgd2hpY2ggaW5kZXhlZCBjb2x1bW5zIGhhdmUKYWN0dWFsbHkgY2hhbmdlZCBkdXJp bmcgYW4gVVBEQVRFIG9wZXJhdGlvbiByYXRoZXIgdGhhbiBsZWF2aW5nIHRoaXMgdXAKdG8g SGVhcERldGVybWluZUNvbHVtbnNJbmZvKCkgaW4gaGVhcF91cGRhdGUoKS4gRmluZGluZyB0 aGlzIHNldCBvZgphdHRyaWJ1dGVzIGlzIG5vdCBoZWFwLXNwZWNpZmljLCBidXQgbW9yZSBn ZW5lcmFsIHRvIGFsbCB0YWJsZSBBTXMgYW5kCmhhdmluZyB0aGlzIGluZm9ybWF0aW9uIGlu IHRoZSBleGVjdXRvciBjb3VsZCBpbmZvcm0gb3RoZXIgZGVjaXNpb25zCmFib3V0IHdoZW4g aW5kZXggaW5zZXJ0cyBhcmUgcmVxdWlyZWQgYW5kIHdoZW4gdGhleSBhcmUgbm90IHJlZ2Fy ZGxlc3MKb2YgdGhlIHRhYmxlIEFNJ3MgTVZDQyBpbXBsZW1lbnRhdGlvbiBzdHJhdGVneS4K ClRoZSBoZWFwLW9ubHkgdHVwbGUgZGVjaXNpb24gKEhPVCkgaW4gaGVhcCBmdW5jdGlvbnMg YXMgaXQgYWx3YXlzIGhhczsKd2hhdCBtb3ZlcyB0byB0aGUgZXhlY3V0b3IgaXMgb25seSB0 aGUgZGV0ZXJtaW5hdGlvbiBvZiB0aGUgIm1vZGlmaWVkCmluZGV4ZWQgYXR0cmlidXRlcyIg KG1vZGlmaWVkX2lkeF9hdHRycykuCgpFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycygpIHJl cGxhY2VzIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpIGFuZCBpcwpjYWxsZWQgYmVmb3Jl IHRhYmxlX3R1cGxlX3VwZGF0ZSgpIGNydWNpYWxseSB3aXRob3V0IHRoZSBuZWVkIGZvciBh bgpleGNsdXNpdmUgYnVmZmVyIGxvY2sgb24gdGhlIHBhZ2UgdGhhdCBob2xkcyB0aGUgdHVw bGUgYmVpbmcgdXBkYXRlZC4KVGhpcyByZWR1Y2VzIHRoZSB0aW1lIHRoZSBidWZmZXIgbG9j ayBpcyBoZWxkIGxhdGVyIHdpdGhpbgpoZWFwYW1fdHVwbGVfdXBkYXRlKCkgYW5kIGhlYXBf dXBkYXRlKCkuCgpCZXNpZGVzIGlkZW50aWZ5aW5nIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5k ZXhlZCBhdHRyaWJ1dGVzCkhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpIHdhcyBhbHNvIHBh cnRpYWxseSByZXNwb25zaWJsZSBmb3IgdGhlCmRlY2lzaW9uIGFib3V0IHdoYXQgdG8gV0FM IGxvZyBmb3IgdGhlIHJlcGxpY2EgaWRlbnRpdHkga2V5LiBUaGF0IGxvZ2ljCm1vdmVzIGlu dG8gaGVhcF91cGRhdGUoKSBhbmQgaW50byB0aGUgcmVwbGFjZW1lbnQgaGVscGVyCkhlYXBV cGRhdGVNb2RpZmllZElkeEF0dHJzKCksIHNvIHNpbXBsZV9oZWFwX3VwZGF0ZSgpIGFuZApo ZWFwYW1fdHVwbGVfdXBkYXRlKCkgc2hhcmUgdGhlIHNhbWUgbG9naWMgc2luY2UgYm90aCBj YWxsIGludG8KaGVhcF91cGRhdGUoKS4KClVwZGF0ZXMgc3RlbW1pbmcgZnJvbSBsb2dpY2Fs IHJlcGxpY2F0aW9uIGFsc28gdXNlIHRoZSBuZXcKRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0 cnMoKSBpbiBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoKS4KCkV4ZWNVcGRhdGVNb2RpZmll ZElkeEF0dHJzKCkgdXNlcyBFeGVjQ29tcGFyZVNsb3RBdHRycygpIHRvIGlkZW50aWZ5Cndo aWNoIGF0dHJpYnV0ZXMgaGF2ZSBjaGFuZ2VkIGFuZCB0aGVuIGludGVyc2VjdHMgdGhhdCB3 aXRoIHRoZSBzZXQgb2YKaW5kZXhlZCBhdHRyaWJ1dGVzIHRvIGlkZW50aWZ5IHRoZSBtb2Rp ZmllZCBpbmRleGVkIHNldCwgdGhlCm1vZGlmaWVkX2lkeF9hdHRycy4KClRoaXMgcGF0Y2gg aW50cm9kdWNlcyBhIGZldyBoZWxwZXIgZnVuY3Rpb25zIHRvIHJlZHVjZSBjb2RlIGR1cGxp Y2F0aW9uCmFuZCBpbmNyZWFzZSByZWFkYWJpbGl0eTogSGVhcFVwZGF0ZUhvdEFsbG93YWJs ZSgpIGFuZApIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUoKSwgdXNlZCBpbiBib3RoIGhl YXBfdXBkYXRlKCkgYW5kCnNpbXBsZV9oZWFwX3VwZGF0ZSgpLgoKaGVhcF91cGRhdGUoKSBp cyBub3cgY2FsbGVkIHdpdGggbG9ja21vZGUgcHJlLWRldGVybWluZWQgYW5kIGEgYm9vbGVh bgppbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHVwZGF0ZSBtYXkgYmUgSE9ULCBib3RoIGNvbnN0 LiBJZiBkdXJpbmcKaGVhcF91cGRhdGUoKSB0aGUgbmV3IHR1cGxlIGZpdHMgb24gdGhlIHNh bWUgcGFnZSBhbmQgdGhhdCBib29sZWFuIGlzCnRydWUsIHRoZSB1cGRhdGUgaXMgSE9ULiBT byBhbHRob3VnaCB0aGUgZnVuY3Rpb25zIGFuZCB0aW1pbmcgb2YgdGhlCkhPVCBkZWNpc2lv biBjb2RlIGhhdmUgY2hhbmdlZCwgbm9uZSBvZiB0aGUgbG9naWMgZ292ZXJuaW5nIHdoZW4g SE9UIGlzCmFsbG93ZWQgaGFzIGNoYW5nZWQuCgpEZXZlbG9wbWVudCBvZiB0aGlzIGZlYXR1 cmUgZXhwb3NlZCBub25kZXRlcm1pbmlzdGljIGJlaGF2aW9yIGluIHRocmVlCmV4aXN0aW5n IHRlc3RzLCB3aGljaCBoYXZlIGJlZW4gYWRqdXN0ZWQgdG8gYXZvaWQgaW5jb25zaXN0ZW50 IHJlc3VsdHMKZHVlIHRvIHR1cGxlIG9yZGVyaW5nIGR1cmluZyBoZWFwIHBhZ2Ugc2NhbnMu CgpBdXRob3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+CkRpc2N1c3Npb246IGh0 dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9yZy9wYXRjaC81NTU2LwpEaXNjdXNzaW9u OiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvNzg1NzRCMjQt QkUwQS00MkM1LTgwNzUtM0ZBOUZBNjNCOEZDJTQwYW1hem9uLmNvbQotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8IDQ3NSArKysrKysrKysr KystLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAg ICB8ICAzNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAgICAgICAg ICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2suYyAgICAgICAgICAg ICAgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5j ICAgICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jICAg ICAgICAgICAgIHwgMTAzICsrKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jICAgICAgICB8ICA4NiArKystCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxj YWNoZS5jICAgICAgICAgICAgfCAgNDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aCAgICAgICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxl YW0uaCAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjdXRvci5oICAgICAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVs LmggICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS91dGlscy9y ZWxjYWNoZS5oICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9leHBlY3RlZC9zeXNj YWNoZS11cGRhdGUtcHJ1bmVkLm91dCAgICAgICB8ICAxMiArLQogLi4uL3NwZWNzL3N5c2Nh Y2hlLXVwZGF0ZS1wcnVuZWQuc3BlYyAgICAgICAgIHwgICA2ICstCiAuLi4vcmVncmVzcy9l eHBlY3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0ICAgICAgICB8ICAxNiArLQogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC90c2VhcmNoLm91dCAgICAgICAgIHwgICAzICstCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQgfCAgIDQgKy0KIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbCAgICB8ICAgMiArLQogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsICAgICAgICAgICAgIHwgICA0ICstCiBz cmMvdGVzdC9yZWdyZXNzL3NxbC90c2VhcmNoLnNxbCAgICAgICAgICAgICAgfCAgIDMgKy0K IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgICAgICB8ICAgMiAr LQogMjMgZmlsZXMgY2hhbmdlZCwgNjMwIGluc2VydGlvbnMoKyksIDIyNyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDljZGMyMjE2NzViLi4zMDE0 YTc5ZTQzNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTM3LDYgKzM3LDgg QEAKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N1 YnRyYW5zLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNzY2FuLmgiCisjaW5jbHVkZSAiYWNj ZXNzL3N5c2F0dHIuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUg ImFjY2Vzcy92YWxpZC5oIgogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgiCiAj aW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKQEAgLTQ0LDggKzQ2LDExIEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19kYXRhYmFzZV9kLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFj dXVtLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgiCisjaW5jbHVk ZSAiZXhlY3V0b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5o IgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIK KyNpbmNsdWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9j LmgiCkBAIC01Myw2ICs1OCw3IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNs dWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5o IgorI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3BjY2Fj aGUuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCkBAIC03MCwxMSArNzYsOCBA QCBzdGF0aWMgdm9pZCBjaGVja19sb2NrX2lmX2lucGxhY2VfdXBkYXRlYWJsZV9yZWwoUmVs YXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCk7CiBzdGF0 aWMgdm9pZCBjaGVja19pbnBsYWNlX3JlbF9sb2NrKEhlYXBUdXBsZSBvbGR0dXApOwogI2Vu ZGlmCi1zdGF0aWMgQml0bWFwc2V0ICpIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRp b24gcmVsYXRpb24sCi0JCQkJCQkJCQkJICAgQml0bWFwc2V0ICppbnRlcmVzdGluZ19jb2xz LAotCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqZXh0ZXJuYWxfY29scywKLQkJCQkJCQkJCQkg ICBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwLAotCQkJCQkJCQkJCSAgIGJv b2wgKmhhc19leHRlcm5hbCk7CitzdGF0aWMgQml0bWFwc2V0ICpIZWFwVXBkYXRlTW9kaWZp ZWRJZHhBdHRycyhSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkJIEhlYXBUdXBsZSBv bGR0dXAsIEhlYXBUdXBsZSBuZXd0dXApOwogc3RhdGljIGJvb2wgaGVhcF9hY3F1aXJlX3R1 cGxvY2soUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAog CQkJCQkJCQkgTG9ja1R1cGxlTW9kZSBtb2RlLCBMb2NrV2FpdFBvbGljeSB3YWl0X3BvbGlj eSwKIAkJCQkJCQkJIGJvb2wgKmhhdmVfdHVwbGVfbG9jayk7CkBAIC0zMTkwLDcgKzMxOTMs NyBAQCBzaW1wbGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Q b2ludGVyRGF0YSAqdGlkKQogICoJaGVhcF91cGRhdGUgLSByZXBsYWNlIGEgdHVwbGUKICAq CiAgKiBTZWUgdGFibGVfdHVwbGVfdXBkYXRlKCkgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRo ZSBwYXJhbWV0ZXJzLCBleGNlcHQgdGhhdAotICogdGhpcyByb3V0aW5lIGRpcmVjdGx5IHRh a2VzIGEgdHVwbGUgcmF0aGVyIHRoYW4gYSBzbG90LgorICogdGhpcyByb3V0aW5lIGRpcmVj dGx5IHRha2VzIGEgaGVhcCB0dXBsZSByYXRoZXIgdGhhbiBhIHNsb3QuCiAgKgogICogSW4g dGhlIGZhaWx1cmUgY2FzZXMsIHRoZSByb3V0aW5lIGZpbGxzICp0bWZkIHdpdGggdGhlIHR1 cGxlJ3MgdF9jdGlkLAogICogdF94bWF4IChyZXNvbHZpbmcgYSBwb3NzaWJsZSBNdWx0aVhh Y3QsIGlmIG5lY2Vzc2FyeSksIGFuZCB0X2NtYXggKHRoZSBsYXN0CkBAIC0zMjAwLDE3ICsz MjAzLDEzIEBAIHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3Qg SXRlbVBvaW50ZXJEYXRhICp0aWQpCiBUTV9SZXN1bHQKIGhlYXBfdXBkYXRlKFJlbGF0aW9u IHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0 dXAsCiAJCQlDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9ucyBwZ19hdHRyaWJ1dGVfdW51 c2VkKCksIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKLQkJCVRNX0ZhaWx1cmVE YXRhICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCVRVX1VwZGF0ZUluZGV4 ZXMgKnVwZGF0ZV9pbmRleGVzKQorCQkJVE1fRmFpbHVyZURhdGEgKnRtZmQsIGNvbnN0IExv Y2tUdXBsZU1vZGUgbG9ja21vZGUsCisJCQljb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lk eF9hdHRycywgY29uc3QgYm9vbCBob3RfYWxsb3dlZCkKIHsKIAlUTV9SZXN1bHQJcmVzdWx0 OwogCVRyYW5zYWN0aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKLQlC aXRtYXBzZXQgICpob3RfYXR0cnM7Ci0JQml0bWFwc2V0ICAqc3VtX2F0dHJzOwotCUJpdG1h cHNldCAgKmtleV9hdHRyczsKLQlCaXRtYXBzZXQgICppZF9hdHRyczsKLQlCaXRtYXBzZXQg ICppbnRlcmVzdGluZ19hdHRyczsKLQlCaXRtYXBzZXQgICptb2RpZmllZF9hdHRyczsKKwlC aXRtYXBzZXQgICppZHhfYXR0cnMsCisJCQkgICAqaWRfYXR0cnM7CiAJSXRlbUlkCQlscDsK IAlIZWFwVHVwbGVEYXRhIG9sZHR1cDsKIAlIZWFwVHVwbGUJaGVhcHR1cDsKQEAgLTMyMzEs MTMgKzMyMzAsMTIgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0 ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAlib29sCQloYXZlX3R1 cGxlX2xvY2sgPSBmYWxzZTsKIAlib29sCQlpc2NvbWJvOwogCWJvb2wJCXVzZV9ob3RfdXBk YXRlID0gZmFsc2U7Ci0JYm9vbAkJc3VtbWFyaXplZF91cGRhdGUgPSBmYWxzZTsKIAlib29s CQlrZXlfaW50YWN0OwogCWJvb2wJCWFsbF92aXNpYmxlX2NsZWFyZWQgPSBmYWxzZTsKIAli b29sCQlhbGxfdmlzaWJsZV9jbGVhcmVkX25ldyA9IGZhbHNlOwogCWJvb2wJCWNoZWNrZWRf bG9ja2VyczsKIAlib29sCQlsb2NrZXJfcmVtYWluczsKLQlib29sCQlpZF9oYXNfZXh0ZXJu YWwgPSBmYWxzZTsKKwlib29sCQlyZXBfaWRfa2V5X3JlcXVpcmVkID0gZmFsc2U7CiAJVHJh bnNhY3Rpb25JZCB4bWF4X25ld190dXBsZSwKIAkJCQl4bWF4X29sZF90dXBsZTsKIAl1aW50 MTYJCWluZm9tYXNrX29sZF90dXBsZSwKQEAgLTMyNjgsMzMgKzMyNjYsMTggQEAgaGVhcF91 cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwg SGVhcFR1cGxlIG5ld3R1cCwKICNlbmRpZgogCiAJLyoKLQkgKiBGZXRjaCB0aGUgbGlzdCBv ZiBhdHRyaWJ1dGVzIHRvIGJlIGNoZWNrZWQgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucy4KLQkg KgotCSAqIEZvciBIT1QgY29uc2lkZXJhdGlvbnMsIHRoaXMgaXMgd2FzdGVkIGVmZm9ydCBp ZiB3ZSBmYWlsIHRvIHVwZGF0ZSBvcgotCSAqIGhhdmUgdG8gcHV0IHRoZSBuZXcgdHVwbGUg b24gYSBkaWZmZXJlbnQgcGFnZS4gIEJ1dCB3ZSBtdXN0IGNvbXB1dGUgdGhlCi0JICogbGlz dCBiZWZvcmUgb2J0YWluaW5nIGJ1ZmZlciBsb2NrIC0tLSBpbiB0aGUgd29yc3QgY2FzZSwg aWYgd2UgYXJlCi0JICogZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUgcmVsZXZhbnQg c3lzdGVtIGNhdGFsb2dzLCB3ZSBjb3VsZAotCSAqIGRlYWRsb2NrIGlmIHdlIHRyeSB0byBm ZXRjaCB0aGUgbGlzdCBsYXRlci4gIEluIGFueSBjYXNlLCB0aGUgcmVsY2FjaGUKLQkgKiBj YWNoZXMgdGhlIGRhdGEgc28gdGhpcyBpcyB1c3VhbGx5IHByZXR0eSBjaGVhcC4KLQkgKgot CSAqIFdlIGFsc28gbmVlZCBjb2x1bW5zIHVzZWQgYnkgdGhlIHJlcGxpY2EgaWRlbnRpdHkg YW5kIGNvbHVtbnMgdGhhdCBhcmUKLQkgKiBjb25zaWRlcmVkIHRoZSAia2V5IiBvZiByb3dz IGluIHRoZSB0YWJsZS4KKwkgKiBGZXRjaCB0aGUgYXR0cmlidXRlcyB1c2VkIGFjcm9zcyBh bGwgaW5kZXhlcyBvbiB0aGlzIHJlbGF0aW9uIGFzIHdlbGwKKwkgKiBhcyB0aGUgcmVwbGlj YSBpZGVudGl0eSBhbmQgY29sdW1ucy4KIAkgKgotCSAqIE5vdGUgdGhhdCB3ZSBnZXQgY29w aWVzIG9mIGVhY2ggYml0bWFwLCBzbyB3ZSBuZWVkIG5vdCB3b3JyeSBhYm91dAotCSAqIHJl bGNhY2hlIGZsdXNoIGhhcHBlbmluZyBtaWR3YXkgdGhyb3VnaC4KLQkgKi8KLQlob3RfYXR0 cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKLQkJCQkJCQkJCQkg ICBJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcpOwotCXN1bV9hdHRycyA9IFJlbGF0 aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIElOREVYX0FU VFJfQklUTUFQX1NVTU1BUklaRUQpOwotCWtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhB dHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOwotCWlkX2F0dHJz ID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCi0JCQkJCQkJCQkJICBJ TkRFWF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVkpOwotCWludGVyZXN0aW5nX2F0dHJzID0g TlVMTDsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGlu Z19hdHRycywgaG90X2F0dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVt YmVycyhpbnRlcmVzdGluZ19hdHRycywgc3VtX2F0dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRy cyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywga2V5X2F0dHJzKTsKLQlp bnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywg aWRfYXR0cnMpOworCSAqIE5vdGU6IFdlIG11c3QgY29tcHV0ZSB0aGUgbGlzdCBiZWZvcmUg b2J0YWluaW5nIGJ1ZmZlciBsb2NrLiBJbiB0aGUKKwkgKiB3b3JzdCBjYXNlLCBpZiB3ZSBh cmUgZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUgcmVsZXZhbnQgc3lzdGVtCisJICog Y2F0YWxvZ3MsIHdlIGNvdWxkIGRlYWRsb2NrIGlmIHdlIHRyeSB0byBmZXRjaCB0aGUgbGlz dCBsYXRlci4gS2VlcCBpbgorCSAqIG1pbmQgdGhhdCByZWxjYWNoZSByZXR1cm5zIGNvcGll cyBvZiBlYWNoIGJpdG1hcCwgc28gd2UgbmVlZCBub3Qgd29ycnkKKwkgKiBhYm91dCByZWxj YWNoZSBmbHVzaCBoYXBwZW5pbmcgbWlkd2F5IHRocm91Z2gsIGJ1dCB3ZSBkbyBuZWVkIHRv IGZyZWUKKwkgKiB0aGVtLgorCSAqLworCWlkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhB dHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKKwlpZF9h dHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRS X0JJVE1BUF9JREVOVElUWV9LRVkpOwogCiAJYmxvY2sgPSBJdGVtUG9pbnRlckdldEJsb2Nr TnVtYmVyKG90aWQpOwogCUlOSkVDVElPTl9QT0lOVCgiaGVhcF91cGRhdGUtYmVmb3JlLXBp biIsIE5VTEwpOwpAQCAtMzM0OCwyMCArMzMzMSwxNyBAQCBoZWFwX3VwZGF0ZShSZWxhdGlv biByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3 dHVwLAogCQl0bWZkLT5jdGlkID0gKm90aWQ7CiAJCXRtZmQtPnhtYXggPSBJbnZhbGlkVHJh bnNhY3Rpb25JZDsKIAkJdG1mZC0+Y21heCA9IEludmFsaWRDb21tYW5kSWQ7Ci0JCSp1cGRh dGVfaW5kZXhlcyA9IFRVX05vbmU7CiAKLQkJYm1zX2ZyZWUoaG90X2F0dHJzKTsKLQkJYm1z X2ZyZWUoc3VtX2F0dHJzKTsKLQkJYm1zX2ZyZWUoa2V5X2F0dHJzKTsKIAkJYm1zX2ZyZWUo aWRfYXR0cnMpOwotCQkvKiBtb2RpZmllZF9hdHRycyBub3QgeWV0IGluaXRpYWxpemVkICov Ci0JCWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsKKwkJYm1zX2ZyZWUoaWR4X2F0dHJz KTsKKwkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIGlzIG93bmVkIGJ5IHRoZSBjYWxsZXIsIGRv bid0IGZyZWUgaXQgKi8KKwogCQlyZXR1cm4gVE1fRGVsZXRlZDsKIAl9CiAKIAkvKgotCSAq IEZpbGwgaW4gZW5vdWdoIGRhdGEgaW4gb2xkdHVwIGZvciBIZWFwRGV0ZXJtaW5lQ29sdW1u c0luZm8gdG8gd29yawotCSAqIHByb3Blcmx5LgorCSAqIEZpbGwgaW4gZW5vdWdoIGRhdGEg aW4gb2xkdHVwIHRvIGRldGVybWluZSByZXBsaWNhIGlkZW50aXR5IGF0dHJpYnV0ZQorCSAq IHJlcXVpcmVtZW50cy4KIAkgKi8KIAlvbGR0dXAudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0 UmVsaWQocmVsYXRpb24pOwogCW9sZHR1cC50X2RhdGEgPSAoSGVhcFR1cGxlSGVhZGVyKSBQ YWdlR2V0SXRlbShwYWdlLCBscCk7CkBAIC0zMzcyLDE2ICszMzUyLDU5IEBAIGhlYXBfdXBk YXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhl YXBUdXBsZSBuZXd0dXAsCiAJbmV3dHVwLT50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxp ZChyZWxhdGlvbik7CiAKIAkvKgotCSAqIERldGVybWluZSBjb2x1bW5zIG1vZGlmaWVkIGJ5 IHRoZSB1cGRhdGUuICBBZGRpdGlvbmFsbHksIGlkZW50aWZ5Ci0JICogd2hldGhlciBhbnkg b2YgdGhlIHVubW9kaWZpZWQgcmVwbGljYSBpZGVudGl0eSBrZXkgYXR0cmlidXRlcyBpbiB0 aGUKLQkgKiBvbGQgdHVwbGUgaXMgZXh0ZXJuYWxseSBzdG9yZWQgb3Igbm90LiAgVGhpcyBp cyByZXF1aXJlZCBiZWNhdXNlIGZvcgotCSAqIHN1Y2ggYXR0cmlidXRlcyB0aGUgZmxhdHRl bmVkIHZhbHVlIHdvbid0IGJlIFdBTCBsb2dnZWQgYXMgcGFydCBvZiB0aGUKLQkgKiBuZXcg dHVwbGUgc28gd2UgbXVzdCBpbmNsdWRlIGl0IGFzIHBhcnQgb2YgdGhlIG9sZF9rZXlfdHVw bGUuICBTZWUKLQkgKiBFeHRyYWN0UmVwbGljYUlkZW50aXR5LgorCSAqIEV4dHJhY3RSZXBs aWNhSWRlbnRpdHkoKSBuZWVkcyB0byBrbm93IGlmIGEgbW9kaWZpZWQgaW5kZXhlZCBhdHRy aWJ1dGUKKwkgKiBpcyB1c2VkIGFzIGEgcmVwbGljYSBpZGVudGl0eSBvciBpZiBhbnkgb2Yg dGhlIHJlcGxpY2EgaWRlbnRpdHkKKwkgKiBhdHRyaWJ1dGVzIGFyZSByZWZlcmVuY2VkIGlu IGFuIGluZGV4LCB1bm1vZGlmaWVkLCBhbmQgYXJlIHN0b3JlZAorCSAqIGV4dGVybmFsbHkg aW4gdGhlIG9sZCB0dXBsZSBiZWluZyByZXBsYWNlZC4gIEluIHRob3NlIGNhc2VzIGl0IG1h eSBiZQorCSAqIG5lY2Vzc2FyeSB0byBXQUwgbG9nIHRoZW0gc28gdGhleSBhcmUgYXZhaWxh 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 CkBAIC00MzAzLDcgKzQyOTAsMTYgQEAgY2hlY2tfaW5wbGFjZV9yZWxfbG9jayhIZWFwVHVw bGUgb2xkdHVwKQogCiAvKgogICogQ2hlY2sgaWYgdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGUn cyB2YWx1ZXMgYXJlIHRoZSBzYW1lLiAgU3Vicm91dGluZSBmb3IKLSAqIEhlYXBEZXRlcm1p bmVDb2x1bW5zSW5mby4KKyAqIEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzLgorICoKKyAq IE5vdCBwdWJsaWMgQVBJLiAgVGhpcyBleGlzdHMgb25seSB0byBzZXJ2ZSBIZWFwVXBkYXRl TW9kaWZpZWRJZHhBdHRycyAoYW5kCisgKiB0aHVzIHNpbXBsZV9oZWFwX3VwZGF0ZSk7IG5v dGhpbmcgZWxzZSAtLSBjb3JlIG9yIG91dC1vZi10cmVlIC0tIHNob3VsZCBjYWxsCisgKiBp dC4gIEl0IGlzIHRhcmdldGVkIGZvciBldmVudHVhbCByZW1vdmFsLCBvbmNlIGNhdGFsb2ct dHVwbGUgdXBkYXRlcyB0cmFjaworICogdGhlaXIgb3duIGNoYW5nZWQgY29sdW1ucyBhbmQg c2ltcGxlX2hlYXBfdXBkYXRlIG5vIGxvbmdlciBoYXMgdG8KKyAqIHJlLWRpc2NvdmVyIHRo ZW0uICBOZXcgY2FsbGVycyB0aGF0IG5lZWQgImRpZCBhbiBpbmRleGVkIGF0dHJpYnV0ZSBj aGFuZ2U/IgorICogb24gdGhlIGV4ZWN1dG9yIHBhdGggdXNlIEV4ZWNDb21wYXJlU2xvdEF0 dHJzICh3aGljaCBpbnRlbnRpb25hbGx5IHVzZXMgYQorICogZGlmZmVyZW50LCBzdG9yYWdl LWFnbm9zdGljIGNvbXBhcmF0b3I7IHNlZSBpdHMgY29tbWVudCBhbmQKKyAqIFJFQURNRS5I T1QtSU5ERVhFRCBzZWN0aW9uIDYpLgogICovCiBzdGF0aWMgYm9vbAogaGVhcF9hdHRyX2Vx dWFscyhUdXBsZURlc2MgdHVwZGVzYywgaW50IGF0dHJudW0sIERhdHVtIHZhbHVlMSwgRGF0 dW0gdmFsdWUyLApAQCAtNDM0NywyOCArNDM0MywxMjggQEAgaGVhcF9hdHRyX2VxdWFscyhU dXBsZURlc2MgdHVwZGVzYywgaW50IGF0dHJudW0sIERhdHVtIHZhbHVlMSwgRGF0dW0gdmFs dWUyLAogfQogCiAvKgotICogQ2hlY2sgd2hpY2ggY29sdW1ucyBhcmUgYmVpbmcgdXBkYXRl ZC4KLSAqCi0gKiBHaXZlbiBhbiB1cGRhdGVkIHR1cGxlLCBkZXRlcm1pbmUgKGFuZCByZXR1 cm4gaW50byB0aGUgb3V0cHV0IGJpdG1hcHNldCksCi0gKiBmcm9tIHRob3NlIGxpc3RlZCBh cyBpbnRlcmVzdGluZywgdGhlIHNldCBvZiBjb2x1bW5zIHRoYXQgY2hhbmdlZC4KLSAqCi0g KiBoYXNfZXh0ZXJuYWwgaW5kaWNhdGVzIGlmIGFueSBvZiB0aGUgdW5tb2RpZmllZCBhdHRy aWJ1dGVzIChmcm9tIHRob3NlCi0gKiBsaXN0ZWQgYXMgaW50ZXJlc3RpbmcpIG9mIHRoZSBv bGQgdHVwbGUgaXMgYSBtZW1iZXIgb2YgZXh0ZXJuYWxfY29scyBhbmQgaXMKLSAqIHN0b3Jl ZCBleHRlcm5hbGx5LgorICogSE9UIHVwZGF0ZXMgYXJlIHBvc3NpYmxlIHdoZW4gZWl0aGVy OiBhKSB0aGVyZSBhcmUgbm8gbW9kaWZpZWQgaW5kZXhlZAorICogYXR0cmlidXRlcywgb3Ig YikgdGhlIG1vZGlmaWVkIGF0dHJpYnV0ZXMgYXJlIGFsbCBvbiBzdW1tYXJpemluZyBpbmRl eGVzLgorICogTGF0ZXIsIGluIGhlYXBfdXBkYXRlKCksIHdlIGNhbiBjaG9vc2UgdG8gcGVy Zm9ybSBhIEhPVCB1cGRhdGUgaWYgdGhlcmUgaXMKKyAqIHNwYWNlIG9uIHRoZSBwYWdlIGZv ciB0aGUgbmV3IHR1cGxlIGFuZCB0aGUgZm9sbG93aW5nIGNvZGUgaGFzIGRldGVybWluZWQK KyAqIHRoYXQgSE9UIGlzIGFsbG93ZWQuCisgKi8KK2Jvb2wKK0hlYXBVcGRhdGVIb3RBbGxv d2FibGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4 X2F0dHJzLAorCQkJCQkgICBib29sICpzdW1tYXJpemVkX29ubHkpCit7CisJYm9vbAkJaG90 X2FsbG93ZWQ7CisKKwkvKgorCSAqIExldCdzIGJlIG9wdGltaXN0aWMgYW5kIHN0YXJ0IG9m ZiBieSBhc3N1bWluZyB0aGUgYmVzdCBjYXNlLCBubyBpbmRleGVzCisJICogbmVlZCB1cGRh dGluZyBhbmQgSE9UIGlzIGFsbG93YWJsZS4KKwkgKi8KKwlob3RfYWxsb3dlZCA9IHRydWU7 CisJKnN1bW1hcml6ZWRfb25seSA9IGZhbHNlOworCisJLyoKKwkgKiBDaGVjayBmb3IgY2Fz ZSAoYSk7IHdoZW4gdGhlcmUgYXJlIG5vIG1vZGlmaWVkIGluZGV4IGF0dHJpYnV0ZXMgSE9U IGlzCisJICogYWxsb3dlZC4KKwkgKi8KKwlpZiAoYm1zX2lzX2VtcHR5KG1vZGlmaWVkX2lk eF9hdHRycykpCisJCWhvdF9hbGxvd2VkID0gdHJ1ZTsKKwllbHNlCisJeworCQlCaXRtYXBz ZXQgICpzdW1fYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwK KwkJCQkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCk7CisKKwkJ LyoKKwkJICogQXQgbGVhc3Qgb25lIGluZGV4IGF0dHJpYnV0ZSB3YXMgbW9kaWZpZWQsIGJ1 dCBpcyB0aGlzIGNhc2UgKGIpCisJCSAqIHdoZXJlIGFsbCB0aGUgbW9kaWZpZWQgaW5kZXgg YXR0cmlidXRlcyBhcmUgb25seSB1c2VkIGJ5CisJCSAqIHN1bW1hcml6aW5nIGluZGV4ZXM/ ICBJZiBpdCBpcywgdGhlbiB3ZSBuZWVkIHRvIHVwZGF0ZSB0aG9zZQorCQkgKiBpbmRleGVz LCBidXQgdGhpcyB1cGRhdGUgY2FuIHN0aWxsIGJlIGNvbnNpZGVyZWQgaGVhcC1vbmx5IChI T1QpCisJCSAqIGFuZCBhdm9pZCB1cGRhdGluZyBhbnkgbm9uLXN1bW1hcml6aW5nIGluZGV4 ZXMgb24gdGhlIHJlbGF0aW9uLgorCQkgKi8KKwkJaWYgKGJtc19pc19zdWJzZXQobW9kaWZp ZWRfaWR4X2F0dHJzLCBzdW1fYXR0cnMpKQorCQl7CisJCQlob3RfYWxsb3dlZCA9IHRydWU7 CisJCQkqc3VtbWFyaXplZF9vbmx5ID0gdHJ1ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8q CisJCQkgKiBOb3cgd2Uga25vdyBhKSBvbmUgb3IgbW9yZSBpbmRleGVkIGF0dHJpYnV0ZXMg d2VyZSBtb2RpZmllZAorCQkJICogKGNoYW5nZWQgdmFsdWUsIG5vdCBqdXN0IHJlZmVyZW5j ZWQgd2l0aGluIHRoZSBVUERBVEUpIGFuZCB0aGF0CisJCQkgKiBiKSBhdCBsZWFzdCBvbmUg b2YgdGhvc2UgYXR0cmlidXRlcyBpcyB1c2VkIGJ5IGEKKwkJCSAqIG5vbi1zdW1tYXJpemlu ZyBpbmRleC4gSE9UIGlzIG5vdCBhbGxvd2VkLgorCQkJICovCisJCQlob3RfYWxsb3dlZCA9 IGZhbHNlOworCQl9CisKKwkJYm1zX2ZyZWUoc3VtX2F0dHJzKTsKKwl9CisKKwlyZXR1cm4g aG90X2FsbG93ZWQ7Cit9CisKKy8qCisgKiBJZiB3ZSdyZSBub3QgdXBkYXRpbmcgYW55IGF0 dHJpYnV0ZXMgdXNlZCB3aGVuIGZvcm1pbmcgdGhlIGluZGV4IGtleXMgd2UgY2FuCisgKiBn cmFiIGEgd2Vha2VyIGxvY2sgdHlwZS4gVGhpcyBhbGxvd3MgZm9yIG1vcmUgY29uY3VycmVu Y3kgd2hlbiB3ZSBhcmUKKyAqIHJ1bm5pbmcgc2ltdWx0YW5lb3VzbHkgd2l0aCBmb3JlaWdu IGtleSBjaGVja3MuCisgKi8KK0xvY2tUdXBsZU1vZGUKK0hlYXBVcGRhdGVEZXRlcm1pbmVM b2NrbW9kZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9p ZHhfYXR0cnMpCit7CisJTG9ja1R1cGxlTW9kZSBsb2NrbW9kZSA9IExvY2tUdXBsZUV4Y2x1 c2l2ZTsKKworCUJpdG1hcHNldCAgKmtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKHJlbGF0aW9uLAorCQkJCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX0tF WSk7CisKKwlpZiAoIWJtc19vdmVybGFwKG1vZGlmaWVkX2lkeF9hdHRycywga2V5X2F0dHJz KSkKKwkJbG9ja21vZGUgPSBMb2NrVHVwbGVOb0tleUV4Y2x1c2l2ZTsKKworCWJtc19mcmVl KGtleV9hdHRycyk7CisKKwlyZXR1cm4gbG9ja21vZGU7Cit9CisKKy8qCisgKiBSZXR1cm4g YSBCaXRtYXBzZXQgdGhhdCBjb250YWlucyB0aGUgc2V0IG9mIG1vZGlmaWVkIChjaGFuZ2Vk KSBpbmRleGVkCisgKiBhdHRyaWJ1dGVzIGJldHdlZW4gb2xkdHVwIGFuZCBuZXd0dXAuCisg KgorICogVGhpcyBpcyB0aGUgbm9uLWV4ZWN1dG9yIGNvdW50ZXJwYXJ0IG9mIEV4ZWNVcGRh dGVNb2RpZmllZElkeEF0dHJzIC8KKyAqIEV4ZWNDb21wYXJlU2xvdEF0dHJzLCBhbmQgdGhl IHR3byBhcmUgbWVhbnQgdG8gYmUgKmZ1bmN0aW9uYWxseSogZXF1aXZhbGVudAorICogKGJv dGggYW5zd2VyICJ3aGljaCBpbmRleGVkIGF0dHJpYnV0ZXMgY2hhbmdlZCB2YWx1ZT8iKS4g IFRoZXkgaW50ZW50aW9uYWxseQorICogZGlmZmVyIGluIHRoZSBEYXR1bSBjb21wYXJhdG9y IHRoZXkgdXNlOiB0aGlzIGhlYXAtc2lkZSBwYXRoIHVzZXMKKyAqIGhlYXBfYXR0cl9lcXVh bHMgKGRhdHVtSXNFcXVhbCksIHRoZSBleGVjdXRvciBwYXRoIHVzZXMgZGF0dW1faW1hZ2Vf ZXEgLS0KKyAqIHNlZSBFeGVjQ29tcGFyZVNsb3RBdHRycyBhbmQgUkVBRE1FLkhPVC1JTkRF WEVEIHNlY3Rpb24gNiBmb3Igd2h5LgorICoKKyAqIE5vdCBwdWJsaWMgQVBJLiAgSXRzIG9u bHkgY2FsbGVyIGlzIHNpbXBsZV9oZWFwX3VwZGF0ZSgpIChjYXRhbG9nIGFuZCBvdGhlcgor ICogbm9uLWV4ZWN1dG9yIHVwZGF0ZXMgdGhhdCBsYWNrIGEgUmVzdWx0UmVsSW5mby9FU3Rh dGUgdG8gc3VwcGx5IHRoZSBjaGFuZ2VkCisgKiBjb2x1bW5zKSwgYW5kIGl0IGlzIHRhcmdl dGVkIGZvciBldmVudHVhbCByZW1vdmFsIG9uY2UgY2F0YWxvZy10dXBsZSB1cGRhdGVzCisg KiB0cmFjayB0aGVpciBvd24gY2hhbmdlcy4gIE5vdGhpbmcgZWxzZSAtLSBjb3JlIG9yIG91 dC1vZi10cmVlIC0tIHNob3VsZAorICogZGVwZW5kIG9uIGl0OyBleGVjdXRvciBjYWxsZXJz IHVzZSBFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycy4KICAqLwogc3RhdGljIEJpdG1hcHNl dCAqCi1IZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRpb24sCi0JCQkJ CQkgQml0bWFwc2V0ICppbnRlcmVzdGluZ19jb2xzLAotCQkJCQkJIEJpdG1hcHNldCAqZXh0 ZXJuYWxfY29scywKLQkJCQkJCSBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVw LAotCQkJCQkJIGJvb2wgKmhhc19leHRlcm5hbCkKK0hlYXBVcGRhdGVNb2RpZmllZElkeEF0 dHJzKFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3 dHVwKQogewogCWludAkJCWF0dGlkeDsKLQlCaXRtYXBzZXQgICptb2RpZmllZCA9IE5VTEw7 CisJQml0bWFwc2V0ICAqYXR0cnMsCisJCQkgICAqbW9kaWZpZWRfaWR4X2F0dHJzID0gTlVM TDsKIAlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pOwog CisJLyogR2V0IHRoZSBzZXQgb2YgYWxsIGF0dHJpYnV0ZXMgYWNyb3NzIGFsbCBpbmRleGVz IGZvciB0aGlzIHJlbGF0aW9uICovCisJYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJp dG1hcChyZWxhdGlvbiwgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCk7CisKKwkvKiBObyBp bmRleGVkIGF0dHJpYnV0ZXMsIHdlJ3JlIGRvbmUgKi8KKwlpZiAoYm1zX2lzX2VtcHR5KGF0 dHJzKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIFRoaXMgaGVhcCB1cGRhdGUgZnVu Y3Rpb24gaXMgdXNlZCBvdXRzaWRlIHRoZSBleGVjdXRvciBhbmQgc28gdW5saWtlCisJICog aGVhcGFtX3R1cGxlX3VwZGF0ZSgpIHdoZXJlIHRoZXJlIGlzIFJlc3VsdFJlbEluZm8gYW5k IEVTdGF0ZSB0bworCSAqIHByb3ZpZGUgdGhlIGNvbmNpc2Ugc2V0IG9mIGF0dHJpYnV0ZXMg dGhhdCBtaWdodCBoYXZlIGJlZW4gbW9kaWZpZWQKKwkgKiAodmlhIEV4ZWNHZXRBbGxVcGRh dGVkQ29scygpKSB3ZSBzaW1wbHkgY2hlY2sgYWxsIGluZGV4ZWQgYXR0cmlidXRlcyB0bwor CSAqIGZpbmQgdGhlIHN1YnNldCB0aGF0IGNoYW5nZWQgdmFsdWUuICBUaGF0J3MgdGhlICJt b2RpZmllZCBpbmRleGVkCisJICogYXR0cmlidXRlcyIgb3IgIm1vZGlmaWVkX2lkeF9hdHRy cyIuCisJICovCiAJYXR0aWR4ID0gLTE7Ci0Jd2hpbGUgKChhdHRpZHggPSBibXNfbmV4dF9t ZW1iZXIoaW50ZXJlc3RpbmdfY29scywgYXR0aWR4KSkgPj0gMCkKKwl3aGlsZSAoKGF0dGlk eCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0aWR4KSkgPj0gMCkKIAl7CiAJCS8qIGF0 dGlkeCBpcyB6ZXJvLWJhc2VkLCBhdHRybnVtIGlzIHRoZSBub3JtYWwgYXR0cmlidXRlIG51 bWJlciAqLwogCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJzdExvd0ludmFs aWRIZWFwQXR0cmlidXRlTnVtYmVyOwpAQCAtNDM4NCw3ICs0NDgwLDcgQEAgSGVhcERldGVy bWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkgKi8KIAkJaWYgKGF0dHJu dW0gPT0gMCkKIAkJewotCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZCwg YXR0aWR4KTsKKwkJCW1vZGlmaWVkX2lkeF9hdHRycyA9IGJtc19hZGRfbWVtYmVyKG1vZGlm aWVkX2lkeF9hdHRycywgYXR0aWR4KTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAgLTQzOTcs NyArNDQ5Myw3IEBAIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhSZWxhdGlvbiByZWxhdGlv biwKIAkJewogCQkJaWYgKGF0dHJudW0gIT0gVGFibGVPaWRBdHRyaWJ1dGVOdW1iZXIpCiAJ CQl7Ci0JCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZCwgYXR0aWR4KTsK KwkJCQltb2RpZmllZF9pZHhfYXR0cnMgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZF9pZHhf YXR0cnMsIGF0dGlkeCk7CiAJCQkJY29udGludWU7CiAJCQl9CiAJCX0KQEAgLTQ0MTMsMjkg KzQ1MDksMTIgQEAgSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9u LAogCiAJCWlmICghaGVhcF9hdHRyX2VxdWFscyh0dXBkZXNjLCBhdHRybnVtLCB2YWx1ZTEs CiAJCQkJCQkJICB2YWx1ZTIsIGlzbnVsbDEsIGlzbnVsbDIpKQotCQl7Ci0JCQltb2RpZmll ZCA9IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkLCBhdHRpZHgpOwotCQkJY29udGludWU7Ci0J CX0KLQotCQkvKgotCQkgKiBObyBuZWVkIHRvIGNoZWNrIGF0dHJpYnV0ZXMgdGhhdCBjYW4n dCBiZSBzdG9yZWQgZXh0ZXJuYWxseS4gTm90ZQotCQkgKiB0aGF0IHN5c3RlbSBhdHRyaWJ1 dGVzIGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5LgotCQkgKi8KLQkJaWYgKGF0dHJudW0g PCAwIHx8IGlzbnVsbDEgfHwKLQkJCVR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGRlc2MsIGF0 dHJudW0gLSAxKS0+YXR0bGVuICE9IC0xKQotCQkJY29udGludWU7Ci0KLQkJLyoKLQkJICog Q2hlY2sgaWYgdGhlIG9sZCB0dXBsZSdzIGF0dHJpYnV0ZSBpcyBzdG9yZWQgZXh0ZXJuYWxs eSBhbmQgaXMgYQotCQkgKiBtZW1iZXIgb2YgZXh0ZXJuYWxfY29scy4KLQkJICovCi0JCWlm IChWQVJBVFRfSVNfRVhURVJOQUwoKHZhcmxlbmEgKikgRGF0dW1HZXRQb2ludGVyKHZhbHVl MSkpICYmCi0JCQlibXNfaXNfbWVtYmVyKGF0dGlkeCwgZXh0ZXJuYWxfY29scykpCi0JCQkq aGFzX2V4dGVybmFsID0gdHJ1ZTsKKwkJCW1vZGlmaWVkX2lkeF9hdHRycyA9IGJtc19hZGRf bWVtYmVyKG1vZGlmaWVkX2lkeF9hdHRycywgYXR0aWR4KTsKIAl9CiAKLQlyZXR1cm4gbW9k aWZpZWQ7CisJYm1zX2ZyZWUoYXR0cnMpOworCisJcmV0dXJuIG1vZGlmaWVkX2lkeF9hdHRy czsKIH0KIAogLyoKQEAgLTQ0NTMsMTIgKzQ1MzIsOTQgQEAgc2ltcGxlX2hlYXBfdXBkYXRl KFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBU dXBsZSB0dXAKIAlUTV9SZXN1bHQJcmVzdWx0OwogCVRNX0ZhaWx1cmVEYXRhIHRtZmQ7CiAJ TG9ja1R1cGxlTW9kZSBsb2NrbW9kZTsKKwlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKKwlCdWZm ZXJIZWFwVHVwbGVUYWJsZVNsb3QgKmJzbG90OworCUhlYXBUdXBsZQlvbGR0dXA7CisJYm9v bAkJc2hvdWxkRnJlZSA9IHRydWU7CisJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4X2F0dHJz OworCWJvb2wJCWhvdF9hbGxvd2VkLAorCQkJCXN1bW1hcml6ZWRfb25seTsKKwlCdWZmZXIJ CWJ1ZmZlcjsKIAotCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXAs Ci0JCQkJCQkgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwgMCwKLQkJCQkJCSBJbnZhbGlk U25hcHNob3QsCi0JCQkJCQkgdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAotCQkJCQkJ ICZ0bWZkLCAmbG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzKTsKKwlBc3NlcnQoSXRlbVBvaW50 ZXJJc1ZhbGlkKG90aWQpKTsKKworCS8qCisJICogVG8gdXBkYXRlIGEgaGVhcCB0dXBsZSB3 ZSBuZWVkIHRvIGZpbmQgdGhlIHNldCBvZiBtb2RpZmllZCBpbmRleGVkCisJICogYXR0cmli dXRlcyAoIm1vZGlmaWVkX2lkeF9hdHRycyIpIGFuZCB1c2UgdGhhdCB0byBkZXRlcm1pbmUg aWYgYSBIT1QKKwkgKiB1cGRhdGUgaXMgYWxsb3dhYmxlIG9yIG5vdC4gV2hlbiB1cGRhdGlu ZyBoZWFwIHR1cGxlcyB2aWEgZXhlY3V0aW9uIG9mCisJICogVVBEQVRFIHN0YXRlbWVudHMg dGhpcyBzZXQgaXMgY29uc3RydWN0ZWQgYmVmb3JlIGNhbGxpbmcgaW50byB0aGUgdGFibGUK KwkgKiBBTSdzIHVwZGF0ZSBmdW5jdGlvbiBieSBFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRy cygpIHdoaWNoIGNvbXBhcmVzIHRoZQorCSAqIG9sZC9uZXcgVHVwbGVUYWJsZVNsb3RzLgor CSAqCisJICogSGVyZSB0aGluZ3MgYXJlIGEgYml0IGRpZmZlcmVudCwgd2UgaGF2ZSB0aGUg b2xkIFRJRCBhbmQgdGhlIG5ldyB0dXBsZSwKKwkgKiBub3QgdHdvIFR1cGxlVGFibGVTbG90 cywgYnV0IHdlIHN0aWxsIG5lZWQgdG8gY29uc3RydWN0IGEgc2ltaWxhcgorCSAqIGJpdG1h cCBzbyBhcyB0byBiZSBhYmxlIHRvIGtub3cgaWYgSE9UIHVwZGF0ZXMgYXJlIGFsbG93ZWQg b3Igbm90LgorCSAqCisJICogVG8gZG8gdGhhdCB3ZSBmaXJzdCBoYXZlIHRvIGZldGNoIHRo ZSBvbGQgdHVwbGUgaXRzZWxmLCBidXQgYmVjYXVzZQorCSAqIGhlYXBhbV9mZXRjaF9yb3df dmVyc2lvbigpIGlzIHN0YXRpYywgd2UgcmVwbGljYXRlIGluIHBhcnQgdGhhdCBjb2RlCisJ ICogaGVyZS4KKwkgKgorCSAqIFRoaXMgaXMgYSBiaXQgcmVwZXRpdGl2ZSBiZWNhdXNlIGhl YXBfdXBkYXRlKCkgd2lsbCBhZ2FpbiBmaW5kIGFuZCBmb3JtCisJICogdGhlIG9sZCBIZWFw VHVwbGUgZnJvbSB0aGUgb2xkIFRJRCBhbmQgaW4gbW9zdCBjYXNlcyB0aGUgY2FsbGVycwor CSAqIChpZ25vcmluZyBleHRlbnNpb25zLCBhcmUgYWx3YXlzIGNhdGFsb2cgdHVwbGUgdXBk YXRlcykgYWxyZWFkeSBoYWQgdGhlCisJICogc2V0IG9mIGNoYW5nZWQgYXR0cmlidXRlcyAo dGhlICJyZXBsYWNlcyIgYXJyYXkpLCBidXQgZm9yIG5vdyB0aGlzCisJICogbWlub3IgcmVw ZXRpdGlvbiBvZiB3b3JrIGlzIG5lY2Vzc2FyeS4KKwkgKi8KKwlJTkpFQ1RJT05fUE9JTlQo InNpbXBsZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluIiwgTlVMTCk7CisKKwlzbG90ID0gTWFr ZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pLCAmVFRTT3BzQnVm ZmVySGVhcFR1cGxlLCAwKTsKKwlic2xvdCA9IChCdWZmZXJIZWFwVHVwbGVUYWJsZVNsb3Qg Kikgc2xvdDsKKworCS8qCisJICogU2V0IHRoZSBUSUQgaW4gdGhlIHNsb3QgYW5kIHRoZW4g ZmV0Y2ggdGhlIG9sZCB0dXBsZSBzbyB3ZSBjYW4gZXhhbWluZQorCSAqIGl0CisJICovCisJ YnNsb3QtPmJhc2UudHVwZGF0YS50X3NlbGYgPSAqb3RpZDsKKwlpZiAoIWhlYXBfZmV0Y2go cmVsYXRpb24sIFNuYXBzaG90QW55LCAmYnNsb3QtPmJhc2UudHVwZGF0YSwgJmJ1ZmZlciwg ZmFsc2UpKQorCXsKKwkJLyoKKwkJICogaGVhcF91cGRhdGUoKSBjaGVja3MgZm9yICFJdGVt SWRJc05vcm1hbChscCkgYW5kIHdpbGwgcmV0dXJuIGZhbHNlCisJCSAqIGluIHRob3NlIGNh c2VzLgorCQkgKi8KKwkJQXNzZXJ0KFJlbGF0aW9uU3VwcG9ydHNTeXNDYWNoZShSZWxhdGlv bkdldFJlbGlkKHJlbGF0aW9uKSkpOworCisJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7 CisKKwkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgKi8KKwkJ RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKworCQllbG9nKEVSUk9SLCAi dHVwbGUgY29uY3VycmVudGx5IGRlbGV0ZWQiKTsKKworCQlyZXR1cm47CisJfQorCisJQXNz ZXJ0KGJ1ZmZlciAhPSBJbnZhbGlkQnVmZmVyKTsKKworCS8qIFN0b3JlIGluIHNsb3QsIHRy YW5zZmVycmluZyBleGlzdGluZyBwaW4gKi8KKwlFeGVjU3RvcmVQaW5uZWRCdWZmZXJIZWFw VHVwbGUoJmJzbG90LT5iYXNlLnR1cGRhdGEsIHNsb3QsIGJ1ZmZlcik7CisJb2xkdHVwID0g RXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCBmYWxzZSwgJnNob3VsZEZyZWUpOworCisJ bW9kaWZpZWRfaWR4X2F0dHJzID0gSGVhcFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMocmVsYXRp b24sIG9sZHR1cCwgdHVwKTsKKwlsb2NrbW9kZSA9IEhlYXBVcGRhdGVEZXRlcm1pbmVMb2Nr bW9kZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0dHJzKTsKKwlob3RfYWxsb3dlZCA9IEhl YXBVcGRhdGVIb3RBbGxvd2FibGUocmVsYXRpb24sIG1vZGlmaWVkX2lkeF9hdHRycywgJnN1 bW1hcml6ZWRfb25seSk7CisKKwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3Rp ZCwgdHVwLCBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpLCAwLAorCQkJCQkJIEludmFsaWRT bmFwc2hvdCwgdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAorCQkJCQkJICZ0bWZkLCBs b2NrbW9kZSwgbW9kaWZpZWRfaWR4X2F0dHJzLCBob3RfYWxsb3dlZCk7CisKKwlpZiAoc2hv dWxkRnJlZSkKKwkJaGVhcF9mcmVldHVwbGUob2xkdHVwKTsKKworCUV4ZWNEcm9wU2luZ2xl VHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisKKwkvKgorCSAqIERlY2lkZSB3aGV0aGVyIG5ldyBp bmRleCBlbnRyaWVzIGFyZSBuZWVkZWQgZm9yIHRoZSB0dXBsZQorCSAqCisJICogSWYgdGhl IHVwZGF0ZSBpcyBub3QgSE9ULCB3ZSBtdXN0IHVwZGF0ZSBhbGwgaW5kZXhlcy4gSWYgdGhl IHVwZGF0ZSBpcworCSAqIEhPVCwgaXQgY291bGQgYmUgdGhhdCB3ZSB1cGRhdGVkIHN1bW1h cml6ZWQgY29sdW1ucywgc28gd2UgZWl0aGVyCisJICogdXBkYXRlIG9ubHkgc3VtbWFyaXpl ZCBpbmRleGVzLCBvciBub25lIGF0IGFsbC4KKwkgKi8KKwkqdXBkYXRlX2luZGV4ZXMgPSBU VV9Ob25lOwogCXN3aXRjaCAocmVzdWx0KQogCXsKIAkJY2FzZSBUTV9TZWxmTW9kaWZpZWQ6 CkBAIC00NDY4LDYgKzQ2MjksMTAgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJl bGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAKIAog CQljYXNlIFRNX09rOgogCQkJLyogZG9uZSBzdWNjZXNzZnVsbHkgKi8KKwkJCWlmICghSGVh cFR1cGxlSXNIZWFwT25seSh0dXApKQorCQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX0FsbDsK KwkJCWVsc2UgaWYgKHN1bW1hcml6ZWRfb25seSkKKwkJCQkqdXBkYXRlX2luZGV4ZXMgPSBU VV9TdW1tYXJpemluZzsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVE1fVXBkYXRlZDoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGJmODc0MzBjZjAx Li43NWI0ZDQwYWFmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFu ZGxlci5jCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNzY2FuLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdHNtYXBp LmgiCi0jaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRlICJhY2Nl c3MveGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1ZGUgImNh dGFsb2cvaW5kZXguaCIKQEAgLTIxOCwyMCArMjE3LDI2IEBAIHN0YXRpYyBUTV9SZXN1bHQK IGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90 aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQlDb21tYW5kSWQgY2lkLCB1aW50MzIg b3B0aW9ucywKIAkJCQkJU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ss Ci0JCQkJCWJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsCi0JCQkJCUxvY2tUdXBs ZU1vZGUgKmxvY2ttb2RlLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJ CQkJYm9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9j a21vZGUsCisJCQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLCBUVV9V cGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlib29sCQlzaG91bGRGcmVlID0g dHJ1ZTsKIAlIZWFwVHVwbGUJdHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3Qs IHRydWUsICZzaG91bGRGcmVlKTsKKwlib29sCQlob3RfYWxsb3dlZDsKKwlib29sCQlzdW1t YXJpemVkX29ubHk7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAorCUFzc2VydChJdGVtUG9pbnRl cklzVmFsaWQob3RpZCkpOworCisJaG90X2FsbG93ZWQgPSBIZWFwVXBkYXRlSG90QWxsb3dh YmxlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMsICZzdW1tYXJpemVkX29ubHkpOwor CSpsb2NrbW9kZSA9IEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShyZWxhdGlvbiwgbW9k aWZpZWRfaWR4X2F0dHJzKTsKKwogCS8qIFVwZGF0ZSB0aGUgdHVwbGUgd2l0aCB0YWJsZSBv aWQgKi8KIAlzbG90LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9u KTsKIAl0dXBsZS0+dF90YWJsZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsKIAotCXJlc3Vs dCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXBsZSwgY2lkLCBvcHRpb25zLAot CQkJCQkJIGNyb3NzY2hlY2ssIHdhaXQsCi0JCQkJCQkgdG1mZCwgbG9ja21vZGUsIHVwZGF0 ZV9pbmRleGVzKTsKKwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVw bGUsIGNpZCwgb3B0aW9ucywgY3Jvc3NjaGVjaywgd2FpdCwKKwkJCQkJCSB0bWZkLCAqbG9j a21vZGUsIG1vZGlmaWVkX2lkeF9hdHRycywgaG90X2FsbG93ZWQpOwogCUl0ZW1Qb2ludGVy Q29weSgmdHVwbGUtPnRfc2VsZiwgJnNsb3QtPnR0c190aWQpOwogCiAJLyoKQEAgLTI0NCwx NiArMjQ5LDE3IEBAIGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0 ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCSAqIEhPVCwgaXQgY291 bGQgYmUgdGhhdCB3ZSB1cGRhdGVkIHN1bW1hcml6ZWQgY29sdW1ucywgc28gd2UgZWl0aGVy CiAJICogdXBkYXRlIG9ubHkgc3VtbWFyaXplZCBpbmRleGVzLCBvciBub25lIGF0IGFsbC4K IAkgKi8KLQlpZiAocmVzdWx0ICE9IFRNX09rKQorCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05v bmU7CisJaWYgKHJlc3VsdCA9PSBUTV9PaykKIAl7Ci0JCUFzc2VydCgqdXBkYXRlX2luZGV4 ZXMgPT0gVFVfTm9uZSk7Ci0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CisJCWlmIChI ZWFwVHVwbGVJc0hlYXBPbmx5KHR1cGxlKSkKKwkJeworCQkJaWYgKHN1bW1hcml6ZWRfb25s eSkKKwkJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1tYXJpemluZzsKKwkJfQorCQllbHNl CisJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9BbGw7CiAJfQotCWVsc2UgaWYgKCFIZWFwVHVw bGVJc0hlYXBPbmx5KHR1cGxlKSkKLQkJQXNzZXJ0KCp1cGRhdGVfaW5kZXhlcyA9PSBUVV9B bGwpOwotCWVsc2UKLQkJQXNzZXJ0KCgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfU3VtbWFyaXpp bmcpIHx8Ci0JCQkgICAoKnVwZGF0ZV9pbmRleGVzID09IFRVX05vbmUpKTsKIAogCWlmIChz aG91bGRGcmVlKQogCQlwZnJlZSh0dXBsZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxl YW0uYwppbmRleCA2OGZmMDk2NmYxYy4uMTJjMjY3NGNiZDcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RhYmxlL3RhYmxlYW0uYwpAQCAtMzYxLDYgKzM2MSw3IEBAIHZvaWQKIHNpbXBsZV90YWJs ZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJ ICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCisJ CQkJCQkgIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAogCQkJCQkJICBU VV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlUTV9SZXN1bHQJcmVzdWx0 OwpAQCAtMzcxLDcgKzM3Miw5IEBAIHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUoUmVsYXRp b24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJCQlHZXRDdXJyZW50Q29tbWFuZElk KHRydWUpLAogCQkJCQkJCQkwLCBzbmFwc2hvdCwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJ CQl0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0JCQkJCQkJCSZ0bWZkLCAmbG9ja21v ZGUsIHVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJJnRtZmQsICZsb2NrbW9kZSwKKwkJCQkJ CQkJbW9kaWZpZWRfaWR4X2F0dHJzLAorCQkJCQkJCQl1cGRhdGVfaW5kZXhlcyk7CiAKIAlz d2l0Y2ggKHJlc3VsdCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9y ZXBhY2suYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jCmluZGV4IDAyODgzZmUz NGE0Li4xYzZlNjlkMGExNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVw YWNrLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKQEAgLTI2ODAsOCAr MjY4MCwxOCBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlvbiByZWwsIFR1cGxl VGFibGVTbG90ICpzcGlsbGVkX3R1cGxlLAogCUxvY2tUdXBsZU1vZGUgbG9ja21vZGU7CiAJ VE1fRmFpbHVyZURhdGEgdG1mZDsKIAlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZV9pbmRleGVz OworCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRyczsKIAlUTV9SZXN1bHQJcmVzOwog CisJLyoKKwkgKiBDb21wdXRlIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1 dGVzIGJ5IGNvbXBhcmluZyB0aGUgb2xkCisJICogKG9uZGlzaykgYW5kIG5ldyAoc3BpbGxl ZCkgdHVwbGVzOyBoZWFwX3VwZGF0ZSBuZWVkcyBpdCBmb3IgYSBjb3JyZWN0CisJICogSE9U IGRlY2lzaW9uIChhIE5VTEwgc2V0IHdvdWxkIGxvb2sgbGlrZSAibm8gaW5kZXhlZCBjb2x1 bW4gY2hhbmdlZCIpLgorCSAqLworCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4ZWNVcGRhdGVN b2RpZmllZElkeEF0dHJzKGNoZ2N4dC0+Y2NfcnJpLAorCQkJCQkJCQkJCQkJCW9uZGlza190 dXBsZSwKKwkJCQkJCQkJCQkJCQlzcGlsbGVkX3R1cGxlKTsKKwogCS8qCiAJICogQ2Fycnkg b3V0IHRoZSB1cGRhdGUsIHNraXBwaW5nIGxvZ2ljYWwgZGVjb2RpbmcgZm9yIGl0LgogCSAq LwpAQCAtMjY5MSw3ICsyNzAxLDcgQEAgYXBwbHlfY29uY3VycmVudF91cGRhdGUoUmVsYXRp b24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqc3BpbGxlZF90dXBsZSwKIAkJCQkJCQkgSW52YWxp ZFNuYXBzaG90LAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJIGZhbHNlLAot CQkJCQkJCSAmdG1mZCwgJmxvY2ttb2RlLCAmdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCSAm dG1mZCwgJmxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsICZ1cGRhdGVfaW5kZXhlcyk7 CiAJaWYgKHJlcyAhPSBUTV9PaykKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQllcnJjb2RlKEVS UkNPREVfVF9SX1NFUklBTElaQVRJT05fRkFJTFVSRSksCkBAIC0yNzEyLDYgKzI3MjIsOCBA QCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90 ICpzcGlsbGVkX3R1cGxlLAogCX0KIAogCXBnc3RhdF9wcm9ncmVzc19pbmNyX3BhcmFtKFBS T0dSRVNTX1JFUEFDS19IRUFQX1RVUExFU19VUERBVEVELCAxKTsKKworCWJtc19mcmVlKG1v ZGlmaWVkX2lkeF9hdHRycyk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCmluZGV4IGIyY2E1Y2JmMTE3Li42MjYyZjcxYmQ5MyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTMzLDYgKzMz LDcgQEAKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2xz eXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3Jl bGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxz L3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKQEAgLTkxMCw2ICs5 MTEsNyBAQCBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbywKIAlib29sCQlza2lwX3R1cGxlID0gZmFsc2U7CiAJUmVsYXRpb24JcmVsID0g cmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOwogCUl0ZW1Qb2ludGVyIHRpZCA9ICYo c2VhcmNoc2xvdC0+dHRzX3RpZCk7CisJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4X2F0dHJz OwogCiAJLyoKIAkgKiBXZSBzdXBwb3J0IG9ubHkgbm9uLXN5c3RlbSB0YWJsZXMsIHdpdGgK QEAgLTk0OCw4ICs5NTAsMTMgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJlc3VsdFJl bEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCWlmIChyZWwtPnJkX3JlbC0+cmVsaXNwYXJ0aXRp b24pCiAJCQlFeGVjUGFydGl0aW9uQ2hlY2socmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRl LCB0cnVlKTsKIAorCQltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVjVXBkYXRlTW9kaWZpZWRJ ZHhBdHRycyhyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCQkJCQlzZWFyY2hzbG90LCBzbG90 KTsKKwogCQlzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKHJlbCwgdGlkLCBzbG90LCBlc3Rh dGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICZ1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJ CSAgbW9kaWZpZWRfaWR4X2F0dHJzLCAmdXBkYXRlX2luZGV4ZXMpOworCQlibXNfZnJlZSht b2RpZmllZF9pZHhfYXR0cnMpOworCiAKIAkJY29uZmxpY3RpbmRleGVzID0gcmVzdWx0UmVs SW5mby0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjVHVwbGVzLmMKaW5kZXggOTdhZTAxOWQxMGEuLjJjMzUzOGRiNGJmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1R1cGxlcy5jCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAibm9k ZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRl ICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVk ZSAidXRpbHMvZXhwYW5kZWRkYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5o IgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCkBAIC0yMDEyLDYgKzIwMTMsMTA4IEBA IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGVEYXR1bShUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIAly ZXR1cm4gcmV0OwogfQogCisvKgorICogRXhlY0NvbXBhcmVTbG90QXR0cnMKKyAqCisgKiBD b21wYXJlIHRoZSBzdWJzZXQgb2YgYXR0cmlidXRlcyBpbiBhdHRycyBiZXR3ZWVuIFR1cGxl VGFibGVTbG90cyB0byBkZXRlY3QKKyAqIHdoaWNoIGF0dHJpYnV0ZXMgaGF2ZSBjaGFuZ2Vk LgorICoKKyAqIFRoZSBpbnB1dCBCaXRtYXBzZXQgYXR0cnMgaXMgbW9kaWZpZWQgaW4gcGxh Y2UgKHJlY3ljbGVkIHdoZW4gcG9zc2libGUgdmlhCisgKiBibXNfZGVsX21lbWJlciwgd2hp Y2ggbWF5IHBmcmVlIGl0IGFuZCByZXR1cm4gTlVMTCkgYW5kIG1heSBiZSBmcmVlZDsKKyAq IGNhbGxlcnMgbXVzdCB1c2Ugb25seSB0aGUgcmV0dXJuZWQgcG9pbnRlciwgbm90IHRoZWly IG9yaWdpbmFsIGF0dHJzCisgKiB2YWx1ZS4gIFJldHVybnMgdGhlIEJpdG1hcHNldCBvZiBh dHRyaWJ1dGUgaW5kaWNlcyAodXNpbmcgdGhlCisgKiBGaXJzdExvd0ludmFsaWRIZWFwQXR0 cmlidXRlTnVtYmVyIGNvbnZlbnRpb24pIHRoYXQgZGlmZmVyIGJldHdlZW4gdGhlIHR3bwor ICogc2xvdHMuCisgKi8KK0JpdG1hcHNldCAqCitFeGVjQ29tcGFyZVNsb3RBdHRycyhCaXRt YXBzZXQgKmF0dHJzLCBUdXBsZURlc2MgdHVwZGVzYywKKwkJCQkJIFR1cGxlVGFibGVTbG90 ICpzMSwgVHVwbGVUYWJsZVNsb3QgKnMyKQoreworCWludAkJCWF0dGlkeCA9IC0xOworCisJ d2hpbGUgKChhdHRpZHggPSBibXNfbmV4dF9tZW1iZXIoYXR0cnMsIGF0dGlkeCkpID49IDAp CisJeworCQkvKiBhdHRpZHggaXMgemVyby1iYXNlZCwgYXR0cm51bSBpcyB0aGUgbm9ybWFs IGF0dHJpYnV0ZSBudW1iZXIgKi8KKwkJQXR0ck51bWJlcglhdHRybnVtID0gYXR0aWR4ICsg Rmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsKKwkJRGF0dW0JCXZhbHVlMSwK KwkJCQkJdmFsdWUyOworCQlib29sCQludWxsMSwKKwkJCQkJbnVsbDI7CisJCUNvbXBhY3RB dHRyaWJ1dGUgKmF0dDsKKworCQkvKgorCQkgKiBJZiBpdCdzIGEgd2hvbGUtdHVwbGUgcmVm ZXJlbmNlLCBzYXkgIm5vdCBlcXVhbCIuICBJdCdzIG5vdCByZWFsbHkKKwkJICogd29ydGgg c3VwcG9ydGluZyB0aGlzIGNhc2UsIHNpbmNlIGl0IGNvdWxkIG9ubHkgc3VjY2VlZCBhZnRl ciBhCisJCSAqIG5vLW9wIHVwZGF0ZSwgd2hpY2ggaXMgaGFyZGx5IGEgY2FzZSB3b3J0aCBv cHRpbWl6aW5nIGZvci4KKwkJICovCisJCWlmIChhdHRybnVtID09IDApCisJCQljb250aW51 ZTsKKworCQkvKgorCQkgKiBMaWtld2lzZSwgYXV0b21hdGljYWxseSBzYXkgIm5vdCBlcXVh bCIgZm9yIGFueSBzeXN0ZW0gYXR0cmlidXRlCisJCSAqIG90aGVyIHRoYW4gdGFibGVPSUQ7 IHdlIGNhbm5vdCBleHBlY3QgdGhlc2UgdG8gYmUgY29uc2lzdGVudCBpbiBhCisJCSAqIEhP VCBjaGFpbiwgb3IgZXZlbiB0byBiZSBzZXQgY29ycmVjdGx5IHlldCBpbiB0aGUgbmV3IHR1 cGxlLgorCQkgKi8KKwkJaWYgKGF0dHJudW0gPCAwKQorCQl7CisJCQlpZiAoYXR0cm51bSA9 PSBUYWJsZU9pZEF0dHJpYnV0ZU51bWJlcikKKwkJCQlhdHRycyA9IGJtc19kZWxfbWVtYmVy KGF0dHJzLCBhdHRpZHgpOworCQkJY29udGludWU7CisJCX0KKworCQlhdHQgPSBUdXBsZURl c2NDb21wYWN0QXR0cih0dXBkZXNjLCBhdHRybnVtIC0gMSk7CisJCXZhbHVlMSA9IHNsb3Rf Z2V0YXR0cihzMSwgYXR0cm51bSwgJm51bGwxKTsKKwkJdmFsdWUyID0gc2xvdF9nZXRhdHRy KHMyLCBhdHRybnVtLCAmbnVsbDIpOworCisJCS8qIEEgY2hhbmdlIHRvL2Zyb20gTlVMTCwg c28gbm90IGVxdWFsICovCisJCWlmIChudWxsMSAhPSBudWxsMikKKwkJCWNvbnRpbnVlOwor CisJCS8qIEJvdGggTlVMTCwgbm8gY2hhbmdlL3VubW9kaWZpZWQgKi8KKwkJaWYgKG51bGwy KQorCQl7CisJCQlhdHRycyA9IGJtc19kZWxfbWVtYmVyKGF0dHJzLCBhdHRpZHgpOworCQkJ Y29udGludWU7CisJCX0KKworCQkvKgorCQkgKiBDb21wYXJlIHdpdGggZGF0dW1faW1hZ2Vf ZXEsIE5PVCBkYXR1bUlzRXF1YWwgKHRoZSBjb21wYXJhdG9yCisJCSAqIGhlYXBfYXR0cl9l cXVhbHMgdXNlcykuICBUaGlzIGlzIGFuIGludGVudGlvbmFsIGFuZCBuZWNlc3NhcnkKKwkJ ICogZGlmZmVyZW5jZSwgbm90IGFuIG92ZXJzaWdodDoKKwkJICoKKwkJICogMS4gVGhpcyBy dW5zIGluIHRoZSBleGVjdXRvciBvbiBUdXBsZVRhYmxlU2xvdHMsIHdob3NlIERhdHVtcyBh cmUgdGhlCisJCSAqICAgIGxvZ2ljYWwsIGluLW1lbW9yeSB2YWx1ZXMgb2YgdGhlIG5ldy9v bGQgdHVwbGUuICBBdCB0aGlzIHN0YWdlIHRoZQorCQkgKiAgICB2YWx1ZXMgaGF2ZSBub3Qg YmVlbiB0aHJvdWdoIGFueSB0YWJsZSBBTSdzIHN0b3JhZ2UgcGF0aCwgc28gbm8KKwkJICog ICAgc2xvdCB2YWx1ZSBjYW4gYmUgVE9BU1RlZCBoZXJlLiAgVE9BU1QgKGNvbXByZXNzaW9u L2V4dGVybmFsaXphdGlvbikKKwkJICogICAgaXMgYSBoZWFwYW0gc3RvcmFnZSBkZXRhaWwg YXBwbGllZCBsYXRlciwgaW5zaWRlIHRoZSB0YWJsZSBBTTsgdGhlCisJCSAqICAgICJ0d28g cGh5c2ljYWxseSBkaWZmZXJlbnQgdmFybGVuYSBlbmNvZGluZ3Mgb2YgdGhlIHNhbWUgdmFs dWUiCisJCSAqICAgIGhhemFyZCB0aGF0IHdvdWxkIGRpc3Rpbmd1aXNoIGRhdHVtX2ltYWdl X2VxIGZyb20gZGF0dW1Jc0VxdWFsCisJCSAqICAgIGNhbm5vdCBhcmlzZSBhdCB0aGlzIHBv aW50LgorCQkgKgorCQkgKiAyLiBUaGUgZXhlY3V0b3IgbXVzdCBzdGF5IGFnbm9zdGljIG9m IGhvdyBhbnkgdGFibGUgQU0gc3RvcmVzCisJCSAqICAgIHZhcmlhYmxlLWxlbmd0aCBkYXRh LiAgZGF0dW1faW1hZ2VfZXEgaXMgdGhlIGNvcnJlY3Qgc3RvcmFnZS1uZXV0cmFsCisJCSAq ICAgICJhcmUgdGhlc2UgdHdvIGxvZ2ljYWwgdmFsdWVzIGltYWdlLWlkZW50aWNhbCIgdGVz dCBmb3Igc2xvdCBEYXR1bXM7CisJCSAqICAgIGRhdHVtSXNFcXVhbCBiYWtlcyBpbiBhIGJ5 dGUtbGF5b3V0IGFzc3VtcHRpb24gdGhhdCBkb2VzIG5vdCBiZWxvbmcKKwkJICogICAgaGVy ZS4KKwkJICoKKwkJICogMy4gZGF0dW1Jc0VxdWFsIHdvdWxkIGZvcmNlIGEgc2xvdC0+RGF0 dW0gdHJhbnNmb3JtIHdpdGggaGVhcAorCQkgKiAgICBzZW1hbnRpY3Mgb24gYSBob3QgcGF0 aCwgcGVyIGF0dHJpYnV0ZSBwZXIgdXBkYXRlZCByb3cgLS0gcHVyZQorCQkgKiAgICBvdmVy aGVhZCBmb3Igbm8gYmVuZWZpdC4KKwkJICoKKwkJICogVGhpcyBmdW5jdGlvbiBhbmQgaGVh cF9hdHRyX2VxdWFscygpL0hlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpIGFyZQorCQkgKiBt ZWFudCB0byBiZSAqZnVuY3Rpb25hbGx5KiBlcXVpdmFsZW50IChib3RoIGFuc3dlciAid2hp Y2ggaW5kZXhlZAorCQkgKiBhdHRyaWJ1dGVzIGNoYW5nZWQgdmFsdWU/IiksIG5vdCB0byB1 c2UgdGhlIGlkZW50aWNhbCBEYXR1bS1sZXZlbAorCQkgKiBjb21wYXJhdG9yLiAgRXJyaW5n IHRvd2FyZCAiY2hhbmdlZCIgaXMgdGhlIHNhZmUgZGlyZWN0aW9uIGZvciB0aGUKKwkJICog bW9kaWZpZWQtaW5kZXhlZC1hdHRyaWJ1dGVzIGRlY2lzaW9uIGFueXdheSAoYSByZWR1bmRh bnQgZnJlc2ggaW5kZXgKKwkJICogZW50cnkgaXMgdG9sZXJhdGVkOyBhIHNraXBwZWQgb25l IGlzIG5vdCkuCisJCSAqLworCQlpZiAoZGF0dW1faW1hZ2VfZXEodmFsdWUxLCB2YWx1ZTIs IGF0dC0+YXR0Ynl2YWwsIGF0dC0+YXR0bGVuKSkKKwkJCWF0dHJzID0gYm1zX2RlbF9tZW1i ZXIoYXR0cnMsIGF0dGlkeCk7CisJfQorCisJcmV0dXJuIGF0dHJzOworfQorCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKgkJCQljb252ZW5pZW5jZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcwogICog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlm eVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRl eCBiOTc4MWViM2I5NS4uOWI2Zjg3NTdmYWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNb2RpZnlUYWJsZS5jCkBAIC0xOCw2ICsxOCw3IEBACiAgKgkJRXhlY01vZGlmeVRhYmxl CQktIHJldHJpZXZlIHRoZSBuZXh0IHR1cGxlIGZyb20gdGhlIG5vZGUKICAqCQlFeGVjRW5k TW9kaWZ5VGFibGUJLSBzaHV0IGRvd24gdGhlIE1vZGlmeVRhYmxlIG5vZGUKICAqCQlFeGVj UmVTY2FuTW9kaWZ5VGFibGUgLSByZXNjYW4gdGhlIE1vZGlmeVRhYmxlIG5vZGUKKyAqCQlF eGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyAtIGZpbmQgc2V0IG9mIHVwZGF0ZWQgaW5kZXhl ZCBjb2x1bW5zCiAgKgogICoJIE5PVEVTCiAgKgkJVGhlIE1vZGlmeVRhYmxlIG5vZGUgcmVj ZWl2ZXMgaW5wdXQgZnJvbSBpdHMgb3V0ZXJQbGFuLCB3aGljaCBpcwpAQCAtNTYsNiArNTcs NyBAQAogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nl c3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy90dXBjb252ZXJ0LmgiCisjaW5jbHVk ZSAiYWNjZXNzL3R1cGRlc2MuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0 aW9uLmgiCkBAIC0yMDIsNiArMjA0LDYzIEBAIHN0YXRpYyB2b2lkIGZpcmVBU1RyaWdnZXJz KE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUpOwogc3RhdGljIHZvaWQgRXhlY0luaXRGb3JQb3J0 aW9uT2YoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJCQkJ CQkJCSBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvKTsKIAorLyoKKyAqIEV4ZWNVcGRh dGVNb2RpZmllZElkeEF0dHJzCisgKgorICogRmluZCB0aGUgc2V0IG9mIGF0dHJpYnV0ZXMg cmVmZXJlbmNlZCBieSB0aGlzIHJlbGF0aW9uIGFuZCB1c2VkIGluIHRoaXMKKyAqIFVQREFU RSB0aGF0IG5vdyBkaWZmZXIgaW4gdmFsdWUuICBUaGlzIGlzIGRvbmUgYnkgcmV2aWV3aW5n IHNsb3QgZGF0dW0gdGhhdAorICogYXJlIGluIHRoZSBVUERBVEUgc3RhdG1lbnQgYW5kIGFy ZSBrbm93biB0byBiZSByZWZlcmVuY2VkIGJ5IGF0IGxlYXN0IG9uZQorICogaW5kZXggaW4g c29tZSB3YXkuICBUaGlzIHNldCBpcyBjYWxsZWQgdGhlICJtb2RpZmllZCBpbmRleGVkIGF0 dHJpYnV0ZXMiIG9yCisgKiAibW9kaWZpZWRfaWR4X2F0dHJzIi4gIEFuIG92ZXJsYXAgb2Yg YSBzaW5nbGUgaW5kZXgncyBhdHRyaWJ1dGVzIGFuZCB0aGlzCisgKiBtb2RpZmllZF9pZHhf YXR0cnMgc2V0IHNpZ25hbHMgdGhhdCB0aGUgYXR0cmlidXRlcyBpbiB0aGUgbmV3X3R0cyB1 c2VkIHRvCisgKiBmb3JtIHRoZSBpbmRleCBkYXR1bSBoYXZlIGNoYW5nZWQuCisgKgorICog UmV0dXJuIGEgQml0bWFwc2V0IHRoYXQgY29udGFpbnMgdGhlIHNldCBvZiBtb2RpZmllZCAo Y2hhbmdlZCkgaW5kZXhlZAorICogYXR0cmlidXRlcyBiZXR3ZWVuIG9sZHR1cCBhbmQgbmV3 dHVwLgorICoKKyAqIE5vdGU6IFRoZXJlIGlzIGEgc2ltaWxhciBmdW5jdGlvbiBjYWxsZWQg SGVhcFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoKSB0aGF0IG9wZXJhdGVzCisgKiBvbiB0aGUg b2xkIFRJRCBhbmQgbmV3IEhlYXBUdXBsZSByYXRoZXIgdGhhbiB0aGUgb2xkL25ldyBUdXBs ZVRhYmxlU2xvdHMgYXMKKyAqIHRoaXMgZnVuY3Rpb24gZG9lcy4gIFRoZXNlIHR3byBmdW5j dGlvbnMgc2hvdWxkIG1pcnJvciBvbmUgYW5vdGhlciB1bnRpbAorICogc29tZWRheSB3aGVu IGNhdGFsb2cgdHVwbGUgdXBkYXRlcyB0cmFjayB0aGVpciBjaGFuZ2VzIGF2b2lkaW5nIHRo ZSBuZWVkIHRvCisgKiByZS1kaXNjb3ZlciB0aGVtIGluIHNpbXBsZV9oZWFwX3VwZGF0ZSgp LgorICovCitCaXRtYXBzZXQgKgorRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpvbGRf dHRzLAorCQkJCQkJICAgVHVwbGVUYWJsZVNsb3QgKm5ld190dHMpCit7CisJUmVsYXRpb24J cmVsYXRpb24gPSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJVHVwbGVEZXNj CXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKTsKKwlCaXRtYXBzZXQgICph dHRyczsKKworCS8qIElmIG5vIGluZGV4ZXMsIHdlJ3JlIGRvbmUgKi8KKwlpZiAocmVzdWx0 UmVsSW5mby0+cmlfTnVtSW5kaWNlcyA9PSAwKQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJ ICogR2V0IHRoZSBzZXQgb2YgYWxsIGF0dHJpYnV0ZXMgYWNyb3NzIGFsbCBpbmRleGVzIGZv ciB0aGlzIHJlbGF0aW9uIGZyb20KKwkgKiB0aGUgcmVsY2FjaGUsIGl0IHJldHVybnMgdXMg YSBjb3B5IG9mIHRoZSBiaXRtYXAgc28gd2UgY2FuIG1vZGlmeSBpdC4KKwkgKgorCSAqIE5v dGU6IFdlIGludGVudGlvbmFsbHkgc2NhbiBhbGwgaW5kZXhlZCBjb2x1bW5zIHdoZW4gbG9v a2luZyBmb3IKKwkgKiBjaGFuZ2VzIHJhdGhlciB0aGFuIHJlZHVjZSB0aGF0IHNldCBieSBp bnRlcnNlY3RpbmcgaXQgd2l0aAorCSAqIEV4ZWNHZXRBbGxVcGRhdGVkQ29scygpLiAgRGVz aXB0ZSB0aGUgbmFtZSBpdCBwcm92aWRlcyB0aGUgc2V0IG9mCisJICogdGFyZ2V0ZWQgYXR0 cmlidXRlcyBpbiB0aGUgU1FMIHVzZWQgZm9yIHRoZSBVUERBVEUgYW5kIGFueSB0cmlnZ2Vy cywKKwkgKiBidXQgdGhhdCBkb2Vzbid0IGluY2x1ZGUgYW55IGF0dHJpYnV0ZXMgdXBkYXRl ZCB1c2luZworCSAqIGhlYXBfbW9kaWZpeV90dXBsZSgpLiBUaGVyZSBpcyBvbmUgdGVzdCBp biB0c2VhcmNoLnNxbCB0aGF0IGRvZXMganVzdAorCSAqIHRoYXQsIG1vZGlmaWVzIGFuIGlu ZGV4ZWQgYXR0cmlidXRlIHRoYXQgaXNuJ3Qgc3BlY2lmaWVkIGluIHRoZSBTUUwgYW5kCisJ ICogc28gaXNuJ3QgcHJlc2VudCBpbiB0aGF0IGJpdG1hcHNldC4KKwkgKi8KKwlhdHRycyA9 IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1B UF9JTkRFWEVEKTsKKworCS8qCisJICogV2hlbiB0aGVyZSBhcmUgaW5kZXhlZCBhdHRyaWJ1 dGVzIG1lbnRpb25lZCBpbiB0aGUgVVBEQVRFIHRoZW4gd2UgbmVlZAorCSAqIHRvIGZpbmQg dGhlIHN1YnNldCB0aGF0IGNoYW5nZWQgdmFsdWUuICBUaGF0J3MgdGhlCisJICogIm1vZGlm aWVkX2lkeF9hdHRycyIuCisJICovCisJYXR0cnMgPSBFeGVjQ29tcGFyZVNsb3RBdHRycyhh dHRycywgdHVwZGVzYywgb2xkX3R0cywgbmV3X3R0cyk7CisKKwlyZXR1cm4gYXR0cnM7Cit9 CiAKIC8qCiAgKiBWZXJpZnkgdGhhdCB0aGUgdHVwbGVzIHRvIGJlIHByb2R1Y2VkIGJ5IElO U0VSVCBtYXRjaCB0aGUKQEAgLTI0NDYsMTQgKzI1MDUsMTcgQEAgRXhlY1VwZGF0ZVByZXBh cmVTbG90KFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAgKi8KIHN0YXRpYyBUTV9S ZXN1bHQKIEV4ZWNVcGRhdGVBY3QoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1 bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAotCQkJICBJdGVtUG9pbnRlciB0dXBsZWlkLCBI ZWFwVHVwbGUgb2xkdHVwbGUsIFR1cGxlVGFibGVTbG90ICpzbG90LAotCQkJICBib29sIGNh blNldFRhZywgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0KQorCQkJICBJdGVtUG9pbnRlciB0 dXBsZWlkLCBIZWFwVHVwbGUgb2xkdHVwbGUsIFR1cGxlVGFibGVTbG90ICpvbGRTbG90LAor CQkJICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwgYm9vbCBjYW5TZXRUYWcsIFVwZGF0ZUNvbnRl eHQgKnVwZGF0ZUN4dCkKIHsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IGNvbnRleHQtPmVzdGF0 ZTsKIAlSZWxhdGlvbglyZXN1bHRSZWxhdGlvbkRlc2MgPSByZXN1bHRSZWxJbmZvLT5yaV9S ZWxhdGlvbkRlc2M7CiAJYm9vbAkJcGFydGl0aW9uX2NvbnN0cmFpbnRfZmFpbGVkOwogCVRN X1Jlc3VsdAlyZXN1bHQ7CiAKKwkvKiBUaGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4ZWQgYXR0 cmlidXRlcyB0aGF0IHRyaWdnZXIgbmV3IGluZGV4IGVudHJpZXMgKi8KKwlCaXRtYXBzZXQg ICptb2RpZmllZF9pZHhfYXR0cnMgPSBOVUxMOworCiAJdXBkYXRlQ3h0LT5jcm9zc1BhcnRV cGRhdGUgPSBmYWxzZTsKIAogCS8qCkBAIC0yNTcwLDcgKzI2MzIsMTYgQEAgbHJlcGxhY2U6 CiAJCUV4ZWNDb25zdHJhaW50cyhyZXN1bHRSZWxJbmZvLCBzbG90LCBlc3RhdGUpOwogCiAJ LyoKLQkgKiByZXBsYWNlIHRoZSBoZWFwIHR1cGxlCisJICogTmV4dCB1cCB3ZSBuZWVkIHRv IGZpbmQgb3V0IHRoZSBzZXQgb2YgaW5kZXhlZCBhdHRyaWJ1dGVzIHRoYXQgaGF2ZQorCSAq IGNoYW5nZWQgaW4gdmFsdWUgYW5kIHNob3VsZCB0cmlnZ2VyIGEgbmV3IGluZGV4IHR1cGxl LiAgV2UgY291bGQgc3RhcnQKKwkgKiB3aXRoIHRoZSBzZXQgb2YgdXBkYXRlZCBjb2x1bW5z IHZpYSBFeGVjR2V0VXBkYXRlZENvbHMoKSwgYnV0IGlmIHdlIGRvCisJICogd2Ugd2lsbCBv dmVybG9vayBhdHRyaWJ1dGVzIGRpcmVjdGx5IG1vZGlmaWVkIGJ5IGhlYXBfbW9kaWZ5X3R1 cGxlKCkKKwkgKiB3aGljaCBhcmUgbm90IGtub3duIHRvIEV4ZWNHZXRVcGRhdGVkQ29scygp LgorCSAqLworCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0 dHJzKHJlc3VsdFJlbEluZm8sIG9sZFNsb3QsIHNsb3QpOworCisJLyoKKwkgKiBDYWxsIGlu dG8gdGhlIHRhYmxlIEFNIHRvIHVwZGF0ZSB0aGUgaGVhcCB0dXBsZS4KIAkgKgogCSAqIE5v dGU6IGlmIGVzX2Nyb3NzY2hlY2tfc25hcHNob3QgaXNuJ3QgSW52YWxpZFNuYXBzaG90LCB3 ZSBjaGVjayB0aGF0CiAJICogdGhlIHJvdyB0byBiZSB1cGRhdGVkIGlzIHZpc2libGUgdG8g dGhhdCBzbmFwc2hvdCwgYW5kIHRocm93IGEKQEAgLTI1ODUsNiArMjY1Niw3IEBAIGxyZXBs YWNlOgogCQkJCQkJCQllc3RhdGUtPmVzX2Nyb3NzY2hlY2tfc25hcHNob3QsCiAJCQkJCQkJ CXRydWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKIAkJCQkJCQkJJmNvbnRleHQtPnRtZmQs ICZ1cGRhdGVDeHQtPmxvY2ttb2RlLAorCQkJCQkJCQltb2RpZmllZF9pZHhfYXR0cnMsCiAJ CQkJCQkJCSZ1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMpOwogCiAJcmV0dXJuIHJlc3VsdDsK QEAgLTI4MzEsOCArMjkwMyw4IEBAIEV4ZWNVcGRhdGUoTW9kaWZ5VGFibGVDb250ZXh0ICpj b250ZXh0LCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkgKi8KIHJlZG9fYWN0 OgogCQlsb2NrZWR0aWQgPSAqdHVwbGVpZDsKLQkJcmVzdWx0ID0gRXhlY1VwZGF0ZUFjdChj b250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwgc2xvdCwKLQkJCQkJ CQkgICBjYW5TZXRUYWcsICZ1cGRhdGVDeHQpOworCQlyZXN1bHQgPSBFeGVjVXBkYXRlQWN0 KGNvbnRleHQsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsIG9sZHR1cGxlLCBvbGRTbG90LAor CQkJCQkJCSAgIHNsb3QsIGNhblNldFRhZywgJnVwZGF0ZUN4dCk7CiAKIAkJLyoKIAkJICog SWYgRXhlY1VwZGF0ZUFjdCByZXBvcnRzIHRoYXQgYSBjcm9zcy1wYXJ0aXRpb24gdXBkYXRl IHdhcyBkb25lLApAQCAtMzY4Miw4ICszNzU0LDggQEAgbG1lcmdlX21hdGNoZWQ6CiAJCQkJ CUFzc2VydChvbGR0dXBsZSA9PSBOVUxMKTsKIAogCQkJCQlyZXN1bHQgPSBFeGVjVXBkYXRl QWN0KGNvbnRleHQsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsCi0JCQkJCQkJCQkJICAgTlVM TCwgbmV3c2xvdCwgY2FuU2V0VGFnLAotCQkJCQkJCQkJCSAgICZ1cGRhdGVDeHQpOworCQkJ CQkJCQkJCSAgIE5VTEwsIHJlc3VsdFJlbEluZm8tPnJpX29sZFR1cGxlU2xvdCwKKwkJCQkJ CQkJCQkgICBuZXdzbG90LCBjYW5TZXRUYWcsICZ1cGRhdGVDeHQpOwogCiAJCQkJCS8qCiAJ CQkJCSAqIEFzIGluIEV4ZWNVcGRhdGUoKSwgaWYgRXhlY1VwZGF0ZUFjdCgpIHJlcG9ydHMg dGhhdCBhCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCBmYjRlMDQyYmU4 YS4uMDU1Zjc1NzEwN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3Jl bGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAt MjQ4Miw3ICsyNDgyLDcgQEAgUmVsYXRpb25EZXN0cm95UmVsYXRpb24oUmVsYXRpb24gcmVs YXRpb24sIGJvb2wgcmVtZW1iZXJfdHVwZGVzYykKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRf a2V5YXR0cik7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX3BrYXR0cik7CiAJYm1zX2ZyZWUo cmVsYXRpb24tPnJkX2lkYXR0cik7Ci0JYm1zX2ZyZWUocmVsYXRpb24tPnJkX2hvdGJsb2Nr aW5nYXR0cik7CisJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyKTsKIAlibXNf ZnJlZShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOwogCWlmIChyZWxhdGlvbi0+cmRf cHViZGVzYykKIAkJcGZyZWUocmVsYXRpb24tPnJkX3B1YmRlc2MpOwpAQCAtNTI5MSw4ICs1 MjkxLDggQEAgUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShSZWxhdGlvbiByZWxhdGlvbikK ICAqCQkJCQkJCQkJKGJld2FyZTogZXZlbiBpZiBQSyBpcyBkZWZlcnJhYmxlISkKICAqCUlO REVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWQlDb2x1bW5zIGluIHRoZSB0YWJsZSdzIHJl cGxpY2EgaWRlbnRpdHkKICAqCQkJCQkJCQkJaW5kZXggKGVtcHR5IGlmIEZVTEwpCi0gKglJ TkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcJQ29sdW1ucyB0aGF0IGJsb2NrIHVwZGF0 ZXMgZnJvbSBiZWluZyBIT1QKLSAqCUlOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQJQ29s dW1ucyBpbmNsdWRlZCBpbiBzdW1tYXJpemluZyBpbmRleGVzCisgKglJTkRFWF9BVFRSX0JJ VE1BUF9JTkRFWEVECQlDb2x1bW5zIHJlZmVyZW5jZWQgYnkgaW5kZXhlcworICoJSU5ERVhf QVRUUl9CSVRNQVBfU1VNTUFSSVpFRAlDb2x1bW5zIG9ubHkgaW5jbHVkZWQgaW4gc3VtbWFy aXppbmcgaW5kZXhlcwogICoKICAqIEF0dHJpYnV0ZSBudW1iZXJzIGFyZSBvZmZzZXQgYnkg Rmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciBzbyB0aGF0CiAgKiB3ZSBjYW4g aW5jbHVkZSBzeXN0ZW0gYXR0cmlidXRlcyAoZS5nLiwgT0lEKSBpbiB0aGUgYml0bWFwIHJl cHJlc2VudGF0aW9uLgpAQCAtNTMxNSw4ICs1MzE1LDggQEAgUmVsYXRpb25HZXRJbmRleEF0 dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktp bmQpCiAJQml0bWFwc2V0ICAqdWluZGV4YXR0cnM7CS8qIGNvbHVtbnMgaW4gdW5pcXVlIGlu ZGV4ZXMgKi8KIAlCaXRtYXBzZXQgICpwa2luZGV4YXR0cnM7CS8qIGNvbHVtbnMgaW4gdGhl IHByaW1hcnkgaW5kZXggKi8KIAlCaXRtYXBzZXQgICppZGluZGV4YXR0cnM7CS8qIGNvbHVt bnMgaW4gdGhlIHJlcGxpY2EgaWRlbnRpdHkgKi8KLQlCaXRtYXBzZXQgICpob3RibG9ja2lu Z2F0dHJzOwkvKiBjb2x1bW5zIHdpdGggSE9UIGJsb2NraW5nIGluZGV4ZXMgKi8KLQlCaXRt YXBzZXQgICpzdW1tYXJpemVkYXR0cnM7CS8qIGNvbHVtbnMgd2l0aCBzdW1tYXJpemluZyBp bmRleGVzICovCisJQml0bWFwc2V0ICAqaW5kZXhlZGF0dHJzOwkvKiBjb2x1bW5zIHJlZmVy ZW5jZWQgYnkgaW5kZXhlcyAqLworCUJpdG1hcHNldCAgKnN1bW1hcml6ZWRhdHRyczsJLyog Y29sdW1ucyBvbmx5IGluIHN1bW1hcml6aW5nIGluZGV4ZXMgKi8KIAlMaXN0CSAgICppbmRl eG9pZGxpc3Q7CiAJTGlzdAkgICAqbmV3aW5kZXhvaWRsaXN0OwogCU9pZAkJCXJlbHBraW5k ZXg7CkBAIC01MzM1LDggKzUzMzUsOCBAQCBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChS ZWxhdGlvbiByZWxhdGlvbiwgSW5kZXhBdHRyQml0bWFwS2luZCBhdHRyS2luZCkKIAkJCQly ZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX3BrYXR0cik7CiAJCQljYXNlIElOREVYX0FU VFJfQklUTUFQX0lERU5USVRZX0tFWToKIAkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24t PnJkX2lkYXR0cik7Ci0JCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lORzoK LQkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX2hvdGJsb2NraW5nYXR0cik7CisJ CQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQ6CisJCQkJcmV0dXJuIGJtc19jb3B5 KHJlbGF0aW9uLT5yZF9pbmRleGVkYXR0cik7CiAJCQljYXNlIElOREVYX0FUVFJfQklUTUFQ X1NVTU1BUklaRUQ6CiAJCQkJcmV0dXJuIGJtc19jb3B5KHJlbGF0aW9uLT5yZF9zdW1tYXJp emVkYXR0cik7CiAJCQlkZWZhdWx0OgpAQCAtNTM4MSw3ICs1MzgxLDcgQEAgcmVzdGFydDoK IAl1aW5kZXhhdHRycyA9IE5VTEw7CiAJcGtpbmRleGF0dHJzID0gTlVMTDsKIAlpZGluZGV4 YXR0cnMgPSBOVUxMOwotCWhvdGJsb2NraW5nYXR0cnMgPSBOVUxMOworCWluZGV4ZWRhdHRy cyA9IE5VTEw7CiAJc3VtbWFyaXplZGF0dHJzID0gTlVMTDsKIAlmb3JlYWNoKGwsIGluZGV4 b2lkbGlzdCkKIAl7CkBAIC01NDQxLDcgKzU0NDEsNyBAQCByZXN0YXJ0OgogCQlpZiAoaW5k ZXhEZXNjLT5yZF9pbmRhbS0+YW1zdW1tYXJpemluZykKIAkJCWF0dHJzID0gJnN1bW1hcml6 ZWRhdHRyczsKIAkJZWxzZQotCQkJYXR0cnMgPSAmaG90YmxvY2tpbmdhdHRyczsKKwkJCWF0 dHJzID0gJmluZGV4ZWRhdHRyczsKIAogCQkvKiBDb2xsZWN0IHNpbXBsZSBhdHRyaWJ1dGUg cmVmZXJlbmNlcyAqLwogCQlmb3IgKGkgPSAwOyBpIDwgaW5kZXhEZXNjLT5yZF9pbmRleC0+ aW5kbmF0dHM7IGkrKykKQEAgLTU0NTAsOSArNTQ1MCw5IEBAIHJlc3RhcnQ6CiAKIAkJCS8q CiAJCQkgKiBTaW5jZSB3ZSBoYXZlIGNvdmVyaW5nIGluZGV4ZXMgd2l0aCBub24ta2V5IGNv bHVtbnMsIHdlIG11c3QKLQkJCSAqIGhhbmRsZSB0aGVtIGFjY3VyYXRlbHkgaGVyZS4gbm9u LWtleSBjb2x1bW5zIG11c3QgYmUgYWRkZWQgaW50bwotCQkJICogaG90YmxvY2tpbmdhdHRy cyBvciBzdW1tYXJpemVkYXR0cnMsIHNpbmNlIHRoZXkgYXJlIGluIGluZGV4LAotCQkJICog YW5kIHVwZGF0ZSBzaG91bGRuJ3QgbWlzcyB0aGVtLgorCQkJICogaGFuZGxlIHRoZW0gYWNj dXJhdGVseSBoZXJlLiBOb24ta2V5IGNvbHVtbnMgbXVzdCBiZSBhZGRlZCBpbnRvCisJCQkg KiBpbmRleGVkYXR0cnMgb3Igc3VtbWFyaXplZGF0dHJzLCBzaW5jZSB0aGV5IGFyZSBpbiBp bmRleCwgYW5kCisJCQkgKiB1cGRhdGUgc2hvdWxkbid0IG1pc3MgdGhlbS4KIAkJCSAqCiAJ CQkgKiBTdW1tYXJpemluZyBpbmRleGVzIGRvIG5vdCBibG9jayBIT1QsIGJ1dCBkbyBuZWVk IHRvIGJlIHVwZGF0ZWQKIAkJCSAqIHdoZW4gdGhlIGNvbHVtbiB2YWx1ZSBjaGFuZ2VzLCB0 aHVzIHJlcXVpcmUgYSBzZXBhcmF0ZQpAQCAtNTUxMywxMiArNTUxMywyMCBAQCByZXN0YXJ0 OgogCQlibXNfZnJlZSh1aW5kZXhhdHRycyk7CiAJCWJtc19mcmVlKHBraW5kZXhhdHRycyk7 CiAJCWJtc19mcmVlKGlkaW5kZXhhdHRycyk7Ci0JCWJtc19mcmVlKGhvdGJsb2NraW5nYXR0 cnMpOworCQlibXNfZnJlZShpbmRleGVkYXR0cnMpOwogCQlibXNfZnJlZShzdW1tYXJpemVk YXR0cnMpOwogCiAJCWdvdG8gcmVzdGFydDsKIAl9CiAKKwkvKgorCSAqIFJlY29yZCB3aGF0 IGF0dHJpYnV0ZXMgYXJlIG9ubHkgcmVmZXJlbmNlZCBieSBzdW1tYXJpemluZyBpbmRleGVz LiBUaGVuCisJICogYWRkIHRoYXQgaW50byB0aGUgb3RoZXIgaW5kZXhlZCBhdHRyaWJ1dGVz IHRvIHRyYWNrIGFsbCByZWZlcmVuY2VkCisJICogYXR0cmlidXRlcy4KKwkgKi8KKwlzdW1t YXJpemVkYXR0cnMgPSBibXNfZGVsX21lbWJlcnMoc3VtbWFyaXplZGF0dHJzLCBpbmRleGVk YXR0cnMpOworCWluZGV4ZWRhdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbmRleGVkYXR0cnMs IHN1bW1hcml6ZWRhdHRycyk7CisKIAkvKiBEb24ndCBsZWFrIHRoZSBvbGQgdmFsdWVzIG9m IHRoZXNlIGJpdG1hcHMsIGlmIGFueSAqLwogCXJlbGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0g ZmFsc2U7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2tleWF0dHIpOwpAQCAtNTUyNyw4ICs1 NTM1LDggQEAgcmVzdGFydDoKIAlyZWxhdGlvbi0+cmRfcGthdHRyID0gTlVMTDsKIAlibXNf ZnJlZShyZWxhdGlvbi0+cmRfaWRhdHRyKTsKIAlyZWxhdGlvbi0+cmRfaWRhdHRyID0gTlVM TDsKLQlibXNfZnJlZShyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyKTsKLQlyZWxhdGlv bi0+cmRfaG90YmxvY2tpbmdhdHRyID0gTlVMTDsKKwlibXNfZnJlZShyZWxhdGlvbi0+cmRf aW5kZXhlZGF0dHIpOworCXJlbGF0aW9uLT5yZF9pbmRleGVkYXR0ciA9IE5VTEw7CiAJYm1z X2ZyZWUocmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyKTsKIAlyZWxhdGlvbi0+cmRfc3Vt bWFyaXplZGF0dHIgPSBOVUxMOwogCkBAIC01NTQzLDcgKzU1NTEsNyBAQCByZXN0YXJ0Ogog CXJlbGF0aW9uLT5yZF9rZXlhdHRyID0gYm1zX2NvcHkodWluZGV4YXR0cnMpOwogCXJlbGF0 aW9uLT5yZF9wa2F0dHIgPSBibXNfY29weShwa2luZGV4YXR0cnMpOwogCXJlbGF0aW9uLT5y ZF9pZGF0dHIgPSBibXNfY29weShpZGluZGV4YXR0cnMpOwotCXJlbGF0aW9uLT5yZF9ob3Ri bG9ja2luZ2F0dHIgPSBibXNfY29weShob3RibG9ja2luZ2F0dHJzKTsKKwlyZWxhdGlvbi0+ cmRfaW5kZXhlZGF0dHIgPSBibXNfY29weShpbmRleGVkYXR0cnMpOwogCXJlbGF0aW9uLT5y ZF9zdW1tYXJpemVkYXR0ciA9IGJtc19jb3B5KHN1bW1hcml6ZWRhdHRycyk7CiAJcmVsYXRp b24tPnJkX2F0dHJzdmFsaWQgPSB0cnVlOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj eHQpOwpAQCAtNTU1Nyw4ICs1NTY1LDggQEAgcmVzdGFydDoKIAkJCXJldHVybiBwa2luZGV4 YXR0cnM7CiAJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZOgogCQkJcmV0 dXJuIGlkaW5kZXhhdHRyczsKLQkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJ Tkc6Ci0JCQlyZXR1cm4gaG90YmxvY2tpbmdhdHRyczsKKwkJY2FzZSBJTkRFWF9BVFRSX0JJ VE1BUF9JTkRFWEVEOgorCQkJcmV0dXJuIGluZGV4ZWRhdHRyczsKIAkJY2FzZSBJTkRFWF9B VFRSX0JJVE1BUF9TVU1NQVJJWkVEOgogCQkJcmV0dXJuIHN1bW1hcml6ZWRhdHRyczsKIAkJ ZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCA1MTc2NDc4YzI5NS4uMmRiZmFkOTIx MTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTM4NSwxMSArMzg1LDEwIEBAIGV4dGVybiBU TV9SZXN1bHQgaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqdGlkLAogZXh0ZXJuIHZvaWQgaGVhcF9maW5pc2hfc3BlY3VsYXRpdmUoUmVs YXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKTsKIGV4dGVybiB2 b2lkIGhlYXBfYWJvcnRfc3BlY3VsYXRpdmUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0 ZW1Qb2ludGVyRGF0YSAqdGlkKTsKIGV4dGVybiBUTV9SZXN1bHQgaGVhcF91cGRhdGUoUmVs YXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwKLQkJCQkJCQkg SGVhcFR1cGxlIG5ld3R1cCwKLQkJCQkJCQkgQ29tbWFuZElkIGNpZCwgdWludDMyIG9wdGlv bnMsCisJCQkJCQkJIEhlYXBUdXBsZSBuZXd0dXAsIENvbW1hbmRJZCBjaWQsIHVpbnQzMiBv cHRpb25zLAogCQkJCQkJCSBTbmFwc2hvdCBjcm9zc2NoZWNrLCBib29sIHdhaXQsCi0JCQkJ CQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJ CQkJCQkgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCSBUTV9G YWlsdXJlRGF0YSAqdG1mZCwgY29uc3QgTG9ja1R1cGxlTW9kZSBsb2NrbW9kZSwKKwkJCQkJ CQkgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsIGNvbnN0IGJvb2wgaG90 X2FsbG93ZWQpOwogZXh0ZXJuIFRNX1Jlc3VsdCBoZWFwX2xvY2tfdHVwbGUoUmVsYXRpb24g cmVsYXRpb24sIEhlYXBUdXBsZSB0dXBsZSwKIAkJCQkJCQkJIENvbW1hbmRJZCBjaWQsIExv Y2tUdXBsZU1vZGUgbW9kZSwgTG9ja1dhaXRQb2xpY3kgd2FpdF9wb2xpY3ksCiAJCQkJCQkJ CSBib29sIGZvbGxvd191cGRhdGVzLApAQCAtNDY0LDYgKzQ2MywxMiBAQCBleHRlcm4gdm9p ZCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIg YnVmZmVyLAogCQkJCQkJCQkJICBPZmZzZXROdW1iZXIgKmRlYWQsIGludCBuZGVhZCwKIAkJ CQkJCQkJCSAgT2Zmc2V0TnVtYmVyICp1bnVzZWQsIGludCBudW51c2VkKTsKIAorLyogaW4g aGVhcC9oZWFwYW0uYyAqLworZXh0ZXJuIGJvb2wgSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShS ZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMs CisJCQkJCQkJCSAgIGJvb2wgKnN1bW1hcml6ZWRfb25seSk7CitleHRlcm4gTG9ja1R1cGxl TW9kZSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUoUmVsYXRpb24gcmVsYXRpb24sCisJ CQkJCQkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMpOworCiAv KiBpbiBoZWFwL3ZhY3V1bWxhenkuYyAqLwogZXh0ZXJuIHZvaWQgaGVhcF92YWN1dW1fcmVs KFJlbGF0aW9uIHJlbCwKIAkJCQkJCQljb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywgQnVm ZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4 IGYyYzM2Njk2YmNhLi5hOTc3OGIzNTI4ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNj ZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC01 ODYsNiArNTg2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAkJCQkJCQkJ IGJvb2wgd2FpdCwKIAkJCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLAogCQkJCQkJCQkg TG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCisJCQkJCQkJCSBjb25zdCBCaXRtYXBzZXQgKm1v ZGlmaWVkX2lkeF9hdHRycywKIAkJCQkJCQkJIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9p bmRleGVzKTsKIAogCS8qIHNlZSB0YWJsZV90dXBsZV9sb2NrKCkgZm9yIHJlZmVyZW5jZSBh Ym91dCBwYXJhbWV0ZXJzICovCkBAIC0xNTk5LDEyICsxNjAwLDEyIEBAIHRhYmxlX3R1cGxl X3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90 ICpzbG90LAogCQkJCSAgIENvbW1hbmRJZCBjaWQsIHVpbnQzMiBvcHRpb25zLAogCQkJCSAg IFNuYXBzaG90IHNuYXBzaG90LCBTbmFwc2hvdCBjcm9zc2NoZWNrLAogCQkJCSAgIGJvb2wg d2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAot CQkJCSAgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQorCQkJCSAgIGNvbnN0 IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLCBUVV9VcGRhdGVJbmRleGVzICp1cGRh dGVfaW5kZXhlcykKIHsKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT50dXBsZV91cGRhdGUo cmVsLCBvdGlkLCBzbG90LAogCQkJCQkJCQkJCSBjaWQsIG9wdGlvbnMsIHNuYXBzaG90LCBj cm9zc2NoZWNrLAotCQkJCQkJCQkJCSB3YWl0LCB0bWZkLAotCQkJCQkJCQkJCSBsb2NrbW9k ZSwgdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQkJCSB3YWl0LCB0bWZkLCBsb2NrbW9kZSwK KwkJCQkJCQkJCQkgbW9kaWZpZWRfaWR4X2F0dHJzLCB1cGRhdGVfaW5kZXhlcyk7CiB9CiAK IC8qCkBAIC0yMDg5LDYgKzIwOTAsNyBAQCBleHRlcm4gdm9pZCBzaW1wbGVfdGFibGVfdHVw bGVfZGVsZXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgdGlkLAogCQkJCQkJCQkJICBT bmFwc2hvdCBzbmFwc2hvdCk7CiBleHRlcm4gdm9pZCBzaW1wbGVfdGFibGVfdHVwbGVfdXBk YXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwKIAkJCQkJCQkJCSAgVHVwbGVU YWJsZVNsb3QgKnNsb3QsIFNuYXBzaG90IHNuYXBzaG90LAorCQkJCQkJCQkJICBjb25zdCBC aXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywKIAkJCQkJCQkJCSAgVFVfVXBkYXRlSW5k ZXhlcyAqdXBkYXRlX2luZGV4ZXMpOwogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmlu ZGV4IDE3OThlNjAyN2Q0Li4xNjY2MWJjNjZkOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRv ci5oCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJmbWdyLmgiCisj aW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAibm9kZXMvbG9ja29wdGlv bnMuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMv bWVtdXRpbHMuaCIKQEAgLTYxNSw2ICs2MTYsMTAgQEAgZXh0ZXJuIFR1cGxlRGVzYyBFeGVj Q2xlYW5UeXBlRnJvbVRMKExpc3QgKnRhcmdldExpc3QpOwogZXh0ZXJuIFR1cGxlRGVzYyBF eGVjVHlwZUZyb21FeHByTGlzdChMaXN0ICpleHByTGlzdCk7CiBleHRlcm4gdm9pZCBFeGVj VHlwZVNldENvbE5hbWVzKFR1cGxlRGVzYyB0eXBlSW5mbywgTGlzdCAqbmFtZXNMaXN0KTsK IGV4dGVybiB2b2lkIFVwZGF0ZUNoYW5nZWRQYXJhbVNldChQbGFuU3RhdGUgKm5vZGUsIEJp dG1hcHNldCAqbmV3Y2hnKTsKK2V4dGVybiBCaXRtYXBzZXQgKkV4ZWNDb21wYXJlU2xvdEF0 dHJzKEJpdG1hcHNldCAqYXR0cnMsCisJCQkJCQkJCQkgICBUdXBsZURlc2MgdHVwZGVzYywK KwkJCQkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpvbGRfdHRzLAorCQkJCQkJCQkJICAgVHVw bGVUYWJsZVNsb3QgKm5ld190dHMpOwogCiB0eXBlZGVmIHN0cnVjdCBUdXBPdXRwdXRTdGF0 ZQogewpAQCAtODE0LDUgKzgxOSw4IEBAIGV4dGVybiBSZXN1bHRSZWxJbmZvICpFeGVjTG9v a3VwUmVzdWx0UmVsQnlPaWQoTW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSwKIAkJCQkJCQkJCQkJ ICAgT2lkIHJlc3VsdG9pZCwKIAkJCQkJCQkJCQkJICAgYm9vbCBtaXNzaW5nX29rLAogCQkJ CQkJCQkJCQkgICBib29sIHVwZGF0ZV9jYWNoZSk7CitleHRlcm4gQml0bWFwc2V0ICpFeGVj VXBkYXRlTW9kaWZpZWRJZHhBdHRycyhSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAorCQkJCQkJ CQkJCQkgVHVwbGVUYWJsZVNsb3QgKm9sZF90dHMsCisJCQkJCQkJCQkJCSBUdXBsZVRhYmxl U2xvdCAqbmV3X3R0cyk7CiAKICNlbmRpZgkJCQkJCQkvKiBFWEVDVVRPUl9IICAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9y ZWwuaAppbmRleCA4OWMxNTliMTMzZi4uMTdkYmRiZTY0NWQgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3V0aWxzL3JlbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0x NjIsNyArMTYyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVsYXRpb25EYXRhCiAJQml0bWFwc2V0 ICAqcmRfa2V5YXR0cjsJCS8qIGNvbHMgdGhhdCBjYW4gYmUgcmVmJ2QgYnkgZm9yZWlnbiBr ZXlzICovCiAJQml0bWFwc2V0ICAqcmRfcGthdHRyOwkJLyogY29scyBpbmNsdWRlZCBpbiBw cmltYXJ5IGtleSAqLwogCUJpdG1hcHNldCAgKnJkX2lkYXR0cjsJCS8qIGluY2x1ZGVkIGlu IHJlcGxpY2EgaWRlbnRpdHkgaW5kZXggKi8KLQlCaXRtYXBzZXQgICpyZF9ob3RibG9ja2lu Z2F0dHI7IC8qIGNvbHMgYmxvY2tpbmcgSE9UIHVwZGF0ZSAqLworCUJpdG1hcHNldCAgKnJk X2luZGV4ZWRhdHRyOyAvKiBhbGwgY29scyByZWZlcmVuY2VkIGJ5IGluZGV4ZXMgKi8KIAlC aXRtYXBzZXQgICpyZF9zdW1tYXJpemVkYXR0cjsJLyogY29scyBpbmRleGVkIGJ5IHN1bW1h cml6aW5nIGluZGV4ZXMgKi8KIAogCVB1YmxpY2F0aW9uRGVzYyAqcmRfcHViZGVzYzsJLyog cHVibGljYXRpb24gZGVzY3JpcHRvciwgb3IgTlVMTCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvdXRpbHMvcmVsY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgK aW5kZXggODljMjdhYTE1MjkuLjg5Nzg4MDkxNTc2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9yZWxjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgK QEAgLTcwLDcgKzcwLDcgQEAgdHlwZWRlZiBlbnVtIEluZGV4QXR0ckJpdG1hcEtpbmQKIAlJ TkRFWF9BVFRSX0JJVE1BUF9LRVksCiAJSU5ERVhfQVRUUl9CSVRNQVBfUFJJTUFSWV9LRVks CiAJSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZLAotCUlOREVYX0FUVFJfQklUTUFQ X0hPVF9CTE9DS0lORywKKwlJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVELAogCUlOREVYX0FU VFJfQklUTUFQX1NVTU1BUklaRUQsCiB9IEluZGV4QXR0ckJpdG1hcEtpbmQ7CiAKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9zeXNj YWNoZS11cGRhdGUtcHJ1bmVkLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9leHBlY3RlZC9zeXNjYWNoZS11cGRhdGUtcHJ1bmVkLm91dAppbmRleCBhNmE0ZThk Yjk5Ni4uMDdlZjY3YTFlYjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9leHBlY3RlZC9zeXNjYWNoZS11cGRhdGUtcHJ1bmVkLm91dAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvc3lzY2FjaGUtdXBk YXRlLXBydW5lZC5vdXQKQEAgLTE2LDggKzE2LDggQEAgc3RlcCB3YWtlaW52YWw0Ogogc3Rl cCBhdDI6IDwuLi4gY29tcGxldGVkPgogc3RlcCB3YWtlaW52YWw0OiA8Li4uIGNvbXBsZXRl ZD4KIHN0ZXAgd2FrZWdyYW50NDogCi0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19k ZXRhY2goJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKLQlTRUxFQ1QgRlJPTSBpbmplY3Rp b25fcG9pbnRzX3dha2V1cCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOworCVNFTEVDVCBG Uk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3Jl LXBpbicpOworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdzaW1wbGVf aGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOwogIDx3YWl0aW5nIC4uLj4KIHN0ZXAgZ3JhbnQx OiA8Li4uIGNvbXBsZXRlZD4KIEVSUk9SOiAgdHVwbGUgY29uY3VycmVudGx5IGRlbGV0ZWQK QEAgLTQyLDggKzQyLDggQEAgc3RlcCBta3JlbHM0OgogCVNFTEVDVCBGUk9NIHZhY3Rlc3Qu bWtyZWxzKCdpbnRydWRlcicsIDEsIDEwMCk7ICAtLSByZXBvcHVsYXRlIExQX1VOVVNFRAog CiBzdGVwIHdha2VncmFudDQ6IAotCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfZGV0 YWNoKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7Ci0JU0VMRUNUIEZST00gaW5qZWN0aW9u X3BvaW50c193YWtldXAoJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJP TSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1w aW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnc2ltcGxlX2hl YXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKICA8d2FpdGluZyAuLi4+CiBzdGVwIGdyYW50MTog PC4uLiBjb21wbGV0ZWQ+CiBFUlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMg dW5pcXVlIGNvbnN0cmFpbnQgInBnX2NsYXNzX29pZF9pbmRleCIKQEAgLTcxLDggKzcxLDgg QEAgc3RlcCBhdDI6IDwuLi4gY29tcGxldGVkPgogc3RlcCB3YWtlaW52YWw0OiA8Li4uIGNv bXBsZXRlZD4KIHN0ZXAgYXQ0OiBBTFRFUiBUQUJMRSB2YWN0ZXN0LmNoaWxkNTAgSU5IRVJJ VCB2YWN0ZXN0Lm9yaWc1MDsKIHN0ZXAgd2FrZWdyYW50NDogCi0JU0VMRUNUIEZST00gaW5q ZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKLQlTRUxF Q1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaGVhcF91cGRhdGUtYmVmb3JlLXBp bicpOworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdzaW1wbGVfaGVh cF91cGRhdGUtYmVmb3JlLXBpbicpOworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNf d2FrZXVwKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOwogIDx3YWl0aW5nIC4u Lj4KIHN0ZXAgZ3JhbnQxOiA8Li4uIGNvbXBsZXRlZD4KIHN0ZXAgd2FrZWdyYW50NDogPC4u LiBjb21wbGV0ZWQ+CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvc3BlY3Mvc3lzY2FjaGUtdXBkYXRlLXBydW5lZC5zcGVjIGIvc3JjL3Rlc3QvbW9k dWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3N5c2NhY2hlLXVwZGF0ZS1wcnVuZWQuc3Bl YwppbmRleCBlM2E0Mjk1YmQxMi4uZmVmOWFjODk1YTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVjcy9zeXNjYWNoZS11cGRhdGUtcHJ1bmVk LnNwZWMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3N5 c2NhY2hlLXVwZGF0ZS1wcnVuZWQuc3BlYwpAQCAtMTAzLDcgKzEwMyw3IEBAIHNlc3Npb24g czEKIHNldHVwCXsKIAlTRVQgZGVidWdfZGlzY2FyZF9jYWNoZXMgPSAwOwogCVNFTEVDVCBG Uk9NIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7Ci0JU0VMRUNUIEZST00gaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nLCAnd2FpdCcpOwor CVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdzaW1wbGVfaGVhcF91cGRh dGUtYmVmb3JlLXBpbicsICd3YWl0Jyk7CiB9CiBzdGVwIGNhY2hlZmlsbDEJeyBTRUxFQ1Qg RlJPTSB2YWN0ZXN0LnJlbG9pZF9jYXRjYWNoZV9zZXQoJ3ZhY3Rlc3Qub3JpZzUwJyk7IH0K IHN0ZXAgZ3JhbnQxCXsgR1JBTlQgU0VMRUNUIE9OIHZhY3Rlc3Qub3JpZzUwIFRPIFBVQkxJ QzsgfQpAQCAtMTQwLDggKzE0MCw4IEBAIHN0ZXAgbWtyZWxzNAl7CiAJU0VMRUNUIEZST00g dmFjdGVzdC5ta3JlbHMoJ2ludHJ1ZGVyJywgMSwgMTAwKTsgIC0tIHJlcG9wdWxhdGUgTFBf VU5VU0VECiB9CiBzdGVwIHdha2VncmFudDQJewotCVNFTEVDVCBGUk9NIGluamVjdGlvbl9w b2ludHNfZGV0YWNoKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7Ci0JU0VMRUNUIEZST00g aW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKKwlT RUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnc2ltcGxlX2hlYXBfdXBkYXRl LWJlZm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgn c2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKIH0KIHN0ZXAgYXQ0CXsgQUxURVIg VEFCTEUgdmFjdGVzdC5jaGlsZDUwIElOSEVSSVQgdmFjdGVzdC5vcmlnNTA7IH0KIHN0ZXAg d2FrZWludmFsNAl7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dl bmVyYXRlZF92aXJ0dWFsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJh dGVkX3ZpcnR1YWwub3V0CmluZGV4IDZlZTAyOTc5NmYxLi5iZGM5ZTk3MjdhNCAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQK QEAgLTI4Nyw3ICsyODcsNyBAQCBERVRBSUw6ICBDb2x1bW4gImIiIGlzIGEgZ2VuZXJhdGVk IGNvbHVtbi4KIElOU0VSVCBJTlRPIGd0ZXN0MXYgVkFMVUVTICg4LCBERUZBVUxUKSwgKDks IERFRkFVTFQpOyAgLS0gZXJyb3IKIEVSUk9SOiAgY2Fubm90IGluc2VydCBhIG5vbi1ERUZB VUxUIHZhbHVlIGludG8gY29sdW1uICJiIgogREVUQUlMOiAgQ29sdW1uICJiIiBpcyBhIGdl bmVyYXRlZCBjb2x1bW4uCi1TRUxFQ1QgKiBGUk9NIGd0ZXN0MXY7CitTRUxFQ1QgKiBGUk9N IGd0ZXN0MXYgT1JERVIgQlkgYTsKICBhIHwgYiAgCiAtLS0rLS0tLQogIDMgfCAgNgpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cmlnZ2Vycy5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyaWdnZXJzLm91dAppbmRleCA4ZmNiMzNhYzgxYS4u MDBlYmUzMDU4NzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJp Z2dlcnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0 CkBAIC05NTksMTYgKzk1OSwyNCBAQCBOT1RJQ0U6ICBtYWluX3ZpZXcgQkVGT1JFIFVQREFU RSBTVEFURU1FTlQgKGJlZm9yZV92aWV3X3VwZF9zdG10KQogTk9USUNFOiAgbWFpbl92aWV3 IEFGVEVSIFVQREFURSBTVEFURU1FTlQgKGFmdGVyX3ZpZXdfdXBkX3N0bXQpCiBVUERBVEUg MAogLS0gRGVsZXRlIGZyb20gdmlldyB1c2luZyB0cmlnZ2VyCi1ERUxFVEUgRlJPTSBtYWlu X3ZpZXcgV0hFUkUgYSBJTiAoMjAsMjEpOworREVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJF IGEgPSAyMCBBTkQgYiA9IDMxOwogTk9USUNFOiAgbWFpbl92aWV3IEJFRk9SRSBERUxFVEUg U1RBVEVNRU5UIChiZWZvcmVfdmlld19kZWxfc3RtdCkKIE5PVElDRTogIG1haW5fdmlldyBJ TlNURUFEIE9GIERFTEVURSBST1cgKGluc3RlYWRfb2ZfZGVsKQotTk9USUNFOiAgT0xEOiAo MjEsMTApCi1OT1RJQ0U6ICBtYWluX3ZpZXcgSU5TVEVBRCBPRiBERUxFVEUgUk9XIChpbnN0 ZWFkX29mX2RlbCkKIE5PVElDRTogIE9MRDogKDIwLDMxKQorTk9USUNFOiAgbWFpbl92aWV3 IEFGVEVSIERFTEVURSBTVEFURU1FTlQgKGFmdGVyX3ZpZXdfZGVsX3N0bXQpCitERUxFVEUg MQorREVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJFIGEgPSAyMSBBTkQgYiA9IDEwOworTk9U SUNFOiAgbWFpbl92aWV3IEJFRk9SRSBERUxFVEUgU1RBVEVNRU5UIChiZWZvcmVfdmlld19k ZWxfc3RtdCkKK05PVElDRTogIG1haW5fdmlldyBJTlNURUFEIE9GIERFTEVURSBST1cgKGlu c3RlYWRfb2ZfZGVsKQorTk9USUNFOiAgT0xEOiAoMjEsMTApCitOT1RJQ0U6ICBtYWluX3Zp ZXcgQUZURVIgREVMRVRFIFNUQVRFTUVOVCAoYWZ0ZXJfdmlld19kZWxfc3RtdCkKK0RFTEVU RSAxCitERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSA9IDIxIEFORCBiID0gMzI7CitO T1RJQ0U6ICBtYWluX3ZpZXcgQkVGT1JFIERFTEVURSBTVEFURU1FTlQgKGJlZm9yZV92aWV3 X2RlbF9zdG10KQogTk9USUNFOiAgbWFpbl92aWV3IElOU1RFQUQgT0YgREVMRVRFIFJPVyAo aW5zdGVhZF9vZl9kZWwpCiBOT1RJQ0U6ICBPTEQ6ICgyMSwzMikKIE5PVElDRTogIG1haW5f dmlldyBBRlRFUiBERUxFVEUgU1RBVEVNRU5UIChhZnRlcl92aWV3X2RlbF9zdG10KQotREVM RVRFIDMKK0RFTEVURSAxCiBERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSA9IDMxIFJF VFVSTklORyBhLCBiOwogTk9USUNFOiAgbWFpbl92aWV3IEJFRk9SRSBERUxFVEUgU1RBVEVN RU5UIChiZWZvcmVfdmlld19kZWxfc3RtdCkKIE5PVElDRTogIG1haW5fdmlldyBJTlNURUFE IE9GIERFTEVURSBST1cgKGluc3RlYWRfb2ZfZGVsKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC90c2VhcmNoLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvdHNlYXJjaC5vdXQKaW5kZXggNWI3YzIxMjNmMzcuLjZkYzE5M2YwMmQ2IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RzZWFyY2gub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHNlYXJjaC5vdXQKQEAgLTI0OTMsNyArMjQ5Myw4IEBA IFNFTEVDVCB0b190c3F1ZXJ5KCdTS0lFUyAmIE15IHwgYm9vS3MnKTsKICAnc2t5JyB8ICdi b29rJwogKDEgcm93KQogCi0tLXRyaWdnZXIKKy0tIHRzdmVjdG9yX3VwZGF0ZV90cmlnZ2Vy KCkgdXNlcyBoZWFwX21vZGlmeV90dXBsZSgpIHRvIHNldCBjb2x1bW4gJ2EnCistLSB3aXRo b3V0IGdvaW5nIHRocm91Z2ggdGhlIGV4ZWN1dG9yJ3MgU0VULWNsYXVzZSB0cmFja2luZy4K IENSRUFURSBUUklHR0VSIHRzdmVjdG9ydXBkYXRlCiBCRUZPUkUgVVBEQVRFIE9SIElOU0VS VCBPTiB0ZXN0X3RzdmVjdG9yCiBGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHN2 ZWN0b3JfdXBkYXRlX3RyaWdnZXIoYSwgJ3BnX2NhdGFsb2cuZW5nbGlzaCcsIHQpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0CmluZGV4 IDljNmJiMjIxOWY5Li4xOGYyNTkxYzA2OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dApAQCAtMzcyLDE1ICszNzIsMTUgQEAgSU5T RVJUIElOVE8gcndfdmlldzE2IChhLCBiKSBWQUxVRVMgKDMsICdSb3cgMycpOyAtLSBzaG91 bGQgYmUgT0sKIFVQREFURSByd192aWV3MTYgU0VUIGE9MywgYWE9LTMgV0hFUkUgYT0zOyAt LSBzaG91bGQgZmFpbAogRVJST1I6ICBtdWx0aXBsZSBhc3NpZ25tZW50cyB0byBzYW1lIGNv bHVtbiAiYSIKIFVQREFURSByd192aWV3MTYgU0VUIGFhPS0zIFdIRVJFIGE9MzsgLS0gc2hv dWxkIGJlIE9LCi1TRUxFQ1QgKiBGUk9NIGJhc2VfdGJsOworU0VMRUNUICogRlJPTSBiYXNl X3RibCBPUkRFUiBCWSBhOwogIGEgIHwgICBiICAgIAogLS0tLSstLS0tLS0tLQorIC0zIHwg Um93IDMKICAtMiB8IFJvdyAtMgogIC0xIHwgUm93IC0xCiAgIDAgfCBSb3cgMAogICAxIHwg Um93IDEKICAgMiB8IFJvdyAyCi0gLTMgfCBSb3cgMwogKDYgcm93cykKIAogREVMRVRFIEZS T00gcndfdmlldzE2IFdIRVJFIGE9LTM7IC0tIHNob3VsZCBiZSBPSwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3ZpcnR1YWwuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvZ2VuZXJhdGVkX3ZpcnR1YWwuc3FsCmluZGV4IGVkOWQ1MGZlNzg0Li5m ZTYzOTI4ZjEwNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVk X3ZpcnR1YWwuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0 dWFsLnNxbApAQCAtMTI3LDcgKzEyNyw3IEBAIEFMVEVSIFZJRVcgZ3Rlc3QxdiBBTFRFUiBD T0xVTU4gYiBTRVQgREVGQVVMVCAxMDA7CiBJTlNFUlQgSU5UTyBndGVzdDF2IFZBTFVFUyAo OCwgREVGQVVMVCk7ICAtLSBlcnJvcgogSU5TRVJUIElOVE8gZ3Rlc3QxdiBWQUxVRVMgKDgs IERFRkFVTFQpLCAoOSwgREVGQVVMVCk7ICAtLSBlcnJvcgogCi1TRUxFQ1QgKiBGUk9NIGd0 ZXN0MXY7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MXYgT1JERVIgQlkgYTsKIERFTEVURSBGUk9N IGd0ZXN0MXYgV0hFUkUgYSA+PSA1OwogRFJPUCBWSUVXIGd0ZXN0MXY7CiAKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdnZXJzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3RyaWdnZXJzLnNxbAppbmRleCAyMjg1ZTkwMTEwZS4uMTljMjU3MjIwMWYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdnZXJzLnNxbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC90cmlnZ2Vycy5zcWwKQEAgLTY2MCw3ICs2NjAsOSBAQCBVUERB VEUgbWFpbl92aWV3IFNFVCBiID0gMzIgV0hFUkUgYSA9IDIxIEFORCBiID0gMzEgUkVUVVJO SU5HIGEsIGI7CiBVUERBVEUgbWFpbl92aWV3IFNFVCBiID0gMCBXSEVSRSBmYWxzZTsKIAog LS0gRGVsZXRlIGZyb20gdmlldyB1c2luZyB0cmlnZ2VyCi1ERUxFVEUgRlJPTSBtYWluX3Zp ZXcgV0hFUkUgYSBJTiAoMjAsMjEpOworREVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJFIGEg PSAyMCBBTkQgYiA9IDMxOworREVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJFIGEgPSAyMSBB TkQgYiA9IDEwOworREVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJFIGEgPSAyMSBBTkQgYiA9 IDMyOwogREVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJFIGEgPSAzMSBSRVRVUk5JTkcgYSwg YjsKIAogXHNldCBRVUlFVCB0cnVlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC90c2VhcmNoLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RzZWFyY2guc3FsCmluZGV4 IDhiM2Q3MDBmNTdjLi4wOTQxODFlNzc2NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvdHNlYXJjaC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHNlYXJjaC5z cWwKQEAgLTc2MCw3ICs3NjAsOCBAQCBTRUxFQ1QgdG9fdHN2ZWN0b3IoJ1NLSUVTIE15IGJv b0tzJyk7CiBTRUxFQ1QgcGxhaW50b190c3F1ZXJ5KCdTS0lFUyBNeSBib29LcycpOwogU0VM RUNUIHRvX3RzcXVlcnkoJ1NLSUVTICYgTXkgfCBib29LcycpOwogCi0tLXRyaWdnZXIKKy0t IHRzdmVjdG9yX3VwZGF0ZV90cmlnZ2VyKCkgdXNlcyBoZWFwX21vZGlmeV90dXBsZSgpIHRv IHNldCBjb2x1bW4gJ2EnCistLSB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIGV4ZWN1dG9y J3MgU0VULWNsYXVzZSB0cmFja2luZy4KIENSRUFURSBUUklHR0VSIHRzdmVjdG9ydXBkYXRl CiBCRUZPUkUgVVBEQVRFIE9SIElOU0VSVCBPTiB0ZXN0X3RzdmVjdG9yCiBGT1IgRUFDSCBS T1cgRVhFQ1VURSBQUk9DRURVUkUgdHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXIoYSwgJ3BnX2Nh dGFsb2cuZW5nbGlzaCcsIHQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv dXBkYXRhYmxlX3ZpZXdzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92 aWV3cy5zcWwKaW5kZXggMmVmOWFhMzJmMzYuLjYxMDhjZDEwYjllIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwKQEAgLTEyNSw3ICsxMjUsNyBAQCBJ TlNFUlQgSU5UTyByd192aWV3MTYgVkFMVUVTICgzLCAnUm93IDMnLCAzKTsgLS0gc2hvdWxk IGZhaWwKIElOU0VSVCBJTlRPIHJ3X3ZpZXcxNiAoYSwgYikgVkFMVUVTICgzLCAnUm93IDMn KTsgLS0gc2hvdWxkIGJlIE9LCiBVUERBVEUgcndfdmlldzE2IFNFVCBhPTMsIGFhPS0zIFdI RVJFIGE9MzsgLS0gc2hvdWxkIGZhaWwKIFVQREFURSByd192aWV3MTYgU0VUIGFhPS0zIFdI RVJFIGE9MzsgLS0gc2hvdWxkIGJlIE9LCi1TRUxFQ1QgKiBGUk9NIGJhc2VfdGJsOworU0VM RUNUICogRlJPTSBiYXNlX3RibCBPUkRFUiBCWSBhOwogREVMRVRFIEZST00gcndfdmlldzE2 IFdIRVJFIGE9LTM7IC0tIHNob3VsZCBiZSBPSwogLS0gUmVhZC1vbmx5IHZpZXdzCiBJTlNF UlQgSU5UTyByb192aWV3MTcgVkFMVUVTICgzLCAnUk9XIDMnKTsKLS0gCjIuNTAuMQoK --ffc971266f692fe98c1088dac35356ed85e7d5db Content-Disposition: attachment; filename*0="v63-0003-Add-the-HOT-indexed-on-disk-format-inline-attr-b.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v63-0003-Add-the-HOT-indexed-on-disk-format-inline-attr-b.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA1ZWUwOTcyOGFkMjdkZjUwNmIyM2I2NThmYjY1NGYwOWE5NzQxZjcxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAxNzoxNDo0NCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjYzIDAz LzEwXSBBZGQgdGhlIEhPVC1pbmRleGVkIG9uLWRpc2sgZm9ybWF0OiBpbmxpbmUgYXR0cgog Yml0bWFwIGFuZCBzdHVicwoKRGVmaW5lIHRoZSBvbi1kaXNrIHJlcHJlc2VudGF0aW9uIGEg SE9ULWluZGV4ZWQgdXBkYXRlIGFuZCBpdHMgbGF0ZXIKcHJ1bmUvY29sbGFwc2UgcHJvZHVj ZSwgYWhlYWQgb2YgdGhlIGNvZGUgdGhhdCByZWFkcyBvciB3cml0ZXMgaXQ6CgotIEhFQVBf SU5ERVhFRF9VUERBVEVEIChodHVwX2RldGFpbHMuaCksIHRoZSB0X2luZm9tYXNrMiBiaXQg bWFya2luZyBhCiAgaGVhcC1vbmx5IHR1cGxlIHdob3NlIHByb2R1Y2luZyBVUERBVEUgYWxz byBjaGFuZ2VkIGFuIGluZGV4ZWQgY29sdW1uOyBhbmQKLSBhY2Nlc3MvaG90X2luZGV4ZWQu aCwgdGhlIGlubGluZSBmaXhlZC1zaXplIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBzdG9yZWQg aW4KICB0aGUgdGFpbCBvZiBzdWNoIGEgdHVwbGUsIHBsdXMgdGhlIHhpZC1mcmVlICJjb2xs YXBzZS1zdXJ2aXZvciBzdHViIiBmb3JtYXQKICAoSEVBUF9JTkRFWEVEX1VQREFURUQgd2l0 aCBuYXR0cyA9PSAwLCBhIGZvcndhcmQgbGluaywgYW5kIHRoZSBzZWdtZW50J3MKICBiaXRt YXApIGFuZCB0aGUgYWNjZXNzb3JzIGJvdGggc2hhcmUuCgpSRUFETUUuSE9ULUlOREVYRUQg aW50cm9kdWNlcyB0aGUgZGVzaWduIGFuZCB0aGUgcmVsYXhlZCBjbGFzc2ljLUhPVAppbnZh cmlhbnQ7IGxhdGVyIGNvbW1pdHMgZG9jdW1lbnQgdGhlIGVsaWdpYmlsaXR5LCB3cml0ZSwg cmVhZCwgYW5kCnBydW5lL2NvbGxhcHNlIG1hY2hpbmVyeSBpbiB0aGVpciBvd24gc2VjdGlv bnMuCgpDby1hdXRob3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+CkNvLWF1dGhv cmVkLWJ5OiBOYXRoYW4gQm9zc2FydCA8bmF0aGFuZGJvc3NhcnRAZ21haWwuY29tPgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCB8IDUzMiArKysr KysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9ob3RfaW5kZXhlZC5oICAg ICAgICAgICB8IDIwMiArKysrKysrKwogc3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBfZGV0YWls cy5oICAgICAgICAgIHwgICA4ICstCiAzIGZpbGVzIGNoYW5nZWQsIDc0MSBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVECiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2lu Y2x1ZGUvYWNjZXNzL2hvdF9pbmRleGVkLmgKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9SRUFETUUuSE9ULUlOREVYRUQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjUxY2FhY2M2MmYxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVECkBAIC0wLDAgKzEsNTMyIEBACitIT1QtaW5k ZXhlZCB1cGRhdGVzIChTZWxlY3RpdmUgSW5kZXggVXBkYXRlLCAiSE9UL1NJVSIpCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK K0NsYXNzaWMgSE9UIChzZWUgUkVBRE1FLkhPVCkga2VlcHMgYW4gVVBEQVRFIG9mZiB0aGUg aW5kZXhlcyBvbmx5IHdoZW4gbm8KK2luZGV4ZWQgY29sdW1uIGNoYW5nZWQ6IHRoZSBuZXcg dHVwbGUgaXMgYSBoZWFwLW9ubHkgdHVwbGUgYXBwZW5kZWQgdG8gdGhlCitjaGFpbiwgYW5k IGV2ZXJ5IGluZGV4IGVudHJ5IGNvbnRpbnVlcyB0byByZXNvbHZlLCB2aWEgdGhlIHNhbWUt cGFnZSB0X2N0aWQKK2NoYWluLCB0byBhIHR1cGxlIHdob3NlIGluZGV4ZWQgdmFsdWVzIHN0 aWxsIGVxdWFsIHRoZSBlbnRyeSdzIGtleS4KKworSE9ULWluZGV4ZWQgKFNlbGVjdGl2ZSBJ bmRleCBVcGRhdGUsIFNJVSkgcmVsYXhlcyB0aGF0IHRvOiBhbiBVUERBVEUgbWF5CitjaGFu Z2UgaW5kZXhlZCBjb2x1bW5zIGFuZCBzdGlsbCBiZSBhIGhlYXAtb25seSB0dXBsZSBvbiB0 aGUgc2FtZSBwYWdlLAorcHJvdmlkZWQgbmV3IGluZGV4IGVudHJpZXMgYXJlIGluc2VydGVk IG9ubHkgaW50byB0aGUgaW5kZXhlcyB3aG9zZSBrZXkKK2F0dHJpYnV0ZXMgYWN0dWFsbHkg Y2hhbmdlZC4gIFRoZSBpbmRleGVzIHdob3NlIGF0dHJpYnV0ZXMgZGlkIG5vdCBjaGFuZ2Ug YXJlCitsZWZ0IHVudG91Y2hlZCwgd2hpY2ggaXMgd2hlcmUgdGhlIHdyaXRlLWFtcGxpZmlj YXRpb24gc2F2aW5nIGNvbWVzIGZyb20uCisKK1RoZSBwcmljZSBpcyB0aGF0IGEgY2hhaW4g bWF5IG5vdyBjb250YWluIHR1cGxlcyB3aXRoIGRpZmZlcmVudCBpbmRleCBrZXlzLCBzbwor YW4gaW5kZXggZW50cnkgZm9yIGFuIG9sZCBrZXkgY2FuIGNoYWluLXJlc29sdmUgdG8gYSBs aXZlIHR1cGxlIHdob3NlIGN1cnJlbnQKK2tleSBkaWZmZXJzLiAgU3VjaCBhbiBlbnRyeSBp cyBTVEFMRS4gIFRoZSByZWFkIHNpZGUgZGV0ZWN0cyBhbmQgZHJvcHMgc3RhbGUKK2VudHJp ZXMgYnkgdGVzdGluZyB0aGUgaGVhcCdzIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBhZ2Fp bnN0IHRoZSBpbmRleCdzCitrZXkgY29sdW1ucy4KKworVGhpcyBmaWxlIGRvY3VtZW50cyB0 aGUgZWxpZ2liaWxpdHkgcnVsZXMsIHRoZSB3cml0ZSBwYXRoLCB0aGUgb24tY2hhaW4KK3Jl cHJlc2VudGF0aW9uLCB0aGUgcmVhZC1zaWRlIHN0YWxlbmVzcyB0ZXN0LCBwcnVuZS9jb2xs YXBzZSwgdmFjdXVtIHJlY2xhbWF0aW9uLAorcmVjb3ZlcnksIHRoZSBsb2dpY2FsLXJlcGxp Y2F0aW9uIGFwcGx5IGdhdGluZywgYW5kIHRoZSBzdGF0aXN0aWNzLgorCisKK1RoZSBjbGFz c2ljLUhPVCBpbnZhcmlhbnQgd2UgYXJlIHJlbGF4aW5nCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2xhc3NpYyBIT1QgcmVsaWVzIG9uIHR3byBw cm9wZXJ0aWVzOgorCisgIChhKSBldmVyeSBsaXZlIGluZGV4IGVudHJ5IHJlc29sdmVzLCB2 aWEgYSBzYW1lLXBhZ2UgdF9jdGlkIGNoYWluLCB0byB0aGUKKyAgICAgIGNoYWluJ3Mgcm9v dCBsaW5lIHBvaW50ZXI7IGFuZAorCisgIChiKSB0aGUgaW5kZXhlZCB2YWx1ZXMgb2YgZXZl cnkgdHVwbGUgb24gdGhlIGNoYWluIGVxdWFsIHRoZSBrZXkgb2YgZXZlcnkKKyAgICAgIGlu ZGV4IGVudHJ5IHRoYXQgcmVhY2hlcyBpdC4KKworSE9ULWluZGV4ZWQga2VlcHMgKGEpIGJ1 dCBicmVha3MgKGIpOiBhZnRlciBhIEhPVC1pbmRleGVkIHVwZGF0ZSB0aGUgY2hhaW4KK2hv bGRzIHR1cGxlcyB3aXRoIGRpZmZlcmVudCBrZXlzLCBhbmQgYSBuZXcgaW5kZXggZW50cnkg aXMgcGxhbnRlZCB0aGF0IHBvaW50cworYXQgdGhlICpzcGVjaWZpYyogaGVhcC1vbmx5IHR1 cGxlIHdob3NlIGtleSBpdCBtYXRjaGVzIC0tIG5vdCBuZWNlc3NhcmlseSB0aGUKK3Jvb3Qu CisKKworVGhlIEhPVC1pbmRleGVkIGludmFyaWFudCAodGhlIG5ldyBjb250cmFjdCkKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgQW4gaW5k ZXggZW50cnkgcG9pbnRzIGF0IHRoZSBoZWFwLW9ubHkgdHVwbGUgdmVyc2lvbiB3aG9zZSBp bmRleGVkIGtleSBpdAorICBtYXRjaGVkIGF0IGluc2VydGlvbiB0aW1lLiAgQSBjaGFpbiB3 YWxrIHRoYXQgcmVhY2hlcyBhIGxpdmUgdHVwbGUgYnkKKyAgY3Jvc3NpbmcgYSBIT1QtaW5k ZXhlZCBob3AgKmFmdGVyKiB0aGUgZW50cnkncyBvd24gdGFyZ2V0IG1heSBiZSBzdGFsZTog aWYKKyAgdGhlIHVuaW9uIG9mIHRob3NlIGNyb3NzZWQgaG9wcycgbW9kaWZpZWQgYXR0cmli dXRlcyBvdmVybGFwcyB0aGUgaW5kZXgncworICBrZXkgY29sdW1ucywgdGhlIGVudHJ5IGlz IHN0YWxlIGFuZCB0aGUgdHVwbGUgaXMgZHJvcHBlZCBmcm9tIHRoYXQgc2Nhbi4KKyAgVGhl IHJvdyBpcworICByZS1zdXBwbGllZCBieSB0aGUgZnJlc2ggZW50cnkgdGhhdCB0aGUgc2Ft ZSB1cGRhdGUgaW5zZXJ0ZWQgZm9yIHRoZSBuZXcKKyAga2V5LgorCitUaGlzIGlzIHdoYXQg bWFrZXMgZHJvcHBpbmcgYSBzdGFsZSBlbnRyeSBzYWZlOiB0aGUgbGl2ZSByb3cgaXMgYWx3 YXlzCityZWFjaGFibGUgdGhyb3VnaCBleGFjdGx5IG9uZSBub24tc3RhbGUgZW50cnkgcGVy IGluZGV4LgorCisKK0VsaWdpYmlsaXR5OiBIZWFwVXBkYXRlSG90QWxsb3dhYmxlCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZXhlY3V0b3IgY29tcHV0 ZXMgbW9kaWZpZWRfaWR4X2F0dHJzICh0aGUgaW5kZXhlZCBhdHRyaWJ1dGVzIHRoaXMgVVBE QVRFCitjaGFuZ2VkLCBhdHRyaWJ1dGUgbnVtYmVycyBvZmZzZXQgYnkgRmlyc3RMb3dJbnZh bGlkSGVhcEF0dHJpYnV0ZU51bWJlcikgYW5kCitwYXNzZXMgaXQgdG8gaGVhcF91cGRhdGUg dmlhIHRhYmxlX3R1cGxlX3VwZGF0ZS4gIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUKK2NsYXNz aWZpZXMgdGhlIHVwZGF0ZToKKworICBIRUFQX1VQREFURV9BTExfSU5ERVhFUworICAgICAg ICBIT1QgaXMgbm90IHBlcm1pdHRlZDsgdGhlIG5ldyB0dXBsZSBnb2VzIG9uIGEgZnJlc2gg VElEIGFuZCBldmVyeQorICAgICAgICBpbmRleCBnZXRzIGEgbmV3IGVudHJ5LgorICBIRUFQ X0hFQVBfT05MWV9VUERBVEUKKyAgICAgICAgbm8gbm9uLXN1bW1hcml6aW5nIGluZGV4ZWQg YXR0cmlidXRlIGNoYW5nZWQsIHNvIG5vIGluZGV4IG5lZWRzIGEKKyAgICAgICAgbmV3IGVu dHJ5IChjbGFzc2ljIEhPVCkuCisgIEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURQorICAg ICAgICBhdCBsZWFzdCBvbmUgbm9uLXN1bW1hcml6aW5nIGluZGV4J3MgYXR0cmlidXRlIGNo YW5nZWQsIGJ1dCB0aGUKKyAgICAgICAgdXBkYXRlIG1heSBzdGF5IG9uIHRoZSBIT1QgY2hh aW4gYW5kIG1haW50YWluIG9ubHkgdGhlIGNoYW5nZWQKKyAgICAgICAgaW5kZXhlcyBzZWxl Y3RpdmVseS4KKworQSBub24tc3VtbWFyaXppbmcgaW5kZXhlZCBhdHRyaWJ1dGUgY2hhbmdp bmcgeWllbGRzIEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURQordW5sZXNzIG9uZSBvZiB0 aGVzZSBmb3JjZXMgSEVBUF9VUERBVEVfQUxMX0lOREVYRVM6CisKKyAgMS4gVGhlIGxvZ2lj YWwtcmVwbGljYXRpb24gYXBwbHkgcGF0aCwgZ2F0ZWQgcGVyIHN1YnNjcmlwdGlvbiAoc2Vl ICJMb2dpY2FsCisgICAgIHJlcGxpY2F0aW9uIiBiZWxvdykuCisgIDIuIEFuIFVQREFURSB0 b3VjaGluZyBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlZCBieSBhbiBleHByZXNzaW9uIGluZGV4 CisgICAgIChzZWxlY3RpdmUgbWFpbnRlbmFuY2Ugb2YgZXhwcmVzc2lvbiBpbmRleGVzIGlz IG5vdCBpbXBsZW1lbnRlZCB5ZXQpLgorICAzLiBBbiBVUERBVEUgdGhhdCBjaGFuZ2VzICpl dmVyeSogaW5kZXhlZCBhdHRyaWJ1dGU6IHRoZXJlIGlzIG5vIGluZGV4IHRvCisgICAgIHNr aXAsIHNvIGEgcGxhaW4gbm9uLUhPVCB1cGRhdGUgaXMgY2hlYXBlci4KKworU3lzdGVtIGNh dGFsb2dzIHN0YXkgY2xhc3NpYy1IT1Qgb25seTogYSBjYXRhbG9nIFVQREFURSB0aGF0IGNo YW5nZXMgYQorbm9uLXN1bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlIGZhbGxzIGJhY2sg dG8gSEVBUF9VUERBVEVfQUxMX0lOREVYRVMsIGJlY2F1c2UKK2NhdGFsb2cgcmVhZHMgZ28g dGhyb3VnaCBtYW55IHBhdGhzIG5vdCBhbGwgcHJvdmVuIHNhZmUgYWdhaW5zdCBzdGFsZSBj aGFpbgorZW50cmllcy4gIFRoaXMgaXMgdGhlIHByZS1IT1QtaW5kZXhlZCBiZWhhdmlvdXIg Zm9yIHN1Y2ggdXBkYXRlcy4KKworSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCAoY2FjaGVk IGluIHJkX2luZGV4ZWRhdHRyKSBpcyB0aGUgc2V0IG9mIGNvbHVtbnMKK3JlZmVyZW5jZWQg Ynkgbm9uLXN1bW1hcml6aW5nIGluZGV4ZXMgcGx1cywgZm9sZGVkIGluLCB0aGUgY29sdW1u cyByZWZlcmVuY2VkCitvbmx5IGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMsIHNvIHRoYXQgYSBj aGFuZ2UgdG8gYSBzdW1tYXJpemluZy1vbmx5IGNvbHVtbiBpcworc2VlbiBieSB0aGUgbW9k aWZpZWQtYXR0cmlidXRlIGNvbXBhcmlzb24gKGl0cyBpbmRleCBpcyBtYWludGFpbmVkIHZp YSB0aGUKK2NsYXNzaWMtSE9UIHN1bW1hcml6aW5nIHBhdGgpLiAgUmVhZC1zaWRlIHN0YWxl bmVzcyBpcyBmaWx0ZXJlZCBieSB0aGUKK2Nyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCwgd2hp Y2ggaXMgYWNjZXNzLW1ldGhvZCBhZ25vc3RpYywgc28gYSBjaGFuZ2UgdG8gYQorY29sdW1u IGNvdmVyZWQgYnkgYW55IGluZGV4IGlzIEhPVC1pbmRleGVkIHJlZ2FyZGxlc3Mgb2YgdGhl IGluZGV4J3MgYWNjZXNzCittZXRob2QuICBTdW1tYXJpemluZyBpbmRleGVzIChlLmcuIEJS SU4pIGtlZXAgbm8gcGVyLXJvdyBsZWFmIHRoYXQgY2FuIGdvCitzdGFsZSBhbmQgYXJlIG1h aW50YWluZWQgdmlhIHRoZSBzdW1tYXJpemluZyBwYXRoLgorCisKK1RoZSB3cml0ZSBwYXRo CistLS0tLS0tLS0tLS0tLQorCitGb3IgSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFLCBo ZWFwX3VwZGF0ZToKKworICAtIHN0b3JlcyB0aGUgbmV3IHR1cGxlIGFzIGEgaGVhcC1vbmx5 IHR1cGxlIG9uIHRoZSBzYW1lIHBhZ2UsIGxpbmtlZCBpbnRvCisgICAgdGhlIGNoYWluIHZp YSB0X2N0aWQsIGV4YWN0bHkgbGlrZSBjbGFzc2ljIEhPVDsgYW5kCisgIC0gc2V0cyBIRUFQ X0lOREVYRURfVVBEQVRFRCAodF9pbmZvbWFzazIgYml0IDB4MDgwMCkgb24gdGhlIG5ldyB0 dXBsZSB0bworICAgIG1hcmsgdGhhdCB0aGUgY2hhaW4gbm93IGNhcnJpZXMgZGlmZmVyaW5n IGtleXMuCisKK1RoZXJlIGlzIG5vIHNlcGFyYXRlIG9uLXBhZ2UgbWV0YS1pdGVtOiB0aGUg Yml0IG9uIHRoZSBoZWFwLW9ubHkgdHVwbGUgaXMgdGhlCitlbnRpcmUgb24tZGlzayBmb290 cHJpbnQuICBBcyBmb3IgY2xhc3NpYyBIT1QsIGlmIHRoZSBuZXcgdHVwbGUgZG9lcyBub3Qg Zml0CitvbiB0aGUgcGFnZSB0aGUgdXBkYXRlIGZhbGxzIGJhY2sgdG8gYSBub24tSE9UIChu ZXctcGFnZSkgdXBkYXRlLgorCitUaGUgaW5saW5lIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBp cyBjZWlsKG5hdHRzLzgpIGJ5dGVzLCBzaXplZCBieSB0aGUgdHVwbGUncworT1dOIGF0dHJp YnV0ZSBjb3VudCBhdCB3cml0ZSB0aW1lIChIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyksIG5v dCB0aGUgcmVsYXRpb24ncworY3VycmVudCBuYXR0cy4gIEFERCBDT0xVTU4gcmFpc2VzIHRo ZSByZWxhdGlvbidzIG5hdHRzIHdpdGhvdXQgcmV3cml0aW5nCitleGlzdGluZyB0dXBsZXMs IHNvIG9uZSBjaGFpbiBjYW4gaG9sZCBob3BzIHdob3NlIGJpdG1hcHMgd2VyZSBzaXplZCBm b3IKK2RpZmZlcmVudCAoc21hbGxlcikgbmF0dHM7IGV2ZXJ5IGNvbnN1bWVyIGxvY2F0ZXMg YW5kIHNpemVzIGEgaG9wJ3MgYml0bWFwCitmcm9tIHRoYXQgaG9wJ3Mgb3duIHdyaXRlLXRp bWUgbmF0dHMgKEhvdEluZGV4ZWRUdXBsZUJpdG1hcE5hdHRzIGluCithY2Nlc3MvaG90X2lu ZGV4ZWQuaCkuICBBIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIgb3ZlcndyaXRlcyBuYXR0cyB3 aXRoIGl0cyAwCitzZW50aW5lbCwgc28gaXQgcHJlc2VydmVzIGl0cyB3cml0ZS10aW1lIG5h dHRzIGluIHRoZSB1bnVzZWQgYmxvY2stbnVtYmVyIGhhbGYKK29mIHRfY3RpZCAodGhlIG9m ZnNldCBoYWxmIGlzIHRoZSBmb3J3YXJkIGxpbmspLiAgQml0IHBvc2l0aW9ucyBhcmUgYXR0 cmlidXRlCitiYXNlZCBhbmQgaWRlbnRpY2FsIGFjcm9zcyBzaXplcywgc28gYSBzbWFsbGVy IGJpdG1hcCBzaW1wbHkgT1JzIGludG8gdGhlIGxvdworYnl0ZXMgb2YgYSBsYXJnZXIgY3Jv c3NlZC1hdHRyaWJ1dGUgYWNjdW11bGF0b3IuICBEUk9QIENPTFVNTiBrZWVwcyB0aGUgYXR0 bnVtCitzbG90IChpdCBuZXZlciByZW51bWJlcnMpLCBzbyBleGlzdGluZyBiaXRtYXBzIHN0 YXkgYWxpZ25lZC4KKworQWZ0ZXIgdGhlIHVwZGF0ZSwgdGFibGVfdHVwbGVfdXBkYXRlIHJl cG9ydHMgdXBkYXRlX2FsbF9pbmRleGVzID0gZmFsc2UgKHRoZQordHVwbGUgaXMgaGVhcC1v bmx5KS4gIFRoZSBleGVjdXRvciB0aGVuIG1haW50YWlucyBpbmRleGVzIHNlbGVjdGl2ZWx5 OgorRXhlY1NldEluZGV4VW5jaGFuZ2VkIG1hcmtzIGVhY2ggaW5kZXggd2hvc2Uga2V5IGF0 dHJpYnV0ZXMgZGlkIG5vdCBjaGFuZ2UgYXMKK3VuY2hhbmdlZCwgYW5kIEV4ZWNJbnNlcnRJ bmRleFR1cGxlcyBpbnNlcnRzIGEgZnJlc2ggZW50cnkgb25seSBpbnRvIHRoZQoraW5kZXhl cyB0aGF0IGRpZCBjaGFuZ2UuICBFYWNoIHN1Y2ggZW50cnkgcG9pbnRzIGF0IHRoZSBuZXcg dHVwbGUncyBvd24gVElELgorCisKK1RoZSBjaGFpbiBhbmQgdGhlIHR3byBraW5kcyBvZiBs ZWFmIGVudHJ5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KworQWZ0ZXIgYSBIT1QtaW5kZXhlZCB1cGRhdGUgdGhlcmUgYXJlLCBmb3IgYSBjaGFuZ2Vk IGluZGV4LCB0d28ga2luZHMgb2YgbGVhZgorZW50cnkgcmVhY2hpbmcgdGhlIGNoYWluOgor CisgIC0gdGhlIHByZS11cGRhdGUgZW50cnkgZm9yIHRoZSBPTEQga2V5LCBzdGlsbCBwb2lu dGluZyBhdCBhbiBvbGRlciBjaGFpbgorICAgIG1lbWJlciAobm93IHN0YWxlIG9uY2UgdGhl IHdhbGsgY3Jvc3NlcyB0aGUgSE9ULWluZGV4ZWQgaG9wKTsgYW5kCisgIC0gdGhlIGZyZXNo IGVudHJ5IGZvciB0aGUgTkVXIGtleSwgcG9pbnRpbmcgYXQgdGhlIG5ldyBoZWFwLW9ubHkg dHVwbGUuCisKK0luZGV4IGJ1aWxkIGFuZCBSRUlOREVYIGluZGV4IGEgbGl2ZSBIT1QtaW5k ZXhlZCB0dXBsZSB1bmRlciBpdHMgT1dOIFRJRCAobm90Cit0aGUgY2hhaW4gcm9vdCksIHNv IHRoZSBmcmVzaGx5IGJ1aWx0IGVudHJ5IGhhcyBubyBob3AgYWZ0ZXIgaXQgYW5kIGlzIG5l dmVyCit0cmVhdGVkIGFzIHN0YWxlLgorCisKK1JlYWQtc2lkZSBjb3JyZWN0bmVzczogdGhl IGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2hlYXBfaG90X3NlYXJjaF9idWZmZXIgd2Fs a3MgdGhlIGNoYWluIGZyb20gdGhlIGVudHJ5J3MgdGFyZ2V0IHRvIHRoZSBsaXZlCit2aXNp YmxlIHR1cGxlLiAgRWFjaCBob3AgaXQgY3Jvc3NlcyBhZnRlciB0aGUgZW50cnkncyBvd24g dGFyZ2V0IC0tIGEgbGl2ZQorSE9ULWluZGV4ZWQgbWVtYmVyLCBhIGNvbGxhcHNlLXN1cnZp dm9yIHN0dWIsIG9yIGEgY29sbGFwc2VkIChyZWRpcmVjdGVkKQorcHJlZml4IC0tIGNvbnRy aWJ1dGVzIHRoYXQgaG9wJ3MgaW5saW5lIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCB0byBhIHJ1 bm5pbmcKK3VuaW9uLCBJbmRleEZldGNoVGFibGVEYXRhLnhzX2hvdF9pbmRleGVkX2Nyb3Nz ZWQsIGFuZCBzZXRzCisqaG90X2luZGV4ZWRfcmVjaGVjayB0byBmbGFnIHRoYXQgdGhlIHdh bGsgY3Jvc3NlZCBhdCBsZWFzdCBvbmUgc3VjaCBob3AuCisKK1RoZSBpbmRleC1hY2Nlc3Mg bGF5ZXIgKGluZGV4X2ZldGNoX2hlYXApIHRlc3RzIHRoYXQgdW5pb24gYWdhaW5zdCB0aGUK K2Fycml2aW5nIGluZGV4J3Mga2V5IGNvbHVtbnMuICBBbnkgb3ZlcmxhcCBtZWFucyBhIGNy b3NzZWQgaG9wIGNoYW5nZWQgb25lIG9mCit0aGlzIGluZGV4J3MgaW5wdXRzLCBzbyB0aGUg ZW50cnkncyBzdG9yZWQga2V5IG5vIGxvbmdlciBtYXRjaGVzIHRoZSBsaXZlCit0dXBsZTog SW5kZXhTY2FuRGVzYy54c19ob3RfaW5kZXhlZF9zdGFsZSBpcyBzZXQsIGFuZCBJbmRleFNj YW4sCitJbmRleE9ubHlTY2FuLCBDTFVTVEVSLCBhbmQgdGhlIGxvZ2ljYWwtcmVwbGljYXRp b24gcmVwbGljYS1pZGVudGl0eSBsb29rdXBzCitkcm9wIHRoZSB0dXBsZS4gIElmIHRoZSB1 bmlvbiBpcyBkaXNqb2ludCBmcm9tIHRoZSBpbmRleCdzIGtleSBjb2x1bW5zLCBub25lCitv ZiB0aGUgaW5kZXgncyBpbnB1dHMgY2hhbmdlZCBhY3Jvc3MgdGhlIGNoYWluLCBzbyB0aGUg ZW50cnkgaXMgY3VycmVudCBhbmQKK3RoZSByb3cgaXMgcmV0dXJuZWQuCisKK1RoZSB1bmlv biBpcyBjb21wbGV0ZTogZXZlcnkgY3Jvc3NlZCBsaXZlIGhvcCBhbmQgc3R1YiBjb250cmli dXRlcyBpdHMKK2JpdG1hcCwgYW5kIGNoYWluIGNvbGxhcHNlIG9ubHkgZXZlciByZWNsYWlt cyBhIG1lbWJlciB3aG9zZSBhdHRyaWJ1dGVzIGFyZSBhCitzdWJzZXQgb2YgdGhlIHN1cnZp dmluZyBsYXRlciBob3BzIChzZWUgIlBydW5lIGFuZCBjaGFpbiBjb2xsYXBzZSIpLCBzbyBh CityZWFkZXIgY3Jvc3NpbmcgdGhlIHN1cnZpdm9ycyBzdGlsbCBzZWVzIGV2ZXJ5IGNvbGxh cHNlZCBob3AncyBhdHRyaWJ1dGVzLgorRGlzam9pbnRuZXNzIHRoZXJlZm9yZSByZWxpYWJs eSBtZWFucyB0aGUgZW50cnkgaXMgY3VycmVudC4KKworVGhpcyBuZWVkcyBubyB2YWx1ZSBj b21wYXJpc29uIGFuZCBubyBsZWFmIGtleSwgc28gaXQgc2VydmVzIGVxdWFsaXR5LCByYW5n ZSwKK2FuZCBpbmVxdWFsaXR5IHNjYW5zIHVuaWZvcm1seSwgd29ya3MgZm9yIGFueSBhY2Nl c3MgbWV0aG9kIHdob3NlIGNvbHVtbnMgYXJlCitlbGlnaWJsZSBmb3IgSE9ULWluZGV4ZWQg dXBkYXRlcywgYW5kIGlzIGNvcnJlY3QgZXZlbiB3aGVuIGEga2V5IGlzIGN5Y2xlZAorYXdh eSBhbmQgYmFjayAoWCAtPiBZIC0+IFgpOiB0aGUgdXBkYXRlIHRoYXQgcmVzdG9yZWQgdGhl IHZhbHVlIHBsYW50ZWQgYQorZnJlc2ggZW50cnkgcG9pbnRpbmcgYXQgaXRzIG93biBsaXZl IHR1cGxlLCB3aG9zZSB3YWxrIGNyb3NzZXMgbm8gbGF0ZXIKK2tleS1jaGFuZ2luZyBob3As IHNvIHRoYXQgZW50cnkgdW5pcXVlbHkgcmV0dXJucyB0aGUgcm93IHdoaWxlIHRoZSBzdGFs ZQorYW5jZXN0b3IgZW50cnkgLS0gd2hvc2Ugd2FsayBkb2VzIGNyb3NzIHRoZSBjaGFuZ2lu ZyBob3BzIC0tIGlzIGRyb3BwZWQuCisKK1RoZSByZWFkIG1lY2hhbmlzbSBuZXZlciByZWNv bnN0cnVjdHMgb3IgY29tcGFyZXMgYW4gaW5kZXgga2V5LCBzbyBpdCBuZWVkcyBubworcGVy LWFjY2Vzcy1tZXRob2Qgc3VwcG9ydC4gIChuYnRyZWUga2VlcHMgYW4gaW50ZXJuYWwgbGVh Zi1rZXkgY29tcGFyaXNvbiwKK19idF9oZWFwX2tleXNfZXF1YWxfbGVhZiwgdXNlZCBvbmx5 IGJ5IF9idF9jaGVja191bmlxdWUgdG8gdGVsbCBhIHN0YWxlIGNoYWluCitlbnRyeSBmcm9t IGEgbGl2ZSBkdXBsaWNhdGUgZHVyaW5nIGEgdW5pcXVlIGluc2VydDsgaXQgaXMgbm90IHBh cnQgb2YgdGhlIHJlYWQKK3BhdGguKQorCitVbmlxdWUgY2hlY2tzLiAgX2J0X2NoZWNrX3Vu aXF1ZSBmZXRjaGVzIHRoZSBjb25mbGljdGluZyB0dXBsZSB1bmRlcgorU25hcHNob3REaXJ0 eSBhbmQsIHdoZW4gdGhlIGNoYWluIHdhbGsgY3Jvc3NlZCBhIEhPVC1pbmRleGVkIGhvcCwg Y29tcGFyZXMgdGhlCitsaXZlIHR1cGxlJ3MgY3VycmVudCBrZXkgYWdhaW5zdCB0aGUgYXJy aXZpbmcgbGVhZiB3aXRoIHRoZSBpbmRleCdzIG93bgorb3JkZXJpbmcgcHJvY2VkdXJlIChf YnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYsIHVzaW5nIEJUT1JERVJfUFJPQyB1bmRlciBlYWNo Citjb2x1bW4ncyBjb2xsYXRpb24pLiAgVGhpcyByZWNoZWNrIGlzIHJlYWNoZWQgb25seSBm b3IgYW4gaW5kZXggcmVjZWl2aW5nIGEKK2ZyZXNoIGVudHJ5IGR1cmluZyBhIEhPVC1pbmRl eGVkIHVwZGF0ZTsgSGVhcFVwZGF0ZUhvdEFsbG93YWJsZSBkaXNxdWFsaWZpZXMKK2FueSBV UERBVEUgdGhhdCB0b3VjaGVzIGFuIGV4cHJlc3Npb24taW5kZXggYXR0cmlidXRlLCBzbyB0 aGUgaW5kZXggaGVyZSBuZXZlcgoraGFzIGFuIGV4cHJlc3Npb24ga2V5IGNvbHVtbiAoZXZl cnkga2V5IGNvbHVtbiBpcyBhIHBsYWluIGF0dHJpYnV0ZSksIGFuZCB0aGUKK2NvbXBhcmlz b24gcmVhZHMgYXR0cmlidXRlIHZhbHVlcyBzdHJhaWdodCBmcm9tIHRoZSBoZWFwIHNsb3Qg LS0gbm8gZXhwcmVzc2lvbgorZXZhbHVhdGlvbiBvciBleGVjdXRvciBzdGF0ZSBpcyBuZWVk ZWQuICBVc2luZyB0aGUgb3BjbGFzcyBjb21wYXJhdG9yIC0tIG5vdCBhCitiaXR3aXNlIGlt YWdlIGNvbXBhcmlzb24gLS0gbWVhbnMgYSBrZXkKK3RoYXQgd2FzIGN5Y2xlZCBhd2F5IGFu ZCBiYWNrIChYIC0+IFkgLT4gWCkgZG9lcyBub3QgcmFpc2UgYSBzcHVyaW91cworZHVwbGlj YXRlIGFnYWluc3QgaXRzIG93biBzdGFsZSBsZWFmLCB3aGlsZSBhIGdlbnVpbmVseSBsaXZl IGR1cGxpY2F0ZSAoZXF1YWwKK3VuZGVyIHRoZSBvcGNsYXNzIGV2ZW4gaWYgbm90IGJpdHdp c2UtaWRlbnRpY2FsLCBlLmcuIG51bWVyaWMgMS4wIHZzIDEuMDApIGlzCitzdGlsbCBkZXRl Y3RlZC4gIChBcHBlbmRpeCBBIG1vdGl2YXRlcyB0aGlzIHJlY2hlY2sgaW4gZGV0YWlsLikK KworCitCaXRtYXAgc2NhbnM6IHRoZSBtaWQtY2hhaW4gVElEIGFuZCBCaXRtYXBBbmQvQml0 bWFwT3IKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisKK1RoZSBjcm9zc2VkLWF0dHJpYnV0ZSB0ZXN0IGFib3ZlIHJ1bnMgb24gdGhl IHdheSB0byB0aGUgaGVhcC4gIEEgYml0bWFwIHNjYW4KK2hhcyBhbiBlYXJsaWVyIGhhemFy ZCBpdCBjYW5ub3QgcmVhY2g6IEJpdG1hcEFuZC9CaXRtYXBPciBjb21iaW5lIHR3byBpbmRl eGVzJworVElEIHNldHMgaW4gdGlkYml0bWFwLmMgYXQgcmF3IGJsb2NrK29mZnNldCBncmFu dWxhcml0eSwgYmVmb3JlIGVpdGhlciBzaWRlCit0b3VjaGVzIHRoZSBoZWFwLiAgQSBIT1Qt aW5kZXhlZCBmcmVzaCBlbnRyeSBwb2ludHMgYXQgdGhlIG1pZC1jaGFpbiBuZXcgdHVwbGUK K3doaWxlIGFuIHVuY2hhbmdlZCBpbmRleCdzIGVudHJ5IGZvciB0aGUgc2FtZSByb3cgcG9p bnRzIGF0IHRoZSBjaGFpbiByb290LCBzbworZm9yICJXSEVSRSBjaGFuZ2VkX2NvbCA9IHgg QU5EIHVuY2hhbmdlZF9jb2wgPSB5IiB0aGUgdHdvIGJpdG1hcCBpbmRleCBzY2FucworY29u dHJpYnV0ZSBkaWZmZXJlbnQgVElEcyBmb3IgdGhlIG9uZSBsaXZlIHJvdywgdGhlIGV4YWN0 LW1vZGUgaW50ZXJzZWN0aW9uCitmaW5kcyBub3RoaW5nIGluIGNvbW1vbiwgYW5kIHRoZSBy b3cgaXMgZHJvcHBlZCAtLSBhIGZhbHNlIG5lZ2F0aXZlIChiaXRtYXAKK3NjYW5zIHRvbGVy YXRlIGZhbHNlIHBvc2l0aXZlcywgbm90IGZhbHNlIG5lZ2F0aXZlcykuCisKK0EgZnJlc2gg ZW50cnkncyBzdG9yZWQgaGVhcCBUSUQgdGhlcmVmb3JlIGNhcnJpZXMgSXRlbVBvaW50ZXJT SVVNYXliZVN0YWxlRmxhZywKK2JpdCAxNCBvZiB0aGUgb2Zmc2V0IGZpZWxkIChzZWUgc3Rv cmFnZS9pdGVtcHRyLmgpLiAgTWF4T2Zmc2V0TnVtYmVyIG5lZWRzIGF0Cittb3N0IDE0IGJp dHMgZXZlbiBhdCB0aGUgbGFyZ2VzdCBjb25maWd1cmFibGUgQkxDS1NaLCBzbyB0aGUgYml0 IGlzIGZyZWUgZm9yCithbnkgcmVhbCBvZmZzZXQ7IHRoZSB0d28gcmVzZXJ2ZWQgb2Zmc2V0 IHNlbnRpbmVscyAoU3BlY1Rva2VuT2Zmc2V0TnVtYmVyLAorTW92ZWRQYXJ0aXRpb25zT2Zm c2V0TnVtYmVyKSBhbHJlYWR5IHNldCBpdCBhcyBwYXJ0IG9mIHRoZWlyIG93biBlbmNvZGlu Zywgc28KK0l0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyJ3Mgc3RyaXAgaXMgcmFuZ2UtZ2F0 ZWQgdG8gbGVhdmUgdGhlbSBpbnRhY3QuICBUaGUKK2ZsYWcgaXMgc2V0IG9ubHkgb24gdGhl IGxvY2FsIFRJRCBjb3B5IGhhbmRlZCB0byBhIGZyZXNoIGVudHJ5J3MgaW5kZXhfaW5zZXJ0 CisoRXhlY0luc2VydEluZGV4VHVwbGVzKSwgbmV2ZXIgb24gdGhlIGhlYXAgdHVwbGUncyBv d24gdF9jdGlkIGFuZCBuZXZlciBvbiBhCitjbGFzc2ljLUhPVCBvciBwbGFpbiBlbnRyeS4g IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyIGFuZCBJdGVtUG9pbnRlckNvbXBhcmUKK3N0 cmlwIGl0IGJ5IGRlZmF1bHQsIHNvIHRoZSBwbGFpbiBpbmRleC1zY2FuIGhlYXAgbG9va3Vw LCB0aGUgdW5pcXVlIGNoZWNrLAordHVwbGVzb3J0LCBhbmQgdGhlIHRpZCBvcGNsYXNzIGFs bCBzZWUgdGhlIHJlYWwgb2Zmc2V0OyBvbmx5CitJdGVtUG9pbnRlckdldE9mZnNldE51bWJl ck5vQ2hlY2sgZXhwb3NlcyB0aGUgcmF3IHZhbHVlLgorCit0Ym1fYWRkX3R1cGxlcyAtLSB0 aGUgc2luZ2xlIGNob2tlIHBvaW50IGV2ZXJ5IGFtZ2V0Yml0bWFwIGZ1bm5lbHMgZXhhY3Qg aGVhcAorVElEcyB0aHJvdWdoIC0tIGNoZWNrcyB0aGUgZmxhZyBhbmQsIHdoZW4gc2V0LCBh ZGRzIHRoZSB3aG9sZSBwYWdlIGFzIGxvc3N5CisodGJtX2FkZF9wYWdlKSBpbnN0ZWFkIG9m IHRoZSBzaW5nbGUgZXhhY3Qgb2Zmc2V0LiAgQSBsb3NzeSBwYWdlIHN1cnZpdmVzIGFueQor QU5EL09SIGFnYWluc3QgYW4gZXhhY3QtbW9kZSBwYWdlICh0Ym1faW50ZXJzZWN0X3BhZ2Un cyBvd24gY2FzZSBhbmFseXNpcykgYW5kCitmb3JjZXMgYSByZWNoZWNrLCBzbyBCaXRtYXBI ZWFwU2NhbiByZXNvbHZlcyB0aGUgY2hhaW4gYW5kIHRoZSBjcm9zc2VkLQorYXR0cmlidXRl IHRlc3QgYWJvdmUgbWFrZXMgdGhlIGZpbmFsIGNhbGwuICBCZWNhdXNlIHRoaXMgbGl2ZXMg aW4KK3RibV9hZGRfdHVwbGVzLCBubyBpbmRleCBhY2Nlc3MgbWV0aG9kIG5lZWRzIGFueSBI T1QtaW5kZXhlZC1zcGVjaWZpYyBjb2RlOgorYnRyZWUsIGhhc2gsIEdJTiwgR2lTVCwgU1At R2lTVCwgY29udHJpYi9ibG9vbSwgYW5kIG91dC1vZi10cmVlIEFNcyBhcmUgYWxsCitjb3Jy ZWN0LCBhbmQgYSBUSUQgdGhhdCBuZXZlciBjYXJyaWVzIHRoZSBmbGFnIHRha2VzIHRoZSBp ZGVudGljYWwgb2xkIHBhdGguCitHSU4ncyB1bnJlbGF0ZWQgcGFnZS1sZXZlbCBsb3NzeSBz ZW50aW5lbCAoSXRlbVBvaW50ZXJJc0xvc3N5UGFnZSkgaXMgbm90CithZmZlY3RlZC4KKwor VGhlIGNvc3QgaXMgcHJlY2lzaW9uLCBub3QgY29ycmVjdG5lc3M6IGEgaGVhcCBwYWdlIGNh cnJ5aW5nIGEgbGl2ZSBmcmVzaAorZW50cnkgY29udHJpYnV0ZXMgbG9zc3kgKGEgd2hvbGUt cGFnZSByZWNoZWNrIG9uIHRoYXQgYml0bWFwIHNjYW4pIHVudGlsIHRoZQorY2hhaW4gY29s bGFwc2VzOyBpdCBpcyBib3VuZGVkIGFuZCBzZWxmLWhlYWxpbmcgdmlhIHBydW5lL1ZBQ1VV TS4gIHBhZ2VpbnNwZWN0CisxLjE0J3MgYnRfcGFnZV9pdGVtcyByZXBvcnRzIHRoZSByZWFs IG9mZnNldCAoZWFybGllciB2ZXJzaW9ucyBzaG93ZWQgdGhlCittYXJrZXIgYXMgYW4gaW5m bGF0ZWQgb2Zmc2V0KSBhbmQgYWRkcyBhIGhvdF9pbmRleGVkIGJvb2xlYW4gY29sdW1uLgor CisKK1BydW5lIGFuZCBjaGFpbiBjb2xsYXBzZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorCitCZWNhdXNlIGEgSE9ULWluZGV4ZWQgdXBkYXRlIHBsYW50cyBhbiBpbmRleCBlbnRy eSBwb2ludGluZyBhdCBhIG1pZC1jaGFpbgoraGVhcC1vbmx5IHR1cGxlJ3Mgb3duIFRJRCwg Y2xhc3NpYyBIT1QncyBhc3N1bXB0aW9uIHRoYXQgbWlkLWNoYWluIGxpbmUKK3BvaW50ZXJz IGhhdmUgbm8gZXh0ZXJuYWwgcmVmZXJlbmNlcyBubyBsb25nZXIgaG9sZHMuICBQcnVuaW5n IHRoZXJlZm9yZSBtdXN0Citub3QgcmVjbGFpbSBzdWNoIGEgbGluZSBwb2ludGVyIHdoaWxl IGEgbm90LXlldC1zd2VwdCBpbmRleCBlbnRyeSBjYW4gc3RpbGwKK2Fycml2ZSBhdCBpdC4K KworaGVhcF9wcnVuZV9jaGFpbiBjb2xsYXBzZXMgYSBydW4gb2YgZGVhZCBjaGFpbiBtZW1i ZXJzIHRvIGEgc2luZ2xlCitMUF9SRURJUkVDVCB0aGF0IGZvcndhcmRzIHRvIHRoZSBmaXJz dCBsaXZlIHR1cGxlLCBhbmQgcHJlc2VydmVzIHRoZSBsaW5lCitwb2ludGVyIG9mIGEgbGl2 ZSBIT1QtaW5kZXhlZCBtZW1iZXIgKGhlYXBfcHJ1bmVfaXRlbV9wcmVzZXJ2ZXNfaG90X2lu ZGV4ZWQpCitzbyBhIHJlYWRlciBhcnJpdmluZyB2aWEgYSBzdGFsZSBlbnRyeSBzdGlsbCBm aW5kcyBhIHdhbGthYmxlIGhvcC4gIE1vcmUgdGhhbgorb25lIExQX1JFRElSRUNUIG1heSBm b3J3YXJkIHRvIHRoZSBzYW1lIGxpdmUgdHVwbGUuICBUaGUgcmVkaXJlY3QgbGlmZWN5Y2xl CityZXVzZXMgdGhlIGV4aXN0aW5nIHBydW5lIFdBTCByZWNvcmRzOyB0aGVyZSBpcyBubyBu ZXcgb24tZGlzayBmb3JtYXQuCisKKworVmFjdXVtIHJlY2xhbWF0aW9uCistLS0tLS0tLS0t LS0tLS0tLS0KKworVkFDVVVNJ3MgaW5kZXggY2xlYW51cCBzd2VlcHMgdGhlIHN0YWxlIGlu ZGV4IGVudHJpZXMuICBUaGUgY29sbGFwc2UgYmFjayB0bworY2xhc3NpYyBIT1QgaXMgZHJp dmVuIGJ5IHBydW5lLCBub3QgYnkgVkFDVVVNJ3Mgc2Vjb25kIHBhc3M6IG9uY2UgYSBjaGFp biBpcworZnVsbHkgZGVhZCwgYSBsYXRlciBwcnVuZSAoaGVhcF9wcnVuZV9jaGFpbiAvIGhl YXBfcHJ1bmVfY2hhaW5fZmluZF9saXZlKQorcmVjbGFpbXMgaXRzIG1lbWJlcnMgYW5kIHJl LXBvaW50cyB0aGUgcm9vdCByZWRpcmVjdCBzdHJhaWdodCBhdCBmaXJzdF9saXZlLgorUmUt cG9pbnRpbmcgYSByZWRpcmVjdCBwcmVzZXJ2ZXMgcmVhY2hhYmlsaXR5IChldmVyeSB3YWxr ZXIgc3RpbGwgcmVhY2hlcworZmlyc3RfbGl2ZSksIHNvIGl0IGlzIHNhZmUgdW5kZXIgdGhl IGV4Y2x1c2l2ZSBsb2NrIHBydW5lIGFscmVhZHkgaG9sZHMuCisKK1ZBQ1VVTSdzIHNlY29u ZCBwYXNzIChsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UpIGRvZXMgbm90IGl0c2VsZiByZS1wb2lu dAorcmVkaXJlY3RzIG9yIHJlY2xhaW0gc3R1YnM7IGl0IHBlcmZvcm1zIHRoZSB1c3VhbCBM UF9ERUFEIC0+IExQX1VOVVNFRAorY29udmVyc2lvbiBhbmQgbGVhdmVzIHRoZSBIT1QtaW5k ZXhlZCBjb2xsYXBzZSB0byBwcnVuZS4KKworQSBwYWdlIHRoYXQgc3RpbGwgY2FycmllcyBh IHByZXNlcnZlZCBIT1QtaW5kZXhlZCBtZW1iZXIgb3IgYSBjb2xsYXBzZS1zdXJ2aXZvcgor c3R1YiBpcyBkZWxpYmVyYXRlbHkgbGVmdCBub24tYWxsLXZpc2libGUsIHNvIHRoYXQgYW4g aW5kZXgtb25seSBzY2FuCitoZWFwLWZldGNoZXMgdGhyb3VnaCB0aGUgY2hhaW4gYW5kIHRo ZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgY2FuIGZpbHRlcgorc3RhbGUgZW50cmllcyAo ZW5mb3JjZWQgaW4gaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QsIHRoZSBzdHViIHJlY29y ZGVycywgYW5kCitoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUpLgorCisKK2FtY2hl Y2sgYW5kIHN0YXRpc3RpY3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordmVyaWZ5X2hl YXBhbSB0cmVhdHMgdGhlIEhPVC1pbmRleGVkIGFydGlmYWN0cyBhcyBsZWdpdGltYXRlOiBh IGxpdmUKK0hFQVBfSU5ERVhFRF9VUERBVEVEIGhlYXAtb25seSB0dXBsZSB3aG9zZSBsaW5l IHBvaW50ZXIgaXMgcHJlc2VydmVkLCBhbmQKK211bHRpcGxlIExQX1JFRElSRUNUcyBmb3J3 YXJkaW5nIHRvIG9uZSBsaXZlIHR1cGxlLgorCitTdGF0aXN0aWNzOiBwZ19zdGF0X2FsbF90 YWJsZXMubl90dXBfaG90X2luZGV4ZWRfdXBkIGNvdW50cyBIT1QtaW5kZXhlZAordXBkYXRl czsgcGdfc3RhdF9hbGxfaW5kZXhlcy5uX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCAv IF9za2lwcGVkIGNvdW50CitwZXItaW5kZXggcmVjaGVjayBvdXRjb21lczsgYW5kIHBnX3Jl bGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCkgcmVwb3J0cworcGVyLXJlbGF0aW9uIEhPVC1p bmRleGVkIGNoYWluIGNvdW50cy4KKworCitMb2dpY2FsIHJlcGxpY2F0aW9uCistLS0tLS0t LS0tLS0tLS0tLS0tCisKK0EgSE9ULWluZGV4ZWQgdXBkYXRlIG9mIGEgcmVwbGljYS1pZGVu dGl0eSBhdHRyaWJ1dGUgb24gYSBzdWJzY3JpYmVyIGxlYXZlcyBhCitzdGFsZSBpbmRleCBs ZWFmOyB0aGUgYXBwbHkgd29ya2VyJ3MgcmVwbGljYS1pZGVudGl0eSBsb29rdXBzIHRvbGVy YXRlIHRoYXQKK29ubHkgd2hlbiB0aGUgaW5kZXhlZCBhdHRyaWJ1dGVzIGFyZSBjb3ZlcmVk IGJ5IHRoZSByZXBsaWNhIGlkZW50aXR5LiAgVGhlCitwZXItc3Vic2NyaXB0aW9uIGhvdF9p bmRleGVkX29uX2FwcGx5IG9wdGlvbiAocGdfc3Vic2NyaXB0aW9uLnN1YmhvdGluZGV4ZWRv bmFwcGx5LAorb2ZmIC8gc3Vic2V0X29ubHkgLyBhbHdheXM7IHN1YnNldF9vbmx5IGlzIHRo ZSBkZWZhdWx0KSBjb250cm9scyB0aGlzOgorSGVhcFVwZGF0ZUhvdEFsbG93YWJsZSBjb25z dWx0cyBHZXRIb3RJbmRleGVkQXBwbHlNb2RlIG9uIHRoZSBhcHBseSBwYXRoIGFuZAorZmFs bHMgYmFjayB0byBub24tSE9UIHdoZW4gdGhlIGluZGV4ZWQgYXR0cmlidXRlcyBhcmUgbm90 IGV4YWN0bHkgdGhlIHByaW1hcnkKK2tleSAob2ZmKSBvciBub3QgYSBzdWJzZXQgb2YgaXQg KHN1YnNldF9vbmx5KS4KKworCitSZWNvdmVyeQorLS0tLS0tLS0KKworSE9ULWluZGV4ZWQg dXBkYXRlcyBhbmQgdGhlIHBydW5lL2NvbGxhcHNlIHVzZSB0aGUgZXhpc3RpbmcgaGVhcCBV UERBVEUgYW5kCitwcnVuZS9mcmVlemUgV0FMIHJlY29yZHMsIHNvIGNyYXNoIHJlY292ZXJ5 IHJlcGxheXMgdGhlbSB3aXRoIG5vIG5ldyByZWNvcmQKK3R5cGVzLiAgc3JjL3Rlc3QvcmVj b3ZlcnkvdC8wNTRfaG90X2luZGV4ZWRfcmVjb3ZlcnkucGwgYnVpbGRzIGEgY2hhaW4sCitj cmFzaGVzIHdpdGhvdXQgYSBjaGVja3BvaW50IChmb3JjaW5nIFdBTCByZWRvKSwgYW5kIHZl cmlmaWVzIHRoZSBjaGFpbiB3YWxrLAordmVyaWZ5X2hlYXBhbSwgYW5kIHZhY3V1bSByZWNs YW1hdGlvbiBhZnRlciByZXN0YXJ0LCB3aXRoCit3YWxfY29uc2lzdGVuY3lfY2hlY2tpbmcg PSAnYWxsJyBjb21wYXJpbmcgZWFjaCByZXBsYXllZCBwYWdlIHRvIGl0cyBGUEkuCisKKwor QWR2ZXJzYXJpYWwgdGVzdHMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK3NyYy90ZXN0L2lzb2xh dGlvbi9zcGVjcy9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5zcGVjIGV4ZXJjaXNlcyB0aGUg Y2FzZXMgdGhlCitpbnZhcmlhbnQgbXVzdCBzYXRpc2Z5IHVuZGVyIGNvbmN1cnJlbmN5OiBr ZXkgY3ljbGluZyAoWC0+WS0+WCksIGFib3J0ZWQKK0hPVC1pbmRleGVkIHVwZGF0ZXMsIGNv bmN1cnJlbnQgdW5pcXVlIGluc2VydHMgYWdhaW5zdCBhIGZyZWVkL3Rha2VuIGtleSwKK3Nu YXBzaG90LXNhZmUgcmVjbGFpbSBvZiBzdGFsZSBsZWF2ZXMsIGFuZCByZWFkZXIgY29uc2lz dGVuY3kgYWNyb3NzIGEKK2NvbmN1cnJlbnQgcHJ1bmUvY29sbGFwc2UuCisKKworQXBwZW5k aWNlcworLS0tLS0tLS0tLQorCitBcHBlbmRpeCBBOiBXaHkgdGhlIHVuaXF1ZS1jaGVjayBw YXRoIG5lZWRzIGEgdmFsdWUgY29tcGFyaXNvbiBhdCBhbGwKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor CitUaGlzIGlzIHRoZSBvbmUgcGxhY2UgSE9ULWluZGV4ZWQgZG9lcyBjb21wYXJlIGEga2V5 IHZhbHVlLCBldmVuIHRob3VnaCB0aGUKK3JlYWQgcGF0aCBkZWxpYmVyYXRlbHkgYXZvaWRz IG9uZS4gIFRoZSByZXN0IG9mIHRoaXMgYXBwZW5kaXggZXhwbGFpbnMgd2h5IHRoZQorY29t cGFyaXNvbiBpcyBuZWVkZWQsIHdoeSBpdCBtdXN0IHVzZSB0aGUgb3BjbGFzcyBjb21wYXJh dG9yIHJhdGhlciB0aGFuIGEKK2JpdHdpc2Ugb25lLCBhbmQgd2h5IHRoZSBBQkEgY2FzZSBp cyB3aGF0IGZvcmNlcyB0aGUgaXNzdWUuCisKKzEuIFRoZSBzZXR1cDogd2h5IGEgdW5pcXVl IGluc2VydCBjYW4gZXZlbiByZWFjaCBhIHN0YWxlIGxlYWYKKworVW5kZXIgY2xhc3NpYyBI T1QsIGFuIGluZGV4IGhhcyBleGFjdGx5IG9uZSBsZWFmIGVudHJ5IHBlciBsb2dpY2FsIHJv dywgYW5kCitldmVyeSBsZWFmIGVudHJ5J3Mga2V5IG1hdGNoZXMgdGhlIGxpdmUgdHVwbGUg aXQgY2hhaW4tcmVzb2x2ZXMgdG8uICBTbworX2J0X2NoZWNrX3VuaXF1ZSBjYW4gdHJ1c3Q6 ICJpZiBJIGZpbmQgYSBsZWFmIHdob3NlIGtleSBlcXVhbHMgbXkgbmV3IGtleSwgYW5kCitp dCByZXNvbHZlcyB0byBhIGxpdmUgdHVwbGUsIHRoYXQncyBhIGdlbnVpbmUgZHVwbGljYXRl LiIKKworSE9UL1NJVSBicmVha3MgdGhhdCBvbmUtdG8tb25lIGNvcnJlc3BvbmRlbmNlLiAg QSBIT1QtaW5kZXhlZCBVUERBVEUgdGhhdAorY2hhbmdlcyBjb2x1bW4gYSBmcm9tIFggdG8g WToKKyAtIGluc2VydHMgYSBmcmVzaCBsZWFmIGVudHJ5IChZIC0+IG5ldyB0dXBsZSkgaW50 byBpZHhfYSwgYW5kCisgLSBsZWF2ZXMgdGhlIG9sZCBsZWFmIGVudHJ5IChYIC0+IG9sZCBj aGFpbiByb290KSBpbiBwbGFjZS4KKworVGhhdCBvbGQgKFggLT4gcm9vdCkgZW50cnkgaXMg bm93IHN0YWxlOiBpdCBzdGlsbCBjaGFpbi1yZXNvbHZlcyB0byBhIGxpdmUKK3R1cGxlLCBi dXQgdGhhdCBsaXZlIHR1cGxlJ3MgY3VycmVudCBhIGlzIFksIG5vdCBYLiAgVGhlIHJlYWQg cGF0aCBoYW5kbGVzIHRoaXMKK3dpdGggdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCAo bm8gdmFsdWUgY29tcGFyaXNvbiBuZWVkZWQpOiBpZiB0aGUgd2FsaworZnJvbSB0aGUgZW50 cnkncyB0YXJnZXQgdG8gdGhlIGxpdmUgdHVwbGUgY3Jvc3NlcyBhIGhvcCB0aGF0IGNoYW5n ZWQgYSwgdGhlCitlbnRyeSBpcyBzdGFsZSBhbmQgZHJvcHBlZC4KKworV2hlbiB5b3Ugbm93 IElOU0VSVCBhIHJvdyB3aXRoIGEgPSBYLCBfYnRfY2hlY2tfdW5pcXVlIHNjYW5zIGlkeF9h IGZvciBrZXkgWAorYW5kIGZpbmRzIHRoYXQgc3RhbGUgKFggLT4gcm9vdCkgbGVhZi4gIEl0 IG11c3QgZGVjaWRlOiBpcyB0aGlzIGEgcmVhbAorY29uZmxpY3Q/CisKKzIuIFdoeSB0aGUg cmVhZC1wYXRoIGJpdG1hcCBpcyBub3Qgc3VmZmljaWVudCBoZXJlCisKK1RoZSByZWFkIHBh dGgncyBsb2dpYyBpczogInRoaXMgZW50cnkgY3Jvc3NlZCBhIGhvcCB0aGF0IGNoYW5nZWQg YSA9PiBzdGFsZSA9PgorZHJvcCBpdCwgdGhlIGZyZXNoIGVudHJ5IHdpbGwgc3VwcGx5IHRo ZSByb3cuIiAgRm9yIHNjYW5zIHRoYXQncyBjb3JyZWN0IGFuZAorY29tcGxldGUsIGJlY2F1 c2UgZXZlcnkgbGl2ZSByb3cgaGFzIGV4YWN0bHkgb25lIG5vbi1zdGFsZSBlbnRyeSB0aGF0 CityZS1zdXBwbGllcyBpdC4KKworQnV0IGEgdW5pcXVlIGNoZWNrIGlzIGFza2luZyBhIGRp ZmZlcmVudCBxdWVzdGlvbi4gIEl0IGlzIG5vdCAic2hvdWxkIEkgcmV0dXJuCit0aGlzIHJv dz8iIC0tIGl0IGlzICJkb2VzIHRoZSBsaXZlIHR1cGxlIHRoaXMgZW50cnkgcmVzb2x2ZXMg dG8gY29uZmxpY3Qgd2l0aAordGhlIGtleSBJJ20gaW5zZXJ0aW5nPyIgIFRoZSBiaXRtYXAg Y2FuIG9ubHkgdGVsbCB5b3UgImFuIGluZGV4ZWQgYXR0cmlidXRlCitjaGFuZ2VkIHNvbWV3 aGVyZSBvbiB0aGUgY2hhaW4uIiAgSXQgY2Fubm90IHRlbGwgeW91IHdoYXQgdGhlIGxpdmUg dmFsdWUgaXMKK25vdywgYW5kIHRoYXQgaXMgZXhhY3RseSB3aGF0IHlvdSBuZWVkIHRvIGtu b3cgdG8gZGV0ZWN0IGEgZHVwbGljYXRlLgorCitUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBB QkEgcHJvYmxlbS4gIENvbnNpZGVyOgorCisgIElOU0VSVCAoYT0xMCkgICAgICAgICAgICAg ICAgICBMUFsxXSBhPTEwICAgKHJvb3QpCisgIFVQREFURSBhPTExICAgKEhPVC1pbmRleGVk KSAgICBMUFsyXSBhPTExICAgYml0bWFwIHthfSwgbGVhZiAoMTEpLT5MUFsyXQorICBVUERB VEUgYT0xMCAgIChIT1QtaW5kZXhlZCkgICAgTFBbM10gYT0xMCAgIGJpdG1hcCB7YX0sIGxl YWYgKDEwKS0+TFBbM10sIGxpdmUKKworaWR4X2Egbm93IGhhcyBsZWF2ZXMgKDEwKS0+TFBb MV0gW3N0YWxlIGFuY2VzdG9yXSwgKDExKS0+TFBbMl0gW3N0YWxlXSwgYW5kCisoMTApLT5M UFszXSBbZnJlc2gsIGxpdmVdLgorCitOb3cgSU5TRVJUIChhPTEwKSwgYSBnZW51aW5lIGR1 cGxpY2F0ZSBvZiB0aGUgbGl2ZSByb3cuICBfYnRfY2hlY2tfdW5pcXVlIHNjYW5zCitmb3Ig a2V5IDEwIGFuZCBmaW5kcyB0aGUgKDEwKS0+TFBbMV0gc3RhbGUgYW5jZXN0b3IgZW50cnku ICBUaGUgY2hhaW4gd2FsayBmcm9tCitMUFsxXSB0byB0aGUgbGl2ZSB0dXBsZSBMUFszXSBj cm9zc2VzIGhvcHMgdGhhdCBjaGFuZ2VkIGEgKDEwLT4xMSwgdGhlbgorMTEtPjEwKSwgc28g dGhlIGJpdG1hcCBzYXlzICJzdGFsZS4iICBJZiB0aGUgdW5pcXVlIGNoZWNrIHRydXN0ZWQg dGhlIGJpdG1hcAorYWxvbmUgaXQgd291bGQgc2tpcCAoMTApLT5MUFsxXSBhcyBzdGFsZSBh bmQgbWlzcyB0aGUgcmVhbCBkdXBsaWNhdGUuICBUaGUKK2JpdG1hcCBpcyBmb29sZWQgYmVj YXVzZSBhIGNoYW5nZWQgKHNvIHRoZSBiaXQgaXMgc2V0KSBldmVuIHRob3VnaCBpdCBjaGFu Z2VkCitiYWNrIHRvIHRoZSBzYW1lIHZhbHVlOiAiYW4gYXR0cmlidXRlIGNoYW5nZWQgb24g dGhlIGNoYWluIiBpcyBub3QgInRoZSBsaXZlCit2YWx1ZSBkaWZmZXJzIGZyb20gdGhpcyBs ZWFmJ3Mga2V5LiIgIFVuZGVyIEFCQSB0aGV5IGRpdmVyZ2UuCisKK1RoZSBzaGFycGVyIGNh c2UgaXMgY29uY3VycmVuY3kuICBXaGlsZSB0aGUgcmVzdG9yaW5nIFVQREFURSAoYTogMTEg LT4gMTApIGlzCitpbiBmbGlnaHQsIGl0IGhhcyB3cml0dGVuIGl0cyBuZXcgaGVhcCB0dXBs ZSBidXQgbm90IHlldCBpbnNlcnRlZCB0aGUgZnJlc2gKKygxMCktPkxQWzNdIGxlYWYuICBB IGNvbmN1cnJlbnQgSU5TRVJUIChhPTEwKSBydW5uaW5nIGl0cyBfYnRfY2hlY2tfdW5pcXVl IHNjYW4KK2luIHRoYXQgd2luZG93IHNlZXMgb25seSB0aGUgc3RhbGUgKDEwKS0+TFBbMV0g YW5jZXN0b3IuICBUaGUgdmFsdWUgcmVjaGVjaworYmVsb3cgbWFrZXMgdGhhdCBoaXQgcmVz b2x2ZSB0byB4d2FpdCBvbiB0aGUgaW4tZmxpZ2h0IHVwZGF0ZXIgKHZpYQorX2J0X2RvaW5z ZXJ0J3Mgd2FpdC1hbmQtcmVjaGVjayksIHNvIHRoZSBpbnNlcnRlciByZS1jaGVja3MgYWZ0 ZXIgdGhlIHVwZGF0ZXIKK2NvbW1pdHMgYW5kIGZpbmRzIHRoZSBjb25mbGljdC4gIEEgYml0 bWFwLW9ubHkgdmVyZGljdCB3b3VsZCBza2lwIHRoZSBhbmNlc3RvcgorYmVmb3JlIHJlYWNo aW5nIHRoZSB4d2FpdCBsb2dpYyBhbmQgYWRtaXQgYSBkdXBsaWNhdGUgLS0gd2hpY2ggaXMg d2h5IHRoZQorcmVjaGVjayBpcyBhIGNvcnJlY3RuZXNzIHJlcXVpcmVtZW50LCBub3QgbWVy ZWx5IGFuIG9wdGltaXphdGlvbi4KKworMy4gV2h5IGEgdmFsdWUgY29tcGFyaXNvbiBmaXhl cyBpdCwgYW5kIHdoeSBpdCBtdXN0IGJlIHRoZSBvcGNsYXNzIGNvbXBhcmF0b3IKKworU28g dGhlIHVuaXF1ZSBwYXRoIG5lZWRzIHRvIGxvb2sgYXQgdGhlIGFjdHVhbCBsaXZlIHZhbHVl LCBub3QganVzdCAiZGlkCitzb21ldGhpbmcgY2hhbmdlLiIgIF9idF9jaGVja191bmlxdWUg ZmV0Y2hlcyB0aGUgY29uZmxpY3RpbmcgdHVwbGUgdW5kZXIKK1NuYXBzaG90RGlydHkgYW5k LCB3aGVuIGhpX3JlY2hlY2sgc2F5cyBhIEhPVC1pbmRleGVkIGhvcCB3YXMgY3Jvc3NlZCwg Y2FsbHMKK19idF9oZWFwX2tleXNfZXF1YWxfbGVhZiB0byBjb21wYXJlIHRoZSBsaXZlIHR1 cGxlJ3MgY3VycmVudCBrZXkgYWdhaW5zdCB0aGUKK2Fycml2aW5nIGxlYWYncyBzdG9yZWQg a2V5OgorCisgLSBsaXZlIGtleSBlcXVhbHMgdGhlIGxlYWYga2V5IC0+IGdlbnVpbmUgZHVw bGljYXRlIChvciBhbiBpbi1mbGlnaHQgY29uZmxpY3QKKyAgIHJlYWNoZWQgYXMgeHdhaXQp IC0tIGNvcnJlY3Q6IEFCQSBiYWNrIHRvIFggaXMgYSByZWFsIGNvbmZsaWN0IHdpdGggYSBu ZXcgWC4KKyAtIGxpdmUga2V5IGRpZmZlcnMgLT4gdGhlIGxlYWYgaXMgdHJ1bHkgc3RhbGUg LT4gc2tpcCBpdCAodGhlIGZyZXNoIGVudHJ5CisgICBoYW5kbGVzIHRoZSByZWFsIHJvdyku CisKK1doaWNoIGVxdWFsaXR5PyAgVHdvIGNhbmRpZGF0ZXM6CisKK0JpdHdpc2UvaW1hZ2Ug Y29tcGFyaXNvbiAoZGF0dW1faW1hZ2VfZXEpIGNvbXBhcmVzIHJhdyBieXRlcy4gIFRoYXQg aXMgd3JvbmcKK2ZvciB1bmlxdWUgY2hlY2tpbmcgaW4gdGhlIGRhbmdlcm91cyBkaXJlY3Rp b24uICBVbmlxdWVuZXNzIGluIFBvc3RncmVTUUwgaXMKK2RlZmluZWQgYnkgdGhlIGluZGV4 IG9wY2xhc3MncyBlcXVhbGl0eSBvcGVyYXRvciwgbm90IGJ5dGUgaWRlbnRpdHksIGFuZCBt YW55Cit0eXBlcyBoYXZlIHZhbHVlcyBlcXVhbCB1bmRlciB0aGUgb3BjbGFzcyBidXQgYnl0 ZS1kaXN0aW5jdDoKKyAtIG51bWVyaWM6IDEuMCBhbmQgMS4wMCBhcmUgb3BjbGFzcy1lcXVh bCwgZGlmZmVyZW50IG9uLWRpc2sgYnl0ZXMuCisgLSBmbG9hdDg6IC0wLjAgYW5kICswLjAg YXJlIGVxdWFsLCBkaWZmZXJlbnQgYml0IHBhdHRlcm5zLgorIC0gdGV4dC9jaXRleHQgdW5k ZXIgYSBub25kZXRlcm1pbmlzdGljIGNvbGxhdGlvbjogY2Fub25pY2FsbHktZXF1aXZhbGVu dAorICAgc3RyaW5ncyB0aGF0IGFyZSBub3QgYnl0ZS1pZGVudGljYWwuCisKK0EgYml0d2lz ZSBjb21wYXJpc29uIHdvdWxkIGNvbmNsdWRlICJub3QgZXF1YWwgPT4gc3RhbGUgPT4gc2tp cCIgZm9yIGEgbGl2ZQorMS4wMCB2ZXJzdXMgYW4gaW5zZXJ0ZWQgMS4wIGFuZCBtaXNzIGEg Z2VudWluZSB2aW9sYXRpb24gLS0gYSBjb3JyZWN0bmVzcyBob2xlCithcyBiYWQgYXMgdGhl IEFCQSBvbmUuCisKK1NvIF9idF9oZWFwX2tleXNfZXF1YWxfbGVhZiB1c2VzIHRoZSBpbmRl eCdzIG93biBCVE9SREVSX1BST0MgKGJ0cmVlIHN1cHBvcnQKK2Z1bmN0aW9uIDEpIHVuZGVy IGVhY2gga2V5IGNvbHVtbidzIGNvbGxhdGlvbiwgdGhlIHNhbWUgbWFjaGluZXJ5IF9idF9j b21wYXJlCithbmQgX2J0X21rc2NhbmtleSB1c2UgdG8gZGVmaW5lIGVxdWFsaXR5IGZvciB0 aGUgaW5kZXguICBBIHplcm8gcmVzdWx0IG1lYW5zCisiZXF1YWwgYXMgdGhlIGluZGV4IGRl ZmluZXMgZXF1YWxpdHksIiB3aGljaCBpcyBwcmVjaXNlbHkgdGhlIHVuaXF1ZS12aW9sYXRp b24KK2NvbmRpdGlvbiwgYW5kIHRoZSB2ZXJkaWN0IGFncmVlcyB3aXRoIHRoZSBpbmRleCdz IG93biBub3Rpb24gb2YgdW5pcXVlbmVzcyBpbgorYm90aCBkaXJlY3Rpb25zLgorCis0LiBX aHkgbm8gZXhwcmVzc2lvbiBldmFsdWF0aW9uIGlzIG5lZWRlZAorCitfYnRfaGVhcF9rZXlz X2VxdWFsX2xlYWYgcmVhZHMgZWFjaCBrZXkgY29sdW1uIHN0cmFpZ2h0IGZyb20gdGhlIGhl YXAgc2xvdAorKHNsb3RfZ2V0YXR0cikgYW5kIGNvbXBhcmVzIGl0IHRvIHRoZSBsZWFmIGRh dHVtOyBpdCBkb2VzIG5vdCBldmFsdWF0ZSBpbmRleGVkCitleHByZXNzaW9ucyBhbmQgbmVl ZHMgbm8gZXhlY3V0b3Igc3RhdGUuICBUaGF0IGlzIHN1ZmZpY2llbnQgYmVjYXVzZSB0aGUK K3JlY2hlY2sgaXMgb25seSBldmVyIHJlYWNoZWQgZm9yIGFuIGluZGV4IHJlY2VpdmluZyBh IGZyZXNoIGVudHJ5IGR1cmluZyBhCitIT1QtaW5kZXhlZCB1cGRhdGUsIGFuZCBIZWFwVXBk YXRlSG90QWxsb3dhYmxlIGRpc3F1YWxpZmllcyBhbnkgVVBEQVRFIHRoYXQKK3RvdWNoZXMg YW4gYXR0cmlidXRlIHJlZmVyZW5jZWQgYnkgYW4gZXhwcmVzc2lvbiBpbmRleAorKElOREVY X0FUVFJfQklUTUFQX0VYUFJFU1NJT04gY2FwdHVyZXMgZXZlcnkgc3VjaCBhdHRyaWJ1dGUp LiAgU28gYSBIT1QtaW5kZXhlZAorY2hhaW4gbmV2ZXIgaGFzIGEgY3Jvc3NlZCBob3AgYWZm ZWN0aW5nIGFuIGV4cHJlc3Npb24gaW5kZXgsIHRoZSBpbmRleCByZWFjaGluZwordGhlIHJl Y2hlY2sgbmV2ZXIgaGFzIGFuIGV4cHJlc3Npb24ga2V5IGNvbHVtbiAoZXZlcnkgaW5ka2V5 IGlzIGEgcmVhbAorYXR0cmlidXRlIG51bWJlciksIGFuZCB0aGVyZSBpcyBub3RoaW5nIHRv IGV2YWx1YXRlLiAgSWYgc2VsZWN0aXZlIG1haW50ZW5hbmNlCitvZiBleHByZXNzaW9uIGlu ZGV4ZXMgaXMgaW1wbGVtZW50ZWQgaW4gdGhlIGZ1dHVyZSwgdGhpcyBpcyB3aGVyZSBhbgor ZXhwcmVzc2lvbi1ldmFsdWF0aW5nIGNvbXBhcmlzb24gKGUuZy4gRm9ybUluZGV4RGF0dW0p IHdvdWxkIGJlIHJlaW50cm9kdWNlZC4KKworNS4gV2h5IHRoZSBhc3ltbWV0cnkgKGJpdG1h cCBvbiByZWFkLCB2YWx1ZSByZWNoZWNrIG9uIHVuaXF1ZSkgaXMgaW50ZW50aW9uYWwKKwor SXQgbG9va3MgbGlrZSB0d28gZGlmZmVyZW50IGFuc3dlcnMgdG8gdGhlIHNhbWUgcXVlc3Rp b24sIGJ1dCB0aGUgcXVlc3Rpb25zCitkaWZmZXI6CisKKyAtIFJlYWQvc2NhbiBwYXRoOiAi c2hvdWxkIHRoaXMgcm93IGJlIHJldHVybmVkPyIgIEEgc3RhbGUgZW50cnkgaXMgcmVkdW5k YW50CisgICAodGhlIGZyZXNoIGVudHJ5IHN1cHBsaWVzIHRoZSByb3cpLCBzbyB0aGUgY29u c2VydmF0aXZlIGJpdG1hcCB2ZXJkaWN0IGlzCisgICBzdWZmaWNpZW50IC0tIHdvcnN0IGNh c2UgdW5kZXIgQUJBIHlvdSBkcm9wIGEgcmVkdW5kYW50IGVudHJ5IGFuZCB0aGUgZnJlc2gK KyAgIG9uZSBzdGlsbCByZXR1cm5zIHRoZSByb3cuICBObyB2YWx1ZSBjb21wYXJpc29uLCBz byByZWFkcyBzdGF5CisgICBhY2Nlc3MtbWV0aG9kLWFnbm9zdGljIGFuZCBjaGVhcC4KKyAt IFVuaXF1ZS1jaGVjayBwYXRoOiAiaXMgdGhpcyBhIGNvbmZsaWN0PyIgIEEgd3JvbmcgInN0 YWxlIiB2ZXJkaWN0IGhlcmUgZG9lcworICAgbm90IGp1c3QgZHJvcCBhIHJlZHVuZGFudCBl bnRyeTsgaXQgc2lsZW50bHkgYWRtaXRzIGEgZHVwbGljYXRlLCBjb3JydXB0aW5nCisgICB0 aGUgY29uc3RyYWludC4gIEl0IGNhbm5vdCB0b2xlcmF0ZSB0aGUgYml0bWFwJ3MgZmFsc2Ug InN0YWxlIiB1bmRlciBBQkEgYW5kCisgICBtdXN0IGNvbnN1bHQgdGhlIGxpdmUgdmFsdWUg KG9yIHdhaXQgb24gYW4gaW4tZmxpZ2h0IHVwZGF0ZXIpIHZpYSB0aGUKKyAgIG9wY2xhc3Mg Y29tcGFyYXRvci4KKworVGhlIGJpdG1hcCBpcyBhIGZpbHRlciAoYSBuZWNlc3NhcnkgY29u ZGl0aW9uOiAiY291bGQgYmUgc3RhbGUiKTsgdGhlIG9wY2xhc3MKK3JlY2hlY2sgaXMgdGhl IGF1dGhvcml0eSAodGhlIHN1ZmZpY2llbnQgY29uZGl0aW9uOiAiaXMgdGhlIGxpdmUga2V5 IGFjdHVhbGx5CitkaWZmZXJlbnQsIG9yIGlzIGEgY29uZmxpY3RpbmcgdXBkYXRlIGluIGZs aWdodCIpLiAgVGhlIHVuaXF1ZSBwYXRoIGxheWVycyB0aGUKK2F1dGhvcml0eSBvbiB0b3Ag b2YgdGhlIGZpbHRlciBwcmVjaXNlbHkgYmVjYXVzZSBpdHMgZXJyb3IgbW9kZSBpcwordW5m b3JnaXZpbmcuCisKK0luIG9uZSBzZW50ZW5jZTogdGhlIHVuaXF1ZSBjaGVjayBjb21wYXJl cyB0aGUgbGl2ZSB0dXBsZSdzIGN1cnJlbnQga2V5IHRvIHRoZQorYXJyaXZpbmcgbGVhZiB3 aXRoIHRoZSBpbmRleCdzIG93biBlcXVhbGl0eSAobm90IGJ5dGVzKSBiZWNhdXNlIHRoZQor Y3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGNhbiBvbmx5IHNheSAic29tZXRoaW5nIGNoYW5n ZWQiIC0tIHRydWUgdW5kZXIgYW4KK1gtPlktPlggY3ljbGUgZXZlbiB0aG91Z2ggdGhlIHZh bHVlIGlzIGJhY2sgdG8gWCAtLSBhbmQgb25seSBhbiBvcGNsYXNzLWNvcnJlY3QKK3ZhbHVl IGNvbXBhcmlzb24gKHdoaWNoIGFsc28gcm91dGVzIGFuIGluLWZsaWdodCByZXN0b3Jpbmcg dXBkYXRlIHRvIHh3YWl0KSBjYW4KK2JvdGggcmVjb2duaXplIHRoZSBjeWNsZWQtYmFjayB2 YWx1ZSBhcyBhIGdlbnVpbmUgZHVwbGljYXRlIGFuZCBjYXRjaAorZHVwbGljYXRlcyB0aGF0 IGFyZSBvcGNsYXNzLWVxdWFsIGJ1dCBub3QgYnl0ZS1pZGVudGljYWwsIGVpdGhlciBvZiB3 aGljaCBhCitiaXRtYXAgb3IgYSBiaXR3aXNlIGNvbXBhcmlzb24gd291bGQgZ2V0IHdyb25n LgorCis2LiBXaHkgdGhlIGV4ZWN1dG9yJ3MgbW9kaWZpZWQtYXR0cnMgY29tcGFyaXNvbiB1 c2VzIGRhdHVtX2ltYWdlX2VxIHdoaWxlIHRoZQorICAgaGVhcCBzaWRlIHVzZXMgZGF0dW1J c0VxdWFsCisKK1RoZSAibW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIiBzZXQgKHdoaWNo IGRyaXZlcyB0aGUgSE9UIHZzIFNJVSB2cwordXBkYXRlLWFsbC1pbmRleGVzIGRlY2lzaW9u KSBpcyBjb21wdXRlZCBvbiB0d28gZGlmZmVyZW50IHBhdGhzIHRoYXQgYXJlIG1lYW50Cit0 byBiZSAqZnVuY3Rpb25hbGx5KiBlcXVpdmFsZW50IC0tIHRoZXkgYW5zd2VyIHRoZSBzYW1l IHF1ZXN0aW9uLCAid2hpY2gKK2luZGV4ZWQgYXR0cmlidXRlcyBjaGFuZ2VkIHZhbHVlPyIg LS0gYnV0IGRlbGliZXJhdGVseSB1c2UgZGlmZmVyZW50IERhdHVtCitjb21wYXJhdG9yczoK KworIC0gRXhlY3V0b3IgcGF0aDogRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMgLT4gRXhl Y0NvbXBhcmVTbG90QXR0cnMgY29tcGFyZXMKKyAgIHR3byBUdXBsZVRhYmxlU2xvdHMgd2l0 aCBkYXR1bV9pbWFnZV9lcS4KKyAtIE5vbi1leGVjdXRvciBwYXRoOiBzaW1wbGVfaGVhcF91 cGRhdGUgLT4gSGVhcFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMgLT4KKyAgIGhlYXBfYXR0cl9l cXVhbHMgY29tcGFyZXMgdHdvIEhlYXBUdXBsZXMnIERhdHVtcyB3aXRoIGRhdHVtSXNFcXVh bC4KKworVGhlIGRpZmZlcmVuY2UgaXMgaW50ZW50aW9uYWwgYW5kIGNvcnJlY3QsIGZvciB0 aHJlZSByZWFzb25zOgorCisgLSBObyBUT0FTVCBhdCB0aGUgZXhlY3V0b3Igc3RhZ2UuICBF eGVjQ29tcGFyZVNsb3RBdHRycyBydW5zIG9uIHNsb3QgRGF0dW1zCisgICB0aGF0IGFyZSB0 aGUgbG9naWNhbCwgaW4tbWVtb3J5IHZhbHVlcyBvZiB0aGUgbmV3L29sZCB0dXBsZSwgYmVm b3JlIGFueQorICAgdGFibGUgQU0ncyBzdG9yYWdlIHBhdGggaGFzIHJ1bi4gIFRPQVNUIChj b21wcmVzc2lvbi9leHRlcm5hbGl6YXRpb24pIGlzIGEKKyAgIGhlYXBhbSBzdG9yYWdlIGRl dGFpbCBhcHBsaWVkIGxhdGVyLCBpbnNpZGUgdGhlIHRhYmxlIEFNLCBzbyB0aGUgInR3bwor ICAgcGh5c2ljYWxseSBkaWZmZXJlbnQgdmFybGVuYSBlbmNvZGluZ3Mgb2YgdGhlIHNhbWUg bG9naWNhbCB2YWx1ZSIgY2FzZSB0aGF0CisgICB3b3VsZCBtYWtlIGRhdHVtX2ltYWdlX2Vx IGFuZCBkYXR1bUlzRXF1YWwgZGlzYWdyZWUgY2Fubm90IGFyaXNlIGhlcmUuCisgLSBBTS1h Z25vc3RpY2lzbS4gIFRoZSBleGVjdXRvciBtdXN0IG5vdCBhc3N1bWUgaG93IGFueSB0YWJs ZSBBTSBzdG9yZXMKKyAgIHZhcmlhYmxlLWxlbmd0aCBkYXRhLiAgZGF0dW1faW1hZ2VfZXEg aXMgdGhlIHN0b3JhZ2UtbmV1dHJhbCAiYXJlIHRoZXNlIHR3bworICAgbG9naWNhbCB2YWx1 ZXMgaW1hZ2UtaWRlbnRpY2FsIiB0ZXN0IGZvciBzbG90IERhdHVtczsgZGF0dW1Jc0VxdWFs IGVuY29kZXMgYQorICAgYnl0ZS1sYXlvdXQgYXNzdW1wdGlvbiB0aGF0IGJlbG9uZ3Mgb24g dGhlIGhlYXAgc2lkZSwgbm90IGluIHRoZSBleGVjdXRvci4KKyAtIENvc3QuICBkYXR1bUlz RXF1YWwgb24gdGhlIHNsb3QgcGF0aCB3b3VsZCBmb3JjZSBhIHNsb3QtPkRhdHVtIHRyYW5z Zm9ybQorICAgd2l0aCBoZWFwIHNlbWFudGljcyBvbiBhIGhvdCBwYXRoLCBwZXIgYXR0cmli dXRlIHBlciB1cGRhdGVkIHJvdywgZm9yIG5vCisgICBiZW5lZml0LgorCitFaXRoZXIgY29t cGFyYXRvciBlcnJzIG9ubHkgdG93YXJkIHJlcG9ydGluZyBhIHZhbHVlICJjaGFuZ2VkIiB3 aGVuIGl0IG1pZ2h0IG5vdAoraGF2ZSAodGhlIHNhZmUgZGlyZWN0aW9uIGhlcmU6IGEgcmVk dW5kYW50IGZyZXNoIGluZGV4IGVudHJ5IGlzIHRvbGVyYXRlZCBieQordGhlIFNJVSByZWFk IHBhdGgsIGEgc2tpcHBlZCBvbmUgaXMgbm90KSwgc28gdGhlIHR3byBwYXRocyByZWFjaCB0 aGUgc2FtZQorSE9UL1NJVSBkZWNpc2lvbiBmb3IgdGhlIHNhbWUgdmFsdWUgdHJhbnNpdGlv bi4gIFRoaXMgbWlycm9ycyB0aGUgcmVhZC12cy0KK3VuaXF1ZSBhc3ltbWV0cnkgYWJvdmU6 IHVzZSB0aGUgY2hlYXBlc3QgY29ycmVjdCBjb21wYXJpc29uIHRoZSBsYXllcidzCitndWFy YW50ZWVzIGFsbG93LCBubyBtb3JlLiAgSGVhcFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMvaGVh cF9hdHRyX2VxdWFscyBleGlzdAorb25seSBmb3Igc2ltcGxlX2hlYXBfdXBkYXRlKCkncyBi ZW5lZml0IChjYXRhbG9nIGFuZCBvdGhlciBub24tZXhlY3V0b3IKK3VwZGF0ZXMpIGFuZCBh cmUgdGFyZ2V0ZWQgZm9yIGV2ZW50dWFsIHJlbW92YWwgb25jZSBjYXRhbG9nIHVwZGF0ZXMg dHJhY2sgdGhlaXIKK293biBjaGFuZ2VzOyBub3RoaW5nIG5ldyBzaG91bGQgZGVwZW5kIG9u IHRoZW0gYXMgcHVibGljIEFQSS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9o b3RfaW5kZXhlZC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hvdF9pbmRleGVkLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE1Mzc4NTMxZTkxCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hvdF9pbmRleGVkLmgKQEAgLTAsMCAr MSwyMDIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGhvdF9pbmRleGVkLmgK KyAqCSAgSW5saW5lLXRyYWlsaW5nIG1vZGlmaWVkLWF0dHJpYnV0ZXMgYml0bWFwIGZvciBI T1QtaW5kZXhlZCAoSE9UL1NJVSkKKyAqCSAgdHVwbGVzLgorICoKKyAqIEEgaGVhcCB0dXBs ZSBwcm9kdWNlZCBieSBhIEhPVC1pbmRleGVkIFVQREFURSBoYXMgSEVBUF9JTkRFWEVEX1VQ REFURUQgc2V0CisgKiBpbiB0X2luZm9tYXNrMiBhbmQgY2FycmllcywgYXBwZW5kZWQgYWZ0 ZXIgaXRzIG5vcm1hbCBhdHRyaWJ1dGUgZGF0YSwgYQorICogZml4ZWQtc2l6ZSBiaXRtYXAg cmVjb3JkaW5nIHdoaWNoIGhlYXAgYXR0cmlidXRlcyBjaGFuZ2VkIGF0IHRoaXMgY2hhaW4g aG9wCisgKiAocmVsYXRpdmUgdG8gdGhlIHByaW9yIGNoYWluIG1lbWJlcikuICBCaXQgKGF0 dG51bSAtIDEpIGNvcnJlc3BvbmRzIHRvIHVzZXIKKyAqIGF0dHJpYnV0ZSBhdHRudW0uCisg KgorICogVGhlIGJpdG1hcCBpcyBjZWlsKG5hdHRzIC8gOCkgYnl0ZXMsIHdoZXJlIG5hdHRz IGlzIHRoZSB0dXBsZSdzIG93bgorICogYXR0cmlidXRlIGNvdW50IGF0IHRoZSB0aW1lIGl0 IHdhcyB3cml0dGVuIChIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyBmb3IgYQorICogbGl2ZSB0 dXBsZTsgcHJlc2VydmVkIHNlcGFyYXRlbHkgZm9yIGEgc3R1Yiwgc2VlIGJlbG93KS4gIEl0 cyBsZW5ndGggaXMgbm90CisgKiBzdG9yZWQgYXMgc3VjaDsgaXQgb2NjdXBpZXMgdGhlIGZp bmFsIEhvdEluZGV4ZWRCaXRtYXBCeXRlcyhuYXR0cykgYnl0ZXMgb2YKKyAqIHRoZSBsaW5l IHBvaW50ZXIncyBpdGVtIGFuZCBpcyBsb2NhdGVkIHZpYSBJdGVtSWRHZXRMZW5ndGgoKSwg cGFzdCB0aGUKKyAqIGF0dHJpYnV0ZSBkYXRhOiByb3V0aW5lcyB0aGF0IGRlZm9ybSB0aGUg dHVwbGUgc3RvcCBhdCBuYXR0cyBhbmQgbmV2ZXIgc2VlCisgKiBpdC4KKyAqCisgKiBCZWNh dXNlIEFERCBDT0xVTU4gcmFpc2VzIHRoZSByZWxhdGlvbidzIG5hdHRzIHdpdGhvdXQgcmV3 cml0aW5nIGV4aXN0aW5nCisgKiB0dXBsZXMsIGEgY2hhaW4gY2FuIGhvbGQgdHVwbGVzIHdo b3NlIGJpdG1hcHMgd2VyZSBzaXplZCBmb3IgZGlmZmVyZW50CisgKiAoc21hbGxlcikgbmF0 dHMgdGhhbiB0aGUgcmVsYXRpb24gaGFzIG5vdy4gIENvbnN1bWVycyB0aGVyZWZvcmUgc2l6 ZSBhbmQKKyAqIGxvY2F0ZSBhIHR1cGxlJ3MgYml0bWFwIGZyb20gdGhhdCB0dXBsZSdzIE9X TiB3cml0ZS10aW1lIG5hdHRzCisgKiAoSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMpLCBu ZXZlciBmcm9tIHRoZSByZWxhdGlvbidzIGN1cnJlbnQgbmF0dHMuCisgKiBCaXQgcG9zaXRp b25zIGFyZSBhdHRyaWJ1dGUgYmFzZWQgYW5kIGlkZW50aWNhbCBhY3Jvc3Mgc2l6ZXMsIHNv IGEgc21hbGxlcgorICogYml0bWFwIHNpbXBseSBPUnMgaW50byB0aGUgbG93IGJ5dGVzIG9m IGEgbGFyZ2VyIGFjY3VtdWxhdG9yLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg MTk5Ni0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9m IENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS9hY2Nlc3MvaG90X2luZGV4ZWQuaAor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIEhPVF9JTkRFWEVEX0gK KyNkZWZpbmUgSE9UX0lOREVYRURfSAorCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWls cy5oIgorCisvKgorICogTnVtYmVyIG9mIGJ5dGVzIGluIHRoZSB0cmFpbGluZyBtb2RpZmll ZC1hdHRycyBiaXRtYXAgZm9yIGEgcmVsYXRpb24gd2l0aAorICogbmF0dHMgdXNlciBhdHRy aWJ1dGVzIChvbmUgYml0IHBlciBhdHRyaWJ1dGUsIGF0dG51bSAtIDEpLgorICovCitzdGF0 aWMgaW5saW5lIFNpemUKK0hvdEluZGV4ZWRCaXRtYXBCeXRlcyhpbnQgbmF0dHMpCit7CisJ QXNzZXJ0KG5hdHRzID49IDApOworCXJldHVybiAoU2l6ZSkgKChuYXR0cyArIDcpIC8gOCk7 Cit9CisKKy8qCisgKiBSZWFkLW9ubHkgcG9pbnRlciB0byB0aGUgdHJhaWxpbmcgbW9kaWZp ZWQtYXR0cnMgYml0bWFwIG9mIGEgSE9ULWluZGV4ZWQKKyAqIHR1cGxlLiAgaXRlbV9sZW4g aXMgSXRlbUlkR2V0TGVuZ3RoKCkgb2YgdGhlIHR1cGxlJ3MgbGluZSBwb2ludGVyOyBuYXR0 cyBpcworICogdGhlIHR1cGxlJ3MgT1dOIHdyaXRlLXRpbWUgYXR0cmlidXRlIGNvdW50IChI b3RJbmRleGVkVHVwbGVCaXRtYXBOYXR0cygpKSwKKyAqIE5PVCB0aGUgcmVsYXRpb24ncyBj dXJyZW50IG5hdHRzIC0tIHNlZSB0aGUgaW52YXJpYW50IGF0IHRoZSB0b3Agb2YgdGhpcwor ICogZmlsZTogYWZ0ZXIgQUREIENPTFVNTiBhIGNoYWluIGNhbiBob2xkIHR1cGxlcyB3aG9z ZSBiaXRtYXBzIHdlcmUgc2l6ZWQgZm9yCisgKiBhIHNtYWxsZXIgbmF0dHMsIGFuZCBsb2Nh dGluZyB0aGUgYml0bWFwIGZyb20gdGhlIHJlbGF0aW9uJ3MgY3VycmVudCBuYXR0cworICog d291bGQgcmVhZCBwYXN0IHRoZSB0dXBsZSdzIGRhdGEuICBUaGUgY2FsbGVyIG11c3QgaGF2 ZSB2ZXJpZmllZCB0aGF0IHRoZQorICogdHVwbGUgaGFzIEhFQVBfSU5ERVhFRF9VUERBVEVE IHNldC4KKyAqLworc3RhdGljIGlubGluZSBjb25zdCB1aW50OCAqCitIb3RJbmRleGVkR2V0 TW9kaWZpZWRCaXRtYXAoY29uc3QgSGVhcFR1cGxlSGVhZGVyRGF0YSAqaHR1cCwKKwkJCQkJ CQlTaXplIGl0ZW1fbGVuLCBpbnQgbmF0dHMpCit7CisJcmV0dXJuIChjb25zdCB1aW50OCAq KSAoKGNvbnN0IGNoYXIgKikgaHR1cCArCisJCQkJCQkJaXRlbV9sZW4gLSBIb3RJbmRleGVk Qml0bWFwQnl0ZXMobmF0dHMpKTsKK30KKworLyogV3JpdGFibGUgdmFyaWFudCwgZm9yIE9S LWluZyB0aGUgdW5pb24gb250byBhIHN1cnZpdmluZyByZWRpcmVjdCB0YXJnZXQuICovCitz dGF0aWMgaW5saW5lIHVpbnQ4ICoKK0hvdEluZGV4ZWRHZXRNb2RpZmllZEJpdG1hcFJXKEhl YXBUdXBsZUhlYWRlckRhdGEgKmh0dXAsCisJCQkJCQkJICBTaXplIGl0ZW1fbGVuLCBpbnQg bmF0dHMpCit7CisJcmV0dXJuICh1aW50OCAqKSAoKGNoYXIgKikgaHR1cCArCisJCQkJCSAg aXRlbV9sZW4gLSBIb3RJbmRleGVkQml0bWFwQnl0ZXMobmF0dHMpKTsKK30KKworLyogVHJ1 ZSBpZiB1c2VyIGF0dHJpYnV0ZSBhdHRudW0gKDEtYmFzZWQpIGlzIHNldCBpbiB0aGUgYml0 bWFwLiAqLworc3RhdGljIGlubGluZSBib29sCitIb3RJbmRleGVkQXR0cklzTW9kaWZpZWQo Y29uc3QgdWludDggKmJpdG1hcCwgQXR0ck51bWJlciBhdHRudW0pCit7CisJaW50CQkJYml0 ID0gYXR0bnVtIC0gMTsKKworCUFzc2VydChhdHRudW0gPj0gMSk7CisJcmV0dXJuIChiaXRt YXBbYml0IC8gOF0gJiAoMSA8PCAoYml0ICUgOCkpKSAhPSAwOworfQorCisvKiBTZXQgdXNl ciBhdHRyaWJ1dGUgYXR0bnVtICgxLWJhc2VkKSBpbiB0aGUgYml0bWFwLiAqLworc3RhdGlj IGlubGluZSB2b2lkCitIb3RJbmRleGVkU2V0QXR0ck1vZGlmaWVkKHVpbnQ4ICpiaXRtYXAs IEF0dHJOdW1iZXIgYXR0bnVtKQoreworCWludAkJCWJpdCA9IGF0dG51bSAtIDE7CisKKwlB c3NlcnQoYXR0bnVtID49IDEpOworCWJpdG1hcFtiaXQgLyA4XSB8PSAodWludDgpICgxIDw8 IChiaXQgJSA4KSk7Cit9CisKKy8qIE9SIHRoZSBmaXJzdCBuYnl0ZXMgb2Ygc3JjIGludG8g ZHN0LiAgZHN0IG11c3QgYmUgYXQgbGVhc3QgbmJ5dGVzIGxvbmc7IGl0CisgKiBtYXkgYmUg bG9uZ2VyIChzaXplZCBmb3IgYSBsYXJnZXIgbmF0dHMpIC0tIGJpdCBwb3NpdGlvbnMgYXJl IGF0dHJpYnV0ZQorICogYmFzZWQgYW5kIGlkZW50aWNhbCBhY3Jvc3Mgc2l6ZXMsIHNvIE9S LWluZyBvbmx5IHNyYydzIGJ5dGVzIGlzIGNvcnJlY3QuICovCitzdGF0aWMgaW5saW5lIHZv aWQKK0hvdEluZGV4ZWRCaXRtYXBVbmlvbih1aW50OCAqZHN0LCBjb25zdCB1aW50OCAqc3Jj LCBpbnQgc3JjX25hdHRzKQoreworCVNpemUJCW5ieXRlcyA9IEhvdEluZGV4ZWRCaXRtYXBC eXRlcyhzcmNfbmF0dHMpOworCisJZm9yIChTaXplIGkgPSAwOyBpIDwgbmJ5dGVzOyBpKysp CisJCWRzdFtpXSB8PSBzcmNbaV07Cit9CisKKy8qCisgKiBJcyBldmVyeSBiaXQgc2V0IGlu IHN1YiBhbHNvIHNldCBpbiBzdXBlcj8gIHN1YiBpcyBzaXplZCBmb3Igc3ViX25hdHRzOwor ICogc3VwZXIgbXVzdCBiZSBhdCBsZWFzdCB0aGF0IGxvbmcuICBVc2VkIGJ5IHBydW5lIHRv IGRlY2lkZSBhIGNvbGxhcHNlCisgKiBzdXJ2aXZvciBpcyByZWNsYWltYWJsZTogd2hlbiB0 aGUgYXR0cmlidXRlcyBhIGRlYWQgbWVtYmVyIGNoYW5nZWQgYXJlIGFsbAorICogY2hhbmdl ZCBhZ2FpbiBieSBsYXRlciBob3BzLCBldmVyeSBpbmRleCBlbnRyeSBwb2ludGluZyBhdCB0 aGF0IG1lbWJlciBpcworICogc3VwZXJzZWRlZCAoc3RhbGUpLCBzbyBpdCBjYXJyaWVzIG5v IGxpdmUgZW50cnkuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorSG90SW5kZXhlZEJpdG1h cElzU3Vic2V0KGNvbnN0IHVpbnQ4ICpzdWIsIGNvbnN0IHVpbnQ4ICpzdXBlciwgaW50IHN1 Yl9uYXR0cykKK3sKKwlTaXplCQluYnl0ZXMgPSBIb3RJbmRleGVkQml0bWFwQnl0ZXMoc3Vi X25hdHRzKTsKKworCWZvciAoU2l6ZSBpID0gMDsgaSA8IG5ieXRlczsgaSsrKQorCQlpZiAo KHN1YltpXSAmIH5zdXBlcltpXSkgIT0gMCkKKwkJCXJldHVybiBmYWxzZTsKKwlyZXR1cm4g dHJ1ZTsKK30KKworLyoKKyAqIFN0dWIgbGluZSBwb2ludGVycyAoY29sbGFwc2Ugc3Vydml2 b3JzKS4KKyAqCisgKiBXaGVuIHBydW5lIGNvbGxhcHNlcyBhIGRlYWQgSE9ULWluZGV4ZWQg Y2hhaW4gaXQgY2Fubm90IGtlZXAgdGhlIGRlYWQga2V5CisgKiB0dXBsZXMgYXMgbGl2ZSBk YXRhLWJlYXJpbmcgdHVwbGVzICh0aGVpciBYSURzIHdvdWxkIGhvbGQgYmFjaworICogcmVs ZnJvemVueGlkKS4gIEVhY2ggcHJlc2VydmVkIGRlYWQga2V5IHR1cGxlIGlzIGluc3RlYWQg Y29udmVydGVkIHRvIGFuCisgKiB4aWQtZnJlZSAic3R1YiI6IGFuIExQX05PUk1BTCBpdGVt IHdob3NlIEhlYXBUdXBsZUhlYWRlciBpcyBmcm96ZW4gYW5kCisgKiBtYXJrZWQgbm90LWEt cmVhbC10dXBsZSAoSEVBUF9JTkRFWEVEX1VQREFURUQgc2V0LCBIZWFwVHVwbGVIZWFkZXJH ZXROYXR0cworICogPT0gMCksIHdob3NlIHRfY3RpZC5vZmZudW0gZm9yd2FyZHMgdG8gdGhl IG5leHQga2V5IHR1cGxlIG9uIHRoZSBwYWdlLCBhbmQKKyAqIHdob3NlIHBheWxvYWQgaXMg dGhlIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBmb3IgdGhlIHNlZ21lbnQgaXQgcmVwcmVzZW50 cyAtLQorICogbG9jYXRlZCwgbGlrZSBhIGxpdmUgdHVwbGUncyBpbmxpbmUgYml0bWFwLCBp biB0aGUgZmluYWwKKyAqIEhvdEluZGV4ZWRCaXRtYXBCeXRlcyhuYXR0cykgYnl0ZXMgb2Yg dGhlIGl0ZW0sIHNvIHRoZSBzYW1lIGFjY2Vzc29ycyB3b3JrCisgKiBmb3IgYm90aC4gIEJl Y2F1c2UgdGhlIG5hdHRzIGZpZWxkIGlzIG92ZXJ3cml0dGVuIHdpdGggdGhlIDAgc2VudGlu ZWwsIHRoZQorICogc3R1YidzIHdyaXRlLXRpbWUgbmF0dHMgKG5lZWRlZCB0byBzaXplL2xv Y2F0ZSB0aGF0IGJpdG1hcCkgaXMgcHJlc2VydmVkIGluCisgKiB0aGUgb3RoZXJ3aXNlLXVu dXNlZCBibG9jay1udW1iZXIgaGFsZiBvZiB0X2N0aWQ7IEhvdEluZGV4ZWRTdHViR2V0Rm9y d2FyZAorICogcmVhZHMgb25seSB0aGUgb2Zmc2V0IGhhbGYuCisgKgorICogQSBzdHViIGlz IHNpZ25hdHVyZS1za2lwcGVkIChub3QgdmlzaWJpbGl0eS1za2lwcGVkKSBieSBldmVyeSBj b25zdW1lciB0aGF0CisgKiB3YWxrcyBMUF9OT1JNQUwgaXRlbXMuCisgKi8KK3N0YXRpYyBp bmxpbmUgYm9vbAorSG90SW5kZXhlZEhlYWRlcklzU3R1Yihjb25zdCBIZWFwVHVwbGVIZWFk ZXJEYXRhICp0dXApCit7CisJcmV0dXJuICh0dXAtPnRfaW5mb21hc2syICYgSEVBUF9JTkRF WEVEX1VQREFURUQpICE9IDAgJiYKKwkJSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHModHVwKSA9 PSAwOworfQorCisvKiBPZmZzZXQgb2YgdGhlIG5leHQga2V5IHR1cGxlIHRoaXMgc3R1YiBm b3J3YXJkcyB0byAoc2FtZSBwYWdlKS4gKi8KK3N0YXRpYyBpbmxpbmUgT2Zmc2V0TnVtYmVy CitIb3RJbmRleGVkU3R1YkdldEZvcndhcmQoY29uc3QgSGVhcFR1cGxlSGVhZGVyRGF0YSAq dHVwKQoreworCXJldHVybiBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlck5vQ2hlY2soJnR1 cC0+dF9jdGlkKTsKK30KKworLyoKKyAqIEJpdG1hcCBzaXppbmcgYWNyb3NzIHRoZSByZWxh dGlvbidzIGxpZmV0aW1lLgorICoKKyAqIFRoZSB0cmFpbGluZyBiaXRtYXAgaXMgY2VpbChu YXR0cyAvIDgpIGJ5dGVzLCB3aGVyZSBuYXR0cyBpcyB0aGUgcmVsYXRpb24ncworICogYXR0 cmlidXRlIGNvdW50ICphdCB0aGUgdGltZSB0aGUgdHVwbGUgd2FzIHdyaXR0ZW4qLiAgQURE IENPTFVNTiByYWlzZXMgdGhlCisgKiByZWxhdGlvbidzIG5hdHRzIHdpdGhvdXQgcmV3cml0 aW5nIGV4aXN0aW5nIHR1cGxlcywgc28gYSBjaGFpbiBjYW4gaG9sZAorICogdHVwbGVzIHdo b3NlIGJpdG1hcHMgd2VyZSBzaXplZCBmb3IgZGlmZmVyZW50IChzbWFsbGVyKSBuYXR0cyB0 aGFuIHRoZQorICogcmVsYXRpb24gaGFzIG5vdy4gIEV2ZXJ5IGNvbnN1bWVyIG11c3QgdGhl cmVmb3JlIHNpemUgYW5kIGxvY2F0ZSBhIHR1cGxlJ3MKKyAqIGJpdG1hcCBmcm9tIHRoYXQg dHVwbGUncyBvd24gd3JpdGUtdGltZSBuYXR0cywgbmV2ZXIgZnJvbSB0aGUgcmVsYXRpb24n cworICogY3VycmVudCBuYXR0cy4KKyAqCisgKiBGb3IgYSBsaXZlIEhPVC1pbmRleGVkIHR1 cGxlIHRoZSB3cml0ZS10aW1lIG5hdHRzIGlzIEhlYXBUdXBsZUhlYWRlckdldE5hdHRzCisg KiAoYSBmcmVzaGx5IGZvcm1lZCBVUERBVEUgdHVwbGUgc3RvcmVzIHRoZSBmdWxsIHJlbGF0 aW9uIG5hdHRzLCB3aGljaCBpcyB3aGF0CisgKiBoZWFwX2Zvcm1faG90X2luZGV4ZWRfdHVw bGUgc2l6ZWQgdGhlIGJpdG1hcCB3aXRoKS4gIEEgc3R1YiBvdmVyd3JpdGVzIG5hdHRzCisg KiB3aXRoIDAgYXMgaXRzIHNlbnRpbmVsLCBzbyBpdCBwcmVzZXJ2ZXMgaXRzIHdyaXRlLXRp bWUgbmF0dHMgaW4gdGhlIHVudXNlZAorICogYmxvY2stbnVtYmVyIGhhbGYgb2YgdF9jdGlk IGluc3RlYWQgKHRoZSBvZmZzZXQgaGFsZiBob2xkcyB0aGUgZm9yd2FyZAorICogbGluayku CisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorSG90SW5kZXhlZFN0dWJTZXRCaXRtYXBOYXR0 cyhIZWFwVHVwbGVIZWFkZXJEYXRhICp0dXAsIGludCBuYXR0cykKK3sKKwlCbG9ja0lkU2V0 KCZ0dXAtPnRfY3RpZC5pcF9ibGtpZCwgKEJsb2NrTnVtYmVyKSBuYXR0cyk7Cit9CisKK3N0 YXRpYyBpbmxpbmUgaW50CitIb3RJbmRleGVkU3R1YkdldEJpdG1hcE5hdHRzKGNvbnN0IEhl YXBUdXBsZUhlYWRlckRhdGEgKnR1cCkKK3sKKwlyZXR1cm4gKGludCkgQmxvY2tJZEdldEJs b2NrTnVtYmVyKCZ0dXAtPnRfY3RpZC5pcF9ibGtpZCk7Cit9CisKKy8qIFdyaXRlLXRpbWUg bmF0dHMgb2YgYW55IEhPVC1pbmRleGVkIGl0ZW0gKGxpdmUgdHVwbGUgb3Igc3R1YikuICov CitzdGF0aWMgaW5saW5lIGludAorSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMoY29uc3Qg SGVhcFR1cGxlSGVhZGVyRGF0YSAqdHVwKQoreworCWlmIChIb3RJbmRleGVkSGVhZGVySXNT dHViKHR1cCkpCisJCXJldHVybiBIb3RJbmRleGVkU3R1YkdldEJpdG1hcE5hdHRzKHR1cCk7 CisJcmV0dXJuIEhlYXBUdXBsZUhlYWRlckdldE5hdHRzKHR1cCk7Cit9CisKKyNlbmRpZgkJ CQkJCQkvKiBIT1RfSU5ERVhFRF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvaHR1cF9kZXRhaWxzLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaHR1cF9kZXRhaWxzLmgK aW5kZXggNzdhNmM0OGZkNzEuLjdlYjdmODZmNWVkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvaHR1cF9kZXRhaWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBf ZGV0YWlscy5oCkBAIC0yODksNyArMjg5LDEzIEBAIEhFQVBfWE1BWF9JU19LRVlTSFJfTE9D S0VEKHVpbnQxNiBpbmZvbWFzaykKICAqIGluZm9ybWF0aW9uIHN0b3JlZCBpbiB0X2luZm9t YXNrMjoKICAqLwogI2RlZmluZSBIRUFQX05BVFRTX01BU0sJCQkweDA3RkYJLyogMTEgYml0 cyBmb3IgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgKi8KLS8qIGJpdHMgMHgxODAwIGFyZSBhdmFp bGFibGUgKi8KKyNkZWZpbmUgSEVBUF9JTkRFWEVEX1VQREFURUQJMHgwODAwCS8qIEhPVCB0 dXBsZSBwcm9kdWNlZCBieSBhbiBVUERBVEUKKwkJCQkJCQkJCQkgKiB0aGF0IGFsc28gY2hh bmdlZCBhbiBpbmRleGVkCisJCQkJCQkJCQkJICogYXR0cmlidXRlIChIT1QvU0lVKTsgaW5k ZXggc2NhbnMKKwkJCQkJCQkJCQkgKiB0aGF0IHJlYWNoIGl0IHZpYSBhIGNoYWluIHJlY2hl Y2sKKwkJCQkJCQkJCQkgKiB0aGUgYXJyaXZpbmcgbGVhZiBrZXkgYWdhaW5zdCB0aGUKKwkJ CQkJCQkJCQkgKiBsaXZlIHR1cGxlLiAqLworLyogYml0IDB4MTAwMCBpcyBhdmFpbGFibGUg Ki8KICNkZWZpbmUgSEVBUF9LRVlTX1VQREFURUQJCTB4MjAwMAkvKiB0dXBsZSB3YXMgdXBk YXRlZCBhbmQga2V5IGNvbHMKIAkJCQkJCQkJCQkgKiBtb2RpZmllZCwgb3IgdHVwbGUgZGVs ZXRlZCAqLwogI2RlZmluZSBIRUFQX0hPVF9VUERBVEVECQkweDQwMDAJLyogdHVwbGUgd2Fz IEhPVC11cGRhdGVkICovCi0tIAoyLjUwLjEKCg== --ffc971266f692fe98c1088dac35356ed85e7d5db Content-Disposition: attachment; filename*0="v63-0004-Add-HOT-indexed-updates-selective-index-maintena.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v63-0004-Add-HOT-indexed-updates-selective-index-maintena.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA2OTNkZWRjODg1OGRjMGYwNWRmZWQyZjBjM2Y4Y2ViODNjYTI0ZmIxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAxNzozNToxNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjYzIDA0 LzEwXSBBZGQgSE9ULWluZGV4ZWQgdXBkYXRlczogc2VsZWN0aXZlIGluZGV4CiBtYWludGVu YW5jZSBhbmQgcmVhZHMKCkltcGxlbWVudCB0aGUgSE9ULWluZGV4ZWQgKFNlbGVjdGl2ZSBJ bmRleCBVcGRhdGUpIGZlYXR1cmUgb24gdGhlIGZvdW5kYXRpb24KbGFpZCBieSB0aGUgZXhl Y3V0b3IncyBtb2RpZmllZC1hdHRyaWJ1dGUgaWRlbnRpZmljYXRpb24uCgpFbGlnaWJpbGl0 eTogSGVhcFVwZGF0ZUhvdEFsbG93YWJsZSByZXR1cm5zIGEgSGVhcFVwZGF0ZUluZGV4TW9k ZSAtLQpIRUFQX1VQREFURV9BTExfSU5ERVhFUyAobm90IEhPVDsgZXZlcnkgaW5kZXggbmVl ZHMgYW4gZW50cnkpLCBIRUFQX1VQREFURV9IT1QKKGNsYXNzaWMgSE9UOyBubyBpbmRleCBu ZWVkcyBhbiBlbnRyeSksIG9yIEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURSAoSE9UCmNo YWluLCBvbmx5IHRoZSBjaGFuZ2VkIGluZGV4ZXMgbWFpbnRhaW5lZCkgLS0gY29tcHV0ZWQg ZnJvbSBtb2RpZmllZF9pZHhfYXR0cnMKYW5kIHRoZSBwZXItcmVsYXRpb24gaW5kZXhlZC1h dHRyaWJ1dGUgc2V0IChSZWxhdGlvbkdldEluZGV4ZWRBdHRycykuICBBbgpVUERBVEUgdGhh dCBjaGFuZ2VzIGEgbm9uLXN1bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlIGlzCkhFQVBf U0VMRUNUSVZFX0lOREVYX1VQREFURSB1bmxlc3MgaXQgaXMgZm9yY2VkIHRvIEhFQVBfVVBE QVRFX0FMTF9JTkRFWEVTIGJ5Cm9uZSBvZjogZXZlcnkgaW5kZXhlZCBhdHRyaWJ1dGUgY2hh bmdlZCAobm90aGluZyB0byBza2lwKSwgYW4gYXR0cmlidXRlCnJlZmVyZW5jZWQgYnkgYW4g ZXhwcmVzc2lvbiBpbmRleCBjaGFuZ2VkIChleHByZXNzaW9uLWF3YXJlIG1haW50ZW5hbmNl IGlzIG5vdAppbXBsZW1lbnRlZCB5ZXQpLCBhIHN5c3RlbSBjYXRhbG9nLCBvciB0aGUgbG9n aWNhbC1yZXBsaWNhdGlvbiBhcHBseSBnYXRlIChzZWUKdGhlIGFwcGx5LWdhdGluZyBjb21t aXQpLiAgUGFydGlhbCBpbmRleGVzLCBleGNsdXNpb24gY29uc3RyYWludHMsIHBhcnRpdGlv bmVkCnRhYmxlcywgYW5kIG5vbi1idHJlZSBhY2Nlc3MgbWV0aG9kcyBhcmUgYWxsIGVsaWdp YmxlIC0tIHRoZSByZWFkIHBhdGggaXMKYWNjZXNzLW1ldGhvZCBhZ25vc3RpYyBhbmQgdGhl IHByZWRpY2F0ZSBjb2x1bW4gaXMgcGFydCBvZiB0aGUgaW5kZXgncwphdHRyaWJ1dGUgc2V0 LCBzbyBubyBjYXJ2ZS1vdXQgaXMgbmVlZGVkIGZvciB0aGVtLgoKV3JpdGUgcGF0aDogdGhl IHRhYmxlLUFNIHVwZGF0ZSBjb250cmFjdCBjYXJyaWVzIG1vZGlmaWVkIGF0dHJpYnV0ZXMg SU4vT1VUIGFzCmEgQml0bWFwc2V0IChvbiBvdXRwdXQgdGhlIEFNIGFkZHMgdGhlIHdob2xl LXJvdyBzZW50aW5lbCwKVGFibGVUdXBsZVVwZGF0ZUFsbEluZGV4ZXMsIHRvIHNpZ25hbCAi ZXZlcnkgaW5kZXggbmVlZHMgYW4gZW50cnkiKSwgYW5kCmhlYXBfdXBkYXRlLCBmb3IgSEVB UF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFLCBrZWVwcyB0aGUgbmV3IHZlcnNpb24gb24gdGhl IEhPVApjaGFpbiB3aGlsZSBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMgbWFpbnRhaW5zIG9ubHkg dGhlIGluZGV4ZXMgd2hvc2UgYXR0cmlidXRlcwpjaGFuZ2VkLiAgVGhlIG5ldyBoZWFwLW9u bHkgdHVwbGUgcmVjb3JkcywgaW4gYW4gaW5saW5lIGJpdG1hcCBpbiBpdHMgdGFpbCwgdGhl CmF0dHJpYnV0ZXMgdGhhdCBjaGFuZ2VkIGF0IGl0cyBob3AuICBPbmx5IHRoZSBzdG9yZWQg dHVwbGUgY2FycmllcyB0aGUgYml0bWFwCmFuZCB0aGUgSEVBUF9JTkRFWEVEX1VQREFURUQg ZmxhZzsgdGhlIGNhbGxlcidzIGluLW1lbW9yeSBjb3B5IGlzIGxlZnQgdW5tYXJrZWQKc28g dGhlIGZsYWcgbmV2ZXIgcHJvbWlzZXMgYSB0cmFpbGluZyBiaXRtYXAgdGhhdCBpcyBub3Qg cHJlc2VudC4KClJlYWQgcGF0aDogYSBjaGFpbiB3YWxrIHRvIHRoZSBsaXZlIHR1cGxlIHVu aW9ucyB0aGUgbW9kaWZpZWQtYXR0cmlidXRlCmJpdG1hcHMgb2YgZXZlcnkgaG9wIGl0IGNy b3NzZXMuICBUaGUgaW5kZXgtYWNjZXNzIGxheWVyIHRyZWF0cyB0aGF0CmNyb3NzZWQtYXR0 cmlidXRlIGJpdG1hcCBhcyB0aGUgc3RhbGVuZXNzIGF1dGhvcml0eTogaWYgaXQgb3Zlcmxh cHMgdGhlCmFycml2aW5nIGluZGV4J3Mga2V5IGNvbHVtbnMgdGhlIGVudHJ5IGlzIHN0YWxl IGFuZCBpcyBkcm9wcGVkLCBhbmQgdGhlIHJvdyBpcwpyZS1zdXBwbGllZCBieSB0aGUgZnJl c2ggZW50cnkgdGhlIHNhbWUgdXBkYXRlIHBsYW50ZWQuICBUaGUgcmVhZCBwYXRoIGlzCmFj Y2Vzcy1tZXRob2QgYWdub3N0aWMgYW5kIG5lZWRzIG5vIHZhbHVlIHJlY2hlY2sgb3IgbGVh ZiBrZXk6IGl0IGlzIGNvcnJlY3QKZXZlbiB3aGVuIGEga2V5IGlzIGN5Y2xlZCBhd2F5IGFu ZCBiYWNrLCBiZWNhdXNlIHRoZSB2YWx1ZS1yZXN0b3JpbmcgdXBkYXRlCnBsYW50ZWQgYSBm cmVzaCBlbnRyeSB3aG9zZSB3YWxrIGNyb3NzZXMgbm8gbGF0ZXIga2V5LWNoYW5naW5nIGhv cC4KClVuaXF1ZSBjaGVja3MgYXJlIHRoZSBvbmUgcGxhY2UgdGhhdCBkb2VzIGNvbXBhcmUg dmFsdWVzOiBfYnRfY2hlY2tfdW5pcXVlCmZldGNoZXMgdGhlIGNvbmZsaWN0aW5nIHR1cGxl IHVuZGVyIFNuYXBzaG90RGlydHkgYW5kLCBvbiBhIGNyb3NzZWQtaG9wCmFycml2YWwsIGNv bXBhcmVzIHRoZSBsaXZlIHR1cGxlJ3MgY3VycmVudCBrZXkgYWdhaW5zdCB0aGUgYXJyaXZp bmcgbGVhZiB3aXRoCnRoZSBpbmRleCdzIG93biBvcmRlcmluZyBwcm9jZWR1cmUgKF9idF9o ZWFwX2tleXNfZXF1YWxfbGVhZiwgQlRPUkRFUl9QUk9DCnVuZGVyIGVhY2ggY29sdW1uJ3Mg Y29sbGF0aW9uKS4gIFVzaW5nIHRoZSBvcGNsYXNzIGNvbXBhcmF0b3IgLS0gbm90IGEgYml0 d2lzZQppbWFnZSBjb21wYXJpc29uIC0tIGRpc3Rpbmd1aXNoZXMgYSBzdGFsZSBhbmNlc3Rv ciBsZWFmIGZyb20gYSBnZW51aW5lbHkgbGl2ZQpkdXBsaWNhdGUgKGVxdWFsIHVuZGVyIHRo ZSBvcGNsYXNzIGV2ZW4gaWYgbm90IGJpdHdpc2UtaWRlbnRpY2FsKSBhbmQsIGluIHRoZQpp bi1mbGlnaHQgd2luZG93IG9mIGEgcmVzdG9yaW5nIHVwZGF0ZSwgcm91dGVzIHRoZSBzdGFs ZS1hbmNlc3RvciBoaXQgaW50bwpfYnRfZG9pbnNlcnQncyB4d2FpdCBzbyB0aGUgZHVwbGlj YXRlIGlzIHN0aWxsIGNhdWdodC4gIFRoZSBjb21wYXJpc29uIHJlYWRzCnBsYWluIGtleSBj b2x1bW5zIHN0cmFpZ2h0IGZyb20gdGhlIGhlYXAgc2xvdDsgaXQgbmV2ZXIgZXZhbHVhdGVz IGFuIGluZGV4ZWQKZXhwcmVzc2lvbiwgYmVjYXVzZSBhbiBVUERBVEUgdG91Y2hpbmcgYW4g ZXhwcmVzc2lvbi1pbmRleCBhdHRyaWJ1dGUgaXMKaW5lbGlnaWJsZSBmb3IgSE9ULWluZGV4 ZWQsIHNvIGFuIGV4cHJlc3Npb24gaW5kZXggaXMgbmV2ZXIgdGhlIG9uZSByZWNlaXZpbmcK dGhlIGZyZXNoIGVudHJ5IHdob3NlIGluc2VydCBydW5zIHRoaXMgY2hlY2suCgpDby1hdXRo b3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+CkNvLWF1dGhvcmVkLWJ5OiBOYXRo YW4gQm9zc2FydCA8bmF0aGFuZGJvc3NhcnRAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgICAgICAgICAgIHwgIDM0ICsKIHNyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgIHwgNDcwICsrKysrKysrLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICB8IDI0NSArKysr LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9pbmRleHNjYW4uYyAgIHwgMjA5 ICsrKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYyAgICAgICAgICAgICB8 ICAgMyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jICAgICAgICAgICB8 ICA5NCArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMgICAgICAg IHwgMTcxICsrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMgICAgICAg ICAgIHwgIDEyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jICAgICAg ICAgICB8ICAyNCArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleGluZy5jICAgICAgICAg ICAgICAgfCAgNjYgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyAgICAgICAg ICAgICAgIHwgICAyIC0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jICAgICAgICAg ICAgICAgIHwgIDI2ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyAg ICAgICAgICB8IDM0MyArKysrKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBs aWNhdGlvbi5jICAgICAgIHwgIDM4ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhvbmx5c2Nhbi5jICAgICB8ICAzMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhzY2FuLmMgICAgICAgICB8ICAyNyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9k aWZ5VGFibGUuYyAgICAgICB8ICA4OSArKy0KIHNyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5j cy5jICAgICAgICAgICAgICAgIHwgICAyIC0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L3Bnc3RhdF9yZWxhdGlvbi5jIHwgIDIxICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9y ZWxjYWNoZS5jICAgICAgICAgICB8IDI0MSArKysrKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9h bWFwaS5oICAgICAgICAgICAgICAgICAgIHwgICAxIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaCAgICAgICAgICAgICAgICAgIHwgIDUyICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv cmVsc2Nhbi5oICAgICAgICAgICAgICAgICB8ICA2MCArKwogc3JjL2luY2x1ZGUvYWNjZXNz L3RhYmxlYW0uaCAgICAgICAgICAgICAgICAgfCAgNzcgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAxNCArLQogc3JjL2luY2x1ZGUvcGdz dGF0LmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzEgKy0KIHNyYy9pbmNsdWRlL3V0 aWxzL3JlbC5oICAgICAgICAgICAgICAgICAgICAgIHwgIDExICsKIHNyYy9pbmNsdWRlL3V0 aWxzL3JlbGNhY2hlLmggICAgICAgICAgICAgICAgIHwgIDE3ICsKIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0ICAgIHwgNzcxICsrKysrKystLS0tLS0tLS0t LS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRhdGVzLnNxbCAgICAgICAgIHwgNjAz ICsrKysrLS0tLS0tLS0tLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAg ICAgICAgICAgfCAgIDIgKy0KIDMyIGZpbGVzIGNoYW5nZWQsIDI0MTIgaW5zZXJ0aW9ucygr KSwgMTM4MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9SRUFETUUuSE9UIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVApp bmRleCA3NGU0MDdmMzc1YS4uNzEyMzY1NjE3M2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv UkVBRE1FLkhPVApAQCAtMTU2LDYgKzE1Niw0MCBAQCBhbGwgc3VtbWFyaXppbmcgaW5kZXhl cy4gIChSZWFsaXN0aWNhbGx5LCB3ZSBvbmx5IG5lZWQgdG8gcHJvcGFnYXRlIHRoZQogdXBk YXRlIHRvIHRoZSBpbmRleGVzIHRoYXQgY29udGFpbiB0aGUgdXBkYXRlZCB2YWx1ZXMsIGJ1 dCB0aGF0IGlzIHlldCB0bwogYmUgaW1wbGVtZW50ZWQuKQogCisKK1Blci1JbmRleCBVcGRh dGUgVHJhY2tpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWZ0ZXIgdGhlIHRh YmxlIEFNIHBlcmZvcm1zIHRoZSB1cGRhdGUsIHRoZSBleGVjdXRvciBkZXRlcm1pbmVzIHdo aWNoCitpbmRleGVzIG5lZWQgbmV3IGVudHJpZXMgdXNpbmcgcGVyLWluZGV4IHRyYWNraW5n LgorCitUaGUgdGFibGUgQU0gY29tbXVuaWNhdGVzIHdoZXRoZXIgYSBIT1QgdXBkYXRlIG9j Y3VycmVkIHZpYSB0aGUKK3VwZGF0ZV9hbGxfaW5kZXhlcyBib29sZWFuIG91dHB1dCBvZiB0 YWJsZV90dXBsZV91cGRhdGUoKSwgdG9nZXRoZXIgd2l0aCB0aGUKK21vZGlmaWVkLWF0dHJz IEJpdG1hcHNldCB0aGUgY2FsbGVyIHBhc3NlZCBpbiAoYXR0cmlidXRlIG51bWJlcnMgZW5j b2RlZCB3aXRoCitGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKS4gIFdoZW4g dXBkYXRlX2FsbF9pbmRleGVzIGlzIHRydWUgdGhlCit1cGRhdGUgd2FzIG5vbi1IT1QgYW5k IGV2ZXJ5IGluZGV4IHJlcXVpcmVzIGEgbmV3IGVudHJ5ICh0aGUgdHVwbGUgaGFzIGEgbmV3 CitUSUQpLiAgV2hlbiBmYWxzZSB0aGUgdXBkYXRlIHdhcyBIT1Q6IHRoZSBjYWxsZXIgY29u c3VsdHMgbW9kaWZpZWRfYXR0cnMgd2l0aAorZWFjaCBpbmRleCdzIG93biBhdHRyaWJ1dGVz IHRvIGluc2VydCBlbnRyaWVzIG9ubHkgaW50byB0aGUgaW5kZXhlcyB3aG9zZSBrZXkKK2F0 dHJpYnV0ZXMgY2hhbmdlZCAoYSBIT1QtaW5kZXhlZCB1cGRhdGUpIG9yIG9ubHkgdGhlIHN1 bW1hcml6aW5nIGluZGV4ZXMgKGEKK2NsYXNzaWMgSE9UIHVwZGF0ZSB0aGF0IGNoYW5nZWQg YSBzdW1tYXJpemVkIGNvbHVtbiksIGFuZCBza2lwcyB0aGUgcmVzdC4KKworVGhlIGV4ZWN1 dG9yIHRoZW4gY2FsbHMgRXhlY1NldEluZGV4VW5jaGFuZ2VkKCkgdG8gcG9wdWxhdGUgdGhl IHBlci1pbmRleAoraWlfSW5kZXhVbmNoYW5nZWQgZmxhZyBvbiBlYWNoIEluZGV4SW5mby4g IFRoaXMgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciBlYWNoCitpbmRleCdzIGtleSB2YWx1ZXMg YXJlIHVuY2hhbmdlZCBieSB0aGUgdXBkYXRlLiAgRm9yIG5vbi1IT1QgdXBkYXRlcwordGhl IGZsYWcgaXMgY2xlYXJlZCBvbiBldmVyeSBpbmRleCwgc28gZWFjaCBnZXRzIGEgZnJlc2gg ZW50cnkgYXQgdGhlCituZXcgVElEOyB0aGUgZmxhZyBpcyBuZXZlciBhIHNraXAgb24gaXRz IG93biwganVzdCBhIGhpbnQgdG8gdGhlCitpbmRleCBBTSdzIGFtaW5zZXJ0IGZvciBvcHRp bWl6YXRpb25zIHN1Y2ggYXMgYm90dG9tLXVwIGRlbGV0aW9uIG9mCitsb2dpY2FsbHkgZXF1 aXZhbGVudCBkdXBsaWNhdGUgZW50cmllcy4KKworRXhlY0luc2VydEluZGV4VHVwbGVzIGNv bnN1bHRzIGlpX0luZGV4VW5jaGFuZ2VkIHRvIGRlY2lkZSB3aGV0aGVyIHRvCitza2lwIGEg bm9uLXN1bW1hcml6aW5nIGluZGV4IGR1cmluZyBhbiBVUERBVEU6IGlmIHRoZSBpbmRleCBp cyBtYXJrZWQKK3VuY2hhbmdlZCwgdGhlIEhPVCBjaGFpbiByb290J3MgZXhpc3RpbmcgZW50 cnkgc3RpbGwgcG9pbnRzIGF0IHRoZQordHVwbGUsIHNvIG5vIG5ldyBlbnRyeSBpcyBuZWVk ZWQuICBGb3Igbm9uLUhPVCB1cGRhdGVzIHRoZSBUSUQKK2NoYW5nZWQgYW5kIEV4ZWNTZXRJ bmRleFVuY2hhbmdlZCBtYXJrcyBldmVyeSBpbmRleCBhcyBjaGFuZ2VkLAorZm9yY2luZyBl YWNoIHRvIHJlY2VpdmUgYSBuZXcgZW50cnkuICBTdW1tYXJpemluZyBpbmRleGVzIGFsd2F5 cyBnZXQKK3RoZSBvcHBvcnR1bml0eSB0byB1cGRhdGUgdGhlaXIgYmxvY2stbGV2ZWwgc3Vt bWFyaWVzLgorCisKIEFib3J0IENhc2VzCiAtLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbS5jCmluZGV4IDMwMTRhNzllNDM0Li5hYmU0MGNlMWI0MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJhY2Nl c3MvaGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXB0b2FzdC5oIgogI2luY2x1ZGUg ImFjY2Vzcy9oaW8uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaG90X2luZGV4ZWQuaCIKICNpbmNs dWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N1YnRyYW5zLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNzY2FuLmgiCkBAIC00NCwxMyArNDUsMTQgQEAKICNp bmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0 YWJhc2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlX2QuaCIKKyNpbmNsdWRl ICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1 bS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oIgogI2luY2x1ZGUg ImV4ZWN1dG9yL3R1cHRhYmxlLmgiCiAjaW5jbHVkZSAibm9kZXMvbG9ja29wdGlvbnMuaCIK ICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCi0j aW5jbHVkZSAic3RvcmFnZS9idWYuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fs d29ya2VyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAgLTc4LDYgKzgw LDggQEAgc3RhdGljIHZvaWQgY2hlY2tfaW5wbGFjZV9yZWxfbG9jayhIZWFwVHVwbGUgb2xk dHVwKTsKICNlbmRpZgogc3RhdGljIEJpdG1hcHNldCAqSGVhcFVwZGF0ZU1vZGlmaWVkSWR4 QXR0cnMoUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJCSBIZWFwVHVwbGUgb2xkdHVw LCBIZWFwVHVwbGUgbmV3dHVwKTsKK3N0YXRpYyBIZWFwVHVwbGUgaGVhcF9mb3JtX2hvdF9p bmRleGVkX3R1cGxlKEhlYXBUdXBsZSB0dXAsIGludCByZWxuYXR0cywKKwkJCQkJCQkJCQkJ ICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycyk7CiBzdGF0aWMgYm9vbCBo ZWFwX2FjcXVpcmVfdHVwbG9jayhSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50 ZXJEYXRhICp0aWQsCiAJCQkJCQkJCSBMb2NrVHVwbGVNb2RlIG1vZGUsIExvY2tXYWl0UG9s aWN5IHdhaXRfcG9saWN5LAogCQkJCQkJCQkgYm9vbCAqaGF2ZV90dXBsZV9sb2NrKTsKQEAg LTIxMDksOSArMjExMywyOCBAQCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgSGVh cFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAkJICogSWYgdGhpcyBpcyB0aGUgc2luZ2xl IGFuZCBmaXJzdCB0dXBsZSBvbiBwYWdlLCB3ZSBjYW4gcmVpbml0IHRoZQogCQkgKiBwYWdl IGluc3RlYWQgb2YgcmVzdG9yaW5nIHRoZSB3aG9sZSB0aGluZy4gIFNldCBmbGFnLCBhbmQg aGlkZQogCQkgKiBidWZmZXIgcmVmZXJlbmNlcyBmcm9tIFhMb2dJbnNlcnQuCisJCSAqCisJ CSAqIEFsc28gcmVxdWlyZSB0aGF0IHRoZSBwYWdlJ3MgdHVwbGUgYXJlYSBjb250YWlucyBu b3RoaW5nIG90aGVyIHRoYW4KKwkJICogdGhpcyB0dXBsZS4gIFZhY3V1bSdzIGxwX3RydW5j YXRlX29ubHkgc2Vjb25kIHBhc3MKKwkJICogKFBSVU5FX1ZBQ1VVTV9DTEVBTlVQKSBkb2Vz IG5vdCBjYWxsIFBhZ2VSZXBhaXJGcmFnbWVudGF0aW9uLCBzbyBhCisJCSAqIHBhZ2UgY2Fu IGxlZ2l0aW1hdGVseSBlbmQgdXAgd2l0aCBvbmUgTFBfVU5VU0VEIHNsb3QgYXQgb2Zmc2V0 IDEKKwkJICogcGx1cyBvcnBoYW4gdHVwbGUgYnl0ZXMgbGVmdCBvdmVyIGZyb20gdGhlIHBy ZXZpb3VzIGxpZmV0aW1lLiBJZgorCQkgKiBoZWFwX2luc2VydCByZXVzZXMgdGhhdCBMUF9V TlVTRUQgc2xvdCwgcHJpbWFyeSdzIHBhZ2Uga2VlcHMgdGhlCisJCSAqIG9ycGhhbiBieXRl cyB3aGlsZSBhIHN0YW5kYnkgcmVwbGF5aW5nIElOU0VSVCtJTklUIHplcm9lcyB0aGVtLgor CQkgKiBFbWl0dGluZyBJTlNFUlQrSU5JVCBpbiB0aGF0IGNhc2UgdHJpcHMgd2FsX2NvbnNp c3RlbmN5X2NoZWNraW5nLgorCQkgKiBGYWxsaW5nIGJhY2sgdG8gYSByZWd1bGFyIElOU0VS VCAod2l0aCB0aGUgRlBJIG9uIGZpcnN0IHRvdWNoIGFmdGVyCisJCSAqIGEgY2hlY2twb2lu dCkga2VlcHMgcmVwbGF5IGJ5dGUtaWRlbnRpY2FsIHdpdGhvdXQgc2FjcmlmaWNpbmcgY3Jh c2gKKwkJICogc2FmZXR5LgorCQkgKgorCQkgKiBOT1RFOiBoZWFwX211bHRpX2luc2VydCgp IGRvZXMgbm90IG5lZWQgdGhpcyBleHRyYSBjaGVjazogaXQgdXNlcyB0aGUKKwkJICogc2lt cGxlciBzdGFydGluZ193aXRoX2VtcHR5X3BhZ2UgKFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIo cGFnZSkgPT0gMCkKKwkJICogZ2F0ZSBmb3IgaXRzIG93biBJTklUX1BBR0UgZGVjaXNpb24s IGJlY2F1c2UgYnkgY29uc3RydWN0aW9uIGl0IGlzCisJCSAqIG5ldmVyIGhhbmRlZCBhIHBh Z2Ugd2l0aCBsZWZ0b3ZlciBvcnBoYW4gYnl0ZXMgZnJvbSBhIHByaW9yIGxpZmV0aW1lLgog CQkgKi8KIAkJaWYgKEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCYoaGVhcHR1cC0+dF9z ZWxmKSkgPT0gRmlyc3RPZmZzZXROdW1iZXIgJiYKLQkJCVBhZ2VHZXRNYXhPZmZzZXROdW1i ZXIocGFnZSkgPT0gRmlyc3RPZmZzZXROdW1iZXIpCisJCQlQYWdlR2V0TWF4T2Zmc2V0TnVt YmVyKHBhZ2UpID09IEZpcnN0T2Zmc2V0TnVtYmVyICYmCisJCQkoKFBhZ2VIZWFkZXIpIHBh Z2UpLT5wZF91cHBlciA9PQorCQkJKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfc3BlY2lhbCAt IE1BWEFMSUdOKGhlYXB0dXAtPnRfbGVuKSkKIAkJewogCQkJaW5mbyB8PSBYTE9HX0hFQVBf SU5JVF9QQUdFOwogCQkJYnVmZmxhZ3MgfD0gUkVHQlVGX1dJTExfSU5JVDsKQEAgLTMyMDIs OSArMzIyNSwxMSBAQCBzaW1wbGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIGNv bnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKQogICovCiBUTV9SZXN1bHQKIGhlYXBfdXBkYXRl KFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBU dXBsZSBuZXd0dXAsCi0JCQlDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9ucyBwZ19hdHRy aWJ1dGVfdW51c2VkKCksIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKLQkJCVRN X0ZhaWx1cmVEYXRhICp0bWZkLCBjb25zdCBMb2NrVHVwbGVNb2RlIGxvY2ttb2RlLAotCQkJ Y29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsIGNvbnN0IGJvb2wgaG90X2Fs bG93ZWQpCisJCQlDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9ucyBwZ19hdHRyaWJ1dGVf dW51c2VkKCksCisJCQlTbmFwc2hvdCBjcm9zc2NoZWNrLCBib29sIHdhaXQsCisJCQlUTV9G YWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSBsb2NrbW9kZSwKKwkJCWNvbnN0IEJp dG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAorCQkJSGVhcFVwZGF0ZUluZGV4TW9kZSBo b3RfbW9kZSkKIHsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCVRyYW5zYWN0aW9uSWQgeGlkID0g R2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKQEAgLTMyMzAsNiArMzI1NSw5IEBAIGhlYXBf dXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQs IEhlYXBUdXBsZSBuZXd0dXAsCiAJYm9vbAkJaGF2ZV90dXBsZV9sb2NrID0gZmFsc2U7CiAJ Ym9vbAkJaXNjb21ibzsKIAlib29sCQl1c2VfaG90X3VwZGF0ZSA9IGZhbHNlOworCWJvb2wJ CWhvdF9pbmRleGVkID0gZmFsc2U7CS8qIEhPVC1pbmRleGVkIHVwZGF0ZSAobW9kaWZpZWQg YW4KKwkJCQkJCQkJCQkgKiBpbmRleGVkIGF0dHIgYnV0IHN0YXllZCBIT1QpICovCisJU2l6 ZQkJaGlfYm1ieXRlcyA9IDA7IC8qIHRyYWlsaW5nIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBz aXplLCBpZiBhbnkgKi8KIAlib29sCQlrZXlfaW50YWN0OwogCWJvb2wJCWFsbF92aXNpYmxl X2NsZWFyZWQgPSBmYWxzZTsKIAlib29sCQlhbGxfdmlzaWJsZV9jbGVhcmVkX25ldyA9IGZh bHNlOwpAQCAtMzc5NCw2ICszODIyLDM4IEBAIGwyOgogCiAJbmV3dHVwc2l6ZSA9IE1BWEFM SUdOKG5ld3R1cC0+dF9sZW4pOwogCisJLyoKKwkgKiBLZWVwIEhPVC1pbmRleGVkIChTSVUp IGNoYWlucyB1bmlmb3JtLiAgSGVhcFVwZGF0ZUhvdEFsbG93YWJsZSByZXR1cm5zCisJICog SEVBUF9IRUFQX09OTFlfVVBEQVRFIHdoZW5ldmVyIHRoaXMgdXBkYXRlIG1vZGlmaWVzIG5v IGluZGV4ZWQKKwkgKiBhdHRyaWJ1dGUuICBCdXQgaWYgdGhlIHR1cGxlIGJlaW5nIHVwZGF0 ZWQgaXMgYWxyZWFkeSBhIEhPVC1pbmRleGVkCisJICogY2hhaW4gbWVtYmVyIChpdCBjYXJy aWVzIEhFQVBfSU5ERVhFRF9VUERBVEVEKSwgZW1pdHRpbmcgYSBjbGFzc2ljLUhPVAorCSAq IHZlcnNpb24gd291bGQgc3BsaWNlIGEgbm9uLUhFQVBfSU5ERVhFRF9VUERBVEVEIHR1cGxl IGludG8gdGhlIGNoYWluLgorCSAqIFRoZSBwcnVuZS9jb2xsYXBzZSBtYWNoaW5lcnkgZm9y d2FyZHMgb25seSBIRUFQX0lOREVYRURfVVBEQVRFRCBtZW1iZXJzCisJICogdGhyb3VnaCBi cmlkZ2VzLCBzbyBzdWNoIGEgY2xhc3NpYy1IT1QgdmVyc2lvbiwgb25jZSBpdCBkaWVzIG1p ZAorCSAqIGNvbGxhcHNlZC1jaGFpbiwgaGFzIG5vIGhhbmRsZXIgYW5kIHRyaXBzIHRoZSAi bm90IGxpbmtlZCB0byBmcm9tIGFueQorCSAqIEhPVCBjaGFpbiIgZXJyb3IuICBQcm9tb3Rl IHRvIEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURSBpbnN0ZWFkOiB3aXRoIGFuCisJICog ZW1wdHkgbW9kaWZpZWQtYXR0cnMgc2V0IHRoZSBuZXcgdmVyc2lvbiBjYXJyaWVzIEhFQVBf SU5ERVhFRF9VUERBVEVECisJICogYW5kIGFuIGVtcHR5IGlubGluZS10cmFpbGluZyBiaXRt YXAsIGluc2VydHMgaW50byBubyBpbmRleCAobm90aGluZworCSAqIGNoYW5nZWQpLCBhbmQg a2VlcHMgZXZlcnkgY2hhaW4gbWVtYmVyIHVuaWZvcm0uICBDYXRhbG9nIHJlbGF0aW9ucyBh cmUKKwkgKiBjbGFzc2ljLUhPVCBvbmx5IGFuZCBuZXZlciBjYXJyeSBIRUFQX0lOREVYRURf VVBEQVRFRCwgc28gdGhpcyBuZXZlcgorCSAqIGZpcmVzIGZvciB0aGVtLgorCSAqLworCWlm IChob3RfbW9kZSA9PSBIRUFQX0hFQVBfT05MWV9VUERBVEUgJiYKKwkJKG9sZHR1cC50X2Rh dGEtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpICE9IDApCisJCWhvdF9t b2RlID0gSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFOworCisJLyoKKwkgKiBBIEhPVC1p bmRleGVkIHVwZGF0ZSBhcHBlbmRzIGEgZml4ZWQtc2l6ZSBpbmxpbmUtdHJhaWxpbmcKKwkg KiBtb2RpZmllZC1hdHRycyBiaXRtYXAgdG8gdGhlIG5ldyB0dXBsZSAoc2VlIGFjY2Vzcy9o b3RfaW5kZXhlZC5oKS4KKwkgKiBSZXNlcnZlIHJvb20gZm9yIGl0IGluIHRoZSBwYWdlLWZp dCBjYWxjdWxhdGlvbiBub3csIHdoaWxlIHdlIHN0aWxsCisJICogbWlnaHQgdGFrZSB0aGUg c2FtZS1wYWdlIEhPVCBwYXRoOyBpZiB0aGUgdXBkYXRlIGxhdGVyIGRyb3BzIHRvIG5vbi1I T1QKKwkgKiAodGhlIHR1cGxlIGRvZXMgbm90IGZpdCBvbiB0aGUgcGFnZSkgaXQgaXMgc3Rv cmVkIHdpdGhvdXQgdGhlIGJpdG1hcCBhbmQKKwkgKiB0aGUgcmVzZXJ2YXRpb24gaXMgc2lt cGx5IGNvbnNlcnZhdGl2ZS4KKwkgKi8KKwlpZiAoaG90X21vZGUgPT0gSEVBUF9TRUxFQ1RJ VkVfSU5ERVhfVVBEQVRFKQorCQloaV9ibWJ5dGVzID0gSG90SW5kZXhlZEJpdG1hcEJ5dGVz KFJlbGF0aW9uR2V0TnVtYmVyT2ZBdHRyaWJ1dGVzKHJlbGF0aW9uKSk7CisJbmV3dHVwc2l6 ZSA9IE1BWEFMSUdOKG5ld3R1cC0+dF9sZW4gKyBoaV9ibWJ5dGVzKTsKKwogCWlmIChuZWVk X3RvYXN0IHx8IG5ld3R1cHNpemUgPiBwYWdlZnJlZSkKIAl7CiAJCVRyYW5zYWN0aW9uSWQg eG1heF9sb2NrX29sZF90dXBsZTsKQEAgLTM4OTEsNyArMzk1MSw3IEBAIGwyOgogCQl7CiAJ CQkvKiBOb3RlIHdlIGFsd2F5cyB1c2UgV0FMIGFuZCBGU00gZHVyaW5nIHVwZGF0ZXMgKi8K IAkJCWhlYXB0dXAgPSBoZWFwX3RvYXN0X2luc2VydF9vcl91cGRhdGUocmVsYXRpb24sIG5l d3R1cCwgJm9sZHR1cCwgMCk7Ci0JCQluZXd0dXBzaXplID0gTUFYQUxJR04oaGVhcHR1cC0+ dF9sZW4pOworCQkJbmV3dHVwc2l6ZSA9IE1BWEFMSUdOKGhlYXB0dXAtPnRfbGVuICsgaGlf Ym1ieXRlcyk7CiAJCX0KIAkJZWxzZQogCQkJaGVhcHR1cCA9IG5ld3R1cDsKQEAgLTM5OTIs MTAgKzQwNTIsMTAgQEAgbDI6CiAJewogCQkvKgogCQkgKiBTaW5jZSB0aGUgbmV3IHR1cGxl IGlzIGdvaW5nIGludG8gdGhlIHNhbWUgcGFnZSwgd2UgbWlnaHQgYmUgYWJsZQotCQkgKiB0 byBkbyBhIEhPVCB1cGRhdGUuICBDaGVjayBpZiBhbnkgb2YgdGhlIGluZGV4IGNvbHVtbnMg aGF2ZSBiZWVuCi0JCSAqIGNoYW5nZWQuCisJCSAqIHRvIGRvIGEgSE9UIHVwZGF0ZS4gIENo ZWNrIGlmIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUoKSBoYXMKKwkJICogc2FuY3Rpb25lZCBp dCAoSEVBUF9IRUFQX09OTFlfVVBEQVRFIG9yIEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFU RSkuCiAJCSAqLwotCQlpZiAoaG90X2FsbG93ZWQpCisJCWlmIChob3RfbW9kZSAhPSBIRUFQ X1VQREFURV9BTExfSU5ERVhFUykKIAkJCXVzZV9ob3RfdXBkYXRlID0gdHJ1ZTsKIAl9CiAJ ZWxzZQpAQCAtNDAwNCw2ICs0MDY0LDI3IEBAIGwyOgogCQlQYWdlU2V0RnVsbChwYWdlKTsK IAl9CiAKKwkvKgorCSAqIEZvciBhIHNhbWUtcGFnZSBIT1QtaW5kZXhlZCB1cGRhdGUsIHJl cGxhY2UgaGVhcHR1cCB3aXRoIGEgY29weSB0aGF0CisJICogY2FycmllcyB0aGUgaW5saW5l LXRyYWlsaW5nIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCAoYW5kCisJICogSEVBUF9JTkRFWEVE X1VQREFURUQpLiAgRG9uZSBoZXJlLCBvdXRzaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLAor CSAqIGJlY2F1c2UgaXQgYWxsb2NhdGVzOyB0aGUgYml0bWFwJ3Mgc2l6ZSB3YXMgcmVzZXJ2 ZWQgaW4gbmV3dHVwc2l6ZQorCSAqIGFib3ZlLiAgT25seSB0aGUgc3RvcmVkIHR1cGxlICho ZWFwdHVwKSBnZXRzIHRoZSBiaXRtYXAgYW5kIHRoZSBmbGFnOworCSAqIHRoZSBjYWxsZXIn cyBuZXd0dXAgbXVzdCBOT1QgYmUgbWFya2VkIEhFQVBfSU5ERVhFRF9VUERBVEVELCBiZWNh dXNlIGl0CisJICogaGFzIG5vIHRyYWlsaW5nIGJpdG1hcCAtLSBzZWUgdGhlIGZsYWcgaGFu ZGxpbmcgYmVsb3cuCisJICovCisJaWYgKHVzZV9ob3RfdXBkYXRlICYmIGhvdF9tb2RlID09 IEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURSkKKwl7CisJCUhlYXBUdXBsZQlleHQ7CisK KwkJZXh0ID0gaGVhcF9mb3JtX2hvdF9pbmRleGVkX3R1cGxlKGhlYXB0dXAsCisJCQkJCQkJ CQkJICBSZWxhdGlvbkdldE51bWJlck9mQXR0cmlidXRlcyhyZWxhdGlvbiksCisJCQkJCQkJ CQkJICBtb2RpZmllZF9pZHhfYXR0cnMpOworCQlpZiAoaGVhcHR1cCAhPSBuZXd0dXApCisJ CQloZWFwX2ZyZWV0dXBsZShoZWFwdHVwKTsKKwkJaGVhcHR1cCA9IGV4dDsKKwl9CisKIAkv KgogCSAqIENvbXB1dGUgcmVwbGljYSBpZGVudGl0eSB0dXBsZSBiZWZvcmUgZW50ZXJpbmcg dGhlIGNyaXRpY2FsIHNlY3Rpb24gc28KIAkgKiB3ZSBkb24ndCBQQU5JQyB1cG9uIGEgbWVt b3J5IGFsbG9jYXRpb24gZmFpbHVyZS4KQEAgLTQwNDAsNiArNDEyMSwyOCBAQCBsMjoKIAkJ SGVhcFR1cGxlU2V0SGVhcE9ubHkoaGVhcHR1cCk7CiAJCS8qIE1hcmsgdGhlIGNhbGxlcidz IGNvcHkgdG9vLCBpbiBjYXNlIGRpZmZlcmVudCBmcm9tIGhlYXB0dXAgKi8KIAkJSGVhcFR1 cGxlU2V0SGVhcE9ubHkobmV3dHVwKTsKKworCQkvKgorCQkgKiBGb3IgYSBIT1QtaW5kZXhl ZCB1cGRhdGUsIHRoZSBuZXcgbGl2ZSB0dXBsZSBjYXJyaWVzCisJCSAqIEhFQVBfSU5ERVhF RF9VUERBVEVEIHNvIGluZGV4IHNjYW5zIHdhbGtpbmcgdGhlIGNoYWluIGtub3cgaXQgaXMg YQorCQkgKiBIT1QtaW5kZXhlZCBob3AgY2FycnlpbmcgYW4gaW5saW5lLXRyYWlsaW5nIG1v ZGlmaWVkLWF0dHJzIGJpdG1hcC4KKwkJICogaGVhcF9mb3JtX2hvdF9pbmRleGVkX3R1cGxl KCkgKHdoaWNoIHByb2R1Y2VkIGhlYXB0dXAgYWJvdmUpIGlzIHRoZQorCQkgKiBzaW5nbGUg YXV0aG9yaXRhdGl2ZSBzaXRlIHRoYXQgc2V0cyB0aGUgZmxhZywgb24gdGhlIHZlcnNpb24g YWN0dWFsbHkKKwkJICogc3RvcmVkIG9uIHRoZSBwYWdlIC0tIGhlYXB0dXAgY2FycmllcyB0 aGUgdHJhaWxpbmcgYml0bWFwLCBzbyB0aGUKKwkJICogZmxhZydzIHByb21pc2UgKGEgYml0 bWFwIG9jY3VwaWVzIHRoZSBmaW5hbCBIb3RJbmRleGVkQml0bWFwQnl0ZXMobmF0dHMpCisJ CSAqIGJ5dGVzIG9mIHRoZSBpdGVtKSBob2xkcy4gIFRoZSBjYWxsZXIncyBuZXd0dXAgaXMg YSBzZXBhcmF0ZSBpbi1tZW1vcnkKKwkJICogdHVwbGUgd2hvc2UgdF9sZW4gZG9lcyBub3Qg aW5jbHVkZSB0aGUgYml0bWFwOyBpdCBpcyBkZWxpYmVyYXRlbHkgbGVmdAorCQkgKiB1bmZs YWdnZWQgKG1hcmtpbmcgaXQgSEVBUF9JTkRFWEVEX1VQREFURUQgd291bGQgYXNzZXJ0IGEg dHJhaWxpbmcKKwkJICogYml0bWFwIHRoYXQgaXMgbm90IHRoZXJlKS4gIE5vdGhpbmcgcmVh ZHMgdGhlIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBvZmYKKwkJICogYW4gaW4tbWVtb3J5IHR1 cGxlOyBldmVyeSBjb25zdW1lciByZWFkcyBpdCBmcm9tIHRoZSBwYWdlIHZpYSB0aGUgbGlu ZQorCQkgKiBwb2ludGVyJ3MgbGVuZ3RoLiAgSGVyZSB3ZSBvbmx5IG5lZWQgdG8gcmVjb3Jk IHRoYXQgdGhpcyB3YXMgYQorCQkgKiBIT1QtaW5kZXhlZCBob3AgZm9yIHRoZSBwb3N0LXVw ZGF0ZSBib29ra2VlcGluZyBiZWxvdy4KKwkJICovCisJCWlmIChob3RfbW9kZSA9PSBIRUFQ X1NFTEVDVElWRV9JTkRFWF9VUERBVEUpCisJCXsKKwkJCUFzc2VydCgoaGVhcHR1cC0+dF9k YXRhLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSAhPSAwKTsKKwkJCWhv dF9pbmRleGVkID0gdHJ1ZTsKKwkJfQogCX0KIAllbHNlCiAJewpAQCAtNDE0NCw3ICs0MjQ3 LDggQEAgbDI6CiAJaWYgKGhhdmVfdHVwbGVfbG9jaykKIAkJVW5sb2NrVHVwbGVUdXBsb2Nr KHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCBsb2NrbW9kZSk7CiAKLQlwZ3N0YXRfY291 bnRfaGVhcF91cGRhdGUocmVsYXRpb24sIHVzZV9ob3RfdXBkYXRlLCBuZXdidWYgIT0gYnVm ZmVyKTsKKwlwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUocmVsYXRpb24sIHVzZV9ob3RfdXBk YXRlLCBob3RfaW5kZXhlZCwKKwkJCQkJCQkgbmV3YnVmICE9IGJ1ZmZlcik7CiAKIAkvKgog CSAqIElmIGhlYXB0dXAgaXMgYSBwcml2YXRlIGNvcHksIHJlbGVhc2UgaXQuICBEb24ndCBm b3JnZXQgdG8gY29weSB0X3NlbGYKQEAgLTQzNDMsNjMgKzQ0NDcsMTAzIEBAIGhlYXBfYXR0 cl9lcXVhbHMoVHVwbGVEZXNjIHR1cGRlc2MsIGludCBhdHRybnVtLCBEYXR1bSB2YWx1ZTEs IERhdHVtIHZhbHVlMiwKIH0KIAogLyoKLSAqIEhPVCB1cGRhdGVzIGFyZSBwb3NzaWJsZSB3 aGVuIGVpdGhlcjogYSkgdGhlcmUgYXJlIG5vIG1vZGlmaWVkIGluZGV4ZWQKLSAqIGF0dHJp YnV0ZXMsIG9yIGIpIHRoZSBtb2RpZmllZCBhdHRyaWJ1dGVzIGFyZSBhbGwgb24gc3VtbWFy aXppbmcgaW5kZXhlcy4KLSAqIExhdGVyLCBpbiBoZWFwX3VwZGF0ZSgpLCB3ZSBjYW4gY2hv b3NlIHRvIHBlcmZvcm0gYSBIT1QgdXBkYXRlIGlmIHRoZXJlIGlzCi0gKiBzcGFjZSBvbiB0 aGUgcGFnZSBmb3IgdGhlIG5ldyB0dXBsZSBhbmQgdGhlIGZvbGxvd2luZyBjb2RlIGhhcyBk ZXRlcm1pbmVkCi0gKiB0aGF0IEhPVCBpcyBhbGxvd2VkLgorICogSGVhcFVwZGF0ZUhvdEFs bG93YWJsZSAtLQorICoKKyAqIENsYXNzaWZ5IGFuIFVQREFURSBmb3IgSE9UIGVsaWdpYmls aXR5IGZyb20gdGhlIHNldCBvZiBpbmRleGVkIGF0dHJpYnV0ZXMKKyAqIGl0IGNoYW5nZWQg KG1vZGlmaWVkX2lkeF9hdHRycywgY29tcHV0ZWQgYnkgdGhlIGV4ZWN1dG9yKToKKyAqCisg KiAgIEhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTICAgSE9UIGlzIG5vdCBwZXJtaXR0ZWQ7IHRo ZSBuZXcgdHVwbGUgZ29lcyBvbiBhCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZnJlc2ggVElEIGFuZCBldmVyeSBpbmRleCBnZXRzIGEgbmV3IGVudHJ5LgorICogICBIRUFQ X0hFQVBfT05MWV9VUERBVEUgICAgIENsYXNzaWMgSE9UOiBubyBub24tc3VtbWFyaXppbmcg aW5kZXhlZAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBjaGFu Z2VkLCBzbyBubyBpbmRleCBuZWVkcyBhIG5ldworICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVudHJ5IGFuZCB0aGUgbmV3IHR1cGxlIGpvaW5zIHRoZSBjaGFpbiB2aWEgYQor ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRfY3RpZCBmb3J3YXJkIGxpbmsuCisg KiAgIEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURSBIT1Qgd2l0aCBzZWxlY3RpdmUgaW5k ZXggdXBkYXRlOiBhdCBsZWFzdCBvbmUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBub24tc3VtbWFyaXppbmcgaW5kZXgncyBhdHRyaWJ1dGUgY2hhbmdlZCwgYnV0CisgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG5ldyB0dXBsZSBjYW4gc3RpbGwgam9p biB0aGUgSE9UIGNoYWluIG9uCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhl IHNhbWUgcGFnZTsgb25seSB0aGUgaW5kZXhlcyB3aG9zZQorICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGF0dHJpYnV0ZXMgY2hhbmdlZCByZWNlaXZlIGEgbmV3IGVudHJ5Lgor ICoKKyAqIFRoaXMgcm91dGluZSBvbmx5IGNsYXNzaWZpZXMgdGhlIHVwZGF0ZTsgaGVhcF91 cGRhdGUoKSBwZXJmb3JtcyBpdCBhbmQgbWF5CisgKiBzdGlsbCBmYWxsIGJhY2sgdG8gYSBu b24tSE9UIHVwZGF0ZSB3aGVuIHRoZSBuZXcgdHVwbGUgZG9lcyBub3QgZml0IG9uIHRoZQor ICogcGFnZSwgZXhhY3RseSBhcyBmb3IgY2xhc3NpYyBIT1QuCiAgKi8KLWJvb2wKLUhlYXBV cGRhdGVIb3RBbGxvd2FibGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1hcHNldCAq bW9kaWZpZWRfaWR4X2F0dHJzLAotCQkJCQkgICBib29sICpzdW1tYXJpemVkX29ubHkpCitI ZWFwVXBkYXRlSW5kZXhNb2RlCitIZWFwVXBkYXRlSG90QWxsb3dhYmxlKFJlbGF0aW9uIHJl bGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycykKIHsKLQlib29s CQlob3RfYWxsb3dlZDsKKwljb25zdCBCaXRtYXBzZXQgKmFsbF9pZHhfYXR0cnM7CiAKIAkv KgotCSAqIExldCdzIGJlIG9wdGltaXN0aWMgYW5kIHN0YXJ0IG9mZiBieSBhc3N1bWluZyB0 aGUgYmVzdCBjYXNlLCBubyBpbmRleGVzCi0JICogbmVlZCB1cGRhdGluZyBhbmQgSE9UIGlz IGFsbG93YWJsZS4KKwkgKiBDYXNlIChhKTogbm8gaW5kZXhlZCBhdHRyaWJ1dGUgd2FzIG1v ZGlmaWVkIC0+IGNsYXNzaWMgSE9ULgogCSAqLwotCWhvdF9hbGxvd2VkID0gdHJ1ZTsKLQkq c3VtbWFyaXplZF9vbmx5ID0gZmFsc2U7CisJaWYgKGJtc19pc19lbXB0eShtb2RpZmllZF9p ZHhfYXR0cnMpKQorCQlyZXR1cm4gSEVBUF9IRUFQX09OTFlfVVBEQVRFOwogCiAJLyoKLQkg KiBDaGVjayBmb3IgY2FzZSAoYSk7IHdoZW4gdGhlcmUgYXJlIG5vIG1vZGlmaWVkIGluZGV4 IGF0dHJpYnV0ZXMgSE9UIGlzCi0JICogYWxsb3dlZC4KKwkgKiBDYXNlIChiKTogYXQgbGVh c3Qgb25lIGluZGV4ZWQgYXR0cmlidXRlIGNoYW5nZWQuICBJZiBhbGwgb2YgdGhlbSBhcmUK KwkgKiB1c2VkIG9ubHkgYnkgc3VtbWFyaXppbmcgaW5kZXhlcywgd2UgY2FuIHN0aWxsIHRh a2UgdGhlIGNsYXNzaWMgSE9UCisJICogcGF0aCAtLSB0aGUgc3VtbWFyaXppbmcgaW5kZXgg QU0gZ2V0cyBhIG5ldyBlbnRyeSB2aWEgYW1pbnNlcnQgYW5kIG5vCisJICogbm9uLXN1bW1h cml6aW5nIGluZGV4IG5lZWRzIHRvIGNoYW5nZS4KIAkgKi8KLQlpZiAoYm1zX2lzX2VtcHR5 KG1vZGlmaWVkX2lkeF9hdHRycykpCi0JCWhvdF9hbGxvd2VkID0gdHJ1ZTsKLQllbHNlCi0J ewotCQlCaXRtYXBzZXQgICpzdW1fYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1h cChyZWxhdGlvbiwKLQkJCQkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFS SVpFRCk7CisJaWYgKGJtc19pc19zdWJzZXQobW9kaWZpZWRfaWR4X2F0dHJzLCBSZWxhdGlv bkdldEluZGV4QXR0ckJpdG1hcE5vQ29weShyZWxhdGlvbiwKKwkJCQkJCQkJCQkJCUlOREVY X0FUVFJfQklUTUFQX1NVTU1BUklaRUQpKSkKKwkJcmV0dXJuIEhFQVBfSEVBUF9PTkxZX1VQ REFURTsKIAotCQkvKgotCQkgKiBBdCBsZWFzdCBvbmUgaW5kZXggYXR0cmlidXRlIHdhcyBt b2RpZmllZCwgYnV0IGlzIHRoaXMgY2FzZSAoYikKLQkJICogd2hlcmUgYWxsIHRoZSBtb2Rp ZmllZCBpbmRleCBhdHRyaWJ1dGVzIGFyZSBvbmx5IHVzZWQgYnkKLQkJICogc3VtbWFyaXpp bmcgaW5kZXhlcz8gIElmIGl0IGlzLCB0aGVuIHdlIG5lZWQgdG8gdXBkYXRlIHRob3NlCi0J CSAqIGluZGV4ZXMsIGJ1dCB0aGlzIHVwZGF0ZSBjYW4gc3RpbGwgYmUgY29uc2lkZXJlZCBo ZWFwLW9ubHkgKEhPVCkKLQkJICogYW5kIGF2b2lkIHVwZGF0aW5nIGFueSBub24tc3VtbWFy aXppbmcgaW5kZXhlcyBvbiB0aGUgcmVsYXRpb24uCi0JCSAqLwotCQlpZiAoYm1zX2lzX3N1 YnNldChtb2RpZmllZF9pZHhfYXR0cnMsIHN1bV9hdHRycykpCi0JCXsKLQkJCWhvdF9hbGxv d2VkID0gdHJ1ZTsKLQkJCSpzdW1tYXJpemVkX29ubHkgPSB0cnVlOwotCQl9Ci0JCWVsc2UK LQkJewotCQkJLyoKLQkJCSAqIE5vdyB3ZSBrbm93IGEpIG9uZSBvciBtb3JlIGluZGV4ZWQg YXR0cmlidXRlcyB3ZXJlIG1vZGlmaWVkCi0JCQkgKiAoY2hhbmdlZCB2YWx1ZSwgbm90IGp1 c3QgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIFVQREFURSkgYW5kIHRoYXQKLQkJCSAqIGIpIGF0 IGxlYXN0IG9uZSBvZiB0aG9zZSBhdHRyaWJ1dGVzIGlzIHVzZWQgYnkgYQotCQkJICogbm9u LXN1bW1hcml6aW5nIGluZGV4LiBIT1QgaXMgbm90IGFsbG93ZWQuCi0JCQkgKi8KLQkJCWhv dF9hbGxvd2VkID0gZmFsc2U7Ci0JCX0KKwkvKgorCSAqIEEgbm9uLXN1bW1hcml6aW5nIGlu ZGV4ZWQgYXR0cmlidXRlIGNoYW5nZWQuICBIT1QtaW5kZXhlZCBpcyBzdXBwb3J0ZWQKKwkg KiB3aGVuZXZlciB0aGUgcmVsYXRpb24gY2FuIHRvbGVyYXRlIGV4dHJhIGluZGV4IGVudHJp ZXMgaW4gYSBjaGFpbiB3aG9zZQorCSAqIHBlci1jaGFpbi1tZW1iZXIga2V5cyBtYXkgZGlm ZmVyLiAgVGhlIGxvZ2ljYWwtcmVwbGljYXRpb24gYXBwbHkgcGF0aAorCSAqIGlzIGdhdGVk IGFib3ZlIGJ5IGhvdF9pbmRleGVkX29uX2FwcGx5LiAgVGhlIHJlbWFpbmluZworCSAqIEhF QVBfVVBEQVRFX0FMTF9JTkRFWEVTIGZhbGxiYWNrcyBhcmU6CisJICoKKwkgKiAtIEFuIFVQ REFURSB0aGF0IG1vZGlmaWVzIGFuIGF0dHJpYnV0ZSByZWZlcmVuY2VkIGJ5IGFuIGV4cHJl c3Npb24KKwkgKiBpbmRleC4gIFNlbGVjdGl2ZSBtYWludGVuYW5jZSBvZiBhbiBleHByZXNz aW9uIGluZGV4IHJlcXVpcmVzCisJICogZXZhbHVhdGluZyB0aGUgaW5kZXhlZCBleHByZXNz aW9uIHRvIGRlY2lkZSB3aGV0aGVyIGl0cyB2YWx1ZSAoaGVuY2UKKwkgKiBpdHMgZW50cnkp IGNoYW5nZWQ7IHRoYXQgZXhwcmVzc2lvbi1hd2FyZSBwYXRoIGlzIG5vdCBpbXBsZW1lbnRl ZCB5ZXQsCisJICogc28gc3VjaCBhbiB1cGRhdGUgZmFsbHMgYmFjayB0byBub24tSE9ULiAg VXBkYXRlcyB0aGF0IGRvIG5vdCB0b3VjaCBhbnkKKwkgKiBleHByZXNzaW9uLWluZGV4IGF0 dHJpYnV0ZSBzdGF5IGVsaWdpYmxlLgorCSAqCisJICogLSBBbiBVUERBVEUgdGhhdCBtb2Rp ZmllcyBldmVyeSBpbmRleGVkIGF0dHJpYnV0ZSBvZiB0aGUgcmVsYXRpb24uCisJICogSE9U LWluZGV4ZWQgb25seSBwYXlzIG9mZiB3aGVuIGl0IGNhbiBza2lwIG1haW50YWluaW5nIGF0 IGxlYXN0IG9uZQorCSAqIGluZGV4IHdob3NlIGtleSBkaWQgbm90IGNoYW5nZTsgaWYgYWxs IGluZGV4ZWQgYXR0cmlidXRlcyBjaGFuZ2VkIHRoZXJlCisJICogaXMgbm90aGluZyB0byBz a2lwLCBzbyBhIHBsYWluIG5vbi1IT1QgdXBkYXRlIGlzIGNoZWFwZXIgKGl0IGF2b2lkcyB0 aGUKKwkgKiBjaGFpbi13YWxrIGFuZCBiaXRtYXAtb3ZlcmxhcCBvdmVyaGVhZCkuCisJICov CisJYWxsX2lkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwTm9Db3B5KHJl bGF0aW9uLAorCQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKIAot CQlibXNfZnJlZShzdW1fYXR0cnMpOwotCX0KKwkvKgorCSAqIFN5c3RlbSBjYXRhbG9ncyBr ZWVwIGNsYXNzaWMgSE9UIChhbiBVUERBVEUgdG91Y2hpbmcgbm8gbm9uLXN1bW1hcml6aW5n CisJICogaW5kZXhlZCBhdHRyaWJ1dGUgYWxyZWFkeSByZXR1cm5lZCBIRUFQX0hFQVBfT05M WV9VUERBVEUgYWJvdmUpLCBidXQgZG8KKwkgKiBOT1QgdGFrZSB0aGUgSE9ULWluZGV4ZWQg cGF0aDogY2F0YWxvZyByZWFkcyBnbyB0aHJvdWdoIG1hbnkgY29kZSBwYXRocworCSAqIChz eXN0YWJsZSBpbmRleCBzY2FucywgU25hcHNob3REaXJ0eSB1bmlxdWUgY2hlY2tzLCBzZXFz Y2FucyBpbgorCSAqIG9yZGVyaW5ncyB0aGUgY2hhaW4td2FsayBkZWR1cCBkb2VzIG5vdCBj b3ZlcikgdGhhdCBhcmUgbm90IGFsbCBwcm92ZW4KKwkgKiBzYWZlIGFnYWluc3Qgc3RhbGUg Y2hhaW4gZW50cmllcy4gIEZhbGxpbmcgYmFjayB0byBhIG5vbi1IT1QgdXBkYXRlCisJICog aGVyZSBpcyBleGFjdGx5IHRoZSBwcmUtSE9ULWluZGV4ZWQgYmVoYXZpb3VyIGZvciBzdWNo IGNhdGFsb2cgdXBkYXRlcy4KKwkgKi8KKwlpZiAoSXNDYXRhbG9nUmVsYXRpb24ocmVsYXRp b24pKQorCQlyZXR1cm4gSEVBUF9VUERBVEVfQUxMX0lOREVYRVM7CiAKLQlyZXR1cm4gaG90 X2FsbG93ZWQ7CisJLyoKKwkgKiBEaXNxdWFsaWZ5IHdoZW4gdGhlIHVwZGF0ZSB0b3VjaGVz IGFuIGF0dHJpYnV0ZSByZWZlcmVuY2VkIGJ5IGFuCisJICogZXhwcmVzc2lvbiBpbmRleCAo c2VlIGNhc2UgMSBhYm92ZSkuICBVcGRhdGVzIHRoYXQgbGVhdmUgZXZlcnkKKwkgKiBleHBy ZXNzaW9uLWluZGV4IGF0dHJpYnV0ZSB1bmNoYW5nZWQgcmVtYWluIGVsaWdpYmxlLgorCSAq LworCWlmIChibXNfb3ZlcmxhcChtb2RpZmllZF9pZHhfYXR0cnMsCisJCQkJCVJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwTm9Db3B5KHJlbGF0aW9uLAorCQkJCQkJCQkJCQkJCSBJTkRF WF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OKSkpCisJCXJldHVybiBIRUFQX1VQREFURV9BTExf SU5ERVhFUzsKKworCS8qCisJICogSWYgZXZlcnkgaW5kZXhlZCBhdHRyaWJ1dGUgY2hhbmdl ZCwgYSBIT1Qtc2VsZWN0aXZlIHVwZGF0ZSBjb3VsZCBub3QKKwkgKiBza2lwIGFueSBpbmRl eCAtLSBlYWNoIGluZGV4IG5lZWRzIGEgZnJlc2ggZW50cnkgYW55d2F5IC0tIHNvIGl0IHdv dWxkCisJICogcGF5IHRoZSBIT1QvU0lVIGNoYWluLXdhbGsgYW5kIGJpdG1hcC1vdmVybGFw IG92ZXJoZWFkIGZvciBubyBzYXZlZAorCSAqIGluZGV4IG1haW50ZW5hbmNlLiAgRmFsbCBi YWNrIHRvIGEgcGxhaW4gbm9uLUhPVCB1cGRhdGUgaW4gdGhhdCBjYXNlLgorCSAqLworCWlm IChibXNfaXNfc3Vic2V0KGFsbF9pZHhfYXR0cnMsIG1vZGlmaWVkX2lkeF9hdHRycykpCisJ CXJldHVybiBIRUFQX1VQREFURV9BTExfSU5ERVhFUzsKKworCXJldHVybiBIRUFQX1NFTEVD VElWRV9JTkRFWF9VUERBVEU7CiB9CiAKIC8qCkBAIC00NDExLDE1ICs0NTU1LDMzIEBAIExv Y2tUdXBsZU1vZGUKIEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShSZWxhdGlvbiByZWxh dGlvbiwgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMpCiB7CiAJTG9ja1R1 cGxlTW9kZSBsb2NrbW9kZSA9IExvY2tUdXBsZUV4Y2x1c2l2ZTsKKwljb25zdCBCaXRtYXBz ZXQgKmtleV9hdHRyczsKKworCS8qCisJICogQ29tbW9uIGZhc3QgcGF0aDogd2hlbiBubyBp bmRleGVkIGF0dHJpYnV0ZSBjaGFuZ2VkIChlLmcuIHBnYmVuY2gtc3R5bGUKKwkgKiAiVVBE QVRFIHQgU0VUIG5vbl9pZHhfY29sID0gLi4uIiBvciB0aGUgd2lkZV8wICJVUERBVEUgdCBT RVQgaWQgPSBpZCIKKwkgKiB3b3JrbG9hZCBhZnRlciB0aGUgZXhlY3V0b3IncyBmYXN0IHBh dGggaW4gRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMpLAorCSAqIG1vZGlmaWVkX2lkeF9h dHRycyBpcyBlbXB0eSBhbmQgYSBrZXkgY29sdW1uIGNhbm5vdCBoYXZlIGNoYW5nZWQuICBT a2lwCisJICogdGhlIHJlbGNhY2hlIGxvb2t1cCBhbmQgcmV0dXJuIHRoZSB3ZWFrZXIgbG9j ayBpbW1lZGlhdGVseS4gIEF0IGhpZ2gKKwkgKiBUUFMgdGhpcyBhdm9pZHMgYSBwZXItVVBE QVRFIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwIGNhbGwgKGFuZCBpdHMKKwkgKiBibXNf Y29weSkgb24gdGhlIEtFWSBiaXRtYXAuCisJICovCisJaWYgKGJtc19pc19lbXB0eShtb2Rp ZmllZF9pZHhfYXR0cnMpKQorCQlyZXR1cm4gTG9ja1R1cGxlTm9LZXlFeGNsdXNpdmU7CiAK LQlCaXRtYXBzZXQgICprZXlfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChy ZWxhdGlvbiwKLQkJCQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOworCS8q CisJICogQm9ycm93IHRoZSBjYWNoZWQgYml0bWFwIHJhdGhlciB0aGFuIGNvcHlpbmcgaXQ7 IHdlIG9ubHkgdGVzdCBvdmVybGFwCisJICogYW5kIG5ldmVyIG11dGF0ZSBvciBmcmVlIGtl eV9hdHRycy4gIEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZSBydW5zCisJICogd2l0aG91 dCBidWZmZXIgbG9ja3MgYnV0IHRoZSByZWxjYWNoZSBlbnRyeSBpcyBwaW5uZWQgYnkgdGhl IGNhbGxlcidzCisJICogbG9jayBvbiB0aGUgcmVsYXRpb24sIGFuZCB3ZSB0b3VjaCBub3Ro aW5nIGJldHdlZW4gZmV0Y2ggYW5kIHRoZQorCSAqIGJtc19vdmVybGFwIHRoYXQgY291bGQg dHJpZ2dlciBhIHJlbGNhY2hlIGludmFsaWRhdGlvbi4KKwkgKi8KKwlrZXlfYXR0cnMgPSBS ZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcE5vQ29weShyZWxhdGlvbiwKKwkJCQkJCQkJCQkJ CSBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOwogCiAJaWYgKCFibXNfb3ZlcmxhcChtb2RpZmll ZF9pZHhfYXR0cnMsIGtleV9hdHRycykpCiAJCWxvY2ttb2RlID0gTG9ja1R1cGxlTm9LZXlF eGNsdXNpdmU7CiAKLQlibXNfZnJlZShrZXlfYXR0cnMpOwotCiAJcmV0dXJuIGxvY2ttb2Rl OwogfQogCkBAIC00NTE3LDYgKzQ2NzksNzEgQEAgSGVhcFVwZGF0ZU1vZGlmaWVkSWR4QXR0 cnMoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSBvbGR0dXAsIEhlYXBUdXBsZSBuZXd0 dXAKIAlyZXR1cm4gbW9kaWZpZWRfaWR4X2F0dHJzOwogfQogCisvKgorICogaGVhcF9mb3Jt X2hvdF9pbmRleGVkX3R1cGxlCisgKgorICogUmV0dXJuIGEgbmV3bHkgcGFsbG9jJ2QgY29w eSBvZiB0dXAgdGhhdCBjYXJyaWVzIHRoZSBmaXhlZC1zaXplCisgKiBpbmxpbmUtdHJhaWxp bmcgbW9kaWZpZWQtYXR0cmlidXRlcyBiaXRtYXAgKHNlZSBhY2Nlc3MvaG90X2luZGV4ZWQu aCksCisgKiB3aXRoIEhFQVBfSU5ERVhFRF9VUERBVEVEIHNldC4gIFRoZSBiaXRtYXAgcmVj b3JkcyB0aGUgdXNlciBhdHRyaWJ1dGVzIGluCisgKiBtb2RpZmllZF9pZHhfYXR0cnMgKHRo ZSBpbmRleGVkIGF0dHJpYnV0ZXMgdGhpcyBVUERBVEUgY2hhbmdlZCwgdXNpbmcgdGhlCisg KiBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyIG9mZnNldCBjb252ZW50aW9u KTsgYW4gZW1wdHkgc2V0IHlpZWxkcworICogYW4gYWxsLXplcm8gYml0bWFwLCB3aGljaCBp cyBjb3JyZWN0IGZvciB0aGUgY2hhaW4tdW5pZm9ybWl0eSBwcm9tb3Rpb24gb2YKKyAqIGEg Y2xhc3NpYy1IT1QgdXBkYXRlIG9uIGFuIGFscmVhZHktSE9ULWluZGV4ZWQgY2hhaW4uCisg KgorICogVGhlIGJpdG1hcCBvY2N1cGllcyB0aGUgZmluYWwgSG90SW5kZXhlZEJpdG1hcEJ5 dGVzKG5hdHRzKSBieXRlcyBvZiB0aGUKKyAqIHR1cGxlLCB3aGVyZSBuYXR0cyBpcyB0aGUg dHVwbGUncyBvd24gYXR0cmlidXRlIGNvdW50CisgKiAoSGVhcFR1cGxlSGVhZGVyR2V0TmF0 dHMpIC0tIHdoaWNoIGEgcmVhZGVyIHJlY292ZXJzIGZyb20gdGhlIHN0b3JlZCB0dXBsZSwK KyAqIHNvIHRoZSBiaXRtYXAgc3RheXMgbG9jYXRhYmxlIGV2ZW4gYWZ0ZXIgdGhlIHJlbGF0 aW9uJ3MgbmF0dHMgbGF0ZXIgZ3Jvd3MKKyAqIHZpYSBBREQgQ09MVU1OLiAgRm9yIGEgZnJl c2hseSBmb3JtZWQgVVBEQVRFIHR1cGxlIHRoaXMgZXF1YWxzIHRoZQorICogcmVsYXRpb24n cyBjdXJyZW50IG5hdHRzOyB3ZSBhc3NlcnQgdGhhdCB0byBjYXRjaCBhbnkgZnV0dXJlIGRp dmVyZ2VuY2UuCisgKiBUaGUgYml0bWFwIHNpdHMgcGFzdCB0aGUgYXR0cmlidXRlIGRhdGEs IHNvIGhlYXBfZGVmb3JtX3R1cGxlIG5ldmVyIHNlZXMKKyAqIGl0LiAgVGhlIGNhbGxlciBt dXN0IGhhdmUgcmVzZXJ2ZWQgcm9vbSBmb3IgdGhlIGV4dHJhIGJ5dGVzIGluIHRoZSBwYWdl LWZpdAorICogY2FsY3VsYXRpb24sIGFuZCBtdXN0IGZyZWUgdGhlIHJldHVybmVkIHR1cGxl LgorICovCitzdGF0aWMgSGVhcFR1cGxlCitoZWFwX2Zvcm1faG90X2luZGV4ZWRfdHVwbGUo SGVhcFR1cGxlIHR1cCwgaW50IHJlbG5hdHRzLAorCQkJCQkJCWNvbnN0IEJpdG1hcHNldCAq bW9kaWZpZWRfaWR4X2F0dHJzKQoreworCWludAkJCW5hdHRzID0gSGVhcFR1cGxlSGVhZGVy R2V0TmF0dHModHVwLT50X2RhdGEpOworCVNpemUJCWJtYnl0ZXM7CisJU2l6ZQkJbmV3bGVu OworCUhlYXBUdXBsZQluZXd0dXBsZTsKKwl1aW50OAkgICAqYml0bWFwOworCWludAkJCXgg PSAtMTsKKworCS8qCisJICogVGhlIGJpdG1hcCBpcyBzaXplZCBhbmQgbG9jYXRlZCBieSB0 aGUgdHVwbGUncyBvd24gbmF0dHM7IGEgZnJlc2hseQorCSAqIGZvcm1lZCBVUERBVEUgdHVw bGUgY2FycmllcyB0aGUgZnVsbCByZWxhdGlvbiBuYXR0cy4gIElmIHRoZXNlIGV2ZXIKKwkg KiBkaXZlcmdlIHRoZSBwYWdlLWZpdCByZXNlcnZhdGlvbiAobWFkZSB3aXRoIHJlbG5hdHRz KSBhbmQgdGhlIGFjdHVhbAorCSAqIGJpdG1hcCBzaXplIHdvdWxkIGRpc2FncmVlLgorCSAq LworCUFzc2VydChuYXR0cyA9PSByZWxuYXR0cyk7CisJYm1ieXRlcyA9IEhvdEluZGV4ZWRC aXRtYXBCeXRlcyhuYXR0cyk7CisJbmV3bGVuID0gdHVwLT50X2xlbiArIGJtYnl0ZXM7CisK KwluZXd0dXBsZSA9IChIZWFwVHVwbGUpIHBhbGxvYzAoSEVBUFRVUExFU0laRSArIG5ld2xl bik7CisJbmV3dHVwbGUtPnRfbGVuID0gbmV3bGVuOworCW5ld3R1cGxlLT50X3NlbGYgPSB0 dXAtPnRfc2VsZjsKKwluZXd0dXBsZS0+dF90YWJsZU9pZCA9IHR1cC0+dF90YWJsZU9pZDsK KwluZXd0dXBsZS0+dF9kYXRhID0gKEhlYXBUdXBsZUhlYWRlcikgKChjaGFyICopIG5ld3R1 cGxlICsgSEVBUFRVUExFU0laRSk7CisKKwkvKiBjb3B5IHRoZSBvcmlnaW5hbCB0dXBsZTsg dGhlIHRyYWlsaW5nIGJpdG1hcCBieXRlcyBzdGF5IHplcm8gKi8KKwltZW1jcHkobmV3dHVw bGUtPnRfZGF0YSwgdHVwLT50X2RhdGEsIHR1cC0+dF9sZW4pOworCW5ld3R1cGxlLT50X2Rh dGEtPnRfaW5mb21hc2syIHw9IEhFQVBfSU5ERVhFRF9VUERBVEVEOworCisJYml0bWFwID0g SG90SW5kZXhlZEdldE1vZGlmaWVkQml0bWFwUlcobmV3dHVwbGUtPnRfZGF0YSwgbmV3bGVu LCBuYXR0cyk7CisJd2hpbGUgKCh4ID0gYm1zX25leHRfbWVtYmVyKG1vZGlmaWVkX2lkeF9h dHRycywgeCkpID49IDApCisJeworCQlBdHRyTnVtYmVyCWF0dG51bSA9IHggKyBGaXJzdExv d0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOworCisJCS8qIG9ubHkgdXNlciBhdHRyaWJ1 dGVzIGNhbiBiZSBtb2RpZmllZC1hbmQtaW5kZXhlZCAqLworCQlpZiAoYXR0bnVtID49IDEp CisJCQlIb3RJbmRleGVkU2V0QXR0ck1vZGlmaWVkKGJpdG1hcCwgYXR0bnVtKTsKKwl9CisK KwlyZXR1cm4gbmV3dHVwbGU7Cit9CisKIC8qCiAgKglzaW1wbGVfaGVhcF91cGRhdGUgLSBy ZXBsYWNlIGEgdHVwbGUKICAqCkBAIC00NTI3LDcgKzQ3NTQsNyBAQCBIZWFwVXBkYXRlTW9k aWZpZWRJZHhBdHRycyhSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIG9sZHR1cCwgSGVh cFR1cGxlIG5ld3R1cAogICovCiB2b2lkCiBzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRpb24g cmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1cCwK LQkJCQkgICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkgICBib29s ICp1cGRhdGVfYWxsX2luZGV4ZXMpCiB7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAlUTV9GYWls dXJlRGF0YSB0bWZkOwpAQCAtNDUzNiwxMyArNDc2MywxNCBAQCBzaW1wbGVfaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVh cFR1cGxlIHR1cAogCUJ1ZmZlckhlYXBUdXBsZVRhYmxlU2xvdCAqYnNsb3Q7CiAJSGVhcFR1 cGxlCW9sZHR1cDsKIAlib29sCQlzaG91bGRGcmVlID0gdHJ1ZTsKLQlCaXRtYXBzZXQgICpt b2RpZmllZF9pZHhfYXR0cnM7Ci0JYm9vbAkJaG90X2FsbG93ZWQsCi0JCQkJc3VtbWFyaXpl ZF9vbmx5OworCUJpdG1hcHNldCAgKmxvY2FsX21vZGlmaWVkX2lkeF9hdHRyczsKKwlIZWFw VXBkYXRlSW5kZXhNb2RlIGhvdF9tb2RlOwogCUJ1ZmZlcgkJYnVmZmVyOwogCiAJQXNzZXJ0 KEl0ZW1Qb2ludGVySXNWYWxpZChvdGlkKSk7CiAKKwkqdXBkYXRlX2FsbF9pbmRleGVzID0g ZmFsc2U7CisKIAkvKgogCSAqIFRvIHVwZGF0ZSBhIGhlYXAgdHVwbGUgd2UgbmVlZCB0byBm aW5kIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZAogCSAqIGF0dHJpYnV0ZXMgKCJtb2Rp ZmllZF9pZHhfYXR0cnMiKSBhbmQgdXNlIHRoYXQgdG8gZGV0ZXJtaW5lIGlmIGEgSE9UCkBA IC00NTgzLDggKzQ4MTEsNiBAQCBzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRp b24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1cAogCQkgKi8K IAkJQXNzZXJ0KFJlbGF0aW9uU3VwcG9ydHNTeXNDYWNoZShSZWxhdGlvbkdldFJlbGlkKHJl bGF0aW9uKSkpOwogCi0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7Ci0KIAkJLyogbW9k aWZpZWRfaWR4X2F0dHJzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgKi8KIAkJRXhlY0Ryb3BTaW5n bGVUdXBsZVRhYmxlU2xvdChzbG90KTsKIApAQCAtNDU5OSwyNyArNDgyNSwyMCBAQCBzaW1w bGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0 YSAqb3RpZCwgSGVhcFR1cGxlIHR1cAogCUV4ZWNTdG9yZVBpbm5lZEJ1ZmZlckhlYXBUdXBs ZSgmYnNsb3QtPmJhc2UudHVwZGF0YSwgc2xvdCwgYnVmZmVyKTsKIAlvbGR0dXAgPSBFeGVj RmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIGZhbHNlLCAmc2hvdWxkRnJlZSk7CiAKLQltb2Rp ZmllZF9pZHhfYXR0cnMgPSBIZWFwVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhyZWxhdGlvbiwg b2xkdHVwLCB0dXApOwotCWxvY2ttb2RlID0gSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2Rl KHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMpOwotCWhvdF9hbGxvd2VkID0gSGVhcFVw ZGF0ZUhvdEFsbG93YWJsZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0dHJzLCAmc3VtbWFy aXplZF9vbmx5KTsKKwlsb2NhbF9tb2RpZmllZF9pZHhfYXR0cnMgPSBIZWFwVXBkYXRlTW9k aWZpZWRJZHhBdHRycyhyZWxhdGlvbiwgb2xkdHVwLCB0dXApOworCWxvY2ttb2RlID0gSGVh cFVwZGF0ZURldGVybWluZUxvY2ttb2RlKHJlbGF0aW9uLCBsb2NhbF9tb2RpZmllZF9pZHhf YXR0cnMpOworCWhvdF9tb2RlID0gSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShyZWxhdGlvbiwg bG9jYWxfbW9kaWZpZWRfaWR4X2F0dHJzKTsKIAotCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJl bGF0aW9uLCBvdGlkLCB0dXAsIEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSksIDAsCisJcmVz dWx0ID0gaGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cCwgR2V0Q3VycmVudENvbW1h bmRJZCh0cnVlKSwKKwkJCQkJCSAwIC8qIG9wdGlvbnMgKi8gLAogCQkJCQkJIEludmFsaWRT bmFwc2hvdCwgdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAotCQkJCQkJICZ0bWZkLCBs b2NrbW9kZSwgbW9kaWZpZWRfaWR4X2F0dHJzLCBob3RfYWxsb3dlZCk7CisJCQkJCQkgJnRt ZmQsIGxvY2ttb2RlLCBsb2NhbF9tb2RpZmllZF9pZHhfYXR0cnMsIGhvdF9tb2RlKTsKIAog CWlmIChzaG91bGRGcmVlKQogCQloZWFwX2ZyZWV0dXBsZShvbGR0dXApOwogCiAJRXhlY0Ry b3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKIAotCS8qCi0JICogRGVjaWRlIHdoZXRo ZXIgbmV3IGluZGV4IGVudHJpZXMgYXJlIG5lZWRlZCBmb3IgdGhlIHR1cGxlCi0JICoKLQkg KiBJZiB0aGUgdXBkYXRlIGlzIG5vdCBIT1QsIHdlIG11c3QgdXBkYXRlIGFsbCBpbmRleGVz LiBJZiB0aGUgdXBkYXRlIGlzCi0JICogSE9ULCBpdCBjb3VsZCBiZSB0aGF0IHdlIHVwZGF0 ZWQgc3VtbWFyaXplZCBjb2x1bW5zLCBzbyB3ZSBlaXRoZXIKLQkgKiB1cGRhdGUgb25seSBz dW1tYXJpemVkIGluZGV4ZXMsIG9yIG5vbmUgYXQgYWxsLgotCSAqLwotCSp1cGRhdGVfaW5k ZXhlcyA9IFRVX05vbmU7CiAJc3dpdGNoIChyZXN1bHQpCiAJewogCQljYXNlIFRNX1NlbGZN b2RpZmllZDoKQEAgLTQ2MjgsMTEgKzQ4NDcsMTQgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJl bGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBs ZSB0dXAKIAkJCWJyZWFrOwogCiAJCWNhc2UgVE1fT2s6Ci0JCQkvKiBkb25lIHN1Y2Nlc3Nm dWxseSAqLwotCQkJaWYgKCFIZWFwVHVwbGVJc0hlYXBPbmx5KHR1cCkpCi0JCQkJKnVwZGF0 ZV9pbmRleGVzID0gVFVfQWxsOwotCQkJZWxzZSBpZiAoc3VtbWFyaXplZF9vbmx5KQotCQkJ CSp1cGRhdGVfaW5kZXhlcyA9IFRVX1N1bW1hcml6aW5nOworCisJCQkvKgorCQkJICogSWYg dGhlIHR1cGxlIHN0b3JlZCBieSBoZWFwX3VwZGF0ZSBpcyBoZWFwLW9ubHkgdGhpcyB3YXMg YSBIT1QKKwkJCSAqIHVwZGF0ZSBhbmQgKHN1YmplY3QgdG8gcGVyLWluZGV4IGNoZWNrcykg bm90IGV2ZXJ5IGluZGV4IG5lZWRzCisJCQkgKiBhIG5ldyBlbnRyeTsgb3RoZXJ3aXNlIGV2 ZXJ5IGluZGV4IG11c3QgZ2V0IG9uZSBwb2ludGluZyBhdCB0aGUKKwkJCSAqIG5ldyB0dXBs ZSdzIFRJRC4KKwkJCSAqLworCQkJKnVwZGF0ZV9hbGxfaW5kZXhlcyA9ICFIZWFwVHVwbGVJ c0hlYXBPbmx5KHR1cCk7CiAJCQlicmVhazsKIAogCQljYXNlIFRNX1VwZGF0ZWQ6CkBAIC00 NjQ3LDYgKzQ4NjksOCBAQCBzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24s IGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1cAogCQkJZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCBoZWFwX3VwZGF0ZSBzdGF0dXM6ICV1IiwgcmVzdWx0KTsK IAkJCWJyZWFrOwogCX0KKworCWJtc19mcmVlKGxvY2FsX21vZGlmaWVkX2lkeF9hdHRycyk7 CiB9CiAKIApAQCAtODIxMSw0MCArODQzNSw0MiBAQCBpbmRleF9kZWxldGVfY2hlY2tfaHRp ZChUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSwKIAlBc3NlcnQoT2Zmc2V0TnVtYmVySXNW YWxpZChpc3RhdHVzLT5pZHhvZmZudW0pKTsKIAogCWlmICh1bmxpa2VseShpbmRleHBhZ2Vo b2ZmbnVtID4gbWF4b2ZmKSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJD T0RFX0lOREVYX0NPUlJVUFRFRCksCi0JCQkJIGVycm1zZ19pbnRlcm5hbCgiaGVhcCB0aWQg ZnJvbSBpbmRleCB0dXBsZSAoJXUsJXUpIHBvaW50cyBwYXN0IGVuZCBvZiBoZWFwIHBhZ2Ug bGluZSBwb2ludGVyIGFycmF5IGF0IG9mZnNldCAldSBvZiBibG9jayAldSBpbiBpbmRleCBc IiVzXCIiLAotCQkJCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcihodGlkKSwKLQkJ CQkJCQkJIGluZGV4cGFnZWhvZmZudW0sCi0JCQkJCQkJCSBpc3RhdHVzLT5pZHhvZmZudW0s IGRlbHN0YXRlLT5pYmxrbnVtLAotCQkJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo ZGVsc3RhdGUtPmlyZWwpKSkpOworCXsKKwkJLyoKKwkJICogVW5kZXIgSE9ULWluZGV4ZWQg dXBkYXRlcywgYSBzdGFsZSBidHJlZSBlbnRyeSBjYW4gb3V0bGl2ZSBoZWFwCisJCSAqIHBy dW5pbmcvdmFjdXVtIG9mIHRoZSBwYWdlIGl0IHRhcmdldHM7IGlmIHRoZSB0YXJnZXQgb2Zm c2V0IGlzIHBhc3QKKwkJICogdGhlIGN1cnJlbnQgbWF4LCB0cmVhdCBhcyB2YWN1dW1hYmxl IGluc3RlYWQgb2YgcmFpc2luZyBhbgorCQkgKiBpbmRleC1jb3JydXB0aW9uIGVycm9yLgor CQkgKi8KKwkJcmV0dXJuOworCX0KIAogCWlpZCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgaW5k ZXhwYWdlaG9mZm51bSk7CiAJaWYgKHVubGlrZWx5KCFJdGVtSWRJc1VzZWQoaWlkKSkpCi0J CWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFWF9DT1JSVVBURUQp LAotCQkJCSBlcnJtc2dfaW50ZXJuYWwoImhlYXAgdGlkIGZyb20gaW5kZXggdHVwbGUgKCV1 LCV1KSBwb2ludHMgdG8gdW51c2VkIGhlYXAgcGFnZSBpdGVtIGF0IG9mZnNldCAldSBvZiBi bG9jayAldSBpbiBpbmRleCBcIiVzXCIiLAotCQkJCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9j a051bWJlcihodGlkKSwKLQkJCQkJCQkJIGluZGV4cGFnZWhvZmZudW0sCi0JCQkJCQkJCSBp c3RhdHVzLT5pZHhvZmZudW0sIGRlbHN0YXRlLT5pYmxrbnVtLAotCQkJCQkJCQkgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUoZGVsc3RhdGUtPmlyZWwpKSkpOwotCi0JaWYgKEl0ZW1JZEhh c1N0b3JhZ2UoaWlkKSkKIAl7Ci0JCUhlYXBUdXBsZUhlYWRlciBodHVwOwotCi0JCUFzc2Vy dChJdGVtSWRJc05vcm1hbChpaWQpKTsKLQkJaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBh Z2VHZXRJdGVtKHBhZ2UsIGlpZCk7Ci0KLQkJaWYgKHVubGlrZWx5KEhlYXBUdXBsZUhlYWRl cklzSGVhcE9ubHkoaHR1cCkpKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUo RVJSQ09ERV9JTkRFWF9DT1JSVVBURUQpLAotCQkJCQkgZXJybXNnX2ludGVybmFsKCJoZWFw IHRpZCBmcm9tIGluZGV4IHR1cGxlICgldSwldSkgcG9pbnRzIHRvIGhlYXAtb25seSB0dXBs ZSBhdCBvZmZzZXQgJXUgb2YgYmxvY2sgJXUgaW4gaW5kZXggXCIlc1wiIiwKLQkJCQkJCQkJ CSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKGh0aWQpLAotCQkJCQkJCQkJIGluZGV4cGFn ZWhvZmZudW0sCi0JCQkJCQkJCQkgaXN0YXR1cy0+aWR4b2ZmbnVtLCBkZWxzdGF0ZS0+aWJs a251bSwKLQkJCQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShkZWxzdGF0ZS0+aXJl bCkpKSk7CisJCS8qCisJCSAqIFVuZGVyIEhPVC1pbmRleGVkIHVwZGF0ZXMsIGEgc3RhbGUg YnRyZWUgZW50cnkgY2FuIGxlZ2l0aW1hdGVseQorCQkgKiBwb2ludCBhdCBhbiBMUCB0aGF0 IGhhcyBzaW5jZSBiZWVuIHJlY2xhaW1lZCB0byBMUF9VTlVTRUQgYnkKKwkJICogcHJ1bmlu ZyBiZWZvcmUgVkFDVVVNIHByb2Nlc3NlZCB0aGUgaW5kZXguICBUcmVhdCB0aGF0IGFzICJ0 aGUKKwkJICogY2hhaW4gaXMgdmFjdXVtYWJsZSIgKGNhbGxlcidzIGRvd25zdHJlYW0gY2hh aW4gd2FsayB3aWxsIHJlYWNoIHRoZQorCQkgKiBzYW1lIGNvbmNsdXNpb24pIHJhdGhlciB0 aGFuIGFuIGluZGV4LWNvcnJ1cHRpb24gZXJyb3IuCisJCSAqLworCQlyZXR1cm47CiAJfQor CisJLyoKKwkgKiBBIHJlZGlyZWN0IHRhcmdldCAoTFBfUkVESVJFQ1QpIGlzIGEgdmFsaWQg Y2hhaW4gcm9vdDogYW4gaW5kZXggZW50cnkKKwkgKiBwb2ludGluZyBhdCBpdCBpcyBsZWdp dGltYXRlIGFuZCB0aGUgY2FsbGVyJ3MgY2hhaW4gd2FsayBkZWNpZGVzCisJICogZGVsZXRh YmlsaXR5LiAgT25seSBnZW51aW5lbHkgbm9ybWFsIHR1cGxlcyBhcmUgaW5zcGVjdGVkIGJl bG93LgorCSAqCisJICogQSBub3JtYWwgdHVwbGUgdGhhdCBpcyBoZWFwLW9ubHkgKEhlYXBU dXBsZUhlYWRlcklzSGVhcE9ubHkpIGlzIGFsc28KKwkgKiB0b2xlcmF0ZWQgd2l0aG91dCBm dXJ0aGVyIGNoZWNrczogYSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRzIGEgZnJlc2gKKwkg KiBpbmRleCBlbnRyeSB0aGF0IHBvaW50cyBkaXJlY3RseSBhdCBzdWNoIGEgdHVwbGUgKGl0 IGNhcnJpZXMKKwkgKiBIRUFQX0lOREVYRURfVVBEQVRFRCksIGFuZCBhIHN0YWxlIGJ0cmVl IGVudHJ5IGNhbiBsaWtld2lzZSBhcnJpdmUgYXQKKwkgKiBhIGhlYXAtb25seSB0dXBsZSB3 aGVuIGl0cyBjaGFpbiByb290IHdhcyBwcnVuZWQgb3V0LiAgQm90aCBhcmUgbGVnYWwKKwkg KiB1bmRlciBIT1QtaW5kZXhlZDsgdGhlIGNhbGxlcidzIGNoYWluIHdhbGsgZGVjaWRlcyB3 aGV0aGVyIHRoZSBlbnRyeQorCSAqIGlzIGRlbGV0YWJsZSwgc28gdGhlcmUgaXMgbm90aGlu ZyB0byBjaGVjayBoZXJlIGZvciB0aGF0IGNhc2UuCisJICovCiB9CiAKIC8qCkBAIC04NDU4 LDcgKzg2ODQsNyBAQCBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMoUmVsYXRpb24gcmVsLCBU TV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSkKIAogCQkJLyogQXJlIGFueSB0dXBsZXMgZnJv bSB0aGlzIEhPVCBjaGFpbiBub24tdmFjdXVtYWJsZT8gKi8KIAkJCWlmIChoZWFwX2hvdF9z ZWFyY2hfYnVmZmVyKCZ0bXAsIHJlbCwgYnVmLCAmU25hcHNob3ROb25WYWN1dW1hYmxlLAot CQkJCQkJCQkJICAgJmhlYXBUdXBsZSwgTlVMTCwgdHJ1ZSkpCisJCQkJCQkJCQkgICAmaGVh cFR1cGxlLCBOVUxMLCB0cnVlLCBOVUxMLCBOVUxMLCBOVUxMKSkKIAkJCQljb250aW51ZTsJ CS8qIGNhbid0IGRlbGV0ZSBlbnRyeSAqLwogCiAJCQkvKiBDYWxsZXIgd2lsbCBkZWxldGUs IHNpbmNlIHdob2xlIEhPVCBjaGFpbiBpcyB2YWN1dW1hYmxlICovCkBAIC05MDQwLDkgKzky NjYsMjAgQEAgbG9nX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbG4sIEJ1ZmZlciBvbGRidWYs CiAJCX0KIAl9CiAKLQkvKiBJZiBuZXcgdHVwbGUgaXMgdGhlIHNpbmdsZSBhbmQgZmlyc3Qg dHVwbGUgb24gcGFnZS4uLiAqLworCS8qCisJICogSWYgbmV3IHR1cGxlIGlzIHRoZSBzaW5n bGUgYW5kIGZpcnN0IHR1cGxlIG9uIHBhZ2UsIHJlcGxheSBjYW4gcmVpbml0CisJICogdGhl IHBhZ2UgZnJvbSBzY3JhdGNoLgorCSAqCisJICogQWxzbyByZXF1aXJlIHRoYXQgdGhlIHBh Z2UncyB0dXBsZSBhcmVhIGNvbnRhaW5zIG5vdGhpbmcgb3RoZXIgdGhhbiB0aGlzCisJICog dHVwbGUuICBTZWUgaGVhcF9pbnNlcnQgZm9yIHdoeSB0aGlzIG1hdHRlcnMgd2hlbiB2YWN1 dW0gaGFzIGxlZnQgb3JwaGFuCisJICogdHVwbGUgYnl0ZXMgYmVoaW5kIGFuIExQX1VOVVNF RCBzbG90LgorCSAqCisJICogTk9URTogdGhpcyBtdXN0IG1pcnJvciB0aGUgc2FtZSBsb2dp YyBpbiBoZWFwX2luc2VydCgpCisJICovCiAJaWYgKEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVt YmVyKCYobmV3dHVwLT50X3NlbGYpKSA9PSBGaXJzdE9mZnNldE51bWJlciAmJgotCQlQYWdl R2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpID09IEZpcnN0T2Zmc2V0TnVtYmVyKQorCQlQYWdl R2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpID09IEZpcnN0T2Zmc2V0TnVtYmVyICYmCisJCSgo UGFnZUhlYWRlcikgcGFnZSktPnBkX3VwcGVyID09CisJCSgoUGFnZUhlYWRlcikgcGFnZSkt PnBkX3NwZWNpYWwgLSBNQVhBTElHTihuZXd0dXAtPnRfbGVuKSkKIAl7CiAJCWluZm8gfD0g WExPR19IRUFQX0lOSVRfUEFHRTsKIAkJaW5pdCA9IHRydWU7CkBAIC05MTA0LDYgKzkzNDEs NyBAQCBsb2dfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsbiwgQnVmZmVyIG9sZGJ1ZiwKIAkg KiBUaGUgJ2RhdGEnIGRvZXNuJ3QgaW5jbHVkZSB0aGUgY29tbW9uIHByZWZpeCBvciBzdWZm aXguCiAJICovCiAJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCAmeGxoZHIsIFNpemVPZkhlYXBI ZWFkZXIpOworCiAJaWYgKHByZWZpeGxlbiA9PSAwKQogCXsKIAkJWExvZ1JlZ2lzdGVyQnVm RGF0YSgwLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hh bmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5k ZXggNzViNGQ0MGFhZmMuLjdkZDY2MTNiOTg4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJhY2Nl c3MveGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1ZGUgImNh dGFsb2cvaW5kZXguaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9zdG9yYWdlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9zdG9yYWdlX3hsb2cuaCIK ICNpbmNsdWRlICJjb21tYW5kcy9wcm9ncmVzcy5oIgpAQCAtMjE4LDQ4ICsyMTksMzcgQEAg aGVhcGFtX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgb3Rp ZCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCUNvbW1hbmRJZCBjaWQsIHVpbnQzMiBv cHRpb25zLAogCQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jvc3NjaGVjaywK IAkJCQkJYm9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAq bG9ja21vZGUsCi0JCQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLCBU VV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkJQml0bWFwc2V0ICoqbW9k aWZpZWRfYXR0cnMpCiB7CiAJYm9vbAkJc2hvdWxkRnJlZSA9IHRydWU7CiAJSGVhcFR1cGxl CXR1cGxlID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCB0cnVlLCAmc2hvdWxkRnJl ZSk7Ci0JYm9vbAkJaG90X2FsbG93ZWQ7Ci0JYm9vbAkJc3VtbWFyaXplZF9vbmx5OworCUhl YXBVcGRhdGVJbmRleE1vZGUgaG90X21vZGU7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAogCUFz c2VydChJdGVtUG9pbnRlcklzVmFsaWQob3RpZCkpOwogCi0JaG90X2FsbG93ZWQgPSBIZWFw VXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMsICZzdW1t YXJpemVkX29ubHkpOwotCSpsb2NrbW9kZSA9IEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9k ZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0dHJzKTsKKwlob3RfbW9kZSA9IEhlYXBVcGRh dGVIb3RBbGxvd2FibGUocmVsYXRpb24sICptb2RpZmllZF9hdHRycyk7CisJKmxvY2ttb2Rl ID0gSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKHJlbGF0aW9uLCAqbW9kaWZpZWRfYXR0 cnMpOwogCiAJLyogVXBkYXRlIHRoZSB0dXBsZSB3aXRoIHRhYmxlIG9pZCAqLwogCXNsb3Qt PnR0c190YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwogCXR1cGxlLT50 X3RhYmxlT2lkID0gc2xvdC0+dHRzX3RhYmxlT2lkOwogCi0JcmVzdWx0ID0gaGVhcF91cGRh dGUocmVsYXRpb24sIG90aWQsIHR1cGxlLCBjaWQsIG9wdGlvbnMsIGNyb3NzY2hlY2ssIHdh aXQsCi0JCQkJCQkgdG1mZCwgKmxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsIGhvdF9h bGxvd2VkKTsKKwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVwbGUs IGNpZCwgb3B0aW9ucywKKwkJCQkJCSBjcm9zc2NoZWNrLCB3YWl0LAorCQkJCQkJIHRtZmQs ICpsb2NrbW9kZSwgKm1vZGlmaWVkX2F0dHJzLCBob3RfbW9kZSk7CiAJSXRlbVBvaW50ZXJD b3B5KCZ0dXBsZS0+dF9zZWxmLCAmc2xvdC0+dHRzX3RpZCk7CiAKIAkvKgotCSAqIERlY2lk ZSB3aGV0aGVyIG5ldyBpbmRleCBlbnRyaWVzIGFyZSBuZWVkZWQgZm9yIHRoZSB0dXBsZQot CSAqCi0JICogTm90ZTogaGVhcF91cGRhdGUgcmV0dXJucyB0aGUgdGlkIChsb2NhdGlvbikg b2YgdGhlIG5ldyB0dXBsZSBpbiB0aGUKLQkgKiB0X3NlbGYgZmllbGQuCi0JICoKLQkgKiBJ ZiB0aGUgdXBkYXRlIGlzIG5vdCBIT1QsIHdlIG11c3QgdXBkYXRlIGFsbCBpbmRleGVzLiBJ ZiB0aGUgdXBkYXRlIGlzCi0JICogSE9ULCBpdCBjb3VsZCBiZSB0aGF0IHdlIHVwZGF0ZWQg c3VtbWFyaXplZCBjb2x1bW5zLCBzbyB3ZSBlaXRoZXIKLQkgKiB1cGRhdGUgb25seSBzdW1t YXJpemVkIGluZGV4ZXMsIG9yIG5vbmUgYXQgYWxsLgorCSAqIFRlbGwgdGhlIGNhbGxlciB3 aGV0aGVyIGV2ZXJ5IGluZGV4IG5lZWRzIGEgbmV3IGVudHJ5LiAgSWYgdGhlIG5ldworCSAq IHR1cGxlIGlzIG5vdCBoZWFwLW9ubHkgdGhlIHVwZGF0ZSB3YXMgbm90IEhPVDogaXQgaXMg YW4gaW5kZXBlbmRlbnQKKwkgKiB2ZXJzaW9uIHJlcXVpcmluZyBhIGZyZXNoIGVudHJ5IGlu IGV2ZXJ5IGluZGV4LCB3aGljaCB3ZSBzaWduYWwgYnkKKwkgKiBhZGRpbmcgdGhlIHdob2xl LXJvdyBhdHRyaWJ1dGUgdG8gKm1vZGlmaWVkX2F0dHJzLiAgT3RoZXJ3aXNlIChjbGFzc2lj CisJICogSE9UIG9yIEhPVC1pbmRleGVkKSB0aGUgY2FsbGVyIGNvbnN1bHRzIHRoZSBwZXIt aW5kZXggYXR0cmlidXRlcy4KIAkgKi8KLQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOwot CWlmIChyZXN1bHQgPT0gVE1fT2spCi0JewotCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seSh0 dXBsZSkpCi0JCXsKLQkJCWlmIChzdW1tYXJpemVkX29ubHkpCi0JCQkJKnVwZGF0ZV9pbmRl eGVzID0gVFVfU3VtbWFyaXppbmc7Ci0JCX0KLQkJZWxzZQotCQkJKnVwZGF0ZV9pbmRleGVz ID0gVFVfQWxsOwotCX0KKwlpZiAocmVzdWx0ID09IFRNX09rICYmICFIZWFwVHVwbGVJc0hl YXBPbmx5KHR1cGxlKSkKKwkJKm1vZGlmaWVkX2F0dHJzID0gYm1zX2FkZF9tZW1iZXIoKm1v ZGlmaWVkX2F0dHJzLAorCQkJCQkJCQkJCSBUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhlcyk7 CiAKIAlpZiAoc2hvdWxkRnJlZSkKIAkJcGZyZWUodHVwbGUpOwpAQCAtNjQ4LDYgKzYzOCw0 NSBAQCBoZWFwYW1fcmVsYXRpb25fY29weV9mb3JfY2x1c3RlcihSZWxhdGlvbiBPbGRIZWFw LCBSZWxhdGlvbiBOZXdIZWFwLAogCWVsc2UKIAkJYmlzdGF0ZSA9IE5VTEw7CiAKKwkvKgor CSAqIFRoZSBpbmRleC1zY2FuIGNvcHkgcGF0aCBiZWxvdyB0cnVzdHMgdGhlIGNsdXN0ZXJp bmcgaW5kZXggdG8gcmVhY2gKKwkgKiBldmVyeSBsaXZlIGhlYXAgdHVwbGUgZGlyZWN0bHku ICBBIEhPVC1pbmRleGVkIChTSVUpIGNoYWluIGJyZWFrcyB0aGF0OgorCSAqIGFuIFVQREFU RSB0aGF0IGNoYW5nZXMgc29tZSBPVEhFUiBpbmRleGVkIGNvbHVtbiBwcm9kdWNlcyBhIGxp dmUgdHVwbGUKKwkgKiB0aGF0IHRoZSBjbHVzdGVyaW5nIGluZGV4IGhhcyBubyBlbnRyeSBw b2ludGluZyBhdCAoaXRzIGVudHJpZXMgc3RpbGwKKwkgKiBhZGRyZXNzIGVhcmxpZXIgY2hh aW4gbWVtYmVycyksIGFuZCB1bnRpbCBhIHBydW5lL1ZBQ1VVTSBjb2xsYXBzZXMgdGhlCisJ ICogY2hhaW4gdGhlIGluZGV4IHNjYW4gY2Fubm90IHJlYWNoIGl0LCBzbyBpdCB3b3VsZCBi ZSBzaWxlbnRseSBkcm9wcGVkCisJICogZnJvbSB0aGUgcmV3cml0dGVuIGhlYXAuICBBbnkg aGVhcCB3aXRoIG1vcmUgdGhhbiBvbmUgaW5kZXggaXMKKwkgKiBTSVUtY2FwYWJsZSAoc2Vs ZWN0aXZlIG1haW50ZW5hbmNlIG5lZWRzIGEgY2hhbmdlZCBhbmQgYW4gdW5jaGFuZ2VkCisJ ICogaW5kZXgpLgorCSAqCisJICogVGhpcyBpcyB0aGUgaGVhcCBBTSdzIG93biBpbnZhcmlh bnQsIHNvIHRoZSBoZWFwIEFNIC0tIG5vdCB0aGUgQ0xVU1RFUgorCSAqIGNvbW1hbmQgYW5k IG5vdCBhbnkgaW5kZXggQU0gLS0gZm9yY2VzIGEgZGlyZWN0LXNjYW4gY29weSBoZXJlLAor CSAqIGluZGVwZW5kZW50bHkgb2Ygd2hpY2ggYWNjZXNzIG1ldGhvZCB0aGUgY2x1c3Rlcmlu ZyBpbmRleCB1c2VzLiAgTm8KKwkgKiBpbmRleCBBTSAoY29yZSBvciBvdXQtb2YtdHJlZSkg bmVlZHMgdG8ga25vdyBhbnl0aGluZyBhYm91dCBTSVUgY2hhaW5zLgorCSAqIEEgYnRyZWUg Y2x1c3RlcmluZyBpbmRleCBjYW4gc3RpbGwgcHJlc2VydmUgY2x1c3RlciBvcmRlciB2aWEg dGhlCisJICogc2Vxc2Nhbitzb3J0IHBhdGggKHR1cGxlc29ydF9iZWdpbl9jbHVzdGVyIHJl cXVpcmVzIGJ0cmVlIGFueXdheSk7IGFueQorCSAqIG90aGVyIGNsdXN0ZXJhYmxlIEFNIGhh cyBubyBzb3J0IHBhdGgsIHNvIGl0IGZhbGxzIGJhY2sgdG8gYSBwbGFpbgorCSAqIHNlcXNj YW4gY29weSBhbmQgbG9zZXMgb3JkZXJpbmcgLS0gYW4gYWNjZXB0YWJsZSB0cmFkZSwgc2lu Y2UgYSBsb3NzbGVzcworCSAqIHJld3JpdGUgbXVzdCBuZXZlciBkcm9wIGEgbGl2ZSByb3cg YW5kIGNsdXN0ZXIgb3JkZXIgaXMgbm90IGEKKwkgKiBjb3JyZWN0bmVzcyBwcm9wZXJ0eS4g IEJvdGggZGlyZWN0LXNjYW4gcGF0aHMgdmlzaXQgZXZlcnkgaGVhcCB0dXBsZSwKKwkgKiB0 aGUgc2FtZSB3YXkgVkFDVVVNIEZVTEwgYWxyZWFkeSBkb2VzLCBhbmQgYXJlIHRoZXJlZm9y ZSBpbW11bmUuCisJICovCisJaWYgKE9sZEluZGV4ICE9IE5VTEwgJiYgIXVzZV9zb3J0KQor CXsKKwkJTGlzdAkgICAqaW5kZXhvaWRsaXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QoT2xk SGVhcCk7CisJCWJvb2wJCXNpdV9jYXBhYmxlID0gKGxpc3RfbGVuZ3RoKGluZGV4b2lkbGlz dCkgPiAxKTsKKworCQlsaXN0X2ZyZWUoaW5kZXhvaWRsaXN0KTsKKworCQlpZiAoc2l1X2Nh cGFibGUpCisJCXsKKwkJCWlmIChPbGRJbmRleC0+cmRfcmVsLT5yZWxhbSA9PSBCVFJFRV9B TV9PSUQpCisJCQkJdXNlX3NvcnQgPSB0cnVlOwkvKiBzZXFzY2FuK3NvcnQsIGtlZXBzIGNs dXN0ZXIgb3JkZXIgKi8KKwkJCWVsc2UKKwkJCQlPbGRJbmRleCA9IE5VTEw7CS8qIHBsYWlu IHNlcXNjYW4gY29weSAqLworCQl9CisJfQorCiAJLyogU2V0IHVwIHNvcnRpbmcgaWYgd2Fu dGVkICovCiAJaWYgKHVzZV9zb3J0KQogCQl0dXBsZXNvcnQgPSB0dXBsZXNvcnRfYmVnaW5f Y2x1c3RlcihvbGRUdXBEZXNjLCBPbGRJbmRleCwKQEAgLTcyNSw5ICs3NTQsMzMgQEAgaGVh cGFtX3JlbGF0aW9uX2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24gT2xkSGVhcCwgUmVsYXRp b24gTmV3SGVhcCwKIAkJCWlmICghaW5kZXhfZ2V0bmV4dF9zbG90KGluZGV4U2NhbiwgRm9y d2FyZFNjYW5EaXJlY3Rpb24sIHNsb3QpKQogCQkJCWJyZWFrOwogCi0JCQkvKiBTaW5jZSB3 ZSB1c2VkIG5vIHNjYW4ga2V5cywgc2hvdWxkIG5ldmVyIG5lZWQgdG8gcmVjaGVjayAqLwor CQkJLyoKKwkJCSAqIENMVVNURVIgdXNlcyBhIG5vLWtleSBmdWxsLWluZGV4IHNjYW47IGl0 IGNhbm5vdCBkbyBhbnkKKwkJCSAqIHR1cGxlLWxldmVsIGZpbHRlcmluZyBpdHNlbGYuICBU aGUgSE9ULWluZGV4ZWQgcmVhZGVyIHBhdGgKKwkJCSAqIHJvdXRpbmVseSBzZXRzIHhzX3Jl Y2hlY2sgd2hlbiB3YWxraW5nIGNoYWluIGVudHJpZXMgd2hvc2UKKwkJCSAqIGluZGV4IGtl eSBtYXkgYmUgc3RhbGUgcmVsYXRpdmUgdG8gdGhlIHZpc2libGUgaGVhcCB0dXBsZS4KKwkJ CSAqIFRob3NlIGVudHJpZXMgY2F1c2UgdGhlIHNhbWUgbGl2ZSB0dXBsZSB0byBiZSB2aXNp dGVkIHZpYSB0aGUKKwkJCSAqIGZyZXNoIGhvdC1pbmRleGVkLWluc2VydGVkIGVudHJ5IHRv bzsgaW5jbHVkaW5nIHRoZW0gd291bGQKKwkJCSAqIGR1cGxpY2F0ZSByb3dzIGluIHRoZSBy ZXdyaXR0ZW4gaGVhcC4gIFNraXAgdGhlbSBoZXJlIC0tIHRoZQorCQkJICogdHVwbGUgaXMg cmVhY2hhYmxlIHRocm91Z2ggaXRzIGNhbm9uaWNhbCBpbmRleCBlbnRyeS4KKwkJCSAqCisJ CQkgKiBJZiB4c19yZWNoZWNrIGlzIHNldCB3aXRoIGFjdHVhbCBzY2FuIGtleXMsIHRoYXQn cyBhIHJlYWwgbG9zc3kKKwkJCSAqIGluZGV4IHNjZW5hcmlvIENMVVNURVIgY2FuJ3QgaGFu ZGxlIChoaXN0b3JpY2FsIHJlc3RyaWN0aW9uKS4KKwkJCSAqLwogCQkJaWYgKGluZGV4U2Nh bi0+eHNfcmVjaGVjaykKLQkJCQllbG9nKEVSUk9SLCAiQ0xVU1RFUiBkb2VzIG5vdCBzdXBw b3J0IGxvc3N5IGluZGV4IGNvbmRpdGlvbnMiKTsKKwkJCXsKKwkJCQlpZiAoaW5kZXhTY2Fu LT5udW1iZXJPZktleXMgPiAwKQorCQkJCQllbG9nKEVSUk9SLCAiQ0xVU1RFUiBkb2VzIG5v dCBzdXBwb3J0IGxvc3N5IGluZGV4IGNvbmRpdGlvbnMiKTsKKwkJCQljb250aW51ZTsKKwkJ CX0KKworCQkJLyoKKwkJCSAqIFNhbWUgcmVhc29uaW5nIGFzIGZvciB4c19yZWNoZWNrOiBh IEhPVC1pbmRleGVkIHN0YWxlIGVudHJ5CisJCQkgKiB3b3VsZCByZS1lbWl0IGFuIGFscmVh ZHktdmlzaXRlZCB0dXBsZSB2aWEgaXRzIGNhbm9uaWNhbCBmcmVzaAorCQkJICogZW50cnku ICBTa2lwLgorCQkJICovCisJCQlpZiAoaW5kZXhTY2FuLT54c19ob3RfaW5kZXhlZF9zdGFs ZSkKKwkJCQljb250aW51ZTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTE2NDEsMzAgKzE2OTQs NDggQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCiAJCQlvZmZudW0gPSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmaGVhcFR1 cGxlLT50X3NlbGYpOwogCi0JCQkvKgotCQkJICogSWYgYSBIT1QgdHVwbGUgcG9pbnRzIHRv IGEgcm9vdCB0aGF0IHdlIGRvbid0IGtub3cgYWJvdXQsCi0JCQkgKiBvYnRhaW4gcm9vdCBp dGVtcyBhZnJlc2guICBJZiB0aGF0IHN0aWxsIGZhaWxzLCByZXBvcnQgaXQgYXMKLQkJCSAq IGNvcnJ1cHRpb24uCi0JCQkgKi8KLQkJCWlmIChyb290X29mZnNldHNbb2ZmbnVtIC0gMV0g PT0gSW52YWxpZE9mZnNldE51bWJlcikKKwkJCWlmICgoaGVhcFR1cGxlLT50X2RhdGEtPnRf aW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpICE9IDApCiAJCQl7Ci0JCQkJUGFn ZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoaHNjYW4tPnJzX2NidWYpOwotCi0JCQkJTG9ja0J1 ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfU0hBUkUpOwotCQkJCWhlYXBfZ2V0 X3Jvb3RfdHVwbGVzKHBhZ2UsIHJvb3Rfb2Zmc2V0cyk7Ci0JCQkJTG9ja0J1ZmZlcihoc2Nh bi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJCQkvKgorCQkJCSAqIEhPVC1p bmRleGVkIChTZWxlY3RpdmUgSW5kZXggVXBkYXRlKSBsaXZlIHR1cGxlOiBpbmRleCBpdAor CQkJCSAqIHVuZGVyIGl0cyBPV04gVElELCBub3QgdGhlIGNoYWluIHJvb3QuICBJdHMgaW5k ZXhlZCB2YWx1ZXMKKwkJCQkgKiBkaWZmZXIgZnJvbSBlYXJsaWVyIGNoYWluIG1lbWJlcnMn LCBhbmQgdGhlIGJpdG1hcC1vdmVybGFwCisJCQkJICogcmVhZCBwYXRoIGtlZXBzIGFuIGVu dHJ5IG9ubHkgd2hlbiBubyBob3AgYWZ0ZXIgdGhlIGVudHJ5J3MKKwkJCQkgKiB0YXJnZXQg Y2hhbmdlZCB0aGUgaW5kZXgncyBhdHRyaWJ1dGVzLiAgVGhhdCBob2xkcyBmb3IgYW4KKwkJ CQkgKiBlbnRyeSBwb2ludGluZyBkaXJlY3RseSBhdCB0aGUgbGl2ZSB0dXBsZSAobm8gbGF0 ZXIgaG9wKTsKKwkJCQkgKiBhbiBlbnRyeSBwb2ludGVkIGF0IHRoZSByb290IHdvdWxkIGJl IGRyb3BwZWQgYXMgc3RhbGUsCisJCQkJICogbG9zaW5nIHRoZSByb3cuCisJCQkJICovCisJ CQkJSXRlbVBvaW50ZXJTZXQoJnRpZCwgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmaGVh cFR1cGxlLT50X3NlbGYpLAorCQkJCQkJCSAgIG9mZm51bSk7CiAJCQl9CisJCQllbHNlCisJ CQl7CisJCQkJLyoKKwkJCQkgKiBJZiBhIEhPVCB0dXBsZSBwb2ludHMgdG8gYSByb290IHRo YXQgd2UgZG9uJ3Qga25vdyBhYm91dCwKKwkJCQkgKiBvYnRhaW4gcm9vdCBpdGVtcyBhZnJl c2guICBJZiB0aGF0IHN0aWxsIGZhaWxzLCByZXBvcnQgaXQKKwkJCQkgKiBhcyBjb3JydXB0 aW9uLgorCQkJCSAqLworCQkJCWlmIChyb290X29mZnNldHNbb2ZmbnVtIC0gMV0gPT0gSW52 YWxpZE9mZnNldE51bWJlcikKKwkJCQl7CisJCQkJCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQ YWdlKGhzY2FuLT5yc19jYnVmKTsKIAotCQkJaWYgKCFPZmZzZXROdW1iZXJJc1ZhbGlkKHJv b3Rfb2Zmc2V0c1tvZmZudW0gLSAxXSkpCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShl cnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAotCQkJCQkJIGVycm1zZ19pbnRlcm5h bCgiZmFpbGVkIHRvIGZpbmQgcGFyZW50IHR1cGxlIGZvciBoZWFwLW9ubHkgdHVwbGUgYXQg KCV1LCV1KSBpbiB0YWJsZSBcIiVzXCIiLAotCQkJCQkJCQkJCSBJdGVtUG9pbnRlckdldEJs b2NrTnVtYmVyKCZoZWFwVHVwbGUtPnRfc2VsZiksCi0JCQkJCQkJCQkJIG9mZm51bSwKLQkJ CQkJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaGVhcFJlbGF0aW9uKSkpKTsKKwkJ CQkJTG9ja0J1ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfU0hBUkUpOworCQkJ CQloZWFwX2dldF9yb290X3R1cGxlcyhwYWdlLCByb290X29mZnNldHMpOworCQkJCQlMb2Nr QnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCQkJCX0KIAot CQkJSXRlbVBvaW50ZXJTZXQoJnRpZCwgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmaGVh cFR1cGxlLT50X3NlbGYpLAotCQkJCQkJICAgcm9vdF9vZmZzZXRzW29mZm51bSAtIDFdKTsK KwkJCQlpZiAoIU9mZnNldE51bWJlcklzVmFsaWQocm9vdF9vZmZzZXRzW29mZm51bSAtIDFd KSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFf Q09SUlVQVEVEKSwKKwkJCQkJCQkgZXJybXNnX2ludGVybmFsKCJmYWlsZWQgdG8gZmluZCBw YXJlbnQgdHVwbGUgZm9yIGhlYXAtb25seSB0dXBsZSBhdCAoJXUsJXUpIGluIHRhYmxlIFwi JXNcIiIsCisJCQkJCQkJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZoZWFwVHVw bGUtPnRfc2VsZiksCisJCQkJCQkJCQkJCSBvZmZudW0sCisJCQkJCQkJCQkJCSBSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShoZWFwUmVsYXRpb24pKSkpOworCisJCQkJSXRlbVBvaW50ZXJT ZXQoJnRpZCwgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmaGVhcFR1cGxlLT50X3NlbGYp LAorCQkJCQkJCSAgIHJvb3Rfb2Zmc2V0c1tvZmZudW0gLSAxXSk7CisJCQl9CiAKIAkJCS8q IENhbGwgdGhlIEFNJ3MgY2FsbGJhY2sgcm91dGluZSB0byBwcm9jZXNzIHRoZSB0dXBsZSAq LwogCQkJY2FsbGJhY2soaW5kZXhSZWxhdGlvbiwgJnRpZCwgdmFsdWVzLCBpc251bGwsIHR1 cGxlSXNBbGl2ZSwKQEAgLTE4MjksNyArMTkwMCw4IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0 ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJcm9vdFR1cGxlID0gKmhlYXBjdXJz b3I7CiAJCXJvb3Rfb2ZmbnVtID0gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoaGVhcGN1 cnNvcik7CiAKLQkJaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1cGxlKSkKKwkJaWYg KEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1cGxlKSAmJgorCQkJKGhlYXBUdXBsZS0+dF9k YXRhLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSA9PSAwKQogCQl7CiAJ CQlyb290X29mZm51bSA9IHJvb3Rfb2Zmc2V0c1tyb290X29mZm51bSAtIDFdOwogCQkJaWYg KCFPZmZzZXROdW1iZXJJc1ZhbGlkKHJvb3Rfb2ZmbnVtKSkKQEAgLTI0MzksNyArMjUxMSwy MyBAQCByZWZvcm1fdHVwbGUoSGVhcFR1cGxlIHR1cGxlLCBSZWxhdGlvbiBPbGRIZWFwLCBS ZWxhdGlvbiBOZXdIZWFwLAogCiAJLyogU2tpcCB3b3JrIGlmIG5vIGNoYW5nZXMgYXJlIG5l ZWRlZCAqLwogCWlmICghbmVlZHNfcmVmb3JtKQotCQlyZXR1cm4gaGVhcF9jb3B5dHVwbGUo dHVwbGUpOworCXsKKwkJSGVhcFR1cGxlCWNvcHkgPSBoZWFwX2NvcHl0dXBsZSh0dXBsZSk7 CisKKwkJLyoKKwkJICogQSBDTFVTVEVSIC8gVkFDVVVNIEZVTEwgcmV3cml0ZSBmbGF0dGVu cyBldmVyeSBIT1QgY2hhaW46IGVhY2ggbGl2ZQorCQkgKiB0dXBsZSBiZWNvbWVzIGEgc3Rh bmRhbG9uZSB0dXBsZSBpbiB0aGUgbmV3IGhlYXAgd2l0aCBhIGZyZXNoIGluZGV4CisJCSAq IGVudHJ5LCBzbyBubyByZXdyaXR0ZW4gdHVwbGUgaXMgYSBIT1QtaW5kZXhlZCAoU0lVKSBj aGFpbiBtZW1iZXIuCisJCSAqIGhlYXBfY29weXR1cGxlIHByZXNlcnZlcyB0aGUgc291cmNl IGhlYWRlciB2ZXJiYXRpbSwgdGhvdWdoLCB3aGljaAorCQkgKiB3b3VsZCBsZWF2ZSBIRUFQ X0lOREVYRURfVVBEQVRFRCAoYW5kIGl0cyBub3ctbWVhbmluZ2xlc3MgdHJhaWxpbmcKKwkJ ICogaW5saW5lIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCkgc2V0IG9uIHRoZSBjb3B5LiAgQSBy ZWFkZXIgcmVhY2hpbmcKKwkJICogc3VjaCBhIHR1cGxlIHRocm91Z2ggdGhlIHJlYnVpbHQg aW5kZXggd291bGQgdGhlbiBydW4gdGhlIHJlYWQtc2lkZQorCQkgKiBzdGFsZW5lc3MgdGVz dCBhZ2FpbnN0IGdhcmJhZ2UgYW5kIHdyb25nbHkgZHJvcCB0aGUgcm93LiAgQ2xlYXIgdGhl CisJCSAqIG1hcmtlciBoZXJlLiAgKFRoZSBmcmVzaC1mb3JtIHBhdGggYmVsb3cgbmV2ZXIg c2V0cyBpdC4pCisJCSAqLworCQljb3B5LT50X2RhdGEtPnRfaW5mb21hc2syICY9IH5IRUFQ X0lOREVYRURfVVBEQVRFRDsKKwkJcmV0dXJuIGNvcHk7CisJfQogCiAJaGVhcF9kZWZvcm1f dHVwbGUodHVwbGUsIG9sZFR1cERlc2MsIHZhbHVlcywgaXNudWxsKTsKIApAQCAtMjU4Niw2 ICsyNjc0LDcgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2Fu LAogCQkgKiBvZmZzZXQuCiAJCSAqLwogCQlpbnQJCQljdXJzbG90OworCQlib29sCQlwYWdl X2hhZF9ob3RfaW5kZXhlZCA9IGZhbHNlOwogCiAJCS8qIFdlIG11c3QgaGF2ZSBleHRyYWN0 ZWQgdGhlIHR1cGxlIG9mZnNldHMgYnkgbm93ICovCiAJCUFzc2VydChub2Zmc2V0cyA+IC0x KTsKQEAgLTI1OTUsMTEgKzI2ODQsNjMgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFi bGVTY2FuRGVzYyBzY2FuLAogCQkJT2Zmc2V0TnVtYmVyIG9mZm51bSA9IG9mZnNldHNbY3Vy c2xvdF07CiAJCQlJdGVtUG9pbnRlckRhdGEgdGlkOwogCQkJSGVhcFR1cGxlRGF0YSBoZWFw VHVwbGU7CisJCQlib29sCQlob3RfaW5kZXhlZF9zdGFsZSA9IGZhbHNlOwogCiAJCQlJdGVt UG9pbnRlclNldCgmdGlkLCBibG9jaywgb2ZmbnVtKTsKIAkJCWlmIChoZWFwX2hvdF9zZWFy Y2hfYnVmZmVyKCZ0aWQsIHNjYW4tPnJzX3JkLCBidWZmZXIsIHNuYXBzaG90LAotCQkJCQkJ CQkJICAgJmhlYXBUdXBsZSwgTlVMTCwgdHJ1ZSkpCi0JCQkJaHNjYW4tPnJzX3Zpc3R1cGxl c1tudHVwKytdID0gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnRpZCk7CisJCQkJCQkJ CQkgICAmaGVhcFR1cGxlLCBOVUxMLCB0cnVlLAorCQkJCQkJCQkJICAgJmhvdF9pbmRleGVk X3N0YWxlLCBOVUxMLCBOVUxMKSkKKwkJCXsKKwkJCQlPZmZzZXROdW1iZXIgcmVzb2x2ZWQg PSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdGlkKTsKKwkJCQlib29sCQlhbHJlYWR5 X2hhdmUgPSBmYWxzZTsKKworCQkJCS8qCisJCQkJICogQSBiaXRtYXAgaGVhcCBzY2FuIGNh bm5vdCBhdHRyaWJ1dGUgYSBUSUQgdG8gb25lIGluZGV4LCBzbworCQkJCSAqIGFueSBjcm9z c2VkIGluLWNoYWluIEhPVC9TSVUgaG9wIG1lYW5zIHRoZSBhcnJpdmluZyBlbnRyeQorCQkJ CSAqIG1heSBiZSBzdGFsZTsgcmVjaGVjay9kZWR1cCBjb25zZXJ2YXRpdmVseS4KKwkJCQkg Ki8KKwkJCQlpZiAoaG90X2luZGV4ZWRfc3RhbGUpCisJCQkJCXBhZ2VfaGFkX2hvdF9pbmRl eGVkID0gdHJ1ZTsKKworCQkJCS8qCisJCQkJICogV2l0aCBIT1QtaW5kZXhlZCB1cGRhdGVz LCBtb3JlIHRoYW4gb25lIGJpdG1hcCBlbnRyeSBvbiB0aGUKKwkJCQkgKiBzYW1lIGJsb2Nr IGNhbiBjaGFpbi1yZXNvbHZlIHRvIHRoZSBzYW1lIGxpdmUgdHVwbGUgKGEKKwkJCQkgKiBz dGFsZSBvbGQta2V5IGVudHJ5IHBsdXMgdGhlIGZyZXNoIG5ldy1rZXkgZW50cnksIG9yCisJ CQkJICogbXVsdGlwbGUgc3RhbGUgZW50cmllcyBmcm9tIHN1Y2Nlc3NpdmUgaG90LWluZGV4 ZWQKKwkJCQkgKiB1cGRhdGVzKS4gIE9uY2Ugd2UndmUgc2VlbiBhbnkgaG90LWluZGV4ZWQg aG9wIG9uIHRoaXMKKwkJCQkgKiBibG9jayBkZWR1cCBpbmxpbmUgc28gdXBwZXIgbm9kZXMg KGUuZy4sIE1FUkdFKSBkb24ndCBzZWUKKwkJCQkgKiB0aGUgc2FtZSByb3cgdHdpY2UuICBQ cmVzZXJ2ZSBvcmlnaW5hbCBpbnNlcnRpb24gb3JkZXI6CisJCQkJICogTUVSR0UncyBSRVRV Uk5JTkcgb3JkZXJpbmcgYW5kIHRlc3QgaGFybmVzcyBzdGFiaWxpdHkgYm90aAorCQkJCSAq IGRlcGVuZCBvbiBpdC4gIEluIHRoZSBhYnNlbmNlIG9mIGhvdC1pbmRleGVkIG9uIHRoZSBw YWdlIHdlCisJCQkJICogc2tpcCB0aGUgbGluZWFyIHNjYW4gZW50aXJlbHkgLS0gdGhlIFRC TSdzIFRJRHMgYXJlIGFscmVhZHkKKwkJCQkgKiBkaXN0aW5jdCBieSBjb25zdHJ1Y3Rpb24u CisJCQkJICovCisJCQkJaWYgKHBhZ2VfaGFkX2hvdF9pbmRleGVkKQorCQkJCXsKKwkJCQkJ Zm9yIChpbnQgaiA9IDA7IGogPCBudHVwOyBqKyspCisJCQkJCXsKKwkJCQkJCWlmIChoc2Nh bi0+cnNfdmlzdHVwbGVzW2pdID09IHJlc29sdmVkKQorCQkJCQkJeworCQkJCQkJCWFscmVh ZHlfaGF2ZSA9IHRydWU7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9 CisKKwkJCQlpZiAoIWFscmVhZHlfaGF2ZSkKKwkJCQkJaHNjYW4tPnJzX3Zpc3R1cGxlc1tu dHVwKytdID0gcmVzb2x2ZWQ7CisKKwkJCQkvKgorCQkJCSAqIElmIHdlIHJlYWNoZWQgdGhl IHZpc2libGUgdHVwbGUgdGhyb3VnaCBhIEhPVC1pbmRleGVkCisJCQkJICogKGhvdC1pbmRl eGVkKSBob3AsIHRoZSBiaXRtYXAgaW5kZXggZW50cnkgdGhhdCBwb2ludGVkIHVzCisJCQkJ ICogYXQgdGhlIGNoYWluIHJvb3QgbWF5IGRlc2NyaWJlIGtleSB2YWx1ZXMgdGhlIHZpc2li bGUgdHVwbGUKKwkJCQkgKiBubyBsb25nZXIgaGFzLiAgRm9yY2UgQml0bWFwSGVhcFNjYW4g dG8gcnVuIGl0cyByZWNoZWNrCisJCQkJICogcXVhbCBhZ2FpbnN0IHRoZXNlIHR1cGxlcyBl dmVuIGlmIHRoZSBiaXRtYXAgcGFnZSB3YXMKKwkJCQkgKiBvdGhlcndpc2UgZXhhY3QuCisJ CQkJICovCisJCQkJaWYgKGhvdF9pbmRleGVkX3N0YWxlKQorCQkJCQkqcmVjaGVjayA9IHRy dWU7CisJCQl9CiAJCX0KIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2luZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2luZGV4c2Nhbi5jCmluZGV4IDMzZDE0ZjFkZTdkLi4yZGE4OWVmNzgwZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2luZGV4c2Nhbi5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9pbmRleHNjYW4uYwpAQCAtMTUs NyArMTUsOSBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nlc3Mv aGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3JlbHNjYW4uaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJz dG9yYWdlL3ByZWRpY2F0ZS5oIgogCiAKQEAgLTM1LDYgKzM3LDE0IEBAIGhlYXBhbV9pbmRl eF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwsIHVpbnQzMiBmbGFncykKIAloc2Nhbi0+eHNf YmxrID0gSW52YWxpZEJsb2NrTnVtYmVyOwogCWhzY2FuLT54c192bWJ1ZmZlciA9IEludmFs aWRCdWZmZXI7CiAKKwkvKgorCSAqIFNjcmF0Y2ggc3BhY2UgZm9yIHRoZSB1bmlvbiBvZiBt b2RpZmllZC1hdHRycyBiaXRtYXBzIHRoYXQgYSBIT1QvU0lVCisJICogY2hhaW4gd2FsayBj cm9zc2VzLCBzaXplZCBmb3IgdGhpcyByZWxhdGlvbidzIGNvbHVtbiBjb3VudC4gIFRocmVh ZGVkCisJICogYmFjayBvdXQgdGhyb3VnaCB4c19ob3RfaW5kZXhlZF9jcm9zc2VkIGZvciB0 aGUgaW5kZXgtYWNjZXNzIGxheWVyLgorCSAqLworCWhzY2FuLT54c19iYXNlLnhzX2hvdF9p bmRleGVkX2Nyb3NzZWQgPQorCQlwYWxsb2MwKEhvdEluZGV4ZWRCaXRtYXBCeXRlcyhSZWxh dGlvbkdldE51bWJlck9mQXR0cmlidXRlcyhyZWwpKSk7CisKIAlyZXR1cm4gJmhzY2FuLT54 c19iYXNlOwogfQogCkBAIC02Myw2ICs3Myw5IEBAIGhlYXBhbV9pbmRleF9mZXRjaF9lbmQo SW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbikKIAlpZiAoQnVmZmVySXNWYWxpZChoc2Nhbi0+ eHNfdm1idWZmZXIpKQogCQlSZWxlYXNlQnVmZmVyKGhzY2FuLT54c192bWJ1ZmZlcik7CiAK KwlpZiAoaHNjYW4tPnhzX2Jhc2UueHNfaG90X2luZGV4ZWRfY3Jvc3NlZCAhPSBOVUxMKQor CQlwZnJlZShoc2Nhbi0+eHNfYmFzZS54c19ob3RfaW5kZXhlZF9jcm9zc2VkKTsKKwogCXBm cmVlKGhzY2FuKTsKIH0KIApAQCAtODMsMTMgKzk2LDI0IEBAIGhlYXBhbV9pbmRleF9mZXRj aF9lbmQoSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbikKICAqIGdsb2JhbGx5IGRlYWQ7ICph bGxfZGVhZCBpcyBzZXQgdHJ1ZSBpZiBhbGwgbWVtYmVycyBvZiB0aGUgSE9UIGNoYWluCiAg KiBhcmUgdmFjdXVtYWJsZSwgZmFsc2UgaWYgbm90LgogICoKKyAqIElmIGhvdF9pbmRleGVk X3JlY2hlY2sgaXMgbm90IE5VTEwsICpob3RfaW5kZXhlZF9yZWNoZWNrIGlzIHNldCB0cnVl IGlmZiB0aGUKKyAqIHdhbGsgY3Jvc3NlZCBhIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIChI T1QvU0lVKSBob3AgYWZ0ZXIgdGhlIGVudHJ5IHR1cGxlCisgKiBvbiB0aGUgd2F5IHRvIHRo ZSByZXR1cm5lZCB0dXBsZSAtLSBpLmUuIHRoZSBhcnJpdmluZyBpbmRleCBlbnRyeSdzIHN0 b3JlZAorICoga2V5IG1heSBubyBsb25nZXIgbWF0Y2ggdGhlIGxpdmUgdHVwbGUsIHNvIHRo ZSBjYWxsZXIgbXVzdCByZWNoZWNrIGl0ICh2aWEKKyAqIGEgbGVhZi1rZXkgY29tcGFyaXNv biBvciBhIHF1YWwgcmVjaGVjaykuICBUaGUgZW50cnkgdHVwbGUncyBvd24gcHJvZHVjaW5n CisgKiBob3AgaXMgZXhjbHVkZWQsIHNvIGEgZnJlc2ggZW50cnkgcG9pbnRpbmcgZGlyZWN0 bHkgYXQgaXRzIHR1cGxlIGlzIG5vdAorICogZmxhZ2dlZC4gIFdoZW4gbm8gc3VjaCBob3Ag d2FzIGNyb3NzZWQsICpob3RfaW5kZXhlZF9yZWNoZWNrIGlzIGxlZnQgZmFsc2UuCisgKgog ICogVW5saWtlIGhlYXBfZmV0Y2gsIHRoZSBjYWxsZXIgbXVzdCBhbHJlYWR5IGhhdmUgcGlu IGFuZCAoYXQgbGVhc3QpIHNoYXJlCiAgKiBsb2NrIG9uIHRoZSBidWZmZXI7IGl0IGlzIHN0 aWxsIHBpbm5lZC9sb2NrZWQgYXQgZXhpdC4KICAqLwogYm9vbAogaGVhcF9ob3Rfc2VhcmNo X2J1ZmZlcihJdGVtUG9pbnRlciB0aWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVm ZmVyLAogCQkJCQkgICBTbmFwc2hvdCBzbmFwc2hvdCwgSGVhcFR1cGxlIGhlYXBUdXBsZSwK LQkJCQkJICAgYm9vbCAqYWxsX2RlYWQsIGJvb2wgZmlyc3RfY2FsbCkKKwkJCQkJICAgYm9v bCAqYWxsX2RlYWQsIGJvb2wgZmlyc3RfY2FsbCwKKwkJCQkJICAgYm9vbCAqaG90X2luZGV4 ZWRfcmVjaGVjaywKKwkJCQkJICAgdWludDggKmNyb3NzZWRfYml0bWFwLAorCQkJCQkgICBi b29sICpwcmVmaXhfYWxsX2RlYWQpCiB7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2Uo YnVmZmVyKTsKIAlUcmFuc2FjdGlvbklkIHByZXZfeG1heCA9IEludmFsaWRUcmFuc2FjdGlv bklkOwpAQCAtOTgsMTIgKzEyMiwzMiBAQCBoZWFwX2hvdF9zZWFyY2hfYnVmZmVyKEl0ZW1Q b2ludGVyIHRpZCwgUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJYm9vbAkJ YXRfY2hhaW5fc3RhcnQ7CiAJYm9vbAkJdmFsaWQ7CiAJYm9vbAkJc2tpcDsKKwlib29sCQlw cmVmaXhfZGVhZDsKIAlHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCA9IE5VTEw7CisJaW50CQkJ cmVsbmF0dHMgPSBSZWxhdGlvbkdldE51bWJlck9mQXR0cmlidXRlcyhyZWxhdGlvbik7CisJ aW50CQkJY2hhaW5faG9wczsKKwlPZmZzZXROdW1iZXIgbWF4b2ZmX2d1YXJkOworCisJLyog T25seSB0cmFjayBwcmVmaXhfZGVhZCB3aGVuIHRoZSBjYWxsZXIgYWN0dWFsbHkgd2FudHMg aXQuICovCisJcHJlZml4X2RlYWQgPSAocHJlZml4X2FsbF9kZWFkICE9IE5VTEwpOwogCiAJ LyogSWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGNhbGwsIHByZXZpb3VzIGNhbGwgcmV0dXJu ZWQgYSAobGl2ZSEpIHR1cGxlICovCiAJaWYgKGFsbF9kZWFkKQogCQkqYWxsX2RlYWQgPSBm aXJzdF9jYWxsOwogCisJLyoKKwkgKiBPbiB0aGUgZmlyc3QgY2FsbCwgY2xlYXIgdGhlIHJl Y2hlY2sgZmxhZyBhbmQgdGhlIGNyb3NzZWQtYXR0cnMgdW5pb24uCisJICogT24gc3Vic2Vx dWVudCBjYWxscyAoc2FtZSBjaGFpbiBjb250aW51aW5nKSBrZWVwIHdoYXRldmVyIGFuIGVh cmxpZXIKKwkgKiBob3AgYWxyZWFkeSBhY2N1bXVsYXRlZC4KKwkgKi8KKwlpZiAoZmlyc3Rf Y2FsbCkKKwl7CisJCWlmIChob3RfaW5kZXhlZF9yZWNoZWNrKQorCQkJKmhvdF9pbmRleGVk X3JlY2hlY2sgPSBmYWxzZTsKKwkJaWYgKGNyb3NzZWRfYml0bWFwKQorCQkJbWVtc2V0KGNy b3NzZWRfYml0bWFwLCAwLCBIb3RJbmRleGVkQml0bWFwQnl0ZXMocmVsbmF0dHMpKTsKKwl9 CisKIAlibGtubyA9IEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIodGlkKTsKIAlvZmZudW0g PSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcih0aWQpOwogCWF0X2NoYWluX3N0YXJ0ID0g Zmlyc3RfY2FsbDsKQEAgLTExMywxMSArMTU3LDI1IEBAIGhlYXBfaG90X3NlYXJjaF9idWZm ZXIoSXRlbVBvaW50ZXIgdGlkLCBSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwK IAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoUmVjZW50WG1pbikpOwogCUFzc2VydChC dWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpID09IGJsa25vKTsKIAorCS8qCisJICogQm91 bmQgdGhlIEhPVC9TSVUgY2hhaW4gd2Fsay4gIEEgY29ycnVwdCBwYWdlIHdob3NlIGZvcndh cmQgbGlua3MgZm9ybQorCSAqIGEgY3ljbGUgYW1vbmcgdmFsaWQgaW4tcmFuZ2Ugb2Zmc2V0 cyAoZS5nLiBzdHViIEEgLT4gc3R1YiBCIC0+IHN0dWIgQSkKKwkgKiB3b3VsZCBvdGhlcndp c2Ugc3BpbiB0aGlzIGxvb3AgZm9yZXZlciB1bmRlciBhIGJ1ZmZlciBzaGFyZS1sb2NrLCB3 aXRoCisJICogbm8gQ0hFQ0tfRk9SX0lOVEVSUlVQVFMgdG8gYnJlYWsgb3V0LiAgTm8gbGVn aXRpbWF0ZSBjaGFpbiB2aXNpdHMgbW9yZQorCSAqIG9mZnNldHMgdGhhbiB0aGUgcGFnZSBo b2xkcy4KKwkgKi8KKwljaGFpbl9ob3BzID0gMDsKKwltYXhvZmZfZ3VhcmQgPSBQYWdlR2V0 TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpOworCiAJLyogU2NhbiB0aHJvdWdoIHBvc3NpYmxlIG11 bHRpcGxlIG1lbWJlcnMgb2YgSE9ULWNoYWluICovCiAJZm9yICg7OykKIAl7CiAJCUl0ZW1J ZAkJbHA7CiAKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJaWYgKGNoYWluX2hvcHMr KyA+IG1heG9mZl9ndWFyZCkKKwkJCWJyZWFrOwkJCS8qIGRlZmVuZCBhZ2FpbnN0IGEgY29y cnVwdCBmb3J3YXJkLWxpbmsgY3ljbGUgKi8KKwogCQkvKiBjaGVjayBmb3IgYm9ndXMgVElE ICovCiAJCWlmIChvZmZudW0gPCBGaXJzdE9mZnNldE51bWJlciB8fCBvZmZudW0gPiBQYWdl R2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpKQogCQkJYnJlYWs7CkBAIC0xMzAsNyArMTg4LDE3 IEBAIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlkLCBSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCS8qIFdlIHNob3VsZCBvbmx5IHNlZSBhIHJl ZGlyZWN0IGF0IHN0YXJ0IG9mIGNoYWluICovCiAJCQlpZiAoSXRlbUlkSXNSZWRpcmVjdGVk KGxwKSAmJiBhdF9jaGFpbl9zdGFydCkKIAkJCXsKLQkJCQkvKiBGb2xsb3cgdGhlIHJlZGly ZWN0ICovCisJCQkJLyoKKwkJCQkgKiBGb2xsb3cgdGhlIHJlZGlyZWN0LiAgQSBjb2xsYXBz ZWQgZGVhZCBwcmVmaXggaXMgcHJlc2VydmVkCisJCQkJICogYXMgYSBydW4gb2YgZm9yd2Fy ZGluZyBzdHVicywgZWFjaCBjYXJyeWluZyBpdHMgc2VnbWVudCdzCisJCQkJICogbW9kaWZp ZWQtYXR0cnMgYml0bWFwLCBlbmRpbmcgYXQgdGhlIGZpcnN0IGxpdmUgdHVwbGU7CisJCQkJ ICogY2hhaW4gY29sbGFwc2UgcmVjbGFpbXMgYSBkZWFkIG1lbWJlciBvbmx5IHdoZW4gaXRz CisJCQkJICogYXR0cmlidXRlcyBhcmUgYSBzdWJzZXQgb2YgdGhlIHN1cnZpdmluZyBsYXRl ciBob3BzIChzZWUKKwkJCQkgKiBwcnVuZWhlYXAuYykuICBTbyB0aGUgc3R1YnMgYW5kIGxp dmUgaG9wcyB0aGlzIHdhbGsgY3Jvc3NlcworCQkJCSAqIGJlbG93IGNvbnRyaWJ1dGUgdGhl IGNvbXBsZXRlIHVuaW9uIG9mIGV2ZXJ5IGNvbGxhcHNlZAorCQkJCSAqIGhvcCdzIG1vZGlm aWVkIGF0dHJpYnV0ZXMsIGFuZCB0aGF0IHVuaW9uIGRyaXZlcyB0aGUKKwkJCQkgKiBvdmVy bGFwIHN0YWxlbmVzcyB0ZXN0IGZvciB0aGUgaW5kZXgtYWNjZXNzIGxheWVyLgorCQkJCSAq LwogCQkJCW9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGxwKTsKIAkJCQlhdF9jaGFpbl9z dGFydCA9IGZhbHNlOwogCQkJCWNvbnRpbnVlOwpAQCAtMTUxLDEwICsyMTksMTExIEBAIGhl YXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlkLCBSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlciwKIAkJSXRlbVBvaW50ZXJTZXQoJmhlYXBUdXBsZS0+dF9zZWxm LCBibGtubywgb2ZmbnVtKTsKIAogCQkvKgotCQkgKiBTaG91bGRuJ3Qgc2VlIGEgSEVBUF9P TkxZIHR1cGxlIGF0IGNoYWluIHN0YXJ0LgorCQkgKiBBIGNvbGxhcHNlLXN1cnZpdm9yIHN0 dWIgaXMgYW4gTFBfTk9STUFMIGl0ZW0gYnV0IG5vdCBhIHJlYWwgdHVwbGU6CisJCSAqIGl0 IGlzIGEgZnJlZXplLXNhZmUgZm9yd2FyZGluZyBub2RlIGNhcnJ5aW5nIHRoZSBtb2RpZmll ZC1hdHRycworCQkgKiBiaXRtYXAgZm9yIHRoZSBjaGFpbiBzZWdtZW50IGl0IHJlcHJlc2Vu dHMuICBUcmVhdCBpdCBsaWtlIGEKKwkJICogY3Jvc3NlZCBIT1QvU0lVIGhvcCAtLSBhcm0g dGhlIHJlY2hlY2sgYW5kIE9SIGl0cyBiaXRtYXAgaW50byB0aGUKKwkJICogY3Jvc3NlZCB1 bmlvbiAodW5sZXNzIHdlIGFycml2ZWQgZGlyZWN0bHkgYXQgaXQsIGluIHdoaWNoIGNhc2Ug dGhlCisJCSAqIGFycml2aW5nIGVudHJ5IGFscmVhZHkgcmVmbGVjdHMgdGhpcyBzZWdtZW50 J3MgdmFsdWUpIC0tIHRoZW4KKwkJICogZm9sbG93IGl0cyBmb3J3YXJkIGxpbmsuICBBIHN0 dWIgaXMgbmV2ZXIgdmlzaWJsZSBhbmQgbmV2ZXIKKwkJICogcmV0dXJuZWQsIGFuZCBpdHMg Zm9yd2FyZCBsaW5rIGlzIGEgbG9naWNhbCwgbm90IHhpZC1jb250aW51b3VzLAorCQkgKiBl ZGdlLCBzbyByZXNldCBwcmV2X3htYXggdG8gc2tpcCB0aGUgY2hhaW4taW50ZWdyaXR5IGNo ZWNrIG9uIHRoZQorCQkgKiBuZXh0IG1lbWJlci4KKwkJICovCisJCWlmIChIb3RJbmRleGVk SGVhZGVySXNTdHViKGhlYXBUdXBsZS0+dF9kYXRhKSkKKwkJeworCQkJaWYgKCFhdF9jaGFp bl9zdGFydCkKKwkJCXsKKwkJCQlpZiAoaG90X2luZGV4ZWRfcmVjaGVjaykKKwkJCQkJKmhv dF9pbmRleGVkX3JlY2hlY2sgPSB0cnVlOworCQkJCWlmIChjcm9zc2VkX2JpdG1hcCkKKwkJ CQl7CisJCQkJCWludAkJCWJtbmF0dHMgPQorCQkJCQkJSG90SW5kZXhlZFR1cGxlQml0bWFw TmF0dHMoaGVhcFR1cGxlLT50X2RhdGEpOworCisJCQkJCS8qCisJCQkJCSAqIEEgaG9wJ3Mg d3JpdGUtdGltZSBuYXR0cyBjYW4gbmV2ZXIgbGVnaXRpbWF0ZWx5IGV4Y2VlZAorCQkJCQkg KiB0aGUgcmVsYXRpb24ncyBjdXJyZW50IG5hdHRzLiAgT24gYSBjb3JydXB0IHBhZ2UgYQor CQkJCQkgKiBzdHViJ3MgdW5ib3VuZGVkIHN0YXNoZWQgbmF0dHMgY291bGQgb3RoZXJ3aXNl IG92ZXJmbG93CisJCQkJCSAqIGNyb3NzZWRfYml0bWFwLCB3aGljaCBpcyBhbGxvY2F0ZWQg Zm9yIHJlbG5hdHRzOyBjbGFtcAorCQkJCQkgKiBkZWZlbnNpdmVseS4KKwkJCQkJICovCisJ CQkJCUFzc2VydChibW5hdHRzID49IDAgJiYgYm1uYXR0cyA8PSByZWxuYXR0cyk7CisJCQkJ CWlmIChibW5hdHRzIDwgMCB8fCBibW5hdHRzID4gcmVsbmF0dHMpCisJCQkJCQlibW5hdHRz ID0gcmVsbmF0dHM7CisKKwkJCQkJSG90SW5kZXhlZEJpdG1hcFVuaW9uKGNyb3NzZWRfYml0 bWFwLAorCQkJCQkJCQkJCSAgSG90SW5kZXhlZEdldE1vZGlmaWVkQml0bWFwKGhlYXBUdXBs ZS0+dF9kYXRhLAorCQkJCQkJCQkJCQkJCQkJCQkgIGhlYXBUdXBsZS0+dF9sZW4sCisJCQkJ CQkJCQkJCQkJCQkJCSAgYm1uYXR0cyksCisJCQkJCQkJCQkJICBibW5hdHRzKTsKKwkJCQl9 CisJCQl9CisJCQlvZmZudW0gPSBIb3RJbmRleGVkU3R1YkdldEZvcndhcmQoaGVhcFR1cGxl LT50X2RhdGEpOworCQkJYXRfY2hhaW5fc3RhcnQgPSBmYWxzZTsKKwkJCXByZXZfeG1heCA9 IEludmFsaWRUcmFuc2FjdGlvbklkOworCQkJY29udGludWU7CisJCX0KKworCQkvKgorCQkg KiBTaG91bGRuJ3Qgc2VlIGEgSEVBUF9PTkxZIHR1cGxlIGF0IGNoYWluIHN0YXJ0LCB1bmxl c3MgdGhhdCB0dXBsZQorCQkgKiBpcyB0aGUgdGFyZ2V0IG9mIGEgZnJlc2hseS1pbnNlcnRl ZCBob3QtaW5kZXhlZCBpbmRleCBlbnRyeTogdGhlbgorCQkgKiBhcnJpdmluZyBkaXJlY3Rs eSBhdCBhIGhlYXAtb25seSBIT1QtaW5kZXhlZCB0dXBsZSBpcyBsZWdhbCBhbmQgdGhlCisJ CSAqIHR1cGxlIGlzIHRoZSBjYW5vbmljYWwgdmlzaWJsZSB2ZXJzaW9uLCBzbyB3ZSBmYWxs IHRocm91Z2ggYW5kCisJCSAqIGFwcGx5IG5vcm1hbCB2aXNpYmlsaXR5IGNoZWNrcyB0byBp dC4gIE90aGVyd2lzZSwgdHJlYXQgaXQgYXMgYQorCQkgKiBicm9rZW4gY2hhaW4uCiAJCSAq LwogCQlpZiAoYXRfY2hhaW5fc3RhcnQgJiYgSGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVw bGUpKQotCQkJYnJlYWs7CisJCXsKKwkJCWlmICgoaGVhcFR1cGxlLT50X2RhdGEtPnRfaW5m b21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpID09IDApCisJCQkJYnJlYWs7CisKKwkJ CS8qCisJCQkgKiBXZSB3ZXJlIHBvaW50ZWQgZGlyZWN0bHkgYXQgdGhpcyBob3QtaW5kZXhl ZCB0dXBsZS4gIFRoZSBpbmRleAorCQkJICogZW50cnkgd2UgYXJyaXZlZCB0aHJvdWdoIHdh cyBpbnNlcnRlZCAqZm9yKiB0aGlzIHVwZGF0ZSwgc28gaXQKKwkJCSAqIHJlZmxlY3RzIHRo aXMgdHVwbGUncyBjdXJyZW50IGF0dHJpYnV0ZSB2YWx1ZXM7IGl0cyBvd24KKwkJCSAqIHBy b2R1Y2luZyBob3AgaXMgbm90IGEgY3Jvc3NlZCBob3AsIHNvIGl0IGlzIG5vdCBmbGFnZ2Vk IGZvcgorCQkJICogcmVjaGVjayAoYSBmcmVzaCBlbnRyeSBpcyBuZXZlciBzdGFsZSBmb3Ig aXRzIG93biBpbmRleCkuCisJCQkgKi8KKwkJfQorCQllbHNlIGlmIChob3RfaW5kZXhlZF9y ZWNoZWNrICE9IE5VTEwgJiYKKwkJCQkgKGhlYXBUdXBsZS0+dF9kYXRhLT50X2luZm9tYXNr MiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSAhPSAwKQorCQl7CisJCQkvKgorCQkJICogQSBI T1QvU0lVIGhvcCByZWFjaGVkIGJ5IGZvbGxvd2luZyB0aGUgY2hhaW4gKG9yIGEgcmVkaXJl Y3QpCisJCQkgKiBmcm9tIGFuIGVhcmxpZXIgZW50cnk6IHRoaXMgaG9wIGlzIGNyb3NzZWQs IHNvIHRoZSBhcnJpdmluZworCQkJICogZW50cnkncyBzdG9yZWQga2V5IG1heSBubyBsb25n ZXIgbWF0Y2ggdGhlIGxpdmUgdHVwbGUuICBTZXQgdGhlCisJCQkgKiByZWNoZWNrIGZsYWcg dG8gdGVsbCB0aGUgaW5kZXgtYWNjZXNzIGxheWVyIHRvIGNvbnN1bHQgdGhlCisJCQkgKiBj cm9zc2VkLWF0dHJzIHVuaW9uOyB0aGF0IHVuaW9uIChhY2N1bXVsYXRlZCBiZWxvdykgaXMg d2hhdAorCQkJICogZGVjaWRlcyBzdGFsZW5lc3MuCisJCQkgKi8KKwkJCSpob3RfaW5kZXhl ZF9yZWNoZWNrID0gdHJ1ZTsKKworCQkJLyoKKwkJCSAqIEFjY3VtdWxhdGUgdGhpcyBob3An cyBtb2RpZmllZC1hdHRycyBiaXRtYXAgaW50byB0aGUgY3Jvc3NlZAorCQkJICogdW5pb24u ICBBIHR1cGxlJ3MgaW5saW5lIGJpdG1hcCByZWNvcmRzIHRoZSBpbmRleGVkIGF0dHJpYnV0 ZXMKKwkJCSAqIHRoYXQgY2hhbmdlZCBhdCB0aGUgaG9wIElOVE8gaXQsIHdoaWNoIGlzIGV4 YWN0bHkgdGhlIGhvcCB3ZQorCQkJICoganVzdCBjcm9zc2VkIGJ5IGFkdmFuY2luZyB0byBp dDsgT1JpbmcgZWFjaCBjcm9zc2VkIGhvcCB5aWVsZHMKKwkJCSAqIHRoZSBpbmRleGVkIGF0 dHJpYnV0ZXMgdGhhdCBjaGFuZ2VkIGFmdGVyIHRoZSBlbnRyeSdzIG93bgorCQkJICogdHVw bGUuCisJCQkgKi8KKwkJCWlmIChjcm9zc2VkX2JpdG1hcCkKKwkJCXsKKwkJCQlpbnQJCQli bW5hdHRzID0KKwkJCQkJSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMoaGVhcFR1cGxlLT50 X2RhdGEpOworCisJCQkJLyogU2VlIHRoZSBjb21tZW50IG9uIHRoZSBzdHViIGNhc2UncyBj cm9zc2VkX2JpdG1hcCB1c2UuICovCisJCQkJQXNzZXJ0KGJtbmF0dHMgPj0gMCAmJiBibW5h dHRzIDw9IHJlbG5hdHRzKTsKKwkJCQlpZiAoYm1uYXR0cyA8IDAgfHwgYm1uYXR0cyA+IHJl bG5hdHRzKQorCQkJCQlibW5hdHRzID0gcmVsbmF0dHM7CisKKwkJCQlIb3RJbmRleGVkQml0 bWFwVW5pb24oY3Jvc3NlZF9iaXRtYXAsCisJCQkJCQkJCQkgIEhvdEluZGV4ZWRHZXRNb2Rp ZmllZEJpdG1hcChoZWFwVHVwbGUtPnRfZGF0YSwKKwkJCQkJCQkJCQkJCQkJCQkgIGhlYXBU dXBsZS0+dF9sZW4sCisJCQkJCQkJCQkJCQkJCQkJICBibW5hdHRzKSwKKwkJCQkJCQkJCSAg Ym1uYXR0cyk7CisJCQl9CisJCX0KIAogCQkvKgogCQkgKiBUaGUgeG1pbiBzaG91bGQgbWF0 Y2ggdGhlIHByZXZpb3VzIHhtYXggdmFsdWUsIGVsc2UgY2hhaW4gaXMKQEAgLTE4Niw2ICsz NTUsMTUgQEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVtUG9pbnRlciB0aWQsIFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkgSGVhcFR1cGxlSGVhZGVy R2V0WG1pbihoZWFwVHVwbGUtPnRfZGF0YSkpOwogCQkJCWlmIChhbGxfZGVhZCkKIAkJCQkJ KmFsbF9kZWFkID0gZmFsc2U7CisKKwkJCQkvKgorCQkJCSAqIFJlcG9ydCB3aGV0aGVyIGV2 ZXJ5IGNoYWluIG1lbWJlciBza2lwcGVkIGJlZm9yZSB0aGlzCisJCQkJICogdmlzaWJsZSB0 dXBsZSBpcyBkZWFkIHRvIGFsbCB0cmFuc2FjdGlvbnMuICBXaXRoIGEgc3RhbGUKKwkJCQkg KiB2ZXJkaWN0IHRoaXMgbGV0cyB0aGUgY2FsbGVyIGtpbGwgdGhlIGFycml2aW5nIGxlYWYg c2FmZWx5LgorCQkJCSAqLworCQkJCWlmIChwcmVmaXhfYWxsX2RlYWQpCisJCQkJCSpwcmVm aXhfYWxsX2RlYWQgPSBwcmVmaXhfZGVhZDsKKwogCQkJCXJldHVybiB0cnVlOwogCQkJfQog CQl9CkBAIC0xOTQsMTggKzM3MiwyNSBAQCBoZWFwX2hvdF9zZWFyY2hfYnVmZmVyKEl0ZW1Q b2ludGVyIHRpZCwgUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCS8qCiAJ CSAqIElmIHdlIGNhbid0IHNlZSBpdCwgbWF5YmUgbm8gb25lIGVsc2UgY2FuIGVpdGhlci4g IEF0IGNhbGxlcgogCQkgKiByZXF1ZXN0LCBjaGVjayB3aGV0aGVyIGFsbCBjaGFpbiBtZW1i ZXJzIGFyZSBkZWFkIHRvIGFsbAotCQkgKiB0cmFuc2FjdGlvbnMuCisJCSAqIHRyYW5zYWN0 aW9ucy4gIFRoZSBzYW1lIHN1cmVseS1kZWFkIHRlc3QgZmVlZHMgcHJlZml4X2RlYWQsIHdo aWNoCisJCSAqICh1bmxpa2UgYWxsX2RlYWQpIGlzIG5vdCByZXNldCB3aGVuIGEgdmlzaWJs ZSB0dXBsZSBpcyBmb3VuZCwgc28gaXQKKwkJICogcmVjb3JkcyB3aGV0aGVyIHRoZSBtZW1i ZXJzIHNraXBwZWQgYWhlYWQgb2YgdGhlIHJldHVybmVkIHR1cGxlIGFyZQorCQkgKiBhbGwg ZGVhZCB0byBhbGwgLS0gdGhlIHNhZmUtdG8ta2lsbC10aGlzLWxlYWYgY29uZGl0aW9uLgog CQkgKgogCQkgKiBOb3RlOiBpZiB5b3UgY2hhbmdlIHRoZSBjcml0ZXJpb24gaGVyZSBmb3Ig d2hhdCBpcyAiZGVhZCIsIGZpeCB0aGUKIAkJICogcGxhbm5lcidzIGdldF9hY3R1YWxfdmFy aWFibGVfcmFuZ2UoKSBmdW5jdGlvbiB0byBtYXRjaC4KIAkJICovCi0JCWlmIChhbGxfZGVh ZCAmJiAqYWxsX2RlYWQpCisJCWlmICgoYWxsX2RlYWQgJiYgKmFsbF9kZWFkKSB8fCAocHJl Zml4X2FsbF9kZWFkICYmIHByZWZpeF9kZWFkKSkKIAkJewogCQkJaWYgKCF2aXN0ZXN0KQog CQkJCXZpc3Rlc3QgPSBHbG9iYWxWaXNUZXN0Rm9yKHJlbGF0aW9uKTsKIAogCQkJaWYgKCFI ZWFwVHVwbGVJc1N1cmVseURlYWQoaGVhcFR1cGxlLCB2aXN0ZXN0KSkKLQkJCQkqYWxsX2Rl YWQgPSBmYWxzZTsKKwkJCXsKKwkJCQlpZiAoYWxsX2RlYWQpCisJCQkJCSphbGxfZGVhZCA9 IGZhbHNlOworCQkJCXByZWZpeF9kZWFkID0gZmFsc2U7CisJCQl9CiAJCX0KIAogCQkvKgpA QCAtMjczLDcgKzQ1OCwxNSBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfdHVwbGUoc3RydWN0IElu ZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4sCiAJCQkJCQkJCQkJCXNuYXBzaG90LAogCQkJCQkJ CQkJCQkmYnNsb3QtPmJhc2UudHVwZGF0YSwKIAkJCQkJCQkJCQkJYWxsX2RlYWQsCi0JCQkJ CQkJCQkJCSEqaGVhcF9jb250aW51ZSk7CisJCQkJCQkJCQkJCSEqaGVhcF9jb250aW51ZSwK KwkJCQkJCQkJCQkJJnNjYW4tPnhzX2hvdF9pbmRleGVkX3JlY2hlY2ssCisJCQkJCQkJCQkJ CXNjYW4tPnhzX2hvdF9pbmRleGVkX2Nyb3NzZWQsCisJCQkJCQkJCQkJCSZzY2FuLT54c19w cmVmaXhfYWxsX2RlYWQpOworCWlmICghZ290X2hlYXBfdHVwbGUpCisJeworCQlzY2FuLT54 c19ob3RfaW5kZXhlZF9yZWNoZWNrID0gZmFsc2U7CisJCXNjYW4tPnhzX3ByZWZpeF9hbGxf ZGVhZCA9IGZhbHNlOworCX0KIAlic2xvdC0+YmFzZS50dXBkYXRhLnRfc2VsZiA9ICp0aWQ7 CiAJTG9ja0J1ZmZlcihoc2Nhbi0+eHNfY2J1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRleCAxNDA4OTg5YzU2OC4uNjYyOGY5YmY4 NWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCkBAIC0xMDMsNiArMTAzLDkgQEAg UmVsYXRpb25HZXRJbmRleFNjYW4oUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwgaW50IG5rZXlz LCBpbnQgbm9yZGVyYnlzKQogCQlzY2FuLT5vcmRlckJ5RGF0YSA9IE5VTEw7CiAKIAlzY2Fu LT54c193YW50X2l0dXAgPSBmYWxzZTsgLyogbWF5IGJlIHNldCBsYXRlciAqLworCXNjYW4t PnhzX2luZGV4X29ubHkgPSBmYWxzZTsJLyogbWF5IGJlIHNldCBsYXRlciAqLworCisJc2Nh bi0+eHNfaG90X2luZGV4ZWRfc3RhbGUgPSBmYWxzZTsKIAogCS8qCiAJICogRHVyaW5nIHJl Y292ZXJ5IHdlIGlnbm9yZSBraWxsZWQgdHVwbGVzIGFuZCBkb24ndCBib3RoZXIgdG8ga2ls bCB0aGVtCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwppbmRleCA3OTY3ZTkzOTg0 Ny4uNzIzNzc3N2U2MWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9p bmRleGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAt NDQsNiArNDQsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nl c3MvYW1hcGkuaCIKKyNpbmNsdWRlICJhY2Nlc3MvaG90X2luZGV4ZWQuaCIKICNpbmNsdWRl ICJhY2Nlc3MvcmVsYXRpb24uaCIKICNpbmNsdWRlICJhY2Nlc3MvcmVsb3B0aW9ucy5oIgog I2luY2x1ZGUgImFjY2Vzcy9yZWxzY2FuLmgiCkBAIC02MDYsNiArNjA3LDE1IEBAIGluZGV4 X2dldG5leHRfdGlkKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXJlY3Rp b24pCiAJLyogWFhYOiB3ZSBzaG91bGQgYXNzZXJ0IHRoYXQgYSBzbmFwc2hvdCBpcyBwdXNo ZWQgb3IgcmVnaXN0ZXJlZCAqLwogCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChSZWNl bnRYbWluKSk7CiAKKwkvKgorCSAqIFJlc2V0IHRoZSBIT1QtaW5kZXhlZCByZWNoZWNrIGZs YWc6IGl0IGlzIHNldCBieSB0aGUgaGVhcCBBTSBkdXJpbmcKKwkgKiBpbmRleF9mZXRjaF9o ZWFwIGFuZCBpcyBwZXItZmV0Y2hlZC10dXBsZSwgbm90IHBlci1pbmRleC1lbnRyeS4gRm9y CisJICogSW5kZXhPbmx5U2Nhbiwgd2hpY2ggbWF5IHNraXAgaW5kZXhfZmV0Y2hfaGVhcCB3 aGVuIHRoZSBWTSBzYXlzIHRoZQorCSAqIGVudHJ5IGlzIHZpc2libGUtdG8tYWxsLCB0aGlz IGVuc3VyZXMgd2UgZG9uJ3QgY2FycnkgYSBzdGFsZSB2YWx1ZSBmcm9tCisJICogYSBwcmV2 aW91cyBlbnRyeS4KKwkgKi8KKwlzY2FuLT54c19ob3RfaW5kZXhlZF9zdGFsZSA9IGZhbHNl OworCiAJLyoKIAkgKiBUaGUgQU0ncyBhbWdldHR1cGxlIHByb2MgZmluZHMgdGhlIG5leHQg aW5kZXggZW50cnkgbWF0Y2hpbmcgdGhlIHNjYW4KIAkgKiBrZXlzLCBhbmQgcHV0cyB0aGUg VElEIGludG8gc2Nhbi0+eHNfaGVhcHRpZC4gIEl0IHNob3VsZCBhbHNvIHNldApAQCAtNjY2 LDE1ICs2NzYsOTcgQEAgaW5kZXhfZmV0Y2hfaGVhcChJbmRleFNjYW5EZXNjIHNjYW4sIFR1 cGxlVGFibGVTbG90ICpzbG90KQogCWlmIChmb3VuZCkKIAkJcGdzdGF0X2NvdW50X2hlYXBf ZmV0Y2goc2Nhbi0+aW5kZXhSZWxhdGlvbik7CiAKKwkvKgorCSAqIFRoZSB0YWJsZSBBTSBy ZXBvcnRlZCwgdmlhIHhzX2hvdF9pbmRleGVkX3JlY2hlY2ssIHdoZXRoZXIgdGhlIHdhbGsg dG8KKwkgKiB0aGUgbGl2ZSB0dXBsZSBjcm9zc2VkIGEgSE9ULWluZGV4ZWQgaG9wIGFmdGVy IHRoZSBhcnJpdmluZyBpbmRleAorCSAqIGVudHJ5J3Mgb3duIHR1cGxlLiAgV2hlbiBpdCBk aWQsIHRoZSBlbnRyeSdzIHN0b3JlZCBrZXkgbWF5IG5vIGxvbmdlcgorCSAqIGFncmVlIHdp dGggdGhlIGxpdmUgdHVwbGUsIGFuZCB3ZSBtdXN0IGRlY2lkZSB3aGV0aGVyIHRvIGRyb3Ag aXQuCisJICoKKwkgKiBUaGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwICh4c19ob3RfaW5k ZXhlZF9jcm9zc2VkKSBpcyB0aGUgc3RhbGVuZXNzCisJICogYXV0aG9yaXR5LiAgSXQgaXMg dGhlIHVuaW9uIG9mIHRoZSBwZXItaG9wIG1vZGlmaWVkLWF0dHJpYnV0ZSBiaXRtYXBzCisJ ICogb2YgZXZlcnkgaG9wIHRoZSB3YWxrIGNyb3NzZWQsIGFuZCBpdCBpcyBjb21wbGV0ZTog ZWFjaCBjcm9zc2VkIGxpdmUKKwkgKiBob3AsIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIsIGFu ZCByZWRpcmVjdGVkIChjb2xsYXBzZWQpIHByZWZpeAorCSAqIGNvbnRyaWJ1dGVzIGl0cyBz ZWdtZW50J3MgYml0bWFwLCBhbmQgY2hhaW4gY29sbGFwc2Ugb25seSBldmVyIHJlY2xhaW1z CisJICogYSBtZW1iZXIgd2hvc2UgYXR0cmlidXRlcyBhcmUgYSBzdWJzZXQgb2YgdGhlIHN1 cnZpdmluZyBsYXRlciBob3BzIChzZWUKKwkgKiBwcnVuZWhlYXAuYykuICBUaGVyZWZvcmU6 CisJICoKKwkgKiAtIGlmIHRoZSB1bmlvbiBpcyBkaXNqb2ludCBmcm9tIHRoZSBoZWFwIGNv bHVtbnMgdGhpcyBpbmRleCByZWZlcmVuY2VzLAorCSAqIG5vbmUgb2YgdGhlIGluZGV4J3Mg aW5wdXRzIGNoYW5nZWQgYWNyb3NzIHRoZSBjaGFpbiwgc28gdGhlIGVudHJ5J3Mga2V5CisJ ICogc3RpbGwgbWF0Y2hlcyB0aGUgbGl2ZSB0dXBsZToga2VlcCBpdDsgYW5kCisJICoKKwkg KiAtIGlmIHRoZSB1bmlvbiBvdmVybGFwcyB0aGVtLCBvbmUgb2YgdGhpcyBpbmRleCdzIGtl eSBjb2x1bW5zIGNoYW5nZWQKKwkgKiBhZnRlciB0aGUgZW50cnkncyBvd24gdHVwbGUsIHNv IHRoZSBlbnRyeSBpcyBzdGFsZTogZHJvcCBpdC4KKwkgKgorCSAqIERyb3BwaW5nIG9uIG92 ZXJsYXAgaXMgY29ycmVjdCBldmVuIHdoZW4gdGhlIGtleSB3YXMgY3ljbGVkIGF3YXkgYW5k CisJICogYmFjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUgKGFuIEFCQSB1cGRhdGUpOiB0aGUg dXBkYXRlIHRoYXQgc2V0IHRoZQorCSAqIHZhbHVlIGJhY2sgY3JlYXRlZCBhIGZyZXNoIGVu dHJ5IHBvaW50aW5nIGF0IGl0cyBvd24gKGxpdmUpIHR1cGxlLAorCSAqIHdob3NlIHdhbGsg Y3Jvc3NlcyBubyBsYXRlciBrZXktY2hhbmdpbmcgaG9wLCBzbyB0aGF0IGVudHJ5IHVuaXF1 ZWx5CisJICogc3VwcGxpZXMgdGhlIHJvdyB3aGlsZSB0aGlzIHN0YWxlIGFuY2VzdG9yIGVu dHJ5IGlzIGRyb3BwZWQuICBObworCSAqIHZhbHVlLXJlY2hlY2sgaXMgbmVlZGVkLCBzbyB0 aGlzIHdvcmtzIGZvciBhbnkgYWNjZXNzIG1ldGhvZDsgdGhlCisJICogc3RhbGVuZXNzIGRl Y2lzaW9uIGlzIHB1cmVseSBhdHRyaWJ1dGUtYmFzZWQuCisJICovCisJc2Nhbi0+eHNfaG90 X2luZGV4ZWRfc3RhbGUgPSBmYWxzZTsKKwlpZiAoZm91bmQgJiYKKwkJc2Nhbi0+eHNfaGVh cGZldGNoLT54c19ob3RfaW5kZXhlZF9yZWNoZWNrICYmCisJCXNjYW4tPnhzX2hlYXBmZXRj aC0+eHNfaG90X2luZGV4ZWRfY3Jvc3NlZCAhPSBOVUxMKQorCXsKKwkJQml0bWFwc2V0ICAq aWR4YXR0cnMgPSBSZWxhdGlvbkdldEluZGV4ZWRBdHRycyhzY2FuLT5pbmRleFJlbGF0aW9u KTsKKwkJaW50CQkJeCA9IC0xOworCisJCXdoaWxlICgoeCA9IGJtc19uZXh0X21lbWJlcihp ZHhhdHRycywgeCkpID49IDApCisJCXsKKwkJCUF0dHJOdW1iZXIJYXR0bnVtID0geCArIEZp cnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXI7CisKKwkJCS8qIHRoZSBjcm9zc2Vk IGJpdG1hcCByZWNvcmRzIG9ubHkgdXNlciBhdHRyaWJ1dGVzICovCisJCQlpZiAoYXR0bnVt ID49IDEgJiYKKwkJCQlIb3RJbmRleGVkQXR0cklzTW9kaWZpZWQoc2Nhbi0+eHNfaGVhcGZl dGNoLT54c19ob3RfaW5kZXhlZF9jcm9zc2VkLAorCQkJCQkJCQkJCSBhdHRudW0pKQorCQkJ eworCQkJCXNjYW4tPnhzX2hvdF9pbmRleGVkX3N0YWxlID0gdHJ1ZTsKKwkJCQlicmVhazsK KwkJCX0KKwkJfQorCQlibXNfZnJlZShpZHhhdHRycyk7CisJfQorCiAJLyoKIAkgKiBJZiB3 ZSBzY2FubmVkIGEgd2hvbGUgSE9UIGNoYWluIGFuZCBmb3VuZCBvbmx5IGRlYWQgdHVwbGVz LCB0ZWxsIGluZGV4CiAJICogQU0gdG8ga2lsbCBpdHMgZW50cnkgZm9yIHRoYXQgVElEICh0 aGlzIHdpbGwgdGFrZSBlZmZlY3QgaW4gdGhlIG5leHQKIAkgKiBhbWdldHR1cGxlIGNhbGws IGluIGluZGV4X2dldG5leHRfdGlkKS4gIFdlIGRvIG5vdCBkbyB0aGlzIHdoZW4gaW4KIAkg KiByZWNvdmVyeSBiZWNhdXNlIGl0IG1heSB2aW9sYXRlIE1WQ0MgdG8gZG8gc28uICBTZWUg Y29tbWVudHMgaW4KIAkgKiBSZWxhdGlvbkdldEluZGV4U2NhbigpLgorCSAqCisJICogQWRk aXRpb25hbGx5IGtpbGwgYSBzdGFsZSBIT1QtaW5kZXhlZCBsZWFmIChvbmUgd2hvc2Uga2V5 IHRoZSBsaXZlCisJICogdHVwbGUgbm8gbG9uZ2VyIGhvbGRzKSB3aGVuIGV2ZXJ5IGNoYWlu IG1lbWJlciBza2lwcGVkIGJlZm9yZSB0aGUKKwkgKiByZXR1cm5lZCB0dXBsZSBpcyBkZWFk IHRvIGFsbCB0cmFuc2FjdGlvbnMgKHhzX3ByZWZpeF9hbGxfZGVhZCk6IG5vCisJICogc25h cHNob3QgY2FuIHJlYWNoIGEgbWF0Y2hpbmcgdmVyc2lvbiB0aHJvdWdoIHRoaXMgbGVhZiwg c28gaXQgaXMKKwkgKiByZWR1bmRhbnQgYW5kIHJlY2xhaW1pbmcgaXQgYm91bmRzIHRoZSBp bmRleCBibG9hdCBIT1QtaW5kZXhlZCB1cGRhdGVzCisJICogY3JlYXRlLgorCSAqCisJICog VHdvIGluZGVwZW5kZW50IGNvbmRpdGlvbnMgbWFrZSB0aGlzIHNhZmU6CisJICoKKwkgKiAg LSBUaGUgc3VyZWx5LWRlYWQgcHJlZml4IGdhdGUgKHhzX3ByZWZpeF9hbGxfZGVhZCkgbWVh bnMgbm8gc25hcHNob3QsCisJICogICAgaW5jbHVkaW5nIG9sZGVyIG9uZXMgc3RpbGwgcnVu bmluZywgY2FuIHJlYWNoIGEgdmVyc2lvbiB0aHJvdWdoIHRoaXMKKwkgKiAgICBsZWFmIHdo b3NlIGtleSBtYXRjaGVzOiBldmVyeSBtZW1iZXIgYWhlYWQgb2YgdGhlIGxpdmUgdHVwbGUg aXMgZGVhZAorCSAqICAgIHRvIGFsbC4gIFRoaXMgaXMgd2hhdCBtYWtlcyBpdCBNVkNDLXNh ZmUsIGV4YWN0bHkgYXMgZm9yIHRoZQorCSAqICAgIGFsbF9kZWFkIGNhc2UuCisJICoKKwkg KiAgLSBUaGUgbGVhZiBpcyBnZW51aW5lbHkgcmVkdW5kYW50LCBub3QgdGhlIHJvdydzIG9u bHkgZW50cnkuICBBIHN0YWxlCisJICogICAgdmVyZGljdCBtZWFucyB0aGUgY3Jvc3NlZC1o b3AgdW5pb24gb3ZlcmxhcHMgdGhpcyBpbmRleCdzIGNvbHVtbnMsCisJICogICAgaS5lLiBv bmUgb2YgdGhpcyBpbmRleCdzIGF0dHJpYnV0ZXMgY2hhbmdlZCBvbiBhIGhvcCBhZnRlciB0 aGlzCisJICogICAgbGVhZidzIHRhcmdldC4gIFRoZSB1cGRhdGUgdGhhdCBtYWRlIHRoYXQg Y2hhbmdlIG1haW50YWluZWQgdGhpcworCSAqICAgIGluZGV4IChpdHMgYXR0cmlidXRlIGNo YW5nZWQpLCBzbyBpdCBwbGFudGVkIGEgZnJlc2ggZW50cnkgcG9pbnRpbmcKKwkgKiAgICBh dCBpdHMgb3duIGxpdmUgdHVwbGU7IHRoYXQgZnJlc2ggZW50cnkgY3Jvc3NlcyBubyBsYXRl cgorCSAqICAgIGtleS1jaGFuZ2luZyBob3AgYW5kIHVuaXF1ZWx5IHN1cHBsaWVzIHRoZSBy b3cuICBEcm9wcGluZyB0aGUgc3RhbGUKKwkgKiAgICBhbmNlc3RvciB0aGVyZWZvcmUgbmV2 ZXIgcmVtb3ZlcyB0aGUgcm93J3MgbGFzdCByZWFjaGFibGUgZW50cnkuCisJICogICAgVGhp cyBob2xkcyBldmVuIHVuZGVyIEFCQSBrZXkgY3ljbGluZyAoWCAtPiBZIC0+IFgpOiB0aGUg WC1yZXN0b3JpbmcKKwkgKiAgICB1cGRhdGUgY2hhbmdlZCB0aGlzIGluZGV4J3MgY29sdW1u IChZIC0+IFgpIGFuZCBzbyBwbGFudGVkIHRoZSBmcmVzaAorCSAqICAgIGVudHJ5LgogCSAq LwogCWlmICghc2Nhbi0+eGFjdFN0YXJ0ZWRJblJlY292ZXJ5KQotCQlzY2FuLT5raWxsX3By aW9yX3R1cGxlID0gYWxsX2RlYWQ7CisJCXNjYW4tPmtpbGxfcHJpb3JfdHVwbGUgPQorCQkJ YWxsX2RlYWQgfHwKKwkJCShzY2FuLT54c19ob3RfaW5kZXhlZF9zdGFsZSAmJiBzY2FuLT54 c19oZWFwZmV0Y2gtPnhzX3ByZWZpeF9hbGxfZGVhZCk7CiAKIAlyZXR1cm4gZm91bmQ7CiB9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYwppbmRleCBjOGFmOTdkZDIz ZC4uZjBmZmU4YzZkMmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQu YwpAQCAtMTUsNiArMTUsOCBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1 ZGUgImFjY2Vzcy9nZW5hbS5oIgorI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIK ICNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL25idHhsb2cu aCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgpAQCAtMjIsNiArMjQsNyBAQAogI2lu Y2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgog I2luY2x1ZGUgImNvbW1vbi9wZ19wcm5nLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvdHVwdGFi bGUuaCIKICNpbmNsdWRlICJsaWIvcXVuaXF1ZS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgpAQCAtMzQsNiArMzcsMTEgQEAKIAogc3Rh dGljIEJUU3RhY2sgX2J0X3NlYXJjaF9pbnNlcnQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBo ZWFwcmVsLAogCQkJCQkJCQkgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSk7CisKKy8qIElu dGVybmFsIGhlbHBlcjogSE9ULWluZGV4ZWQgbGVhZi1rZXkgc3RhbGVuZXNzIGNoZWNrIGZv ciBfYnRfY2hlY2tfdW5pcXVlLiAqLworc3RhdGljIGJvb2wgX2J0X2hlYXBfa2V5c19lcXVh bF9sZWFmKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsZWFmdHVwLAorCQkJCQkJCQkJIFR1 cGxlVGFibGVTbG90ICpoZWFwU2xvdCk7CisKIHN0YXRpYyBUcmFuc2FjdGlvbklkIF9idF9j aGVja191bmlxdWUoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLAog CQkJCQkJCQkJICBSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCQkJICBJbmRleFVuaXF1ZUNo ZWNrIGNoZWNrVW5pcXVlLCBib29sICppc191bmlxdWUsCkBAIC00MjYsNiArNDM0LDggQEAg X2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3Rh dGUsIFJlbGF0aW9uIGhlYXBSZWwsCiAJYm9vbAkJaW5wb3N0aW5nID0gZmFsc2U7CiAJYm9v bAkJcHJldmFsbGRlYWQgPSB0cnVlOwogCWludAkJCWN1cnBvc3RpID0gMDsKKwlUdXBsZVRh YmxlU2xvdCAqY2hhaW5fd2Fsa19zbG90ID0gTlVMTDsKKwlib29sCQloaV9yZWNoZWNrID0g ZmFsc2U7CiAKIAkvKiBBc3N1bWUgdW5pcXVlIHVudGlsIHdlIGZpbmQgYSBkdXBsaWNhdGUg Ki8KIAkqaXNfdW5pcXVlID0gdHJ1ZTsKQEAgLTUwOSw2ICs1MTksNyBAQCBfYnRfY2hlY2tf dW5pcXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVsYXRp b24gaGVhcFJlbCwKIAkJCXsKIAkJCQlJdGVtUG9pbnRlckRhdGEgaHRpZDsKIAkJCQlib29s CQlhbGxfZGVhZCA9IGZhbHNlOworCQkJCWJvb2wJCWhvdF9pbmRleGVkX3N0YWxlID0gZmFs c2U7CiAKIAkJCQlpZiAoIWlucG9zdGluZykKIAkJCQl7CkBAIC01NTksMTMgKzU3MCw4MiBA QCBfYnRfY2hlY2tfdW5pcXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRz dGF0ZSwgUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkgKiBzYXRpc2Z5aW5nIFNuYXBzaG90RGly dHkuIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgZm9yIEFNcwogCQkJCSAqIHdpdGggb3B0 aW1pemF0aW9ucyBsaWtlIGhlYXAncyBIT1QsIHdlIGhhdmUganVzdCBhIHNpbmdsZQogCQkJ CSAqIGluZGV4IGVudHJ5IGZvciB0aGUgZW50aXJlIGNoYWluLgorCQkJCSAqCisJCQkJICog VGhlIGZldGNoIHJlcG9ydHMgKGhpX3JlY2hlY2spIHdoZXRoZXIgdGhlIGNoYWluIHdhbGsg dG8KKwkJCQkgKiB0aGUgbGl2ZSB0dXBsZSBjcm9zc2VkIGEgSE9ULXNlbGVjdGl2ZWx5LXVw ZGF0ZWQgKEhPVC9TSVUpCisJCQkJICogaG9wLiBJbiBjbGFzc2ljIEhPVCB0aGUgY2hhaW4g cHJlc2VydmVzIHRoZSBpbmRleCBrZXksIHNvIGEKKwkJCQkgKiBsaXZlIHR1cGxlIGFueXdo ZXJlIGluIHRoZSBjaGFpbiBpcyBhIGRlZmluaXRlIGNvbmZsaWN0OworCQkJCSAqIHdpdGgg SE9UL1NJVSB0aGF0IGludmFyaWFudCBubyBsb25nZXIgaG9sZHMgLS0gYW4gb2xkIGluZGV4 CisJCQkJICogZW50cnkgZm9yIGtleSBLIG1heSBjaGFpbi1sZWFkIHRvIGEgaGVhcCB0dXBs ZSB3aG9zZSBhY3R1YWwKKwkJCQkgKiBpbmRleCBrZXkgaXMgSycuICBXaGVuIGEgaG9wIHdh cyBjcm9zc2VkIHdlIHJlY2hlY2sgdGhlCisJCQkJICogbGVhZiBrZXkgYWdhaW5zdCB0aGUg bGl2ZSB0dXBsZSBiZWxvdzsgYSBzdGFsZSBlbnRyeSBpcworCQkJCSAqIGZpbHRlcmVkIG91 dCwgbm90IHRyZWF0ZWQgYXMgYSBjb25mbGljdC4gIGNoYWluX3dhbGtfc2xvdAorCQkJCSAq IGhvbGRzIHRoZSBsaXZlIHR1cGxlIGZvciB0aGF0IHJlY2hlY2sgYW5kIGlzIGZyZWVkIGF0 IGV2ZXJ5CisJCQkJICogZXhpdC4KIAkJCQkgKi8KLQkJCQllbHNlIGlmICh0YWJsZV9pbmRl eF9mZXRjaF90dXBsZV9jaGVjayhoZWFwUmVsLCAmaHRpZCwKKwkJCQllbHNlIGlmICgoY2hh aW5fd2Fsa19zbG90ICE9IE5VTEwgfHwKKwkJCQkJCSAgKGNoYWluX3dhbGtfc2xvdCA9IHRh YmxlX3Nsb3RfY3JlYXRlKGhlYXBSZWwsIE5VTEwpKSkgJiYKKwkJCQkJCSB0YWJsZV9pbmRl eF9mZXRjaF90dXBsZV9jaGVjayhoZWFwUmVsLCAmaHRpZCwKIAkJCQkJCQkJCQkJCQkgICAm U25hcHNob3REaXJ0eSwKLQkJCQkJCQkJCQkJCQkgICAmYWxsX2RlYWQpKQorCQkJCQkJCQkJ CQkJCSAgICZhbGxfZGVhZCwKKwkJCQkJCQkJCQkJCQkgICAmaGlfcmVjaGVjaywKKwkJCQkJ CQkJCQkJCQkgICBjaGFpbl93YWxrX3Nsb3QpKQogCQkJCXsKIAkJCQkJVHJhbnNhY3Rpb25J ZCB4d2FpdDsKIAorCQkJCQkvKgorCQkJCQkgKiBUaGUgY2hhaW4gd2FsayByZXBvcnRlZCAo aGlfcmVjaGVjaykgdGhhdCBpdCBjcm9zc2VkIGF0CisJCQkJCSAqIGxlYXN0IG9uZSBIT1Qv U0lVIGhvcCBvbiB0aGUgd2F5IHRvIHRoZSBsaXZlIHR1cGxlLCBzbworCQkJCQkgKiB0aGUg Y2xhc3NpYyAibGl2ZSB0dXBsZSBpbiB0aGUgY2hhaW4gaW1wbGllcyB0aGUgc2FtZQorCQkJ CQkgKiBpbmRleCBrZXkiIGludmFyaWFudCBtYXkgbm90IGhvbGQ6IGFuIG9sZCBpbmRleCBl bnRyeQorCQkJCQkgKiBmb3Iga2V5IEsgbWF5IGNoYWluLWxlYWQgdG8gYSB0dXBsZSB3aG9z ZSBjdXJyZW50IGtleQorCQkJCQkgKiBpcyBLJy4gIFJlY2hlY2sgdGhlIGxlYWYncyBzdG9y ZWQga2V5IGFnYWluc3QgdGhlIGxpdmUKKwkJCQkJICogdHVwbGUncyBjdXJyZW50IGluZGV4 IGZvcm0uICBBIG1pc21hdGNoIG1lYW5zIHRoZSBsZWFmCisJCQkJCSAqIGlzIHN0YWxlIChu b3QgYSBjb25mbGljdCk6IHNraXAgaXQ7IHRoZSBmcmVzaCBlbnRyeQorCQkJCQkgKiBpbnNl cnRlZCBmb3IgdGhlIGN1cnJlbnQgdmFsdWUgaXMgdGhlIGNhbm9uaWNhbCBvbmUuCisJCQkJ CSAqIEJlY2F1c2UgdGhlIGxlYWYgc3RpbGwgcmVzb2x2ZXMgdG8gYSBsaXZlIHR1cGxlLCBj bGVhcgorCQkJCQkgKiBwcmV2YWxsZGVhZCBzbyB0aGUgY2FsbGVyIG5ldmVyIG1hcmtzIGl0 IExQX0RFQUQKKwkJCQkJICogKGtpbGxhYmxlKS4KKwkJCQkJICovCisJCQkJCWhvdF9pbmRl eGVkX3N0YWxlID0KKwkJCQkJCShoaV9yZWNoZWNrICYmCisJCQkJCQkgIV9idF9oZWFwX2tl eXNfZXF1YWxfbGVhZihyZWwsIGN1cml0dXAsIGNoYWluX3dhbGtfc2xvdCkpOworCisJCQkJ CWlmIChob3RfaW5kZXhlZF9zdGFsZSkKKwkJCQkJeworCQkJCQkJcHJldmFsbGRlYWQgPSBm YWxzZTsKKwkJCQkJCS8qCisJCQkJCQkgKiBEbyBOT1QgcmVsZWFzZSBuYnVmIGhlcmU6IHBh Z2Uvb3BhcXVlL2N1cml0dXAgbWF5CisJCQkJCQkgKiBwb2ludCBpbnRvIGl0IChhIHJpZ2h0 LXNpYmxpbmcgcGFnZSByZWFjaGVkIHdoaWxlCisJCQkJCQkgKiBzY2FubmluZyBlcXVhbCB0 dXBsZXMpLCBhbmQgdGhlIGxvb3AgY29udGludWVzIHRvCisJCQkJCQkgKiBkZXJlZmVyZW5j ZSB0aGVtIGFmdGVyIHRoaXMganVtcC4gIG5idWYgaXMgcmVsZWFzZWQKKwkJCQkJCSAqIHdo ZW4gdGhlIHNjYW4gZmluaXNoZXMgKG9yIGFkdmFuY2VzIHRvIGFub3RoZXIgcGFnZSkuCisJ CQkJCQkgKi8KKwkJCQkJCUV4ZWNDbGVhclR1cGxlKGNoYWluX3dhbGtfc2xvdCk7CisJCQkJ CQlnb3RvIGJ0X2NoYWluX3dhbGtfc2tpcDsKKwkJCQkJfQorCisJCQkJCS8qCisJCQkJCSAq IFRoZSBsZWFmJ3Mga2V5IHN0aWxsIG1hdGNoZXMgdGhlIGxpdmUgdHVwbGUuICBJZiB0aGUK KwkJCQkJICogY2hhaW4gd2FsayBjcm9zc2VkIGEgSE9ULWluZGV4ZWQgaG9wIGFuZCByZXNv bHZlZCB0bworCQkJCQkgKiB0aGUgdmVyeSB0dXBsZSB0aGUgY2FsbGVyIGlzIGluc2VydGlu ZyBhbiBlbnRyeSBmb3IsCisJCQkJCSAqIHRoaXMgaXMgbm90IGEgZHVwbGljYXRlIC0tIGl0 IGlzIHRoZSBzYW1lIGxvZ2ljYWwgcm93CisJCQkJCSAqIGJlaW5nIHJlLWluZGV4ZWQgKGUu Zy4gYSBIT1QtaW5kZXhlZCBVUERBVEUgdGhhdCBsZWZ0CisJCQkJCSAqIHRoaXMgaW5kZXgn cyBrZXkgdW5jaGFuZ2VkLCBvciBhIGtleSBjeWNsZWQgYXdheSBhbmQKKwkJCQkJICogYmFj aykuIFNraXAgaXQgcmF0aGVyIHRoYW4gcmFpc2luZyBhIHNwdXJpb3VzIHVuaXF1ZQorCQkJ CQkgKiB2aW9sYXRpb24uCisJCQkJCSAqLworCQkJCQlpZiAoaGlfcmVjaGVjayAmJgorCQkJ CQkJSXRlbVBvaW50ZXJDb21wYXJlKCZodGlkLCAmaXR1cC0+dF90aWQpID09IDApCisJCQkJ CXsKKwkJCQkJCXByZXZhbGxkZWFkID0gZmFsc2U7CisJCQkJCQkvKiBrZWVwIG5idWYgcGlu bmVkOyBzZWUgdGhlIGhvdF9pbmRleGVkX3N0YWxlIHBhdGggKi8KKwkJCQkJCUV4ZWNDbGVh clR1cGxlKGNoYWluX3dhbGtfc2xvdCk7CisJCQkJCQlnb3RvIGJ0X2NoYWluX3dhbGtfc2tp cDsKKwkJCQkJfQorCQkJCQlpZiAoY2hhaW5fd2Fsa19zbG90ICE9IE5VTEwpCisJCQkJCQlF eGVjQ2xlYXJUdXBsZShjaGFpbl93YWxrX3Nsb3QpOworCiAJCQkJCS8qCiAJCQkJCSAqIEl0 IGlzIGEgZHVwbGljYXRlLiBJZiB3ZSBhcmUgb25seSBkb2luZyBhIHBhcnRpYWwKIAkJCQkJ ICogY2hlY2ssIHRoZW4gZG9uJ3QgYm90aGVyIGNoZWNraW5nIGlmIHRoZSB0dXBsZSBpcyBi ZWluZwpAQCAtNTc4LDYgKzY1OCw4IEBAIF9idF9jaGVja191bmlxdWUoUmVsYXRpb24gcmVs LCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQl7 CiAJCQkJCQlpZiAobmJ1ZiAhPSBJbnZhbGlkQnVmZmVyKQogCQkJCQkJCV9idF9yZWxidWYo cmVsLCBuYnVmKTsKKwkJCQkJCWlmIChjaGFpbl93YWxrX3Nsb3QpCisJCQkJCQkJRXhlY0Ry b3BTaW5nbGVUdXBsZVRhYmxlU2xvdChjaGFpbl93YWxrX3Nsb3QpOwogCQkJCQkJKmlzX3Vu aXF1ZSA9IGZhbHNlOwogCQkJCQkJcmV0dXJuIEludmFsaWRUcmFuc2FjdGlvbklkOwogCQkJ CQl9CkBAIC01OTMsNiArNjc1LDggQEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlvbiByZWws IEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCXsK IAkJCQkJCWlmIChuYnVmICE9IEludmFsaWRCdWZmZXIpCiAJCQkJCQkJX2J0X3JlbGJ1Zihy ZWwsIG5idWYpOworCQkJCQkJaWYgKGNoYWluX3dhbGtfc2xvdCkKKwkJCQkJCQlFeGVjRHJv cFNpbmdsZVR1cGxlVGFibGVTbG90KGNoYWluX3dhbGtfc2xvdCk7CiAJCQkJCQkvKiBUZWxs IF9idF9kb2luc2VydCB0byB3YWl0Li4uICovCiAJCQkJCQkqc3BlY3VsYXRpdmVUb2tlbiA9 IFNuYXBzaG90RGlydHkuc3BlY3VsYXRpdmVUb2tlbjsKIAkJCQkJCS8qIENhbGxlciByZWxl YXNlcyBsb2NrIG9uIGJ1ZiBpbW1lZGlhdGVseSAqLwpAQCAtNjE5LDcgKzcwMyw4IEBAIF9i dF9jaGVja191bmlxdWUoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRl LCBSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkgKi8KIAkJCQkJaHRpZCA9IGl0dXAtPnRfdGlk OwogCQkJCQlpZiAodGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2soaGVhcFJlbCwgJmh0 aWQsCi0JCQkJCQkJCQkJCQkJICBTbmFwc2hvdFNlbGYsIE5VTEwpKQorCQkJCQkJCQkJCQkJ CSAgU25hcHNob3RTZWxmLCBOVUxMLAorCQkJCQkJCQkJCQkJCSAgTlVMTCwgTlVMTCkpCiAJ CQkJCXsKIAkJCQkJCS8qIE5vcm1hbCBjYXNlIC0tLSBpdCdzIHN0aWxsIGxpdmUgKi8KIAkJ CQkJfQpAQCAtNjU0LDYgKzczOSw4IEBAIF9idF9jaGVja191bmlxdWUoUmVsYXRpb24gcmVs LCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQlf YnRfcmVsYnVmKHJlbCwgaW5zZXJ0c3RhdGUtPmJ1Zik7CiAJCQkJCWluc2VydHN0YXRlLT5i dWYgPSBJbnZhbGlkQnVmZmVyOwogCQkJCQlpbnNlcnRzdGF0ZS0+Ym91bmRzX3ZhbGlkID0g ZmFsc2U7CisJCQkJCWlmIChjaGFpbl93YWxrX3Nsb3QpCisJCQkJCQlFeGVjRHJvcFNpbmds ZVR1cGxlVGFibGVTbG90KGNoYWluX3dhbGtfc2xvdCk7CiAKIAkJCQkJewogCQkJCQkJRGF0 dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CkBAIC03MTUsNiArODAyLDkgQEAgX2J0X2No ZWNrX3VuaXF1ZShSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIFJl bGF0aW9uIGhlYXBSZWwsCiAJCQkJICovCiAJCQkJaWYgKCFhbGxfZGVhZCAmJiBpbnBvc3Rp bmcpCiAJCQkJCXByZXZhbGxkZWFkID0gZmFsc2U7CisKKwkJYnRfY2hhaW5fd2Fsa19za2lw OgorCQkJCTsKIAkJCX0KIAkJfQogCkBAIC03ODIsOSArODcyLDg0IEBAIF9idF9jaGVja191 bmlxdWUoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBSZWxhdGlv biBoZWFwUmVsLAogCWlmIChuYnVmICE9IEludmFsaWRCdWZmZXIpCiAJCV9idF9yZWxidWYo cmVsLCBuYnVmKTsKIAorCWlmIChjaGFpbl93YWxrX3Nsb3QpCisJCUV4ZWNEcm9wU2luZ2xl VHVwbGVUYWJsZVNsb3QoY2hhaW5fd2Fsa19zbG90KTsKKwogCXJldHVybiBJbnZhbGlkVHJh bnNhY3Rpb25JZDsKIH0KIAorLyoKKyAqCV9idF9oZWFwX2tleXNfZXF1YWxfbGVhZigpIC0t IENvbXBhcmUgYSBoZWFwIHR1cGxlJ3MgY3VycmVudCBidHJlZSBrZXkKKyAqCWFnYWluc3Qg dGhlIGtleSBzdG9yZWQgaW4gYSBsZWFmIEluZGV4VHVwbGUuCisgKgorICoJVGhlIEhPVC1p bmRleGVkIHVuaXF1ZS1jaGVjayBwYXRoIHVzZXMgdGhpcyB0byBkaXN0aW5ndWlzaCBhIGxp dmUgdHVwbGUKKyAqCXdob3NlIGN1cnJlbnQga2V5IHN0aWxsIG1hdGNoZXMgdGhlIGFycml2 aW5nIGxlYWYgKGEgZ2VudWluZSBjb25mbGljdCkKKyAqCWZyb20gYSBzdGFsZSBjaGFpbiBo aXQ6IHdpdGggYSBIT1QtaW5kZXhlZCAoU2VsZWN0aXZlIEluZGV4IFVwZGF0ZSkgY2hhaW4K KyAqCXRoZSBsZWFmIGVudHJ5IGZvciBhbiBvbGQga2V5IHN0aWxsIHJlc29sdmVzIHRvIHRo ZSBsaXZlIHR1cGxlLCB3aG9zZQorICoJY3VycmVudCBpbmRleCBmb3JtIG1heSBkaWZmZXIu CisgKgorICoJRXF1YWxpdHkgbXVzdCBhZ3JlZSB3aXRoIHRoZSBpbmRleCdzIG93biBub3Rp b24gb2YgZXF1YWxpdHksIGJlY2F1c2UgdGhlCisgKgljYWxsZXIgdXNlcyB0aGUgdmVyZGlj dCB0byBkZWNpZGUgd2hldGhlciB0byByYWlzZSBhIHVuaXF1ZSB2aW9sYXRpb24uCisgKglX ZSBjb21wYXJlIGVhY2gga2V5IGNvbHVtbiB3aXRoIGl0cyBidHJlZSBvcmRlcmluZyBwcm9j ZWR1cmUgKEJUT1JERVJfUFJPQywKKyAqCXRoZSBzYW1lIHN1cHBvcnQgZnVuY3Rpb24gX2J0 X21rc2NhbmtleSB1c2VzKSB1bmRlciB0aGUgY29sdW1uJ3MgY29sbGF0aW9uCisgKgktLSBu b3QgYSBiaXR3aXNlIGltYWdlIGNvbXBhcmlzb24uICBCaXR3aXNlIGVxdWFsaXR5IHdvdWxk IHdyb25nbHkgdHJlYXQKKyAqCW9wY2xhc3MtZXF1YWwgYnV0IGltYWdlLWRpc3RpbmN0IHZh bHVlcyAobnVtZXJpYyAxLjAgdnMgMS4wMCwgZmxvYXQgLTAuMAorICoJdnMgMC4wLCB0ZXh0 IHVuZGVyIGEgbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb24pIGFzICJub3QgZXF1YWwiIGFu ZCBza2lwIGEKKyAqCWdlbnVpbmUgZHVwbGljYXRlLgorICoKKyAqCVRoaXMgaXMgY2FsbGVk IGZyb20gX2J0X2NoZWNrX3VuaXF1ZSB3aGlsZSB0aGUgbGVhZiBidWZmZXIgaXMgbG9ja2Vk LCBzbyBpdAorICoJZGVsaWJlcmF0ZWx5IGF2b2lkcyBleGVjdXRvciBtYWNoaW5lcnk6IGl0 IGZldGNoZXMgZWFjaCBrZXkgYXR0cmlidXRlCisgKglzdHJhaWdodCBmcm9tIHRoZSBzbG90 LiAgSXQgaXMgb25seSBldmVyIHJlYWNoZWQgZm9yIGFuIGluZGV4IHJlY2VpdmluZyBhCisg KglmcmVzaCBlbnRyeSBkdXJpbmcgYSBIT1QtaW5kZXhlZCB1cGRhdGUsIGFuZCBIZWFwVXBk YXRlSG90QWxsb3dhYmxlCisgKglkaXNxdWFsaWZpZXMgYW55IFVQREFURSB0aGF0IHRvdWNo ZXMgYW4gZXhwcmVzc2lvbi1pbmRleCBhdHRyaWJ1dGUsIHNvIHRoZQorICoJaW5kZXggaGVy ZSBoYXMgbm8gZXhwcmVzc2lvbiBrZXkgY29sdW1uIChldmVyeSBpbmRrZXkgaXMgYSByZWFs IGF0dHJpYnV0ZQorICoJbnVtYmVyKS4gIFdlIGFzc2VydCB0aGF0IHJhdGhlciB0aGFuIGhh bmRsZSBhIGtleWNvbCA9PSAwIGNhc2UgdGhhdCBjYW5ub3QKKyAqCW9jY3VyOyBpZiBleHBy ZXNzaW9uLWluZGV4IHNlbGVjdGl2ZSBtYWludGVuYW5jZSBpcyBpbXBsZW1lbnRlZCBpbiB0 aGUKKyAqCWZ1dHVyZSwgdGhpcyBpcyB3aGVyZSBhbiBleHByZXNzaW9uLWV2YWx1YXRpbmcg Y29tcGFyaXNvbiB3b3VsZCBiZSBhZGRlZC4KKyAqCisgKgloZWFwU2xvdCBtdXN0IGFscmVh ZHkgYmUgcG9wdWxhdGVkIGJ5IHRoZSBjYWxsZXIgKHZpYQorICoJdGFibGVfaW5kZXhfZmV0 Y2hfdHVwbGUgLyB0YWJsZV9pbmRleF9mZXRjaF90dXBsZV9jaGVjaykuCisgKi8KK3N0YXRp YyBib29sCitfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYoUmVsYXRpb24gcmVsLCBJbmRleFR1 cGxlIGxlYWZ0dXAsCisJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKmhlYXBTbG90KQoreworCVR1 cGxlRGVzYwlpbmRleERlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CisJaW50CQkJbmtl eSA9IEluZGV4UmVsYXRpb25HZXROdW1iZXJPZktleUF0dHJpYnV0ZXMocmVsKTsKKwlGb3Jt X3BnX2luZGV4IGluZGV4U3RydWN0ID0gcmVsLT5yZF9pbmRleDsKKworCUFzc2VydChsZWFm dHVwICE9IE5VTEwpOworCUFzc2VydChoZWFwU2xvdCAhPSBOVUxMICYmICFUVFNfRU1QVFko aGVhcFNsb3QpKTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgbmtleTsgaSsrKQorCXsKKwkJ QXR0ck51bWJlcglrZXljb2wgPSBpbmRleFN0cnVjdC0+aW5ka2V5LnZhbHVlc1tpXTsKKwkJ RGF0dW0JCWhlYXBfZGF0dW07CisJCWJvb2wJCWhlYXBfaXNudWxsOworCQlEYXR1bQkJbGVh Zl9kYXR1bTsKKwkJYm9vbAkJbGVhZl9pc251bGw7CisJCUZtZ3JJbmZvICAgKmNtcHByb2M7 CisKKwkJLyogRXhwcmVzc2lvbiBrZXkgY29sdW1ucyBjYW5ub3QgcmVhY2ggaGVyZSAoc2Vl IGhlYWRlcikuICovCisJCUFzc2VydChrZXljb2wgIT0gMCk7CisKKwkJaGVhcF9kYXR1bSA9 IHNsb3RfZ2V0YXR0cihoZWFwU2xvdCwga2V5Y29sLCAmaGVhcF9pc251bGwpOworCQlsZWFm X2RhdHVtID0gaW5kZXhfZ2V0YXR0cihsZWFmdHVwLCBpICsgMSwgaW5kZXhEZXNjLCAmbGVh Zl9pc251bGwpOworCisJCWlmIChoZWFwX2lzbnVsbCAhPSBsZWFmX2lzbnVsbCkKKwkJCXJl dHVybiBmYWxzZTsKKwkJaWYgKGhlYXBfaXNudWxsKQorCQkJY29udGludWU7CisKKwkJLyog b3BjbGFzcyAzLXdheSBjb21wYXJlIHVuZGVyIHRoZSBjb2x1bW4ncyBjb2xsYXRpb247IDAg PT0gZXF1YWwgKi8KKwkJY21wcHJvYyA9IGluZGV4X2dldHByb2NpbmZvKHJlbCwgaSArIDEs IEJUT1JERVJfUFJPQyk7CisJCWlmIChEYXR1bUdldEludDMyKEZ1bmN0aW9uQ2FsbDJDb2xs KGNtcHByb2MsIHJlbC0+cmRfaW5kY29sbGF0aW9uW2ldLAorCQkJCQkJCQkJCQloZWFwX2Rh dHVtLCBsZWFmX2RhdHVtKSkgIT0gMCkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1 cm4gdHJ1ZTsKK30KIAogLyoKICAqCV9idF9maW5kaW5zZXJ0bG9jKCkgLS0gRmluZHMgYW4g aW5zZXJ0IGxvY2F0aW9uIGZvciBhIHR1cGxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHJlZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRy ZWUuYwppbmRleCAzZGYyYzc1MmVhZC4uNWIyNjllYWFhOTMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRyZWUuYwpAQCAtNDA4LDYgKzQwOCwxNiBAQCBidHJlc2NhbihJbmRleFNj YW5EZXNjIHNjYW4sIFNjYW5LZXkgc2NhbmtleSwgaW50IG5zY2Fua2V5cywKIAkgKiByYWNl IGNvbmRpdGlvbiBpbnZvbHZpbmcgVkFDVVVNIHNldHRpbmcgcGFnZXMgYWxsLXZpc2libGUg aW4gdGhlIFZNLgogCSAqIEl0J3MgYWxzbyB1bnNhZmUgZm9yIHBsYWluIGluZGV4IHNjYW5z IHRoYXQgdXNlIGEgbm9uLU1WQ0Mgc25hcHNob3QuCiAJICoKKwkgKiBOb3RlIHRoYXQgd2Fu dGluZyB0aGUgaW5kZXggdHVwbGUgKHhzX3dhbnRfaXR1cCkgaXMgbm90IGJ5IGl0c2VsZiBh CisJICogcmVhc29uIHRvIHJldGFpbiB0aGUgcGluOiBidHJlZSBjb3BpZXMgZWFjaCByZXR1 cm5lZCBJbmRleFR1cGxlIGludG8KKwkgKiBzby0+Y3VyclR1cGxlcyAoc2Nhbi1sb2NhbCBt ZW1vcnkpIGFuZCBwb2ludHMgeHNfaXR1cCB0aGVyZSwgc28gdGhlCisJICogdHVwbGUgc3Rh eXMgdmFsaWQgYWZ0ZXIgdGhlIHBpbiBpcyBkcm9wcGVkLiAgT25seSBnZW51aW5lIGluZGV4 LW9ubHkKKwkgKiBzY2FucyAoeHNfaW5kZXhfb25seSksIHdoaWNoIG1heSByZXR1cm4gYSB0 dXBsZSB3aXRob3V0IGZldGNoaW5nIHRoZQorCSAqIGhlYXAgYW5kIHRoZXJlZm9yZSByZWx5 IG9uIHRoZSBWTSwgbXVzdCBrZWVwIHRoZSBwaW4uICBBIHBsYWluIGluZGV4CisJICogc2Nh biB0aGF0IHNldHMgeHNfd2FudF9pdHVwIG1lcmVseSB0byBpbnNwZWN0IG9yIHJlY2hlY2sg dGhlIGluZGV4CisJICogdHVwbGUgc3RpbGwgZmV0Y2hlcyBhbmQgdmlzaWJpbGl0eS1jaGVj a3MgdGhlIGhlYXAsIHNvIGl0IGhhcyBubyBWTQorCSAqIHJhY2UgYW5kIG1heSBkcm9wIHBp bnMgbGlrZSBhbnkgb3RoZXIgcGxhaW4gc2Nhbi4KKwkgKgogCSAqIEFsc28gb3B0IG91dCBv ZiBkcm9wcGluZyBsZWFmIHBhZ2UgcGlucyBlYWdlcmx5IGR1cmluZyBiaXRtYXAgc2NhbnMu CiAJICogUGlucyBjYW5ub3QgYmUgaGVsZCBmb3IgbW9yZSB0aGFuIGFuIGluc3RhbnQgZHVy aW5nIGJpdG1hcCBzY2FucyBlaXRoZXIKIAkgKiB3YXksIHNvIHdlIG1pZ2h0IGFzIHdlbGwg YXZvaWQgd2FzdGluZyBjeWNsZXMgb24gYWNxdWlyaW5nIHBhZ2UgTFNOcy4KQEAgLTQxNiw3 ICs0MjYsNyBAQCBidHJlc2NhbihJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5LZXkgc2Nhbmtl eSwgaW50IG5zY2Fua2V5cywKIAkgKgogCSAqIE5vdGU6IHNvLT5kcm9wUGluIHNob3VsZCBu ZXZlciBjaGFuZ2UgYWNyb3NzIHJlc2NhbnMuCiAJICovCi0Jc28tPmRyb3BQaW4gPSAoIXNj YW4tPnhzX3dhbnRfaXR1cCAmJgorCXNvLT5kcm9wUGluID0gKCFzY2FuLT54c19pbmRleF9v bmx5ICYmCiAJCQkJICAgSXNNVkNDTGlrZVNuYXBzaG90KHNjYW4tPnhzX3NuYXBzaG90KSAm JgogCQkJCSAgIHNjYW4tPmhlYXBSZWxhdGlvbiAhPSBOVUxMKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90YWJsZS90YWJsZWFtLmMKaW5kZXggMTJjMjY3NGNiZDcuLmYwNWNhYmM4YzY1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKQEAgLTI0MiwxOSArMjQyLDMxIEBAIGJv b2wKIHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlX2NoZWNrKFJlbGF0aW9uIHJlbCwKIAkJCQkJ CQkgIEl0ZW1Qb2ludGVyIHRpZCwKIAkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAotCQkJ CQkJCSAgYm9vbCAqYWxsX2RlYWQpCisJCQkJCQkJICBib29sICphbGxfZGVhZCwKKwkJCQkJ CQkgIGJvb2wgKmhvdF9pbmRleGVkX3JlY2hlY2tfb3V0LAorCQkJCQkJCSAgVHVwbGVUYWJs ZVNsb3QgKmtlZXBfc2xvdCkKIHsKIAlJbmRleEZldGNoVGFibGVEYXRhICpzY2FuOwogCVR1 cGxlVGFibGVTbG90ICpzbG90OwogCWJvb2wJCWNhbGxfYWdhaW4gPSBmYWxzZTsKIAlib29s CQlmb3VuZDsKIAotCXNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShyZWwsIE5VTEwpOworCXNs b3QgPSBrZWVwX3Nsb3QgPyBrZWVwX3Nsb3QgOiB0YWJsZV9zbG90X2NyZWF0ZShyZWwsIE5V TEwpOwogCXNjYW4gPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihyZWwsIFNPX05PTkUpOwog CWZvdW5kID0gdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoc2NhbiwgdGlkLCBzbmFwc2hvdCwg c2xvdCwgJmNhbGxfYWdhaW4sCiAJCQkJCQkJCQlhbGxfZGVhZCk7CisKKwkvKgorCSAqIFN1 cmZhY2UgdGhlIHRhYmxlIEFNJ3MgSE9UL1NJVSByZWNoZWNrIHNpZ25hbCB0byB0aGUgY2Fs bGVyICh0aGUgaW5kZXgKKwkgKiBBTSwgd2hpY2ggcmVjaGVja3MgdGhlIGFycml2aW5nIGxl YWYga2V5IGFnYWluc3QgdGhlIGxpdmUgdHVwbGUpOyB0aGUKKwkgKiBzY2FuIGlzIGZyZWVk IGJlbG93LCBzbyBjb3B5IGl0IG91dC4KKwkgKi8KKwlpZiAoaG90X2luZGV4ZWRfcmVjaGVj a19vdXQgIT0gTlVMTCkKKwkJKmhvdF9pbmRleGVkX3JlY2hlY2tfb3V0ID0gZm91bmQgJiYg c2Nhbi0+eHNfaG90X2luZGV4ZWRfcmVjaGVjazsKKwogCXRhYmxlX2luZGV4X2ZldGNoX2Vu ZChzY2FuKTsKLQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworCWlmIChr ZWVwX3Nsb3QgPT0gTlVMTCkKKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90 KTsKIAogCXJldHVybiBmb3VuZDsKIH0KQEAgLTM2MSw4ICszNzMsNyBAQCB2b2lkCiBzaW1w bGVfdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwK IAkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkgIFNuYXBzaG90IHNuYXBz aG90LAotCQkJCQkJICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywKLQkJ CQkJCSAgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCisJCQkJCQkgIEJpdG1h cHNldCAqKm1vZGlmaWVkX2F0dHJzKQogewogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAJVE1fRmFp bHVyZURhdGEgdG1mZDsKQEAgLTM3Myw4ICszODQsNyBAQCBzaW1wbGVfdGFibGVfdHVwbGVf dXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwKIAkJCQkJCQkJMCwgc25h cHNob3QsIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJdHJ1ZSAvKiB3YWl0IGZvciBjb21t aXQgKi8gLAogCQkJCQkJCQkmdG1mZCwgJmxvY2ttb2RlLAotCQkJCQkJCQltb2RpZmllZF9p ZHhfYXR0cnMsCi0JCQkJCQkJCXVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJbW9kaWZpZWRf YXR0cnMpOwogCiAJc3dpdGNoIChyZXN1bHQpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleGluZy5j CmluZGV4IGZkN2QyZWMwZTNhLi5lZmQ4YTE5YzIyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhp bmcuYwpAQCAtMTgsMTEgKzE4LDE0IEBACiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCiAj aW5jbHVkZSAiYWNjZXNzL2hlYXBhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFp bHMuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy94 YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgogI2luY2x1ZGUgImNhdGFsb2cv aW5kZXhpbmcuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgorI2luY2x1ZGUg Im5vZGVzL2JpdG1hcHNldC5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUg InV0aWxzL3JlbGNhY2hlLmgiCiAKIAogLyoKQEAgLTY5LDExICs3MiwxNyBAQCBDYXRhbG9n Q2xvc2VJbmRleGVzKENhdGFsb2dJbmRleFN0YXRlIGluZHN0YXRlKQogICoKICAqIFRoaXMg c2hvdWxkIGJlIGNhbGxlZCBmb3IgZWFjaCBpbnNlcnRlZCBvciB1cGRhdGVkIGNhdGFsb2cg dHVwbGUuCiAgKgotICogVGhpcyBpcyBlZmZlY3RpdmVseSBhIGN1dC1kb3duIHZlcnNpb24g b2YgRXhlY0luc2VydEluZGV4VHVwbGVzLgorICogVGhpcyBpcyBlZmZlY3RpdmVseSBhIGN1 dC1kb3duIHZlcnNpb24gb2YgRXhlY0luc2VydEluZGV4VHVwbGVzLiAgRm9yCisgKiBVUERB VEUgcGF0aHMgdGhlIGNhbGxlciBzdXBwbGllcyB1cGRhdGVfYWxsX2luZGV4ZXMgKGZyb20K KyAqIHRhYmxlX3R1cGxlX3VwZGF0ZSAvIHNpbXBsZV9oZWFwX3VwZGF0ZSkgc28gd2UgY2Fu IHRlbGwgd2hpY2ggaW5kZXhlcworICogYWN0dWFsbHkgbmVlZCBhIG5ldyBlbnRyeTogdXBk YXRlX2FsbF9pbmRleGVzIGlzIHRydWUgZm9yIGEgZnJlc2ggaW5zZXJ0IG9yCisgKiBhIG5v bi1IT1QgdXBkYXRlIChldmVyeSBpbmRleCBnZXRzIGFuIGVudHJ5KSwgZmFsc2UgZm9yIGEg Y2xhc3NpYy1IT1QKKyAqIGNhdGFsb2cgdXBkYXRlIChub24tc3VtbWFyaXppbmcgaW5kZXhl cyBhcmUgc2tpcHBlZCwgc2luY2UgdGhlaXIgZXhpc3RpbmcKKyAqIGVudHJpZXMgc3RpbGwg cmVzb2x2ZSB0aGUgY2hhaW4pLgogICovCiBzdGF0aWMgdm9pZAogQ2F0YWxvZ0luZGV4SW5z ZXJ0KENhdGFsb2dJbmRleFN0YXRlIGluZHN0YXRlLCBIZWFwVHVwbGUgaGVhcFR1cGxlLAot CQkJCSAgIFRVX1VwZGF0ZUluZGV4ZXMgdXBkYXRlSW5kZXhlcykKKwkJCQkgICBib29sIHVw ZGF0ZV9hbGxfaW5kZXhlcykKIHsKIAlpbnQJCQlpOwogCWludAkJCW51bUluZGV4ZXM7CkBA IC04MywyMCArOTIsNiBAQCBDYXRhbG9nSW5kZXhJbnNlcnQoQ2F0YWxvZ0luZGV4U3RhdGUg aW5kc3RhdGUsIEhlYXBUdXBsZSBoZWFwVHVwbGUsCiAJSW5kZXhJbmZvICoqaW5kZXhJbmZv QXJyYXk7CiAJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJYm9vbAkJaXNudWxs W0lOREVYX01BWF9LRVlTXTsKLQlib29sCQlvbmx5U3VtbWFyaXplZCA9ICh1cGRhdGVJbmRl eGVzID09IFRVX1N1bW1hcml6aW5nKTsKLQotCS8qCi0JICogSE9UIHVwZGF0ZSBkb2VzIG5v dCByZXF1aXJlIGluZGV4IGluc2VydHMuIEJ1dCB3aXRoIGFzc2VydHMgZW5hYmxlZCB3ZQot CSAqIHdhbnQgdG8gY2hlY2sgdGhhdCBpdCdkIGJlIGxlZ2FsIHRvIGN1cnJlbnRseSBpbnNl cnQgaW50byB0aGUKLQkgKiB0YWJsZS9pbmRleC4KLQkgKi8KLSNpZm5kZWYgVVNFX0FTU0VS VF9DSEVDS0lORwotCWlmIChIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBUdXBsZSkgJiYgIW9u bHlTdW1tYXJpemVkKQotCQlyZXR1cm47Ci0jZW5kaWYKLQotCS8qIFdoZW4gb25seSB1cGRh dGluZyBzdW1tYXJpemVkIGluZGV4ZXMsIHRoZSB0dXBsZSBoYXMgdG8gYmUgSE9ULiAqLwot CUFzc2VydCgoIW9ubHlTdW1tYXJpemVkKSB8fCBIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBU dXBsZSkpOwogCiAJLyoKIAkgKiBHZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgc3RhdGUgc3Ry dWN0dXJlLiAgRmFsbCBvdXQgaWYgbm90aGluZyB0byBkby4KQEAgLTEyMCw2ICsxMTUsNyBA QCBDYXRhbG9nSW5kZXhJbnNlcnQoQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUsIEhlYXBU dXBsZSBoZWFwVHVwbGUsCiAJewogCQlJbmRleEluZm8gICppbmRleEluZm87CiAJCVJlbGF0 aW9uCWluZGV4OworCQlib29sCQlpbmRleF91bmNoYW5nZWQ7CiAKIAkJaW5kZXhJbmZvID0g aW5kZXhJbmZvQXJyYXlbaV07CiAJCWluZGV4ID0gcmVsYXRpb25EZXNjc1tpXTsKQEAgLTEz OCwyMCArMTM0LDE2IEBAIENhdGFsb2dJbmRleEluc2VydChDYXRhbG9nSW5kZXhTdGF0ZSBp bmRzdGF0ZSwgSGVhcFR1cGxlIGhlYXBUdXBsZSwKIAkJQXNzZXJ0KGluZGV4LT5yZF9pbmRl eC0+aW5kaW1tZWRpYXRlKTsKIAkJQXNzZXJ0KGluZGV4SW5mby0+aWlfTnVtSW5kZXhLZXlB dHRycyAhPSAwKTsKIAotCQkvKiBzZWUgZWFybGllciBjaGVjayBhYm92ZSAqLwotI2lmZGVm IFVTRV9BU1NFUlRfQ0hFQ0tJTkcKLQkJaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1 cGxlKSAmJiAhb25seVN1bW1hcml6ZWQpCi0JCXsKLQkJCUFzc2VydCghUmVpbmRleElzUHJv Y2Vzc2luZ0luZGV4KFJlbGF0aW9uR2V0UmVsaWQoaW5kZXgpKSk7Ci0JCQljb250aW51ZTsK LQkJfQotI2VuZGlmCQkJCQkJCS8qIFVTRV9BU1NFUlRfQ0hFQ0tJTkcgKi8KLQogCQkvKgot CQkgKiBTa2lwIGluc2VydGlvbnMgaW50byBub24tc3VtbWFyaXppbmcgaW5kZXhlcyBpZiB3 ZSBvbmx5IG5lZWQgdG8KLQkJICogdXBkYXRlIHN1bW1hcml6aW5nIGluZGV4ZXMuCisJCSAq IERlY2lkZSB3aGV0aGVyIHRoaXMgaW5kZXggbmVlZHMgYSBuZXcgZW50cnkuICBPbiBJTlNF UlQgb3IgYQorCQkgKiBub24tSE9UIHVwZGF0ZSAodXBkYXRlX2FsbF9pbmRleGVzKSBldmVy eSBpbmRleCBnZXRzIG9uZS4gIE9uIGEKKwkJICogY2xhc3NpYy1IT1QgY2F0YWxvZyB1cGRh dGUgbm8gaW5kZXhlZCBhdHRyaWJ1dGUgY2hhbmdlZCwgc28gdGhlCisJCSAqIG5vbi1zdW1t YXJpemluZyBpbmRleGVzIGFyZSBza2lwcGVkIChzdW1tYXJpemluZyBpbmRleGVzIGFsd2F5 cyBnZXQKKwkJICogYSBjaGFuY2UgdG8gdXBkYXRlIHRoZWlyIGJsb2NrLWxldmVsIHN1bW1h cmllcyBiZWxvdykuCiAJCSAqLwotCQlpZiAob25seVN1bW1hcml6ZWQgJiYgIWluZGV4SW5m by0+aWlfU3VtbWFyaXppbmcpCisJCWluZGV4X3VuY2hhbmdlZCA9ICF1cGRhdGVfYWxsX2lu ZGV4ZXM7CisKKwkJaWYgKGluZGV4X3VuY2hhbmdlZCAmJiAhaW5kZXhJbmZvLT5paV9TdW1t YXJpemluZykKIAkJCWNvbnRpbnVlOwogCiAJCS8qCkBAIC0yNDAsNyArMjMyLDcgQEAgQ2F0 YWxvZ1R1cGxlSW5zZXJ0KFJlbGF0aW9uIGhlYXBSZWwsIEhlYXBUdXBsZSB0dXApCiAKIAlz aW1wbGVfaGVhcF9pbnNlcnQoaGVhcFJlbCwgdHVwKTsKIAotCUNhdGFsb2dJbmRleEluc2Vy dChpbmRzdGF0ZSwgdHVwLCBUVV9BbGwpOworCUNhdGFsb2dJbmRleEluc2VydChpbmRzdGF0 ZSwgdHVwLCB0cnVlKTsKIAlDYXRhbG9nQ2xvc2VJbmRleGVzKGluZHN0YXRlKTsKIH0KIApA QCAtMjYwLDcgKzI1Miw3IEBAIENhdGFsb2dUdXBsZUluc2VydFdpdGhJbmZvKFJlbGF0aW9u IGhlYXBSZWwsIEhlYXBUdXBsZSB0dXAsCiAKIAlzaW1wbGVfaGVhcF9pbnNlcnQoaGVhcFJl bCwgdHVwKTsKIAotCUNhdGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwgdHVwLCBUVV9BbGwp OworCUNhdGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwgdHVwLCB0cnVlKTsKIH0KIAogLyoK QEAgLTI5MSw3ICsyODMsNyBAQCBDYXRhbG9nVHVwbGVzTXVsdGlJbnNlcnRXaXRoSW5mbyhS ZWxhdGlvbiBoZWFwUmVsLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3QsCiAKIAkJdHVwbGUgPSBF eGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3RbaV0sIHRydWUsICZzaG91bGRfZnJlZSk7CiAJ CXR1cGxlLT50X3RhYmxlT2lkID0gc2xvdFtpXS0+dHRzX3RhYmxlT2lkOwotCQlDYXRhbG9n SW5kZXhJbnNlcnQoaW5kc3RhdGUsIHR1cGxlLCBUVV9BbGwpOworCQlDYXRhbG9nSW5kZXhJ bnNlcnQoaW5kc3RhdGUsIHR1cGxlLCB0cnVlKTsKIAogCQlpZiAoc2hvdWxkX2ZyZWUpCiAJ CQloZWFwX2ZyZWV0dXBsZSh0dXBsZSk7CkBAIC0zMTMsMTUgKzMwNSwxNSBAQCB2b2lkCiBD YXRhbG9nVHVwbGVVcGRhdGUoUmVsYXRpb24gaGVhcFJlbCwgY29uc3QgSXRlbVBvaW50ZXJE YXRhICpvdGlkLCBIZWFwVHVwbGUgdHVwKQogewogCUNhdGFsb2dJbmRleFN0YXRlIGluZHN0 YXRlOwotCVRVX1VwZGF0ZUluZGV4ZXMgdXBkYXRlSW5kZXhlcyA9IFRVX0FsbDsKKwlib29s CQl1cGRhdGVfYWxsX2luZGV4ZXM7CiAKIAlDYXRhbG9nVHVwbGVDaGVja0NvbnN0cmFpbnRz KGhlYXBSZWwsIHR1cCk7CiAKIAlpbmRzdGF0ZSA9IENhdGFsb2dPcGVuSW5kZXhlcyhoZWFw UmVsKTsKIAotCXNpbXBsZV9oZWFwX3VwZGF0ZShoZWFwUmVsLCBvdGlkLCB0dXAsICZ1cGRh dGVJbmRleGVzKTsKKwlzaW1wbGVfaGVhcF91cGRhdGUoaGVhcFJlbCwgb3RpZCwgdHVwLCAm dXBkYXRlX2FsbF9pbmRleGVzKTsKIAotCUNhdGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwg dHVwLCB1cGRhdGVJbmRleGVzKTsKKwlDYXRhbG9nSW5kZXhJbnNlcnQoaW5kc3RhdGUsIHR1 cCwgdXBkYXRlX2FsbF9pbmRleGVzKTsKIAlDYXRhbG9nQ2xvc2VJbmRleGVzKGluZHN0YXRl KTsKIH0KIApAQCAtMzM3LDEzICszMjksMTMgQEAgdm9pZAogQ2F0YWxvZ1R1cGxlVXBkYXRl V2l0aEluZm8oUmVsYXRpb24gaGVhcFJlbCwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlk LCBIZWFwVHVwbGUgdHVwLAogCQkJCQkJICAgQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUp CiB7Ci0JVFVfVXBkYXRlSW5kZXhlcyB1cGRhdGVJbmRleGVzID0gVFVfQWxsOworCWJvb2wJ CXVwZGF0ZV9hbGxfaW5kZXhlczsKIAogCUNhdGFsb2dUdXBsZUNoZWNrQ29uc3RyYWludHMo aGVhcFJlbCwgdHVwKTsKIAotCXNpbXBsZV9oZWFwX3VwZGF0ZShoZWFwUmVsLCBvdGlkLCB0 dXAsICZ1cGRhdGVJbmRleGVzKTsKKwlzaW1wbGVfaGVhcF91cGRhdGUoaGVhcFJlbCwgb3Rp ZCwgdHVwLCAmdXBkYXRlX2FsbF9pbmRleGVzKTsKIAotCUNhdGFsb2dJbmRleEluc2VydChp bmRzdGF0ZSwgdHVwLCB1cGRhdGVJbmRleGVzKTsKKwlDYXRhbG9nSW5kZXhJbnNlcnQoaW5k c3RhdGUsIHR1cCwgdXBkYXRlX2FsbF9pbmRleGVzKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv dG9hc3RpbmcuYwppbmRleCA0YWE1MmE0YmQyNS4uZTBiYzAxZjYzZDMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3RvYXN0aW5nLmMKQEAgLTMwNyw4ICszMDcsNiBAQCBjcmVhdGVfdG9hc3RfdGFibGUo UmVsYXRpb24gcmVsLCBPaWQgdG9hc3RPaWQsIE9pZCB0b2FzdEluZGV4T2lkLAogCWluZGV4 SW5mby0+aWlfVW5pcXVlID0gdHJ1ZTsKIAlpbmRleEluZm8tPmlpX051bGxzTm90RGlzdGlu Y3QgPSBmYWxzZTsKIAlpbmRleEluZm8tPmlpX1JlYWR5Rm9ySW5zZXJ0cyA9IHRydWU7Ci0J aW5kZXhJbmZvLT5paV9DaGVja2VkVW5jaGFuZ2VkID0gZmFsc2U7Ci0JaW5kZXhJbmZvLT5p aV9JbmRleFVuY2hhbmdlZCA9IGZhbHNlOwogCWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9 IGZhbHNlOwogCWluZGV4SW5mby0+aWlfQnJva2VuSG90Q2hhaW4gPSBmYWxzZTsKIAlpbmRl eEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyA9IDA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9yZXBhY2suYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jCmlu ZGV4IDFjNmU2OWQwYTE2Li4yOWFhZTY0ZTFmMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcmVwYWNrLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMK QEAgLTI2NzksMTQgKzI2NzksMTQgQEAgYXBwbHlfY29uY3VycmVudF91cGRhdGUoUmVsYXRp b24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqc3BpbGxlZF90dXBsZSwKIHsKIAlMb2NrVHVwbGVN b2RlIGxvY2ttb2RlOwogCVRNX0ZhaWx1cmVEYXRhIHRtZmQ7Ci0JVFVfVXBkYXRlSW5kZXhl cyB1cGRhdGVfaW5kZXhlczsKIAlCaXRtYXBzZXQgICptb2RpZmllZF9pZHhfYXR0cnM7CiAJ VE1fUmVzdWx0CXJlczsKIAogCS8qCiAJICogQ29tcHV0ZSB0aGUgc2V0IG9mIG1vZGlmaWVk IGluZGV4ZWQgYXR0cmlidXRlcyBieSBjb21wYXJpbmcgdGhlIG9sZAotCSAqIChvbmRpc2sp IGFuZCBuZXcgKHNwaWxsZWQpIHR1cGxlczsgaGVhcF91cGRhdGUgbmVlZHMgaXQgZm9yIGEg Y29ycmVjdAotCSAqIEhPVCBkZWNpc2lvbiAoYSBOVUxMIHNldCB3b3VsZCBsb29rIGxpa2Ug Im5vIGluZGV4ZWQgY29sdW1uIGNoYW5nZWQiKS4KKwkgKiAob25kaXNrKSBhbmQgbmV3IChz cGlsbGVkKSB0dXBsZXMuICBoZWFwX3VwZGF0ZSBuZWVkcyB0aGlzIHRvIG1ha2UgYQorCSAq IGNvcnJlY3QgSE9UIGRlY2lzaW9uOyB3aXRob3V0IGl0IG1vZGlmaWVkX2lkeF9hdHRycyB3 b3VsZCBiZSBOVUxMIGFuZAorCSAqIGhlYXBfdXBkYXRlIHdvdWxkIGFsd2F5cyB0cmVhdCB0 aGUgdXBkYXRlIGFzIEhPVC1lbGlnaWJsZS4KIAkgKi8KIAltb2RpZmllZF9pZHhfYXR0cnMg PSBFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhjaGdjeHQtPmNjX3JyaSwKIAkJCQkJCQkJ CQkJCQlvbmRpc2tfdHVwbGUsCkBAIC0yNzAxLDI5ICsyNzAxLDMzIEBAIGFwcGx5X2NvbmN1 cnJlbnRfdXBkYXRlKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKnNwaWxsZWRfdHVw bGUsCiAJCQkJCQkJIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90 LAogCQkJCQkJCSBmYWxzZSwKLQkJCQkJCQkgJnRtZmQsICZsb2NrbW9kZSwgbW9kaWZpZWRf aWR4X2F0dHJzLCAmdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCSAmdG1mZCwgJmxvY2ttb2Rl LAorCQkJCQkJCSAmbW9kaWZpZWRfaWR4X2F0dHJzKTsKIAlpZiAocmVzICE9IFRNX09rKQog CQllcmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJSQ09ERV9UX1JfU0VSSUFMSVpBVElP Tl9GQUlMVVJFKSwKIAkJCQllcnJtc2coImNvdWxkIG5vdCBhcHBseSBjb25jdXJyZW50ICVz IG9uIHJlbGF0aW9uIFwiJXNcIiIsCiAJCQkJCSAgICJVUERBVEUiLCBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpKSk7CiAKLQlpZiAodXBkYXRlX2luZGV4ZXMgIT0gVFVfTm9uZSkK KwlpZiAoY2hnY3h0LT5jY19ycmktPnJpX051bUluZGljZXMgPiAwICYmCisJCSFibXNfaXNf ZW1wdHkobW9kaWZpZWRfaWR4X2F0dHJzKSkKIAl7Ci0JCXVpbnQzMgkJZmxhZ3MgPSBFSUlU X0lTX1VQREFURTsKKwkJYm9vbAkJYWxsX2luZGV4ZXMgPQorCQkJYm1zX2lzX21lbWJlcihU YWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhlcywgbW9kaWZpZWRfaWR4X2F0dHJzKTsKIAotCQlp ZiAodXBkYXRlX2luZGV4ZXMgPT0gVFVfU3VtbWFyaXppbmcpCi0JCQlmbGFncyB8PSBFSUlU X09OTFlfU1VNTUFSSVpJTkc7CisJCUV4ZWNTZXRJbmRleFVuY2hhbmdlZChjaGdjeHQtPmNj X3JyaSwgbW9kaWZpZWRfaWR4X2F0dHJzKTsKIAkJRXhlY0luc2VydEluZGV4VHVwbGVzKGNo Z2N4dC0+Y2NfcnJpLAogCQkJCQkJCSAgY2hnY3h0LT5jY19lc3RhdGUsCi0JCQkJCQkJICBm bGFncywKKwkJCQkJCQkgIEVJSVRfSVNfVVBEQVRFIHwKKwkJCQkJCQkgIChhbGxfaW5kZXhl cyA/CisJCQkJCQkJICAgMCA6IEVJSVRfSVNfSE9UX0lOREVYRUQpLAogCQkJCQkJCSAgc3Bp bGxlZF90dXBsZSwKIAkJCQkJCQkgIE5JTCwgTlVMTCk7CiAJfQogCi0JcGdzdGF0X3Byb2dy ZXNzX2luY3JfcGFyYW0oUFJPR1JFU1NfUkVQQUNLX0hFQVBfVFVQTEVTX1VQREFURUQsIDEp OwotCiAJYm1zX2ZyZWUobW9kaWZpZWRfaWR4X2F0dHJzKTsKKworCXBnc3RhdF9wcm9ncmVz c19pbmNyX3BhcmFtKFBST0dSRVNTX1JFUEFDS19IRUFQX1RVUExFU19VUERBVEVELCAxKTsK IH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKaW5k ZXggZWIzODM4MTI5MDEuLmViYzQ0MjJhY2NjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj SW5kZXhpbmcuYwpAQCAtMTEzLDExICsxMTMsMTMgQEAKICNpbmNsdWRlICJjYXRhbG9nL2lu ZGV4LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJub2Rl cy9ub2RlRnVuY3MuaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdl L2xtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRl ICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9tdWx0aXJhbmdldHlwZXMu aCIKICNpbmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCisjaW5jbHVkZSAidXRpbHMvcmVs LmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogCiAvKiB3YWl0TW9kZSBhcmd1bWVu dCB0byBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnQoKSAqLwpAQCAtMTQw LDExICsxNDIsNiBAQCBzdGF0aWMgYm9vbCBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2Nv bnN0cmFpbnQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiBzdGF0aWMgYm9vbCBp bmRleF9yZWNoZWNrX2NvbnN0cmFpbnQoUmVsYXRpb24gaW5kZXgsIGNvbnN0IE9pZCAqY29u c3RyX3Byb2NzLAogCQkJCQkJCQkJIGNvbnN0IERhdHVtICpleGlzdGluZ192YWx1ZXMsIGNv bnN0IGJvb2wgKmV4aXN0aW5nX2lzbnVsbCwKIAkJCQkJCQkJCSBjb25zdCBEYXR1bSAqbmV3 X3ZhbHVlcyk7Ci1zdGF0aWMgYm9vbCBpbmRleF91bmNoYW5nZWRfYnlfdXBkYXRlKFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCi0JCQkJCQkJCQkgIEVTdGF0ZSAqZXN0YXRlLCBJ bmRleEluZm8gKmluZGV4SW5mbywKLQkJCQkJCQkJCSAgUmVsYXRpb24gaW5kZXhSZWxhdGlv bik7Ci1zdGF0aWMgYm9vbCBpbmRleF9leHByZXNzaW9uX2NoYW5nZWRfd2Fsa2VyKE5vZGUg Km5vZGUsCi0JCQkJCQkJCQkJCUJpdG1hcHNldCAqYWxsVXBkYXRlZENvbHMpOwogc3RhdGlj IHZvaWQgRXhlY1dpdGhvdXRPdmVybGFwc05vdEVtcHR5KFJlbGF0aW9uIHJlbCwgTmFtZURh dGEgYXR0bmFtZSwgRGF0dW0gYXR0dmFsLAogCQkJCQkJCQkJCWNoYXIgdHlwdHlwZSwgT2lk IGF0dHR5cGlkKTsKIApAQCAtMjc3LDI0ICsyNzQsMTIgQEAgRXhlY0Nsb3NlSW5kaWNlcyhS ZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvKQogICoJCWludG8gYWxsIHRoZSByZWxhdGlv bnMgaW5kZXhpbmcgdGhlIHJlc3VsdCByZWxhdGlvbgogICoJCXdoZW4gYSBoZWFwIHR1cGxl IGlzIGluc2VydGVkIGludG8gdGhlIHJlc3VsdCByZWxhdGlvbi4KICAqCi0gKgkJV2hlbiBF SUlUX0lTX1VQREFURSBpcyBzZXQgYW5kIEVJSVRfT05MWV9TVU1NQVJJWklORyBpc24ndCwK LSAqCQlleGVjdXRvciBpcyBwZXJmb3JtaW5nIGFuIFVQREFURSB0aGF0IGNvdWxkIG5vdCB1 c2UgYW4KLSAqCQlvcHRpbWl6YXRpb24gbGlrZSBoZWFwYW0ncyBIT1QgKGluIG1vcmUgZ2Vu ZXJhbCB0ZXJtcyBhCi0gKgkJY2FsbCB0byB0YWJsZV90dXBsZV91cGRhdGUoKSB0b29rIHBs YWNlIGFuZCBzZXQKLSAqCQkndXBkYXRlX2luZGV4ZXMnIHRvIFRVX0FsbCkuICBSZWNlaXZp bmcgdGhpcyBoaW50IG1ha2VzCi0gKgkJdXMgY29uc2lkZXIgaWYgd2Ugc2hvdWxkIHBhc3Mg ZG93biB0aGUgJ2luZGV4VW5jaGFuZ2VkJwotICoJCWhpbnQgaW4gdHVybi4gIFRoYXQncyBz b21ldGhpbmcgdGhhdCB3ZSBmaWd1cmUgb3V0IGZvcgotICoJCWVhY2ggaW5kZXhfaW5zZXJ0 KCkgY2FsbCBpZmYgRUlJVF9JU19VUERBVEUgaXMgc2V0LgotICoJCShXaGVuIHRoYXQgZmxh ZyBpcyBub3Qgc2V0IHdlIGFscmVhZHkga25vdyBub3QgdG8gcGFzcyB0aGUKLSAqCQloaW50 IHRvIGFueSBpbmRleC4pCi0gKgotICoJCUlmIEVJSVRfT05MWV9TVU1NQVJJWklORyBpcyBz ZXQsIGFuIGVxdWl2YWxlbnQgb3B0aW1pemF0aW9uIHRvCi0gKgkJSE9UIGhhcyBiZWVuIGFw cGxpZWQgYW5kIGFueSB1cGRhdGVkIGNvbHVtbnMgYXJlIGluZGV4ZWQKLSAqCQlvbmx5IGJ5 IHN1bW1hcml6aW5nIGluZGV4ZXMgKG9yIGluIG1vcmUgZ2VuZXJhbCB0ZXJtcyBhCi0gKgkJ Y2FsbCB0byB0YWJsZV90dXBsZV91cGRhdGUoKSB0b29rIHBsYWNlIGFuZCBzZXQKLSAqCQkn dXBkYXRlX2luZGV4ZXMnIHRvIFRVX1N1bW1hcml6aW5nKS4gV2UgY2FuIChhbmQgbXVzdCkK LSAqCQl0aGVyZWZvcmUgb25seSB1cGRhdGUgdGhlIGluZGV4ZXMgdGhhdCBoYXZlCi0gKgkJ J2Ftc3VtbWFyaXppbmcnID0gdHJ1ZS4KKyAqCQlXaGVuIEVJSVRfSVNfVVBEQVRFIGlzIHNl dCwgdGhlIGV4ZWN1dG9yIGlzIHBlcmZvcm1pbmcgYW4KKyAqCQlVUERBVEUuICBUaGUgcGVy LWluZGV4IGlpX0luZGV4VW5jaGFuZ2VkIGZsYWcgKHBvcHVsYXRlZCBieQorICoJCUV4ZWNT ZXRJbmRleFVuY2hhbmdlZCgpKSBpbmRpY2F0ZXMgd2hldGhlciBlYWNoIGluZGV4J3Mga2V5 CisgKgkJdmFsdWVzIGFyZSB1bmNoYW5nZWQgYnkgdGhpcyB1cGRhdGUuICBXaGVuIGlpX0lu ZGV4VW5jaGFuZ2VkCisgKgkJaXMgdHJ1ZSwgd2UgcGFzcyBpbmRleFVuY2hhbmdlZD10cnVl IHRvIGluZGV4X2luc2VydCgpIGFzIGEKKyAqCQloaW50IGZvciBib3R0b20tdXAgZGVsZXRp b24gb3B0aW1pemF0aW9uLgogICoKICAqCQlVbmlxdWUgYW5kIGV4Y2x1c2lvbiBjb25zdHJh aW50cyBhcmUgZW5mb3JjZWQgYXQgdGhlIHNhbWUKICAqCQl0aW1lLiAgVGhpcyByZXR1cm5z IGEgbGlzdCBvZiBpbmRleCBPSURzIGZvciBhbnkgdW5pcXVlIG9yCkBAIC0zNzAsMTEgKzM1 NSwzMiBAQCBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVs SW5mbywKIAkJCWNvbnRpbnVlOwogCiAJCS8qCi0JCSAqIFNraXAgcHJvY2Vzc2luZyBvZiBu b24tc3VtbWFyaXppbmcgaW5kZXhlcyBpZiB3ZSBvbmx5IHVwZGF0ZQotCQkgKiBzdW1tYXJp emluZyBpbmRleGVzCisJCSAqIFVQREFURSBza2lwIHJ1bGUuICBFeGVjU2V0SW5kZXhVbmNo YW5nZWQgcG9wdWxhdGVkCisJCSAqIGlpX0luZGV4TmVlZHNVcGRhdGUgZm9yIGV2ZXJ5IGlu ZGV4OiB0cnVlIHdoZW4gdGhlIHRhYmxlIEFNIHN0b3JlZAorCQkgKiBhbiBpbmRlcGVuZGVu dCBuZXcgdmVyc2lvbiwgb3Igd2hlbiBhbnkgYXR0cmlidXRlIHRoZSBpbmRleAorCQkgKiBy ZWZlcmVuY2VzIChrZXksIElOQ0xVREUsIGV4cHJlc3Npb24sIG9yIHBhcnRpYWwtcHJlZGlj YXRlIGNvbHVtbikKKwkJICogb3ZlcmxhcHMgdGhlIG1vZGlmaWVkLWF0dHJzIGJpdG1hcC4g IFdoZW4gaXQgaXMgZmFsc2Ugb24gYQorCQkgKiBub24tc3VtbWFyaXppbmcgaW5kZXggd2Ug c2tpcCB0aGUgaW5zZXJ0IGVudGlyZWx5OyB0aGUgSE9UIGNoYWluCisJCSAqIGtlZXBzIGV4 aXN0aW5nIGVudHJpZXMgcG9pbnRpbmcgYXQgdGhlIGNoYWluIHJvb3QuICBTdW1tYXJpemlu ZworCQkgKiBpbmRleGVzIGFsd2F5cyBnZXQgYSBjaGFuY2UgdG8gdXBkYXRlIHRoZWlyIGJs b2NrLWxldmVsIHN1bW1hcmllcy4KIAkJICovCi0JCWlmICgoZmxhZ3MgJiBFSUlUX09OTFlf U1VNTUFSSVpJTkcpICYmICFpbmRleEluZm8tPmlpX1N1bW1hcml6aW5nKQorCQlpZiAoKGZs YWdzICYgRUlJVF9JU19VUERBVEUpICYmCisJCQkhaW5kZXhJbmZvLT5paV9JbmRleE5lZWRz VXBkYXRlICYmCisJCQkhaW5kZXhJbmZvLT5paV9TdW1tYXJpemluZykKKwkJeworCQkJLyoK KwkJCSAqIFRoaXMgaW5kZXggd2FzIHNraXBwZWQgYmVjYXVzZSBpdHMga2V5IGF0dHJpYnV0 ZXMgZGlkIG5vdAorCQkJICogY2hhbmdlLiAgV2hlbiB0aGUgb3ZlcmFsbCB1cGRhdGUgaXMg YSBIT1QtaW5kZXhlZCB1cGRhdGUgKHNvbWUKKwkJCSAqIG90aGVyIG5vbi1zdW1tYXJpemlu ZyBpbmRleCBkaWQgY2hhbmdlKSwgcmVjb3JkIHRoZSBza2lwIG9uCisJCQkgKiB0aGlzIGlu ZGV4J3MgcGdzdGF0IGVudHJ5LiAgQSBjbGFzc2ljLUhPVCB1cGRhdGUgKG5vIGluZGV4ZWQK KwkJCSAqIGF0dHJpYnV0ZSBjaGFuZ2VkKSBkb2VzIG5vdCByZWFjaCB0aGlzIHBhdGggLS0K KwkJCSAqIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyBpcyBvbmx5IGludm9rZWQgd2hlbiBhdCBs ZWFzdCBvbmUgaW5kZXgKKwkJCSAqIG5lZWRzIGEgZnJlc2ggZW50cnkuCisJCQkgKi8KKwkJ CWlmIChmbGFncyAmIEVJSVRfSVNfSE9UX0lOREVYRUQpCisJCQkJcGdzdGF0X2NvdW50X2hv dF9pbmRleGVkX3VwZF9za2lwcGVkKGluZGV4UmVsYXRpb24pOwogCQkJY29udGludWU7CisJ CX0KIAogCQkvKiBDaGVjayBmb3IgcGFydGlhbCBpbmRleCAqLwogCQlpZiAoaW5kZXhJbmZv LT5paV9QcmVkaWNhdGUgIT0gTklMKQpAQCAtMzk3LDYgKzQwMywxNyBAQCBFeGVjSW5zZXJ0 SW5kZXhUdXBsZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQljb250aW51 ZTsKIAkJfQogCisJCS8qCisJCSAqIE5vbi1za2lwcGVkIGluZGV4IHVuZGVyIGEgSE9ULWlu ZGV4ZWQgdXBkYXRlOiB0aGlzIGluZGV4IGlzCisJCSAqIHJlY2VpdmluZyBhIGZyZXNoIGVu dHJ5IGJlY2F1c2Ugb25lIG9mIGl0cyBrZXkgYXR0cmlidXRlcyBjaGFuZ2VkLgorCQkgKiBT dW1tYXJpemluZyBpbmRleGVzIGFsd2F5cyBpbnNlcnQgcmVnYXJkbGVzcyBvZiB0aGUgSE9U LWluZGV4ZWQKKwkJICogZGVjaXNpb24gKHNhbWUgYXMgY2xhc3NpYyBIT1QpLCBzbyB0aGV5 IGFyZSBub3QgY291bnRlZCBoZXJlLiAgQ291bnQKKwkJICogb25seSBub3cgdGhhdCB0aGUg cGFydGlhbC1pbmRleCBwcmVkaWNhdGUgKGlmIGFueSkgaGFzIGFsc28gcGFzc2VkLAorCQkg KiBzbyBhIHByZWRpY2F0ZS1leGNsdWRlZCBwYXJ0aWFsIGluZGV4IGlzIG5vdCBjb3VudGVk IGFzIG1hdGNoZWQuCisJCSAqLworCQlpZiAoKGZsYWdzICYgRUlJVF9JU19IT1RfSU5ERVhF RCkgJiYgIWluZGV4SW5mby0+aWlfU3VtbWFyaXppbmcpCisJCQlwZ3N0YXRfY291bnRfaG90 X2luZGV4ZWRfdXBkX21hdGNoZWQoaW5kZXhSZWxhdGlvbik7CisKIAkJLyoKIAkJICogRm9y bUluZGV4RGF0dW0gZmlsbHMgaW4gaXRzIHZhbHVlcyBhbmQgaXNudWxsIHBhcmFtZXRlcnMg d2l0aCB0aGUKIAkJICogYXBwcm9wcmlhdGUgdmFsdWVzIGZvciB0aGUgY29sdW1uKHMpIG9m IHRoZSBpbmRleC4KQEAgLTQzNiwxNSArNDUzLDEzIEBAIEV4ZWNJbnNlcnRJbmRleFR1cGxl cyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJY2hlY2tVbmlxdWUgPSBVTklR VUVfQ0hFQ0tfUEFSVElBTDsKIAogCQkvKgotCQkgKiBUaGVyZSdzIGRlZmluaXRlbHkgZ29p bmcgdG8gYmUgYW4gaW5kZXhfaW5zZXJ0KCkgY2FsbCBmb3IgdGhpcwotCQkgKiBpbmRleC4g IElmIHdlJ3JlIGJlaW5nIGNhbGxlZCBhcyBwYXJ0IG9mIGFuIFVQREFURSBzdGF0ZW1lbnQs Ci0JCSAqIGNvbnNpZGVyIGlmIHRoZSAnaW5kZXhVbmNoYW5nZWQnID0gdHJ1ZSBoaW50IHNo b3VsZCBiZSBwYXNzZWQuCisJCSAqIEZvciBVUERBVEUgb3BlcmF0aW9ucywgdXNlIHRoZSBw ZXItaW5kZXggaWlfSW5kZXhVbmNoYW5nZWQgZmxhZworCQkgKiAocG9wdWxhdGVkIGJ5IEV4 ZWNTZXRJbmRleFVuY2hhbmdlZCkgdG8gaGludCB3aGV0aGVyIHRoZSBpbmRleAorCQkgKiB2 YWx1ZXMgYXJlIHVuY2hhbmdlZC4gIFRoaXMgaGVscHMgdGhlIGluZGV4IEFNIG9wdGltaXpl IGZvcgorCQkgKiBib3R0b20tdXAgZGVsZXRpb24gb2YgZHVwbGljYXRlIGluZGV4IGVudHJp ZXMuCiAJCSAqLwotCQlpbmRleFVuY2hhbmdlZCA9ICgoZmxhZ3MgJiBFSUlUX0lTX1VQREFU RSkgJiYKLQkJCQkJCSAgaW5kZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShyZXN1bHRSZWxJbmZv LAotCQkJCQkJCQkJCQkJCWVzdGF0ZSwKLQkJCQkJCQkJCQkJCQlpbmRleEluZm8sCi0JCQkJ CQkJCQkJCQkJaW5kZXhSZWxhdGlvbikpOworCQlpbmRleFVuY2hhbmdlZCA9IChmbGFncyAm IEVJSVRfSVNfVVBEQVRFKSA/CisJCQlpbmRleEluZm8tPmlpX0luZGV4VW5jaGFuZ2VkIDog ZmFsc2U7CiAKIAkJc2F0aXNmaWVzQ29uc3RyYWludCA9CiAJCQlpbmRleF9pbnNlcnQoaW5k ZXhSZWxhdGlvbiwgLyogaW5kZXggcmVsYXRpb24gKi8KQEAgLTcyMSw2ICs3MzYsNyBAQCBj aGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnQoUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiAJaW50CQkJaTsKIAlib29sCQljb25mbGljdDsKIAlib29sCQlmb3Vu ZF9zZWxmOworCWJvb2wJCWZvdW5kX3NlbGZfc2l1X2hpdDsKIAlFeHByQ29udGV4dCAqZWNv bnRleHQ7CiAJVHVwbGVUYWJsZVNsb3QgKmV4aXN0aW5nX3Nsb3Q7CiAJVHVwbGVUYWJsZVNs b3QgKnNhdmVfc2NhbnR1cGxlOwpAQCAtODIzLDYgKzgzOSw3IEBAIGNoZWNrX2V4Y2x1c2lv bl9vcl91bmlxdWVfY29uc3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwK IHJldHJ5OgogCWNvbmZsaWN0ID0gZmFsc2U7CiAJZm91bmRfc2VsZiA9IGZhbHNlOworCWZv dW5kX3NlbGZfc2l1X2hpdCA9IGZhbHNlOwogCWluZGV4X3NjYW4gPSBpbmRleF9iZWdpbnNj YW4oaGVhcCwgaW5kZXgsCiAJCQkJCQkJCSAmRGlydHlTbmFwc2hvdCwgTlVMTCwgaW5kbmtl eWF0dHMsIDAsCiAJCQkJCQkJCSBTT19OT05FKTsKQEAgLTgzOCwxNCArODU1LDQyIEBAIHJl dHJ5OgogCQljaGFyCSAgICplcnJvcl9leGlzdGluZzsKIAogCQkvKgotCQkgKiBJZ25vcmUg dGhlIGVudHJ5IGZvciB0aGUgdHVwbGUgd2UncmUgdHJ5aW5nIHRvIGNoZWNrLgorCQkgKiBJ Z25vcmUgdGhlIGVudHJ5IGZvciB0aGUgdHVwbGUgd2UncmUgdHJ5aW5nIHRvIGNoZWNrLiAg V2l0aCBIT1QtCisJCSAqIGluZGV4ZWQgKGhvdC1pbmRleGVkKSB1cGRhdGVzLCBzZXZlcmFs IGluZGV4IGVudHJpZXMgbWF5IGNoYWluLWxlYWQKKwkJICogdG8gdGhlIHNhbWUgaGVhcCB0 dXBsZSAoYSBzdGFsZSBlbnRyeSBmb3IgdGhlIG9sZCBrZXkgYW5kIGEgZnJlc2gKKwkJICog ZW50cnkgZm9yIHRoZSBuZXcga2V5KS4gIFRoZXkgYWxsIHJlc29sdmUgdG8gdGhlIHNhbWUg VElEIGhlcmUgYW5kCisJCSAqIG11c3QgYWxsIGJlIHRyZWF0ZWQgYXMgInNlbGYiLCBub3Qg YXMgYSBkdXBsaWNhdGUgZXJyb3IuICBXZQorCQkgKiB0b2xlcmF0ZSB0aGUgZHVwbGljYXRl IHNlbGYgYXJyaXZhbCB3aGVuZXZlciAqZWl0aGVyKiB0aGlzCisJCSAqIGl0ZXJhdGlvbiBv ciBhbiBlYXJsaWVyIG9uZSBzYXcgeHNfaG90X2luZGV4ZWRfc3RhbGUgLS0gdGhlCisJCSAq IGNhbm9uaWNhbCBkaXJlY3QgZW50cnkgYW5kIHRoZSBzdGFsZSBjaGFpbi13YWxrIGVudHJp ZXMgY2FuIGFycml2ZQorCQkgKiBpbiBlaXRoZXIgb3JkZXIuCiAJCSAqLwogCQlpZiAoSXRl bVBvaW50ZXJJc1ZhbGlkKHR1cGxlaWQpICYmCiAJCQlJdGVtUG9pbnRlckVxdWFscyh0dXBs ZWlkLCAmZXhpc3Rpbmdfc2xvdC0+dHRzX3RpZCkpCiAJCXsKLQkJCWlmIChmb3VuZF9zZWxm KQkJLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8KKwkJCWlmIChmb3VuZF9zZWxmKQorCQkJewor CQkJCS8qCisJCQkJICogQSByZXBlYXQgc2VsZi1hcnJpdmFsIGlzIGxlZ2l0aW1hdGUgb25s eSBpbiB0aGUgSE9ULWluZGV4ZWQKKwkJCQkgKiBjYXNlOiB0aGUgY2Fub25pY2FsIGRpcmVj dCBlbnRyeSBwbHVzIG9uZSBvciBtb3JlIHN0YWxlCisJCQkJICogY2hhaW4td2FsayBlbnRy aWVzIGFsbCByZXNvbHZlIHRvIHRoaXMgVElELCBhbmQgdGhleSBtYXkKKwkJCQkgKiBhcnJp dmUgaW4gZWl0aGVyIG9yZGVyLiAgVG9sZXJhdGUgdGhlIHJlcGVhdCB3aGVuIGVpdGhlciB0 aGUKKwkJCQkgKiBjdXJyZW50IGFycml2YWwgaXMgc3RhbGUsIG9yIGFuIGVhcmxpZXIgYXJy aXZhbCBmb3IgdGhpcyBUSUQKKwkJCQkgKiB3YXMgKGNvdmVyaW5nIHRoZSBkaXJlY3QtZW50 cnktYWZ0ZXItc3RhbGUtZW50cnkgb3JkZXIpLiAgQQorCQkJCSAqIHJlcGVhdCB0aGF0IGlz IG5vbi1zdGFsZSB3aXRoIG5vIHN0YWxlIGFycml2YWwgc2VlbiBpcyBhCisJCQkJICogZ2Vu dWluZSBkdXBsaWNhdGUtVElEIGNvcnJ1cHRpb247IGtlZXAgcmFpc2luZyBvbiBpdC4KKwkJ CQkgKi8KKwkJCQlpZiAoaW5kZXhfc2Nhbi0+eHNfaG90X2luZGV4ZWRfc3RhbGUgfHwgZm91 bmRfc2VsZl9zaXVfaGl0KQorCQkJCXsKKwkJCQkJaWYgKGluZGV4X3NjYW4tPnhzX2hvdF9p bmRleGVkX3N0YWxlKQorCQkJCQkJZm91bmRfc2VsZl9zaXVfaGl0ID0gdHJ1ZTsKKwkJCQkJ Y29udGludWU7CisJCQkJfQogCQkJCWVsb2coRVJST1IsICJmb3VuZCBzZWxmIHR1cGxlIG11 bHRpcGxlIHRpbWVzIGluIGluZGV4IFwiJXNcIiIsCiAJCQkJCSBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShpbmRleCkpOworCQkJfQorCQkJaWYgKGluZGV4X3NjYW4tPnhzX2hvdF9pbmRl eGVkX3N0YWxlKQorCQkJCWZvdW5kX3NlbGZfc2l1X2hpdCA9IHRydWU7CiAJCQlmb3VuZF9z ZWxmID0gdHJ1ZTsKIAkJCWNvbnRpbnVlOwogCQl9CkBAIC04NjksNiArOTE0LDMxIEBAIHJl dHJ5OgogCQkJCQkJCQkgKiBjb25mbGljdCAqLwogCQl9CiAKKwkJLyoKKwkJICogSE9ULWlu ZGV4ZWQgY2hhaW5zIGNhbiByZWFjaCB0aGlzIGxvb3AgdmlhIGEgc3RhbGUgYnRyZWUgbGVh ZiBlbnRyeQorCQkgKiB3aG9zZSBrZXkgaXMgZGlmZmVyZW50IGZyb20gdGhlIGhlYXAgdHVw bGUncyBjdXJyZW50IGluZGV4LWZvcm0uCisJCSAqIGV4aXN0aW5nX3ZhbHVlcyBob2xkcyB0 aGUgY3VycmVudCBoZWFwIHR1cGxlJ3MgaW5kZXgtZm9ybQorCQkgKiAoRm9ybUluZGV4RGF0 dW0gYWJvdmUpLiAgQ29tcGFyZSBpdCBhZ2FpbnN0IG91ciBuZXcgdHVwbGUncyB2YWx1ZXMK KwkJICogdXNpbmcgdGhlIHNhbWUgY29uc3RyYWludCBvcGVyYXRvcnM7IGlmIHRoZXkgZG9u J3QgYWdyZWUsIHRoZQorCQkgKiBjaGFpbi13YWxrZWQgdHVwbGUgaXMgbm90IGFjdHVhbGx5 IGluIGNvbmZsaWN0IHdpdGggb3VyIGluc2VydGlvbgorCQkgKiAtLSBpdCBqdXN0IHNoYXJl ZCBhIFRJRCB3aXRoIGEgc3RhbGUgbGVhZiBlbnRyeSB3ZSBoYXBwZW5lZCB0byBzY2FuCisJ CSAqIHRocm91Z2guICBTa2lwIGl0LgorCQkgKgorCQkgKiBUaGlzIG1pcnJvcnMgX2J0X2No ZWNrX3VuaXF1ZSdzIEhPVC1pbmRleGVkIHJlY2hlY2sgcGF0aDsgZm9yCisJCSAqIGV4Y2x1 c2lvbiBjb25zdHJhaW50cyB0aGUgdXNlci1zdXBwbGllZCBvcGVyYXRvciBpbiBjb25zdHJf cHJvY3MKKwkJICogcmVwbGFjZXMgdGhlIGJ0cmVlIGVxdWFsaXR5IGNvbXBhcmF0b3IsIGFu ZAorCQkgKiBpbmRleF9yZWNoZWNrX2NvbnN0cmFpbnQgZG9lcyB0aGUgcmlnaHQgdGhpbmcg Zm9yIGVpdGhlci4KKwkJICovCisJCWlmIChpbmRleF9zY2FuLT54c19ob3RfaW5kZXhlZF9z dGFsZSkKKwkJeworCQkJaWYgKCFpbmRleF9yZWNoZWNrX2NvbnN0cmFpbnQoaW5kZXgsCisJ CQkJCQkJCQkJICBjb25zdHJfcHJvY3MsCisJCQkJCQkJCQkJICBleGlzdGluZ192YWx1ZXMs CisJCQkJCQkJCQkJICBleGlzdGluZ19pc251bGwsCisJCQkJCQkJCQkJICB2YWx1ZXMpKQor CQkJCWNvbnRpbnVlOwkJLyogc3RhbGUgY2hhaW4gaGl0LCBub3QgYSByZWFsIGNvbmZsaWN0 ICovCisJCX0KKwogCQkvKgogCQkgKiBBdCB0aGlzIHBvaW50IHdlIGhhdmUgZWl0aGVyIGEg Y29uZmxpY3Qgb3IgYSBwb3RlbnRpYWwgY29uZmxpY3QuCiAJCSAqCkBAIC0xMDA5LDE0OSAr MTA3OSw5NCBAQCBpbmRleF9yZWNoZWNrX2NvbnN0cmFpbnQoUmVsYXRpb24gaW5kZXgsIGNv bnN0IE9pZCAqY29uc3RyX3Byb2NzLAogfQogCiAvKgotICogQ2hlY2sgaWYgRXhlY0luc2Vy dEluZGV4VHVwbGVzKCkgc2hvdWxkIHBhc3MgaW5kZXhVbmNoYW5nZWQgaGludC4KKyAqIEV4 ZWNTZXRJbmRleFVuY2hhbmdlZAorICoKKyAqIFBvcHVsYXRlIHR3byBwZXItaW5kZXggZmxh Z3MgYWhlYWQgb2YgRXhlY0luc2VydEluZGV4VHVwbGVzOgorICoKKyAqICAgLSBpaV9JbmRl eE5lZWRzVXBkYXRlICh3aWRlKSBkcml2ZXMgdGhlIHNraXAgZGVjaXNpb24uICBJdCBpcyB0 cnVlIHdoZW4KKyAqICAgICB0aGUgdGFibGUgQU0gc3RvcmVkIGFuIGluZGVwZW5kZW50IG5l dyB2ZXJzaW9uICh3aG9sZS1yb3cgYXR0cmlidXRlCisgKiAgICAgcHJlc2VudCBpbiBtb2Rp ZmllZF9pZHhfYXR0cnMpIG9yIHdoZW4gYW55IGF0dHJpYnV0ZSB0aGUgaW5kZXgKKyAqICAg ICByZWZlcmVuY2VzIC0tIGtleSwgSU5DTFVERSwgZXhwcmVzc2lvbiwgb3IgcGFydGlhbC1w cmVkaWNhdGUgY29sdW1uLAorICogICAgIHBlciBSZWxhdGlvbkdldEluZGV4ZWRBdHRycygp IC0tIGNoYW5nZWQuICBBIG5vbi1zdW1tYXJpemluZyBpbmRleCBmb3IKKyAqICAgICB3aGlj aCB0aGlzIGlzIGZhbHNlIGlzIHNraXBwZWQ6IGl0cyBleGlzdGluZyBlbnRyeSBrZWVwcyBy ZXNvbHZpbmcgdGhlCisgKiAgICAgSE9UIGNoYWluLgogICoKLSAqIFdoZW4gdGhlIGV4ZWN1 dG9yIHBlcmZvcm1zIGFuIFVQREFURSB0aGF0IHJlcXVpcmVzIGEgbmV3IHJvdW5kIG9mIGlu ZGV4Ci0gKiB0dXBsZXMsIGRldGVybWluZSBpZiB3ZSBzaG91bGQgcGFzcyAnaW5kZXhVbmNo YW5nZWQnID0gdHJ1ZSBoaW50IGZvciBvbmUKLSAqIHNpbmdsZSBpbmRleC4KKyAqICAgLSBp aV9JbmRleFVuY2hhbmdlZCAobmFycm93KSBpcyB0aGUgaW5kZXhVbmNoYW5nZWQgaGludCB0 byBhbWluc2VydCwKKyAqICAgICBjb25zdW1lZCBieSBuYnRyZWUgZGVkdXBsaWNhdGlvbiAv IGJvdHRvbS11cCBkZWxldGlvbi4gIFBlciB0aGUKKyAqICAgICBoaXN0b3JpY2FsIHJ1bGUg aXQgY291bnRzIG9ubHkga2V5IGNvbHVtbnM7IElOQ0xVREUgYW5kIHByZWRpY2F0ZQorICog ICAgIGNvbHVtbnMgYXJlIGRlbGliZXJhdGVseSBpZ25vcmVkLCBhbmQgYW4gZXhwcmVzc2lv biBrZXkgaXMgdHJlYXRlZAorICogICAgIGNvbnNlcnZhdGl2ZWx5IGFzIHBvc3NpYmx5IGNo YW5nZWQuCiAgKi8KLXN0YXRpYyBib29sCi1pbmRleF91bmNoYW5nZWRfYnlfdXBkYXRlKFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sIEVTdGF0ZSAqZXN0YXRlLAotCQkJCQkJICBJ bmRleEluZm8gKmluZGV4SW5mbywgUmVsYXRpb24gaW5kZXhSZWxhdGlvbikKK3ZvaWQKK0V4 ZWNTZXRJbmRleFVuY2hhbmdlZChSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJ CQkgIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzKQogewotCUJpdG1hcHNl dCAgKnVwZGF0ZWRDb2xzOwotCUJpdG1hcHNldCAgKmV4dHJhVXBkYXRlZENvbHM7Ci0JQml0 bWFwc2V0ICAqYWxsVXBkYXRlZENvbHM7Ci0JYm9vbAkJaGFzZXhwcmVzc2lvbiA9IGZhbHNl OwotCUxpc3QJICAgKmlkeEV4cHJzOwotCi0JLyoKLQkgKiBDaGVjayBjYWNoZSBmaXJzdAot CSAqLwotCWlmIChpbmRleEluZm8tPmlpX0NoZWNrZWRVbmNoYW5nZWQpCi0JCXJldHVybiBp bmRleEluZm8tPmlpX0luZGV4VW5jaGFuZ2VkOwotCWluZGV4SW5mby0+aWlfQ2hlY2tlZFVu Y2hhbmdlZCA9IHRydWU7Ci0KLQkvKgotCSAqIENoZWNrIGZvciBpbmRleGVkIGF0dHJpYnV0 ZSBvdmVybGFwIHdpdGggdXBkYXRlZCBjb2x1bW5zLgotCSAqCi0JICogT25seSBkbyB0aGlz IGZvciBrZXkgY29sdW1ucy4gIEEgY2hhbmdlIHRvIGEgbm9uLWtleSBjb2x1bW4gd2l0aGlu IGFuCi0JICogSU5DTFVERSBpbmRleCBzaG91bGQgbm90IGJlIGNvdW50ZWQgaGVyZS4gIE5v bi1rZXkgY29sdW1uIHZhbHVlcyBhcmUKLQkgKiBvcGFxdWUgcGF5bG9hZCBzdGF0ZSB0byB0 aGUgaW5kZXggQU0sIGEgbGl0dGxlIGxpa2UgYW4gZXh0cmEgdGFibGUgVElELgotCSAqCi0J ICogTm90ZSB0aGF0IHJvdy1sZXZlbCBCRUZPUkUgdHJpZ2dlcnMgd29uJ3QgYWZmZWN0IG91 ciBiZWhhdmlvciwgc2luY2UKLQkgKiB0aGV5IGRvbid0IGFmZmVjdCB0aGUgdXBkYXRlZENv bHMgYml0bWFwcyBnZW5lcmFsbHkuICBJdCBkb2Vzbid0IHNlZW0KLQkgKiB3b3J0aCB0aGUg dHJvdWJsZSBvZiBjaGVja2luZyB3aGljaCBhdHRyaWJ1dGVzIHdlcmUgY2hhbmdlZCBkaXJl Y3RseS4KLQkgKi8KLQl1cGRhdGVkQ29scyA9IEV4ZWNHZXRVcGRhdGVkQ29scyhyZXN1bHRS ZWxJbmZvLCBlc3RhdGUpOwotCWV4dHJhVXBkYXRlZENvbHMgPSBFeGVjR2V0RXh0cmFVcGRh dGVkQ29scyhyZXN1bHRSZWxJbmZvLCBlc3RhdGUpOwotCWZvciAoaW50IGF0dHIgPSAwOyBh dHRyIDwgaW5kZXhJbmZvLT5paV9OdW1JbmRleEtleUF0dHJzOyBhdHRyKyspCi0JewotCQlp bnQJCQlrZXljb2wgPSBpbmRleEluZm8tPmlpX0luZGV4QXR0ck51bWJlcnNbYXR0cl07Ci0K LQkJaWYgKGtleWNvbCA8PSAwKQotCQl7Ci0JCQkvKgotCQkJICogU2tpcCBleHByZXNzaW9u cyBmb3Igbm93LCBidXQgcmVtZW1iZXIgdG8gZGVhbCB3aXRoIHRoZW0gbGF0ZXIKLQkJCSAq IG9uCi0JCQkgKi8KLQkJCWhhc2V4cHJlc3Npb24gPSB0cnVlOwotCQkJY29udGludWU7Ci0J CX0KKwlpbnQJCQludW1JbmRpY2VzID0gcmVzdWx0UmVsSW5mby0+cmlfTnVtSW5kaWNlczsK KwlJbmRleEluZm8gKippbmRleEluZm9BcnJheSA9IHJlc3VsdFJlbEluZm8tPnJpX0luZGV4 UmVsYXRpb25JbmZvOworCVJlbGF0aW9uUHRyIGluZGV4RGVzY3MgPSByZXN1bHRSZWxJbmZv LT5yaV9JbmRleFJlbGF0aW9uRGVzY3M7CisJYm9vbAkJYWxsX2luZGV4ZXM7CiAKLQkJaWYg KGJtc19pc19tZW1iZXIoa2V5Y29sIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51 bWJlciwKLQkJCQkJCSAgdXBkYXRlZENvbHMpIHx8Ci0JCQlibXNfaXNfbWVtYmVyKGtleWNv bCAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCi0JCQkJCQkgIGV4dHJh VXBkYXRlZENvbHMpKQotCQl7Ci0JCQkvKiBDaGFuZ2VkIGtleSBjb2x1bW4gLS0gZG9uJ3Qg aGludCBmb3IgdGhpcyBpbmRleCAqLwotCQkJaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdl ZCA9IGZhbHNlOwotCQkJcmV0dXJuIGZhbHNlOwotCQl9Ci0JfQotCi0JLyoKLQkgKiBXaGVu IHdlIGdldCB0aGlzIGZhciBhbmQgaW5kZXggaGFzIG5vIGV4cHJlc3Npb25zLCByZXR1cm4g dHJ1ZSBzbyB0aGF0Ci0JICogaW5kZXhfaW5zZXJ0KCkgY2FsbCB3aWxsIGdvIG9uIHRvIHBh c3MgJ2luZGV4VW5jaGFuZ2VkJyA9IHRydWUgaGludC4KLQkgKgotCSAqIFRoZSBfYWJzZW5j ZV8gb2YgYW4gaW5kZXhlZCBrZXkgYXR0cmlidXRlIHRoYXQgb3ZlcmxhcHMgd2l0aCB1cGRh dGVkCi0JICogYXR0cmlidXRlcyAoaW4gYWRkaXRpb24gdG8gdGhlIHRvdGFsIGFic2VuY2Ug b2YgaW5kZXhlZCBleHByZXNzaW9ucykKLQkgKiBzaG93cyB0aGF0IHRoZSBpbmRleCBhcyBh IHdob2xlIGlzIGxvZ2ljYWxseSB1bmNoYW5nZWQgYnkgVVBEQVRFLgotCSAqLwotCWlmICgh aGFzZXhwcmVzc2lvbikKLQl7Ci0JCWluZGV4SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgPSB0 cnVlOwotCQlyZXR1cm4gdHJ1ZTsKLQl9CisJaWYgKG51bUluZGljZXMgPT0gMCkKKwkJcmV0 dXJuOwogCiAJLyoKLQkgKiBOZWVkIHRvIHBhc3Mgb25seSBvbmUgYm1zIHRvIGV4cHJlc3Np b25fdHJlZV93YWxrZXIgaGVscGVyIGZ1bmN0aW9uLgotCSAqIEF2b2lkIGFsbG9jYXRpbmcg bWVtb3J5IGluIGNvbW1vbiBjYXNlIHdoZXJlIHRoZXJlIGFyZSBubyBleHRyYSBjb2xzLgor CSAqIEEgd2hvbGUtcm93IGVudHJ5IGluIG1vZGlmaWVkX2lkeF9hdHRycyBtZWFucyB0aGUg dGFibGUgQU0gc3RvcmVkIGFuCisJICogaW5kZXBlbmRlbnQgbmV3IHZlcnNpb24gKGUuZy4g YXQgYSBuZXcgVElEKSwgc28gZXZlcnkgaW5kZXggbmVlZHMgYQorCSAqIGZyZXNoIGVudHJ5 IHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggYXR0cmlidXRlcyBjaGFuZ2VkLgogCSAqLwotCWlmICgh ZXh0cmFVcGRhdGVkQ29scykKLQkJYWxsVXBkYXRlZENvbHMgPSB1cGRhdGVkQ29sczsKLQll bHNlCi0JCWFsbFVwZGF0ZWRDb2xzID0gYm1zX3VuaW9uKHVwZGF0ZWRDb2xzLCBleHRyYVVw ZGF0ZWRDb2xzKTsKKwlhbGxfaW5kZXhlcyA9IGJtc19pc19tZW1iZXIoVGFibGVUdXBsZVVw ZGF0ZUFsbEluZGV4ZXMsIG1vZGlmaWVkX2lkeF9hdHRycyk7CiAKLQkvKgotCSAqIFdlIGhh dmUgdG8gd29yayBzbGlnaHRseSBoYXJkZXIgaW4gdGhlIGV2ZW50IG9mIGluZGV4ZWQgZXhw cmVzc2lvbnMsCi0JICogYnV0IHRoZSBwcmluY2lwbGUgaXMgdGhlIHNhbWUgYXMgYmVmb3Jl OiB0cnkgdG8gZmluZCBjb2x1bW5zIChWYXJzLAotCSAqIGFjdHVhbGx5KSB0aGF0IG92ZXJs YXAgd2l0aCBrbm93bi11cGRhdGVkIGNvbHVtbnMuCi0JICoKLQkgKiBJZiB3ZSBmaW5kIGFu eSBtYXRjaGluZyBWYXJzLCBkb24ndCBwYXNzIGhpbnQgZm9yIGluZGV4LiAgT3RoZXJ3aXNl Ci0JICogcGFzcyBoaW50LgotCSAqLwotCWlkeEV4cHJzID0gUmVsYXRpb25HZXRJbmRleEV4 cHJlc3Npb25zKGluZGV4UmVsYXRpb24pOwotCWhhc2V4cHJlc3Npb24gPSBpbmRleF9leHBy ZXNzaW9uX2NoYW5nZWRfd2Fsa2VyKChOb2RlICopIGlkeEV4cHJzLAotCQkJCQkJCQkJCQkJ CWFsbFVwZGF0ZWRDb2xzKTsKLQlsaXN0X2ZyZWUoaWR4RXhwcnMpOwotCWlmIChleHRyYVVw ZGF0ZWRDb2xzKQotCQlibXNfZnJlZShhbGxVcGRhdGVkQ29scyk7Ci0KLQlpZiAoaGFzZXhw cmVzc2lvbikKKwlmb3IgKGludCBpID0gMDsgaSA8IG51bUluZGljZXM7IGkrKykKIAl7Ci0J CWluZGV4SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgPSBmYWxzZTsKLQkJcmV0dXJuIGZhbHNl OwotCX0KKwkJSW5kZXhJbmZvICAqaW5kZXhJbmZvID0gaW5kZXhJbmZvQXJyYXlbaV07CisJ CVJlbGF0aW9uCWluZGV4RGVzYyA9IGluZGV4RGVzY3NbaV07CisJCUJpdG1hcHNldCAgKmlu ZGV4ZWRhdHRyczsKKwkJYm9vbAkJa2V5Y2hhbmdlZDsKIAotCS8qCi0JICogRGVsaWJlcmF0 ZWx5IGRvbid0IGNvbnNpZGVyIGluZGV4IHByZWRpY2F0ZXMuICBXZSBzaG91bGQgZXZlbiBn aXZlIHRoZQotCSAqIGhpbnQgd2hlbiByZXN1bHQgcmVsJ3MgInVwZGF0ZWQgdHVwbGUiIGhh cyBubyBjb3JyZXNwb25kaW5nIGluZGV4Ci0JICogdHVwbGUsIHdoaWNoIGlzIHBvc3NpYmxl IHdpdGggYSBwYXJ0aWFsIGluZGV4IChwcm92aWRlZCB0aGUgdXN1YWwKLQkgKiBjb25kaXRp b25zIGFyZSBtZXQpLgotCSAqLwotCWluZGV4SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgPSB0 cnVlOwotCXJldHVybiB0cnVlOwotfQotCi0vKgotICogSW5kZXhlZCBleHByZXNzaW9uIGhl bHBlciBmb3IgaW5kZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZSgpLgotICoKLSAqIFJldHVybnMg dHJ1ZSB3aGVuIFZhciB0aGF0IGFwcGVhcnMgd2l0aGluIGFsbFVwZGF0ZWRDb2xzIGxvY2F0 ZWQuCi0gKi8KLXN0YXRpYyBib29sCi1pbmRleF9leHByZXNzaW9uX2NoYW5nZWRfd2Fsa2Vy KE5vZGUgKm5vZGUsIEJpdG1hcHNldCAqYWxsVXBkYXRlZENvbHMpCi17Ci0JaWYgKG5vZGUg PT0gTlVMTCkKLQkJcmV0dXJuIGZhbHNlOworCQlpZiAoaW5kZXhEZXNjID09IE5VTEwpCisJ CQljb250aW51ZTsKIAotCWlmIChJc0Eobm9kZSwgVmFyKSkKLQl7Ci0JCVZhcgkJICAgKnZh ciA9IChWYXIgKikgbm9kZTsKKwkJLyoKKwkJICogU2tpcCBkZWNpc2lvbiAod2lkZSkuICBU aGUgaW5kZXggbmVlZHMgYSBuZXcgZW50cnkgaWYgdGhlIEFNIHN0b3JlZAorCQkgKiBhbiBp bmRlcGVuZGVudCB2ZXJzaW9uLCBvciBpZiBhbnkgYXR0cmlidXRlIGl0IHJlZmVyZW5jZXMg LS0ga2V5LAorCQkgKiBJTkNMVURFLCBleHByZXNzaW9uLCBvciBwYXJ0aWFsLXByZWRpY2F0 ZSBjb2x1bW4gLS0gY2hhbmdlZC4KKwkJICogUmVsYXRpb25HZXRJbmRleGVkQXR0cnMoKSBj b3ZlcnMgYWxsIG9mIHRob3NlLiAgKEFuIFVQREFURSB0aGF0CisJCSAqIHRvdWNoZXMgYW4g ZXhwcmVzc2lvbi1pbmRleCBhdHRyaWJ1dGUgbmV2ZXIgcmVhY2hlcyB0aGUgSE9ULWluZGV4 ZWQKKwkJICogcGF0aDogSGVhcFVwZGF0ZUhvdEFsbG93YWJsZSBkaXNxdWFsaWZpZXMgaXQs IHBlbmRpbmcKKwkJICogZXhwcmVzc2lvbi1hd2FyZSBtYWludGVuYW5jZS4pCisJCSAqLwor CQlpbmRleGVkYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4ZWRBdHRycyhpbmRleERlc2MpOwor CQlpbmRleEluZm8tPmlpX0luZGV4TmVlZHNVcGRhdGUgPQorCQkJYWxsX2luZGV4ZXMgfHwg Ym1zX292ZXJsYXAoaW5kZXhlZGF0dHJzLCBtb2RpZmllZF9pZHhfYXR0cnMpOworCQlibXNf ZnJlZShpbmRleGVkYXR0cnMpOwogCi0JCWlmIChibXNfaXNfbWVtYmVyKHZhci0+dmFyYXR0 bm8gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAotCQkJCQkJICBhbGxV cGRhdGVkQ29scykpCisJCS8qCisJCSAqIGFtaW5zZXJ0IGhpbnQgKG5hcnJvdykuICBpaV9J bmRleFVuY2hhbmdlZCBmZWVkcyBuYnRyZWUKKwkJICogZGVkdXBsaWNhdGlvbiAvIGJvdHRv bS11cCBkZWxldGlvbiBoZXVyaXN0aWNzIGFuZCwgcGVyIHRoZQorCQkgKiBoaXN0b3JpY2Fs IHJ1bGUsIGNvdW50cyBvbmx5IGtleSBjb2x1bW5zOiBhIGNoYW5nZSB0byBhbiBJTkNMVURF CisJCSAqIGNvbHVtbiBvciB0byBhIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlIGNvbHVtbiBk b2VzIG5vdCBkaXNxdWFsaWZ5CisJCSAqIHRoZSBoaW50LiAgQW4gZXhwcmVzc2lvbiBrZXkg Y29sdW1uIGlzIHRyZWF0ZWQgY29uc2VydmF0aXZlbHkgYXMKKwkJICogcG9zc2libHkgY2hh bmdlZC4KKwkJICovCisJCWtleWNoYW5nZWQgPSBmYWxzZTsKKwkJZm9yIChpbnQgayA9IDA7 IGsgPCBpbmRleEluZm8tPmlpX051bUluZGV4S2V5QXR0cnM7IGsrKykKIAkJewotCQkJLyog VmFyIHdhcyB1cGRhdGVkIC0tIGluZGljYXRlcyB0aGF0IHdlIHNob3VsZCBub3QgaGludCAq LwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KKwkJCUF0dHJOdW1iZXIJa2V5Y29sID0gaW5kZXhJ bmZvLT5paV9JbmRleEF0dHJOdW1iZXJzW2tdOwogCi0JCS8qIFN0aWxsIGhhdmVuJ3QgZm91 bmQgYSByZWFzb24gdG8gbm90IHBhc3MgdGhlIGhpbnQgKi8KLQkJcmV0dXJuIGZhbHNlOwor CQkJaWYgKGtleWNvbCA9PSAwKQkvKiBleHByZXNzaW9uIGtleTogYXNzdW1lIGl0IG1heSBo YXZlIGNoYW5nZWQgKi8KKwkJCXsKKwkJCQlrZXljaGFuZ2VkID0gdHJ1ZTsKKwkJCQlicmVh azsKKwkJCX0KKwkJCWlmIChibXNfaXNfbWVtYmVyKGtleWNvbCAtIEZpcnN0TG93SW52YWxp ZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJCQkJCQkJICBtb2RpZmllZF9pZHhfYXR0cnMpKQor CQkJeworCQkJCWtleWNoYW5nZWQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJ CWluZGV4SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgPSAha2V5Y2hhbmdlZDsKIAl9Ci0KLQly ZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dhbGtlcihub2RlLCBpbmRleF9leHByZXNzaW9uX2No YW5nZWRfd2Fsa2VyLAotCQkJCQkJCQkgIGFsbFVwZGF0ZWRDb2xzKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKaW5kZXggNjI2MmY3MWJkOTMu LjdiNWJiZGJmZDdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVw bGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24u YwpAQCAtMjE3LDYgKzIxNywxOCBAQCByZXRyeToKIAkvKiBUcnkgdG8gZmluZCB0aGUgdHVw bGUgKi8KIAl3aGlsZSAoaW5kZXhfZ2V0bmV4dF9zbG90KHNjYW4sIEZvcndhcmRTY2FuRGly ZWN0aW9uLCBvdXRzbG90KSkKIAl7CisJCS8qCisJCSAqIEEgSE9ULWluZGV4ZWQgdXBkYXRl IGNhbiBsZWF2ZSBhIHN0YWxlIGluZGV4IGxlYWY6IGFuIGVudHJ5IHdob3NlCisJCSAqIGtl eSBpcyBhIHByZS11cGRhdGUgdmFsdWUgYnV0IHdob3NlIFRJRCBjaGFpbi1yZXNvbHZlcyB0 byBhIGxpdmUKKwkJICogdHVwbGUgbm93IGNhcnJ5aW5nIGEgZGlmZmVyZW50IGtleS4gIFN1 Y2ggYSB0dXBsZSBpcyBub3QgdGhlCisJCSAqIHJlcGxpY2EtaWRlbnRpdHkgbWF0Y2ggd2Ug YXJlIGxvb2tpbmcgZm9yIChhbmQgdGhlIFBLL1JJIGZhc3QgcGF0aAorCQkgKiBiZWxvdyBz a2lwcyB0aGUgZXF1YWxpdHkgcmVjaGVjayB0aGF0IHdvdWxkIG90aGVyd2lzZSBjYXRjaCBp dCksIHNvCisJCSAqIGRyb3AgaXQgLS0gZXhhY3RseSBhcyBJbmRleFNjYW4vSW5kZXhPbmx5 U2NhbiBkby4gIFRoZSBmcmVzaCBsZWFmCisJCSAqIGZvciB0aGUgY3VycmVudCBrZXksIGlm IGFueSwgaXMgcmV0dXJuZWQgYnkgYSBsYXRlciBpdGVyYXRpb24uCisJCSAqLworCQlpZiAo c2Nhbi0+eHNfaG90X2luZGV4ZWRfc3RhbGUpCisJCQljb250aW51ZTsKKwogCQkvKgogCQkg KiBBdm9pZCBleHBlbnNpdmUgZXF1YWxpdHkgY2hlY2sgaWYgdGhlIGluZGV4IGlzIHByaW1h cnkga2V5IG9yCiAJCSAqIHJlcGxpY2EgaWRlbnRpdHkgaW5kZXguCkBAIC02NzgsNiArNjkw LDEwIEBAIFJlbGF0aW9uRmluZERlbGV0ZWRUdXBsZUluZm9CeUluZGV4KFJlbGF0aW9uIHJl bCwgT2lkIGlkeG9pZCwKIAkvKiBUcnkgdG8gZmluZCB0aGUgdHVwbGUgKi8KIAl3aGlsZSAo aW5kZXhfZ2V0bmV4dF9zbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzY2Fuc2xv dCkpCiAJeworCQkvKiBTa2lwIHN0YWxlIEhPVC1pbmRleGVkIGxlYXZlcyAoc2VlIFJlbGF0 aW9uRmluZFJlcGxUdXBsZUJ5SW5kZXgpLiAqLworCQlpZiAoc2Nhbi0+eHNfaG90X2luZGV4 ZWRfc3RhbGUpCisJCQljb250aW51ZTsKKwogCQkvKgogCQkgKiBBdm9pZCBleHBlbnNpdmUg ZXF1YWxpdHkgY2hlY2sgaWYgdGhlIGluZGV4IGlzIHByaW1hcnkga2V5IG9yCiAJCSAqIHJl cGxpY2EgaWRlbnRpdHkgaW5kZXguCkBAIC05MTEsNyArOTI3LDcgQEAgRXhlY1NpbXBsZVJl bGF0aW9uVXBkYXRlKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJYm9vbAkJc2tp cF90dXBsZSA9IGZhbHNlOwogCVJlbGF0aW9uCXJlbCA9IHJlc3VsdFJlbEluZm8tPnJpX1Jl bGF0aW9uRGVzYzsKIAlJdGVtUG9pbnRlciB0aWQgPSAmKHNlYXJjaHNsb3QtPnR0c190aWQp OwotCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRyczsKKwlCaXRtYXBzZXQgICptb2Rp ZmllZF9pZHhfYXR0cnMgPSBOVUxMOwogCiAJLyoKIAkgKiBXZSBzdXBwb3J0IG9ubHkgbm9u LXN5c3RlbSB0YWJsZXMsIHdpdGgKQEAgLTkzNCw3ICs5NTAsNiBAQCBFeGVjU2ltcGxlUmVs YXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAlpZiAoIXNraXBf dHVwbGUpCiAJewogCQlMaXN0CSAgICpyZWNoZWNrSW5kZXhlcyA9IE5JTDsKLQkJVFVfVXBk YXRlSW5kZXhlcyB1cGRhdGVfaW5kZXhlczsKIAkJTGlzdAkgICAqY29uZmxpY3RpbmRleGVz OwogCQlib29sCQljb25mbGljdCA9IGZhbHNlOwogCkBAIC05NTMsMjcgKzk2OCwzNCBAQCBF eGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywK IAkJbW9kaWZpZWRfaWR4X2F0dHJzID0gRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMocmVz dWx0UmVsSW5mbywKIAkJCQkJCQkJCQkJCQkJc2VhcmNoc2xvdCwgc2xvdCk7CiAKKwkJQXNz ZXJ0KCFibXNfaXNfbWVtYmVyKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLCBtb2RpZmll ZF9pZHhfYXR0cnMpKTsKIAkJc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShyZWwsIHRpZCwg c2xvdCwgZXN0YXRlLT5lc19zbmFwc2hvdCwKLQkJCQkJCQkJICBtb2RpZmllZF9pZHhfYXR0 cnMsICZ1cGRhdGVfaW5kZXhlcyk7Ci0JCWJtc19mcmVlKG1vZGlmaWVkX2lkeF9hdHRycyk7 Ci0KKwkJCQkJCQkJICAmbW9kaWZpZWRfaWR4X2F0dHJzKTsKIAogCQljb25mbGljdGluZGV4 ZXMgPSByZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXM7CiAKLQkJ aWYgKHJlc3VsdFJlbEluZm8tPnJpX051bUluZGljZXMgPiAwICYmICh1cGRhdGVfaW5kZXhl cyAhPSBUVV9Ob25lKSkKKwkJaWYgKHJlc3VsdFJlbEluZm8tPnJpX051bUluZGljZXMgPiAw ICYmCisJCQkhYm1zX2lzX2VtcHR5KG1vZGlmaWVkX2lkeF9hdHRycykpCiAJCXsKKwkJCWJv b2wJCWFsbF9pbmRleGVzID0KKwkJCQlibXNfaXNfbWVtYmVyKFRhYmxlVHVwbGVVcGRhdGVB bGxJbmRleGVzLCBtb2RpZmllZF9pZHhfYXR0cnMpOwogCQkJdWludDMyCQlmbGFncyA9IEVJ SVRfSVNfVVBEQVRFOwogCiAJCQlpZiAoY29uZmxpY3RpbmRleGVzICE9IE5JTCkKIAkJCQlm bGFncyB8PSBFSUlUX05PX0RVUEVfRVJST1I7Ci0JCQlpZiAodXBkYXRlX2luZGV4ZXMgPT0g VFVfU3VtbWFyaXppbmcpCi0JCQkJZmxhZ3MgfD0gRUlJVF9PTkxZX1NVTU1BUklaSU5HOwor CQkJaWYgKCFhbGxfaW5kZXhlcykKKwkJCQlmbGFncyB8PSBFSUlUX0lTX0hPVF9JTkRFWEVE OworCisJCQlFeGVjU2V0SW5kZXhVbmNoYW5nZWQocmVzdWx0UmVsSW5mbywgbW9kaWZpZWRf aWR4X2F0dHJzKTsKKwogCQkJcmVjaGVja0luZGV4ZXMgPSBFeGVjSW5zZXJ0SW5kZXhUdXBs ZXMocmVzdWx0UmVsSW5mbywKIAkJCQkJCQkJCQkJCSAgIGVzdGF0ZSwgZmxhZ3MsCiAJCQkJ CQkJCQkJCQkgICBzbG90LCBjb25mbGljdGluZGV4ZXMsCiAJCQkJCQkJCQkJCQkgICAmY29u ZmxpY3QpOwogCQl9CiAKKwkJYm1zX2ZyZWUobW9kaWZpZWRfaWR4X2F0dHJzKTsKKwogCQkv KgogCQkgKiBSZWZlciB0byB0aGUgY29tbWVudHMgYWJvdmUgdGhlIGNhbGwgdG8gQ2hlY2tB bmRSZXBvcnRDb25mbGljdCgpIGluCiAJCSAqIEV4ZWNTaW1wbGVSZWxhdGlvbkluc2VydCB0 byB1bmRlcnN0YW5kIHdoeSB0aGlzIGNoZWNrIGlzIGRvbmUgYXQKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCmluZGV4IGQ1MjAxMmU4YTY5Li5jZDBjYWVm MTM2NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNj YW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCkBA IC0xMDQsNiArMTA0LDcgQEAgSW5kZXhPbmx5TmV4dChJbmRleE9ubHlTY2FuU3RhdGUgKm5v ZGUpCiAKIAkJLyogU2V0IGl0IHVwIGZvciBpbmRleC1vbmx5IHNjYW4gKi8KIAkJbm9kZS0+ aW9zc19TY2FuRGVzYy0+eHNfd2FudF9pdHVwID0gdHJ1ZTsKKwkJbm9kZS0+aW9zc19TY2Fu RGVzYy0+eHNfaW5kZXhfb25seSA9IHRydWU7CiAJCW5vZGUtPmlvc3NfVk1CdWZmZXIgPSBJ bnZhbGlkQnVmZmVyOwogCiAJCS8qCkBAIC0xNzIsNiArMTczLDI1IEBAIEluZGV4T25seU5l eHQoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCQkJaWYgKCFpbmRleF9mZXRjaF9oZWFw KHNjYW5kZXNjLCBub2RlLT5pb3NzX1RhYmxlU2xvdCkpCiAJCQkJY29udGludWU7CQkvKiBu byB2aXNpYmxlIHR1cGxlLCB0cnkgbmV4dCBpbmRleCBlbnRyeSAqLwogCisJCQkvKgorCQkJ ICogSE9ULWluZGV4ZWQgc3RhbGUgZW50cnk6IGlmIHRoZSBjaGFpbiB3YWxrIHRvIHJlYWNo IHRoaXMgdHVwbGUKKwkJCSAqIGNyb3NzZWQgYSBob3QtaW5kZXhlZCBob3AgdGhhdCBjaGFu Z2VkIGFuIGF0dHJpYnV0ZSB0aGlzIGluZGV4CisJCQkgKiBjb3ZlcnMsIHRoZSBsZWFmIHdl IGFycml2ZWQgdGhyb3VnaCBpcyBzdGFsZS4gIEZvciBJT1Mgd2Ugc2VydmUKKwkJCSAqIHZh bHVlcyBvdXQgb2YgeHNfaXR1cCwgc28gYSBzdGFsZSBsZWFmIHdvdWxkIHN1cmZhY2UgdGhl IHdyb25nCisJCQkgKiB2YWx1ZXM7IGRyb3AgaXQuICBUaGUgZnJlc2ggZW50cnkgZm9yIHRo ZSBuZXcgdmFsdWUgcmV0dXJucyB0aGUKKwkJCSAqIHJvdyB3aXRoIGNvcnJlY3QgdmFsdWVz IHZpYSBpdHMgb3duIHBhdGguICBQcnVuZSBrZWVwcyBhbnkgcGFnZQorCQkJICogdGhhdCBj YW4gY2Fycnkgc3VjaCBhIHN0YWxlIGxlYWYgLS0gb25lIHdpdGggYSByZWRpcmVjdCB0byBh CisJCQkgKiBsaXZlIEhFQVBfSU5ERVhFRF9VUERBVEVEIHR1cGxlIC0tIG91dCBvZiB0aGUg dmlzaWJpbGl0eSBtYXAKKwkJCSAqIChzZWUgaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3Qp LCBzbyBhbiBpbmRleC1vbmx5IHNjYW4gYWx3YXlzCisJCQkgKiByZWFjaGVzIHRoaXMgaGVh cCBmZXRjaCB3aGVuIHN0YWxlbmVzcyBjb3VsZCBhcHBseS4KKwkJCSAqLworCQkJaWYgKHNj YW5kZXNjLT54c19ob3RfaW5kZXhlZF9zdGFsZSkKKwkJCXsKKwkJCQlJbnN0ckNvdW50Rmls dGVyZWQyKG5vZGUsIDEpOworCQkJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmlvc3NfVGFibGVT bG90KTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwogCQkJRXhlY0NsZWFyVHVwbGUobm9kZS0+ aW9zc19UYWJsZVNsb3QpOwogCiAJCQkvKgpAQCAtMjI5LDYgKzI0OSwxNiBAQCBJbmRleE9u bHlOZXh0KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJCX0KIAkJfQogCisJCS8qCisJ CSAqIE5vIEhPVC1pbmRleGVkIHN0YWxlbmVzcyBjaGVjayBpcyBuZWVkZWQgb24gdGhlIFZN LWFsbC12aXNpYmxlIHBhdGgKKwkJICogKHdoZXJlIHdlIHNraXBwZWQgdGhlIGhlYXAgZmV0 Y2gpLiAgUHJ1bmUga2VlcHMgYW55IHBhZ2UgdGhhdCBjb3VsZAorCQkgKiBjYXJyeSBhIHN0 YWxlIGxlYWYgLS0gb25lIHdpdGggYSByZWRpcmVjdCB0byBhIGxpdmUKKwkJICogSEVBUF9J TkRFWEVEX1VQREFURUQgdHVwbGUgLS0gb3V0IG9mIHRoZSB2aXNpYmlsaXR5IG1hcCwgc28g YW4KKwkJICogYWxsLXZpc2libGUgZW50cnkgbmV2ZXIgY3Jvc3NlZCBhIEhPVC9TSVUgaG9w LiAgKGluZGV4X2dldG5leHRfdGlkCisJCSAqIGFsc28gcmVzZXRzIHhzX2hvdF9pbmRleGVk X3N0YWxlIHBlciBlbnRyeSwgYW5kIG9ubHkgdGhlIGhlYXAgZmV0Y2gKKwkJICogaW4gaW5k ZXhfZmV0Y2hfaGVhcCBldmVyIHNldHMgaXQsIHNvIGl0IGNhbm5vdCBiZSBzZXQgaGVyZSBh bnl3YXkuKQorCQkgKi8KKwogCQkvKgogCQkgKiBXZSBkb24ndCBjdXJyZW50bHkgc3VwcG9y dCByZWNoZWNraW5nIE9SREVSIEJZIGRpc3RhbmNlcy4gIChJbgogCQkgKiBwcmluY2lwbGUs IGlmIHRoZSBpbmRleCBjYW4gc3VwcG9ydCByZXRyaWV2YWwgb2YgdGhlIG9yaWdpbmFsbHkK QEAgLTc3NSw2ICs4MDUsNyBAQCBFeGVjSW5kZXhPbmx5U2NhbkluaXRpYWxpemVEU00oSW5k ZXhPbmx5U2NhblN0YXRlICpub2RlLAogCQkJCQkJCQkgU2NhblJlbElzUmVhZE9ubHkoJm5v ZGUtPnNzKSA/CiAJCQkJCQkJCSBTT19ISU5UX1JFTF9SRUFEX09OTFkgOiBTT19OT05FKTsK IAlub2RlLT5pb3NzX1NjYW5EZXNjLT54c193YW50X2l0dXAgPSB0cnVlOworCW5vZGUtPmlv c3NfU2NhbkRlc2MtPnhzX2luZGV4X29ubHkgPSB0cnVlOwogCW5vZGUtPmlvc3NfVk1CdWZm ZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJLyoKQEAgLTgyNSw2ICs4NTYsNyBAQCBFeGVjSW5k ZXhPbmx5U2NhbkluaXRpYWxpemVXb3JrZXIoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlLAog CQkJCQkJCQkgU2NhblJlbElzUmVhZE9ubHkoJm5vZGUtPnNzKSA/CiAJCQkJCQkJCSBTT19I SU5UX1JFTF9SRUFEX09OTFkgOiBTT19OT05FKTsKIAlub2RlLT5pb3NzX1NjYW5EZXNjLT54 c193YW50X2l0dXAgPSB0cnVlOworCW5vZGUtPmlvc3NfU2NhbkRlc2MtPnhzX2luZGV4X29u bHkgPSB0cnVlOwogCiAJLyoKIAkgKiBJZiBubyBydW4tdGltZSBrZXlzIHRvIGNhbGN1bGF0 ZSBvciB0aGV5IGFyZSByZWFkeSwgZ28gYWhlYWQgYW5kIHBhc3MKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVJbmRleHNjYW4uYwppbmRleCAzOWY2NjkxZWUzNS4uZjMxNzZhY2QxNGYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKQEAgLTE1MSw2ICsxNTEsMjAg QEAgSW5kZXhOZXh0KEluZGV4U2NhblN0YXRlICpub2RlKQogCQkJfQogCQl9CiAKKwkJLyoK KwkJICogSE9ULWluZGV4ZWQgc3RhbGUgZW50cnk6IHRoZSBjaGFpbiB3ZSB3YWxrZWQgdG8g cmVhY2ggdGhpcyB0dXBsZQorCQkgKiBjcm9zc2VkIGEgaG90LWluZGV4ZWQgaG9wIHRoYXQg Y2hhbmdlZCBhbiBhdHRyaWJ1dGUgdGhpcyBpbmRleAorCQkgKiBjb3ZlcnMsIHNvIHRoZSBs ZWFmIGVudHJ5IHdlIGFycml2ZWQgdGhyb3VnaCBpcyBzdGFsZS4gIERyb3AgaXQ7CisJCSAq IHRoZSBmcmVzaCBlbnRyeSBpbnNlcnRlZCBmb3IgdGhlIG5ldyB2YWx1ZSByZXR1cm5zIHRo ZSByb3cgdGhyb3VnaAorCQkgKiBpdHMgb3duIHBhdGguICBTdGFsZW5lc3Mgd2FzIGRlY2lk ZWQgYnkgdGhlIGhlYXAgQU0gdmlhIHBlci1ob3AKKwkJICogbW9kaWZpZWQtYXR0cnMgYml0 bWFwcyAoc2VlIGhlYXBfaG90X3NlYXJjaF9idWZmZXIpLgorCQkgKi8KKwkJaWYgKHNjYW5k ZXNjLT54c19ob3RfaW5kZXhlZF9zdGFsZSkKKwkJeworCQkJSW5zdHJDb3VudEZpbHRlcmVk Mihub2RlLCAxKTsKKwkJCWNvbnRpbnVlOworCQl9CisKIAkJcmV0dXJuIHNsb3Q7CiAJfQog CkBAIC0yNzYsNiArMjkwLDE5IEBAIG5leHRfaW5kZXh0dXBsZToKIAkJCWNvbnRpbnVlOwog CQl9CiAKKwkJLyoKKwkJICogRHJvcCBhIEhPVC1pbmRleGVkIHN0YWxlIGxlYWYgZW50cnks IGV4YWN0bHkgYXMgSW5kZXhOZXh0IGRvZXMuICBUaGUKKwkJICogc3RhbGVuZXNzIHNpZ25h bCBpcyBhY2Nlc3MtbWV0aG9kIGFnbm9zdGljIChpbmRleGFtLmMgc2V0cyBpdCBmcm9tCisJ CSAqIHBlci1ob3AgbW9kaWZpZWQtYXR0cnMgb3ZlcmxhcCwgd2l0aCBubyBidHJlZSBnYXRp bmcpLCBzbyBhCisJCSAqIGRpc3RhbmNlLW9yZGVyZWQgR2lTVC9TUC1HaVNUIHNjYW4gdGhh dCByZWFjaGVzIHRoaXMgcGF0aCBjYW4gc2VlIGl0CisJCSAqIHRvbzsgdGhlIGZyZXNoIGVu dHJ5IGluc2VydGVkIGZvciB0aGUgbmV3IHZhbHVlIHJldHVybnMgdGhlIHJvdy4KKwkJICov CisJCWlmIChzY2FuZGVzYy0+eHNfaG90X2luZGV4ZWRfc3RhbGUpCisJCXsKKwkJCUluc3Ry Q291bnRGaWx0ZXJlZDIobm9kZSwgMSk7CisJCQlnb3RvIG5leHRfaW5kZXh0dXBsZTsKKwkJ fQorCiAJCS8qCiAJCSAqIElmIHRoZSBpbmRleCB3YXMgbG9zc3ksIHdlIGhhdmUgdG8gcmVj aGVjayB0aGUgaW5kZXggcXVhbHMgYW5kCiAJCSAqIE9SREVSIEJZIGV4cHJlc3Npb25zIHVz aW5nIHRoZSBmZXRjaGVkIHR1cGxlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5 VGFibGUuYwppbmRleCA5YjZmODc1N2ZhZS4uY2JmMTUyMTZmODYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC0xMzAsNyArMTMwLDE0IEBAIHR5cGVk ZWYgc3RydWN0IE1vZGlmeVRhYmxlQ29udGV4dAogdHlwZWRlZiBzdHJ1Y3QgVXBkYXRlQ29u dGV4dAogewogCWJvb2wJCWNyb3NzUGFydFVwZGF0ZTsJLyogd2FzIGl0IGEgY3Jvc3MtcGFy dGl0aW9uIHVwZGF0ZT8gKi8KLQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUluZGV4ZXM7IC8q IFdoaWNoIGluZGV4IHVwZGF0ZXMgYXJlIHJlcXVpcmVkPyAqLworCisJLyoKKwkgKiBTZXQg b2YgaW5kZXhlZCBhdHRyaWJ1dGVzIHRoZSBVUERBVEUgY2hhbmdlZCAoaW4vb3V0IGZvciB0 aGUgdGFibGUgQU0ncworCSAqIHVwZGF0ZSBjYWxsYmFjaykuICBQb3B1bGF0ZWQgYnkgRXhl Y1VwZGF0ZUFjdCBhbmQgY29uc3VtZWQgYnkKKwkgKiBFeGVjVXBkYXRlRXBpbG9ndWU7IHRo ZSBBTSBhZGRzIHRoZSB3aG9sZS1yb3cgYXR0cmlidXRlCisJICogKFRhYmxlVHVwbGVVcGRh dGVBbGxJbmRleGVzKSB3aGVuIGV2ZXJ5IGluZGV4IG5lZWRzIGEgZnJlc2ggZW50cnkuCisJ ICovCisJQml0bWFwc2V0ICAqbW9kaWZpZWRfYXR0cnM7CiAKIAkvKgogCSAqIExvY2sgbW9k ZSB0byBhY3F1aXJlIG9uIHRoZSBsYXRlc3QgdHVwbGUgdmVyc2lvbiBiZWZvcmUgcGVyZm9y bWluZwpAQCAtMjM4LDI1ICsyNDUsMjMgQEAgRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMo UmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJcmV0dXJuIE5VTEw7CiAKIAkvKgot CSAqIEdldCB0aGUgc2V0IG9mIGFsbCBhdHRyaWJ1dGVzIGFjcm9zcyBhbGwgaW5kZXhlcyBm b3IgdGhpcyByZWxhdGlvbiBmcm9tCi0JICogdGhlIHJlbGNhY2hlLCBpdCByZXR1cm5zIHVz IGEgY29weSBvZiB0aGUgYml0bWFwIHNvIHdlIGNhbiBtb2RpZnkgaXQuCisJICogRGV0ZXJt aW5lIHdoaWNoIGluZGV4ZWQgYXR0cmlidXRlcyBhY3R1YWxseSBjaGFuZ2VkIHZhbHVlIGJ5 IGNvbXBhcmluZworCSAqIHRoZSBvbGQgYW5kIG5ldyB0dXBsZXMgYXR0cmlidXRlLWJ5LWF0 dHJpYnV0ZSBvdmVyIHRoZSByZWxhdGlvbidzIGZ1bGwKKwkgKiBpbmRleGVkLWF0dHJpYnV0 ZSBzZXQuICBXZSBkZWxpYmVyYXRlbHkgZG8gTk9UIHRyeSB0byBuYXJyb3cgdGhlIHdvcmsK KwkgKiB1c2luZyB0aGUgU1FMIFVQREFURSdzIHRhcmdldCBsaXN0IChFeGVjR2V0QWxsVXBk YXRlZENvbHMpOiB0aGF0IGxpc3QKKwkgKiBkb2VzIG5vdCBjYXB0dXJlIGluZGV4ZWQgY29s dW1ucyBtdXRhdGVkIG91dHNpZGUgdGhlIFNFVCBjbGF1c2UsIHN1Y2gKKwkgKiBhcyBhIGNv bHVtbiByZXdyaXR0ZW4gYnkgYSBCRUZPUkUvSU5TVEVBRC1PRiB0cmlnZ2VyIHZpYQorCSAq IGhlYXBfbW9kaWZ5X3R1cGxlIChzZWUgdHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXIoKSBpbiB0 c2VhcmNoLnNxbCksIHRoZQorCSAqIGltcGxpY2l0IHRlbXBvcmFsIHJhbmdlIGNvbHVtbiBv ZiBhIEZPUiBQT1JUSU9OIE9GIHVwZGF0ZSwgb3IgdGhlCisJICogcHJlLWJ1aWx0IHR1cGxl cyBhcHBsaWVkIGJ5IFJFUEFDSyAoQ09OQ1VSUkVOVExZKSBhbmQgbG9naWNhbAorCSAqIHJl cGxpY2F0aW9uIHRocm91Z2ggYSBzeW50aGV0aWMgUmVzdWx0UmVsSW5mby4gIENvbXBhcmlu ZyB0aGUgYWN0dWFsCisJICogdHVwbGUgdmFsdWVzIGlzIGFsd2F5cyBjb3JyZWN0LgogCSAq Ci0JICogTm90ZTogV2UgaW50ZW50aW9uYWxseSBzY2FuIGFsbCBpbmRleGVkIGNvbHVtbnMg d2hlbiBsb29raW5nIGZvcgotCSAqIGNoYW5nZXMgcmF0aGVyIHRoYW4gcmVkdWNlIHRoYXQg c2V0IGJ5IGludGVyc2VjdGluZyBpdCB3aXRoCi0JICogRXhlY0dldEFsbFVwZGF0ZWRDb2xz KCkuICBEZXNpcHRlIHRoZSBuYW1lIGl0IHByb3ZpZGVzIHRoZSBzZXQgb2YKLQkgKiB0YXJn ZXRlZCBhdHRyaWJ1dGVzIGluIHRoZSBTUUwgdXNlZCBmb3IgdGhlIFVQREFURSBhbmQgYW55 IHRyaWdnZXJzLAotCSAqIGJ1dCB0aGF0IGRvZXNuJ3QgaW5jbHVkZSBhbnkgYXR0cmlidXRl cyB1cGRhdGVkIHVzaW5nCi0JICogaGVhcF9tb2RpZml5X3R1cGxlKCkuIFRoZXJlIGlzIG9u ZSB0ZXN0IGluIHRzZWFyY2guc3FsIHRoYXQgZG9lcyBqdXN0Ci0JICogdGhhdCwgbW9kaWZp ZXMgYW4gaW5kZXhlZCBhdHRyaWJ1dGUgdGhhdCBpc24ndCBzcGVjaWZpZWQgaW4gdGhlIFNR TCBhbmQKLQkgKiBzbyBpc24ndCBwcmVzZW50IGluIHRoYXQgYml0bWFwc2V0LgorCSAqIFJl bGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwIHJldHVybnMgYSBjb3B5IHdlIGFyZSBmcmVlIHRv IG11dGF0ZTsKKwkgKiBFeGVjQ29tcGFyZVNsb3RBdHRycyBkZWxldGVzIHRoZSBhdHRyaWJ1 dGVzIHRoYXQgZGlkIG5vdCBjaGFuZ2UgYW5kCisJICogcmV0dXJucyB0aGUgc3Vydml2aW5n ICJtb2RpZmllZCBpbmRleGVkIGF0dHJpYnV0ZXMiIHNldC4KIAkgKi8KIAlhdHRycyA9IFJl bGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9J TkRFWEVEKTsKLQotCS8qCi0JICogV2hlbiB0aGVyZSBhcmUgaW5kZXhlZCBhdHRyaWJ1dGVz IG1lbnRpb25lZCBpbiB0aGUgVVBEQVRFIHRoZW4gd2UgbmVlZAotCSAqIHRvIGZpbmQgdGhl IHN1YnNldCB0aGF0IGNoYW5nZWQgdmFsdWUuICBUaGF0J3MgdGhlCi0JICogIm1vZGlmaWVk X2lkeF9hdHRycyIuCi0JICovCiAJYXR0cnMgPSBFeGVjQ29tcGFyZVNsb3RBdHRycyhhdHRy cywgdHVwZGVzYywgb2xkX3R0cywgbmV3X3R0cyk7CiAKIAlyZXR1cm4gYXR0cnM7CkBAIC0y NTEzLDggKzI1MTgsOCBAQCBFeGVjVXBkYXRlQWN0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29u dGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAlib29sCQlwYXJ0aXRpb25f Y29uc3RyYWludF9mYWlsZWQ7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAotCS8qIFRoZSBzZXQg b2YgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIHRoYXQgdHJpZ2dlciBuZXcgaW5kZXgg ZW50cmllcyAqLwotCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRycyA9IE5VTEw7CisJ LyogUmVzZXQgYW55IHN0YXRlIGxlZnQgb3ZlciBmcm9tIGEgcHJldmlvdXMgY2FsbCAqLwor CXVwZGF0ZUN4dC0+bW9kaWZpZWRfYXR0cnMgPSBOVUxMOwogCiAJdXBkYXRlQ3h0LT5jcm9z c1BhcnRVcGRhdGUgPSBmYWxzZTsKIApAQCAtMjYzOCw3ICsyNjQzLDggQEAgbHJlcGxhY2U6 CiAJICogd2Ugd2lsbCBvdmVybG9vayBhdHRyaWJ1dGVzIGRpcmVjdGx5IG1vZGlmaWVkIGJ5 IGhlYXBfbW9kaWZ5X3R1cGxlKCkKIAkgKiB3aGljaCBhcmUgbm90IGtub3duIHRvIEV4ZWNH ZXRVcGRhdGVkQ29scygpLgogCSAqLwotCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4ZWNVcGRh dGVNb2RpZmllZElkeEF0dHJzKHJlc3VsdFJlbEluZm8sIG9sZFNsb3QsIHNsb3QpOworCXVw ZGF0ZUN4dC0+bW9kaWZpZWRfYXR0cnMgPQorCQlFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRy cyhyZXN1bHRSZWxJbmZvLCBvbGRTbG90LCBzbG90KTsKIAogCS8qCiAJICogQ2FsbCBpbnRv IHRoZSB0YWJsZSBBTSB0byB1cGRhdGUgdGhlIGhlYXAgdHVwbGUuCkBAIC0yNjQ5LDYgKzI2 NTUsMTUgQEAgbHJlcGxhY2U6CiAJICogZm9yIHJlZmVyZW50aWFsIGludGVncml0eSB1cGRh dGVzIGluIHRyYW5zYWN0aW9uLXNuYXBzaG90IG1vZGUKIAkgKiB0cmFuc2FjdGlvbnMuCiAJ ICovCisJLyoKKwkgKiBtb2RpZmllZF9hdHRycyBtYXkgbGVnaXRpbWF0ZWx5IGFscmVhZHkg Y29udGFpbiBUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhlcworCSAqIG9uIGlucHV0OiBhbiBp bmRleCB3aG9zZSBleHByZXNzaW9uIHJlZmVyZW5jZXMgYSB3aG9sZS1yb3cgVmFyIHJlY29y ZHMKKwkgKiBhdHRyaWJ1dGUgMCBpbiBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVELCBhbmQg RXhlY0NvbXBhcmVTbG90QXR0cnMga2VlcHMKKwkgKiBhdHRyaWJ1dGUgMCAod2hvc2UgYml0 bWFwIGluZGV4IGVxdWFscyB0aGUgc2VudGluZWwpIHRvIGZvcmNlIGFuCisJICogYWxsLWlu ZGV4IHVwZGF0ZS4gIFRoZSBBTSBhbHNvIHNldHMgdGhlIHNlbnRpbmVsIGFzIGFuIG91dHB1 dCBzaWduYWw7CisJICogZWl0aGVyIHdheSB0aGUgZXBpbG9ndWUgdHJlYXRzIHRoZSBzZW50 aW5lbCBhcyAidXBkYXRlIGFsbCBpbmRleGVzIiwgc28KKwkgKiBpdHMgcHJlc2VuY2UgaXMg aGFybWxlc3MgaGVyZS4KKwkgKi8KIAlyZXN1bHQgPSB0YWJsZV90dXBsZV91cGRhdGUocmVz dWx0UmVsYXRpb25EZXNjLCB0dXBsZWlkLCBzbG90LAogCQkJCQkJCQllc3RhdGUtPmVzX291 dHB1dF9jaWQsCiAJCQkJCQkJCTAsCkBAIC0yNjU2LDggKzI2NzEsNyBAQCBscmVwbGFjZToK IAkJCQkJCQkJZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJCQl0cnVl IC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCiAJCQkJCQkJCSZjb250ZXh0LT50bWZkLCAmdXBk YXRlQ3h0LT5sb2NrbW9kZSwKLQkJCQkJCQkJbW9kaWZpZWRfaWR4X2F0dHJzLAotCQkJCQkJ CQkmdXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzKTsKKwkJCQkJCQkJJnVwZGF0ZUN4dC0+bW9k aWZpZWRfYXR0cnMpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI2NzgsMTcgKzI2OTIs MzggQEAgRXhlY1VwZGF0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwg VXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0LAogCUxpc3QJICAgKnJlY2hlY2tJbmRleGVzID0g TklMOwogCiAJLyogaW5zZXJ0IGluZGV4IGVudHJpZXMgZm9yIHR1cGxlIGlmIG5lY2Vzc2Fy eSAqLwotCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4gMCAmJiAodXBkYXRl Q3h0LT51cGRhdGVJbmRleGVzICE9IFRVX05vbmUpKQorCWlmIChyZXN1bHRSZWxJbmZvLT5y aV9OdW1JbmRpY2VzID4gMCAmJgorCQkhYm1zX2lzX2VtcHR5KHVwZGF0ZUN4dC0+bW9kaWZp ZWRfYXR0cnMpKQogCXsKLQkJdWludDMyCQlmbGFncyA9IEVJSVRfSVNfVVBEQVRFOworCQli b29sCQlhbGxfaW5kZXhlcyA9CisJCQlibXNfaXNfbWVtYmVyKFRhYmxlVHVwbGVVcGRhdGVB bGxJbmRleGVzLAorCQkJCQkJICB1cGRhdGVDeHQtPm1vZGlmaWVkX2F0dHJzKTsKKworCQkv KgorCQkgKiBQb3B1bGF0ZSBwZXItaW5kZXggaWlfSW5kZXhVbmNoYW5nZWQgYmVmb3JlIGlu c2VydGluZy4gIFdoZW4gdGhlIEFNCisJCSAqIHN0b3JlZCBhbiBpbmRlcGVuZGVudCBuZXcg dmVyc2lvbiAod2hvbGUtcm93IGF0dHJpYnV0ZSBwcmVzZW50KQorCQkgKiBldmVyeSBpbmRl eCBuZWVkcyBhIGZyZXNoIGVudHJ5OyBmb3IgYSBIT1QgdXBkYXRlIG9ubHkgdGhvc2Ugd2hv c2UKKwkJICogYXR0cmlidXRlcyBvdmVybGFwIHRoZSBtb2RpZmllZCBzZXQgZG8uCisJCSAq LworCQlFeGVjU2V0SW5kZXhVbmNoYW5nZWQocmVzdWx0UmVsSW5mbywgdXBkYXRlQ3h0LT5t b2RpZmllZF9hdHRycyk7CiAKLQkJaWYgKHVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyA9PSBU VV9TdW1tYXJpemluZykKLQkJCWZsYWdzIHw9IEVJSVRfT05MWV9TVU1NQVJJWklORzsKIAkJ cmVjaGVja0luZGV4ZXMgPSBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMocmVzdWx0UmVsSW5mbywg Y29udGV4dC0+ZXN0YXRlLAotCQkJCQkJCQkJCQkgICBmbGFncywgc2xvdCwgTklMLAorCQkJ CQkJCQkJCQkgICBFSUlUX0lTX1VQREFURSB8CisJCQkJCQkJCQkJCSAgIChhbGxfaW5kZXhl cyA/CisJCQkJCQkJCQkJCQkwIDogRUlJVF9JU19IT1RfSU5ERVhFRCksCisJCQkJCQkJCQkJ CSAgIHNsb3QsIE5JTCwKIAkJCQkJCQkJCQkJICAgTlVMTCk7CiAJfQogCisJLyoKKwkgKiBG cmVlIHRoZSBtb2RpZmllZC1hdHRycyBiaXRtYXAgbm93IHRoYXQgdGhlIGluZGV4IGluc2Vy dHMgaGF2ZSBjb25zdW1lZAorCSAqIGl0LiAgSXQgaXMgcGFsbG9jJ2QgaW4gdGhlIHBlci1x dWVyeSBjb250ZXh0ICh2aWEgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXApCisJICogb25j ZSBwZXIgdXBkYXRlZCByb3csIHNvIHdpdGhvdXQgdGhpcyBhIGJ1bGsgVVBEQVRFIHdvdWxk IGFjY3VtdWxhdGUgb25lCisJICogQml0bWFwc2V0IHBlciByb3cgZm9yIHRoZSBsaWZldGlt ZSBvZiB0aGUgc3RhdGVtZW50LgorCSAqLworCWJtc19mcmVlKHVwZGF0ZUN4dC0+bW9kaWZp ZWRfYXR0cnMpOworCXVwZGF0ZUN4dC0+bW9kaWZpZWRfYXR0cnMgPSBOVUxMOworCiAJLyog Q29tcHV0ZSB0ZW1wb3JhbCBsZWZ0b3ZlcnMgaW4gRk9SIFBPUlRJT04gT0YgKi8KIAlpZiAo KChNb2RpZnlUYWJsZSAqKSBjb250ZXh0LT5tdHN0YXRlLT5wcy5wbGFuKS0+Zm9yUG9ydGlv bk9mKQogCQlFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzKGNvbnRleHQsIGNvbnRleHQtPmVz dGF0ZSwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCmlu ZGV4IGNkYzAyYjI3NGZmLi44MGQxZmQxN2NmYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv bm9kZXMvbWFrZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMK QEAgLTg0NSw4ICs4NDUsNiBAQCBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51 bWtleWF0dHJzLCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Npb25zLAogCW4tPmlpX1VuaXF1 ZSA9IHVuaXF1ZTsKIAluLT5paV9OdWxsc05vdERpc3RpbmN0ID0gbnVsbHNfbm90X2Rpc3Rp bmN0OwogCW4tPmlpX1JlYWR5Rm9ySW5zZXJ0cyA9IGlzcmVhZHk7Ci0Jbi0+aWlfQ2hlY2tl ZFVuY2hhbmdlZCA9IGZhbHNlOwotCW4tPmlpX0luZGV4VW5jaGFuZ2VkID0gZmFsc2U7CiAJ bi0+aWlfQ29uY3VycmVudCA9IGNvbmN1cnJlbnQ7CiAJbi0+aWlfU3VtbWFyaXppbmcgPSBz dW1tYXJpemluZzsKIAluLT5paV9XaXRob3V0T3ZlcmxhcHMgPSB3aXRob3V0b3ZlcmxhcHM7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRp b24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCmlu ZGV4IDA0ZjJlYjIxZDBiLi5kZDExNDBiMjlmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKQEAgLTM4NCwxMSArMzg0LDE3IEBAIHBn c3RhdF9jb3VudF9oZWFwX2luc2VydChSZWxhdGlvbiByZWwsIFBnU3RhdF9Db3VudGVyIG4p CiAKIC8qCiAgKiBjb3VudCBhIHR1cGxlIHVwZGF0ZQorICoKKyAqIGhvdCAgICAgIC0tIHRo ZSB1cGRhdGUgd2FzIGEgaGVhcC1vbmx5IHR1cGxlIChjbGFzc2ljIEhPVCBvciBIT1QtaW5k ZXhlZCkKKyAqIGhvdF9pbmRleGVkIC0tIHRoZSB1cGRhdGUgd2FzIGEgSE9ULWluZGV4ZWQg dXBkYXRlLCBhIHN1YmNhc2Ugb2YKKyAqICAgICAgICAgICAgICAgIGhvdD10cnVlOyBob3Rf aW5kZXhlZCBpbXBsaWVzIGhvdAorICogbmV3cGFnZSAgLS0gdGhlIG5ldyB0dXBsZSB3ZW50 IHRvIGEgZGlmZmVyZW50IGJ1ZmZlciB0aGFuIHRoZSBvbGQgb25lCiAgKi8KIHZvaWQKLXBn c3RhdF9jb3VudF9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWwsIGJvb2wgaG90LCBib29sIG5l d3BhZ2UpCitwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsLCBib29sIGhv dCwgYm9vbCBob3RfaW5kZXhlZCwgYm9vbCBuZXdwYWdlKQogewogCUFzc2VydCghKGhvdCAm JiBuZXdwYWdlKSk7CisJQXNzZXJ0KCEoaG90X2luZGV4ZWQgJiYgIWhvdCkpOwogCiAJaWYg KHBnc3RhdF9zaG91bGRfY291bnRfcmVsYXRpb24ocmVsKSkKIAl7CkBAIC0zOTgsMTEgKzQw NCwxNyBAQCBwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsLCBib29sIGhv dCwgYm9vbCBuZXdwYWdlKQogCQlwZ3N0YXRfaW5mby0+dHJhbnMtPnR1cGxlc191cGRhdGVk Kys7CiAKIAkJLyoKLQkJICogdHVwbGVzX2hvdF91cGRhdGVkIGFuZCB0dXBsZXNfbmV3cGFn ZV91cGRhdGVkIGNvdW50ZXJzIGFyZQotCQkgKiBub250cmFuc2FjdGlvbmFsLCBzbyBqdXN0 IGFkdmFuY2UgdGhlbQorCQkgKiB0dXBsZXNfaG90X3VwZGF0ZWQsIHR1cGxlc19ob3RfaW5k ZXhlZF91cGRhdGVkLCBhbmQKKwkJICogdHVwbGVzX25ld3BhZ2VfdXBkYXRlZCBjb3VudGVy cyBhcmUgbm9udHJhbnNhY3Rpb25hbCwgc28ganVzdAorCQkgKiBhZHZhbmNlIHRoZW0uICB0 dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCBpcyBjb3VudGVkIGluICphZGRpdGlvbiogdG8K KwkJICogdHVwbGVzX2hvdDogZXZlcnkgaG90LWluZGV4ZWQgdXBkYXRlIGlzIGFsc28gYSBI T1QgdXBkYXRlLgogCQkgKi8KIAkJaWYgKGhvdCkKKwkJewogCQkJcGdzdGF0X2luZm8tPmNv dW50cy50dXBsZXNfaG90X3VwZGF0ZWQrKzsKKwkJCWlmIChob3RfaW5kZXhlZCkKKwkJCQlw Z3N0YXRfaW5mby0+Y291bnRzLnR1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkKys7CisJCX0K IAkJZWxzZSBpZiAobmV3cGFnZSkKIAkJCXBnc3RhdF9pbmZvLT5jb3VudHMudHVwbGVzX25l d3BhZ2VfdXBkYXRlZCsrOwogCX0KQEAgLTg1NCw3ICs4NjYsMTAgQEAgcGdzdGF0X3JlbGF0 aW9uX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCkK IAl0YWJlbnRyeS0+dHVwbGVzX3VwZGF0ZWQgKz0gbHN0YXRzLT5jb3VudHMudHVwbGVzX3Vw ZGF0ZWQ7CiAJdGFiZW50cnktPnR1cGxlc19kZWxldGVkICs9IGxzdGF0cy0+Y291bnRzLnR1 cGxlc19kZWxldGVkOwogCXRhYmVudHJ5LT50dXBsZXNfaG90X3VwZGF0ZWQgKz0gbHN0YXRz LT5jb3VudHMudHVwbGVzX2hvdF91cGRhdGVkOworCXRhYmVudHJ5LT50dXBsZXNfaG90X2lu ZGV4ZWRfdXBkYXRlZCArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfaG90X2luZGV4ZWRfdXBk YXRlZDsKIAl0YWJlbnRyeS0+dHVwbGVzX25ld3BhZ2VfdXBkYXRlZCArPSBsc3RhdHMtPmNv dW50cy50dXBsZXNfbmV3cGFnZV91cGRhdGVkOworCXRhYmVudHJ5LT50dXBsZXNfaG90X2lu ZGV4ZWRfdXBkX3NraXBwZWQgKz0gbHN0YXRzLT5jb3VudHMudHVwbGVzX2hvdF9pbmRleGVk X3VwZF9za2lwcGVkOworCXRhYmVudHJ5LT50dXBsZXNfaG90X2luZGV4ZWRfdXBkX21hdGNo ZWQgKz0gbHN0YXRzLT5jb3VudHMudHVwbGVzX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkOwog CiAJLyoKIAkgKiBJZiB0YWJsZSB3YXMgdHJ1bmNhdGVkL2Ryb3BwZWQsIGZpcnN0IHJlc2V0 IHRoZSBsaXZlL2RlYWQgY291bnRlcnMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUu YwppbmRleCAwNTVmNzU3MTA3Zi4uY2E2MDUyNjU3MDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYwpAQCAtMTU4Niw2ICsxNTg2LDcgQEAgUmVsYXRpb25Jbml0SW5kZXhB Y2Nlc3NJbmZvKFJlbGF0aW9uIHJlbGF0aW9uKQogCSAqLwogCXJlbGF0aW9uLT5yZF9pbmRl eHBycyA9IE5JTDsKIAlyZWxhdGlvbi0+cmRfaW5kcHJlZCA9IE5JTDsKKwlyZWxhdGlvbi0+ cmRfaW5kYXR0ciA9IE5VTEw7CiAJcmVsYXRpb24tPnJkX2V4Y2xvcHMgPSBOVUxMOwogCXJl bGF0aW9uLT5yZF9leGNscHJvY3MgPSBOVUxMOwogCXJlbGF0aW9uLT5yZF9leGNsc3RyYXRz ID0gTlVMTDsKQEAgLTI0ODQsNiArMjQ4NSw3IEBAIFJlbGF0aW9uRGVzdHJveVJlbGF0aW9u KFJlbGF0aW9uIHJlbGF0aW9uLCBib29sIHJlbWVtYmVyX3R1cGRlc2MpCiAJYm1zX2ZyZWUo cmVsYXRpb24tPnJkX2lkYXR0cik7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2luZGV4ZWRh dHRyKTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOworCWJtc19m cmVlKHJlbGF0aW9uLT5yZF9leHByaW5kZXhhdHRyKTsKIAlpZiAocmVsYXRpb24tPnJkX3B1 YmRlc2MpCiAJCXBmcmVlKHJlbGF0aW9uLT5yZF9wdWJkZXNjKTsKIAlpZiAocmVsYXRpb24t PnJkX29wdGlvbnMpCkBAIC01Mjc1LDYgKzUyNzcsMTMwIEBAIFJlbGF0aW9uR2V0SW5kZXhQ cmVkaWNhdGUoUmVsYXRpb24gcmVsYXRpb24pCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoK KyAqIFJlbGF0aW9uR2V0SW5kZXhlZEF0dHJzIC0tIHBhbGxvYydkIEJpdG1hcHNldCBvZiBo ZWFwIGF0dHJzIHRoaXMgaW5kZXgKKyAqIHJlZmVyZW5jZXMuCisgKgorICogSW5jbHVkZXMg YXR0cmlidXRlcyB1c2VkIGFzIHNpbXBsZSBrZXkgY29sdW1ucywgSU5DTFVERSBjb2x1bW5z LCBpbnNpZGUKKyAqIGV4cHJlc3Npb24gY29sdW1ucywgYW5kIGluc2lkZSB0aGUgcGFydGlh bC1pbmRleCBwcmVkaWNhdGUuICBBdHRyaWJ1dGUKKyAqIG51bWJlcnMgdXNlIHRoZSBGaXJz dExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyIG9mZnNldCBjb252ZW50aW9uIHNvCisg KiB0aGF0IHN5c3RlbSBhdHRyaWJ1dGVzIGFyZSByZXByZXNlbnRhYmxlIGFsb25nc2lkZSB1 c2VyIGF0dHJpYnV0ZXMuCisgKgorICogVGhlIGZ1bmN0aW9uIGJ1aWxkcyB1cCB0aGUgYml0 bWFwIGZyb206CisgKiAgIC0gcmRfaW5kZXgtPmluZGtleSAgICAgICAgICAgKGtleXMgKyBJ TkNMVURFKQorICogICAtIFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyAocGFyc2VkIGV4 cHJlc3Npb24gdHJlZXMsIGFscmVhZHkgY2FjaGVkKQorICogICAtIFJlbGF0aW9uR2V0SW5k ZXhQcmVkaWNhdGUgICAocGFyc2VkIHByZWRpY2F0ZSB0cmVlLCBhbHJlYWR5IGNhY2hlZCkK KyAqIGFuZCBjYWNoZXMgYSBjb3B5IGluIHJkX2luZGV4ZWRhdHRyLCB3aGljaCBsaXZlcyBp biByZF9pbmRleGN4dC4KKyAqCisgKiBUaGUgcmV0dXJuZWQgQml0bWFwc2V0IGlzIGFsbG9j YXRlZCBpbiB0aGUgY2FsbGVyJ3MgY3VycmVudCBtZW1vcnkKKyAqIGNvbnRleHQ7IHRoZSBj YWxsZXIgb3ducyBpdCBhbmQgbXVzdCBibXNfZnJlZSB3aGVuIGRvbmUuICBXZSBuZXZlciBo YW5kCisgKiBvdXQgYSBib3Jyb3dlZCBwb2ludGVyIHRvIHRoZSBjYWNoZWQgY29weSBiZWNh dXNlIHJlbGNhY2hlIGludmFsaWRhdGlvbgorICogY2FuIHJlYnVpbGQgcmRfaW5kZXhjeHQg aW4gcGxhY2UgZXZlbiB3aGlsZSBhIHJlZmNvdW50IGlzIGhlbGQuCisgKgorICogQ2FsbGVy IG11c3QgaG9sZCBhbiBvcGVuIGxvY2sgb24gdGhlIGluZGV4IHJlbGF0aW9uLgorICovCitC aXRtYXBzZXQgKgorUmVsYXRpb25HZXRJbmRleGVkQXR0cnMoUmVsYXRpb24gaW5kZXhSZWwp Cit7CisJQml0bWFwc2V0ICAqYXR0cnMgPSBOVUxMOworCUZvcm1fcGdfaW5kZXggaW5kZXhT dHJ1Y3Q7CisJTGlzdAkgICAqaW5kZXhwcnM7CisJTGlzdAkgICAqaW5kcHJlZDsKKwlNZW1v cnlDb250ZXh0IG9sZGN4dDsKKworCUFzc2VydChpbmRleFJlbC0+cmRfcmVsLT5yZWxraW5k ID09IFJFTEtJTkRfSU5ERVggfHwKKwkJICAgaW5kZXhSZWwtPnJkX3JlbC0+cmVsa2luZCA9 PSBSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVYKTsKKworCS8qIEZhc3QgcGF0aDogcmV0dXJu IGEgY29weSBvZiB0aGUgY2FjaGVkIGJpdG1hcC4gKi8KKwlpZiAoaW5kZXhSZWwtPnJkX2lu ZGF0dHIgIT0gTlVMTCkKKwkJcmV0dXJuIGJtc19jb3B5KGluZGV4UmVsLT5yZF9pbmRhdHRy KTsKKworCWluZGV4U3RydWN0ID0gaW5kZXhSZWwtPnJkX2luZGV4OworCisJLyoKKwkgKiBE dXJpbmcgdmVyeSBlYXJseSBib290c3RyYXAgcmRfaW5kZXh0dXBsZSBtYXkgbm90IGJlIHBv cHVsYXRlZCB5ZXQuIEluCisJICogdGhhdCBjYXNlIHdlIGZhbGwgYmFjayB0byBqdXN0IHRo ZSBrZXkgY29sdW1ucyB3aXRob3V0IGNhY2hpbmcuCisJICovCisJaWYgKGluZGV4UmVsLT5y ZF9pbmRleHR1cGxlID09IE5VTEwpCisJeworCQlmb3IgKGludCBpID0gMDsgaSA8IGluZGV4 U3RydWN0LT5pbmRuYXR0czsgaSsrKQorCQl7CisJCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBp bmRleFN0cnVjdC0+aW5ka2V5LnZhbHVlc1tpXTsKKworCQkJaWYgKGF0dHJudW0gIT0gMCkK KwkJCQlhdHRycyA9IGJtc19hZGRfbWVtYmVyKGF0dHJzLAorCQkJCQkJCQkJICAgYXR0cm51 bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCQl9CisJCXJldHVy biBhdHRyczsKKwl9CisKKwkvKgorCSAqIEtleSBjb2x1bW5zIGFuZCBJTkNMVURFIChjb3Zl cmluZykgY29sdW1ucy4gIElOQ0xVREUgY29sdW1ucyBtdXN0IGJlCisJICogY291bnRlZDog dGhlaXIgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGluZGV4IGxlYWYgYW5kIHNlcnZlZCBi eQorCSAqIGluZGV4LW9ubHkgc2NhbnMsIHNvIGFuIHVwZGF0ZSB0aGF0IGNoYW5nZXMgYW4g SU5DTFVERSBjb2x1bW4gbXVzdAorCSAqIGluc2VydCBhIGZyZXNoIGluZGV4IGVudHJ5IChv ciBiZSBkaXNxdWFsaWZpZWQgZnJvbSBzdGF5aW5nCisJICogSE9ULWluZGV4ZWQpIGV4YWN0 bHkgYXMgZm9yIGEga2V5IGNvbHVtbi4gIFRoaXMgbWF0Y2hlcyB0aGUgaGVhcC1sZXZlbAor CSAqIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKC4uLiwgSU5ERVhfQVRUUl9CSVRNQVBf SU5ERVhFRCksIHdoaWNoIGFsc28KKwkgKiB1bmlvbnMgYWxsIGluZG5hdHRzLiAgRXhwcmVz c2lvbiBhbmQgcGFydGlhbC1wcmVkaWNhdGUgY29sdW1ucyBhcmUKKwkgKiBhZGRlZCBiZWxv dy4KKwkgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IGluZGV4U3RydWN0LT5pbmRuYXR0czsg aSsrKQorCXsKKwkJQXR0ck51bWJlcglhdHRybnVtID0gaW5kZXhTdHJ1Y3QtPmluZGtleS52 YWx1ZXNbaV07CisKKwkJLyogYXR0bnVtIDAgbWVhbnMgImV4cHJlc3Npb24iOyB0aG9zZSBh dHRycyBhcmUgcGlja2VkIHVwIGJlbG93LiAqLworCQlpZiAoYXR0cm51bSAhPSAwKQorCQkJ YXR0cnMgPSBibXNfYWRkX21lbWJlcihhdHRycywKKwkJCQkJCQkJICAgYXR0cm51bSAtIEZp cnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCX0KKworCS8qCisJICogRXhw cmVzc2lvbiBjb2x1bW5zIGFuZCBwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZSBjb2x1bW5zLiAg RGVsaWJlcmF0ZWx5CisJICogZG8gTk9UIHVzZSBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lv bnMoKS9SZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKCkKKwkgKiBoZXJlLCBmb3IgdGhlIHNh bWUgcmVhc29uIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwIGF2b2lkcyB0aGVtOiB0aG9z ZQorCSAqIGZ1bmN0aW9ucyBydW4gZXZhbF9jb25zdF9leHByZXNzaW9ucygpLCB3aGljaCBu ZWVkcyBhIHNuYXBzaG90IHdlIG1heQorCSAqIG5vdCBoYXZlLCBhbmQgY2FuIGNvbnN0LWZv bGQgYXdheSBhIFZhciByZWZlcmVuY2UgKGUuZy4gYSBDQVNFIHdpdGggYQorCSAqIHN0YXRp Y2FsbHktZGVjaWRhYmxlIGJyYW5jaCksIGNhdXNpbmcgdGhpcyBiaXRtYXAgdG8gdW5kZXIt cmVwb3J0IGFuCisJICogYXR0cmlidXRlIHRoYXQgcmRfaW5kZXhlZGF0dHIvcmRfZXhwcmlu ZGV4YXR0ciAoYnVpbHQgZnJvbSB0aGUgc2FtZSByYXcKKwkgKiBjYXRhbG9nIHRleHQpIHN0 aWxsIHJlY29yZC4gIFBhcnNlIHRoZSByYXcgc3RvcmVkIHRyZWVzIGluc3RlYWQsIHNvCisJ ICogdGhpcyBmdW5jdGlvbidzIHJlc3VsdCBzdGF5cyBhIHN1cGVyc2V0LWNvbnNpc3RlbnQg bWF0Y2ggd2l0aCB0aG9zZS4KKwkgKi8KKwl7CisJCURhdHVtCQlkYXR1bTsKKwkJYm9vbAkJ aXNudWxsOworCisJCWRhdHVtID0gaGVhcF9nZXRhdHRyKGluZGV4UmVsLT5yZF9pbmRleHR1 cGxlLCBBbnVtX3BnX2luZGV4X2luZGV4cHJzLAorCQkJCQkJCSBHZXRQZ0luZGV4RGVzY3Jp cHRvcigpLCAmaXNudWxsKTsKKwkJaWYgKCFpc251bGwpCisJCXsKKwkJCWluZGV4cHJzID0g KExpc3QgKikgc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pKTsKKwkJ CXB1bGxfdmFyYXR0bm9zKChOb2RlICopIGluZGV4cHJzLCAxLCAmYXR0cnMpOworCQl9CisK KwkJZGF0dW0gPSBoZWFwX2dldGF0dHIoaW5kZXhSZWwtPnJkX2luZGV4dHVwbGUsIEFudW1f cGdfaW5kZXhfaW5kcHJlZCwKKwkJCQkJCQkgR2V0UGdJbmRleERlc2NyaXB0b3IoKSwgJmlz bnVsbCk7CisJCWlmICghaXNudWxsKQorCQl7CisJCQlpbmRwcmVkID0gKExpc3QgKikgc3Ry aW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pKTsKKwkJCXB1bGxfdmFyYXR0 bm9zKChOb2RlICopIGluZHByZWQsIDEsICZhdHRycyk7CisJCX0KKwl9CisKKwkvKgorCSAq IENhY2hlIGEgY29weSBpbnNpZGUgcmRfaW5kZXhjeHQgc28gc3Vic2VxdWVudCBjYWxscyBh cmUgY2hlYXAuICBUaGUKKwkgKiBjYWNoZWQgYml0bWFwIGlzIGZyZWVkIGFsb25nIHdpdGgg cmRfaW5kZXhjeHQgb24gcmVsY2FjaGUgcmVidWlsZCwgc28KKwkgKiBpdCdzIHNhZmUgdG8g c3Rhc2ggaGVyZS4KKwkgKi8KKwlpZiAoaW5kZXhSZWwtPnJkX2luZGV4Y3h0ICE9IE5VTEwp CisJeworCQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaW5kZXhSZWwtPnJkX2lu ZGV4Y3h0KTsKKwkJaW5kZXhSZWwtPnJkX2luZGF0dHIgPSBibXNfY29weShhdHRycyk7CisJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCX0KKworCXJldHVybiBhdHRyczsK K30KKwogLyoKICAqIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwIC0tIGdldCBhIGJpdG1h cCBvZiBpbmRleCBhdHRyaWJ1dGUgbnVtYmVycwogICoKQEAgLTUzMTMsNiArNTQzOSw3IEBA IEJpdG1hcHNldCAqCiBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxh dGlvbiwgSW5kZXhBdHRyQml0bWFwS2luZCBhdHRyS2luZCkKIHsKIAlCaXRtYXBzZXQgICp1 aW5kZXhhdHRyczsJLyogY29sdW1ucyBpbiB1bmlxdWUgaW5kZXhlcyAqLworCUJpdG1hcHNl dCAgKmV4cHJpbmRleGF0dHJzOyAvKiBjb2x1bW5zIHJlZmVyZW5jZWQgYnkgZXhwcmVzc2lv biBpbmRleGVzICovCiAJQml0bWFwc2V0ICAqcGtpbmRleGF0dHJzOwkvKiBjb2x1bW5zIGlu IHRoZSBwcmltYXJ5IGluZGV4ICovCiAJQml0bWFwc2V0ICAqaWRpbmRleGF0dHJzOwkvKiBj b2x1bW5zIGluIHRoZSByZXBsaWNhIGlkZW50aXR5ICovCiAJQml0bWFwc2V0ICAqaW5kZXhl ZGF0dHJzOwkvKiBjb2x1bW5zIHJlZmVyZW5jZWQgYnkgaW5kZXhlcyAqLwpAQCAtNTMzOSw2 ICs1NDY2LDggQEAgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRp b24sIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpCiAJCQkJcmV0dXJuIGJtc19jb3B5 KHJlbGF0aW9uLT5yZF9pbmRleGVkYXR0cik7CiAJCQljYXNlIElOREVYX0FUVFJfQklUTUFQ X1NVTU1BUklaRUQ6CiAJCQkJcmV0dXJuIGJtc19jb3B5KHJlbGF0aW9uLT5yZF9zdW1tYXJp emVkYXR0cik7CisJCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT046CisJCQkJ cmV0dXJuIGJtc19jb3B5KHJlbGF0aW9uLT5yZF9leHByaW5kZXhhdHRyKTsKIAkJCWRlZmF1 bHQ6CiAJCQkJZWxvZyhFUlJPUiwgInVua25vd24gYXR0cktpbmQgJXUiLCBhdHRyS2luZCk7 CiAJCX0KQEAgLTUzODMsNiArNTUxMiw3IEBAIHJlc3RhcnQ6CiAJaWRpbmRleGF0dHJzID0g TlVMTDsKIAlpbmRleGVkYXR0cnMgPSBOVUxMOwogCXN1bW1hcml6ZWRhdHRycyA9IE5VTEw7 CisJZXhwcmluZGV4YXR0cnMgPSBOVUxMOwogCWZvcmVhY2gobCwgaW5kZXhvaWRsaXN0KQog CXsKIAkJT2lkCQkJaW5kZXhPaWQgPSBsZmlyc3Rfb2lkKGwpOwpAQCAtNTQ4Nyw2ICs1NjE3 LDI4IEBAIHJlc3RhcnQ6CiAJCS8qIENvbGxlY3QgYWxsIGF0dHJpYnV0ZXMgaW4gdGhlIGlu ZGV4IHByZWRpY2F0ZSwgdG9vICovCiAJCXB1bGxfdmFyYXR0bm9zKGluZGV4UHJlZGljYXRl LCAxLCBhdHRycyk7CiAKKwkJLyoKKwkJICogSWYgdGhpcyBpbmRleCBldmFsdWF0ZXMgYW4g ZXhwcmVzc2lvbiwgcmVjb3JkIGV2ZXJ5IGhlYXAgYXR0cmlidXRlCisJCSAqIGl0IHJlZmVy ZW5jZXMgKGtleSBjb2x1bW5zLCBleHByZXNzaW9uIHZhcnMsIHByZWRpY2F0ZSB2YXJzKSBp bgorCQkgKiBleHByaW5kZXhhdHRycy4gIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUoKSBkaXNx dWFsaWZpZXMgdGhlCisJCSAqIEhPVC1pbmRleGVkIHBhdGggZm9yIGFuIFVQREFURSB0aGF0 IHRvdWNoZXMgb25lIG9mIHRoZXNlLCBiZWNhdXNlCisJCSAqIGV4cHJlc3Npb24tYXdhcmUg c2VsZWN0aXZlIGluZGV4IG1haW50ZW5hbmNlIGlzIG5vdCBpbXBsZW1lbnRlZAorCQkgKiB5 ZXQuCisJCSAqLworCQlpZiAoaW5kZXhFeHByZXNzaW9ucyAhPSBOVUxMKQorCQl7CisJCQlm b3IgKGkgPSAwOyBpIDwgaW5kZXhEZXNjLT5yZF9pbmRleC0+aW5kbmF0dHM7IGkrKykKKwkJ CXsKKwkJCQlpbnQJCQlhdHRybnVtID0gaW5kZXhEZXNjLT5yZF9pbmRleC0+aW5ka2V5LnZh bHVlc1tpXTsKKworCQkJCWlmIChhdHRybnVtICE9IDApCisJCQkJCWV4cHJpbmRleGF0dHJz ID0gYm1zX2FkZF9tZW1iZXIoZXhwcmluZGV4YXR0cnMsCisJCQkJCQkJCQkJCQkJYXR0cm51 bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCQkJfQorCQkJcHVs bF92YXJhdHRub3MoaW5kZXhFeHByZXNzaW9ucywgMSwgJmV4cHJpbmRleGF0dHJzKTsKKwkJ CXB1bGxfdmFyYXR0bm9zKGluZGV4UHJlZGljYXRlLCAxLCAmZXhwcmluZGV4YXR0cnMpOwor CQl9CisKIAkJaW5kZXhfY2xvc2UoaW5kZXhEZXNjLCBBY2Nlc3NTaGFyZUxvY2spOwogCX0K IApAQCAtNTUxNSwxNCArNTY2NywyNyBAQCByZXN0YXJ0OgogCQlibXNfZnJlZShpZGluZGV4 YXR0cnMpOwogCQlibXNfZnJlZShpbmRleGVkYXR0cnMpOwogCQlibXNfZnJlZShzdW1tYXJp emVkYXR0cnMpOworCQlibXNfZnJlZShleHByaW5kZXhhdHRycyk7CiAKIAkJZ290byByZXN0 YXJ0OwogCX0KIAogCS8qCi0JICogUmVjb3JkIHdoYXQgYXR0cmlidXRlcyBhcmUgb25seSBy ZWZlcmVuY2VkIGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMuIFRoZW4KLQkgKiBhZGQgdGhhdCBp bnRvIHRoZSBvdGhlciBpbmRleGVkIGF0dHJpYnV0ZXMgdG8gdHJhY2sgYWxsIHJlZmVyZW5j ZWQKLQkgKiBhdHRyaWJ1dGVzLgorCSAqIFJlY29yZCB3aGljaCBhdHRyaWJ1dGVzIGFyZSBy ZWZlcmVuY2VkIG9ubHkgYnkgc3VtbWFyaXppbmcgaW5kZXhlcywgc28KKwkgKiBJTkRFWF9B VFRSX0JJVE1BUF9TVU1NQVJJWkVEIHJlcG9ydHMgY29sdW1ucyB3aG9zZSBzb2xlIGluZGV4 ZXMgYXJlCisJICogc3VtbWFyaXppbmcgb25lcywgdGhlbiBmb2xkIHRob3NlIGNvbHVtbnMg aW50byBpbmRleGVkYXR0cnMgYXMgd2VsbC4KKwkgKgorCSAqIElOREVYX0FUVFJfQklUTUFQ X0lOREVYRUQgbXVzdCBpbmNsdWRlIHN1bW1hcml6aW5nLWluZGV4IGNvbHVtbnMgZm9yCisJ ICogdGhlIEhPVC1pbmRleGVkIHdyaXRlIHBhdGg6IGl0IGNvbXBhcmVzIHRoZSBvbGQgYW5k IG5ldyB0dXBsZXMgb3ZlcgorCSAqIHRoaXMgYml0bWFwIHRvIGJ1aWxkIHRoZSBzZXQgb2Yg bW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzLCBhbmQgb25seQorCSAqIG1haW50YWlucyBp bmRleGVzIHdoZW4gdGhhdCBzZXQgaXMgbm9uLWVtcHR5IChvciB0aGUgdXBkYXRlIGlzCisJ ICogbm9uLUhPVCkuICBBIGNoYW5nZSB0byBhIGNvbHVtbiBpbmRleGVkIG9ubHkgYnkgYSBz dW1tYXJpemluZyBpbmRleAorCSAqIG11c3QgdGhlcmVmb3JlIGFwcGVhciBpbiB0aGUgYml0 bWFwIHNvIHRoZSBzdW1tYXJpemluZyBpbmRleCBnZXRzIGl0cworCSAqIGJsb2NrIHN1bW1h cnkgcmVmcmVzaGVkLiAgSGVhcFVwZGF0ZUhvdEFsbG93YWJsZSdzIGFsbF9zdW1tYXJpemlu ZworCSAqIGNoZWNrIHN0aWxsIGtlZXBzIHN1Y2ggYW4gdXBkYXRlIG9uIHRoZSBjbGFzc2lj LUhPVCBwYXRoIChpdCBzdGF5cworCSAqIGNsYXNzaWMgSE9ULCBzaW5jZSBJTkRFWF9BVFRS X0JJVE1BUF9TVU1NQVJJWkVEIC0tIHN1bW1hcml6aW5nLW9ubHkgLS0KKwkgKiBpcyBhIHN1 cGVyc2V0IG9mIHRoZSBtb2RpZmllZCBhdHRyaWJ1dGVzKSwgYW5kIHRoZSBzdW1tYXJpemlu ZyBpbmRleAorCSAqIGluc2VydHMgdW5jb25kaXRpb25hbGx5IHZpYSBpdHMgaWlfU3VtbWFy aXppbmcgZmxhZy4KIAkgKi8KIAlzdW1tYXJpemVkYXR0cnMgPSBibXNfZGVsX21lbWJlcnMo c3VtbWFyaXplZGF0dHJzLCBpbmRleGVkYXR0cnMpOwogCWluZGV4ZWRhdHRycyA9IGJtc19h ZGRfbWVtYmVycyhpbmRleGVkYXR0cnMsIHN1bW1hcml6ZWRhdHRycyk7CkBAIC01NTM5LDYg KzU3MDQsOCBAQCByZXN0YXJ0OgogCXJlbGF0aW9uLT5yZF9pbmRleGVkYXR0ciA9IE5VTEw7 CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyKTsKIAlyZWxhdGlvbi0+ cmRfc3VtbWFyaXplZGF0dHIgPSBOVUxMOworCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9leHBy aW5kZXhhdHRyKTsKKwlyZWxhdGlvbi0+cmRfZXhwcmluZGV4YXR0ciA9IE5VTEw7CiAKIAkv KgogCSAqIE5vdyBzYXZlIGNvcGllcyBvZiB0aGUgYml0bWFwcyBpbiB0aGUgcmVsY2FjaGUg ZW50cnkuICBXZSBpbnRlbnRpb25hbGx5CkBAIC01NTUzLDYgKzU3MjAsNyBAQCByZXN0YXJ0 OgogCXJlbGF0aW9uLT5yZF9pZGF0dHIgPSBibXNfY29weShpZGluZGV4YXR0cnMpOwogCXJl bGF0aW9uLT5yZF9pbmRleGVkYXR0ciA9IGJtc19jb3B5KGluZGV4ZWRhdHRycyk7CiAJcmVs YXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyID0gYm1zX2NvcHkoc3VtbWFyaXplZGF0dHJzKTsK KwlyZWxhdGlvbi0+cmRfZXhwcmluZGV4YXR0ciA9IGJtc19jb3B5KGV4cHJpbmRleGF0dHJz KTsKIAlyZWxhdGlvbi0+cmRfYXR0cnN2YWxpZCA9IHRydWU7CiAJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN4dCk7CiAKQEAgLTU1NjksNiArNTczNyw3MiBAQCByZXN0YXJ0OgogCQkJ cmV0dXJuIGluZGV4ZWRhdHRyczsKIAkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJ WkVEOgogCQkJcmV0dXJuIHN1bW1hcml6ZWRhdHRyczsKKwkJY2FzZSBJTkRFWF9BVFRSX0JJ VE1BUF9FWFBSRVNTSU9OOgorCQkJcmV0dXJuIGV4cHJpbmRleGF0dHJzOworCQlkZWZhdWx0 OgorCQkJZWxvZyhFUlJPUiwgInVua25vd24gYXR0cktpbmQgJXUiLCBhdHRyS2luZCk7CisJ CQlyZXR1cm4gTlVMTDsKKwl9Cit9CisKKy8qCisgKiBSZWxhdGlvbkdldEluZGV4QXR0ckJp dG1hcE5vQ29weSAtLSBib3Jyb3dpbmcgdmFyaWFudCBvZgorICoJCVJlbGF0aW9uR2V0SW5k ZXhBdHRyQml0bWFwCisgKgorICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHJlbGNhY2hl LW93bmVkIGJpdG1hcCBmb3IgdGhlIGdpdmVuIGF0dHJLaW5kCisgKiB3aXRob3V0IG1ha2lu ZyBhIGRlZmVuc2l2ZSBjb3B5LiAgVGhpcyBpcyBhIGhvdC1wYXRoIG9wdGltaXphdGlvbiBm b3IKKyAqIHJlYWQtb25seSBjYWxsZXJzIHRoYXQgcGVyZm9ybSBzZXQgb3BlcmF0aW9ucyBs aWtlIGJtc19vdmVybGFwLAorICogYm1zX2lzX3N1YnNldCwgYm1zX2VxdWFsLCBvciBibXNf bnVtX21lbWJlcnMgYW5kIG5ldmVyIG11dGF0ZSB0aGUKKyAqIHJldHVybmVkIGJpdG1hcC4g IFRoZSByZXN1bHQgaXMgY29uY2VwdHVhbGx5IGBjb25zdCBCaXRtYXBzZXQgKmA7IGNhbGxl cnMKKyAqIG11c3Qgbm90IHBhc3MgaXQgdG8gYW55dGhpbmcgdGhhdCBjb3VsZCBmcmVlIG9y IG1vZGlmeSB0aGUgdW5kZXJseWluZworICogbWVtb3J5IChlLmcuLCBibXNfYWRkX21lbWJl ciwgYm1zX2ludF9tZW1iZXJzLCBibXNfZnJlZSkuCisgKgorICogTGlmZXRpbWU6IHRoZSBw b2ludGVyIGlzIHZhbGlkIG9ubHkgdW50aWwgdGhlIG5leHQgZXZlbnQgdGhhdCBjb3VsZAor ICogdHJpZ2dlciBhIHJlbGNhY2hlIGludmFsaWRhdGlvbiBvbiBgcmVsYXRpb25gLiAgQ2Fs bGVycyBtdXN0IG5vdCBpbnZva2UKKyAqIGFueSBjb2RlIHRoYXQgb3BlbnMgYSByZWxhdGlv biwgcnVucyBjYXRhbG9nIGxvb2t1cHMsIG9yIG90aGVyd2lzZQorICogYWNjZXB0cyBpbnZh bGlkYXRpb24gbWVzc2FnZXMgYmV0d2VlbiB0aGUgZmV0Y2ggYW5kIHRoZSBsYXN0IHVzZS4K KyAqCisgKiBGb3IgdGhlIGNvbW1vbiBjYXNlIHRoZSByZWxjYWNoZSBlbnRyeSdzIGF0dHJp YnV0ZSBiaXRtYXBzIGFyZSBhbHJlYWR5CisgKiBjb21wdXRlZCAocmRfYXR0cnN2YWxpZCBp cyB0cnVlKS4gIFdoZW4gdGhleSBhcmVuJ3QsIHdlIGdvIHRocm91Z2gKKyAqIFJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwIHRvIHBvcHVsYXRlIHRoZSBjYWNoZSAod2hpY2ggY29zdHMg b25lCisgKiB0aHJvd2F3YXkgYm1zX2NvcHkgb24gZmlyc3QgdXNlKSBhbmQgdGhlbiByZXR1 cm4gdGhlIGNhY2hlZCBwb2ludGVyIG9uCisgKiB0aGUgc2Vjb25kIHBhc3MuICBUaGUgZmly c3QtdXNlIHBhdGggaXMgcmFyZSBhbmQgbmV2ZXIgb24gdGhlIGJlbmNoIGhvdAorICogcGF0 aCwgc28gdGhlIHNpbXBsaWNpdHkgaXMgcHJlZmVycmVkIG92ZXIgb3Blbi1jb2RpbmcgdGhl IHBvcHVsYXRlLW9ubHkKKyAqIHZhcmlhbnQuCisgKi8KK2NvbnN0IEJpdG1hcHNldCAqCitS ZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcE5vQ29weShSZWxhdGlvbiByZWxhdGlvbiwgSW5k ZXhBdHRyQml0bWFwS2luZCBhdHRyS2luZCkKK3sKKwlpZiAoIXJlbGF0aW9uLT5yZF9hdHRy c3ZhbGlkKQorCXsKKwkJQml0bWFwc2V0ICAqcG9wdWxhdGVkOworCisJCS8qIFBvcHVsYXRl IHJkXyphdHRyIGZpZWxkczsgZGlzY2FyZCB0aGUgcmV0dXJuZWQgY29weS4gKi8KKwkJcG9w dWxhdGVkID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIGF0dHJLaW5k KTsKKwkJYm1zX2ZyZWUocG9wdWxhdGVkKTsKKworCQkvKgorCQkgKiBJZiB0aGUgcmVsYXRp b24gaGFzIG5vIGluZGV4ZXMsIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwIHJldHVybnMK KwkJICogTlVMTCB3aXRob3V0IHNldHRpbmcgcmRfYXR0cnN2YWxpZC4gIE1pcnJvciB0aGF0 IGhlcmUuCisJCSAqLworCQlpZiAoIXJlbGF0aW9uLT5yZF9hdHRyc3ZhbGlkKQorCQkJcmV0 dXJuIE5VTEw7CisJfQorCisJc3dpdGNoIChhdHRyS2luZCkKKwl7CisJCWNhc2UgSU5ERVhf QVRUUl9CSVRNQVBfS0VZOgorCQkJcmV0dXJuIHJlbGF0aW9uLT5yZF9rZXlhdHRyOworCQlj YXNlIElOREVYX0FUVFJfQklUTUFQX1BSSU1BUllfS0VZOgorCQkJcmV0dXJuIHJlbGF0aW9u LT5yZF9wa2F0dHI7CisJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZOgor CQkJcmV0dXJuIHJlbGF0aW9uLT5yZF9pZGF0dHI7CisJCWNhc2UgSU5ERVhfQVRUUl9CSVRN QVBfSU5ERVhFRDoKKwkJCXJldHVybiByZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHI7CisJCWNh c2UgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRDoKKwkJCXJldHVybiByZWxhdGlvbi0+ cmRfc3VtbWFyaXplZGF0dHI7CisJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfRVhQUkVTU0lP TjoKKwkJCXJldHVybiByZWxhdGlvbi0+cmRfZXhwcmluZGV4YXR0cjsKIAkJZGVmYXVsdDoK IAkJCWVsb2coRVJST1IsICJ1bmtub3duIGF0dHJLaW5kICV1IiwgYXR0cktpbmQpOwogCQkJ cmV0dXJuIE5VTEw7CkBAIC02NTA4LDYgKzY3NDIsNyBAQCBsb2FkX3JlbGNhY2hlX2luaXRf ZmlsZShib29sIHNoYXJlZCkKIAkJcmVsLT5yZF9wYXJ0Y2hlY2tjeHQgPSBOVUxMOwogCQly ZWwtPnJkX2luZGV4cHJzID0gTklMOwogCQlyZWwtPnJkX2luZHByZWQgPSBOSUw7CisJCXJl bC0+cmRfaW5kYXR0ciA9IE5VTEw7CiAJCXJlbC0+cmRfZXhjbG9wcyA9IE5VTEw7CiAJCXJl bC0+cmRfZXhjbHByb2NzID0gTlVMTDsKIAkJcmVsLT5yZF9leGNsc3RyYXRzID0gTlVMTDsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbWFwaS5oIGIvc3JjL2luY2x1ZGUv YWNjZXNzL2FtYXBpLmgKaW5kZXggNzkyNDAzMzM1MzAuLjE3Yzc2ZTM3Y2RlIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYW1hcGkuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvYW1hcGkuaApAQCAtMjksNyArMjksNiBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFBhdGgg SW5kZXhQYXRoOwogLyogTGlrZXdpc2UsIHRoaXMgZmlsZSBzaG91bGRuJ3QgZGVwZW5kIG9u IGV4ZWNub2Rlcy5oLiAqLwogdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJbmZvIEluZGV4SW5mbzsK IAotCiAvKgogICogUHJvcGVydGllcyBmb3IgYW1wcm9wZXJ0eSBBUEkuICBUaGlzIGxpc3Qg Y292ZXJzIHByb3BlcnRpZXMga25vd24gdG8gdGhlCiAgKiBjb3JlIGNvZGUsIGJ1dCBhbiBp bmRleCBBTSBjYW4gZGVmaW5lIGl0cyBvd24gcHJvcGVydGllcywgYnkgbWF0Y2hpbmcgdGhl CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMmRiZmFkOTIxMTMuLmYyOWNjZWI4YzFhIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbS5oCkBAIC0zODQsMTEgKzM4NCw0NyBAQCBleHRlcm4gVE1fUmVzdWx0 IGhlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEg KnRpZCwKIAkJCQkJCQkgYm9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCk7CiBleHRl cm4gdm9pZCBoZWFwX2ZpbmlzaF9zcGVjdWxhdGl2ZShSZWxhdGlvbiByZWxhdGlvbiwgY29u c3QgSXRlbVBvaW50ZXJEYXRhICp0aWQpOwogZXh0ZXJuIHZvaWQgaGVhcF9hYm9ydF9zcGVj dWxhdGl2ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQp OworCisvKgorICogSGVhcFVwZGF0ZUluZGV4TW9kZSAtLQorICoJVGhyZWUtdmFsdWVkIGNs YXNzaWZpY2F0aW9uIHJldHVybmVkIGJ5IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUoKSB0aGF0 CisgKgl0ZWxscyBoZWFwX3VwZGF0ZSgpIHdoZXRoZXIgYSBIT1QgdXBkYXRlIGlzIHBlcm1p dHRlZCBmb3IgdGhpcyB0dXBsZSBhbmQsCisgKglpZiBzbywgd2hldGhlciB0aGUgaW5kZXhl cyBtYXkgYmUgbWFpbnRhaW5lZCBzZWxlY3RpdmVseS4KKyAqCisgKglIRUFQX1VQREFURV9B TExfSU5ERVhFUworICoJCUhPVCBpcyBub3QgYWxsb3dlZDsgdGhlIG5ldyB0dXBsZSBtdXN0 IGdvIG9uIGl0cyBvd24gVElEIGFuZCBldmVyeQorICoJCWluZGV4IHJlY2VpdmVzIGEgZnJl c2ggZW50cnkuICBUaGlzIGlzIHRoZSBjbGFzc2ljIHByZS1IT1QtaW5kZXhlZAorICoJCWJl aGF2aW9yIGZvciB1cGRhdGVzIHRoYXQgbW9kaWZ5IGEgbm9uLXN1bW1hcml6aW5nIGluZGV4 ZWQgYXR0cmlidXRlLgorICoKKyAqCUhFQVBfSEVBUF9PTkxZX1VQREFURQorICoJCUNsYXNz aWMgSE9UIHVwZGF0ZTogbm8gbm9uLXN1bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlIGNo YW5nZWQgKG9ubHkKKyAqCQlzdW1tYXJpemluZyBvbmVzLCBpZiBhbnkpLCBzbyBubyBpbmRl eCBuZWVkcyBhIG5ldyBlbnRyeS4KKyAqCisgKglIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERB VEUKKyAqCQlIT1Qgd2l0aCBzZWxlY3RpdmUgaW5kZXggdXBkYXRlOiBhdCBsZWFzdCBvbmUg bm9uLXN1bW1hcml6aW5nIGluZGV4J3MKKyAqCQlhdHRyaWJ1dGUgY2hhbmdlZCwgYnV0IHRo ZSBuZXcgdHVwbGUgY2FuIHN0aWxsIGpvaW4gdGhlIEhPVCBjaGFpbiBvbgorICoJCXRoZSBz YW1lIHBhZ2U7IG9ubHkgdGhlIGluZGV4ZXMgd2hvc2UgYXR0cmlidXRlcyBjaGFuZ2VkIHJl Y2VpdmUgYSBuZXcKKyAqCQllbnRyeS4gIEFzIGZvciBjbGFzc2ljIEhPVCwgaGVhcF91cGRh dGUoKSBzdGlsbCBmYWxscyBiYWNrIHRvIGEKKyAqCQlub24tSE9UIHVwZGF0ZSBpZiB0aGUg bmV3IHR1cGxlIGRvZXMgbm90IGZpdCBvbiB0aGUgcGFnZS4KKyAqCisgKglDYWxsZXJzIHNo b3VsZCBzcGVsbCB0aGUgZXhhY3QgbW9kZSB0aGV5IGNhcmUgYWJvdXQuICBIRUFQX1VQREFU RV9BTExfSU5ERVhFUworICoJaXMgdGhlIHplcm8vZmFsc2UgdmFsdWUgYW5kIGRvdWJsZXMg YXMgYSBkaXN0aW5ndWlzaGVkICJubyBIT1QiIHNlbnRpbmVsCisgKgkoZS5nLiB0ZXN0aW5n IGhvdF9tb2RlICE9IEhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTKSwgYnV0IHRoZSB2YWx1ZXMg YXJlIG5vdAorICoJbWVhbmluZ2Z1bCBhcyBhIG51bWVyaWMgb3JkZXJpbmcuCisgKi8KK3R5 cGVkZWYgZW51bSBIZWFwVXBkYXRlSW5kZXhNb2RlCit7CisJSEVBUF9VUERBVEVfQUxMX0lO REVYRVMgPSAwLAorCUhFQVBfSEVBUF9PTkxZX1VQREFURSA9IDEsCisJSEVBUF9TRUxFQ1RJ VkVfSU5ERVhfVVBEQVRFID0gMiwKK30gSGVhcFVwZGF0ZUluZGV4TW9kZTsKKwogZXh0ZXJu IFRNX1Jlc3VsdCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBv aW50ZXJEYXRhICpvdGlkLAogCQkJCQkJCSBIZWFwVHVwbGUgbmV3dHVwLCBDb21tYW5kSWQg Y2lkLCB1aW50MzIgb3B0aW9ucywKIAkJCQkJCQkgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9v bCB3YWl0LAotCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgY29uc3QgTG9ja1R1cGxl TW9kZSBsb2NrbW9kZSwKLQkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhf YXR0cnMsIGNvbnN0IGJvb2wgaG90X2FsbG93ZWQpOworCQkJCQkJCSBUTV9GYWlsdXJlRGF0 YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSBsb2NrbW9kZSwKKwkJCQkJCQkgY29uc3QgQml0bWFw c2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCisJCQkJCQkJIEhlYXBVcGRhdGVJbmRleE1vZGUg aG90X21vZGUpOwogZXh0ZXJuIFRNX1Jlc3VsdCBoZWFwX2xvY2tfdHVwbGUoUmVsYXRpb24g cmVsYXRpb24sIEhlYXBUdXBsZSB0dXBsZSwKIAkJCQkJCQkJIENvbW1hbmRJZCBjaWQsIExv Y2tUdXBsZU1vZGUgbW9kZSwgTG9ja1dhaXRQb2xpY3kgd2FpdF9wb2xpY3ksCiAJCQkJCQkJ CSBib29sIGZvbGxvd191cGRhdGVzLApAQCAtNDIzLDcgKzQ1OSw3IEBAIGV4dGVybiBib29s IGhlYXBfdHVwbGVfbmVlZHNfZXZlbnR1YWxfZnJlZXplKEhlYXBUdXBsZUhlYWRlciB0dXBs ZSk7CiBleHRlcm4gdm9pZCBzaW1wbGVfaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24s IEhlYXBUdXBsZSB0dXApOwogZXh0ZXJuIHZvaWQgc2ltcGxlX2hlYXBfZGVsZXRlKFJlbGF0 aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZCk7CiBleHRlcm4gdm9p ZCBzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqb3RpZCwKLQkJCQkJCQkgICBIZWFwVHVwbGUgdHVwLCBUVV9VcGRhdGVJbmRl eGVzICp1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJICAgSGVhcFR1cGxlIHR1cCwgYm9vbCAq dXBkYXRlX2FsbF9pbmRleGVzKTsKIAogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRl eF9kZWxldGVfdHVwbGVzKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJICBUTV9JbmRleERl bGV0ZU9wICpkZWxzdGF0ZSk7CkBAIC00MzQsNyArNDcwLDEwIEBAIGV4dGVybiB2b2lkIGhl YXBhbV9pbmRleF9mZXRjaF9yZXNldChJbmRleEZldGNoVGFibGVEYXRhICpzY2FuKTsKIGV4 dGVybiB2b2lkIGhlYXBhbV9pbmRleF9mZXRjaF9lbmQoSW5kZXhGZXRjaFRhYmxlRGF0YSAq c2Nhbik7CiBleHRlcm4gYm9vbCBoZWFwX2hvdF9zZWFyY2hfYnVmZmVyKEl0ZW1Qb2ludGVy IHRpZCwgUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCSAgIEJ1ZmZlciBidWZmZXIsIFNu YXBzaG90IHNuYXBzaG90LCBIZWFwVHVwbGUgaGVhcFR1cGxlLAotCQkJCQkJCQkgICBib29s ICphbGxfZGVhZCwgYm9vbCBmaXJzdF9jYWxsKTsKKwkJCQkJCQkJICAgYm9vbCAqYWxsX2Rl YWQsIGJvb2wgZmlyc3RfY2FsbCwKKwkJCQkJCQkJICAgYm9vbCAqaG90X2luZGV4ZWRfcmVj aGVjaywKKwkJCQkJCQkJICAgdWludDggKmNyb3NzZWRfYml0bWFwLAorCQkJCQkJCQkgICBi b29sICpwcmVmaXhfYWxsX2RlYWQpOwogZXh0ZXJuIGJvb2wgaGVhcGFtX2luZGV4X2ZldGNo X3R1cGxlKHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICpzY2FuLAogCQkJCQkJCQkJIEl0 ZW1Qb2ludGVyIHRpZCwgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCQkgVHVwbGVUYWJs ZVNsb3QgKnNsb3QsIGJvb2wgKmhlYXBfY29udGludWUsCkBAIC00NjQsOCArNTAzLDkgQEAg ZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICp1bnVzZWQsIGlu dCBudW51c2VkKTsKIAogLyogaW4gaGVhcC9oZWFwYW0uYyAqLwotZXh0ZXJuIGJvb2wgSGVh cFVwZGF0ZUhvdEFsbG93YWJsZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0 ICptb2RpZmllZF9pZHhfYXR0cnMsCi0JCQkJCQkJCSAgIGJvb2wgKnN1bW1hcml6ZWRfb25s eSk7CisKK2V4dGVybiBIZWFwVXBkYXRlSW5kZXhNb2RlIEhlYXBVcGRhdGVIb3RBbGxvd2Fi bGUoUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJCQkJCQljb25zdCBCaXRtYXBzZXQgKm1v ZGlmaWVkX2lkeF9hdHRycyk7CiBleHRlcm4gTG9ja1R1cGxlTW9kZSBIZWFwVXBkYXRlRGV0 ZXJtaW5lTG9ja21vZGUoUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJCQkgY29uc3Qg Qml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MvcmVsc2Nhbi5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApp bmRleCAyZWEwNmE2N2E2My4uZmU0NDY5MTc4YWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9yZWxzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApA QCAtMTM0LDYgKzEzNCw0NSBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRh CiAJICogcGVybWl0dGVkLgogCSAqLwogCXVpbnQzMgkJZmxhZ3M7CisKKwkvKgorCSAqIFNp ZGUgY2hhbm5lbCBmb3IgdGFibGUgQU1zIHdob3NlIHVwZGF0ZSBjaGFpbnMgY2FuIHJlYWNo IGEgZGlmZmVyZW50CisJICogc2V0IG9mIGluZGV4LWtleSB2YWx1ZXMgdGhhbiB0aGUgYXJy aXZpbmcgaW5kZXggZW50cnkgcmVjb3JkZWQgKGhlYXAncworCSAqIEhPVC1zZWxlY3RpdmVs eS11cGRhdGVkIGNoYWlucykuICBTZXQgdHJ1ZSBieSB0aGUgdGFibGUgQU0gd2hlbiB0aGUK KwkgKiB3YWxrIHRvIHRoZSBsaXZlIHR1cGxlIGNyb3NzZWQgYSBIT1QvU0lVIGhvcCBhZnRl ciB0aGUgZW50cnkncyBvd24KKwkgKiB0dXBsZSwgbWVhbmluZyB0aGUgYXJyaXZpbmcgZW50 cnkncyBzdG9yZWQga2V5IG1heSBubyBsb25nZXIgbWF0Y2ggdGhlCisJICogbGl2ZSB0dXBs ZSBhbmQgdGhlIGluZGV4LWFjY2VzcyBsYXllciBtdXN0IHJlY2hlY2sgaXQuICBMZWZ0IGZh bHNlIHdoZW4KKwkgKiBubyBzdWNoIGhvcCB3YXMgY3Jvc3NlZCAodGhlIGVudHJ5IGlzIGRl ZmluaXRlbHkgY3VycmVudCksIGFuZCBhbHdheXMKKwkgKiBmYWxzZSBmb3IgQU1zIHdpdGhv dXQgc3VjaCBjaGFpbnMuCisJICovCisJYm9vbAkJeHNfaG90X2luZGV4ZWRfcmVjaGVjazsK KworCS8qCisJICogQ29tcGFuaW9uIHRvIHhzX2hvdF9pbmRleGVkX3JlY2hlY2suICB4c19o b3RfaW5kZXhlZF9jcm9zc2VkIGlzIHRoZQorCSAqIHVuaW9uIG9mIHRoZSBwZXItaG9wIG1v ZGlmaWVkLWF0dHJzIGJpdG1hcHMgdGhlIHdhbGsgY3Jvc3NlZCBhZnRlciB0aGUKKwkgKiBl bnRyeSdzIG93biB0dXBsZSwgb3ZlciBoZWFwIGF0dHJpYnV0ZSBudW1iZXJzIChiaXQgYXR0 bnVtLTEgZm9yIGEKKwkgKiAxLWJhc2VkIGF0dG51bSkuICBUaGUgaW5kZXgtYWNjZXNzIGxh eWVyIHRlc3RzIGl0IGFnYWluc3QgdGhlIGFycml2aW5nCisJICogaW5kZXgncyBrZXkgY29s dW1ucyB0byBqdWRnZSBzdGFsZW5lc3Mgd2l0aG91dCBhIGtleSBjb21wYXJpc29uOiBhbnkK KwkgKiBvdmVybGFwIG1lYW5zIGEgY3Jvc3NlZCBob3AgY2hhbmdlZCBvbmUgb2YgdGhlIGlu ZGV4J3MgaW5wdXRzLCBzbyB0aGUKKwkgKiBlbnRyeSBpcyBzdGFsZS4gIFRoZSB1bmlvbiBp cyBjb21wbGV0ZSAoZXZlcnkgY3Jvc3NlZCBsaXZlIGhvcCBhbmQKKwkgKiBjb2xsYXBzZS1z dXJ2aXZvciBzdHViIGNvbnRyaWJ1dGVzIGl0cyBiaXRtYXAsIGFuZCBjb2xsYXBzZSBvbmx5 CisJICogcmVjbGFpbXMgbWVtYmVycyBzdWJzdW1lZCBieSBzdXJ2aXZpbmcgaG9wcyksIHNv IGRpc2pvaW50bmVzcyByZWxpYWJseQorCSAqIG1lYW5zIGZyZXNoLiAgSXQgaXMgTlVMTCBm b3IgQU1zIHdpdGhvdXQgc3VjaCBjaGFpbnMgYW5kIGlzIHNpemVkIGJ5CisJICogdGhlIHRh YmxlIEFNIGZvciB0aGUgaGVhcCByZWxhdGlvbidzIGNvbHVtbiBjb3VudC4KKwkgKi8KKwl1 aW50OAkgICAqeHNfaG90X2luZGV4ZWRfY3Jvc3NlZDsKKworCS8qCisJICogU2V0IGJ5IHRo ZSB0YWJsZSBBTSB3aGVuIGl0IHJldHVybnMgYSB0dXBsZTogdHJ1ZSBpZmYgZXZlcnkgY2hh aW4KKwkgKiBtZW1iZXIgdGhlIHdhbGsgc2tpcHBlZCBiZWZvcmUgcmVhY2hpbmcgdGhlIHJl dHVybmVkICh2aXNpYmxlKSB0dXBsZSBpcworCSAqIGRlYWQgdG8gYWxsIHRyYW5zYWN0aW9u cyAoYmVsb3cgdGhlIGdsb2JhbCB4bWluIGhvcml6b24pLiAgQ29tYmluZWQKKwkgKiB3aXRo IGEgc3RhbGUgdmVyZGljdCAodGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBvdmVybGFw cGVkIHRoZQorCSAqIGluZGV4J3Mga2V5IGNvbHVtbnMpLCB0aGlzIGxldHMgdGhlIGluZGV4 LWFjY2VzcyBsYXllcgorCSAqIGtpbGwgdGhlIGFycml2aW5nIGxlYWY6IG5vIHNuYXBzaG90 IGNhbiByZWFjaCBhIG1hdGNoaW5nIHZlcnNpb24KKwkgKiB0aHJvdWdoIGl0LCBzbyBpdCBp cyByZWR1bmRhbnQuICBBTXMgd2l0aG91dCBzdWNoIGNoYWlucyBsZWF2ZSBpdAorCSAqIGZh bHNlLgorCSAqLworCWJvb2wJCXhzX3ByZWZpeF9hbGxfZGVhZDsKIH0gSW5kZXhGZXRjaFRh YmxlRGF0YTsKIAogc3RydWN0IEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbjsKQEAgLTE1NCw2 ICsxOTMsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhTY2FuRGVzY0RhdGEKIAlzdHJ1Y3Qg U2NhbktleURhdGEgKmtleURhdGE7CS8qIGFycmF5IG9mIGluZGV4IHF1YWxpZmllciBkZXNj cmlwdG9ycyAqLwogCXN0cnVjdCBTY2FuS2V5RGF0YSAqb3JkZXJCeURhdGE7CS8qIGFycmF5 IG9mIG9yZGVyaW5nIG9wIGRlc2NyaXB0b3JzICovCiAJYm9vbAkJeHNfd2FudF9pdHVwOwkv KiBjYWxsZXIgcmVxdWVzdHMgaW5kZXggdHVwbGVzICovCisJYm9vbAkJeHNfaW5kZXhfb25s eTsJLyogY2FsbGVyIGlzIGFuIGluZGV4LW9ubHkgc2NhbiB0aGF0IG1heQorCQkJCQkJCQkg KiByZXR1cm4gdHVwbGVzIHdpdGhvdXQgZmV0Y2hpbmcgdGhlIGhlYXA7CisJCQkJCQkJCSAq IEFNcyBtdXN0IHJldGFpbiBsZWFmLXBhZ2UgcGlucyBmb3Igc3VjaAorCQkJCQkJCQkgKiBz Y2FucyAoVk0gYWxsLXZpc2libGUgLyBUSUQtcmVjeWNsZSByYWNlKSwKKwkJCQkJCQkJICog d2hlcmVhcyBhIHBsYWluIHNjYW4gdGhhdCBzZXRzIHhzX3dhbnRfaXR1cAorCQkJCQkJCQkg KiBvbmx5IHRvIGluc3BlY3QgdGhlIGluZGV4IHR1cGxlIHN0aWxsCisJCQkJCQkJCSAqIGZl dGNoZXMgdGhlIGhlYXAgYW5kIG1heSBkcm9wIHBpbnMgKi8KIAlib29sCQl4c190ZW1wX3Nu YXA7CS8qIHVucmVnaXN0ZXIgc25hcHNob3QgYXQgc2NhbiBlbmQ/ICovCiAKIAkvKiBzaWdu YWxpbmcgdG8gaW5kZXggQU0gYWJvdXQga2lsbGluZyBpbmRleCB0dXBsZXMgKi8KQEAgLTE4 OSw2ICsyMzUsMjAgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhTY2FuRGVzY0RhdGEKIAogCWJv b2wJCXhzX3JlY2hlY2s7CQkvKiBUIG1lYW5zIHNjYW4ga2V5cyBtdXN0IGJlIHJlY2hlY2tl ZCAqLwogCisJLyoKKwkgKiBUIG1lYW5zIHRoZSBpbmRleCBlbnRyeSB0aGF0IHJlYWNoZWQg eHNfaGVhcHRpZCBpcyBzdGFsZTogdGhlIEhPVCBjaGFpbgorCSAqIHdhbGtlZCB0byByZWFj aCB0aGUgdHVwbGUgY3Jvc3NlZCBhIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIChIT1QvU0lV KQorCSAqIGhvcCB0aGF0IGNoYW5nZWQgYW4gYXR0cmlidXRlIHRoaXMgaW5kZXggY292ZXJz LCBzbyB0aGUgYXJyaXZpbmcKKwkgKiBlbnRyeSdzIHN0b3JlZCBrZXkgbm8gbG9uZ2VyIG1h dGNoZXMgdGhlIGxpdmUgdHVwbGUuICBUaGUgZXhlY3V0b3IKKwkgKiBkcm9wcyBzdWNoIGEg dHVwbGU7IHRoZSByb3cgaXMgcmUtc3VwcGxpZWQgYnkgdGhlIGZyZXNoIGVudHJ5IGluc2Vy dGVkCisJICogZm9yIHRoZSBuZXcgdmFsdWUuICBVbmxpa2UgeHNfcmVjaGVjayAoc2V0IGJ5 IGxvc3N5IEFNcyBzdWNoIGFzIEdpU1QKKwkgKiBhbmQgR0lOKSwgdGhpcyBpcyBjb21wdXRl ZCBieSB0aGUgaW5kZXgtYWNjZXNzIGxheWVyIGJ5IHRlc3RpbmcgdGhlCisJICogaGVhcCBB TSdzIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCAoeHNfaG90X2luZGV4ZWRfY3Jvc3NlZCkg YWdhaW5zdAorCSAqIHRoaXMgaW5kZXgncyBrZXkgY29sdW1uczogYW55IG92ZXJsYXAgbWVh bnMgYSBjcm9zc2VkIGhvcCBjaGFuZ2VkIG9uZQorCSAqIG9mIHRoZSBpbmRleCdzIGlucHV0 cywgc28gdGhlIGVudHJ5IGlzIHN0YWxlLgorCSAqLworCWJvb2wJCXhzX2hvdF9pbmRleGVk X3N0YWxlOworCiAJLyoKIAkgKiBXaGVuIGZldGNoaW5nIHdpdGggYW4gb3JkZXJpbmcgb3Bl cmF0b3IsIHRoZSB2YWx1ZXMgb2YgdGhlIE9SREVSIEJZCiAJICogZXhwcmVzc2lvbnMgb2Yg dGhlIGxhc3QgcmV0dXJuZWQgdHVwbGUsIGFjY29yZGluZyB0byB0aGUgaW5kZXguICBJZgpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggYTk3NzhiMzUyOGQuLjdhYTk0NDM2OWRiIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmgKQEAgLTE5LDYgKzE5LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vz cy9yZWxzY2FuLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3NkaXIuaCIKKyNpbmNsdWRlICJhY2Nl c3Mvc3lzYXR0ci5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiZXhl Y3V0b3IvdHVwdGFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCkBA IC0yOCw2ICsyOSwxOCBAQAogCiAjZGVmaW5lIERFRkFVTFRfVEFCTEVfQUNDRVNTX01FVEhP RAkiaGVhcCIKIAorLyoKKyAqIFdob2xlLXJvdyBzZW50aW5lbCBmb3IgdGhlIGluL291dCBt b2RpZmllZC1hdHRyaWJ1dGVzIHNldCBvZgorICogdGFibGVfdHVwbGVfdXBkYXRlKCkuICBP biBpbnB1dCB0aGUgY2FsbGVyIHN1cHBsaWVzIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMKKyAq IHdob3NlIHZhbHVlcyBjaGFuZ2VkLiAgQSB0YWJsZSBBTSB0aGF0IHN0b3JlZCB0aGUgbmV3 IHR1cGxlIGFzIGFuCisgKiBpbmRlcGVuZGVudCB2ZXJzaW9uIG5vdCByZWFjaGFibGUgdGhy b3VnaCB0aGUgZXhpc3RpbmcgaW5kZXggZW50cmllcyAoZm9yCisgKiBoZWFwLCBhIG5vbi1I T1QgdXBkYXRlKSBhZGRzIHRoaXMgd2hvbGUtcm93IGF0dHJpYnV0ZSAoYXR0cmlidXRlIG51 bWJlciAwLAorICogRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciBjb252ZW50 aW9uKSBvbiBvdXRwdXQsIHNpZ25hbGxpbmcgdGhhdAorICogZXZlcnkgaW5kZXggbmVlZHMg YSBuZXcgZW50cnkuICBEaWZmaW5nIHJlYWwgY29sdW1ucyBuZXZlciB5aWVsZHMgYXR0cmli dXRlCisgKiAwLCBzbyBpdCBpcyB1bmFtYmlndW91cyBhcyB0aGlzIHNlbnRpbmVsLgorICov CisjZGVmaW5lIFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzCSgwIC0gRmlyc3RMb3dJbnZh bGlkSGVhcEF0dHJpYnV0ZU51bWJlcikKKwogLyogR1VDcyAqLwogZXh0ZXJuIFBHRExMSU1Q T1JUIGNoYXIgKmRlZmF1bHRfdGFibGVfYWNjZXNzX21ldGhvZDsKIGV4dGVybiBQR0RMTElN UE9SVCBib29sIHN5bmNocm9uaXplX3NlcXNjYW5zOwpAQCAtMTI1LDIyICsxMzgsNiBAQCB0 eXBlZGVmIGVudW0gVE1fUmVzdWx0CiAJVE1fV291bGRCbG9jaywKIH0gVE1fUmVzdWx0Owog Ci0vKgotICogUmVzdWx0IGNvZGVzIGZvciB0YWJsZV91cGRhdGUoLi4uLCB1cGRhdGVfaW5k ZXhlcyouLikuCi0gKiBVc2VkIHRvIGRldGVybWluZSB3aGljaCBpbmRleGVzIHRvIHVwZGF0 ZS4KLSAqLwotdHlwZWRlZiBlbnVtIFRVX1VwZGF0ZUluZGV4ZXMKLXsKLQkvKiBObyBpbmRl eGVkIGNvbHVtbnMgd2VyZSB1cGRhdGVkIChpbmNsLiBUSUQgYWRkcmVzc2luZyBvZiB0dXBs ZSkgKi8KLQlUVV9Ob25lLAotCi0JLyogQSBub24tc3VtbWFyaXppbmcgaW5kZXhlZCBjb2x1 bW4gd2FzIHVwZGF0ZWQsIG9yIHRoZSBUSUQgaGFzIGNoYW5nZWQgKi8KLQlUVV9BbGwsCi0K LQkvKiBPbmx5IHN1bW1hcml6ZWQgY29sdW1ucyB3ZXJlIHVwZGF0ZWQsIFRJRCBpcyB1bmNo YW5nZWQgKi8KLQlUVV9TdW1tYXJpemluZywKLX0gVFVfVXBkYXRlSW5kZXhlczsKLQogLyoK ICAqIFdoZW4gdGFibGVfdHVwbGVfdXBkYXRlLCB0YWJsZV90dXBsZV9kZWxldGUsIG9yIHRh YmxlX3R1cGxlX2xvY2sgZmFpbAogICogYmVjYXVzZSB0aGUgdGFyZ2V0IHR1cGxlIGlzIGFs cmVhZHkgb3V0ZGF0ZWQsIHRoZXkgZmlsbCBpbiB0aGlzIHN0cnVjdCB0bwpAQCAtNDg4LDYg KzQ4NSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBUYWJsZUFtUm91dGluZQogCSAqIGluZGV4X2Zl dGNoX3R1cGxlIGlmZiBpdCBpcyBndWFyYW50ZWVkIHRoYXQgbm8gYmFja2VuZCBuZWVkcyB0 byBzZWUKIAkgKiB0aGF0IHR1cGxlLiBJbmRleCBBTXMgY2FuIHVzZSB0aGF0IHRvIGF2b2lk IHJldHVybmluZyB0aGF0IHRpZCBpbgogCSAqIGZ1dHVyZSBzZWFyY2hlcy4KKwkgKgorCSAq IElmIGEgdHVwbGUgaXMgcmV0dXJuZWQgYW5kIHRoZSB0YWJsZSBBTSByZWFjaGVkIGl0IGJ5 IHdhbGtpbmcgYSBIT1QKKwkgKiBjaGFpbiB0aGF0IGNyb3NzZWQgYSBIT1Qtc2VsZWN0aXZl bHktdXBkYXRlZCAoSE9UL1NJVSkgaG9wIGFmdGVyIHRoZQorCSAqIGFycml2aW5nIGVudHJ5 J3Mgb3duIHR1cGxlLCBpdCBzZXRzIHNjYW4tPnhzX2hvdF9pbmRleGVkX3JlY2hlY2sgKHNl ZQorCSAqIHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhKSB0byB0ZWxsIHRoZSBpbmRleC1h Y2Nlc3MgbGF5ZXIgdG8gcmVjaGVjaworCSAqIHRoZSBhcnJpdmluZyBsZWFmIGtleSBhZ2Fp bnN0IHRoZSBsaXZlIHR1cGxlLiAgQU1zIHdpdGhvdXQgc3VjaCB1cGRhdGUKKwkgKiBjaGFp bnMgbGVhdmUgaXQgZmFsc2UuCiAJICovCiAJYm9vbAkJKCppbmRleF9mZXRjaF90dXBsZSkg KHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICpzY2FuLAogCQkJCQkJCQkJICBJdGVtUG9p bnRlciB0aWQsCkBAIC01ODYsOCArNTkwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJv dXRpbmUKIAkJCQkJCQkJIGJvb2wgd2FpdCwKIAkJCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0 bWZkLAogCQkJCQkJCQkgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCi0JCQkJCQkJCSBjb25z dCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywKLQkJCQkJCQkJIFRVX1VwZGF0ZUlu ZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJIEJpdG1hcHNldCAqKm1vZGlmaWVk X2F0dHJzKTsKIAogCS8qIHNlZSB0YWJsZV90dXBsZV9sb2NrKCkgZm9yIHJlZmVyZW5jZSBh Ym91dCBwYXJhbWV0ZXJzICovCiAJVE1fUmVzdWx0CSgqdHVwbGVfbG9jaykgKFJlbGF0aW9u IHJlbCwKQEAgLTEzMTksMTEgKzEzMjIsMjAgQEAgdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUo c3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4sCiAgKiByZXR1cm5zIHdoZXRoZXIg dGhlcmUgYXJlIHRhYmxlIHR1cGxlIGl0ZW1zIGNvcnJlc3BvbmRpbmcgdG8gYW4gaW5kZXgK ICAqIGVudHJ5LiAgVGhpcyBsaWtlbHkgaXMgb25seSB1c2VmdWwgdG8gdmVyaWZ5IGlmIHRo ZXJlJ3MgYSBjb25mbGljdCBpbiBhCiAgKiB1bmlxdWUgaW5kZXguCisgKgorICogSWYga2Vl cF9zbG90IGlzIG5vbi1OVUxMLCBvbiBhIHBvc2l0aXZlIHJlc3VsdCB0aGUgZnVuY3Rpb24g c3RvcmVzIHRoZQorICogZmV0Y2hlZCB0dXBsZSBpbnRvICprZWVwX3Nsb3QgKHdoaWNoIG11 c3QgYmUgYSB2YWxpZCBzbG90IG9mIHRoZQorICogcmVsYXRpb24ncyB0eXBlKSBhbmQgcmV0 dXJucyB3aXRoIHRoZSBzbG90IHBvcHVsYXRlZDsgdGhlIGNhbGxlciBpcworICogcmVzcG9u c2libGUgZm9yIGNsZWFyaW5nIHRoZSBzbG90LiAgV2hlbiBrZWVwX3Nsb3QgaXMgTlVMTCBh IHRlbXBvcmFyeQorICogc2xvdCBpcyBjcmVhdGVkIGludGVybmFsbHkgYW5kIGRyb3BwZWQg YmVmb3JlIHJldHVybiwgbWF0Y2hpbmcgdGhlCisgKiBwcmUtZXhpc3RpbmcgYmVoYXZpb3Vy LgogICovCiBleHRlcm4gYm9vbCB0YWJsZV9pbmRleF9mZXRjaF90dXBsZV9jaGVjayhSZWxh dGlvbiByZWwsCiAJCQkJCQkJCQkJICBJdGVtUG9pbnRlciB0aWQsCiAJCQkJCQkJCQkJICBT bmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCQkJCQkgIGJvb2wgKmFsbF9kZWFkKTsKKwkJCQkJ CQkJCQkgIGJvb2wgKmFsbF9kZWFkLAorCQkJCQkJCQkJCSAgYm9vbCAqaG90X2luZGV4ZWRf cmVjaGVja19vdXQsCisJCQkJCQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqa2VlcF9zbG90KTsK IAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE1NzQsMTIgKzE1ODYsMjAgQEAgdGFi bGVfdHVwbGVfZGVsZXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgdGlkLCBDb21tYW5k SWQgY2lkLAogICoJCVRBQkxFX1VQREFURV9OT19MT0dJQ0FMIC0tIGZvcmNlLWRpc2FibGVz IHRoZSBlbWl0dGluZyBvZiBsb2dpY2FsCiAgKgkJZGVjb2RpbmcgaW5mb3JtYXRpb24gZm9y IHRoZSB0dXBsZS4KICAqCisgKiBJbiBwYXJhbWV0ZXJzOgorICoJbW9kaWZpZWRfYXR0cnMg LSBpbi9vdXQ7IG9uIGlucHV0LCB0aGUgc2V0IG9mIGluZGV4ZWQgYXR0cmlidXRlcyB3aG9z ZQorICoJCXZhbHVlcyBjaGFuZ2VkIChGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVt YmVyIGNvbnZlbnRpb24pLiAgQQorICoJCXRhYmxlIEFNIG1heSB1c2UgdGhpcyB0byBjaG9v c2UgYmV0d2VlbiBIT1QgYW5kIG5vbi1IT1Qgc3RvcmFnZSBvZiB0aGUKKyAqCQluZXcgdHVw bGUuICBPbiBvdXRwdXQgdGhlIEFNIGFkZHMgdGhlIHdob2xlLXJvdyBhdHRyaWJ1dGUKKyAq CQkoVGFibGVUdXBsZVVwZGF0ZUFsbEluZGV4ZXMpIGlmZiBpdCBzdG9yZWQgdGhlIG5ldyB0 dXBsZSBhcyBhbgorICoJCWluZGVwZW5kZW50IHZlcnNpb24gcmVxdWlyaW5nIGEgZnJlc2gg ZW50cnkgaW4gZXZlcnkgaW5kZXg7IG90aGVyd2lzZQorICoJCXRoZSBjYWxsZXIgY29uc3Vs dHMgZWFjaCBpbmRleCdzIG93biBhdHRyaWJ1dGVzIGFnYWluc3QgdGhpcyBzZXQgdG8KKyAq CQlkZWNpZGUgcGVyIGluZGV4ICh0aGUgc3RhbmRhcmQgSE9UIC8gc2VsZWN0aXZlLWluZGV4 LXVwZGF0ZSBjYXNlcykuCisgKgogICogT3V0cHV0IHBhcmFtZXRlcnM6CiAgKglzbG90IC0g bmV3bHkgY29uc3RydWN0ZWQgdHVwbGUgZGF0YSB0byBzdG9yZQogICoJdG1mZCAtIGZpbGxl ZCBpbiBmYWlsdXJlIGNhc2VzIChzZWUgYmVsb3cpCiAgKglsb2NrbW9kZSAtIGZpbGxlZCB3 aXRoIGxvY2sgbW9kZSBhY3F1aXJlZCBvbiB0dXBsZQotICoJdXBkYXRlX2luZGV4ZXMgLSBp biBzdWNjZXNzIGNhc2VzIHRoaXMgaXMgc2V0IGlmIG5ldyBpbmRleCBlbnRyaWVzCi0gKgkJ YXJlIHJlcXVpcmVkIGZvciB0aGlzIHR1cGxlOyBzZWUgVFVfVXBkYXRlSW5kZXhlcwogICoK ICAqIE5vcm1hbCwgc3VjY2Vzc2Z1bCByZXR1cm4gdmFsdWUgaXMgVE1fT2ssIHdoaWNoIG1l YW5zIHdlIGRpZCBhY3R1YWxseQogICogdXBkYXRlIGl0LiAgRmFpbHVyZSByZXR1cm4gY29k ZXMgYXJlIFRNX1NlbGZNb2RpZmllZCwgVE1fVXBkYXRlZCwgYW5kCkBAIC0xNjAwLDEyICsx NjIwLDIwIEBAIHRhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVy IG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCSAgIENvbW1hbmRJZCBjaWQsIHVp bnQzMiBvcHRpb25zLAogCQkJCSAgIFNuYXBzaG90IHNuYXBzaG90LCBTbmFwc2hvdCBjcm9z c2NoZWNrLAogCQkJCSAgIGJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsIExvY2tU dXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJCSAgIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRf aWR4X2F0dHJzLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkgICBC aXRtYXBzZXQgKiptb2RpZmllZF9hdHRycykKIHsKKwkvKgorCSAqICptb2RpZmllZF9hdHRy cyBtYXkgYWxyZWFkeSBjb250YWluIFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzIG9uIGlu cHV0CisJICogd2hlbiBhbiBpbmRleCBleHByZXNzaW9uIHJlZmVyZW5jZXMgYSB3aG9sZS1y b3cgVmFyIChzZWUgdGhlIG5vdGUgaW4KKwkgKiBFeGVjVXBkYXRlQWN0KTsgdGhlIEFNIGFs c28gdXNlcyB0aGUgc2VudGluZWwgYXMgYW4gb3V0cHV0IHNpZ25hbC4gIEJvdGgKKwkgKiBt ZWFuICJ1cGRhdGUgYWxsIGluZGV4ZXMiLCBzbyBvbmx5IHJlcXVpcmUgbW9kaWZpZWRfYXR0 cnMgaXRzZWxmIHRvIGJlCisJICogbm9uLU5VTEwgZm9yIHRoZSBpbi10cmVlIGhlYXAgQU0s IHdoaWNoIGRlcmVmZXJlbmNlcyBpdCB1bmNvbmRpdGlvbmFsbHkuCisJICovCisJQXNzZXJ0 KG1vZGlmaWVkX2F0dHJzICE9IE5VTEwpOwogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnR1 cGxlX3VwZGF0ZShyZWwsIG90aWQsIHNsb3QsCiAJCQkJCQkJCQkJIGNpZCwgb3B0aW9ucywg c25hcHNob3QsIGNyb3NzY2hlY2ssCiAJCQkJCQkJCQkJIHdhaXQsIHRtZmQsIGxvY2ttb2Rl LAotCQkJCQkJCQkJCSBtb2RpZmllZF9pZHhfYXR0cnMsIHVwZGF0ZV9pbmRleGVzKTsKKwkJ CQkJCQkJCQkgbW9kaWZpZWRfYXR0cnMpOwogfQogCiAvKgpAQCAtMjA5MCw4ICsyMTE4LDcg QEAgZXh0ZXJuIHZvaWQgc2ltcGxlX3RhYmxlX3R1cGxlX2RlbGV0ZShSZWxhdGlvbiByZWws IEl0ZW1Qb2ludGVyIHRpZCwKIAkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QpOwogZXh0 ZXJuIHZvaWQgc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Q b2ludGVyIG90aWQsCiAJCQkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LCBTbmFwc2hv dCBzbmFwc2hvdCwKLQkJCQkJCQkJCSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhf YXR0cnMsCi0JCQkJCQkJCQkgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsK KwkJCQkJCQkJCSAgQml0bWFwc2V0ICoqbW9kaWZpZWRfYXR0cnMpOwogCiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IDE2NjYx YmM2NmQ5Li5mNzIxMWVjZWNmZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0x OCw3ICsxOCw2IEBACiAjaW5jbHVkZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgiCiAjaW5jbHVk ZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJmbWdyLmgiCi0jaW5jbHVkZSAi bm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAibm9kZXMvbG9ja29wdGlvbnMuaCIKICNp bmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMu aCIKQEAgLTc1NSwxMSArNzU0LDEzIEBAIGV4dGVybiBCaXRtYXBzZXQgKkV4ZWNHZXRBbGxV cGRhdGVkQ29scyhSZXN1bHRSZWxJbmZvICpyZWxpbmZvLCBFU3RhdGUgKmVzdGF0ZSk7CiAg Ki8KIGV4dGVybiB2b2lkIEV4ZWNPcGVuSW5kaWNlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRS ZWxJbmZvLCBib29sIHNwZWN1bGF0aXZlKTsKIGV4dGVybiB2b2lkIEV4ZWNDbG9zZUluZGlj ZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbyk7CitleHRlcm4gdm9pZCBFeGVjU2V0 SW5kZXhVbmNoYW5nZWQoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJ ICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycyk7CiAKIC8qIGZsYWdzIGZv ciBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMgKi8KICNkZWZpbmUJCUVJSVRfSVNfVVBEQVRFCQkJ KDE8PDApCiAjZGVmaW5lCQlFSUlUX05PX0RVUEVfRVJST1IJCSgxPDwxKQotI2RlZmluZQkJ RUlJVF9PTkxZX1NVTU1BUklaSU5HCSgxPDwyKQorI2RlZmluZQkJRUlJVF9JU19IT1RfSU5E RVhFRAkJKDE8PDIpCiBleHRlcm4gTGlzdCAqRXhlY0luc2VydEluZGV4VHVwbGVzKFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8sIEVTdGF0ZSAqZXN0YXRlLAogCQkJCQkJCQkgICB1 aW50MzIgZmxhZ3MsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQkJCQkgICBMaXN0ICph cmJpdGVySW5kZXhlcywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggZTY0ZmQ4YzdlYTMu LjJlMzcxMjIwNWE0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMjE2LDEwICsyMTYs MTggQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJbmZvCiAJYm9vbAkJaWlfTnVsbHNOb3REaXN0 aW5jdDsKIAkvKiBpcyBpdCB2YWxpZCBmb3IgaW5zZXJ0cz8gKi8KIAlib29sCQlpaV9SZWFk eUZvckluc2VydHM7Ci0JLyogSW5kZXhVbmNoYW5nZWQgc3RhdHVzIGRldGVybWluZWQgeWV0 PyAqLwotCWJvb2wJCWlpX0NoZWNrZWRVbmNoYW5nZWQ7Ci0JLyogYW1pbnNlcnQgaGludCwg Y2FjaGVkIGZvciByZXRhaWwgaW5zZXJ0cyAqLworCS8qCisJICogYW1pbnNlcnQgaGludDog aW5kZXggbG9naWNhbGx5IHVuY2hhbmdlZCBieSBVUERBVEU/ICBOYXJyb3cgcnVsZToga2V5 CisJICogY29sdW1ucyBvbmx5OyBJTkNMVURFIGNvbHVtbnMgYW5kIHRoZSBwYXJ0aWFsLWlu ZGV4IHByZWRpY2F0ZSBhcmUgbm90CisJICogY29uc2lkZXJlZCAoZXhwcmVzc2lvbiBpbmRl eGVzIGFyZSB0cmVhdGVkIGNvbnNlcnZhdGl2ZWx5KS4KKwkgKi8KIAlib29sCQlpaV9JbmRl eFVuY2hhbmdlZDsKKwkvKgorCSAqIHNlbGVjdGl2ZSBVUERBVEU6IGRvZXMgdGhpcyBpbmRl eCBuZWVkIGEgbmV3IGVudHJ5PyAgV2lkZSBydWxlOiB0cnVlIGlmCisJICogYW55IGtleSwg SU5DTFVERSwgZXhwcmVzc2lvbiwgb3IgcHJlZGljYXRlIGNvbHVtbiBpdCByZWZlcmVuY2Vz IGNoYW5nZWQKKwkgKiAob3IgdGhlIEFNIHN0b3JlZCBhbiBpbmRlcGVuZGVudCBuZXcgdmVy c2lvbikuCisJICovCisJYm9vbAkJaWlfSW5kZXhOZWVkc1VwZGF0ZTsKIAkvKiBhcmUgd2Ug ZG9pbmcgYSBjb25jdXJyZW50IGluZGV4IGJ1aWxkPyAqLwogCWJvb2wJCWlpX0NvbmN1cnJl bnQ7CiAJLyogZGlkIHdlIGRldGVjdCBhbnkgYnJva2VuIEhPVCBjaGFpbnM/ICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCmlu ZGV4IDU4YTQ0ODU3ZjEzLi4yOGI3OTM3MGYwZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGdzdGF0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTE1MSw3ICsxNTEsMTkg QEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1RhYmxlQ291bnRzCiAJUGdTdGF0X0NvdW50ZXIg dHVwbGVzX3VwZGF0ZWQ7CiAJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX2RlbGV0ZWQ7CiAJUGdT dGF0X0NvdW50ZXIgdHVwbGVzX2hvdF91cGRhdGVkOworCVBnU3RhdF9Db3VudGVyIHR1cGxl c19ob3RfaW5kZXhlZF91cGRhdGVkOwogCVBnU3RhdF9Db3VudGVyIHR1cGxlc19uZXdwYWdl X3VwZGF0ZWQ7CisKKwkvKgorCSAqIFBlci1pbmRleCBIT1QtaW5kZXhlZCB1cGRhdGUgY291 bnRlcnMuICBNYWludGFpbmVkIG9uIHBnc3RhdCBlbnRyaWVzCisJICoga2V5ZWQgb24gYW4g aW5kZXggb2lkLCBub3Qgb24gdGhlIG93bmluZyB0YWJsZSdzIGVudHJ5LiAgVGhleSBjb3Vu dCBob3cKKwkgKiBtYW55IEhPVC1pbmRleGVkIHVwZGF0ZXMgc2tpcHBlZCB0aGlzIGluZGV4 IChrZXkgdW5jaGFuZ2VkKSB2cy4KKwkgKiBpbnNlcnRlZCBhIGZyZXNoIGVudHJ5IChrZXkg Y2hhbmdlZCkuICBTdW1tYXJpemluZyBpbmRleGVzIGRvIG5vdAorCSAqIGNvbnRyaWJ1dGUg dG8gZWl0aGVyIGNvdW50ZXIuCisJICovCisJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX2hvdF9p bmRleGVkX3VwZF9za2lwcGVkOworCVBnU3RhdF9Db3VudGVyIHR1cGxlc19ob3RfaW5kZXhl ZF91cGRfbWF0Y2hlZDsKKwogCWJvb2wJCXRydW5jZHJvcHBlZDsKIAogCVBnU3RhdF9Db3Vu dGVyIGRlbHRhX2xpdmVfdHVwbGVzOwpAQCAtMjE4LDcgKzIzMCw3IEBAIHR5cGVkZWYgc3Ry dWN0IFBnU3RhdF9UYWJsZVhhY3RTdGF0dXMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKLSNkZWZpbmUg UEdTVEFUX0ZJTEVfRk9STUFUX0lECTB4MDFBNUJDQkMKKyNkZWZpbmUgUEdTVEFUX0ZJTEVf Rk9STUFUX0lECTB4MDFBNUJDQkQKIAogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0FyY2hpdmVy U3RhdHMKIHsKQEAgLTQ2MCw4ICs0NzIsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0 YXRUYWJFbnRyeQogCVBnU3RhdF9Db3VudGVyIHR1cGxlc191cGRhdGVkOwogCVBnU3RhdF9D b3VudGVyIHR1cGxlc19kZWxldGVkOwogCVBnU3RhdF9Db3VudGVyIHR1cGxlc19ob3RfdXBk YXRlZDsKKwlQZ1N0YXRfQ291bnRlciB0dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZDsKIAlQ Z1N0YXRfQ291bnRlciB0dXBsZXNfbmV3cGFnZV91cGRhdGVkOwogCisJLyogUGVyLWluZGV4 IEhPVC1pbmRleGVkIHVwZGF0ZSBjb3VudGVycyAoc2VlIFBnU3RhdF9UYWJsZUNvdW50cyku ICovCisJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkOwor CVBnU3RhdF9Db3VudGVyIHR1cGxlc19ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZDsKKwogCVBn U3RhdF9Db3VudGVyIGxpdmVfdHVwbGVzOwogCVBnU3RhdF9Db3VudGVyIGRlYWRfdHVwbGVz OwogCVBnU3RhdF9Db3VudGVyIG1vZF9zaW5jZV9hbmFseXplOwpAQCAtNzUyLDYgKzc2OSwx NiBAQCBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2FuYWx5emUoUmVsYXRpb24gcmVsLAog CQlpZiAocGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQkJCQkJCVwKIAkJCShy ZWwpLT5wZ3N0YXRfaW5mby0+Y291bnRzLnR1cGxlc19yZXR1cm5lZCArPSAobik7CQlcCiAJ fSB3aGlsZSAoMCkKKyNkZWZpbmUgcGdzdGF0X2NvdW50X2hvdF9pbmRleGVkX3VwZF9za2lw cGVkKHJlbCkJCQkJCQlcCisJZG8gewkJCQkJCQkJCQkJCQkJCVwKKwkJaWYgKHBnc3RhdF9z aG91bGRfY291bnRfcmVsYXRpb24ocmVsKSkJCQkJCQlcCisJCQkocmVsKS0+cGdzdGF0X2lu Zm8tPmNvdW50cy50dXBsZXNfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQrKztcCisJfSB3aGls ZSAoMCkKKyNkZWZpbmUgcGdzdGF0X2NvdW50X2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkKHJl bCkJCQkJCQlcCisJZG8gewkJCQkJCQkJCQkJCQkJCVwKKwkJaWYgKHBnc3RhdF9zaG91bGRf Y291bnRfcmVsYXRpb24ocmVsKSkJCQkJCQlcCisJCQkocmVsKS0+cGdzdGF0X2luZm8tPmNv dW50cy50dXBsZXNfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQrKztcCisJfSB3aGlsZSAoMCkK ICNkZWZpbmUgcGdzdGF0X2NvdW50X2J1ZmZlcl9yZWFkKHJlbCkJCQkJCQkJCVwKIAlkbyB7 CQkJCQkJCQkJCQkJCQkJXAogCQlpZiAocGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihy ZWwpKQkJCQkJCVwKQEAgLTc2NCw3ICs3OTEsNyBAQCBleHRlcm4gdm9pZCBwZ3N0YXRfcmVw b3J0X2FuYWx5emUoUmVsYXRpb24gcmVsLAogCX0gd2hpbGUgKDApCiAKIGV4dGVybiB2b2lk IHBnc3RhdF9jb3VudF9oZWFwX2luc2VydChSZWxhdGlvbiByZWwsIFBnU3RhdF9Db3VudGVy IG4pOwotZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJl bCwgYm9vbCBob3QsIGJvb2wgbmV3cGFnZSk7CitleHRlcm4gdm9pZCBwZ3N0YXRfY291bnRf aGVhcF91cGRhdGUoUmVsYXRpb24gcmVsLCBib29sIGhvdCwgYm9vbCBob3RfaW5kZXhlZCwg Ym9vbCBuZXdwYWdlKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9jb3VudF9oZWFwX2RlbGV0ZShS ZWxhdGlvbiByZWwpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X3RydW5jYXRlKFJlbGF0 aW9uIHJlbCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfdXBkYXRlX2hlYXBfZGVhZF90dXBsZXMo UmVsYXRpb24gcmVsLCBpbnQgZGVsdGEpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRp bHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCAxN2RiZGJlNjQ1ZC4u MzA0NzgzZjBiYmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBi L3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0xNjQsNiArMTY0LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUmVsYXRpb25EYXRhCiAJQml0bWFwc2V0ICAqcmRfaWRhdHRyOwkJLyogaW5jbHVk ZWQgaW4gcmVwbGljYSBpZGVudGl0eSBpbmRleCAqLwogCUJpdG1hcHNldCAgKnJkX2luZGV4 ZWRhdHRyOyAvKiBhbGwgY29scyByZWZlcmVuY2VkIGJ5IGluZGV4ZXMgKi8KIAlCaXRtYXBz ZXQgICpyZF9zdW1tYXJpemVkYXR0cjsJLyogY29scyBpbmRleGVkIGJ5IHN1bW1hcml6aW5n IGluZGV4ZXMgKi8KKwlCaXRtYXBzZXQgICpyZF9leHByaW5kZXhhdHRyOwkvKiBjb2xzIHJl ZmVyZW5jZWQgYnkgZXhwcmVzc2lvbiBpbmRleGVzICovCiAKIAlQdWJsaWNhdGlvbkRlc2Mg KnJkX3B1YmRlc2M7CS8qIHB1YmxpY2F0aW9uIGRlc2NyaXB0b3IsIG9yIE5VTEwgKi8KIApA QCAtMjE3LDYgKzIxOCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBSZWxhdGlvbkRhdGEKIAlPaWQJ CSAgICpyZF9pbmRjb2xsYXRpb247CS8qIE9JRHMgb2YgaW5kZXggY29sbGF0aW9ucyAqLwog CWJ5dGVhCSAgKipyZF9vcGNvcHRpb25zOwkvKiBwYXJzZWQgb3BjbGFzcy1zcGVjaWZpYyBv cHRpb25zICovCiAKKwkvKgorCSAqIEJpdG1hcCBvZiBoZWFwIGF0dHJpYnV0ZSBudW1iZXJz IHJlZmVyZW5jZWQgYnkgdGhpcyBpbmRleCAoc2ltcGxlIGtleXMsCisJICogSU5DTFVERSBj b2x1bW5zLCBleHByZXNzaW9uIGNvbHVtbnMsIGFuZCBwYXJ0aWFsLWluZGV4IHByZWRpY2F0 ZQorCSAqIGNvbHVtbnMpLCBvZmZzZXQgYnkgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0 ZU51bWJlci4gTGF6aWx5IGJ1aWx0IGJ5CisJICogUmVsYXRpb25HZXRJbmRleGVkQXR0cnMo KSBhbmQgY2FjaGVkIGluIHJkX2luZGV4Y3h0LiBDb25zdW1lcnMgbXVzdAorCSAqIGJtc19j b3B5IGJlZm9yZSByZWx5aW5nIG9uIHRoZSBwb2ludGVyIGJleW9uZCBhbnkgcG90ZW50aWFs CisJICogQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKSBjYWxsLgorCSAqLworCUJpdG1h cHNldCAgKnJkX2luZGF0dHI7CisKIAkvKgogCSAqIHJkX2FtY2FjaGUgaXMgYXZhaWxhYmxl IGZvciBpbmRleCBhbmQgdGFibGUgQU1zIHRvIGNhY2hlIHByaXZhdGUgZGF0YQogCSAqIGFi b3V0IHRoZSByZWxhdGlvbi4gIFRoaXMgbXVzdCBiZSBqdXN0IGEgY2FjaGUgc2luY2UgaXQg bWF5IGdldCByZXNldApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKaW5kZXggODk3ODgwOTE1NzYuLmEz ODFhYTNlMDk1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKQEAgLTYyLDYgKzYyLDE5IEBAIGV4 dGVybiBMaXN0ICpSZWxhdGlvbkdldER1bW15SW5kZXhFeHByZXNzaW9ucyhSZWxhdGlvbiBy ZWxhdGlvbik7CiBleHRlcm4gTGlzdCAqUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShSZWxh dGlvbiByZWxhdGlvbik7CiBleHRlcm4gYnl0ZWEgKipSZWxhdGlvbkdldEluZGV4QXR0T3B0 aW9ucyhSZWxhdGlvbiByZWxhdGlvbiwgYm9vbCBjb3B5KTsKIAorLyoKKyAqIFJlbGF0aW9u R2V0SW5kZXhlZEF0dHJzIC0tIHJldHVybiBhIGZyZXNobHktcGFsbG9jJ2QgQml0bWFwc2V0 IG9mIGV2ZXJ5CisgKiBoZWFwIGF0dHJpYnV0ZSB0aGlzIGluZGV4IHJlZmVyZW5jZXMsIHZp YSBrZXlzLCBJTkNMVURFIGNvbHVtbnMsCisgKiBleHByZXNzaW9ucywgb3IgcGFydGlhbC1p bmRleCBwcmVkaWNhdGVzLgorICoKKyAqIFRoZSBhcmd1bWVudCBtdXN0IGJlIGFuIGluZGV4 IFJlbGF0aW9uIChub3QgaXRzIG93bmluZyBoZWFwKS4gIEF0dHJpYnV0ZQorICogbnVtYmVy cyBhcmUgb2Zmc2V0IGJ5IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIuICBU aGUgcmVzdWx0IGlzCisgKiBwYWxsb2MnZCBpbiB0aGUgY2FsbGVyJ3MgY29udGV4dDsgYm1z X2ZyZWUgd2hlbiBkb25lLiAgVGhlIHJlbGNhY2hlCisgKiBjYWNoZXMgaXRzIG93biBjb3B5 IGluIHJkX2luZGV4Y3h0IHNvIHN1YnNlcXVlbnQgY2FsbHMgb25seSBwYXkgZm9yIHRoZQor ICogZmluYWwgYm1zX2NvcHkuCisgKi8KK2V4dGVybiBCaXRtYXBzZXQgKlJlbGF0aW9uR2V0 SW5kZXhlZEF0dHJzKFJlbGF0aW9uIGluZGV4UmVsKTsKKwogLyoKICAqIFdoaWNoIHNldCBv ZiBjb2x1bW5zIHRvIHJldHVybiBieSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcC4KICAq LwpAQCAtNzIsMTEgKzg1LDE1IEBAIHR5cGVkZWYgZW51bSBJbmRleEF0dHJCaXRtYXBLaW5k CiAJSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZLAogCUlOREVYX0FUVFJfQklUTUFQ X0lOREVYRUQsCiAJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCwKKwlJTkRFWF9BVFRS X0JJVE1BUF9FWFBSRVNTSU9OLAogfSBJbmRleEF0dHJCaXRtYXBLaW5kOwogCiBleHRlcm4g Qml0bWFwc2V0ICpSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlv biwKIAkJCQkJCQkJCQkJIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpOwogCitleHRl cm4gY29uc3QgQml0bWFwc2V0ICpSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcE5vQ29weShS ZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkJCQkJIEluZGV4QXR0ckJpdG1hcEtpbmQg YXR0cktpbmQpOworCiBleHRlcm4gQml0bWFwc2V0ICpSZWxhdGlvbkdldElkZW50aXR5S2V5 Qml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uKTsKIAogZXh0ZXJuIHZvaWQgUmVsYXRpb25HZXRF eGNsdXNpb25JbmZvKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0CmluZGV4IDI3M2ZlMzMxMGRhLi4wNjk3OWVk MzFkMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRl cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQK QEAgLTEsMTQ3ICsxLDEzMiBAQAogLS0KIC0tIEhPVF9VUERBVEVTCi0tLSBUZXN0IEhlYXAt T25seSBUdXBsZSAoSE9UKSB1cGRhdGUgZGVjaXNpb25zCistLSBUZXN0IGNsYXNzaWMgSGVh cC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0ZSBkZWNpc2lvbnMKIC0tCi0tLSBUaGlzIHRlc3Qg c3lzdGVtYXRpY2FsbHkgdmVyaWZpZXMgdGhhdCBIT1QgdXBkYXRlcyBhcmUgdXNlZCB3aGVu IGFwcHJvcHJpYXRlCi0tLSBhbmQgYXZvaWRlZCB3aGVuIG5lY2Vzc2FyeSAoZS5nLiwgd2hl biBpbmRleGVkIGNvbHVtbnMgYXJlIG1vZGlmaWVkKS4KKy0tIFRoaXMgZmlsZSBjb3ZlcnMg SE9UIGRlY2lzaW9ucyB0aGF0IGFwcGx5IGlkZW50aWNhbGx5IG9uIGEgcHJlLWhvdC1pbmRl eGVkCistLSBzZXJ2ZXI6IGV2ZXJ5IFVQREFURSBoZXJlIGVpdGhlciBsZWF2ZXMgYWxsIGlu ZGV4ZWQgYXR0cmlidXRlcworLS0gdW5jaGFuZ2VkIG9yIHRvdWNoZXMgb25seSBzdW1tYXJp emluZy1pbmRleCAoQlJJTikgYXR0cmlidXRlcywgc28gdGhlCistLSBIT1QgdnMgbm9uLUhP VCBjaG9pY2UgZG9lcyBub3QgZGVwZW5kIG9uIHdoZXRoZXIgU2VsZWN0aXZlIEluZGV4Cist LSBVcGRhdGUgKGhvdC1pbmRleGVkKSBpcyBlbmFibGVkLiAgaG90LWluZGV4ZWQtc3BlY2lm aWMgYmVoYXZpb3VyIChVUERBVEVzIHRoYXQgbW9kaWZ5CistLSBhIG5vbi1zdW1tYXJpemlu ZyBpbmRleGVkIGF0dHJpYnV0ZSkgaXMgY292ZXJlZCBpbgorLS0gaG90X2luZGV4ZWRfdXBk YXRlcy5zcWwuCiAtLQotLS0gV2UgdXNlIG11bHRpcGxlIHZhbGlkYXRpb24gbWV0aG9kczoK LS0tIDEuIFN0YXRpc3RpY3MgZnVuY3Rpb25zIChwZ19zdGF0X2dldF90dXBsZXNfaG90X3Vw ZGF0ZWQpCi0tLSAyLiBwYWdlaW5zcGVjdCBleHRlbnNpb24gZm9yIEhPVCBjaGFpbiBleGFt aW5hdGlvbgotLS0gMy4gRVhQTEFJTiB0byB2ZXJpZnkgaW5kZXggdXNhZ2UgYWZ0ZXIgdXBk YXRlcworLS0gVmFsaWRhdGlvbiBtZXRob2RzOgorLS0gICAxLiBTdGF0aXN0aWNzIChwZ19z dGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQpCistLSAgIDIuIHBhZ2VpbnNwZWN0IGZvciBI T1QgY2hhaW4gc3RydWN0dXJlCistLSAgIDMuIEVYUExBSU4gdG8gY29uZmlybSB0aGUgcGxh bm5lciBzdGlsbCBwaWNrcyB0aGUgaW5kZXgKIC0tCiAtLSBMb2FkIHJlcXVpcmVkIGV4dGVu c2lvbnMKIENSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKLS0t IEZ1bmN0aW9uIHRvIGdldCBIT1QgdXBkYXRlIGNvdW50CistLSBTdW0gb2YgY29tbWl0dGVk IGFuZCBpbi1wcm9ncmVzcyAobm9uLUhPVCwgSE9UKSB1cGRhdGUgY291bnRlcnMuCiBDUkVB VEUgT1IgUkVQTEFDRSBGVU5DVElPTiBnZXRfaG90X2NvdW50KHJlbF9uYW1lIHRleHQpCiBS RVRVUk5TIFRBQkxFICgKICAgICB1cGRhdGVzIEJJR0lOVCwKICAgICBob3QgQklHSU5UCiAp IEFTICQkCiBERUNMQVJFCi0gIHJlbF9vaWQgb2lkOworICAgIHJlbF9vaWQgb2lkOwogQkVH SU4KLSAgcmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsKLQotICAtLSBSZWFk IGJvdGggY29tbWl0dGVkIGFuZCB0cmFuc2FjdGlvbi1sb2NhbCBzdGF0cwotICAtLSBJbiBh dXRvY29tbWl0IG1vZGUgKGRlZmF1bHQgZm9yIHJlZ3Jlc3Npb24gdGVzdHMpLCB0aGlzIHdv cmtzIGNvcnJlY3RseQotICAtLSBOb3RlOiBJbiBleHBsaWNpdCB0cmFuc2FjdGlvbnMgKEJF R0lOL0NPTU1JVCksIGNvbW1pdHRlZCBzdGF0cyBhbHJlYWR5Ci0gIC0tIGluY2x1ZGUgZmx1 c2hlZCB1cGRhdGVzLCBzbyB0aGlzIHdvdWxkIGRvdWJsZS1jb3VudC4gRm9yIGV4cGxpY2l0 Ci0gIC0tIHRyYW5zYWN0aW9uIHRlc3RpbmcsIGNhbGwgcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoKCkgYmVmb3JlIHRoaXMgZnVuY3Rpb24uCi0gIHVwZGF0ZXMgOj0gQ09BTEVTQ0UocGdf c3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApICsKLSAgICAgICAgICAgICBD T0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKTsK LSAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxf b2lkKSwgMCkgKwotICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNf aG90X3VwZGF0ZWQocmVsX29pZCksIDApOwotCi0gIFJFVFVSTiBORVhUOworICAgIHJlbF9v aWQgOj0gcmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7CisgICAgdXBkYXRlcyA6PSBDT0FMRVND RShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAg ICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChyZWxfb2lk KSwgMCk7CisgICAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBk YXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94 YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgUkVUVVJOIE5FWFQ7 CiBFTkQ7CiAkJCBMQU5HVUFHRSBwbHBnc3FsOwotLS0gQ2hlY2sgaWYgYSB0dXBsZSBpcyBw YXJ0IG9mIGEgSE9UIGNoYWluIChoYXMgYSBwcmVkZWNlc3NvciBvbiBzYW1lIHBhZ2UpCist LSBUcnVlIGlmZiB0YXJnZXRfY3RpZCBpcyB0aGUgVEFJTCBvZiBhIEhPVCBjaGFpbiBvbiB0 aGUgc2FtZSBwYWdlLgogQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gaGFzX2hvdF9jaGFp bihyZWxfbmFtZSB0ZXh0LCB0YXJnZXRfY3RpZCB0aWQpCiBSRVRVUk5TIGJvb2xlYW4gQVMg JCQKIERFQ0xBUkUKLSAgYmxvY2tfbnVtIGludDsKLSAgcGFnZV9pdGVtIHJlY29yZDsKKyAg ICBibG9ja19udW0gaW50OworICAgIHBhZ2VfaXRlbSByZWNvcmQ7CiBCRUdJTgotICBibG9j a19udW0gOj0gKHRhcmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKLQotICAtLSBM b29rIGZvciBhIGRpZmZlcmVudCB0dXBsZSBvbiB0aGUgc2FtZSBwYWdlIHRoYXQgcG9pbnRz IHRvIG91ciB0YXJnZXQgdHVwbGUKLSAgRk9SIHBhZ2VfaXRlbSBJTgotICAgIFNFTEVDVCBs cCwgbHBfZmxhZ3MsIHRfY3RpZAotICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdf cGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKLSAgICBXSEVSRSBscF9mbGFncyA9IDEKLSAg ICAgIEFORCB0X2N0aWQgSVMgTk9UIE5VTEwKLSAgICAgIEFORCB0X2N0aWQgPSB0YXJnZXRf Y3RpZAotICAgICAgQU5EICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBscDo6 dGV4dCB8fCAnKScpOjp0aWQgIT0gdGFyZ2V0X2N0aWQKLSAgTE9PUAotICAgIFJFVFVSTiB0 cnVlOwotICBFTkQgTE9PUDsKLQotICBSRVRVUk4gZmFsc2U7CisgICAgYmxvY2tfbnVtIDo9 ICh0YXJnZXRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQ7CisgICAgRk9SIHBhZ2VfaXRl bSBJTgorICAgICAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgICAgRlJP TSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQor ICAgICAgICBXSEVSRSBscF9mbGFncyA9IDEKKyAgICAgICAgICBBTkQgdF9jdGlkIElTIE5P VCBOVUxMCisgICAgICAgICAgQU5EIHRfY3RpZCA9IHRhcmdldF9jdGlkCisgICAgICAgICAg QU5EICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBscDo6dGV4dCB8fCAnKScp Ojp0aWQgIT0gdGFyZ2V0X2N0aWQKKyAgICBMT09QCisgICAgICAgIFJFVFVSTiB0cnVlOwor ICAgIEVORCBMT09QOworICAgIFJFVFVSTiBmYWxzZTsKIEVORDsKICQkIExBTkdVQUdFIHBs cGdzcWw7Ci0tLSBQcmludCB0aGUgSE9UIGNoYWluIHN0YXJ0aW5nIGZyb20gYSBnaXZlbiB0 dXBsZQorLS0gRW1pdCB0aGUgSE9UIGNoYWluIHJvb3RlZCBhdCBzdGFydF9jdGlkLgogQ1JF QVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcHJpbnRfaG90X2NoYWluKHJlbF9uYW1lIHRleHQs IHN0YXJ0X2N0aWQgdGlkKQogUkVUVVJOUyBUQUJMRShjaGFpbl9wb3NpdGlvbiBpbnQsIGN0 aWQgdGlkLCBscF9mbGFncyB0ZXh0LCB0X2N0aWQgdGlkLCBjaGFpbl9lbmQgYm9vbGVhbikg QVMKICQkCiAjdmFyaWFibGVfY29uZmxpY3QgdXNlX2NvbHVtbgogREVDTEFSRQotICBibG9j a19udW0gaW50OwotICBsaW5lX3B0ciBpbnQ7Ci0gIGN1cnJlbnRfY3RpZCB0aWQgOj0gc3Rh cnRfY3RpZDsKLSAgbmV4dF9jdGlkIHRpZDsKLSAgcG9zaXRpb24gaW50IDo9IDA7Ci0gIG1h eF9pdGVyYXRpb25zIGludCA6PSAxMDA7Ci0gIHBhZ2VfaXRlbSByZWNvcmQ7Ci0gIGZvdW5k X3ByZWRlY2Vzc29yIGJvb2xlYW4gOj0gZmFsc2U7Ci0gIGZsYWdzX25hbWUgdGV4dDsKKyAg ICBibG9ja19udW0gaW50OworICAgIGxpbmVfcHRyIGludDsKKyAgICBjdXJyZW50X2N0aWQg dGlkIDo9IHN0YXJ0X2N0aWQ7CisgICAgbmV4dF9jdGlkIHRpZDsKKyAgICBwb3NpdGlvbiBp bnQgOj0gMDsKKyAgICBtYXhfaXRlcmF0aW9ucyBpbnQgOj0gMTAwOworICAgIHBhZ2VfaXRl bSByZWNvcmQ7CisgICAgZm91bmRfcHJlZGVjZXNzb3IgYm9vbGVhbiA6PSBmYWxzZTsKKyAg ICBmbGFnc19uYW1lIHRleHQ7CiBCRUdJTgotICBibG9ja19udW0gOj0gKHN0YXJ0X2N0aWQ6 OnRleHQ6OnBvaW50KVswXTo6aW50OwotCi0gIC0tIEZpbmQgdGhlIHByZWRlY2Vzc29yIChv bGQgdHVwbGUgcG9pbnRpbmcgdG8gb3VyIHN0YXJ0X2N0aWQpCi0gIEZPUiBwYWdlX2l0ZW0g SU4KLSAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKLSAgICBGUk9NIGhlYXBfcGFn ZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCi0gICAgV0hFUkUg bHBfZmxhZ3MgPSAxCi0gICAgICBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZAotICBMT09QCi0g ICAgY3VycmVudF9jdGlkIDo9ICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBw YWdlX2l0ZW0ubHA6OnRleHQgfHwgJyknKTo6dGlkOwotICAgIGZvdW5kX3ByZWRlY2Vzc29y IDo9IHRydWU7Ci0gICAgRVhJVDsKLSAgRU5EIExPT1A7Ci0KLSAgLS0gSWYgbm8gcHJlZGVj ZXNzb3IgZm91bmQsIHN0YXJ0IHdpdGggdGhlIGdpdmVuIGN0aWQKLSAgSUYgTk9UIGZvdW5k X3ByZWRlY2Vzc29yIFRIRU4KLSAgICBjdXJyZW50X2N0aWQgOj0gc3RhcnRfY3RpZDsKLSAg RU5EIElGOwotCi0gIC0tIEZvbGxvdyB0aGUgY2hhaW4gZm9yd2FyZAotICBXSElMRSBwb3Np dGlvbiA8IG1heF9pdGVyYXRpb25zIExPT1AKLSAgICBsaW5lX3B0ciA6PSAoY3VycmVudF9j dGlkOjp0ZXh0Ojpwb2ludClbMV06OmludDsKKyAgICBibG9ja19udW0gOj0gKHN0YXJ0X2N0 aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50OwogCiAgICAgRk9SIHBhZ2VfaXRlbSBJTgotICAg ICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCi0gICAgICBGUk9NIGhlYXBfcGFnZV9p dGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCi0gICAgICBXSEVSRSBs cCA9IGxpbmVfcHRyCisgICAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAorICAg ICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2Nr X251bSkpCisgICAgICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAgICAgICAgIEFORCB0X2N0 aWQgPSBzdGFydF9jdGlkCiAgICAgTE9PUAotICAgICAgLS0gTWFwIGxwX2ZsYWdzIHRvIG5h bWVzCi0gICAgICBmbGFnc19uYW1lIDo9IENBU0UgcGFnZV9pdGVtLmxwX2ZsYWdzCi0gICAg ICAgIFdIRU4gMCBUSEVOICd1bnVzZWQgKDApJwotICAgICAgICBXSEVOIDEgVEhFTiAnbm9y bWFsICgxKScKLSAgICAgICAgV0hFTiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKLSAgICAgICAg V0hFTiAzIFRIRU4gJ2RlYWQgKDMpJwotICAgICAgICBFTFNFICd1bmtub3duICgnIHx8IHBh Z2VfaXRlbS5scF9mbGFnczo6dGV4dCB8fCAnKScKLSAgICAgIEVORDsKLQotICAgICAgUkVU VVJOIFFVRVJZIFNFTEVDVAotICAgICAgICBwb3NpdGlvbiwKLSAgICAgICAgY3VycmVudF9j dGlkLAotICAgICAgICBmbGFnc19uYW1lLAotICAgICAgICBwYWdlX2l0ZW0udF9jdGlkLAot ICAgICAgICAocGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQg PSBjdXJyZW50X2N0aWQpOjpib29sZWFuCi0gICAgICA7Ci0KLSAgICAgIElGIHBhZ2VfaXRl bS50X2N0aWQgSVMgTlVMTCBPUiBwYWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkIFRI RU4KLSAgICAgICAgUkVUVVJOOwotICAgICAgRU5EIElGOwotCi0gICAgICBuZXh0X2N0aWQg Oj0gcGFnZV9pdGVtLnRfY3RpZDsKLQotICAgICAgSUYgKG5leHRfY3RpZDo6dGV4dDo6cG9p bnQpWzBdOjppbnQgIT0gYmxvY2tfbnVtIFRIRU4KLSAgICAgICAgUkVUVVJOOwotICAgICAg RU5EIElGOwotCi0gICAgICBjdXJyZW50X2N0aWQgOj0gbmV4dF9jdGlkOwotICAgICAgcG9z aXRpb24gOj0gcG9zaXRpb24gKyAxOworICAgICAgICBjdXJyZW50X2N0aWQgOj0gKCcoJyB8 fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IHBhZ2VfaXRlbS5scDo6dGV4dCB8fCAnKScp Ojp0aWQ7CisgICAgICAgIGZvdW5kX3ByZWRlY2Vzc29yIDo9IHRydWU7CisgICAgICAgIEVY SVQ7CiAgICAgRU5EIExPT1A7Ci0KLSAgICBJRiBwb3NpdGlvbiA9IDAgVEhFTgotICAgICAg UkVUVVJOOworICAgIElGIE5PVCBmb3VuZF9wcmVkZWNlc3NvciBUSEVOCisgICAgICAgIGN1 cnJlbnRfY3RpZCA6PSBzdGFydF9jdGlkOwogICAgIEVORCBJRjsKLSAgRU5EIExPT1A7CisK KyAgICBXSElMRSBwb3NpdGlvbiA8IG1heF9pdGVyYXRpb25zIExPT1AKKyAgICAgICAgbGlu ZV9wdHIgOj0gKGN1cnJlbnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjppbnQ7CisgICAgICAg IEZPUiBwYWdlX2l0ZW0gSU4KKyAgICAgICAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRf Y3RpZAorICAgICAgICAgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJl bF9uYW1lLCBibG9ja19udW0pKQorICAgICAgICAgICAgV0hFUkUgbHAgPSBsaW5lX3B0cgor ICAgICAgICBMT09QCisgICAgICAgICAgICBmbGFnc19uYW1lIDo9IENBU0UgcGFnZV9pdGVt LmxwX2ZsYWdzCisgICAgICAgICAgICAgICAgV0hFTiAwIFRIRU4gJ3VudXNlZCAoMCknCisg ICAgICAgICAgICAgICAgV0hFTiAxIFRIRU4gJ25vcm1hbCAoMSknCisgICAgICAgICAgICAg ICAgV0hFTiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKKyAgICAgICAgICAgICAgICBXSEVOIDMg VEhFTiAnZGVhZCAoMyknCisgICAgICAgICAgICAgICAgRUxTRSAndW5rbm93biAoJyB8fCBw YWdlX2l0ZW0ubHBfZmxhZ3M6OnRleHQgfHwgJyknCisgICAgICAgICAgICBFTkQ7CisgICAg ICAgICAgICBSRVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAgICAgICAgICAgcG9zaXRpb24s CisgICAgICAgICAgICAgICAgY3VycmVudF9jdGlkLAorICAgICAgICAgICAgICAgIGZsYWdz X25hbWUsCisgICAgICAgICAgICAgICAgcGFnZV9pdGVtLnRfY3RpZCwKKyAgICAgICAgICAg ICAgICAocGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBj dXJyZW50X2N0aWQpOjpib29sZWFuOworCisgICAgICAgICAgICBJRiBwYWdlX2l0ZW0udF9j dGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCBUSEVOCisg ICAgICAgICAgICAgICAgUkVUVVJOOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICAg ICAgbmV4dF9jdGlkIDo9IHBhZ2VfaXRlbS50X2N0aWQ7CisgICAgICAgICAgICBJRiAobmV4 dF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludCAhPSBibG9ja19udW0gVEhFTgorICAgICAg ICAgICAgICAgIFJFVFVSTjsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgICAgIGN1 cnJlbnRfY3RpZCA6PSBuZXh0X2N0aWQ7CisgICAgICAgICAgICBwb3NpdGlvbiA6PSBwb3Np dGlvbiArIDE7CisgICAgICAgIEVORCBMT09QOworICAgICAgICBJRiBwb3NpdGlvbiA9IDAg VEhFTgorICAgICAgICAgICAgUkVUVVJOOworICAgICAgICBFTkQgSUY7CisgICAgRU5EIExP T1A7CiBFTkQ7CiAkJCBMQU5HVUFHRSBwbHBnc3FsOwotLS0gQmFzaWMgSE9UIHVwZGF0ZSAo dXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbikKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor LS0gMS4gQmFzaWMgSE9UOiB1cGRhdGUgb2YgYSBub24taW5kZXhlZCBjb2x1bW4KKy0tIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBpZCBp bnQgUFJJTUFSWSBLRVksCiAgICAgaW5kZXhlZF9jb2wgaW50LApAQCAtMTUxLDIzOSArMTM2 LDIxOCBAQCBDUkVBVEUgSU5ERVggaG90X3Rlc3RfaW5kZXhlZF9pZHggT04gaG90X3Rlc3Qo aW5kZXhlZF9jb2wpOwogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdp bml0aWFsJyk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2luaXRp YWwnKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMywgMzAwLCAnaW5pdGlhbCcp OwotLS0gR2V0IGJhc2VsaW5lCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7 CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVz dCcpOwogIHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAwIHwgICAw CiAoMSByb3cpCiAKLS0tIFNob3VsZCBiZSBIT1QgdXBkYXRlcyAob25seSBub24taW5kZXhl ZCBjb2x1bW4gbW9kaWZpZWQpCistLSBUaHJlZSBjbGFzc2ljIEhPVCB1cGRhdGVzIChub24t aW5kZXhlZCBjb2wpLgogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAn dXBkYXRlZDEnIFdIRVJFIGlkID0gMTsKIFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4 ZWRfY29sID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CiBVUERBVEUgaG90X3Rlc3QgU0VU IG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMycgV0hFUkUgaWQgPSAzOwotLS0gVmVyaWZ5 IEhPVCB1cGRhdGVzIG9jY3VycmVkCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo KCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf dGVzdCcpOwogIHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAzIHwg ICAzCiAoMSByb3cpCiAKLS0tIER1bXAgdGhlIEhPVCBjaGFpbiBiZWZvcmUgVkFDVVVNaW5n Ci1XSVRIIGN1cnJlbnRfdHVwbGUgQVMgKAotICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0 IFdIRVJFIGlkID0gMQotKQotU0VMRUNUCi0gIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0Jywg Y3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCi0gIGNoYWluX3Bvc2l0aW9uLAot ICBwcmludF9ob3RfY2hhaW4uY3RpZCwKLSAgbHBfZmxhZ3MsCi0gIHRfY3RpZAotRlJPTSBj dXJyZW50X3R1cGxlLAotTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3Vy cmVudF90dXBsZS5jdGlkKTsKKy0tIENoYWluLW9mLTEgb24gaWQ9MSBzdGlsbCBoYXMgYSBw cmVkZWNlc3NvciBsaW5lIHBvaW50ZXIuCitXSVRIIGN1cnJlbnRfdHVwbGUgQVMgKFNFTEVD VCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxKQorU0VMRUNUIGhhc19ob3RfY2hh aW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgICAg ICAgY2hhaW5fcG9zaXRpb24sIHByaW50X2hvdF9jaGFpbi5jdGlkLCBscF9mbGFncywgdF9j dGlkCitGUk9NIGN1cnJlbnRfdHVwbGUsIExBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3Rf dGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7CiAgaGFzX2NoYWluIHwgY2hhaW5fcG9zaXRp b24gfCBjdGlkICB8ICBscF9mbGFncyAgfCB0X2N0aWQgCiAtLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tCiAgdCAgICAgICAgIHwg ICAgICAgICAgICAgIDAgfCAoMCwxKSB8IG5vcm1hbCAoMSkgfCAoMCw0KQogIHQgICAgICAg ICB8ICAgICAgICAgICAgICAxIHwgKDAsNCkgfCBub3JtYWwgKDEpIHwgKDAsNCkKICgyIHJv d3MpCiAKLS0tIFZhY3V1bSB0aGUgcmVsYXRpb24sIGV4cGVjdCB0aGUgSE9UIGNoYWluIHRv IGNvbGxhcHNlCistLSBWQUNVVU0gY29sbGFwc2VzIHRoZSBjaGFpbi4KIFZBQ1VVTSBob3Rf dGVzdDsKLS0tIFNob3cgdGhhdCB0aGVyZSBpcyBubyBjaGFpbiBhZnRlciB2YWN1dW0KLVdJ VEggY3VycmVudF90dXBsZSBBUyAoCi0gIFNFTEVDVCBjdGlkIEZST00gaG90X3Rlc3QgV0hF UkUgaWQgPSAxCi0pCi1TRUxFQ1QKLSAgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJy ZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKLSAgY2hhaW5fcG9zaXRpb24sCi0gIHBy aW50X2hvdF9jaGFpbi5jdGlkLAotICBscF9mbGFncywKLSAgdF9jdGlkCi1GUk9NIGN1cnJl bnRfdHVwbGUsCi1MQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50 X3R1cGxlLmN0aWQpOworV0lUSCBjdXJyZW50X3R1cGxlIEFTIChTRUxFQ1QgY3RpZCBGUk9N IGhvdF90ZXN0IFdIRVJFIGlkID0gMSkKK1NFTEVDVCBoYXNfaG90X2NoYWluKCdob3RfdGVz dCcsIGN1cnJlbnRfdHVwbGUuY3RpZCkgQVMgaGFzX2NoYWluLAorICAgICAgIGNoYWluX3Bv c2l0aW9uLCBwcmludF9ob3RfY2hhaW4uY3RpZCwgbHBfZmxhZ3MsIHRfY3RpZAorRlJPTSBj dXJyZW50X3R1cGxlLCBMQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJy ZW50X3R1cGxlLmN0aWQpOwogIGhhc19jaGFpbiB8IGNoYWluX3Bvc2l0aW9uIHwgY3RpZCAg fCAgbHBfZmxhZ3MgIHwgdF9jdGlkIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLQogIGYgICAgICAgICB8ICAgICAgICAgICAg ICAwIHwgKDAsNCkgfCBub3JtYWwgKDEpIHwgKDAsNCkKICgxIHJvdykKIAotLS0gTm9uLUhP VCB1cGRhdGUgKHVwZGF0ZSBpbmRleGVkIGNvbHVtbikKLVVQREFURSBob3RfdGVzdCBTRVQg aW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworRFJPUCBUQUJMRSBob3RfdGVzdDsK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMi4gU3VtbWFyaXppbmcgaW5kZXhlcyAo QlJJTikgZG8gbm90IGJsb2NrIEhPVAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVB VEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cyB0 aW1lc3RhbXAsCisgICAgdmFsdWUgaW50LAorICAgIGJyaW5fY29sIGludAorKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3RzX2JyaW4gT04gaG90 X3Rlc3QgVVNJTkcgYnJpbih0cyk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYnJpbl9jb2xf YnJpbiBPTiBob3RfdGVzdCBVU0lORyBicmluKGJyaW5fY29sKTsKK0lOU0VSVCBJTlRPIGhv dF90ZXN0IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOworLS0gQlJJTiBj b2x1bW5zIGFyZSBzdW1tYXJpemluZzsgdXBkYXRpbmcgdGhlbSBzdGF5cyBjbGFzc2ljIEhP VCBldmVuCistLSB0aG91Z2ggdGhlaXIgdmFsdWVzIGNoYW5nZS4KK1VQREFURSBob3RfdGVz dCBTRVQgdHMgPSAnMjAyNC0wMS0wMicsIGJyaW5fY29sID0gMjAwMCBXSEVSRSBpZCA9IDE7 CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9u ZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwog U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogIHVwZGF0ZXMgfCBo b3QgCiAtLS0tLS0tLS0rLS0tLS0KLSAgICAgICA0IHwgICAzCisgICAgICAgMSB8ICAgMQog KDEgcm93KQogCi0tLSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQgKG5ldyB2YWx1ZSBmaW5k YWJsZSkKLVNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKLUVYUExBSU4gKENPU1RTIE9GRikg U0VMRUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29s ID0gMTUwOwotICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KLSBJbmRleCBTY2FuIHVzaW5nIGhvdF90ZXN0X2luZGV4ZWRfaWR4IG9uIGhvdF90 ZXN0Ci0gICBJbmRleCBDb25kOiAoaW5kZXhlZF9jb2wgPSAxNTApCi0oMiByb3dzKQotCi1T RUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wg PSAxNTA7Ci0gaWQgfCBpbmRleGVkX2NvbCAKLS0tLS0rLS0tLS0tLS0tLS0tLQotICAxIHwg ICAgICAgICAxNTAKKy0tIE5vbi1pbmRleGVkIGNvbHVtbjogYWxzbyBIT1QuCitVUERBVEUg aG90X3Rlc3QgU0VUIHZhbHVlID0gMjAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0 X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAogKDEgcm93KQogCi0tLSBWZXJpZnkgb2xkIHZh bHVlIG5vIGxvbmdlciBpbiBpbmRleAotRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQg RlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKLSAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gSW5kZXggU2NhbiB1c2lu ZyBob3RfdGVzdF9pbmRleGVkX2lkeCBvbiBob3RfdGVzdAotICAgSW5kZXggQ29uZDogKGlu ZGV4ZWRfY29sID0gMTAwKQotKDIgcm93cykKLQotU0VMRUNUIGlkIEZST00gaG90X3Rlc3Qg V0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7Ci0gaWQgCi0tLS0tCi0oMCByb3dzKQorU0VMRUNU ICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCist LS0tLS0tLS0rLS0tLS0KKyAgICAgICAyIHwgICAyCisoMSByb3cpCiAKLVJFU0VUIGVuYWJs ZV9zZXFzY2FuOwotLS0gQWxsLW9yLW5vbmUgcHJvcGVydHk6IHVwZGF0aW5nIG9uZSBpbmRl eGVkIGNvbHVtbiByZXF1aXJlcyBBTEwgaW5kZXggdXBkYXRlcwogRFJPUCBUQUJMRSBob3Rf dGVzdDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMy4gVE9BU1QgcGFydGljaXBh dGVzIGluIEhPVCAobm9uLWluZGV4ZWQgY29sdW1uIHBhdGhzIG9ubHkpCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50IFBS SU1BUlkgS0VZLAotICAgIGNvbF9hIGludCwKLSAgICBjb2xfYiBpbnQsCi0gICAgY29sX2Mg aW50LAotICAgIG5vbl9pbmRleGVkIHRleHQKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAg bGFyZ2VfdGV4dCB0ZXh0LAorICAgIHNtYWxsX3RleHQgdGV4dAogKSBXSVRIIChmaWxsZmFj dG9yID0gNTApOwotQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0KGNv bF9hKTsKLUNSRUFURSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xfYik7 Ci1DUkVBVEUgSU5ERVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOwotSU5T RVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcpOwot LS0gVXBkYXRlIG9ubHkgY29sX2EgLSBzaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIGFuIGlu ZGV4ZWQgY29sdW1uIGNoYW5nZWQKLS0tIFRoaXMgbWVhbnMgQUxMIGluZGV4ZXMgbXVzdCBi ZSB1cGRhdGVkIChhbGwtb3Itbm9uZSBwcm9wZXJ0eSkKLVVQREFURSBob3RfdGVzdCBTRVQg Y29sX2EgPSAxNSBXSEVSRSBpZCA9IDE7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaWR4IE9O IGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAo MSwgMTAwLCByZXBlYXQoJ3gnLCAzMDAwKSwgJ3NtYWxsJyk7CistLSBOb24taW5kZXhlZCwg bm9uLVRPQVNUIGNvbHVtbjogSE9ULgorVVBEQVRFIGhvdF90ZXN0IFNFVCBzbWFsbF90ZXh0 ID0gJ3VwZGF0ZWQnOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBn X3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsK ICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMSB8ICAgMAorICAg ICAgIDEgfCAgIDEKKygxIHJvdykKKworLS0gVE9BU1QgY29sdW1uLCBpbmRleGVkX2NvbCB1 bmNoYW5nZWQ6IEhPVC4KK1VQREFURSBob3RfdGVzdCBTRVQgbGFyZ2VfdGV4dCA9IHJlcGVh dCgneScsIDMwMDApOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBn X3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CiAoMSByb3cpCiAKLS0tIE5vdyB1cGRhdGUgb25seSBub24taW5kZXhlZCBjb2x1bW4gLSBz aG91bGQgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkID0gJ3VwZGF0 ZWQnOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogIHVwZGF0 ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KLSAgICAgICAyIHwgICAxCisgICAgICAgMiB8 ICAgMgogKDEgcm93KQogCi0tLSBQYXJ0aWFsIGluZGV4OiBib3RoIG9sZCBhbmQgbmV3IG91 dHNpZGUgcHJlZGljYXRlIChjb25zZXJ2YXRpdmUgPSBub24tSE9UKQogRFJPUCBUQUJMRSBo b3RfdGVzdDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNC4gUGFydGlhbCBpbmRl eCB3aGVyZSB1cGRhdGUgbGVhdmVzIGluZGV4ZWQgYXR0cnMgdW5jaGFuZ2VkCistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50 IFBSSU1BUlkgS0VZLAogICAgIHN0YXR1cyB0ZXh0LAogICAgIGRhdGEgdGV4dAogKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOwotLS0gUGFydGlhbCBpbmRleCBvbmx5IGNvdmVycyBzdGF0 dXMgPSAnYWN0aXZlJwogQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FjdGl2ZV9pZHggT04gaG90 X3Rlc3Qoc3RhdHVzKSBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsKIElOU0VSVCBJTlRPIGhv dF90ZXN0IFZBTFVFUyAoMSwgJ2FjdGl2ZScsICdkYXRhMScpOwogSU5TRVJUIElOVE8gaG90 X3Rlc3QgVkFMVUVTICgyLCAnaW5hY3RpdmUnLCAnZGF0YTInKTsKIElOU0VSVCBJTlRPIGhv dF90ZXN0IFZBTFVFUyAoMywgJ2RlbGV0ZWQnLCAnZGF0YTMnKTsKLS0tIFVwZGF0ZSBub24t aW5kZXhlZCBjb2x1bW4gb24gJ2FjdGl2ZScgcm93IChpbiBwcmVkaWNhdGUsIHN0YXR1cyB1 bmNoYW5nZWQpCi0tLSBTaG91bGQgYmUgSE9UCistLSBVcGRhdGUgZGF0YSBvbiBhIHJvdyB3 aG9zZSBzdGF0dXMgbWF0Y2hlcyB0aGUgcGFydGlhbCBwcmVkaWNhdGU6IEhPVC4KIFVQREFU RSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAxOworU0VMRUNU IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIFNFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0t LS0tLS0tKy0tLS0tCiAgICAgICAgMSB8ICAgMQogKDEgcm93KQogCi0tLSBVcGRhdGUgbm9u LWluZGV4ZWQgY29sdW1uIG9uICdpbmFjdGl2ZScgcm93IChvdXRzaWRlIHByZWRpY2F0ZSkK LS0tIFNob3VsZCBiZSBIT1QKKy0tIFVwZGF0ZSBkYXRhIG9uIGEgcm93IG91dHNpZGUgdGhl IHByZWRpY2F0ZTogSE9ULgogVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQy JyBXSEVSRSBpZCA9IDI7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0 Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDIgfCAgIDIK K1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25l eHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAogKDEgcm93KQogCi0t LSBVcGRhdGUgc3RhdHVzIGZyb20gJ2luYWN0aXZlJyB0byAnZGVsZXRlZCcgKGJvdGggb3V0 c2lkZSBwcmVkaWNhdGUpCi0tLSBQb3N0Z3JlU1FMIGlzIGNvbnNlcnZhdGl2ZTogaGVhcCBp bnNlcnQgaGFwcGVucyBiZWZvcmUgcHJlZGljYXRlIGNoZWNrCi0tLSBTbyB0aGlzIGlzIE5P Ti1IT1QgZXZlbiB0aG91Z2ggYm90aCB2YWx1ZXMgYXJlIG91dHNpZGUgcHJlZGljYXRlCi1V UERBVEUgaG90X3Rlc3QgU0VUIHN0YXR1cyA9ICdkZWxldGVkJyBXSEVSRSBpZCA9IDI7CiBT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhv dCAKIC0tLS0tLS0tLSstLS0tLQotICAgICAgIDMgfCAgIDIKKyAgICAgICAyIHwgICAyCiAo MSByb3cpCiAKLS0tIFZlcmlmeSBpbmRleCBzdGlsbCB3b3JrcyBmb3IgJ2FjdGl2ZScgcm93 cwogU0VMRUNUIGlkLCBzdGF0dXMgRlJPTSBob3RfdGVzdCBXSEVSRSBzdGF0dXMgPSAnYWN0 aXZlJzsKICBpZCB8IHN0YXR1cyAKIC0tLS0rLS0tLS0tLS0KICAgMSB8IGFjdGl2ZQogKDEg cm93KQogCi0tLSBPbmx5IEJSSU4gKHN1bW1hcml6aW5nKSBpbmRleGVzIG9uIG5vbi1QSyBj b2x1bW5zCiBEUk9QIFRBQkxFIGhvdF90ZXN0OworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistLSA1LiBNdWx0aS1jb2x1bW4gYnRyZWU6IHVwZGF0ZSBvZiBub24taW5kZXhlZCBjb2x1 bW4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgK ICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgdHMgdGltZXN0YW1wLAotICAgIHZhbHVl IGludCwKLSAgICBicmluX2NvbCBpbnQKLSkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLUNS RUFURSBJTkRFWCBob3RfdGVzdF90c19icmluIE9OIGhvdF90ZXN0IFVTSU5HIGJyaW4odHMp OwotQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2JyaW4gT04gaG90X3Rlc3QgVVNJ TkcgYnJpbihicmluX2NvbCk7Ci1JTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsICcy MDI0LTAxLTAxJywgMTAwLCAxMDAwKTsKLS0tIFVwZGF0ZSBib3RoIEJSSU4gY29sdW1ucyAt IHNob3VsZCBzdGlsbCBiZSBIT1QgKG9ubHkgc3VtbWFyaXppbmcgaW5kZXhlcykKLVVQREFU RSBob3RfdGVzdCBTRVQgdHMgPSAnMjAyNC0wMS0wMicsIGJyaW5fY29sID0gMjAwMCBXSEVS RSBpZCA9IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0g dXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDEgfCAgIDEKLSgxIHJv dykKLQotLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBhbHNvIGJlIEhP VAotVVBEQVRFIGhvdF90ZXN0IFNFVCB2YWx1ZSA9IDIwMCBXSEVSRSBpZCA9IDE7Ci1TRUxF Q1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAK LS0tLS0tLS0tLSstLS0tLQotICAgICAgIDIgfCAgIDIKLSgxIHJvdykKLQotLS0gVE9BU1Qg YW5kIEhPVDogVE9BU1RlZCBjb2x1bW5zIGNhbiBwYXJ0aWNpcGF0ZSBpbiBIT1QKLURST1Ag VEFCTEUgaG90X3Rlc3Q7Ci1DUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAotICAgIGlkIGludCBQ UklNQVJZIEtFWSwKLSAgICBpbmRleGVkX2NvbCBpbnQsCi0gICAgbGFyZ2VfdGV4dCB0ZXh0 LAotICAgIHNtYWxsX3RleHQgdGV4dAorICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQs CisgICAgY29sX2MgaW50LAorICAgIGRhdGEgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9yID0g NTApOwotQ1JFQVRFIElOREVYIGhvdF90ZXN0X2lkeCBPTiBob3RfdGVzdChpbmRleGVkX2Nv bCk7Ci0tLSBJbnNlcnQgcm93IHdpdGggVE9BU1RlZCBjb2x1bW4gKD4gMktCKQotSU5TRVJU IElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsIHJlcGVhdCgneCcsIDMwMDApLCAnc21h bGwnKTsKLS0tIFVwZGF0ZSBub24taW5kZXhlZCwgbm9uLVRPQVNUZWQgY29sdW1uIC0gc2hv dWxkIGJlIEhPVAotVVBEQVRFIGhvdF90ZXN0IFNFVCBzbWFsbF90ZXh0ID0gJ3VwZGF0ZWQn OwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotIHVwZGF0ZXMg fCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAxIHwgICAxCitDUkVBVEUgSU5ERVgg aG90X3Rlc3RfYWJfaWR4IE9OIGhvdF90ZXN0KGNvbF9hLCBjb2xfYik7CitJTlNFUlQgSU5U TyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdkYXRhJyk7CistLSBjb2xfYyBu b3QgaW4gYW55IGluZGV4OiBIT1QuCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9jID0gMzU7 CistLSBkYXRhIG5vdCBpbiBhbnkgaW5kZXg6IEhPVC4KK1VQREFURSBob3RfdGVzdCBTRVQg ZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK KyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAogKDEgcm93KQogCi0tLSBVcGRhdGUgVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQgYmUg SE9UIGlmIGluZGV4ZWQgY29sdW1uIHVuY2hhbmdlZAotVVBEQVRFIGhvdF90ZXN0IFNFVCBs YXJnZV90ZXh0ID0gcmVwZWF0KCd5JywgMzAwMCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQog ICAgICAgIDIgfCAgIDIKICgxIHJvdykKIAotLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIC0g c2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAy MDA7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRl cyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDMgfCAgIDIKLSgxIHJvdykKLQot LS0gVW5pcXVlIGNvbnN0cmFpbnQgKHVuaXF1ZSBpbmRleCkgYmVoYXZlcyBsaWtlIHJlZ3Vs YXIgaW5kZXgKIERST1AgVEFCTEUgaG90X3Rlc3Q7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIDYuIFVuaXF1ZSBpbmRleDogdXBkYXRlIG9mIG5vbi1pbmRleGVkIGNvbHVtbiAr IHVuaXF1ZW5lc3MgZW5mb3JjZW1lbnQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JF QVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgdW5p cXVlX2NvbCBpbnQgVU5JUVVFLApAQCAtMzkxLDE1ICszNTUsMTkgQEAgQ1JFQVRFIFRBQkxF IGhvdF90ZXN0ICgKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKIElOU0VSVCBJTlRPIGhv dF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnZGF0YTEnKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMiwgMjAwLCAnZGF0YTInKTsKLS0tIFVwZGF0ZSBkYXRhIChub24taW5kZXhl ZCkgLSBzaG91bGQgYmUgSE9UCiBVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRl ZCc7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogIHVwZGF0ZXMg fCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAyIHwgICAyCiAoMSByb3cpCiAKLS0t IFZlcmlmeSB1bmlxdWUgY29uc3RyYWludCBzdGlsbCBlbmZvcmNlZAogU0VMRUNUIGlkLCB1 bmlxdWVfY29sLCBkYXRhIEZST00gaG90X3Rlc3QgT1JERVIgQlkgaWQ7CiAgaWQgfCB1bmlx dWVfY29sIHwgIGRhdGEgICAKIC0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQpAQCAtNDA3 LDYwICszNzUsMTQgQEAgU0VMRUNUIGlkLCB1bmlxdWVfY29sLCBkYXRhIEZST00gaG90X3Rl c3QgT1JERVIgQlkgaWQ7CiAgIDIgfCAgICAgICAgMjAwIHwgdXBkYXRlZAogKDIgcm93cykK IAotLS0gVGhpcyBzaG91bGQgZmFpbCAodW5pcXVlIHZpb2xhdGlvbikKKy0tIFVuaXF1ZSBj b25zdHJhaW50IHN0aWxsIGVuZm9yY2VkIG9uIGFueSBwYXRoLgogVVBEQVRFIGhvdF90ZXN0 IFNFVCB1bmlxdWVfY29sID0gMTAwIFdIRVJFIGlkID0gMjsKIEVSUk9SOiAgZHVwbGljYXRl IGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAiaG90X3Rlc3RfdW5pcXVl X2NvbF9rZXkiCiBERVRBSUw6ICBLZXkgKHVuaXF1ZV9jb2wpPSgxMDApIGFscmVhZHkgZXhp c3RzLgotLS0gTXVsdGktY29sdW1uIGluZGV4OiBhbnkgY29sdW1uIGNoYW5nZSA9IG5vbi1I T1QKIERST1AgVEFCTEUgaG90X3Rlc3Q7Ci1DUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAotICAg IGlkIGludCBQUklNQVJZIEtFWSwKLSAgICBjb2xfYSBpbnQsCi0gICAgY29sX2IgaW50LAot ICAgIGNvbF9jIGludCwKLSAgICBkYXRhIHRleHQKLSkgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKLUNSRUFURSBJTkRFWCBob3RfdGVzdF9hYl9pZHggT04gaG90X3Rlc3QoY29sX2EsIGNv bF9iKTsKLUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgJ2Rh dGEnKTsKLS0tIFVwZGF0ZSBjb2xfYSAocGFydCBvZiBtdWx0aS1jb2x1bW4gaW5kZXgpIC0g c2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNTsKLVNF TEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90 IAotLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMSB8ICAgMAotKDEgcm93KQotCi0tLSBSZXNl dAotVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYSA9IDEwOwotLS0gVXBkYXRlIGNvbF9iIChw YXJ0IG9mIG11bHRpLWNvbHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRF IGhvdF90ZXN0IFNFVCBjb2xfYiA9IDI1OwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAg ICAzIHwgICAwCi0oMSByb3cpCi0KLS0tIFJlc2V0Ci1VUERBVEUgaG90X3Rlc3QgU0VUIGNv bF9iID0gMjA7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0g dXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDQgfCAgIDAKLSgxIHJv dykKLQotLS0gVXBkYXRlIGNvbF9jIChub3QgaW5kZXhlZCkgLSBzaG91bGQgYmUgSE9UCi1V UERBVEUgaG90X3Rlc3QgU0VUIGNvbF9jID0gMzU7Ci0tLSBVcGRhdGUgZGF0YSAobm90IGlu ZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAotVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3Vw ZGF0ZWQnOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotIHVw ZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICA2IHwgICAyCi0oMSByb3cp Ci0KLS0tIFBhcnRpdGlvbmVkIHRhYmxlczogSE9UIHdvcmtzIHdpdGhpbiBwYXJ0aXRpb25z Ci1EUk9QIFRBQkxFIElGIEVYSVNUUyBob3RfdGVzdF9wYXJ0aXRpb25lZCBDQVNDQURFOwot Tk9USUNFOiAgdGFibGUgImhvdF90ZXN0X3BhcnRpdGlvbmVkIiBkb2VzIG5vdCBleGlzdCwg c2tpcHBpbmcKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNy4gUGFydGl0aW9uZWQg dGFibGVzOiBIT1Qgd2l0aGluIGEgcGFydGl0aW9uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIENSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0aXRpb25lZCAoCiAgICAgaWQgaW50LAog ICAgIHBhcnRpdGlvbl9rZXkgaW50LApAQCAtNDc1LDIzICszOTcsMzIgQEAgQ1JFQVRFIFRB QkxFIGhvdF90ZXN0X3BhcnQyIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25lZAog Q1JFQVRFIElOREVYIGhvdF90ZXN0X3BhcnRfaWR4IE9OIGhvdF90ZXN0X3BhcnRpdGlvbmVk KGluZGV4ZWRfY29sKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFZBTFVF UyAoMSwgNTAsIDEwMCwgJ2luaXRpYWwxJyk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdF9wYXJ0 aXRpb25lZCBWQUxVRVMgKDIsIDE1MCwgMjAwLCAnaW5pdGlhbDInKTsKLS0tIFVwZGF0ZSBp biBwYXJ0aXRpb24gMSAobm9uLWluZGV4ZWQgY29sdW1uKSAtIHNob3VsZCBiZSBIT1QKIFVQ REFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0YSA9ICd1cGRhdGVkMScgV0hFUkUg aWQgPSAxOwotLS0gVXBkYXRlIGluIHBhcnRpdGlvbiAyIChub24taW5kZXhlZCBjb2x1bW4p IC0gc2hvdWxkIGJlIEhPVAogVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRh ID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdF9wYXJ0MScpOwogIHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0K ICAgICAgICAxIHwgICAxCiAoMSByb3cpCiAKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90ZXN0X3BhcnQyJyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQog ICAgICAgIDEgfCAgIDEKICgxIHJvdykKIAotLS0gVmVyaWZ5IGluZGV4ZXMgd29yayBvbiBw YXJ0aXRpb25zCiBTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBXSEVSRSBp bmRleGVkX2NvbCA9IDEwMDsKICBpZCAKIC0tLS0KQEAgLTUwNCwyNDIgKzQzNSwxMDAgQEAg U0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wg PSAyMDA7CiAgIDIKICgxIHJvdykKIAotLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIGluIHBh cnRpdGlvbiAtIHNob3VsZCBOT1QgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3RfcGFydGl0aW9u ZWQgU0VUIGluZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFydDEnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0t LS0tLS0tKy0tLS0tCi0gICAgICAgMiB8ICAgMQotKDEgcm93KQotCi0tLSBWZXJpZnkgaW5k ZXggd2FzIHVwZGF0ZWQKLVNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdI RVJFIGluZGV4ZWRfY29sID0gMTUwOwotIGlkIAotLS0tLQotICAxCi0oMSByb3cpCi0KLS0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRyaWdnZXIgbW9kaWZpY2F0aW9uczogaGVh cF9tb2RpZnlfdHVwbGUoKSBhbmQgSE9UCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBUZXN0IHRoYXQgd2UgY29ycmVjdGx5IGRldGVjdCB3aGVuIHRyaWdnZXJzIG1vZGlmeSBp bmRleGVkIGNvbHVtbnMgdmlhCi0tLSBoZWFwX21vZGlmeV90dXBsZSgpLCBldmVuIHdoZW4g dGhvc2UgY29sdW1ucyBhcmVuJ3QgaW4gdGhlIFVQREFURSdzIFNFVCBjbGF1c2UKLUNSRUFU RSBUQUJMRSBob3RfdHJpZ2dlcl90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0g ICAgdHJpZ2dlcmVkX2NvbCBpbnQsCi0gICAgZGF0YSB0ZXh0Ci0pIFdJVEggKGZpbGxmYWN0 b3IgPSA1MCk7Ci1DUkVBVEUgSU5ERVggaG90X3RyaWdnZXJfaWR4IE9OIGhvdF90cmlnZ2Vy X3Rlc3QodHJpZ2dlcmVkX2NvbCk7Ci0tLSBDcmVhdGUgYSB0cmlnZ2VyIHRoYXQgbW9kaWZp ZXMgYW4gaW5kZXhlZCBjb2x1bW4KLUNSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIG1vZGlm eV90cmlnZ2VyZWRfY29sKCkKLVJFVFVSTlMgVFJJR0dFUiBBUyAkJAotQkVHSU4KLSAgICBO RVcudHJpZ2dlcmVkX2NvbCA9IE5FVy50cmlnZ2VyZWRfY29sICsgMTsKLSAgICBSRVRVUk4g TkVXOwotRU5EOwotJCQgTEFOR1VBR0UgcGxwZ3NxbDsKLUNSRUFURSBUUklHR0VSIGJlZm9y ZV91cGRhdGVfbW9kaWZ5Ci0gICAgQkVGT1JFIFVQREFURSBPTiBob3RfdHJpZ2dlcl90ZXN0 Ci0gICAgRk9SIEVBQ0ggUk9XCi0gICAgRVhFQ1VURSBGVU5DVElPTiBtb2RpZnlfdHJpZ2dl cmVkX2NvbCgpOwotSU5TRVJUIElOVE8gaG90X3RyaWdnZXJfdGVzdCBWQUxVRVMgKDEsIDEw MCwgJ2luaXRpYWwnKTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3RyaWdn ZXJfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAw IHwgICAwCi0oMSByb3cpCi0KLS0tIFVwZGF0ZSBvbmx5IGRhdGEgY29sdW1uLCBidXQgdHJp Z2dlciBtb2RpZmllcyBpbmRleGVkIGNvbHVtbgotLS0gU2hvdWxkIE5PVCBiZSBIT1QgYmVj YXVzZSB0cmlnZ2VyIG1vZGlmaWVkIGFuIGluZGV4ZWQgY29sdW1uCi1VUERBVEUgaG90X3Ry aWdnZXJfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJyBXSEVSRSBpZCA9IDE7Ci0tLSBWZXJp ZnkgaXQgd2FzIE5PVCBhIEhPVCB1cGRhdGUgKGluZGV4ZWQgY29sdW1uIHdhcyBtb2RpZmll ZCBieSB0cmlnZ2VyKQotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdHJpZ2dl cl90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDEg fCAgIDAKLSgxIHJvdykKLQotLS0gVmVyaWZ5IHRoZSB0cmlnZ2VyZWQgY29sdW1uIHdhcyBh Y3R1YWxseSBtb2RpZmllZAotU0VMRUNUIHRyaWdnZXJlZF9jb2wgRlJPTSBob3RfdHJpZ2dl cl90ZXN0IFdIRVJFIGlkID0gMTsKLSB0cmlnZ2VyZWRfY29sIAotLS0tLS0tLS0tLS0tLS0t Ci0gICAgICAgICAgIDEwMQotKDEgcm93KQotCi1EUk9QIFRBQkxFIGhvdF90cmlnZ2VyX3Rl c3QgQ0FTQ0FERTsKLURST1AgRlVOQ1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKTsKLS0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTT05CIGV4cHJlc3Npb24gaW5kZXhlcyBh bmQgc3ViLWF0dHJpYnV0ZSB0cmFja2luZwotLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gVGVzdCB0aGF0IHVwZGF0ZXMgdG8gbm9uLWluZGV4ZWQgSlNPTkIgcGF0aHMgY2FuIGJl IEhPVCB1cGRhdGVzCitEUk9QIFRBQkxFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7 CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDguIEpTT05CIGV4cHJlc3Npb24gaW5k ZXg6IG5vbi1pbmRleGVkIHBhdGggY2hhbmdlIGlzIEhPVAorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiBDUkVBVEUgVEFCTEUgaG90X2pzb25iX3Rlc3QgKAogICAgIGlkIGludCBQUklN QVJZIEtFWSwKICAgICBkYXRhIGpzb25iCiApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0t LSBDcmVhdGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIEpTT04gcGF0aAogQ1JF QVRFIElOREVYIGhvdF9qc29uYl9uYW1lX2lkeCBPTiBob3RfanNvbmJfdGVzdCAoKGRhdGEt Pj4nbmFtZScpKTsKIElOU0VSVCBJTlRPIGhvdF9qc29uYl90ZXN0IFZBTFVFUwogICAgICgx LCAneyJuYW1lIjoiQWxpY2UiLCJhZ2UiOjMwLCJjaXR5IjoiTllDIn0nKSwKICAgICAoMiwg J3sibmFtZSI6IkJvYiIsImFnZSI6MjUsImNpdHkiOiJMQSJ9Jyk7Ci1TRUxFQ1QgKiBGUk9N IGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0t LS0tLS0tLSstLS0tLQotICAgICAgIDAgfCAgIDAKKy0tIFRoZSBqc29uYiBjb2x1bW4gaXMg dGhlIGV4cHJlc3Npb24gaW5kZXgncyBpbnB1dCwgc28gSE9ULWluZGV4ZWQgaXMKKy0tIGRp c3F1YWxpZmllZCAoZXhwcmVzc2lvbiBpbmRleGVzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCkg YW5kIHRoZSBqc29uYgorLS0gY2hhbmdlIGJsb2NrcyBjbGFzc2ljIEhPVDogbm9uLUhPVCB1 cGRhdGUuCitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0 YSwgJ3thZ2V9JywgJzMxJykgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCiAoMSByb3cpCiAKLS0tIFVwZGF0ZSBub24taW5kZXhlZCBK U09OIHBhdGggKGFnZSkgLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgot VVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7YWdl fScsICczMScpIFdIRVJFIGlkID0gMTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgn aG90X2pzb25iX3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCiAg ICAgICAgMSB8ICAgMAogKDEgcm93KQogCi0tLSBVcGRhdGUgaW5kZXhlZCBKU09OIHBhdGgg KG5hbWUpIC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfanNvbmJfdGVzdCBTRVQg ZGF0YSA9IGpzb25iX3NldChkYXRhLCAne25hbWV9JywgJyJBbGljZTIiJykgV0hFUkUgaWQg PSAxOworLS0gTGlrZXdpc2Ugbm9uLUhPVDogZXhwcmVzc2lvbiBpbmRleCBkaXNxdWFsaWZp ZXMgSE9ULWluZGV4ZWQuCitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBkYXRh IC0gJ2NpdHknIFdIRVJFIGlkID0gMjsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF9qc29uYl90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQogICAg ICAgIDIgfCAgIDAKICgxIHJvdykKIAotLS0gVmVyaWZ5IGluZGV4IHdvcmtzCi1TRUxFQ1Qg aWQgRlJPTSBob3RfanNvbmJfdGVzdCBXSEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlMic7 Ci0gaWQgCi0tLS0tCi0gIDEKKy0tIExpa2V3aXNlIG5vbi1IT1Q6IGV4cHJlc3Npb24gaW5k ZXggZGlzcXVhbGlmaWVzIEhPVC1pbmRleGVkLgorVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNF VCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRyeX0nLCAnIlVTQSInKSBXSEVS RSBpZCA9IDI7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKICgx IHJvdykKIAotLS0gVGVzdCBqc29uYl9kZWxldGUgb24gbm9uLWluZGV4ZWQgcGF0aCAtIHNo b3VsZCBiZSBIT1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCi1VUERBVEUgaG90X2pzb25iX3Rl c3QgU0VUIGRhdGEgPSBkYXRhIC0gJ2NpdHknIFdIRVJFIGlkID0gMjsKIFNFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAog LS0tLS0tLS0tKy0tLS0tCiAgICAgICAgMyB8ICAgMAogKDEgcm93KQogCi0tLSBUZXN0IGpz b25iX2luc2VydCBvbiBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBp bnN0cnVtZW50YXRpb24KLVVQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGpzb25i X2luc2VydChkYXRhLCAne2NvdW50cnl9JywgJyJVU0EiJykgV0hFUkUgaWQgPSAyOwotU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOwotIHVwZGF0ZXMg fCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICA0IHwgICAwCi0oMSByb3cpCi0KIERS T1AgVEFCTEUgaG90X2pzb25iX3Rlc3Q7Ci0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBYTUwgZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNraW5nCi0t LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUZXN0IHRoYXQgdXBkYXRlcyB0byBub24t aW5kZXhlZCBYTUwgcGF0aHMgY2FuIGJlIEhPVCB1cGRhdGVzCi1DUkVBVEUgVEFCTEUgaG90 X3htbF90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgZG9jIHhtbAotKSBX SVRIIChmaWxsZmFjdG9yID0gNTApOwotLS0gQ3JlYXRlIGV4cHJlc3Npb24gaW5kZXggb24g YSBzcGVjaWZpYyBYUGF0aAotQ1JFQVRFIElOREVYIGhvdF94bWxfbmFtZV9pZHggT04gaG90 X3htbF90ZXN0ICgoeHBhdGgoJy9wZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpKSk7Ci1JTlNF UlQgSU5UTyBob3RfeG1sX3Rlc3QgVkFMVUVTCi0gICAgKDEsICc8cGVyc29uPjxuYW1lPkFs aWNlPC9uYW1lPjxhZ2U+MzA8L2FnZT48L3BlcnNvbj4nKSwKLSAgICAoMiwgJzxwZXJzb24+ PG5hbWU+Qm9iPC9uYW1lPjxhZ2U+MjU8L2FnZT48L3BlcnNvbj4nKTsKLUVSUk9SOiAgY291 bGQgbm90IGlkZW50aWZ5IGEgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgdHlwZSB4bWwKLVNF TEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7Ci0gdXBkYXRlcyB8 IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDAgfCAgIDAKLSgxIHJvdykKLQotLS0g VXBkYXRlIG5vbi1pbmRleGVkIFhQYXRoIChhZ2UpIC0gYmVoYXZpb3IgZGVwZW5kcyBvbiBY TUwgY29tcGFyaXNvbiBmYWxsYmFjawotLS0gRnVsbCBYTUwgdmFsdWUgcmVwbGFjZW1lbnQg bWVhbnMgbm9uLWluZGV4ZWQgcGF0aCB1cGRhdGVzIHN0aWxsIHJlcXVpcmUgaW5kZXggY29t cGFyaXNvbgotVVBEQVRFIGhvdF94bWxfdGVzdCBTRVQgZG9jID0gJzxwZXJzb24+PG5hbWU+ QWxpY2U8L25hbWU+PGFnZT4zMTwvYWdlPjwvcGVyc29uPicgV0hFUkUgaWQgPSAxOwotU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3QnKTsKLSB1cGRhdGVzIHwg aG90IAotLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMCB8ICAgMAotKDEgcm93KQotCi0tLSBV cGRhdGUgaW5kZXhlZCBYUGF0aCAobmFtZSkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRF IGhvdF94bWxfdGVzdCBTRVQgZG9jID0gJzxwZXJzb24+PG5hbWU+QWxpY2UyPC9uYW1lPjxh Z2U+MzE8L2FnZT48L3BlcnNvbj4nIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0t LSstLS0tLQotICAgICAgIDAgfCAgIDAKLSgxIHJvdykKLQotLS0gVmVyaWZ5IGluZGV4IHdv cmtzCi1TRUxFQ1QgaWQgRlJPTSBob3RfeG1sX3Rlc3QgV0hFUkUgeHBhdGgoJy9wZXJzb24v bmFtZS90ZXh0KCknLCBkb2MpID0gQVJSQVlbJ0FsaWNlMic6OnRleHRdOwotRVJST1I6ICBv cGVyYXRvciBkb2VzIG5vdCBleGlzdDogeG1sW10gPSB0ZXh0W10KLUxJTkUgMTogLi4uX3ht bF90ZXN0IFdIRVJFIHhwYXRoKCcvcGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSA9IEFSUkFZ WydBLi4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgotREVUQUlMOiAgTm8gb3BlcmF0b3Igb2YgdGhhdCBuYW1lIGFj Y2VwdHMgdGhlIGdpdmVuIGFyZ3VtZW50IHR5cGVzLgotSElOVDogIFlvdSBtaWdodCBuZWVk IHRvIGFkZCBleHBsaWNpdCB0eXBlIGNhc3RzLgotRFJPUCBUQUJMRSBob3RfeG1sX3Rlc3Q7 Ci0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBHSU4gaW5kZXhlcyBhbmQgYW1jb21w YXJlZGF0dW1zIGZvciBKU09OQgotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVz dCB0aGF0IEdJTiBpbmRleGVzIGNhbiB1c2UgYW1jb21wYXJlZGF0dW1zIHRvIGVuYWJsZSBI T1Qgd2hlbiBleHRyYWN0ZWQga2V5cyBtYXRjaAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistLSA5LiBBIGNoYW5nZSB0byBhIEdJTi1pbmRleGVkIGNvbHVtbiBpcyBIT1QtaW5kZXhl ZAorLS0KKy0tIFRoZSByZWFkIHNpZGUgZmlsdGVycyBhIHN0YWxlIGxlYWYgdmlhIHRoZSBj cm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAsIHdoaWNoCistLSBpcyBhY2Nlc3MtbWV0aG9kIGFn bm9zdGljLCBzbyBhIEdJTi1jb3ZlcmVkIGNvbHVtbiBpcyBIT1QtaW5kZXhlZCBsaWtlIGFu eQorLS0gb3RoZXI6IG9ubHkgdGhlIEdJTiBpbmRleCBpcyBtYWludGFpbmVkLCBhbmQgYSBH SU4gc2NhbiAod2hpY2ggcmVjaGVja3Mgb24KKy0tIHRoZSBoZWFwKSByZXR1cm5zIGNvcnJl Y3QgcmVzdWx0cyBhY3Jvc3MgdGhlIGNoYWluLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBDUkVBVEUgVEFCTEUgaG90X2dpbl90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVks CiAgICAgdGFncyB0ZXh0W10sCiAgICAgcHJvcGVydGllcyBqc29uYgogKSBXSVRIIChmaWxs ZmFjdG9yID0gNTApOwotLS0gR0lOIGluZGV4IG9uIHRleHQgYXJyYXkKIENSRUFURSBJTkRF WCBob3RfZ2luX3RhZ3NfaWR4IE9OIGhvdF9naW5fdGVzdCBVU0lORyBnaW4gKHRhZ3MpOwot LS0gR0lOIGluZGV4IG9uIEpTT05CIChqc29uYl9vcHMgLSBrZXlzIGFuZCB2YWx1ZXMpCiBD UkVBVEUgSU5ERVggaG90X2dpbl9wcm9wc19pZHggT04gaG90X2dpbl90ZXN0IFVTSU5HIGdp biAocHJvcGVydGllcyk7CiBJTlNFUlQgSU5UTyBob3RfZ2luX3Rlc3QgVkFMVUVTCiAgICAg KDEsIEFSUkFZWyd0YWcxJywgJ3RhZzInXSwgJ3sia2V5MSI6InZhbDEiLCJrZXkyIjoidmFs MiJ9JyksCiAgICAgKDIsIEFSUkFZWyd0YWczJywgJ3RhZzQnXSwgJ3sia2V5MyI6InZhbDMi LCJrZXk0IjoidmFsNCJ9Jyk7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9n aW5fdGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAw IHwgICAwCi0oMSByb3cpCi0KLS0tIFVwZGF0ZSB0aGF0IGNoYW5nZXMgdGFnIG9yZGVyIGJ1 dCBub3QgY29udGVudCAtIGFmdGVyIGFtY29tcGFyZWRhdHVtcyBzaG91bGQgYmUgSE9UCi0t LSAoR0lOIGV4dHJhY3RzIHNhbWUga2V5cywganVzdCBkaWZmZXJlbnQgb3JkZXIpCistLSBS ZW9yZGVyIHRhZ3M6IGEgR0lOLWNvdmVyZWQgY29sdW1uIGNoYW5nZXMsIHNvIHRoaXMgaXMg SE9ULWluZGV4ZWQuCiBVUERBVEUgaG90X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3Rh ZzInLCAndGFnMSddIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X2dpbl90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQot ICAgICAgIDEgfCAgIDAKLSgxIHJvdykKLQotLS0gVXBkYXRlIEpTT05CIHZhbHVlIChub3Qg a2V5KSAtIGFmdGVyIGFtY29tcGFyZWRhdHVtcyBtYXkgYmUgSE9UIG9yIG5vbi1IT1QKLS0t IGRlcGVuZGluZyBvbiBHSU4gb3BlcmF0b3IgY2xhc3MgKGpzb25iX29wcyBpbmRleGVzIGJv dGgga2V5cyBhbmQgdmFsdWVzKQotVVBEQVRFIGhvdF9naW5fdGVzdCBTRVQgcHJvcGVydGll cyA9ICd7ImtleTEiOiJ2YWwxX25ldyIsImtleTIiOiJ2YWwyIn0nIFdIRVJFIGlkID0gMTsK LVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7Ci0gdXBkYXRl cyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDIgfCAgIDAKK1NFTEVDVCBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAogKDEgcm93KQogCi0tLSBBZGQgbmV3IHRh ZyAtIHNob3VsZCBOT1QgYmUgSE9UIChkaWZmZXJlbnQgZXh0cmFjdGVkIGtleXMpCi1VUERB VEUgaG90X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMScsICd0YWc1 J10gV0hFUkUgaWQgPSAxOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfZ2lu X3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMyB8 ICAgMAotKDEgcm93KQotCi0tLSBWZXJpZnkgR0lOIGluZGV4ZXMgd29yawotU0VMRUNUIGlk IEZST00gaG90X2dpbl90ZXN0IFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUnXTsKLSBpZCAK LS0tLS0KLSAgMQotKDEgcm93KQotCi1TRUxFQ1QgaWQgRlJPTSBob3RfZ2luX3Rlc3QgV0hF UkUgcHJvcGVydGllcyBAPiAneyJrZXkxIjoidmFsMV9uZXcifSc7Ci0gaWQgCi0tLS0tCi0g IDEKKyAgICAgICAxIHwgICAxCiAoMSByb3cpCiAKIERST1AgVEFCTEUgaG90X2dpbl90ZXN0 OwotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAtLSBDbGVhbnVwCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1EUk9QIFRBQkxFIElG IEVYSVNUUyBob3RfdGVzdDsKLURST1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0X3BhcnRp dGlvbmVkIENBU0NBREU7Ci1EUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBoYXNfaG90X2NoYWlu KHRleHQsIHRpZCk7Ci1EUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBwcmludF9ob3RfY2hhaW4o dGV4dCwgdGlkKTsKLURST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGdldF9ob3RfY291bnQodGV4 dCk7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RST1AgRlVOQ1RJT04gaGFzX2hvdF9j aGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBwcmludF9ob3RfY2hhaW4odGV4dCwg dGlkKTsKK0RST1AgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudCh0ZXh0KTsKIERST1AgRVhURU5T SU9OIHBhZ2VpbnNwZWN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90 X3VwZGF0ZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsCmlu ZGV4IGE4ODk0MDA2MTc3Li4zNWNlN2UxY2RjZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hv dF91cGRhdGVzLnNxbApAQCAtMSwzNTQgKzEsMjU4IEBACiAtLQogLS0gSE9UX1VQREFURVMK LS0tIFRlc3QgSGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0ZSBkZWNpc2lvbnMKKy0tIFRl c3QgY2xhc3NpYyBIZWFwLU9ubHkgVHVwbGUgKEhPVCkgdXBkYXRlIGRlY2lzaW9ucwogLS0K LS0tIFRoaXMgdGVzdCBzeXN0ZW1hdGljYWxseSB2ZXJpZmllcyB0aGF0IEhPVCB1cGRhdGVz IGFyZSB1c2VkIHdoZW4gYXBwcm9wcmlhdGUKLS0tIGFuZCBhdm9pZGVkIHdoZW4gbmVjZXNz YXJ5IChlLmcuLCB3aGVuIGluZGV4ZWQgY29sdW1ucyBhcmUgbW9kaWZpZWQpLgorLS0gVGhp cyBmaWxlIGNvdmVycyBIT1QgZGVjaXNpb25zIHRoYXQgYXBwbHkgaWRlbnRpY2FsbHkgb24g YSBwcmUtaG90LWluZGV4ZWQKKy0tIHNlcnZlcjogZXZlcnkgVVBEQVRFIGhlcmUgZWl0aGVy IGxlYXZlcyBhbGwgaW5kZXhlZCBhdHRyaWJ1dGVzCistLSB1bmNoYW5nZWQgb3IgdG91Y2hl cyBvbmx5IHN1bW1hcml6aW5nLWluZGV4IChCUklOKSBhdHRyaWJ1dGVzLCBzbyB0aGUKKy0t IEhPVCB2cyBub24tSE9UIGNob2ljZSBkb2VzIG5vdCBkZXBlbmQgb24gd2hldGhlciBTZWxl Y3RpdmUgSW5kZXgKKy0tIFVwZGF0ZSAoaG90LWluZGV4ZWQpIGlzIGVuYWJsZWQuICBob3Qt aW5kZXhlZC1zcGVjaWZpYyBiZWhhdmlvdXIgKFVQREFURXMgdGhhdCBtb2RpZnkKKy0tIGEg bm9uLXN1bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlKSBpcyBjb3ZlcmVkIGluCistLSBo b3RfaW5kZXhlZF91cGRhdGVzLnNxbC4KIC0tCi0tLSBXZSB1c2UgbXVsdGlwbGUgdmFsaWRh dGlvbiBtZXRob2RzOgotLS0gMS4gU3RhdGlzdGljcyBmdW5jdGlvbnMgKHBnX3N0YXRfZ2V0 X3R1cGxlc19ob3RfdXBkYXRlZCkKLS0tIDIuIHBhZ2VpbnNwZWN0IGV4dGVuc2lvbiBmb3Ig SE9UIGNoYWluIGV4YW1pbmF0aW9uCi0tLSAzLiBFWFBMQUlOIHRvIHZlcmlmeSBpbmRleCB1 c2FnZSBhZnRlciB1cGRhdGVzCistLSBWYWxpZGF0aW9uIG1ldGhvZHM6CistLSAgIDEuIFN0 YXRpc3RpY3MgKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZCkKKy0tICAgMi4gcGFn ZWluc3BlY3QgZm9yIEhPVCBjaGFpbiBzdHJ1Y3R1cmUKKy0tICAgMy4gRVhQTEFJTiB0byBj b25maXJtIHRoZSBwbGFubmVyIHN0aWxsIHBpY2tzIHRoZSBpbmRleAogLS0KIAogLS0gTG9h ZCByZXF1aXJlZCBleHRlbnNpb25zCiBDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMg cGFnZWluc3BlY3Q7CiAKLS0tIEZ1bmN0aW9uIHRvIGdldCBIT1QgdXBkYXRlIGNvdW50Cist LSBTdW0gb2YgY29tbWl0dGVkIGFuZCBpbi1wcm9ncmVzcyAobm9uLUhPVCwgSE9UKSB1cGRh dGUgY291bnRlcnMuCiBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBnZXRfaG90X2NvdW50 KHJlbF9uYW1lIHRleHQpCiBSRVRVUk5TIFRBQkxFICgKICAgICB1cGRhdGVzIEJJR0lOVCwK ICAgICBob3QgQklHSU5UCiApIEFTICQkCiBERUNMQVJFCi0gIHJlbF9vaWQgb2lkOworICAg IHJlbF9vaWQgb2lkOwogQkVHSU4KLSAgcmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6 Om9pZDsKLQotICAtLSBSZWFkIGJvdGggY29tbWl0dGVkIGFuZCB0cmFuc2FjdGlvbi1sb2Nh bCBzdGF0cwotICAtLSBJbiBhdXRvY29tbWl0IG1vZGUgKGRlZmF1bHQgZm9yIHJlZ3Jlc3Np b24gdGVzdHMpLCB0aGlzIHdvcmtzIGNvcnJlY3RseQotICAtLSBOb3RlOiBJbiBleHBsaWNp dCB0cmFuc2FjdGlvbnMgKEJFR0lOL0NPTU1JVCksIGNvbW1pdHRlZCBzdGF0cyBhbHJlYWR5 Ci0gIC0tIGluY2x1ZGUgZmx1c2hlZCB1cGRhdGVzLCBzbyB0aGlzIHdvdWxkIGRvdWJsZS1j b3VudC4gRm9yIGV4cGxpY2l0Ci0gIC0tIHRyYW5zYWN0aW9uIHRlc3RpbmcsIGNhbGwgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCkgYmVmb3JlIHRoaXMgZnVuY3Rpb24uCi0gIHVwZGF0 ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDAp ICsKLSAgICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRh dGVkKHJlbF9vaWQpLCAwKTsKLSAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxl c19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCkgKwotICAgICAgICAgQ09BTEVTQ0UocGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApOwotCi0gIFJFVFVS TiBORVhUOworICAgIHJlbF9vaWQgOj0gcmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7CisgICAg dXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lk KSwgMCkgKworICAgICAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBs ZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRf Z2V0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICBDT0FM RVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7 CisgICAgUkVUVVJOIE5FWFQ7CiBFTkQ7CiAkJCBMQU5HVUFHRSBwbHBnc3FsOwogCi0tLSBD aGVjayBpZiBhIHR1cGxlIGlzIHBhcnQgb2YgYSBIT1QgY2hhaW4gKGhhcyBhIHByZWRlY2Vz c29yIG9uIHNhbWUgcGFnZSkKKy0tIFRydWUgaWZmIHRhcmdldF9jdGlkIGlzIHRoZSBUQUlM IG9mIGEgSE9UIGNoYWluIG9uIHRoZSBzYW1lIHBhZ2UuCiBDUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiBoYXNfaG90X2NoYWluKHJlbF9uYW1lIHRleHQsIHRhcmdldF9jdGlkIHRpZCkK IFJFVFVSTlMgYm9vbGVhbiBBUyAkJAogREVDTEFSRQotICBibG9ja19udW0gaW50OwotICBw YWdlX2l0ZW0gcmVjb3JkOworICAgIGJsb2NrX251bSBpbnQ7CisgICAgcGFnZV9pdGVtIHJl Y29yZDsKIEJFR0lOCi0gIGJsb2NrX251bSA6PSAodGFyZ2V0X2N0aWQ6OnRleHQ6OnBvaW50 KVswXTo6aW50OwotCi0gIC0tIExvb2sgZm9yIGEgZGlmZmVyZW50IHR1cGxlIG9uIHRoZSBz YW1lIHBhZ2UgdGhhdCBwb2ludHMgdG8gb3VyIHRhcmdldCB0dXBsZQotICBGT1IgcGFnZV9p dGVtIElOCi0gICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCi0gICAgRlJPTSBoZWFw X3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQotICAgIFdI RVJFIGxwX2ZsYWdzID0gMQotICAgICAgQU5EIHRfY3RpZCBJUyBOT1QgTlVMTAotICAgICAg QU5EIHRfY3RpZCA9IHRhcmdldF9jdGlkCi0gICAgICBBTkQgKCcoJyB8fCBibG9ja19udW06 OnRleHQgfHwgJywnIHx8IGxwOjp0ZXh0IHx8ICcpJyk6OnRpZCAhPSB0YXJnZXRfY3RpZAot ICBMT09QCi0gICAgUkVUVVJOIHRydWU7Ci0gIEVORCBMT09QOwotCi0gIFJFVFVSTiBmYWxz ZTsKKyAgICBibG9ja19udW0gOj0gKHRhcmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06Omlu dDsKKyAgICBGT1IgcGFnZV9pdGVtIElOCisgICAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3Ms IHRfY3RpZAorICAgICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVs X25hbWUsIGJsb2NrX251bSkpCisgICAgICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAgICAg ICAgIEFORCB0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICBBTkQgdF9jdGlkID0gdGFy Z2V0X2N0aWQKKyAgICAgICAgICBBTkQgKCcoJyB8fCBibG9ja19udW06OnRleHQgfHwgJywn IHx8IGxwOjp0ZXh0IHx8ICcpJyk6OnRpZCAhPSB0YXJnZXRfY3RpZAorICAgIExPT1AKKyAg ICAgICAgUkVUVVJOIHRydWU7CisgICAgRU5EIExPT1A7CisgICAgUkVUVVJOIGZhbHNlOwog RU5EOwogJCQgTEFOR1VBR0UgcGxwZ3NxbDsKIAotLS0gUHJpbnQgdGhlIEhPVCBjaGFpbiBz dGFydGluZyBmcm9tIGEgZ2l2ZW4gdHVwbGUKKy0tIEVtaXQgdGhlIEhPVCBjaGFpbiByb290 ZWQgYXQgc3RhcnRfY3RpZC4KIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHByaW50X2hv dF9jaGFpbihyZWxfbmFtZSB0ZXh0LCBzdGFydF9jdGlkIHRpZCkKIFJFVFVSTlMgVEFCTEUo Y2hhaW5fcG9zaXRpb24gaW50LCBjdGlkIHRpZCwgbHBfZmxhZ3MgdGV4dCwgdF9jdGlkIHRp ZCwgY2hhaW5fZW5kIGJvb2xlYW4pIEFTCiAkJAogI3ZhcmlhYmxlX2NvbmZsaWN0IHVzZV9j b2x1bW4KIERFQ0xBUkUKLSAgYmxvY2tfbnVtIGludDsKLSAgbGluZV9wdHIgaW50OwotICBj dXJyZW50X2N0aWQgdGlkIDo9IHN0YXJ0X2N0aWQ7Ci0gIG5leHRfY3RpZCB0aWQ7Ci0gIHBv c2l0aW9uIGludCA6PSAwOwotICBtYXhfaXRlcmF0aW9ucyBpbnQgOj0gMTAwOwotICBwYWdl X2l0ZW0gcmVjb3JkOwotICBmb3VuZF9wcmVkZWNlc3NvciBib29sZWFuIDo9IGZhbHNlOwot ICBmbGFnc19uYW1lIHRleHQ7CisgICAgYmxvY2tfbnVtIGludDsKKyAgICBsaW5lX3B0ciBp bnQ7CisgICAgY3VycmVudF9jdGlkIHRpZCA6PSBzdGFydF9jdGlkOworICAgIG5leHRfY3Rp ZCB0aWQ7CisgICAgcG9zaXRpb24gaW50IDo9IDA7CisgICAgbWF4X2l0ZXJhdGlvbnMgaW50 IDo9IDEwMDsKKyAgICBwYWdlX2l0ZW0gcmVjb3JkOworICAgIGZvdW5kX3ByZWRlY2Vzc29y IGJvb2xlYW4gOj0gZmFsc2U7CisgICAgZmxhZ3NfbmFtZSB0ZXh0OwogQkVHSU4KLSAgYmxv Y2tfbnVtIDo9IChzdGFydF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKLQotICAtLSBG aW5kIHRoZSBwcmVkZWNlc3NvciAob2xkIHR1cGxlIHBvaW50aW5nIHRvIG91ciBzdGFydF9j dGlkKQotICBGT1IgcGFnZV9pdGVtIElOCi0gICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9j dGlkCi0gICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBi bG9ja19udW0pKQotICAgIFdIRVJFIGxwX2ZsYWdzID0gMQotICAgICAgQU5EIHRfY3RpZCA9 IHN0YXJ0X2N0aWQKLSAgTE9PUAotICAgIGN1cnJlbnRfY3RpZCA6PSAoJygnIHx8IGJsb2Nr X251bTo6dGV4dCB8fCAnLCcgfHwgcGFnZV9pdGVtLmxwOjp0ZXh0IHx8ICcpJyk6OnRpZDsK LSAgICBmb3VuZF9wcmVkZWNlc3NvciA6PSB0cnVlOwotICAgIEVYSVQ7Ci0gIEVORCBMT09Q OwotCi0gIC0tIElmIG5vIHByZWRlY2Vzc29yIGZvdW5kLCBzdGFydCB3aXRoIHRoZSBnaXZl biBjdGlkCi0gIElGIE5PVCBmb3VuZF9wcmVkZWNlc3NvciBUSEVOCi0gICAgY3VycmVudF9j dGlkIDo9IHN0YXJ0X2N0aWQ7Ci0gIEVORCBJRjsKLQotICAtLSBGb2xsb3cgdGhlIGNoYWlu IGZvcndhcmQKLSAgV0hJTEUgcG9zaXRpb24gPCBtYXhfaXRlcmF0aW9ucyBMT09QCi0gICAg bGluZV9wdHIgOj0gKGN1cnJlbnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjppbnQ7CisgICAg YmxvY2tfbnVtIDo9IChzdGFydF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKIAogICAg IEZPUiBwYWdlX2l0ZW0gSU4KLSAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAot ICAgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9j a19udW0pKQotICAgICAgV0hFUkUgbHAgPSBsaW5lX3B0cgorICAgICAgICBTRUxFQ1QgbHAs IGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jh d19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgICAgICBXSEVSRSBscF9mbGFncyA9 IDEKKyAgICAgICAgICBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZAogICAgIExPT1AKLSAgICAg IC0tIE1hcCBscF9mbGFncyB0byBuYW1lcwotICAgICAgZmxhZ3NfbmFtZSA6PSBDQVNFIHBh Z2VfaXRlbS5scF9mbGFncwotICAgICAgICBXSEVOIDAgVEhFTiAndW51c2VkICgwKScKLSAg ICAgICAgV0hFTiAxIFRIRU4gJ25vcm1hbCAoMSknCi0gICAgICAgIFdIRU4gMiBUSEVOICdy ZWRpcmVjdCAoMiknCi0gICAgICAgIFdIRU4gMyBUSEVOICdkZWFkICgzKScKLSAgICAgICAg RUxTRSAndW5rbm93biAoJyB8fCBwYWdlX2l0ZW0ubHBfZmxhZ3M6OnRleHQgfHwgJyknCi0g ICAgICBFTkQ7Ci0KLSAgICAgIFJFVFVSTiBRVUVSWSBTRUxFQ1QKLSAgICAgICAgcG9zaXRp b24sCi0gICAgICAgIGN1cnJlbnRfY3RpZCwKLSAgICAgICAgZmxhZ3NfbmFtZSwKLSAgICAg ICAgcGFnZV9pdGVtLnRfY3RpZCwKLSAgICAgICAgKHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVM TCBPUiBwYWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkKTo6Ym9vbGVhbgotICAgICAg OwotCi0gICAgICBJRiBwYWdlX2l0ZW0udF9jdGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRf Y3RpZCA9IGN1cnJlbnRfY3RpZCBUSEVOCi0gICAgICAgIFJFVFVSTjsKLSAgICAgIEVORCBJ RjsKLQotICAgICAgbmV4dF9jdGlkIDo9IHBhZ2VfaXRlbS50X2N0aWQ7Ci0KLSAgICAgIElG IChuZXh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ICE9IGJsb2NrX251bSBUSEVOCi0g ICAgICAgIFJFVFVSTjsKLSAgICAgIEVORCBJRjsKLQotICAgICAgY3VycmVudF9jdGlkIDo9 IG5leHRfY3RpZDsKLSAgICAgIHBvc2l0aW9uIDo9IHBvc2l0aW9uICsgMTsKKyAgICAgICAg Y3VycmVudF9jdGlkIDo9ICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBwYWdl X2l0ZW0ubHA6OnRleHQgfHwgJyknKTo6dGlkOworICAgICAgICBmb3VuZF9wcmVkZWNlc3Nv ciA6PSB0cnVlOworICAgICAgICBFWElUOwogICAgIEVORCBMT09QOwotCi0gICAgSUYgcG9z aXRpb24gPSAwIFRIRU4KLSAgICAgIFJFVFVSTjsKKyAgICBJRiBOT1QgZm91bmRfcHJlZGVj ZXNzb3IgVEhFTgorICAgICAgICBjdXJyZW50X2N0aWQgOj0gc3RhcnRfY3RpZDsKICAgICBF TkQgSUY7Ci0gIEVORCBMT09QOworCisgICAgV0hJTEUgcG9zaXRpb24gPCBtYXhfaXRlcmF0 aW9ucyBMT09QCisgICAgICAgIGxpbmVfcHRyIDo9IChjdXJyZW50X2N0aWQ6OnRleHQ6OnBv aW50KVsxXTo6aW50OworICAgICAgICBGT1IgcGFnZV9pdGVtIElOCisgICAgICAgICAgICBT RUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgICAgICAgIEZST00gaGVhcF9wYWdl X2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICAgICAgICAg IFdIRVJFIGxwID0gbGluZV9wdHIKKyAgICAgICAgTE9PUAorICAgICAgICAgICAgZmxhZ3Nf bmFtZSA6PSBDQVNFIHBhZ2VfaXRlbS5scF9mbGFncworICAgICAgICAgICAgICAgIFdIRU4g MCBUSEVOICd1bnVzZWQgKDApJworICAgICAgICAgICAgICAgIFdIRU4gMSBUSEVOICdub3Jt YWwgKDEpJworICAgICAgICAgICAgICAgIFdIRU4gMiBUSEVOICdyZWRpcmVjdCAoMiknCisg ICAgICAgICAgICAgICAgV0hFTiAzIFRIRU4gJ2RlYWQgKDMpJworICAgICAgICAgICAgICAg IEVMU0UgJ3Vua25vd24gKCcgfHwgcGFnZV9pdGVtLmxwX2ZsYWdzOjp0ZXh0IHx8ICcpJwor ICAgICAgICAgICAgRU5EOworICAgICAgICAgICAgUkVUVVJOIFFVRVJZIFNFTEVDVAorICAg ICAgICAgICAgICAgIHBvc2l0aW9uLAorICAgICAgICAgICAgICAgIGN1cnJlbnRfY3RpZCwK KyAgICAgICAgICAgICAgICBmbGFnc19uYW1lLAorICAgICAgICAgICAgICAgIHBhZ2VfaXRl bS50X2N0aWQsCisgICAgICAgICAgICAgICAgKHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBP UiBwYWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkKTo6Ym9vbGVhbjsKKworICAgICAg ICAgICAgSUYgcGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQg PSBjdXJyZW50X2N0aWQgVEhFTgorICAgICAgICAgICAgICAgIFJFVFVSTjsKKyAgICAgICAg ICAgIEVORCBJRjsKKyAgICAgICAgICAgIG5leHRfY3RpZCA6PSBwYWdlX2l0ZW0udF9jdGlk OworICAgICAgICAgICAgSUYgKG5leHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQgIT0g YmxvY2tfbnVtIFRIRU4KKyAgICAgICAgICAgICAgICBSRVRVUk47CisgICAgICAgICAgICBF TkQgSUY7CisgICAgICAgICAgICBjdXJyZW50X2N0aWQgOj0gbmV4dF9jdGlkOworICAgICAg ICAgICAgcG9zaXRpb24gOj0gcG9zaXRpb24gKyAxOworICAgICAgICBFTkQgTE9PUDsKKyAg ICAgICAgSUYgcG9zaXRpb24gPSAwIFRIRU4KKyAgICAgICAgICAgIFJFVFVSTjsKKyAgICAg ICAgRU5EIElGOworICAgIEVORCBMT09QOwogRU5EOwogJCQgTEFOR1VBR0UgcGxwZ3NxbDsK IAotLS0gQmFzaWMgSE9UIHVwZGF0ZSAodXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbikKKwor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxLiBCYXNpYyBIT1Q6IHVwZGF0ZSBvZiBh IG5vbi1pbmRleGVkIGNvbHVtbgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUg VEFCTEUgaG90X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtFWSwKICAgICBpbmRleGVk X2NvbCBpbnQsCiAgICAgbm9uX2luZGV4ZWRfY29sIHRleHQKICkgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKLQogQ1JFQVRFIElOREVYIGhvdF90ZXN0X2luZGV4ZWRfaWR4IE9OIGhvdF90 ZXN0KGluZGV4ZWRfY29sKTsKIAogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAx MDAsICdpbml0aWFsJyk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwg J2luaXRpYWwnKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMywgMzAwLCAnaW5p dGlhbCcpOwogCi0tLSBHZXQgYmFzZWxpbmUKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAot LS0gU2hvdWxkIGJlIEhPVCB1cGRhdGVzIChvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiBtb2Rp ZmllZCkKKy0tIFRocmVlIGNsYXNzaWMgSE9UIHVwZGF0ZXMgKG5vbi1pbmRleGVkIGNvbCku CiBVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMScgV0hF UkUgaWQgPSAxOwogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBk YXRlZDInIFdIRVJFIGlkID0gMjsKIFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRf Y29sID0gJ3VwZGF0ZWQzJyBXSEVSRSBpZCA9IDM7Ci0KLS0tIFZlcmlmeSBIT1QgdXBkYXRl cyBvY2N1cnJlZAotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwot Ci0tLSBEdW1wIHRoZSBIT1QgY2hhaW4gYmVmb3JlIFZBQ1VVTWluZwotV0lUSCBjdXJyZW50 X3R1cGxlIEFTICgKLSAgU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDEK LSkKLVNFTEVDVAotICBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUu Y3RpZCkgQVMgaGFzX2NoYWluLAotICBjaGFpbl9wb3NpdGlvbiwKLSAgcHJpbnRfaG90X2No YWluLmN0aWQsCi0gIGxwX2ZsYWdzLAotICB0X2N0aWQKLUZST00gY3VycmVudF90dXBsZSwK LUxBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3Rp ZCk7Ci0KLS0tIFZhY3V1bSB0aGUgcmVsYXRpb24sIGV4cGVjdCB0aGUgSE9UIGNoYWluIHRv IGNvbGxhcHNlCi1WQUNVVU0gaG90X3Rlc3Q7Ci0KLS0tIFNob3cgdGhhdCB0aGVyZSBpcyBu byBjaGFpbiBhZnRlciB2YWN1dW0KLVdJVEggY3VycmVudF90dXBsZSBBUyAoCi0gIFNFTEVD VCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxCi0pCi1TRUxFQ1QKLSAgaGFzX2hv dF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwK LSAgY2hhaW5fcG9zaXRpb24sCi0gIHByaW50X2hvdF9jaGFpbi5jdGlkLAotICBscF9mbGFn cywKLSAgdF9jdGlkCi1GUk9NIGN1cnJlbnRfdHVwbGUsCi1MQVRFUkFMIHByaW50X2hvdF9j aGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpOwotCi0tLSBOb24tSE9UIHVw ZGF0ZSAodXBkYXRlIGluZGV4ZWQgY29sdW1uKQotVVBEQVRFIGhvdF90ZXN0IFNFVCBpbmRl eGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF90ZXN0Jyk7Ci0KLS0tIFZlcmlmeSBpbmRleCB3YXMgdXBkYXRlZCAobmV3IHZh bHVlIGZpbmRhYmxlKQotU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOwotRVhQTEFJTiAoQ09T VFMgT0ZGKSBTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5k ZXhlZF9jb2wgPSAxNTA7Ci1TRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3Qg V0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7Ci0KLS0tIFZlcmlmeSBvbGQgdmFsdWUgbm8gbG9u Z2VyIGluIGluZGV4Ci1FWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCBGUk9NIGhvdF90 ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOwotU0VMRUNUIGlkIEZST00gaG90X3Rlc3Qg V0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7Ci1SRVNFVCBlbmFibGVfc2Vxc2NhbjsKLQotLS0g QWxsLW9yLW5vbmUgcHJvcGVydHk6IHVwZGF0aW5nIG9uZSBpbmRleGVkIGNvbHVtbiByZXF1 aXJlcyBBTEwgaW5kZXggdXBkYXRlcwotRFJPUCBUQUJMRSBob3RfdGVzdDsKLQotQ1JFQVRF IFRBQkxFIGhvdF90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgY29sX2Eg aW50LAotICAgIGNvbF9iIGludCwKLSAgICBjb2xfYyBpbnQsCi0gICAgbm9uX2luZGV4ZWQg dGV4dAotKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCi1DUkVBVEUgSU5ERVggaG90X3Rl c3RfYV9pZHggT04gaG90X3Rlc3QoY29sX2EpOwotQ1JFQVRFIElOREVYIGhvdF90ZXN0X2Jf aWR4IE9OIGhvdF90ZXN0KGNvbF9iKTsKLUNSRUFURSBJTkRFWCBob3RfdGVzdF9jX2lkeCBP TiBob3RfdGVzdChjb2xfYyk7Ci0KLUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwg MTAsIDIwLCAzMCwgJ2luaXRpYWwnKTsKLQotLS0gVXBkYXRlIG9ubHkgY29sX2EgLSBzaG91 bGQgTk9UIGJlIEhPVCBiZWNhdXNlIGFuIGluZGV4ZWQgY29sdW1uIGNoYW5nZWQKLS0tIFRo aXMgbWVhbnMgQUxMIGluZGV4ZXMgbXVzdCBiZSB1cGRhdGVkIChhbGwtb3Itbm9uZSBwcm9w ZXJ0eSkKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNSBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIE5vdyB1cGRhdGUgb25seSBub24taW5kZXhl ZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRl eGVkID0gJ3VwZGF0ZWQnOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVz dCcpOworLS0gQ2hhaW4tb2YtMSBvbiBpZD0xIHN0aWxsIGhhcyBhIHByZWRlY2Vzc29yIGxp bmUgcG9pbnRlci4KK1dJVEggY3VycmVudF90dXBsZSBBUyAoU0VMRUNUIGN0aWQgRlJPTSBo b3RfdGVzdCBXSEVSRSBpZCA9IDEpCitTRUxFQ1QgaGFzX2hvdF9jaGFpbignaG90X3Rlc3Qn LCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKKyAgICAgICBjaGFpbl9wb3Np dGlvbiwgcHJpbnRfaG90X2NoYWluLmN0aWQsIGxwX2ZsYWdzLCB0X2N0aWQKK0ZST00gY3Vy cmVudF90dXBsZSwgTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVu dF90dXBsZS5jdGlkKTsKIAotLS0gUGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBv dXRzaWRlIHByZWRpY2F0ZSAoY29uc2VydmF0aXZlID0gbm9uLUhPVCkKLURST1AgVEFCTEUg aG90X3Rlc3Q7Ci0KLUNSRUFURSBUQUJMRSBob3RfdGVzdCAoCi0gICAgaWQgaW50IFBSSU1B UlkgS0VZLAotICAgIHN0YXR1cyB0ZXh0LAotICAgIGRhdGEgdGV4dAotKSBXSVRIIChmaWxs ZmFjdG9yID0gNTApOwotCi0tLSBQYXJ0aWFsIGluZGV4IG9ubHkgY292ZXJzIHN0YXR1cyA9 ICdhY3RpdmUnCi1DUkVBVEUgSU5ERVggaG90X3Rlc3RfYWN0aXZlX2lkeCBPTiBob3RfdGVz dChzdGF0dXMpIFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOwotCi1JTlNFUlQgSU5UTyBob3Rf dGVzdCBWQUxVRVMgKDEsICdhY3RpdmUnLCAnZGF0YTEnKTsKLUlOU0VSVCBJTlRPIGhvdF90 ZXN0IFZBTFVFUyAoMiwgJ2luYWN0aXZlJywgJ2RhdGEyJyk7Ci1JTlNFUlQgSU5UTyBob3Rf dGVzdCBWQUxVRVMgKDMsICdkZWxldGVkJywgJ2RhdGEzJyk7Ci0KLS0tIFVwZGF0ZSBub24t aW5kZXhlZCBjb2x1bW4gb24gJ2FjdGl2ZScgcm93IChpbiBwcmVkaWNhdGUsIHN0YXR1cyB1 bmNoYW5nZWQpCi0tLSBTaG91bGQgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEg PSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X3Rlc3QnKTsKLQotLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnaW5h Y3RpdmUnIHJvdyAob3V0c2lkZSBwcmVkaWNhdGUpCi0tLSBTaG91bGQgYmUgSE9UCi1VUERB VEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKLVNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKy0tIFZBQ1VVTSBjb2xsYXBz ZXMgdGhlIGNoYWluLgorVkFDVVVNIGhvdF90ZXN0OwogCi0tLSBVcGRhdGUgc3RhdHVzIGZy b20gJ2luYWN0aXZlJyB0byAnZGVsZXRlZCcgKGJvdGggb3V0c2lkZSBwcmVkaWNhdGUpCi0t LSBQb3N0Z3JlU1FMIGlzIGNvbnNlcnZhdGl2ZTogaGVhcCBpbnNlcnQgaGFwcGVucyBiZWZv cmUgcHJlZGljYXRlIGNoZWNrCi0tLSBTbyB0aGlzIGlzIE5PTi1IT1QgZXZlbiB0aG91Z2gg Ym90aCB2YWx1ZXMgYXJlIG91dHNpZGUgcHJlZGljYXRlCi1VUERBVEUgaG90X3Rlc3QgU0VU IHN0YXR1cyA9ICdkZWxldGVkJyBXSEVSRSBpZCA9IDI7Ci1TRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7CitXSVRIIGN1cnJlbnRfdHVwbGUgQVMgKFNFTEVDVCBj dGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxKQorU0VMRUNUIGhhc19ob3RfY2hhaW4o J2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgICAgICAg Y2hhaW5fcG9zaXRpb24sIHByaW50X2hvdF9jaGFpbi5jdGlkLCBscF9mbGFncywgdF9jdGlk CitGUk9NIGN1cnJlbnRfdHVwbGUsIExBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVz dCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7CiAKLS0tIFZlcmlmeSBpbmRleCBzdGlsbCB3b3Jr cyBmb3IgJ2FjdGl2ZScgcm93cwotU0VMRUNUIGlkLCBzdGF0dXMgRlJPTSBob3RfdGVzdCBX SEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsKLQotLS0gT25seSBCUklOIChzdW1tYXJpemluZykg aW5kZXhlcyBvbiBub24tUEsgY29sdW1ucwogRFJPUCBUQUJMRSBob3RfdGVzdDsKIAorLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyLiBTdW1tYXJpemluZyBpbmRleGVzIChCUklO KSBkbyBub3QgYmxvY2sgSE9UCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBU QUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkgS0VZLAogICAgIHRzIHRpbWVz dGFtcCwKICAgICB2YWx1ZSBpbnQsCiAgICAgYnJpbl9jb2wgaW50CiApIFdJVEggKGZpbGxm YWN0b3IgPSA1MCk7Ci0KIENSRUFURSBJTkRFWCBob3RfdGVzdF90c19icmluIE9OIGhvdF90 ZXN0IFVTSU5HIGJyaW4odHMpOwogQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2Jy aW4gT04gaG90X3Rlc3QgVVNJTkcgYnJpbihicmluX2NvbCk7CiAKIElOU0VSVCBJTlRPIGhv dF90ZXN0IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOwogCi0tLSBVcGRh dGUgYm90aCBCUklOIGNvbHVtbnMgLSBzaG91bGQgc3RpbGwgYmUgSE9UIChvbmx5IHN1bW1h cml6aW5nIGluZGV4ZXMpCistLSBCUklOIGNvbHVtbnMgYXJlIHN1bW1hcml6aW5nOyB1cGRh dGluZyB0aGVtIHN0YXlzIGNsYXNzaWMgSE9UIGV2ZW4KKy0tIHRob3VnaCB0aGVpciB2YWx1 ZXMgY2hhbmdlLgogVVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcyMDI0LTAxLTAyJywgYnJp bl9jb2wgPSAyMDAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAot LS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBhbHNvIGJlIEhPVAorLS0g Tm9uLWluZGV4ZWQgY29sdW1uOiBhbHNvIEhPVC4KIFVQREFURSBob3RfdGVzdCBTRVQgdmFs dWUgPSAyMDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCgpOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogCi0tLSBU T0FTVCBhbmQgSE9UOiBUT0FTVGVkIGNvbHVtbnMgY2FuIHBhcnRpY2lwYXRlIGluIEhPVAog RFJPUCBUQUJMRSBob3RfdGVzdDsKIAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAz LiBUT0FTVCBwYXJ0aWNpcGF0ZXMgaW4gSE9UIChub24taW5kZXhlZCBjb2x1bW4gcGF0aHMg b25seSkKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0 ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgaW5kZXhlZF9jb2wgaW50LAogICAg IGxhcmdlX3RleHQgdGV4dCwKICAgICBzbWFsbF90ZXh0IHRleHQKICkgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKLQogQ1JFQVRFIElOREVYIGhvdF90ZXN0X2lkeCBPTiBob3RfdGVzdChp bmRleGVkX2NvbCk7CiAKLS0tIEluc2VydCByb3cgd2l0aCBUT0FTVGVkIGNvbHVtbiAoPiAy S0IpCiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgcmVwZWF0KCd4Jywg MzAwMCksICdzbWFsbCcpOwogCi0tLSBVcGRhdGUgbm9uLWluZGV4ZWQsIG5vbi1UT0FTVGVk IGNvbHVtbiAtIHNob3VsZCBiZSBIT1QKKy0tIE5vbi1pbmRleGVkLCBub24tVE9BU1QgY29s dW1uOiBIT1QuCiBVUERBVEUgaG90X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBkYXRlZCc7 CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdl dF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIFVwZGF0ZSBUT0FTVGVkIGNvbHVtbiAt IHNob3VsZCBiZSBIT1QgaWYgaW5kZXhlZCBjb2x1bW4gdW5jaGFuZ2VkCistLSBUT0FTVCBj b2x1bW4sIGluZGV4ZWRfY29sIHVuY2hhbmdlZDogSE9ULgogVVBEQVRFIGhvdF90ZXN0IFNF VCBsYXJnZV90ZXh0ID0gcmVwZWF0KCd5JywgMzAwMCk7CitTRUxFQ1QgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0 Jyk7CiAKLS0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiAtIHNob3VsZCBOT1QgYmUgSE9UCi1V UERBVEUgaG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMjAwOwotU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotCi0tLSBVbmlxdWUgY29uc3RyYWludCAodW5p cXVlIGluZGV4KSBiZWhhdmVzIGxpa2UgcmVndWxhciBpbmRleAogRFJPUCBUQUJMRSBob3Rf dGVzdDsKIAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA0LiBQYXJ0aWFsIGluZGV4 IHdoZXJlIHVwZGF0ZSBsZWF2ZXMgaW5kZXhlZCBhdHRycyB1bmNoYW5nZWQKKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBpZCBpbnQg UFJJTUFSWSBLRVksCi0gICAgdW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIHN0YXR1cyB0 ZXh0LAogICAgIGRhdGEgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRF IElOREVYIGhvdF90ZXN0X2FjdGl2ZV9pZHggT04gaG90X3Rlc3Qoc3RhdHVzKSBXSEVSRSBz dGF0dXMgPSAnYWN0aXZlJzsKIAotSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAx MDAsICdkYXRhMScpOwotSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdk YXRhMicpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAnYWN0aXZlJywgJ2Rh dGExJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsICdpbmFjdGl2ZScsICdk YXRhMicpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgzLCAnZGVsZXRlZCcsICdk YXRhMycpOwogCi0tLSBVcGRhdGUgZGF0YSAobm9uLWluZGV4ZWQpIC0gc2hvdWxkIGJlIEhP VAotVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnOworLS0gVXBkYXRlIGRh dGEgb24gYSByb3cgd2hvc2Ugc3RhdHVzIG1hdGNoZXMgdGhlIHBhcnRpYWwgcHJlZGljYXRl OiBIT1QuCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDEnIFdIRVJFIGlk ID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gVmVyaWZ5IHVuaXF1ZSBjb25z dHJhaW50IHN0aWxsIGVuZm9yY2VkCi1TRUxFQ1QgaWQsIHVuaXF1ZV9jb2wsIGRhdGEgRlJP TSBob3RfdGVzdCBPUkRFUiBCWSBpZDsKKy0tIFVwZGF0ZSBkYXRhIG9uIGEgcm93IG91dHNp ZGUgdGhlIHByZWRpY2F0ZTogSE9ULgorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3Vw ZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo KCk7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIFRo aXMgc2hvdWxkIGZhaWwgKHVuaXF1ZSB2aW9sYXRpb24pCi1VUERBVEUgaG90X3Rlc3QgU0VU IHVuaXF1ZV9jb2wgPSAxMDAgV0hFUkUgaWQgPSAyOworU0VMRUNUIGlkLCBzdGF0dXMgRlJP TSBob3RfdGVzdCBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsKIAotLS0gTXVsdGktY29sdW1u IGluZGV4OiBhbnkgY29sdW1uIGNoYW5nZSA9IG5vbi1IT1QKIERST1AgVEFCTEUgaG90X3Rl c3Q7CiAKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNS4gTXVsdGktY29sdW1uIGJ0 cmVlOiB1cGRhdGUgb2Ygbm9uLWluZGV4ZWQgY29sdW1uCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkgS0VZ LAogICAgIGNvbF9hIGludCwKQEAgLTM1NiwzNiArMjYwLDQ1IEBAIENSRUFURSBUQUJMRSBo b3RfdGVzdCAoCiAgICAgY29sX2MgaW50LAogICAgIGRhdGEgdGV4dAogKSBXSVRIIChmaWxs ZmFjdG9yID0gNTApOwotCiBDUkVBVEUgSU5ERVggaG90X3Rlc3RfYWJfaWR4IE9OIGhvdF90 ZXN0KGNvbF9hLCBjb2xfYik7CiAKIElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwg MTAsIDIwLCAzMCwgJ2RhdGEnKTsKIAotLS0gVXBkYXRlIGNvbF9hIChwYXJ0IG9mIG11bHRp LWNvbHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF90ZXN0IFNF VCBjb2xfYSA9IDE1OworLS0gY29sX2Mgbm90IGluIGFueSBpbmRleDogSE9ULgorVVBEQVRF IGhvdF90ZXN0IFNFVCBjb2xfYyA9IDM1OworLS0gZGF0YSBub3QgaW4gYW55IGluZGV4OiBI T1QuCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCc7CitTRUxFQ1QgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90ZXN0Jyk7CiAKLS0tIFJlc2V0Ci1VUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9hID0g MTA7Ci0KLS0tIFVwZGF0ZSBjb2xfYiAocGFydCBvZiBtdWx0aS1jb2x1bW4gaW5kZXgpIC0g c2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2IgPSAyNTsKLVNF TEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKK0RST1AgVEFCTEUgaG90 X3Rlc3Q7CiAKLS0tIFJlc2V0Ci1VUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9iID0gMjA7Ci1T RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKy0tIDYuIFVuaXF1ZSBpbmRleDogdXBkYXRlIG9mIG5vbi1pbmRleGVk IGNvbHVtbiArIHVuaXF1ZW5lc3MgZW5mb3JjZW1lbnQKKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVks CisgICAgdW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOwogCi0tLSBVcGRhdGUgY29sX2MgKG5vdCBpbmRleGVkKSAtIHNo b3VsZCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2MgPSAzNTsKK0lOU0VSVCBJ TlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhv dF90ZXN0IFZBTFVFUyAoMiwgMjAwLCAnZGF0YTInKTsKIAotLS0gVXBkYXRlIGRhdGEgKG5v dCBpbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKIFVQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9 ICd1cGRhdGVkJzsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gUGFydGl0aW9uZWQg dGFibGVzOiBIT1Qgd29ya3Mgd2l0aGluIHBhcnRpdGlvbnMKLURST1AgVEFCTEUgSUYgRVhJ U1RTIGhvdF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7CitTRUxFQ1QgaWQsIHVuaXF1ZV9j b2wsIGRhdGEgRlJPTSBob3RfdGVzdCBPUkRFUiBCWSBpZDsKIAorLS0gVW5pcXVlIGNvbnN0 cmFpbnQgc3RpbGwgZW5mb3JjZWQgb24gYW55IHBhdGguCitVUERBVEUgaG90X3Rlc3QgU0VU IHVuaXF1ZV9jb2wgPSAxMDAgV0hFUkUgaWQgPSAyOworCitEUk9QIFRBQkxFIGhvdF90ZXN0 OworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcuIFBhcnRpdGlvbmVkIHRhYmxl czogSE9UIHdpdGhpbiBhIHBhcnRpdGlvbgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBD UkVBVEUgVEFCTEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgKAogICAgIGlkIGludCwKICAgICBw YXJ0aXRpb25fa2V5IGludCwKQEAgLTQwNCwyMDIgKzMxNyw4MiBAQCBDUkVBVEUgSU5ERVgg aG90X3Rlc3RfcGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0aW9uZWQoaW5kZXhlZF9jb2wp OwogSU5TRVJUIElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQgVkFMVUVTICgxLCA1MCwgMTAw LCAnaW5pdGlhbDEnKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFZBTFVF UyAoMiwgMTUwLCAyMDAsICdpbml0aWFsMicpOwogCi0tLSBVcGRhdGUgaW4gcGFydGl0aW9u IDEgKG5vbi1pbmRleGVkIGNvbHVtbikgLSBzaG91bGQgYmUgSE9UCiBVUERBVEUgaG90X3Rl c3RfcGFydGl0aW9uZWQgU0VUIGRhdGEgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsKLQot LS0gVXBkYXRlIGluIHBhcnRpdGlvbiAyIChub24taW5kZXhlZCBjb2x1bW4pIC0gc2hvdWxk IGJlIEhPVAogVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3VwZGF0 ZWQyJyBXSEVSRSBpZCA9IDI7CiAKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFydDEnKTsKK1NF TEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X3Rlc3RfcGFydDInKTsKIAotLS0gVmVyaWZ5IGluZGV4ZXMgd29yayBv biBwYXJ0aXRpb25zCiBTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBXSEVS RSBpbmRleGVkX2NvbCA9IDEwMDsKIFNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlv bmVkIFdIRVJFIGluZGV4ZWRfY29sID0gMjAwOwogCi0tLSBVcGRhdGUgaW5kZXhlZCBjb2x1 bW4gaW4gcGFydGl0aW9uIC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdF9w YXJ0aXRpb25lZCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOwotU0VMRUNU ICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOwotCi0tLSBWZXJpZnkg aW5kZXggd2FzIHVwZGF0ZWQKLVNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVk IFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOwotCi0tLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBUcmlnZ2VyIG1vZGlmaWNhdGlvbnM6IGhlYXBfbW9kaWZ5X3R1cGxlKCkgYW5kIEhP VAotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVzdCB0aGF0IHdlIGNvcnJlY3Rs eSBkZXRlY3Qgd2hlbiB0cmlnZ2VycyBtb2RpZnkgaW5kZXhlZCBjb2x1bW5zIHZpYQotLS0g aGVhcF9tb2RpZnlfdHVwbGUoKSwgZXZlbiB3aGVuIHRob3NlIGNvbHVtbnMgYXJlbid0IGlu IHRoZSBVUERBVEUncyBTRVQgY2xhdXNlCi0KLUNSRUFURSBUQUJMRSBob3RfdHJpZ2dlcl90 ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgdHJpZ2dlcmVkX2NvbCBpbnQs Ci0gICAgZGF0YSB0ZXh0Ci0pIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0KLUNSRUFURSBJ TkRFWCBob3RfdHJpZ2dlcl9pZHggT04gaG90X3RyaWdnZXJfdGVzdCh0cmlnZ2VyZWRfY29s KTsKLQotLS0gQ3JlYXRlIGEgdHJpZ2dlciB0aGF0IG1vZGlmaWVzIGFuIGluZGV4ZWQgY29s dW1uCi1DUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgp Ci1SRVRVUk5TIFRSSUdHRVIgQVMgJCQKLUJFR0lOCi0gICAgTkVXLnRyaWdnZXJlZF9jb2wg PSBORVcudHJpZ2dlcmVkX2NvbCArIDE7Ci0gICAgUkVUVVJOIE5FVzsKLUVORDsKLSQkIExB TkdVQUdFIHBscGdzcWw7Ci0KLUNSRUFURSBUUklHR0VSIGJlZm9yZV91cGRhdGVfbW9kaWZ5 Ci0gICAgQkVGT1JFIFVQREFURSBPTiBob3RfdHJpZ2dlcl90ZXN0Ci0gICAgRk9SIEVBQ0gg Uk9XCi0gICAgRVhFQ1VURSBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpOwotCi1J TlNFUlQgSU5UTyBob3RfdHJpZ2dlcl90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcp OwotCi1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90cmlnZ2VyX3Rlc3QnKTsK LQotLS0gVXBkYXRlIG9ubHkgZGF0YSBjb2x1bW4sIGJ1dCB0cmlnZ2VyIG1vZGlmaWVzIGlu ZGV4ZWQgY29sdW1uCi0tLSBTaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIHRyaWdnZXIgbW9k aWZpZWQgYW4gaW5kZXhlZCBjb2x1bW4KLVVQREFURSBob3RfdHJpZ2dlcl90ZXN0IFNFVCBk YXRhID0gJ3VwZGF0ZWQnIFdIRVJFIGlkID0gMTsKLQotLS0gVmVyaWZ5IGl0IHdhcyBOT1Qg YSBIT1QgdXBkYXRlIChpbmRleGVkIGNvbHVtbiB3YXMgbW9kaWZpZWQgYnkgdHJpZ2dlcikK LVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3RyaWdnZXJfdGVzdCcpOwotCi0t LSBWZXJpZnkgdGhlIHRyaWdnZXJlZCBjb2x1bW4gd2FzIGFjdHVhbGx5IG1vZGlmaWVkCi1T RUxFQ1QgdHJpZ2dlcmVkX2NvbCBGUk9NIGhvdF90cmlnZ2VyX3Rlc3QgV0hFUkUgaWQgPSAx OwotCi1EUk9QIFRBQkxFIGhvdF90cmlnZ2VyX3Rlc3QgQ0FTQ0FERTsKLURST1AgRlVOQ1RJ T04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKTsKLQotLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gSlNPTkIgZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNr aW5nCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUZXN0IHRoYXQgdXBkYXRlcyB0 byBub24taW5kZXhlZCBKU09OQiBwYXRocyBjYW4gYmUgSE9UIHVwZGF0ZXMKK0RST1AgVEFC TEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKIAorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCistLSA4LiBKU09OQiBleHByZXNzaW9uIGluZGV4OiBub24taW5kZXhlZCBwYXRo IGNoYW5nZSBpcyBIT1QKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxF IGhvdF9qc29uYl90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgZGF0YSBq c29uYgogKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCi0tLSBDcmVhdGUgZXhwcmVzc2lv biBpbmRleCBvbiBhIHNwZWNpZmljIEpTT04gcGF0aAogQ1JFQVRFIElOREVYIGhvdF9qc29u Yl9uYW1lX2lkeCBPTiBob3RfanNvbmJfdGVzdCAoKGRhdGEtPj4nbmFtZScpKTsKIAogSU5T RVJUIElOVE8gaG90X2pzb25iX3Rlc3QgVkFMVUVTCiAgICAgKDEsICd7Im5hbWUiOiJBbGlj ZSIsImFnZSI6MzAsImNpdHkiOiJOWUMifScpLAogICAgICgyLCAneyJuYW1lIjoiQm9iIiwi YWdlIjoyNSwiY2l0eSI6IkxBIn0nKTsKIAotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfanNvbmJfdGVzdCcpOwotCi0tLSBVcGRhdGUgbm9uLWluZGV4ZWQgSlNPTiBwYXRo IChhZ2UpIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24KKy0tIFRoZSBq c29uYiBjb2x1bW4gaXMgdGhlIGV4cHJlc3Npb24gaW5kZXgncyBpbnB1dCwgc28gSE9ULWlu ZGV4ZWQgaXMKKy0tIGRpc3F1YWxpZmllZCAoZXhwcmVzc2lvbiBpbmRleGVzIGFyZSBub3Qg eWV0IHN1cHBvcnRlZCkgYW5kIHRoZSBqc29uYgorLS0gY2hhbmdlIGJsb2NrcyBjbGFzc2lj IEhPVDogbm9uLUhPVCB1cGRhdGUuCiBVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEg PSBqc29uYl9zZXQoZGF0YSwgJ3thZ2V9JywgJzMxJykgV0hFUkUgaWQgPSAxOwotCi1TRUxF Q1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7Ci0KLS0tIFVwZGF0 ZSBpbmRleGVkIEpTT04gcGF0aCAobmFtZSkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRF IGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7bmFtZX0nLCAn IkFsaWNlMiInKSBXSEVSRSBpZCA9IDE7Ci0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3Qn KTsKIAotLS0gVmVyaWZ5IGluZGV4IHdvcmtzCi1TRUxFQ1QgaWQgRlJPTSBob3RfanNvbmJf dGVzdCBXSEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlMic7Ci0KLS0tIFRlc3QganNvbmJf ZGVsZXRlIG9uIG5vbi1pbmRleGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3Ry dW1lbnRhdGlvbgorLS0gTGlrZXdpc2Ugbm9uLUhPVDogZXhwcmVzc2lvbiBpbmRleCBkaXNx dWFsaWZpZXMgSE9ULWluZGV4ZWQuCiBVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEg PSBkYXRhIC0gJ2NpdHknIFdIRVJFIGlkID0gMjsKLQorU0VMRUNUIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJf dGVzdCcpOwogCi0tLSBUZXN0IGpzb25iX2luc2VydCBvbiBub24taW5kZXhlZCBwYXRoIC0g c2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24KKy0tIExpa2V3aXNlIG5vbi1I T1Q6IGV4cHJlc3Npb24gaW5kZXggZGlzcXVhbGlmaWVzIEhPVC1pbmRleGVkLgogVVBEQVRF IGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRy eX0nLCAnIlVTQSInKSBXSEVSRSBpZCA9IDI7Ci0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25l eHRfZmx1c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rl c3QnKTsKIAogRFJPUCBUQUJMRSBob3RfanNvbmJfdGVzdDsKIAotLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gWE1MIGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgc3ViLWF0dHJpYnV0 ZSB0cmFja2luZwotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVzdCB0aGF0IHVw ZGF0ZXMgdG8gbm9uLWluZGV4ZWQgWE1MIHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRlcwotCi1D UkVBVEUgVEFCTEUgaG90X3htbF90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0g ICAgZG9jIHhtbAotKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCi0tLSBDcmVhdGUgZXhw cmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIFhQYXRoCi1DUkVBVEUgSU5ERVggaG90X3ht bF9uYW1lX2lkeCBPTiBob3RfeG1sX3Rlc3QgKCh4cGF0aCgnL3BlcnNvbi9uYW1lL3RleHQo KScsIGRvYykpKTsKLQotSU5TRVJUIElOVE8gaG90X3htbF90ZXN0IFZBTFVFUwotICAgICgx LCAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMwPC9hZ2U+PC9wZXJzb24+Jyks Ci0gICAgKDIsICc8cGVyc29uPjxuYW1lPkJvYjwvbmFtZT48YWdlPjI1PC9hZ2U+PC9wZXJz b24+Jyk7Ci0KLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7 Ci0KLS0tIFVwZGF0ZSBub24taW5kZXhlZCBYUGF0aCAoYWdlKSAtIGJlaGF2aW9yIGRlcGVu ZHMgb24gWE1MIGNvbXBhcmlzb24gZmFsbGJhY2sKLS0tIEZ1bGwgWE1MIHZhbHVlIHJlcGxh Y2VtZW50IG1lYW5zIG5vbi1pbmRleGVkIHBhdGggdXBkYXRlcyBzdGlsbCByZXF1aXJlIGlu ZGV4IGNvbXBhcmlzb24KLVVQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8cGVyc29u PjxuYW1lPkFsaWNlPC9uYW1lPjxhZ2U+MzE8L2FnZT48L3BlcnNvbj4nIFdIRVJFIGlkID0g MTsKLQotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3QnKTsKLQot LS0gVXBkYXRlIGluZGV4ZWQgWFBhdGggKG5hbWUpIC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQ REFURSBob3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8cGVyc29uPjxuYW1lPkFsaWNlMjwvbmFt ZT48YWdlPjMxPC9hZ2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7Ci0KLVNFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7Ci0KLS0tIFZlcmlmeSBpbmRleCB3 b3JrcwotU0VMRUNUIGlkIEZST00gaG90X3htbF90ZXN0IFdIRVJFIHhwYXRoKCcvcGVyc29u L25hbWUvdGV4dCgpJywgZG9jKSA9IEFSUkFZWydBbGljZTInOjp0ZXh0XTsKLQotRFJPUCBU QUJMRSBob3RfeG1sX3Rlc3Q7Ci0KLS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEdJ TiBpbmRleGVzIGFuZCBhbWNvbXBhcmVkYXR1bXMgZm9yIEpTT05CCi0tLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBUZXN0IHRoYXQgR0lOIGluZGV4ZXMgY2FuIHVzZSBhbWNvbXBh cmVkYXR1bXMgdG8gZW5hYmxlIEhPVCB3aGVuIGV4dHJhY3RlZCBrZXlzIG1hdGNoCi0KKy0t IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gOS4gQSBjaGFuZ2UgdG8gYSBHSU4taW5kZXhl ZCBjb2x1bW4gaXMgSE9ULWluZGV4ZWQKKy0tCistLSBUaGUgcmVhZCBzaWRlIGZpbHRlcnMg YSBzdGFsZSBsZWFmIHZpYSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwLCB3aGljaAor LS0gaXMgYWNjZXNzLW1ldGhvZCBhZ25vc3RpYywgc28gYSBHSU4tY292ZXJlZCBjb2x1bW4g aXMgSE9ULWluZGV4ZWQgbGlrZSBhbnkKKy0tIG90aGVyOiBvbmx5IHRoZSBHSU4gaW5kZXgg aXMgbWFpbnRhaW5lZCwgYW5kIGEgR0lOIHNjYW4gKHdoaWNoIHJlY2hlY2tzIG9uCistLSB0 aGUgaGVhcCkgcmV0dXJucyBjb3JyZWN0IHJlc3VsdHMgYWNyb3NzIHRoZSBjaGFpbi4KKy0t IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF9naW5fdGVzdCAoCiAg ICAgaWQgaW50IFBSSU1BUlkgS0VZLAogICAgIHRhZ3MgdGV4dFtdLAogICAgIHByb3BlcnRp ZXMganNvbmIKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLQotLS0gR0lOIGluZGV4IG9u IHRleHQgYXJyYXkKIENSRUFURSBJTkRFWCBob3RfZ2luX3RhZ3NfaWR4IE9OIGhvdF9naW5f dGVzdCBVU0lORyBnaW4gKHRhZ3MpOwotCi0tLSBHSU4gaW5kZXggb24gSlNPTkIgKGpzb25i X29wcyAtIGtleXMgYW5kIHZhbHVlcykKIENSRUFURSBJTkRFWCBob3RfZ2luX3Byb3BzX2lk eCBPTiBob3RfZ2luX3Rlc3QgVVNJTkcgZ2luIChwcm9wZXJ0aWVzKTsKIAogSU5TRVJUIElO VE8gaG90X2dpbl90ZXN0IFZBTFVFUwogICAgICgxLCBBUlJBWVsndGFnMScsICd0YWcyJ10s ICd7ImtleTEiOiJ2YWwxIiwia2V5MiI6InZhbDIifScpLAogICAgICgyLCBBUlJBWVsndGFn MycsICd0YWc0J10sICd7ImtleTMiOiJ2YWwzIiwia2V5NCI6InZhbDQifScpOwogCi1TRUxF Q1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVzdCcpOwotCi0tLSBVcGRhdGUg dGhhdCBjaGFuZ2VzIHRhZyBvcmRlciBidXQgbm90IGNvbnRlbnQgLSBhZnRlciBhbWNvbXBh cmVkYXR1bXMgc2hvdWxkIGJlIEhPVAotLS0gKEdJTiBleHRyYWN0cyBzYW1lIGtleXMsIGp1 c3QgZGlmZmVyZW50IG9yZGVyKQorLS0gUmVvcmRlciB0YWdzOiBhIEdJTi1jb3ZlcmVkIGNv bHVtbiBjaGFuZ2VzLCBzbyB0aGlzIGlzIEhPVC1pbmRleGVkLgogVVBEQVRFIGhvdF9naW5f dGVzdCBTRVQgdGFncyA9IEFSUkFZWyd0YWcyJywgJ3RhZzEnXSBXSEVSRSBpZCA9IDE7Ci0K LVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7Ci0KLS0tIFVw ZGF0ZSBKU09OQiB2YWx1ZSAobm90IGtleSkgLSBhZnRlciBhbWNvbXBhcmVkYXR1bXMgbWF5 IGJlIEhPVCBvciBub24tSE9UCi0tLSBkZXBlbmRpbmcgb24gR0lOIG9wZXJhdG9yIGNsYXNz IChqc29uYl9vcHMgaW5kZXhlcyBib3RoIGtleXMgYW5kIHZhbHVlcykKLVVQREFURSBob3Rf Z2luX3Rlc3QgU0VUIHByb3BlcnRpZXMgPSAneyJrZXkxIjoidmFsMV9uZXciLCJrZXkyIjoi dmFsMiJ9JyBXSEVSRSBpZCA9IDE7Ci0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7CiAK LS0tIEFkZCBuZXcgdGFnIC0gc2hvdWxkIE5PVCBiZSBIT1QgKGRpZmZlcmVudCBleHRyYWN0 ZWQga2V5cykKLVVQREFURSBob3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJBWVsndGFnMics ICd0YWcxJywgJ3RhZzUnXSBXSEVSRSBpZCA9IDE7Ci0KLVNFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7Ci0KLS0tIFZlcmlmeSBHSU4gaW5kZXhlcyB3b3Jr Ci1TRUxFQ1QgaWQgRlJPTSBob3RfZ2luX3Rlc3QgV0hFUkUgdGFncyBAPiBBUlJBWVsndGFn NSddOwotU0VMRUNUIGlkIEZST00gaG90X2dpbl90ZXN0IFdIRVJFIHByb3BlcnRpZXMgQD4g J3sia2V5MSI6InZhbDFfbmV3In0nOwotCiBEUk9QIFRBQkxFIGhvdF9naW5fdGVzdDsKIAot LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAt LSBDbGVhbnVwCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1EUk9QIFRBQkxFIElGIEVY SVNUUyBob3RfdGVzdDsKLURST1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0X3BhcnRpdGlv bmVkIENBU0NBREU7Ci1EUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBoYXNfaG90X2NoYWluKHRl eHQsIHRpZCk7Ci1EUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBwcmludF9ob3RfY2hhaW4odGV4 dCwgdGlkKTsKLURST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGdldF9ob3RfY291bnQodGV4dCk7 CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RST1AgRlVOQ1RJT04gaGFzX2hvdF9jaGFp bih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBwcmludF9ob3RfY2hhaW4odGV4dCwgdGlk KTsKK0RST1AgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudCh0ZXh0KTsKIERST1AgRVhURU5TSU9O IHBhZ2VpbnNwZWN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA1NmMxZjk5 N2Y4OC4uNjQ2Y2E1Nzk0M2MgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0x Mjc3LDYgKzEyNzcsNyBAQCBIZWFwVHVwbGVGcmVlemUKIEhlYXBUdXBsZUhlYWRlcgogSGVh cFR1cGxlSGVhZGVyRGF0YQogSGVhcFR1cGxlVGFibGVTbG90CitIZWFwVXBkYXRlSW5kZXhN b2RlCiBIaXN0Q29udHJvbAogSG9zdENhY2hlRW50cnkKIEhvc3RzRmlsZUxvYWRSZXN1bHQK QEAgLTMxNDEsNyArMzE0Miw2IEBAIFRTVmVjdG9yU3RhdAogVFN0YXRlCiBUU3RhdHVzCiBU U3RvcmVTdGF0ZQotVFVfVXBkYXRlSW5kZXhlcwogVFhORW50cnlGaWxlCiBUWVBDQVRFR09S WQogVF9BY3Rpb24KLS0gCjIuNTAuMQoK --ffc971266f692fe98c1088dac35356ed85e7d5db Content-Disposition: attachment; filename*0="v63-0005-Fix-a-BitmapAnd-BitmapOr-false-negative-on-HOT-i.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v63-0005-Fix-a-BitmapAnd-BitmapOr-false-negative-on-HOT-i.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA3ZmRjYjkwYWJmYzVjYWZmODEwOTYyNzAyZTNhNDA0ZWI4YjYxNzNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog RnJpLCAxMCBKdWwgMjAyNiAxNTozMzozNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjYzIDA1 LzEwXSBGaXggYSBCaXRtYXBBbmQvQml0bWFwT3IgZmFsc2UgbmVnYXRpdmUgb24KIEhPVC1p bmRleGVkIGZyZXNoIGVudHJpZXMKCkEgSE9ULWluZGV4ZWQgKFNJVSkgdXBkYXRlJ3MgZnJl c2ggZW50cnkgaW4gYSBjaGFuZ2VkIGluZGV4IHBvaW50cyBhdAp0aGUgbmV3IGhlYXAtb25s eSB0dXBsZSwgbm90IGF0IHRoZSBjaGFpbiByb290IHRoZSB3YXkgZXZlcnkgb3RoZXIKaW5k ZXggZW50cnkgZm9yIHRoZSBzYW1lIGxvZ2ljYWwgcm93IGRvZXMgLS0gdGhhdCBwb3NpdGlv bmFsCmRpc3RpbmN0aW9uIGlzIHdoYXQgbGV0cyB0aGUgcmVhZCBzaWRlIGp1ZGdlIHN0YWxl bmVzcyBmcm9tIHRoZQpjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgd2l0aG91dCBhIHZhbHVl IHJlY2hlY2suCgpCaXRtYXBBbmQvQml0bWFwT3IgY29tYmluZSB0d28gaW5kZXhlcycgVElE IHNldHMgYXQgcmF3IGJsb2NrK29mZnNldApncmFudWxhcml0eSBpbiB0aWRiaXRtYXAuYywg YmVmb3JlIGVpdGhlciBzaWRlIGV2ZXIgdG91Y2hlcyB0aGUgaGVhcC4KQW4gdW5yZWxhdGVk LCB1bmNoYW5nZWQgaW5kZXgncyByb290LXBvaW50aW5nIGVudHJ5IGZvciB0aGUgc2FtZSBy b3cKd2lsbCBub3QgYWdyZWUgd2l0aCB0aGUgY2hhbmdlZCBpbmRleCdzIGZyZXNoIGVudHJ5 J3Mgb2Zmc2V0LCBzbyBhbgpleGFjdC1tb2RlIGludGVyc2VjdGlvbiBjYW4gc2lsZW50bHkg ZHJvcCBhIHJvdyB0aGF0IG1hdGNoZXMgYm90aApwcmVkaWNhdGVzLiAgUmVwb3J0ZWQgYnkg QWxleGFuZGVyIEtvcm90a292LgoKRml4ZWQgYnkgcmVzZXJ2aW5nIG9uZSBvdGhlcndpc2Ut dW51c2VkIGJpdCAoYml0IDE0KSBpbiBhIHN0b3JlZCBUSUQncwpvZmZzZXQgZmllbGQsIEl0 ZW1Qb2ludGVyU0lVTWF5YmVTdGFsZUZsYWcuICBNYXhPZmZzZXROdW1iZXIgbmV2ZXIKbmVl ZHMgbW9yZSB0aGFuIDE0IGJpdHMgZXZlbiBhdCB0aGUgbGFyZ2VzdCBjb25maWd1cmFibGUg QkxDS1NaLCBzbwp0aGUgYml0IGlzIGZyZWUgZm9yIGFueSByZWFsIG9mZnNldDsgaXQgaXMg c2V0IG9ubHkgb24gdGhlIGxvY2FsIFRJRApjb3B5IGhhbmRlZCB0byBhIEhPVC1pbmRleGVk IGZyZXNoIGVudHJ5J3MgaW5kZXhfaW5zZXJ0KCkgY2FsbCBpbgpFeGVjSW5zZXJ0SW5kZXhU dXBsZXMsIG5ldmVyIG9uIHRoZSBzbG90J3Mgb3duIHR0c190aWQuCgpJdGVtUG9pbnRlckdl dE9mZnNldE51bWJlciBhbmQgSXRlbVBvaW50ZXJDb21wYXJlIHN0cmlwIHRoZSBiaXQgYnkK ZGVmYXVsdCAodmlhIHRoZSBzZW50aW5lbC1zYWZlIEl0ZW1Qb2ludGVyT2Zmc2V0TnVtYmVy U3RyaXAsIHdoaWNoCmxlYXZlcyBTcGVjVG9rZW5PZmZzZXROdW1iZXIvTW92ZWRQYXJ0aXRp b25zT2Zmc2V0TnVtYmVyIC0tIGJvdGggb2YKd2hpY2ggYWxyZWFkeSBoYXZlIHRoaXMgYml0 IHNldCBhcyBwYXJ0IG9mIHRoZWlyIG93biBlbmNvZGluZyAtLQp1bnRvdWNoZWQpIHNvIGV2 ZXJ5IG9yZGluYXJ5IGNvbnN1bWVyIGtlZXBzIHNlZWluZyB0aGUgcmVhbCBvZmZzZXQ7Cm9u bHkgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXJOb0NoZWNrIGV4cG9zZXMgdGhlIHJhdyB2 YWx1ZS4KClRoZSBjb25zdW1wdGlvbiBpcyBjZW50cmFsaXplZCBpbiB0Ym1fYWRkX3R1cGxl cygpLCB0aGUgc2luZ2xlIGNob2tlCnBvaW50IGV2ZXJ5IGFtZ2V0Yml0bWFwIGZ1bm5lbHMg ZXhhY3QgaGVhcCBUSURzIHRocm91Z2g6IGl0IHRlc3RzIHRoZQpyYXcgZmxhZyAoYmVmb3Jl IHRoZSBvZmZzZXQgaXMgc3RyaXBwZWQpIGFuZCwgd2hlbiBzZXQsIGFkZHMgdGhlIHdob2xl CnBhZ2UgYXMgbG9zc3kgKHRibV9hZGRfcGFnZSkgaW5zdGVhZCBvZiB0aGUgc2luZ2xlIGV4 YWN0IG9mZnNldC4gIFBlcgp0Ym1faW50ZXJzZWN0X3BhZ2UncyBvd24gY2FzZSBhbmFseXNp cyBhIGxvc3N5IHBhZ2Ugc3Vydml2ZXMgYW55IEFORC9PUgphZ2FpbnN0IGFuIGV4YWN0LW1v ZGUgcGFnZSBhbmQgZm9yY2VzIGEgcmVjaGVjaywgc28gQml0bWFwSGVhcFNjYW4KcmVzb2x2 ZXMgdGhlIGNoYWluIGFuZCB0aGUgZXhpc3RpbmcgaGVhcC1zaWRlIGNyb3NzZWQtYXR0cmli dXRlCnN0YWxlbmVzcyB0ZXN0IG1ha2VzIHRoZSBmaW5hbCwgY29ycmVjdCBjYWxsLiAgQmVj YXVzZSB0aGlzIGxpdmVzIGluCnRibV9hZGRfdHVwbGVzIGFuZCBub3QgaW4gZWFjaCBhY2Nl c3MgbWV0aG9kLCBubyBpbmRleCBBTSBuZWVkcyB0byBrbm93CmFib3V0IEhPVC1pbmRleGVk IGNoYWluczogYnRyZWUsIGhhc2gsIEdJTiwgR2lTVCwgU1AtR2lTVCwgY29udHJpYi9ibG9v bSwKYW5kIG91dC1vZi10cmVlIEFNcyBhcmUgYWxsIGNvcnJlY3Qgd2l0aCBubyBBTS1zcGVj aWZpYyBjb2RlLCBhbmQgYSBUSUQKdGhhdCBuZXZlciBjYXJyaWVzIHRoZSBmbGFnIHRha2Vz IHRoZSBpZGVudGljYWwgcGF0aCBpdCBhbHdheXMgZGlkLgpHSU4ncyBvd24gcGFnZS1sZXZl bCBsb3NzeSBzZW50aW5lbCAoSXRlbVBvaW50ZXJJc0xvc3N5UGFnZSwgYW4KdW5yZWxhdGVk IDB4ZmZmZiBtYXJrZXIgdXNlZCBiZWZvcmUgYSByZWFsIGhlYXAgVElEIGlzIHByb2R1Y2Vk KSBpcwp1bnRvdWNoZWQ7IHRoZSBuZXcgY2hlY2sgb25seSBhcHBsaWVzIHRvIGdlbnVpbmUg aGVhcC1pdGVtIFRJRHMuCgpUaGUgY29zdCBpcyBwcmVjaXNpb24sIG5vdCBjb3JyZWN0bmVz czogYW55IGhlYXAgcGFnZSBjYXJyeWluZyBhIGxpdmUKZnJlc2ggZW50cnkgY29udHJpYnV0 ZXMgbG9zc3kgKGEgd2hvbGUtcGFnZSByZWNoZWNrIGZvciBhbGwgaXRzIHR1cGxlcwpvbiB0 aGF0IGJpdG1hcCBzY2FuLCBub3QganVzdCB0aGUgU0lVIHJvdykgdW50aWwgdGhlIGNoYWlu IGNvbGxhcHNlcy4KSXQgaXMgYm91bmRlZCBhbmQgc2VsZi1oZWFsaW5nIC0tIHBydW5lL1ZB Q1VVTSBjb2xsYXBzZSByZXN0b3JlcwpleGFjdC1tb2RlIGVudHJpZXMuCgphbWNoZWNrJ3Mg aGVhcGFsbGluZGV4ZWQgdmVyaWZpY2F0aW9uIGZpbmdlcnByaW50cyBsZWFmIHR1cGxlcycg c3RvcmVkClRJRHMgYW5kIGNvbXBhcmVzIHRoZW0gYWdhaW5zdCB0aGUgcGxhaW4gaGVhcCBU SURzIGl0IHJlLWRlcml2ZXMgZnJvbQp0aGUgaGVhcCBzY2FuOyB2ZXJpZnlfbmJ0cmVlLmMg bm93IHN0cmlwcyB0aGUgbWFya2VyIHdoaWxlIGZpbmdlcnByaW50aW5nCnNvIGEgZnJlc2gg ZW50cnkgZG9lcyBub3QgcmFpc2UgYSBzcHVyaW91cyAibGFja3MgbWF0Y2hpbmcgaW5kZXgg dHVwbGUiLgpwYWdlaW5zcGVjdCAxLjE0J3MgYnRfcGFnZV9pdGVtcyByZXBvcnRzIHRoZSBy ZWFsIG9mZnNldCBpbiBpdHMgY3RpZCBhbmQKaHRpZCBjb2x1bW5zIChlYXJsaWVyIHZlcnNp b25zIHN1cmZhY2VkIHRoZSBtYXJrZXIgYXMgYW4gaW5mbGF0ZWQgb2Zmc2V0KQphbmQgYWRk cyBhIGhvdF9pbmRleGVkIGJvb2xlYW4gY29sdW1uIGV4cG9zaW5nIHRoZSBtYXJrZXIgZXhw bGljaXRseS4KCkNhdWdodCBpdHMgb3duIHJlZ3Jlc3Npb24gZHVyaW5nIGRldmVsb3BtZW50 OiB0aGUgZmlyc3QgY3V0IG1hc2tlZApiaXQgMTQgdW5jb25kaXRpb25hbGx5LCB3aGljaCBj b3JydXB0ZWQgU3BlY1Rva2VuT2Zmc2V0TnVtYmVyIGFuZApNb3ZlZFBhcnRpdGlvbnNPZmZz ZXROdW1iZXIgKGJvdGggYWxyZWFkeSBoYXZlIGJpdCAxNCBzZXQpLCBzaWxlbnRseQpicmVh a2luZyBjcm9zcy1wYXJ0aXRpb24tVVBEQVRFIGNvbmZsaWN0IGRldGVjdGlvbiAtLSBjYXVn aHQgYnkgdGhlCmlzb2xhdGlvbiBzdWl0ZSAoZXZhbC1wbGFuLXF1YWwsIG1lcmdlLXVwZGF0 ZSwgcGFydGl0aW9uLWtleS11cGRhdGUpLgpGaXhlZCBieSBnYXRpbmcgdGhlIHN0cmlwIG9u IHRoZSB2YWx1ZSBiZWluZyBiZWxvdyB0aGUgc2VudGluZWwgcmFuZ2UuCgpSZWdyZXNzaW9u IGNvdmVyYWdlIChCaXRtYXBBbmQvQml0bWFwT3IgYWNyb3NzIGEgY2hhbmdlZCt1bmNoYW5n ZWQKaW5kZXggZm9yIGV2ZXJ5IGFjY2VzcyBtZXRob2QgU0lVIGV4ZXJjaXNlcywgcGx1cyBh IGJsb29tIGNhc2UgaW4KY29udHJpYi9ibG9vbSBhbmQgaGVhcGFsbGluZGV4ZWQgb24gYSBj aGFuZ2VkIGluZGV4KSBpcyBhZGRlZAphbG9uZ3NpZGUgdGhlIHJlc3Qgb2YgdGhlIEhPVC1p bmRleGVkIHRlc3Qgc3VpdGUuCi0tLQogY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUu YyAgICAgICAgICAgICAgIHwgIDI4ICsrKysrCiBjb250cmliL2Jsb29tL2V4cGVjdGVkL2Js b29tLm91dCAgICAgICAgICAgICAgfCAgMzIgKysrKysKIGNvbnRyaWIvYmxvb20vc3FsL2Js b29tLnNxbCAgICAgICAgICAgICAgICAgICB8ICAyOCArKysrKwogY29udHJpYi9wYWdlaW5z cGVjdC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgICAyICstCiBjb250cmliL3BhZ2Vp bnNwZWN0L2J0cmVlZnVuY3MuYyAgICAgICAgICAgICAgfCAgNTMgKysrKysrKystCiBjb250 cmliL3BhZ2VpbnNwZWN0L2V4cGVjdGVkL2J0cmVlLm91dCAgICAgICAgfCAgNDIgKysrLS0t LQogY29udHJpYi9wYWdlaW5zcGVjdC9tZXNvbi5idWlsZCAgICAgICAgICAgICAgIHwgICAx ICsKIC4uLi9wYWdlaW5zcGVjdC9wYWdlaW5zcGVjdC0tMS4xMy0tMS4xNC5zcWwgICB8ICA0 OSArKysrKysrKwogY29udHJpYi9wYWdlaW5zcGVjdC9wYWdlaW5zcGVjdC5jb250cm9sICAg ICAgIHwgICAyICstCiBkb2Mvc3JjL3NnbWwvcGFnZWluc3BlY3Quc2dtbCAgICAgICAgICAg ICAgICAgfCAgMTIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jICAg ICAgICAgICB8ICA1MiArKysrKysrLS0KIHNyYy9iYWNrZW5kL25vZGVzL3RpZGJpdG1hcC5j ICAgICAgICAgICAgICAgICB8ICAzNyArKysrKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvcGFn ZS9pdGVtcHRyLmMgICAgICAgICAgICB8ICAxOCArKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uv aXRlbXB0ci5oICAgICAgICAgICAgICAgICB8IDEwOSArKysrKysrKysrKysrKysrKy0KIDE0 IGZpbGVzIGNoYW5nZWQsIDQyMSBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BhZ2VpbnNwZWN0L3BhZ2VpbnNwZWN0LS0xLjEz LS0xLjE0LnNxbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVl LmMgYi9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCmluZGV4IDNlZjJkNjZmODI2 Li5jMWJmZGNjMTMzYyAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRy ZWUuYworKysgYi9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCkBAIC0xNDg5LDYg KzE0ODksMzAgQEAgYnRfdGFyZ2V0X3BhZ2VfY2hlY2soQnRyZWVDaGVja1N0YXRlICpzdGF0 ZSkKIAkJaWYgKHN0YXRlLT5oZWFwYWxsaW5kZXhlZCAmJiBQX0lTTEVBRih0b3BhcXVlKSAm JiAhSXRlbUlkSXNEZWFkKGl0ZW1pZCkpCiAJCXsKIAkJCUluZGV4VHVwbGUJbm9ybTsKKwkJ CUl0ZW1Qb2ludGVyRGF0YSBzYXZlZF90aWQ7CisJCQlib29sCQlzaXVfc3RyaXBwZWQgPSBm YWxzZTsKKworCQkJLyoKKwkJCSAqIEEgSE9ULWluZGV4ZWQgKFNJVSkgZnJlc2ggZW50cnkg c3RvcmVzIGl0cyBoZWFwIFRJRCB3aXRoIHRoZQorCQkJICogSXRlbVBvaW50ZXJTSVVNYXli ZVN0YWxlRmxhZyBtYXJrZXIgYml0IHNldCBpbiB0aGUgb2Zmc2V0IGZpZWxkCisJCQkgKiAo c2VlIHN0b3JhZ2UvaXRlbXB0ci5oKS4gIFRoZSBtYXJrZXIgaXMgYSBiaXRtYXAtc2NhbiBo aW50LCBub3QKKwkJCSAqIHBhcnQgb2YgdGhlIHR1cGxlJ3MgaGVhcCBhZGRyZXNzLCBhbmQg dGhlIGhlYXBhbGxpbmRleGVkIGNhbGxiYWNrCisJCQkgKiAoYnRfdHVwbGVfcHJlc2VudF9j YWxsYmFjaykgZmluZ2VycHJpbnRzIHRoZSBwbGFpbiBoZWFwIFRJRCBpdAorCQkJICogZ2V0 cyBmcm9tIHRoZSBoZWFwIHNjYW4uICBTdHJpcCB0aGUgbWFya2VyIGZyb20gdGhpcyBsZWFm IHR1cGxlJ3MKKwkJCSAqIFRJRCBmb3IgdGhlIGR1cmF0aW9uIG9mIGZpbmdlcnByaW50aW5n IHNvIHRoZSB0d28gbm9ybWFsaXplZAorCQkJICogaW1hZ2VzIG1hdGNoOyByZXN0b3JlIGl0 IGltbWVkaWF0ZWx5IGFmdGVyd2FyZCwgc2luY2UgbGF0ZXIKKwkJCSAqIGNoZWNrcyBpbiB0 aGlzIGxvb3Agc3RpbGwgcmVhZCBpdHVwIGZyb20gdGhlIChpbW11dGFibGUpIHBhZ2UKKwkJ CSAqIGltYWdlLiAgT25seSBwbGFpbiBsZWFmIHR1cGxlcyBjYW4gY2FycnkgdGhlIG1hcmtl ci4KKwkJCSAqLworCQkJaWYgKCFCVHJlZVR1cGxlSXNQb3N0aW5nKGl0dXApICYmCisJCQkJ SXRlbVBvaW50ZXJJc1NJVU1heWJlU3RhbGUoJml0dXAtPnRfdGlkKSkKKwkJCXsKKwkJCQlz YXZlZF90aWQgPSBpdHVwLT50X3RpZDsKKwkJCQkvKiBTdHJpcCBvbiB0aGUgcmF3IG9mZnNl dCAobm8gdmFsaWRpdHkgYXNzZXJ0KTsgcmVzdG9yZSBiZWxvdy4gKi8KKwkJCQlpdHVwLT50 X3RpZC5pcF9wb3NpZCA9CisJCQkJCUl0ZW1Qb2ludGVyT2Zmc2V0TnVtYmVyU3RyaXAoaXR1 cC0+dF90aWQuaXBfcG9zaWQpOworCQkJCXNpdV9zdHJpcHBlZCA9IHRydWU7CisJCQl9CiAK IAkJCWlmIChCVHJlZVR1cGxlSXNQb3N0aW5nKGl0dXApKQogCQkJewpAQCAtMTUxNiw2ICsx NTQwLDEwIEBAIGJ0X3RhcmdldF9wYWdlX2NoZWNrKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUp CiAJCQkJaWYgKG5vcm0gIT0gaXR1cCkKIAkJCQkJcGZyZWUobm9ybSk7CiAJCQl9CisKKwkJ CS8qIFJlc3RvcmUgdGhlIFNJVSBtYXJrZXIgYml0IHN0cmlwcGVkIGZvciBmaW5nZXJwcmlu dGluZywgaWYgYW55LiAqLworCQkJaWYgKHNpdV9zdHJpcHBlZCkKKwkJCQlpdHVwLT50X3Rp ZCA9IHNhdmVkX3RpZDsKIAkJfQogCiAJCS8qCmRpZmYgLS1naXQgYS9jb250cmliL2Jsb29t L2V4cGVjdGVkL2Jsb29tLm91dCBiL2NvbnRyaWIvYmxvb20vZXhwZWN0ZWQvYmxvb20ub3V0 CmluZGV4IGVkYzg1NTEyMWUxLi5hNTY3NWRhNjJiNCAxMDA2NDQKLS0tIGEvY29udHJpYi9i bG9vbS9leHBlY3RlZC9ibG9vbS5vdXQKKysrIGIvY29udHJpYi9ibG9vbS9leHBlY3RlZC9i bG9vbS5vdXQKQEAgLTIyOCwzICsyMjgsMzUgQEAgQ1JFQVRFIElOREVYIGJsb29taWR4MiBP TiB0c3QgVVNJTkcgYmxvb20gKGksIHQpIFdJVEggKGxlbmd0aD0wKTsKIEVSUk9SOiAgdmFs dWUgMCBvdXQgb2YgYm91bmRzIGZvciBvcHRpb24gImxlbmd0aCIKIENSRUFURSBJTkRFWCBi bG9vbWlkeDIgT04gdHN0IFVTSU5HIGJsb29tIChpLCB0KSBXSVRIIChjb2wxPTApOwogRVJS T1I6ICB2YWx1ZSAwIG91dCBvZiBib3VuZHMgZm9yIG9wdGlvbiAiY29sMSIKKy0tCistLSBI T1QtaW5kZXhlZCAoU0lVKSBCaXRtYXBBbmQgY29ycmVjdG5lc3Mgd2l0aCBhIGJsb29tIGlu ZGV4LgorLS0KKy0tIEEgYmxvb20gaW5kZXggaXMgYml0bWFwLXNjYW4tb25seSBhbmQgbm9u LXN1bW1hcml6aW5nLCBzbyBpdCBpcyBlbGlnaWJsZSB0bworLS0gYmUgdGhlICJ1bmNoYW5n ZWQiIHNpZGUgb2YgYSBIT1QtaW5kZXhlZCB1cGRhdGU6IHRoZSB1cGRhdGUgY2hhbmdlcyBh CistLSBidHJlZS1pbmRleGVkIGNvbHVtbiB3aGlsZSBsZWF2aW5nIHRoZSBibG9vbS1pbmRl eGVkIGNvbHVtbiBhbG9uZS4gIFRoZQorLS0gYnRyZWUgZnJlc2ggZW50cnkgdGhlbiBwb2lu dHMgYXQgdGhlIG5ldyBoZWFwLW9ubHkgdHVwbGUgYW5kIHRoZSBibG9vbSBlbnRyeQorLS0g c3RpbGwgcG9pbnRzIGF0IHRoZSBjaGFpbiByb290OyBhIEJpdG1hcEFuZCBvZiB0aGUgdHdv IG11c3Qgbm90IGRyb3AgdGhlCistLSBtYXRjaGluZyByb3cgKHRoZSBTSVUgZnJlc2ggZW50 cnkncyBUSUQgY2FycmllcyBhbiBpbnRlcm5hbCBtYXktYmUtc3RhbGUKKy0tIG1hcmtlciB0 aGF0IHRibV9hZGRfdHVwbGVzIGRlZ3JhZGVzIHRvIGEgbG9zc3kgcGFnZSwgc28gdGhlIGlu dGVyc2VjdGlvbgorLS0ga2VlcHMgdGhlIHJvdyBhbmQgdGhlIGhlYXAtc2lkZSByZWNoZWNr IHJlc29sdmVzIGl0KS4gIFRoaXMgaXMgaGFuZGxlZAorLS0gY2VudHJhbGx5IGluIHRibV9h ZGRfdHVwbGVzLCBzbyBibG9vbSAtLSBsaWtlIGV2ZXJ5IG90aGVyIGluZGV4IEFNIC0tIG5l ZWRzCistLSBubyBibG9vbS1zcGVjaWZpYyBjb2RlIGZvciBpdDsgdGhpcyB0ZXN0IGd1YXJk cyB0aGF0LgorQ1JFQVRFIFRBQkxFIGJsb29tX3NpdSAoaWQgaW50IFBSSU1BUlkgS0VZLCBi Y29sIGludCwgY2hhbmdlZCBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUg SU5ERVggYmxvb21fc2l1X2IgT04gYmxvb21fc2l1IFVTSU5HIGJsb29tIChiY29sKTsKK0NS RUFURSBJTkRFWCBibG9vbV9zaXVfYyBPTiBibG9vbV9zaXUgKGNoYW5nZWQpOworSU5TRVJU IElOVE8gYmxvb21fc2l1IFZBTFVFUyAoMSwgMTEsIDIxKTsKK1VQREFURSBibG9vbV9zaXUg U0VUIGNoYW5nZWQgPSAyMiBXSEVSRSBpZCA9IDE7ICAgLS0gSE9ULWluZGV4ZWQ6IG9ubHkg ImNoYW5nZWQiCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4 c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9uOworLS0gTXVzdCByZXR1 cm4gdGhlIHJvdyAocHJldmlvdXNseSBhIGZhbHNlIG5lZ2F0aXZlIGJlZm9yZSB0aGUgU0lV IGJpdG1hcCBmaXgpLgorU0VMRUNUIGNvdW50KCopIEFTIGJsb29tX2JpdG1hcGFuZCBGUk9N IGJsb29tX3NpdSBXSEVSRSBiY29sID0gMTEgQU5EIGNoYW5nZWQgPSAyMjsKKyBibG9vbV9i aXRtYXBhbmQgCistLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgMQorKDEgcm93 KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1JFU0VUIGVuYWJsZV9pbmRleHNjYW47CitS RVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK0RST1AgVEFCTEUgYmxvb21fc2l1OwpkaWZmIC0t Z2l0IGEvY29udHJpYi9ibG9vbS9zcWwvYmxvb20uc3FsIGIvY29udHJpYi9ibG9vbS9zcWwv Ymxvb20uc3FsCmluZGV4IGZhNjNiMzAxYzZlLi4yOGM5YjM2NzRlZiAxMDA2NDQKLS0tIGEv Y29udHJpYi9ibG9vbS9zcWwvYmxvb20uc3FsCisrKyBiL2NvbnRyaWIvYmxvb20vc3FsL2Js b29tLnNxbApAQCAtOTMsMyArOTMsMzEgQEAgU0VMRUNUIHJlbG9wdGlvbnMgRlJPTSBwZ19j bGFzcyBXSEVSRSBvaWQgPSAnYmxvb21pZHgnOjpyZWdjbGFzczsKIFxzZXQgVkVSQk9TSVRZ IHRlcnNlCiBDUkVBVEUgSU5ERVggYmxvb21pZHgyIE9OIHRzdCBVU0lORyBibG9vbSAoaSwg dCkgV0lUSCAobGVuZ3RoPTApOwogQ1JFQVRFIElOREVYIGJsb29taWR4MiBPTiB0c3QgVVNJ TkcgYmxvb20gKGksIHQpIFdJVEggKGNvbDE9MCk7CisKKy0tCistLSBIT1QtaW5kZXhlZCAo U0lVKSBCaXRtYXBBbmQgY29ycmVjdG5lc3Mgd2l0aCBhIGJsb29tIGluZGV4LgorLS0KKy0t IEEgYmxvb20gaW5kZXggaXMgYml0bWFwLXNjYW4tb25seSBhbmQgbm9uLXN1bW1hcml6aW5n LCBzbyBpdCBpcyBlbGlnaWJsZSB0bworLS0gYmUgdGhlICJ1bmNoYW5nZWQiIHNpZGUgb2Yg YSBIT1QtaW5kZXhlZCB1cGRhdGU6IHRoZSB1cGRhdGUgY2hhbmdlcyBhCistLSBidHJlZS1p bmRleGVkIGNvbHVtbiB3aGlsZSBsZWF2aW5nIHRoZSBibG9vbS1pbmRleGVkIGNvbHVtbiBh bG9uZS4gIFRoZQorLS0gYnRyZWUgZnJlc2ggZW50cnkgdGhlbiBwb2ludHMgYXQgdGhlIG5l dyBoZWFwLW9ubHkgdHVwbGUgYW5kIHRoZSBibG9vbSBlbnRyeQorLS0gc3RpbGwgcG9pbnRz IGF0IHRoZSBjaGFpbiByb290OyBhIEJpdG1hcEFuZCBvZiB0aGUgdHdvIG11c3Qgbm90IGRy b3AgdGhlCistLSBtYXRjaGluZyByb3cgKHRoZSBTSVUgZnJlc2ggZW50cnkncyBUSUQgY2Fy cmllcyBhbiBpbnRlcm5hbCBtYXktYmUtc3RhbGUKKy0tIG1hcmtlciB0aGF0IHRibV9hZGRf dHVwbGVzIGRlZ3JhZGVzIHRvIGEgbG9zc3kgcGFnZSwgc28gdGhlIGludGVyc2VjdGlvbgor LS0ga2VlcHMgdGhlIHJvdyBhbmQgdGhlIGhlYXAtc2lkZSByZWNoZWNrIHJlc29sdmVzIGl0 KS4gIFRoaXMgaXMgaGFuZGxlZAorLS0gY2VudHJhbGx5IGluIHRibV9hZGRfdHVwbGVzLCBz byBibG9vbSAtLSBsaWtlIGV2ZXJ5IG90aGVyIGluZGV4IEFNIC0tIG5lZWRzCistLSBubyBi bG9vbS1zcGVjaWZpYyBjb2RlIGZvciBpdDsgdGhpcyB0ZXN0IGd1YXJkcyB0aGF0LgorQ1JF QVRFIFRBQkxFIGJsb29tX3NpdSAoaWQgaW50IFBSSU1BUlkgS0VZLCBiY29sIGludCwgY2hh bmdlZCBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggYmxvb21f c2l1X2IgT04gYmxvb21fc2l1IFVTSU5HIGJsb29tIChiY29sKTsKK0NSRUFURSBJTkRFWCBi bG9vbV9zaXVfYyBPTiBibG9vbV9zaXUgKGNoYW5nZWQpOworSU5TRVJUIElOVE8gYmxvb21f c2l1IFZBTFVFUyAoMSwgMTEsIDIxKTsKK1VQREFURSBibG9vbV9zaXUgU0VUIGNoYW5nZWQg PSAyMiBXSEVSRSBpZCA9IDE7ICAgLS0gSE9ULWluZGV4ZWQ6IG9ubHkgImNoYW5nZWQiCitT RVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9mZjsK K1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9uOworLS0gTXVzdCByZXR1cm4gdGhlIHJvdyAo cHJldmlvdXNseSBhIGZhbHNlIG5lZ2F0aXZlIGJlZm9yZSB0aGUgU0lVIGJpdG1hcCBmaXgp LgorU0VMRUNUIGNvdW50KCopIEFTIGJsb29tX2JpdG1hcGFuZCBGUk9NIGJsb29tX3NpdSBX SEVSRSBiY29sID0gMTEgQU5EIGNoYW5nZWQgPSAyMjsKK1JFU0VUIGVuYWJsZV9zZXFzY2Fu OworUkVTRVQgZW5hYmxlX2luZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOwor RFJPUCBUQUJMRSBibG9vbV9zaXU7CmRpZmYgLS1naXQgYS9jb250cmliL3BhZ2VpbnNwZWN0 L01ha2VmaWxlIGIvY29udHJpYi9wYWdlaW5zcGVjdC9NYWtlZmlsZQppbmRleCBlYWU5ODk1 NjlkMC4uMDk3NzRmZDM0MGMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvTWFr ZWZpbGUKKysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9NYWtlZmlsZQpAQCAtMTMsNyArMTMs NyBAQCBPQkpTID0gXAogCXJhd3BhZ2UubwogCiBFWFRFTlNJT04gPSBwYWdlaW5zcGVjdAot REFUQSA9ICBwYWdlaW5zcGVjdC0tMS4xMi0tMS4xMy5zcWwgXAorREFUQSA9ICBwYWdlaW5z cGVjdC0tMS4xMy0tMS4xNC5zcWwgcGFnZWluc3BlY3QtLTEuMTItLTEuMTMuc3FsIFwKIAlw YWdlaW5zcGVjdC0tMS4xMS0tMS4xMi5zcWwgcGFnZWluc3BlY3QtLTEuMTAtLTEuMTEuc3Fs IFwKIAlwYWdlaW5zcGVjdC0tMS45LS0xLjEwLnNxbCBwYWdlaW5zcGVjdC0tMS44LS0xLjku c3FsIFwKIAlwYWdlaW5zcGVjdC0tMS43LS0xLjguc3FsIHBhZ2VpbnNwZWN0LS0xLjYtLTEu Ny5zcWwgXApkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9idHJlZWZ1bmNzLmMg Yi9jb250cmliL3BhZ2VpbnNwZWN0L2J0cmVlZnVuY3MuYwppbmRleCAzMzgxZTdjYzJhNy4u MmVlZWUzZTBlMTkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvYnRyZWVmdW5j cy5jCisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvYnRyZWVmdW5jcy5jCkBAIC00ODUsOCAr NDg1LDggQEAgYnRfcGFnZV9wcmludF90dXBsZXModWFfcGFnZV9pdGVtcyAqdWFyZ3MpCiAJ Ym9vbAkJbGVhZnBhZ2UgPSB1YXJncy0+bGVhZnBhZ2U7CiAJYm9vbAkJcmlnaHRtb3N0ID0g dWFyZ3MtPnJpZ2h0bW9zdDsKIAlib29sCQlpc3Bpdm90dHVwbGU7Ci0JRGF0dW0JCXZhbHVl c1s5XTsKLQlib29sCQludWxsc1s5XTsKKwlEYXR1bQkJdmFsdWVzWzEwXTsKKwlib29sCQlu dWxsc1sxMF07CiAJSGVhcFR1cGxlCXR1cGxlOwogCUl0ZW1JZAkJaWQ7CiAJSW5kZXhUdXBs ZQlpdHVwOwpAQCAtNDk3LDYgKzQ5Nyw5IEBAIGJ0X3BhZ2VfcHJpbnRfdHVwbGVzKHVhX3Bh Z2VfaXRlbXMgKnVhcmdzKQogCQkJICAgKmRhdGFjc3RyaW5nOwogCWNoYXIJICAgKnB0cjsK IAlJdGVtUG9pbnRlciBodGlkOworCWJvb2wJCWhvdF9pbmRleGVkOworCUl0ZW1Qb2ludGVy RGF0YSBjdGlkX3Nob3c7CisJSXRlbVBvaW50ZXJEYXRhIGh0aWRfc2hvdzsKIAogCWlkID0g UGFnZUdldEl0ZW1JZChwYWdlLCBvZmZzZXQpOwogCkBAIC01MDgsNyArNTExLDM1IEBAIGJ0 X3BhZ2VfcHJpbnRfdHVwbGVzKHVhX3BhZ2VfaXRlbXMgKnVhcmdzKQogCWogPSAwOwogCW1l bXNldChudWxscywgMCwgc2l6ZW9mKG51bGxzKSk7CiAJdmFsdWVzW2orK10gPSBJbnQxNkdl dERhdHVtKG9mZnNldCk7Ci0JdmFsdWVzW2orK10gPSBJdGVtUG9pbnRlckdldERhdHVtKCZp dHVwLT50X3RpZCk7CisKKwkvKgorCSAqIEEgSE9ULWluZGV4ZWQgKFNJVSkgZnJlc2ggZW50 cnkgc3RvcmVzIGl0cyBoZWFwIFRJRCB3aXRoIHRoZQorCSAqIEl0ZW1Qb2ludGVyU0lVTWF5 YmVTdGFsZUZsYWcgbWFya2VyIGJpdCBzZXQgaW4gdGhlIG9mZnNldCBmaWVsZCAoc2VlCisJ ICogc3RvcmFnZS9pdGVtcHRyLmgpLiAgUmVwb3J0IHRoZSByZWFsIG9mZnNldCBpbiB0aGUg Y3RpZCBjb2x1bW4gLS0gdGhlCisJICogbWFya2VyIGlzIGEgYml0bWFwLXNjYW4gaGludCwg bm90IHBhcnQgb2YgdGhlIHR1cGxlJ3MgYWRkcmVzcyAtLSBhbmQKKwkgKiBleHBvc2UgdGhl IG1hcmtlciBpdHNlbGYgaW4gdGhlIHNlcGFyYXRlIGhvdF9pbmRleGVkIGNvbHVtbiBiZWxv dy4KKwkgKiBPbmx5IGEgcGxhaW4gbGVhZiB0dXBsZSdzIHRfdGlkIGlzIGEgZ2VudWluZSBo ZWFwIFRJRCB0aGF0IGNhbiBjYXJyeQorCSAqIHRoZSBmbGFnOyBhIHBpdm90L3Bvc3Rpbmcg dHVwbGUgcmVwdXJwb3NlcyB0X3RpZCBmb3Igb3RoZXIgZGF0YSBhbmQKKwkgKiBtdXN0IGJl IHNob3duIHZlcmJhdGltLgorCSAqLworCWlmICghQlRyZWVUdXBsZUlzUGl2b3QoaXR1cCkg JiYgIUJUcmVlVHVwbGVJc1Bvc3RpbmcoaXR1cCkpCisJeworCQljdGlkX3Nob3cgPSBpdHVw LT50X3RpZDsKKwkJaG90X2luZGV4ZWQgPSBJdGVtUG9pbnRlcklzU0lVTWF5YmVTdGFsZSgm Y3RpZF9zaG93KTsKKwkJLyoKKwkJICogU3RyaXAgdGhlIFNJVSBtYXJrZXIgZGlyZWN0bHkg b24gdGhlIHJhdyBvZmZzZXQuICBEbyBub3Qgcm91dGUKKwkJICogdGhyb3VnaCBJdGVtUG9p bnRlckdldE9mZnNldE51bWJlcigpLCB3aGljaCBhc3NlcnRzIGEgdmFsaWQgKG5vbnplcm8p CisJCSAqIG9mZnNldDogdGhpcyBmdW5jdGlvbiBhbHNvIGluc3BlY3RzIGFyYml0cmFyeSBy YXcgcGFnZSBpbWFnZXMsIHdoZXJlCisJCSAqIGEgY29ycnVwdCBpcF9wb3NpZCA9PSAwIG11 c3QgYmUgc2hvd24sIG5vdCB0cmlwIGFuIGFzc2VydGlvbi4KKwkJICovCisJCWN0aWRfc2hv dy5pcF9wb3NpZCA9IEl0ZW1Qb2ludGVyT2Zmc2V0TnVtYmVyU3RyaXAoY3RpZF9zaG93Lmlw X3Bvc2lkKTsKKwkJdmFsdWVzW2orK10gPSBJdGVtUG9pbnRlckdldERhdHVtKCZjdGlkX3No b3cpOworCX0KKwllbHNlCisJeworCQlob3RfaW5kZXhlZCA9IGZhbHNlOworCQl2YWx1ZXNb aisrXSA9IEl0ZW1Qb2ludGVyR2V0RGF0dW0oJml0dXAtPnRfdGlkKTsKKwl9CiAJdmFsdWVz W2orK10gPSBJbnQxNkdldERhdHVtKEluZGV4VHVwbGVTaXplKGl0dXApKTsKIAl2YWx1ZXNb aisrXSA9IEJvb2xHZXREYXR1bShJbmRleFR1cGxlSGFzTnVsbHMoaXR1cCkpOwogCXZhbHVl c1tqKytdID0gQm9vbEdldERhdHVtKEluZGV4VHVwbGVIYXNWYXJ3aWR0aHMoaXR1cCkpOwpA QCAtNTg0LDcgKzYxNSwxMyBAQCBidF9wYWdlX3ByaW50X3R1cGxlcyh1YV9wYWdlX2l0ZW1z ICp1YXJncykKIAl9CiAKIAlpZiAoaHRpZCkKLQkJdmFsdWVzW2orK10gPSBJdGVtUG9pbnRl ckdldERhdHVtKGh0aWQpOworCXsKKwkJLyogUmVwb3J0IHRoZSByZWFsIG9mZnNldDsgdGhl IFNJVSBtYXJrZXIgaXMgc2hvd24gdmlhIGhvdF9pbmRleGVkLiAqLworCQlodGlkX3Nob3cg PSAqaHRpZDsKKwkJLyogU3RyaXAgb24gdGhlIHJhdyBvZmZzZXQ7IHNlZSB0aGUgY3RpZCBw YXRoIGZvciB3aHkgbm90IHRoZSBnZXR0ZXIuICovCisJCWh0aWRfc2hvdy5pcF9wb3NpZCA9 IEl0ZW1Qb2ludGVyT2Zmc2V0TnVtYmVyU3RyaXAoaHRpZF9zaG93LmlwX3Bvc2lkKTsKKwkJ dmFsdWVzW2orK10gPSBJdGVtUG9pbnRlckdldERhdHVtKCZodGlkX3Nob3cpOworCX0KIAll bHNlCiAJCW51bGxzW2orK10gPSB0cnVlOwogCkBAIC02MDYsNiArNjQzLDE0IEBAIGJ0X3Bh Z2VfcHJpbnRfdHVwbGVzKHVhX3BhZ2VfaXRlbXMgKnVhcmdzKQogCWVsc2UKIAkJbnVsbHNb aisrXSA9IHRydWU7CiAKKwkvKgorCSAqIGhvdF9pbmRleGVkOiB0cnVlIGlmZiB0aGlzIGxl YWYgZW50cnkgaXMgYSBIT1QtaW5kZXhlZCAoU0lVKSBmcmVzaAorCSAqIGVudHJ5LiAgT25s eSBwcmVzZW50IGZyb20gcGFnZWluc3BlY3QgMS4xNCBvbjsgb2xkZXIgZXh0ZW5zaW9uIHZl cnNpb25zCisJICogZGVjbGFyZSBvbmUgZmV3ZXIgb3V0cHV0IGNvbHVtbiwgc28gZ2F0ZSBv biB0aGUgYWN0dWFsIHR1cGxlIGRlc2NyaXB0b3IuCisJICovCisJaWYgKHVhcmdzLT50dXBk LT5uYXR0cyA+IGopCisJCXZhbHVlc1tqKytdID0gQm9vbEdldERhdHVtKGhvdF9pbmRleGVk KTsKKwogCS8qIEJ1aWxkIGFuZCByZXR1cm4gdGhlIHJlc3VsdCB0dXBsZSAqLwogCXR1cGxl ID0gaGVhcF9mb3JtX3R1cGxlKHVhcmdzLT50dXBkLCB2YWx1ZXMsIG51bGxzKTsKIApkaWZm IC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9leHBlY3RlZC9idHJlZS5vdXQgYi9jb250 cmliL3BhZ2VpbnNwZWN0L2V4cGVjdGVkL2J0cmVlLm91dAppbmRleCAwYWE1ZDczMzIyZi4u MTczNzM0YzIxNTMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQv YnRyZWUub3V0CisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvYnRyZWUub3V0 CkBAIC0xNTIsMTYgKzE1MiwxNyBAQCBFUlJPUjogIGludmFsaWQgYmxvY2sgbnVtYmVyIC0x CiBTRUxFQ1QgKiBGUk9NIGJ0X3BhZ2VfaXRlbXMoJ3Rlc3QxX2FfaWR4JywgMCk7CiBFUlJP UjogIGJsb2NrIDAgaXMgYSBtZXRhIHBhZ2UKIFNFTEVDVCAqIEZST00gYnRfcGFnZV9pdGVt cygndGVzdDFfYV9pZHgnLCAxKTsKLS1bIFJFQ09SRCAxIF0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQotaXRlbW9mZnNldCB8IDEKLWN0aWQgICAgICAgfCAoMCwxKQotaXRlbWxlbiAgICB8 IDE2Ci1udWxscyAgICAgIHwgZgotdmFycyAgICAgICB8IGYKLWRhdGEgICAgICAgfCAwMSAw MCAwMCAwMCAwMCAwMCAwMCAwMQotZGVhZCAgICAgICB8IGYKLWh0aWQgICAgICAgfCAoMCwx KQotdGlkcyAgICAgICB8IAorLVsgUkVDT1JEIDEgXS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQoraXRlbW9mZnNldCAgfCAxCitjdGlkICAgICAgICB8ICgwLDEpCitpdGVtbGVuICAgICB8 IDE2CitudWxscyAgICAgICB8IGYKK3ZhcnMgICAgICAgIHwgZgorZGF0YSAgICAgICAgfCAw MSAwMCAwMCAwMCAwMCAwMCAwMCAwMQorZGVhZCAgICAgICAgfCBmCitodGlkICAgICAgICB8 ICgwLDEpCit0aWRzICAgICAgICB8IAoraG90X2luZGV4ZWQgfCBmCiAKIFNFTEVDVCAqIEZS T00gYnRfcGFnZV9pdGVtcygndGVzdDFfYV9pZHgnLCAyKTsKIEVSUk9SOiAgYmxvY2sgbnVt YmVyIDIgaXMgb3V0IG9mIHJhbmdlCkBAIC0xNzAsMTYgKzE3MSwxNyBAQCBFUlJPUjogIGlu dmFsaWQgYmxvY2sgbnVtYmVyCiBTRUxFQ1QgKiBGUk9NIGJ0X3BhZ2VfaXRlbXMoZ2V0X3Jh d19wYWdlKCd0ZXN0MV9hX2lkeCcsIDApKTsKIEVSUk9SOiAgYmxvY2sgaXMgYSBtZXRhIHBh Z2UKIFNFTEVDVCAqIEZST00gYnRfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3Rlc3QxX2Ff aWR4JywgMSkpOwotLVsgUkVDT1JEIDEgXS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1pdGVt b2Zmc2V0IHwgMQotY3RpZCAgICAgICB8ICgwLDEpCi1pdGVtbGVuICAgIHwgMTYKLW51bGxz ICAgICAgfCBmCi12YXJzICAgICAgIHwgZgotZGF0YSAgICAgICB8IDAxIDAwIDAwIDAwIDAw IDAwIDAwIDAxCi1kZWFkICAgICAgIHwgZgotaHRpZCAgICAgICB8ICgwLDEpCi10aWRzICAg ICAgIHwgCistWyBSRUNPUkQgMSBdLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitpdGVtb2Zm c2V0ICB8IDEKK2N0aWQgICAgICAgIHwgKDAsMSkKK2l0ZW1sZW4gICAgIHwgMTYKK251bGxz ICAgICAgIHwgZgordmFycyAgICAgICAgfCBmCitkYXRhICAgICAgICB8IDAxIDAwIDAwIDAw IDAwIDAwIDAwIDAxCitkZWFkICAgICAgICB8IGYKK2h0aWQgICAgICAgIHwgKDAsMSkKK3Rp ZHMgICAgICAgIHwgCitob3RfaW5kZXhlZCB8IGYKIAogU0VMRUNUICogRlJPTSBidF9wYWdl X2l0ZW1zKGdldF9yYXdfcGFnZSgndGVzdDFfYV9pZHgnLCAyKSk7CiBFUlJPUjogIGJsb2Nr IG51bWJlciAyIGlzIG91dCBvZiByYW5nZSBmb3IgcmVsYXRpb24gInRlc3QxX2FfaWR4Igpk aWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9tZXNvbi5idWlsZCBiL2NvbnRyaWIv cGFnZWluc3BlY3QvbWVzb24uYnVpbGQKaW5kZXggYzQzZWE0MDBhNGQuLjJmMzMzNjM1ODM4 IDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0L21lc29uLmJ1aWxkCisrKyBiL2Nv bnRyaWIvcGFnZWluc3BlY3QvbWVzb24uYnVpbGQKQEAgLTM4LDYgKzM4LDcgQEAgaW5zdGFs bF9kYXRhKAogICAncGFnZWluc3BlY3QtLTEuMTAtLTEuMTEuc3FsJywKICAgJ3BhZ2VpbnNw ZWN0LS0xLjExLS0xLjEyLnNxbCcsCiAgICdwYWdlaW5zcGVjdC0tMS4xMi0tMS4xMy5zcWwn LAorICAncGFnZWluc3BlY3QtLTEuMTMtLTEuMTQuc3FsJywKICAgJ3BhZ2VpbnNwZWN0LmNv bnRyb2wnLAogICBrd2FyZ3M6IGNvbnRyaWJfZGF0YV9hcmdzLAogKQpkaWZmIC0tZ2l0IGEv Y29udHJpYi9wYWdlaW5zcGVjdC9wYWdlaW5zcGVjdC0tMS4xMy0tMS4xNC5zcWwgYi9jb250 cmliL3BhZ2VpbnNwZWN0L3BhZ2VpbnNwZWN0LS0xLjEzLS0xLjE0LnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmM1YzgyNGQ1ZTIKLS0tIC9kZXYvbnVs bAorKysgYi9jb250cmliL3BhZ2VpbnNwZWN0L3BhZ2VpbnNwZWN0LS0xLjEzLS0xLjE0LnNx bApAQCAtMCwwICsxLDQ5IEBACisvKiBjb250cmliL3BhZ2VpbnNwZWN0L3BhZ2VpbnNwZWN0 LS0xLjEzLS0xLjE0LnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNl ZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNl ICJBTFRFUiBFWFRFTlNJT04gcGFnZWluc3BlY3QgVVBEQVRFIFRPICcxLjE0JyIgdG8gbG9h ZCB0aGlzIGZpbGUuIFxxdWl0CisKKy0tCistLSBidF9wYWdlX2l0ZW1zKHJlbG5hbWUsIGJs a25vKSAtLSBhZGQgaG90X2luZGV4ZWQgY29sdW1uCistLQorLS0gQSBIT1QtaW5kZXhlZCAo U0lVKSBmcmVzaCBpbmRleCBlbnRyeSBzdG9yZXMgaXRzIGhlYXAgVElEIHdpdGggYW4gaW50 ZXJuYWwKKy0tIG1hcmtlciBiaXQgKEl0ZW1Qb2ludGVyU0lVTWF5YmVTdGFsZUZsYWcpIHNl dCBpbiB0aGUgb2Zmc2V0IGZpZWxkLCB3aGljaAorLS0gdGVsbHMgYSBiaXRtYXAgc2NhbiB0 aGUgZW50cnkgcG9pbnRzIG1pZC1jaGFpbiBhbmQgbXVzdCBiZSByZXNvbHZlZAorLS0gbG9z c2lseS4gIEVhcmxpZXIgcGFnZWluc3BlY3QgdmVyc2lvbnMgc3VyZmFjZWQgdGhhdCBtYXJr ZXIgYXMgYW4gaW5mbGF0ZWQKKy0tIGN0aWQgb2Zmc2V0OyBmcm9tIDEuMTQgdGhlIGN0aWQv aHRpZCBjb2x1bW5zIHJlcG9ydCB0aGUgcmVhbCBvZmZzZXQgYW5kIHRoZQorLS0gbmV3IGhv dF9pbmRleGVkIGNvbHVtbiBleHBvc2VzIHRoZSBtYXJrZXIgZXhwbGljaXRseS4KKy0tCitE Uk9QIEZVTkNUSU9OIGJ0X3BhZ2VfaXRlbXModGV4dCwgaW50OCk7CitDUkVBVEUgRlVOQ1RJ T04gYnRfcGFnZV9pdGVtcyhJTiByZWxuYW1lIHRleHQsIElOIGJsa25vIGludDgsCisgICAg T1VUIGl0ZW1vZmZzZXQgc21hbGxpbnQsCisgICAgT1VUIGN0aWQgdGlkLAorICAgIE9VVCBp dGVtbGVuIHNtYWxsaW50LAorICAgIE9VVCBudWxscyBib29sLAorICAgIE9VVCB2YXJzIGJv b2wsCisgICAgT1VUIGRhdGEgdGV4dCwKKyAgICBPVVQgZGVhZCBib29sZWFuLAorICAgIE9V VCBodGlkIHRpZCwKKyAgICBPVVQgdGlkcyB0aWRbXSwKKyAgICBPVVQgaG90X2luZGV4ZWQg Ym9vbCkKK1JFVFVSTlMgU0VUT0YgcmVjb3JkCitBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ2J0 X3BhZ2VfaXRlbXNfMV85JworTEFOR1VBR0UgQyBTVFJJQ1QgUEFSQUxMRUwgU0FGRTsKKwor LS0KKy0tIGJ0X3BhZ2VfaXRlbXMocGFnZSkgLS0gYWRkIGhvdF9pbmRleGVkIGNvbHVtbgor LS0KK0RST1AgRlVOQ1RJT04gYnRfcGFnZV9pdGVtcyhieXRlYSk7CitDUkVBVEUgRlVOQ1RJ T04gYnRfcGFnZV9pdGVtcyhJTiBwYWdlIGJ5dGVhLAorICAgIE9VVCBpdGVtb2Zmc2V0IHNt YWxsaW50LAorICAgIE9VVCBjdGlkIHRpZCwKKyAgICBPVVQgaXRlbWxlbiBzbWFsbGludCwK KyAgICBPVVQgbnVsbHMgYm9vbCwKKyAgICBPVVQgdmFycyBib29sLAorICAgIE9VVCBkYXRh IHRleHQsCisgICAgT1VUIGRlYWQgYm9vbGVhbiwKKyAgICBPVVQgaHRpZCB0aWQsCisgICAg T1VUIHRpZHMgdGlkW10sCisgICAgT1VUIGhvdF9pbmRleGVkIGJvb2wpCitSRVRVUk5TIFNF VE9GIHJlY29yZAorQVMgJ01PRFVMRV9QQVRITkFNRScsICdidF9wYWdlX2l0ZW1zX2J5dGVh JworTEFOR1VBR0UgQyBTVFJJQ1QgUEFSQUxMRUwgU0FGRTsKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcGFnZWluc3BlY3QvcGFnZWluc3BlY3QuY29udHJvbCBiL2NvbnRyaWIvcGFnZWluc3Bl Y3QvcGFnZWluc3BlY3QuY29udHJvbAppbmRleCBjZmM4N2ZlYWMwMy4uYWVlM2Y1OThhOWUg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvcGFnZWluc3BlY3QuY29udHJvbAor KysgYi9jb250cmliL3BhZ2VpbnNwZWN0L3BhZ2VpbnNwZWN0LmNvbnRyb2wKQEAgLTEsNSAr MSw1IEBACiAjIHBhZ2VpbnNwZWN0IGV4dGVuc2lvbgogY29tbWVudCA9ICdpbnNwZWN0IHRo ZSBjb250ZW50cyBvZiBkYXRhYmFzZSBwYWdlcyBhdCBhIGxvdyBsZXZlbCcKLWRlZmF1bHRf dmVyc2lvbiA9ICcxLjEzJworZGVmYXVsdF92ZXJzaW9uID0gJzEuMTQnCiBtb2R1bGVfcGF0 aG5hbWUgPSAnJGxpYmRpci9wYWdlaW5zcGVjdCcKIHJlbG9jYXRhYmxlID0gdHJ1ZQpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3BhZ2VpbnNwZWN0LnNnbWwgYi9kb2Mvc3JjL3NnbWwv cGFnZWluc3BlY3Quc2dtbAppbmRleCAzYTExMzQzOWUxZC4uM2U5NTc2NDE5YzMgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9wYWdlaW5zcGVjdC5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9wYWdlaW5zcGVjdC5zZ21sCkBAIC00NTgsNiArNDU4LDE4IEBAIHRlc3Q9IyBTRUxFQ1Qg aXRlbW9mZnNldCwgY3RpZCwgaXRlbWxlbiwgbnVsbHMsIHZhcnMsIGRhdGEsIGRlYWQsIGh0 aWQsIHRpZHNbMDoyCiAgICAgICBhd2F5LCB3aGljaCBpcyByZXByZXNlbnRlZCBhcyBhIE5V TEwKICAgICAgIDxzdHJ1Y3RmaWVsZD5odGlkPC9zdHJ1Y3RmaWVsZD4gdmFsdWUuCiAgICAg IDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICA8c3RydWN0ZmllbGQ+aG90X2luZGV4ZWQ8 L3N0cnVjdGZpZWxkPiBpcyB0cnVlIHdoZW4gdGhlIGxlYWYgdHVwbGUgaXMgYQorICAgICAg ZnJlc2ggaW5kZXggZW50cnkgcGxhbnRlZCBieSBhIEhPVC1pbmRleGVkIChzZWxlY3RpdmUg aW5kZXggdXBkYXRlKQorICAgICAgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPiwgd2hpY2gg cG9pbnRzIGF0IGEgbWlkLWNoYWluIGhlYXAtb25seSB0dXBsZQorICAgICAgcmF0aGVyIHRo YW4gYXQgdGhlIGNoYWluIHJvb3QuICBTdWNoIGFuIGVudHJ5J3Mgc3RvcmVkIGhlYXAgVElE IGNhcnJpZXMKKyAgICAgIGFuIGludGVybmFsIG1hcmtlciBiaXQgaW4gaXRzIG9mZnNldCB0 aGF0IGEgYml0bWFwIHNjYW4gdXNlcyB0byBmYWxsCisgICAgICBiYWNrIHRvIHBhZ2UtbGV2 ZWwgKGxvc3N5KSBtYXRjaGluZzsgPHN0cnVjdGZpZWxkPmN0aWQ8L3N0cnVjdGZpZWxkPiBh bmQKKyAgICAgIDxzdHJ1Y3RmaWVsZD5odGlkPC9zdHJ1Y3RmaWVsZD4gcmVwb3J0IHRoZSBy ZWFsIGhlYXAgb2Zmc2V0IHdpdGggdGhhdAorICAgICAgbWFya2VyIHJlbW92ZWQsIGFuZCA8 c3RydWN0ZmllbGQ+aG90X2luZGV4ZWQ8L3N0cnVjdGZpZWxkPiBleHBvc2VzIHRoZQorICAg ICAgbWFya2VyIGl0c2VsZi4gIEl0IGlzIGZhbHNlIGZvciBvcmRpbmFyeSBlbnRyaWVzIGFu ZCBmb3IgdGhlIHBpdm90IGFuZAorICAgICAgcG9zdGluZy1saXN0IHR1cGxlcyB3aG9zZSA8 c3RydWN0ZmllbGQ+Y3RpZDwvc3RydWN0ZmllbGQ+IGlzIHJlcHVycG9zZWQuCisgICAgIDwv cGFyYT4KICAgICAgPHBhcmE+CiAgICAgICBOb3RlIHRoYXQgdGhlIGZpcnN0IGl0ZW0gb24g YW55IG5vbi1yaWdodG1vc3QgcGFnZSAoYW55IHBhZ2Ugd2l0aAogICAgICAgYSBub24temVy byB2YWx1ZSBpbiB0aGUgPHN0cnVjdGZpZWxkPmJ0cG9fbmV4dDwvc3RydWN0ZmllbGQ+IGZp ZWxkKSBpcyB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRl eGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKaW5kZXggZWJj NDQyMmFjY2MuLjQ2N2I0OTAzYWQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhp bmcuYwpAQCAtNDYxLDE1ICs0NjEsNDkgQEAgRXhlY0luc2VydEluZGV4VHVwbGVzKFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCWluZGV4VW5jaGFuZ2VkID0gKGZsYWdzICYg RUlJVF9JU19VUERBVEUpID8KIAkJCWluZGV4SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgOiBm YWxzZTsKIAotCQlzYXRpc2ZpZXNDb25zdHJhaW50ID0KLQkJCWluZGV4X2luc2VydChpbmRl eFJlbGF0aW9uLCAvKiBpbmRleCByZWxhdGlvbiAqLwotCQkJCQkJIHZhbHVlcywJLyogYXJy YXkgb2YgaW5kZXggRGF0dW1zICovCi0JCQkJCQkgaXNudWxsLAkvKiBudWxsIGZsYWdzICov Ci0JCQkJCQkgdHVwbGVpZCwJLyogdGlkIG9mIGhlYXAgdHVwbGUgKi8KLQkJCQkJCSBoZWFw UmVsYXRpb24sCS8qIGhlYXAgcmVsYXRpb24gKi8KLQkJCQkJCSBjaGVja1VuaXF1ZSwJLyog dHlwZSBvZiB1bmlxdWVuZXNzIGNoZWNrIHRvIGRvICovCi0JCQkJCQkgaW5kZXhVbmNoYW5n ZWQsCS8qIFVQREFURSB3aXRob3V0IGxvZ2ljYWwgY2hhbmdlPyAqLwotCQkJCQkJIGluZGV4 SW5mbyk7CS8qIGluZGV4IEFNIG1heSBuZWVkIHRoaXMgKi8KKwkJLyoKKwkJICogQSBmcmVz aCBlbnRyeSBwbGFudGVkIGhlcmUgdW5kZXIgYSBIT1QtaW5kZXhlZCB1cGRhdGUgcG9pbnRz IGF0IHRoZQorCQkgKiBuZXcgaGVhcC1vbmx5IHR1cGxlIGl0c2VsZiAodHVwbGVpZCksIG5v dCBhdCB0aGUgY2hhaW4ncyByb290IHRoZQorCQkgKiB3YXkgZXZlcnkgb3RoZXIgaW5kZXgg ZW50cnkgZG9lcyAtLSB0aGF0IHBvc2l0aW9uYWwgZGlzdGluY3Rpb24gaXMKKwkJICogd2hh dCBsZXRzIHRoZSByZWFkIHNpZGUganVkZ2Ugc3RhbGVuZXNzIGZyb20gdGhlIGNyb3NzZWQt YXR0cmlidXRlCisJCSAqIGJpdG1hcCB3aXRob3V0IGEgdmFsdWUgcmVjaGVjayAoc2VlIGhv dF9pbmRleGVkLmgpLiAgQSBiaXRtYXAgc2NhbgorCQkgKiBjb21iaW5lcyB0d28gaW5kZXhl cycgVElEIHNldHMgYXQgcmF3IGJsb2NrK29mZnNldCBncmFudWxhcml0eQorCQkgKiBiZWZv cmUgZWl0aGVyIHNpZGUgdG91Y2hlcyB0aGUgaGVhcCwgc28gYW4gdW5yZWxhdGVkLCB1bmNo YW5nZWQKKwkJICogaW5kZXgncyByb290LXBvaW50aW5nIGVudHJ5IGZvciB0aGlzIHNhbWUg cm93IHdpbGwgbm90IGFncmVlIHdpdGgKKwkJICogdGhpcyBlbnRyeSdzIG9mZnNldCwgYW5k IEJpdG1hcEFuZC9CaXRtYXBPciBjYW4gc2lsZW50bHkgZHJvcCBhCisJCSAqIG1hdGNoaW5n IHJvdy4gIEZsYWcgdGhlIGNvcHkgb2YgdHVwbGVpZCBoYW5kZWQgdG8gdGhpcyBpbmRleCdz CisJCSAqIGluc2VydCAobmV2ZXIgdGhlIHNsb3QncyBvd24gdHRzX3RpZCwgd2hpY2ggb3Ro ZXIgaW5kZXhlcyBpbiB0aGlzCisJCSAqIHNhbWUgbG9vcCAtLSBhbmQgdGhlIGNhbGxlciAt LSBzdGlsbCBuZWVkIHVuZmxhZ2dlZCkgc28gZXZlcnkKKwkJICogYW1nZXRiaXRtYXAgaW1w bGVtZW50YXRpb24gY2FuIHJlY29nbml6ZSB0aGUgaGF6YXJkIGZyb20gdGhlIFRJRAorCQkg KiBhbG9uZSBhbmQgZmFsbCBiYWNrIHRvIGEgcGFnZS1sZXZlbCBiaXRtYXAgY29udHJpYnV0 aW9uIGluc3RlYWQgb2YKKwkJICogYW4gZXhhY3Qgb25lOyBzZWUgSXRlbVBvaW50ZXJTSVVN YXliZVN0YWxlRmxhZyBpbiBpdGVtcHRyLmguCisJCSAqLworCQlpZiAoKGZsYWdzICYgRUlJ VF9JU19IT1RfSU5ERVhFRCkgJiYgIWluZGV4SW5mby0+aWlfU3VtbWFyaXppbmcpCisJCXsK KwkJCUl0ZW1Qb2ludGVyRGF0YSBzaXVfdGlkID0gKnR1cGxlaWQ7CisKKwkJCUl0ZW1Qb2lu dGVyU2V0U0lVTWF5YmVTdGFsZSgmc2l1X3RpZCk7CisKKwkJCXNhdGlzZmllc0NvbnN0cmFp bnQgPQorCQkJCWluZGV4X2luc2VydChpbmRleFJlbGF0aW9uLCAvKiBpbmRleCByZWxhdGlv biAqLworCQkJCQkJCSB2YWx1ZXMsCS8qIGFycmF5IG9mIGluZGV4IERhdHVtcyAqLworCQkJ CQkJCSBpc251bGwsCS8qIG51bGwgZmxhZ3MgKi8KKwkJCQkJCQkgJnNpdV90aWQsCS8qIHRp ZCBvZiBoZWFwIHR1cGxlLCBTSVUtZmxhZ2dlZCAqLworCQkJCQkJCSBoZWFwUmVsYXRpb24s CS8qIGhlYXAgcmVsYXRpb24gKi8KKwkJCQkJCQkgY2hlY2tVbmlxdWUsCS8qIHR5cGUgb2Yg dW5pcXVlbmVzcyBjaGVjayB0byBkbyAqLworCQkJCQkJCSBpbmRleFVuY2hhbmdlZCwJLyog VVBEQVRFIHdpdGhvdXQgbG9naWNhbCBjaGFuZ2U/ICovCisJCQkJCQkJIGluZGV4SW5mbyk7 CS8qIGluZGV4IEFNIG1heSBuZWVkIHRoaXMgKi8KKwkJfQorCQllbHNlCisJCQlzYXRpc2Zp ZXNDb25zdHJhaW50ID0KKwkJCQlpbmRleF9pbnNlcnQoaW5kZXhSZWxhdGlvbiwgLyogaW5k ZXggcmVsYXRpb24gKi8KKwkJCQkJCQkgdmFsdWVzLAkvKiBhcnJheSBvZiBpbmRleCBEYXR1 bXMgKi8KKwkJCQkJCQkgaXNudWxsLAkvKiBudWxsIGZsYWdzICovCisJCQkJCQkJIHR1cGxl aWQsCS8qIHRpZCBvZiBoZWFwIHR1cGxlICovCisJCQkJCQkJIGhlYXBSZWxhdGlvbiwJLyog aGVhcCByZWxhdGlvbiAqLworCQkJCQkJCSBjaGVja1VuaXF1ZSwJLyogdHlwZSBvZiB1bmlx dWVuZXNzIGNoZWNrIHRvIGRvICovCisJCQkJCQkJIGluZGV4VW5jaGFuZ2VkLAkvKiBVUERB VEUgd2l0aG91dCBsb2dpY2FsIGNoYW5nZT8gKi8KKwkJCQkJCQkgaW5kZXhJbmZvKTsJLyog aW5kZXggQU0gbWF5IG5lZWQgdGhpcyAqLwogCiAJCS8qCiAJCSAqIElmIHRoZSBpbmRleCBo YXMgYW4gYXNzb2NpYXRlZCBleGNsdXNpb24gY29uc3RyYWludCwgY2hlY2sgdGhhdC4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3RpZGJpdG1hcC5jIGIvc3JjL2JhY2tlbmQv bm9kZXMvdGlkYml0bWFwLmMKaW5kZXggZjFmOTI1Y2IxM2IuLmYzZmFmNTFlNGI5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy90aWRiaXRtYXAuYworKysgYi9zcmMvYmFja2Vu ZC9ub2Rlcy90aWRiaXRtYXAuYwpAQCAtMzYyLDYgKzM2MiwyNSBAQCB0Ym1fZnJlZV9zaGFy ZWRfYXJlYShkc2FfYXJlYSAqZHNhLCBkc2FfcG9pbnRlciBkcCkKICAqCiAgKiBJZiByZWNo ZWNrIGlzIHRydWUsIHRoZW4gdGhlIHJlY2hlY2sgZmxhZyB3aWxsIGJlIHNldCBpbiB0aGUK ICAqIFRCTUl0ZXJhdGVSZXN1bHQgd2hlbiBhbnkgb2YgdGhlc2UgdHVwbGVzIGFyZSByZXBv cnRlZCBvdXQuCisgKgorICogQSBUSUQgbWF5IGNhcnJ5IHRoZSBTSVUgIm1heS1iZS1zdGFs ZSIgbWFya2VyIChJdGVtUG9pbnRlclNJVU1heWJlU3RhbGVGbGFnLAorICogc2VlIHN0b3Jh Z2UvaXRlbXB0ci5oKTogYSBIT1QtaW5kZXhlZCAoc2VsZWN0aXZlIGluZGV4IHVwZGF0ZSkg ZnJlc2ggZW50cnkKKyAqIHBvaW50cyBhdCBhIG1pZC1jaGFpbiBoZWFwLW9ubHkgdHVwbGUg cmF0aGVyIHRoYW4gYXQgdGhlIGNoYWluIHJvb3QgdGhlIHdheQorICogZXZlcnkgb3RoZXIg aW5kZXggZW50cnkgZm9yIHRoYXQgcm93IGRvZXMuICBCZWNhdXNlIEJpdG1hcEFuZC9CaXRt YXBPcgorICogaW50ZXJzZWN0L3VuaW9uIFRJRCBzZXRzIGhlcmUgYXQgYmxvY2srb2Zmc2V0 IGdyYW51bGFyaXR5IGJlZm9yZSB0aGUgaGVhcAorICogaXMgZXZlciBjb25zdWx0ZWQsIGFu IHVucmVsYXRlZCB1bmNoYW5nZWQgaW5kZXgncyByb290LXBvaW50aW5nIGVudHJ5IGZvcgor ICogdGhlIHNhbWUgcm93IHdvdWxkIG5vdCBhZ3JlZSB3aXRoIHN1Y2ggYW4gZW50cnkncyBv ZmZzZXQsIGFuZCBhbiBleGFjdC1tb2RlCisgKiBpbnRlcnNlY3Rpb24gY291bGQgc2lsZW50 bHkgZHJvcCBhIG1hdGNoaW5nIHJvdy4gIFdoZW5ldmVyIHdlIHNlZSB0aGUgZmxhZworICog d2UgdGhlcmVmb3JlIGFkZCB0aGUgd2hvbGUgcGFnZSBhcyBsb3NzeSBpbnN0ZWFkIG9mIHRo ZSBleGFjdCBvZmZzZXQ6IGEKKyAqIGxvc3N5IHBhZ2Ugc3Vydml2ZXMgYW55IEFORC9PUiBh Z2FpbnN0IGFuIGV4YWN0LW1vZGUgcGFnZSAoc2VlCisgKiB0Ym1faW50ZXJzZWN0X3BhZ2Up IGFuZCBmb3JjZXMgYSByZWNoZWNrLCBzbyBCaXRtYXBIZWFwU2NhbiByZXNvbHZlcyB0aGUK KyAqIGNoYWluIGFuZCB0aGUgdGFibGUgQU0ncyBoZWFwLXNpZGUgc3RhbGVuZXNzIHRlc3Qg bWFrZXMgdGhlIGZpbmFsIGNhbGwuCisgKgorICogSGFuZGxpbmcgdGhpcyBoZXJlIC0tIGF0 IHRoZSBzaW5nbGUgY2hva2UgcG9pbnQgZXZlcnkgYW1nZXRiaXRtYXAgZnVubmVscworICog ZXhhY3QgaGVhcCBUSURzIHRocm91Z2ggLS0gbWVhbnMgbm8gaW5kZXggYWNjZXNzIG1ldGhv ZCBuZWVkcyB0byBrbm93IGFib3V0CisgKiBIT1QtaW5kZXhlZCBjaGFpbnM6IGNvcmUgQU1z LCBjb250cmliIEFNcyAoYmxvb20pLCBhbmQgb3V0LW9mLXRyZWUgQU1zIGFyZQorICogYWxs IGNvcnJlY3QgYXV0b21hdGljYWxseSwgYW5kIGEgVElEIHRoYXQgbmV2ZXIgY2FycmllcyB0 aGUgZmxhZyB0YWtlcyB0aGUKKyAqIGlkZW50aWNhbCBwYXRoIGl0IGFsd2F5cyBkaWQuCiAg Ki8KIHZvaWQKIHRibV9hZGRfdHVwbGVzKFRJREJpdG1hcCAqdGJtLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKnRpZHMsIGludCBudGlkcywKQEAgLTM3NCwxMCArMzkzLDI2IEBAIHRibV9h ZGRfdHVwbGVzKFRJREJpdG1hcCAqdGJtLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZHMs IGludCBudGlkcywKIAlmb3IgKGludCBpID0gMDsgaSA8IG50aWRzOyBpKyspCiAJewogCQlC bG9ja051bWJlciBibGsgPSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKHRpZHMgKyBpKTsK LQkJT2Zmc2V0TnVtYmVyIG9mZiA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKHRpZHMg KyBpKTsKKwkJT2Zmc2V0TnVtYmVyIG9mZjsKIAkJaW50CQkJd29yZG51bSwKIAkJCQkJYml0 bnVtOwogCisJCS8qCisJCSAqIEEgSE9ULWluZGV4ZWQgZnJlc2ggZW50cnkncyBUSUQgbXVz dCBub3QgYmUgdHJ1c3RlZCBhdCBleGFjdAorCQkgKiBvZmZzZXQgZ3JhbnVsYXJpdHkgaGVy ZSAoc2VlIHRoZSBmdW5jdGlvbiBoZWFkZXIpLiAgVGVzdCB0aGUgcmF3CisJCSAqIFRJRCAt LSBiZWZvcmUgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIgc3RyaXBzIHRoZSBtYXJrZXIg LS0gYW5kCisJCSAqIGlmIHNldCwgZGVncmFkZSB0aGUgd2hvbGUgcGFnZSB0byBsb3NzeSBh bmQgbW92ZSBvbi4KKwkJICovCisJCWlmICh1bmxpa2VseShJdGVtUG9pbnRlcklzU0lVTWF5 YmVTdGFsZSh0aWRzICsgaSkpKQorCQl7CisJCQl0Ym1fYWRkX3BhZ2UodGJtLCBibGspOwor CQkJLyogdGJtX2FkZF9wYWdlIG1heSBoYXZlIGxvc3NpZmllZCBwYWdlczsgZm9yY2UgYSBm cmVzaCBsb29rdXAgKi8KKwkJCWN1cnJibGsgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CisJCQlj b250aW51ZTsKKwkJfQorCisJCW9mZiA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKHRp ZHMgKyBpKTsKKwogCQkvKiBzYWZldHkgY2hlY2sgdG8gZW5zdXJlIHdlIGRvbid0IG92ZXJy dW4gYml0IGFycmF5IGJvdW5kcyAqLwogCQlpZiAob2ZmIDwgMSB8fCBvZmYgPiBUQk1fTUFY X1RVUExFU19QRVJfUEFHRSkKIAkJCWVsb2coRVJST1IsICJ0dXBsZSBvZmZzZXQgb3V0IG9m IHJhbmdlOiAldSIsIG9mZik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3Bh Z2UvaXRlbXB0ci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9wYWdlL2l0ZW1wdHIuYwppbmRl eCA1NDY4NzRlYmM1Zi4uM2M1NzUwMmI5MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvcGFnZS9pdGVtcHRyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9wYWdlL2l0 ZW1wdHIuYwpAQCAtNTIsMjAgKzUyLDI4IEBAIEl0ZW1Qb2ludGVyQ29tcGFyZShjb25zdCBJ dGVtUG9pbnRlckRhdGEgKmFyZzEsIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqYXJnMikKIHsK IAkvKgogCSAqIFVzZSBJdGVtUG9pbnRlckdldHtPZmZzZXQsQmxvY2t9TnVtYmVyTm9DaGVj ayB0byBhdm9pZCBhc3NlcnRpbmcKLQkgKiBpcF9wb3NpZCAhPSAwLCB3aGljaCBtYXkgbm90 IGJlIHRydWUgZm9yIGEgdXNlci1zdXBwbGllZCBUSUQuCisJICogaXBfcG9zaWQgIT0gMCwg d2hpY2ggbWF5IG5vdCBiZSB0cnVlIGZvciBhIHVzZXItc3VwcGxpZWQgVElELiAgU3RyaXAK KwkgKiB0aGUgU0lVIG1heS1iZS1zdGFsZSBiaXQgKHNlZSBJdGVtUG9pbnRlclNJVU1heWJl U3RhbGVGbGFnIGluCisJICogaXRlbXB0ci5oKSBzbyB0d28gVElEcyBuYW1pbmcgdGhlIHNh bWUgKGJsb2NrLCBvZmZzZXQpIGFsd2F5cyBjb21wYXJlCisJICogZXF1YWwgcmVnYXJkbGVz cyBvZiB3aGljaCBvbmUsIGlmIGVpdGhlciwgaGFwcGVucyB0byBjYXJyeSBpdCAtLSB0aGUK KwkgKiBiaXQgaXMgYSBoaW50IHRvIGEgaGFuZGZ1bCBvZiBiaXRtYXAtc2NhbiBjYWxsIHNp dGVzLCBub3QgcGFydCBvZiBhCisJICogVElEJ3MgaWRlbnRpdHkgZm9yIG9yZGVyaW5nL2Vx dWFsaXR5IHB1cnBvc2VzLiAgSXRlbVBvaW50ZXJPZmZzZXROdW1iZXJTdHJpcAorCSAqIGxl YXZlcyB0aGUgcmVzZXJ2ZWQgc2VudGluZWwgdmFsdWVzIChTcGVjVG9rZW5PZmZzZXROdW1i ZXIsCisJICogTW92ZWRQYXJ0aXRpb25zT2Zmc2V0TnVtYmVyKSB1bnRvdWNoZWQsIHNpbmNl IHRob3NlIGFscmVhZHkgaGF2ZSB0aGUKKwkgKiBzYW1lIGJpdCBzZXQgYXMgcGFydCBvZiB0 aGVpciBvd24gZW5jb2RpbmcuCiAJICovCiAJQmxvY2tOdW1iZXIgYjEgPSBJdGVtUG9pbnRl ckdldEJsb2NrTnVtYmVyTm9DaGVjayhhcmcxKTsKIAlCbG9ja051bWJlciBiMiA9IEl0ZW1Q b2ludGVyR2V0QmxvY2tOdW1iZXJOb0NoZWNrKGFyZzIpOworCU9mZnNldE51bWJlciBvMSA9 IEl0ZW1Qb2ludGVyT2Zmc2V0TnVtYmVyU3RyaXAoSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1i ZXJOb0NoZWNrKGFyZzEpKTsKKwlPZmZzZXROdW1iZXIgbzIgPSBJdGVtUG9pbnRlck9mZnNl dE51bWJlclN0cmlwKEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyTm9DaGVjayhhcmcyKSk7 CiAKIAlpZiAoYjEgPCBiMikKIAkJcmV0dXJuIC0xOwogCWVsc2UgaWYgKGIxID4gYjIpCiAJ CXJldHVybiAxOwotCWVsc2UgaWYgKEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyTm9DaGVj ayhhcmcxKSA8Ci0JCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXJOb0NoZWNrKGFyZzIp KQorCWVsc2UgaWYgKG8xIDwgbzIpCiAJCXJldHVybiAtMTsKLQllbHNlIGlmIChJdGVtUG9p bnRlckdldE9mZnNldE51bWJlck5vQ2hlY2soYXJnMSkgPgotCQkJIEl0ZW1Qb2ludGVyR2V0 T2Zmc2V0TnVtYmVyTm9DaGVjayhhcmcyKSkKKwllbHNlIGlmIChvMSA+IG8yKQogCQlyZXR1 cm4gMTsKIAllbHNlCiAJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9pdGVtcHRyLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2l0ZW1wdHIuaAppbmRleCA4 YjMzOTJkYmVmZS4uY2Y2OTQ4MTI1ZTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvaXRlbXB0ci5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvaXRlbXB0ci5oCkBAIC02 OSw2ICs2OSw2NSBAQCB0eXBlZGVmIEl0ZW1Qb2ludGVyRGF0YSAqSXRlbVBvaW50ZXI7CiAj ZGVmaW5lIE1vdmVkUGFydGl0aW9uc09mZnNldE51bWJlciAweGZmZmQKICNkZWZpbmUgTW92 ZWRQYXJ0aXRpb25zQmxvY2tOdW1iZXIJSW52YWxpZEJsb2NrTnVtYmVyCiAKKy8qCisgKiBT SVUgKHNlbGVjdGl2ZSBpbmRleCB1cGRhdGUgLyBIT1QtaW5kZXhlZCkgIm1heS1iZS1zdGFs ZSIgbWFya2VyIGJpdC4KKyAqCisgKiBTZXQgT05MWSBvbiBhIFRJRCBzdG9yZWQgaW5zaWRl IGFuIElOREVYIFRVUExFIGJ5IGEgSE9ULWluZGV4ZWQgdXBkYXRlJ3MKKyAqIGZyZXNoIGVu dHJ5IC0tIG5ldmVyIG9uIGEgaGVhcCB0dXBsZSdzIG93biB0X2N0aWQsIGFuZCBuZXZlciBv biBhIHBsYWluCisgKiBJdGVtUG9pbnRlciB2YWx1ZSBwYXNzZWQgYXJvdW5kIHRoZSBleGVj dXRvci90YWJsZSBBTSAodGhvc2Ugc3RpbGwgbWVhbgorICogZXhhY3RseSB3aGF0IHRoZXkg YWx3YXlzIGhhdmUpLiAgU3VjaCBhbiBlbnRyeSBwb2ludHMgYXQgYSBub24tcm9vdCwKKyAq IGhlYXAtb25seSBjaGFpbiBtZW1iZXIgcmF0aGVyIHRoYW4gYXQgdGhlIGNoYWluJ3Mgcm9v dCB0aGUgd2F5IGV2ZXJ5CisgKiBvdGhlciBpbmRleCBlbnRyeSBkb2VzLCBzbyBhIGJpdG1h cCBzY2FuIG11c3Qgbm90IHRydXN0IGEgcmF3IG9mZnNldC0KKyAqIGxldmVsIG1hdGNoIGFn YWluc3QgaXQ6IEJpdG1hcEFuZC9CaXRtYXBPciBpbnRlcnNlY3QgdHdvIGluZGV4ZXMnIFRJ RAorICogc2V0cyBhdCBibG9jaytvZmZzZXQgZ3JhbnVsYXJpdHksIGFuZCB0aGlzIGVudHJ5 J3Mgb2Zmc2V0IHdpbGwgbm90IGFncmVlCisgKiB3aXRoIGFuIHVucmVsYXRlZCwgdW5jaGFu Z2VkIGluZGV4J3MgZW50cnkgZm9yIHRoZSBzYW1lIGxvZ2ljYWwgcm93IChzZWUKKyAqIHRo ZSBIT1QtaW5kZXhlZCBkZXNpZ24gbm90ZXMgZm9yIHRoZSBmdWxsIGZhbHNlLW5lZ2F0aXZl IHNjZW5hcmlvKS4gIEEKKyAqIGNhbGxlciB0aGF0IGZpbmRzIHRoaXMgYml0IHNldCBvbiBh IGhlYXAtaXRlbSBUSUQgbXVzdCBmYWxsIGJhY2sgdG8gYQorICogcGFnZS1sZXZlbCAobG9z c3kpIGJpdG1hcCBjb250cmlidXRpb24gaW5zdGVhZCBvZiBhbiBleGFjdCBvbmUsIGZvcmNp bmcKKyAqIHRoZSBleGlzdGluZyBoZWFwLXNpZGUgY3Jvc3NlZC1hdHRyaWJ1dGUgcmVjaGVj ayB0byBtYWtlIHRoZSBmaW5hbCBjYWxsLgorICoKKyAqIEJpdCAxNCBpcyBmcmVlIGF0IGV2 ZXJ5IHN1cHBvcnRlZCBCTENLU1o6IE1heE9mZnNldE51bWJlciBuZWVkcyBhdCBtb3N0Cisg KiAxNCBiaXRzIChCTENLU1o9MzJLQiwgdGhlIGxhcmdlc3QgY29uZmlndXJhYmxlIGJsb2Nr IHNpemUpIHRvIHJlcHJlc2VudAorICogZXZlcnkgbGVnYWwgb2Zmc2V0LCBsZWF2aW5nIGJp dHMgMTQtMTUgdW51c2VkIGJ5IHRoZSByZWFsIG9mZnNldCB2YWx1ZTsKKyAqIGJpdCAxNSBp cyBsZWZ0IGFsb25lIGJlY2F1c2UgaXQgaXMgc2V0IGluIGJvdGggb2YgdGhlIHNlbnRpbmVs cyBhYm92ZQorICogKFNwZWNUb2tlbk9mZnNldE51bWJlciwgTW92ZWRQYXJ0aXRpb25zT2Zm c2V0TnVtYmVyKSwgYW5kIHN0YXlpbmcgY2xlYXIKKyAqIG9mIHRoYXQgbmVpZ2hib3Job29k IGF2b2lkcyBldmVyIGhhdmluZyB0byByZWFzb24gYWJvdXQgdGhlIGludGVyYWN0aW9uLgor ICogbmJ0cmVlIHNlcGFyYXRlbHkgb3ZlcmxvYWRzIHRoZSB0b3AgNCBiaXRzIG9mIGEgKnBp dm90IG9yIHBvc3RpbmcqIHR1cGxlJ3MKKyAqIG93biB0X3RpZCAoQlRfU1RBVFVTX09GRlNF VF9NQVNLLCBnYXRlZCBieSBJTkRFWF9BTFRfVElEX01BU0sgaW4gdF9pbmZvKQorICogdG8g bWVhbiBzb21ldGhpbmcgZWxzZSBlbnRpcmVseSAtLSB0aGlzIGJpdCBpcyBuZXZlciByZWFk IG9yIHNldCBvbiB0aGF0CisgKiBmaWVsZDsgaXQgb25seSBldmVyIGFwcGxpZXMgdG8gYSBn ZW51aW5lIGhlYXAtcm93IFRJRCAoaW5jbHVkaW5nIGVhY2gKKyAqIGluZGl2aWR1YWwgZW50 cnkgb2YgYSBwb3N0aW5nIGxpc3QncyBoZWFwLVRJRCBhcnJheSwgd2hpY2ggYXJlIG9yZGlu YXJ5CisgKiBUSURzIGRlc3BpdGUgbGl2aW5nIGluc2lkZSBhIHBvc3RpbmcgdHVwbGUpLgor ICoKKyAqIElNUE9SVEFOVDogbmV2ZXIgbWFzayB0aGlzIGJpdCBvZmYgdW5jb25kaXRpb25h bGx5LiAgQm90aCBzZW50aW5lbHMgYWJvdmUKKyAqIChTcGVjVG9rZW5PZmZzZXROdW1iZXIg PSAweGZmZmUsIE1vdmVkUGFydGl0aW9uc09mZnNldE51bWJlciA9IDB4ZmZmZCkKKyAqIGFs cmVhZHkgaGF2ZSBiaXQgMTQgc2V0IGFzIHBhcnQgb2YgdGhlaXIgb3duIHZhbHVlOyBibGlu ZGx5IGNsZWFyaW5nIGl0CisgKiB3b3VsZCBjb3JydXB0IHRoZW0gaW50byBhbiB1bnJlY29n bml6ZWQgb2Zmc2V0ICh0aGlzIHdhcyBjYXVnaHQgYnkgdGhlCisgKiBpc29sYXRpb24gc3Vp dGU6IHBhcnRpdGlvbi1rZXktdXBkYXRlIC8gTUVSR0UgdGVzdHMgc2lsZW50bHkgc3RvcHBl ZAorICogZGV0ZWN0aW5nIGEgY29uY3VycmVudGx5LW1vdmVkIHR1cGxlKS4gIEEgZmxhZ2dl ZCByZWFsIG9mZnNldCBpcyBhbHdheXMKKyAqIHdlbGwgYmVsb3cgdGhlIHNlbnRpbmVsIHJh bmdlIGV2ZW4gYXQgdGhlIGxhcmdlc3QgY29uZmlndXJhYmxlIEJMQ0tTWgorICogKHdvcnN0 IGNhc2UgMHg2MDAwIGF0IEJMQ0tTWj0zMktCLCB2cy4gc2VudGluZWxzIGF0IDB4ZmZmZC8w eGZmZmUpLCBzbworICogSXRlbVBvaW50ZXJPZmZzZXROdW1iZXJTdHJpcCBvbmx5IGNsZWFy cyB0aGUgYml0IHdoZW4gdGhlIHJhdyB2YWx1ZSBpcworICogYmVsb3cgdGhhdCByYW5nZTsg YSBzZW50aW5lbCBwYXNzZXMgdGhyb3VnaCB1bmNoYW5nZWQuCisgKi8KKyNkZWZpbmUgSXRl bVBvaW50ZXJTSVVNYXliZVN0YWxlRmxhZwkoKE9mZnNldE51bWJlcikgKDEgPDwgMTQpKQor CisjZGVmaW5lIEl0ZW1Qb2ludGVyT2Zmc2V0TnVtYmVyTWFzawkoKE9mZnNldE51bWJlcikg fkl0ZW1Qb2ludGVyU0lVTWF5YmVTdGFsZUZsYWcpCisKKy8qCisgKiBJdGVtUG9pbnRlck9m ZnNldE51bWJlclN0cmlwCisgKgkJU3RyaXAgdGhlIFNJVSBtYXktYmUtc3RhbGUgYml0IGZy b20gYSByYXcgaXBfcG9zaWQgdmFsdWUsIFVOTEVTUyB0aGF0CisgKgkJdmFsdWUgaXMgb25l IG9mIHRoZSByZXNlcnZlZCBzZW50aW5lbHMgKFNwZWNUb2tlbk9mZnNldE51bWJlciwKKyAq CQlNb3ZlZFBhcnRpdGlvbnNPZmZzZXROdW1iZXIpLCB3aGljaCBtdXN0IHBhc3MgdGhyb3Vn aCB1bnRvdWNoZWQuCisgKi8KK3N0YXRpYyBpbmxpbmUgT2Zmc2V0TnVtYmVyCitJdGVtUG9p bnRlck9mZnNldE51bWJlclN0cmlwKE9mZnNldE51bWJlciByYXcpCit7CisJaWYgKHJhdyA+ PSBNb3ZlZFBhcnRpdGlvbnNPZmZzZXROdW1iZXIpCS8qIGNvdmVycyBib3RoIHNlbnRpbmVs cyAqLworCQlyZXR1cm4gcmF3OworCXJldHVybiAoT2Zmc2V0TnVtYmVyKSAocmF3ICYgSXRl bVBvaW50ZXJPZmZzZXROdW1iZXJNYXNrKTsKK30KKwogCiAvKiAtLS0tLS0tLS0tLS0tLS0t CiAgKgkJc3VwcG9ydCBmdW5jdGlvbnMKQEAgLTEwOCw3ICsxNjcsMTEgQEAgSXRlbVBvaW50 ZXJHZXRCbG9ja051bWJlcihjb25zdCBJdGVtUG9pbnRlckRhdGEgKnBvaW50ZXIpCiAKIC8q CiAgKiBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlck5vQ2hlY2sKLSAqCQlSZXR1cm5zIHRo ZSBvZmZzZXQgbnVtYmVyIG9mIGEgZGlzayBpdGVtIHBvaW50ZXIuCisgKgkJUmV0dXJucyB0 aGUgb2Zmc2V0IG51bWJlciBvZiBhIGRpc2sgaXRlbSBwb2ludGVyLCBJTkNMVURJTkcgdGhl IFNJVQorICoJCW1heS1iZS1zdGFsZSBiaXQgaWYgc2V0LiAgT25seSBhcHByb3ByaWF0ZSBm b3IgY29kZSB0aGF0IGV4cGxpY2l0bHkKKyAqCQl3YW50cyB0aGUgcmF3IHN0b3JlZCB2YWx1 ZSAoZS5nLiBiaXRtYXAtc2NhbiBjb2RlIGRlY2lkaW5nIHdoZXRoZXIgdG8KKyAqCQl0cnVz dCBhbiBleGFjdCBtYXRjaCk7IGFueXRoaW5nIHRoYXQgd2lsbCB1c2UgdGhlIHJlc3VsdCB0 byBsb2NhdGUgYQorICoJCWxpbmUgcG9pbnRlciBvbiBhIHBhZ2UgbXVzdCB1c2UgSXRlbVBv aW50ZXJHZXRPZmZzZXROdW1iZXIgaW5zdGVhZC4KICAqLwogc3RhdGljIGlubGluZSBPZmZz ZXROdW1iZXIKIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyTm9DaGVjayhjb25zdCBJdGVt UG9pbnRlckRhdGEgKnBvaW50ZXIpCkBAIC0xMTgsMTMgKzE4MSw1MyBAQCBJdGVtUG9pbnRl ckdldE9mZnNldE51bWJlck5vQ2hlY2soY29uc3QgSXRlbVBvaW50ZXJEYXRhICpwb2ludGVy KQogCiAvKgogICogSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIKLSAqCQlBcyBhYm92ZSwg YnV0IHZlcmlmaWVzIHRoYXQgdGhlIGl0ZW0gcG9pbnRlciBsb29rcyB2YWxpZC4KKyAqCQlB cyBhYm92ZSwgYnV0IHZlcmlmaWVzIHRoYXQgdGhlIGl0ZW0gcG9pbnRlciBsb29rcyB2YWxp ZCwgQU5EIHN0cmlwcworICoJCXRoZSBTSVUgbWF5LWJlLXN0YWxlIGJpdCAoc2VlIEl0ZW1Q b2ludGVyU0lVTWF5YmVTdGFsZUZsYWcpIHNvIGV2ZXJ5CisgKgkJb3JkaW5hcnkgY29uc3Vt ZXIgLS0gYW55dGhpbmcgdGhhdCB0dXJucyB0aGlzIGludG8gYSBwYWdlIGxvb2t1cCwgYQor ICoJCWNvbXBhcmlzb24gYWdhaW5zdCBhbm90aGVyIFRJRCwgb3IgYSB2YWx1ZSBoYW5kZWQg YmFjayB0byBhIGNhbGxlcgorICoJCXRoYXQgcHJlZGF0ZXMgdGhpcyBiaXQncyBleGlzdGVu Y2UgLS0ga2VlcHMgc2VlaW5nIGV4YWN0bHkgdGhlIHJlYWwKKyAqCQlvZmZzZXQgaXQgYWx3 YXlzIGhhcy4gIE9ubHkgdGhlIGhhbmRmdWwgb2YgY2FsbCBzaXRlcyB0aGF0IG5lZWQgdG8K KyAqCQlub3RpY2UgdGhlIGZsYWcgKGN1cnJlbnRseTogZWFjaCBhbWdldGJpdG1hcCBpbXBs ZW1lbnRhdGlvbikgdXNlCisgKgkJSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXJOb0NoZWNr IC8gSXRlbVBvaW50ZXJJc1NJVU1heWJlU3RhbGUgaW5zdGVhZC4KICAqLwogc3RhdGljIGlu bGluZSBPZmZzZXROdW1iZXIKIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKGNvbnN0IEl0 ZW1Qb2ludGVyRGF0YSAqcG9pbnRlcikKIHsKIAlBc3NlcnQoSXRlbVBvaW50ZXJJc1ZhbGlk KHBvaW50ZXIpKTsKLQlyZXR1cm4gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXJOb0NoZWNr KHBvaW50ZXIpOworCXJldHVybiBJdGVtUG9pbnRlck9mZnNldE51bWJlclN0cmlwKEl0ZW1Q b2ludGVyR2V0T2Zmc2V0TnVtYmVyTm9DaGVjayhwb2ludGVyKSk7Cit9CisKKy8qCisgKiBJ dGVtUG9pbnRlcklzU0lVTWF5YmVTdGFsZQorICoJCVRydWUgaWZmIHRoaXMgaGVhcC1yb3cg VElEIChhcyBzdG9yZWQgaW4gYW4gaW5kZXggdHVwbGUpIHdhcworICoJCWZsYWdnZWQgYnkg YSBIT1QtaW5kZXhlZCBmcmVzaC1lbnRyeSBpbnNlcnQgYXMgcG9pbnRpbmcgYXQgYQorICoJ CW5vbi1yb290IGNoYWluIG1lbWJlcjsgc2VlIEl0ZW1Qb2ludGVyU0lVTWF5YmVTdGFsZUZs YWcuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorSXRlbVBvaW50ZXJJc1NJVU1heWJlU3Rh bGUoY29uc3QgSXRlbVBvaW50ZXJEYXRhICpwb2ludGVyKQoreworCXJldHVybiAocG9pbnRl ci0+aXBfcG9zaWQgJiBJdGVtUG9pbnRlclNJVU1heWJlU3RhbGVGbGFnKSAhPSAwOworfQor CisvKgorICogSXRlbVBvaW50ZXJTZXRTSVVNYXliZVN0YWxlCisgKgkJU2V0IHRoZSBTSVUg bWF5LWJlLXN0YWxlIGJpdCBvbiBhIGhlYXAtcm93IFRJRCB0aGF0IHdpbGwgYmUgc3RvcmVk CisgKgkJaW4gYW4gaW5kZXggdHVwbGUuICBNdXN0IG9ubHkgYmUgY2FsbGVkIG9uIGEgZ2Vu dWluZSBoZWFwIFRJRCwgbm90CisgKgkJb24gYSByZXB1cnBvc2VkIG5idHJlZSBwaXZvdC9w b3N0aW5nIHRfdGlkLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0l0ZW1Qb2ludGVyU2V0 U0lVTWF5YmVTdGFsZShJdGVtUG9pbnRlckRhdGEgKnBvaW50ZXIpCit7CisJQXNzZXJ0KHBv aW50ZXIpOworCS8qCisJICogVGhlIG1hcmtlciBtdXN0IG9ubHkgZXZlciBsYW5kIG9uIGEg Z2VudWluZSwgaW4tcmFuZ2UgaGVhcCBvZmZzZXQ6IGEKKwkgKiB2YWx1ZSBpbiB0aGUgc2Vu dGluZWwgcmFuZ2UgKFNwZWNUb2tlbk9mZnNldE51bWJlciAvIE1vdmVkUGFydGl0aW9ucy0K KwkgKiBPZmZzZXROdW1iZXIpIGFscmVhZHkgaGFzIGJpdCAxNCBzZXQgYW5kIHdvdWxkIGJl IGNvcnJ1cHRlZCwgYW5kCisJICogSXRlbVBvaW50ZXJPZmZzZXROdW1iZXJTdHJpcCBkZWxp YmVyYXRlbHkgbGVhdmVzIHN1Y2ggdmFsdWVzIHVudG91Y2hlZCwKKwkgKiBzbyBhIGxhdGVy IHN0cmlwIHdvdWxkIG5vdCBjbGVhciB0aGUgZmxhZy4gIENhdGNoIG1pc3VzZSBpbiBkZWJ1 ZyBidWlsZHMuCisJICovCisJQXNzZXJ0KEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyTm9D aGVjayhwb2ludGVyKSA8IE1vdmVkUGFydGl0aW9uc09mZnNldE51bWJlcik7CisJcG9pbnRl ci0+aXBfcG9zaWQgfD0gSXRlbVBvaW50ZXJTSVVNYXliZVN0YWxlRmxhZzsKIH0KIAogLyoK LS0gCjIuNTAuMQoK --ffc971266f692fe98c1088dac35356ed85e7d5db Content-Disposition: attachment; filename*0="v63-0006-Collapse-dead-HOT-indexed-chains-to-xid-free-stu.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v63-0006-Collapse-dead-HOT-indexed-chains-to-xid-free-stu.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAwNDc4OGZhNzBlZmQyYmI4MTJkOTAyZDAwNzBlOTUyNzllMjZiOTgyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMToyODozMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjYzIDA2 LzEwXSBDb2xsYXBzZSBkZWFkIEhPVC1pbmRleGVkIGNoYWlucyB0byB4aWQtZnJlZSBzdHVi cwogb24gcHJ1bmUvdmFjdXVtCgpBIEhPVC1pbmRleGVkIHVwZGF0ZSBwbGFudHMgaW5kZXgg ZW50cmllcyB0aGF0IHBvaW50IGF0IG1pZC1jaGFpbiBoZWFwLW9ubHkKdHVwbGVzLCBzbyBh IGRlYWQgY2hhaW4gbWVtYmVyIGNhbm5vdCBzaW1wbHkgYmUgcmVtb3ZlZDogYSBub3QteWV0 LXN3ZXB0IGluZGV4CmVudHJ5IG1heSBzdGlsbCBhcnJpdmUgYXQgaXQsIGFuZCB0aGUgcGVy LWhvcCBtb2RpZmllZC1hdHRycyBiaXRtYXAgb24gaXQgaXMKd2hhdCBhIHJlYWRlciB1bmlv bnMgdG8ganVkZ2Ugc3RhbGVuZXNzLgoKVGVhY2ggcHJ1bmUgdG8gY29sbGFwc2UgYSBkZWFk IGNoYWluIHByZWZpeCBpbnRvIHhpZC1mcmVlIGZvcndhcmRpbmcgc3R1YnM6CmVhY2ggcHJl c2VydmVkIGRlYWQga2V5IHR1cGxlIGlzIHJld3JpdHRlbiBpbiBwbGFjZSB0byBhIHN0dWIg KGZyb3plbiwKbmF0dHMgPT0gMCwgSEVBUF9JTkRFWEVEX1VQREFURUQsIGZvcndhcmRpbmcg dmlhIHRfY3RpZC5vZmZudW0pIHRoYXQga2VlcHMgaXRzCnNlZ21lbnQncyBtb2RpZmllZC1h dHRycyBiaXRtYXAsIGFuZCBhIG1lbWJlciB3aG9zZSBhdHRyaWJ1dGVzIGFyZSB3aG9sbHkK c3Vic3VtZWQgYnkgbGF0ZXIgaG9wcyBpcyByZWNsYWltZWQgaW5zdGVhZC4gIFJlYWRlcnMg c3RlcCB0aHJvdWdoIHN0dWJzCnRyYW5zcGFyZW50bHkgYW5kIHN0aWxsIGNyb3NzIGV2ZXJ5 IHN1cnZpdmluZyBob3AncyBiaXRtYXAuICBUaGUgY29sbGFwc2UgYmFjawp0byBjbGFzc2lj IEhPVCBpcyBkcml2ZW4gYnkgcHJ1bmU6IG9uY2UgYSBjaGFpbiBpcyBmdWxseSBkZWFkLCBh IGxhdGVyIHBydW5lCihoZWFwX3BydW5lX2NoYWluIC8gaGVhcF9wcnVuZV9jaGFpbl9maW5k X2xpdmUpIHJlY2xhaW1zIGl0cyBtZW1iZXJzIGFuZApyZS1wb2ludHMgdGhlIHJvb3QgcmVk aXJlY3Qgc3RyYWlnaHQgYXQgdGhlIGZpcnN0IGxpdmUgdHVwbGUuICBWQUNVVU0ncyBpbmRl eApjbGVhbnVwIHN3ZWVwcyB0aGUgc3RhbGUgbGVhdmVzOyBpdHMgc2Vjb25kIHBhc3MgKGxh enlfdmFjdXVtX2hlYXBfcGFnZSkgZG9lcwp0aGUgdXN1YWwgTFBfREVBRCAtPiBMUF9VTlVT RUQgY29udmVyc2lvbiBhbmQgbGVhdmVzIHRoZSBIT1QtaW5kZXhlZCBjb2xsYXBzZQp0byBw cnVuZS4KClRoZSBjb2xsYXBzZSByZXVzZXMgdGhlIGV4aXN0aW5nIHBydW5lL2ZyZWV6ZSBX QUwgdmlhIGFuIHhsaHBfcHJ1bmVfaXRlbXMKc3ViLXJlY29yZCBjYXJyeWluZyB0aGUgKG9m ZnNldCwgZm9yd2FyZCkgc3R1YiBwYWlyczsgbm8gbmV3IHJlY29yZCB0eXBlIGlzCmludHJv ZHVjZWQuICBBIHBhZ2UgdGhhdCBzdGlsbCBjYXJyaWVzIGEgcHJlc2VydmVkIHN0dWIgKG9y IGEgcmVkaXJlY3QgdGhhdApmb3J3YXJkcyBpbnRvIGEgbGl2ZSBIT1QtaW5kZXhlZCBtZW1i ZXIpIGlzIGtlcHQgbm9uLWFsbC12aXNpYmxlIHNvIGluZGV4LW9ubHkKc2NhbnMgaGVhcC1m ZXRjaCB0aHJvdWdoIHRoZSBjaGFpbjsgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxl IHJlY29nbml6ZXMKYm90aCB0aGUgcmVkaXJlY3QtdG8tU0lVIGFuZCB0aGUgc3R1YiBjYXNl IGV4cGxpY2l0bHkuCgpDby1hdXRob3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+ CkNvLWF1dGhvcmVkLWJ5OiBOYXRoYW4gQm9zc2FydCA8bmF0aGFuZGJvc3NhcnRAZ21haWwu Y29tPgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgIHwgIDEw ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICB8IDY3MSArKysr KysrKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMgICB8ICA4NiArKystCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRl c2MuYyB8ICAzNiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAg fCAgIDYgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAgICAgIHwgIDE5 ICstCiA2IGZpbGVzIGNoYW5nZWQsIDc3MSBpbnNlcnRpb25zKCspLCA1NyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCA5ZWQ3MDI0 ZTgxNC4uNTcxZWE1YTRkYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hs b2cuYwpAQCAtMTAzLDYgKzEwMyw4IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJCVNpemUJCWRhdGFsZW47CiAJCXhsaHBfZnJlZXplX3Bs YW4gKnBsYW5zOwogCQlPZmZzZXROdW1iZXIgKmZyel9vZmZzZXRzOworCQlPZmZzZXROdW1i ZXIgKnN0dWJzOworCQlpbnQJCQluc3R1YnM7CiAJCWNoYXIJICAgKmRhdGFwdHIgPSBYTG9n UmVjR2V0QmxvY2tEYXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwogCQlib29sCQlkb19wcnVu ZTsKIApAQCAtMTEwLDkgKzExMiwxMCBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJCQkgICAmbnBsYW5zLCAmcGxhbnMsICZm cnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJICAgJm5yZWRpcmVjdGVkLCAmcmVkaXJlY3RlZCwK IAkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93ZGVhZCwKLQkJCQkJCQkJCQkJICAgJm51bnVz ZWQsICZub3d1bnVzZWQpOworCQkJCQkJCQkJCQkgICAmbnVudXNlZCwgJm5vd3VudXNlZCwK KwkJCQkJCQkJCQkJICAgJm5zdHVicywgJnN0dWJzKTsKIAotCQlkb19wcnVuZSA9IG5yZWRp cmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7CisJCWRvX3BydW5lID0g bnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCB8fCBuc3R1YnMg PiAwOwogCiAJCS8qIEVuc3VyZSB0aGUgcmVjb3JkIGRvZXMgc29tZXRoaW5nICovCiAJCUFz c2VydChkb19wcnVuZSB8fCBucGxhbnMgPiAwIHx8IHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQ X1ZBTElEX0JJVFMpOwpAQCAtMTI2LDcgKzEyOSw4IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVl emUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQkJCQkJCQkoeGxyZWMuZmxhZ3MgJiBY TEhQX0NMRUFOVVBfTE9DSykgPT0gMCwKIAkJCQkJCQkJCXJlZGlyZWN0ZWQsIG5yZWRpcmVj dGVkLAogCQkJCQkJCQkJbm93ZGVhZCwgbmRlYWQsCi0JCQkJCQkJCQlub3d1bnVzZWQsIG51 bnVzZWQpOworCQkJCQkJCQkJbm93dW51c2VkLCBudW51c2VkLAorCQkJCQkJCQkJc3R1YnMs IG5zdHVicyk7CiAKIAkJLyogRnJlZXplIHR1cGxlcyAqLwogCQlmb3IgKGludCBwID0gMDsg cCA8IG5wbGFuczsgcCsrKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRl eCA2ZjNiYTkxMTNiNS4uZDRiMzczZTZlZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFt LmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9nLmgiCisjaW5jbHVkZSAiYWNjZXNz L2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2lu Y2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5o IgpAQCAtNjgsMTEgKzY5LDIwIEBAIHR5cGVkZWYgc3RydWN0CiAJaW50CQkJbnJlZGlyZWN0 ZWQ7CS8qIG51bWJlcnMgb2YgZW50cmllcyBpbiBhcnJheXMgYmVsb3cgKi8KIAlpbnQJCQlu ZGVhZDsKIAlpbnQJCQludW51c2VkOworCWludAkJCW5zdHViczsKIAlpbnQJCQluZnJvemVu OwogCS8qIGFycmF5cyB0aGF0IGFjY3VtdWxhdGUgaW5kZXhlcyBvZiBpdGVtcyB0byBiZSBj aGFuZ2VkICovCiAJT2Zmc2V0TnVtYmVyIHJlZGlyZWN0ZWRbTWF4SGVhcFR1cGxlc1BlclBh Z2UgKiAyXTsKIAlPZmZzZXROdW1iZXIgbm93ZGVhZFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07 CiAJT2Zmc2V0TnVtYmVyIG5vd3VudXNlZFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07CisKKwkv KgorCSAqIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWJz OiAob2Zmc2V0LCBmb3J3YXJkKQorCSAqIHBhaXJzIG9mIGxpbmUgcG9pbnRlcnMgcmV3cml0 dGVuIGluIHBsYWNlIGludG8geGlkLWZyZWUgZm9yd2FyZGluZworCSAqIHN0dWJzIHRoYXQg cHJlc2VydmUgdGhlaXIgc2VnbWVudCdzIG1vZGlmaWVkLWF0dHJzIGJpdG1hcC4KKwkgKi8K KwlPZmZzZXROdW1iZXIgc3R1YnNbTWF4SGVhcFR1cGxlc1BlclBhZ2UgKiAyXTsKKwogCUhl YXBUdXBsZUZyZWV6ZSBmcm96ZW5bTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwogCiAJLyoKQEAg LTIyMSw2ICsyMzEsMTAgQEAgc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfcHJ1bmFi bGUoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQsCiBzdGF0aWMgdm9p ZCBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdChQcnVuZVN0YXRlICpwcnN0YXRlLAogCQkJ CQkJCQkJICAgT2Zmc2V0TnVtYmVyIG9mZm51bSwgT2Zmc2V0TnVtYmVyIHJkb2ZmbnVtLAog CQkJCQkJCQkJICAgYm9vbCB3YXNfbm9ybWFsKTsKK3N0YXRpYyB2b2lkIGhlYXBfcHJ1bmVf cmVjb3JkX3N0dWIoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCQkJICAgT2Zmc2V0TnVt YmVyIG9mZm51bSwgT2Zmc2V0TnVtYmVyIGZvcndhcmQpOworc3RhdGljIHZvaWQgaGVhcF9w cnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3N0dWIoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJ CQkJCQkJCQkJCU9mZnNldE51bWJlciBvZmZudW0pOwogc3RhdGljIHZvaWQgaGVhcF9wcnVu ZV9yZWNvcmRfZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVt LAogCQkJCQkJCQkgICBib29sIHdhc19ub3JtYWwpOwogc3RhdGljIHZvaWQgaGVhcF9wcnVu ZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVt YmVyIG9mZm51bSwKQEAgLTIzMSw2ICsyNDUsNyBAQCBzdGF0aWMgdm9pZCBoZWFwX3BydW5l X3JlY29yZF91bmNoYW5nZWRfbHBfdW51c2VkKFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNl dE51bQogc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1h bChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIHN0YXRpYyB2 b2lkIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9kZWFkKFBydW5lU3RhdGUgKnBy c3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pOwogc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9y ZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGlyZWN0KFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNl dE51bWJlciBvZmZudW0pOworc3RhdGljIGJvb2wgaGVhcF9wcnVuZV9pdGVtX3ByZXNlcnZl c19ob3RfaW5kZXhlZChQYWdlIHBhZ2UsIE9mZnNldE51bWJlciBvZmZudW0pOwogCiBzdGF0 aWMgdm9pZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKTsKIApAQCAtNDU5LDYg KzQ3NCw3IEBAIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1z LAogCXByc3RhdGUtPm5ld19wcnVuZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlw cnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlw cnN0YXRlLT5ucmVkaXJlY3RlZCA9IHByc3RhdGUtPm5kZWFkID0gcHJzdGF0ZS0+bnVudXNl ZCA9IDA7CisJcHJzdGF0ZS0+bnN0dWJzID0gMDsKIAlwcnN0YXRlLT5uZnJvemVuID0gMDsK IAlwcnN0YXRlLT5ucm9vdF9pdGVtcyA9IDA7CiAJcHJzdGF0ZS0+bmhlYXBvbmx5X2l0ZW1z ID0gMDsKQEAgLTYyNyw2ICs2NDMsMjMgQEAgcHJ1bmVfZnJlZXplX3BsYW4oUHJ1bmVTdGF0 ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyICpvZmZfbG9jKQogCQkgKiBHZXQgdGhlIHR1cGxl J3MgdmlzaWJpbGl0eSBzdGF0dXMgYW5kIHF1ZXVlIGl0IHVwIGZvciBwcm9jZXNzaW5nLgog CQkgKi8KIAkJaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGl0 ZW1pZCk7CisKKwkJLyoKKwkJICogQSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGlzIGFuIExQ X05PUk1BTCBpdGVtIHRoYXQgaXMgbm90IGEgcmVhbAorCQkgKiB0dXBsZTogSEVBUF9JTkRF WEVEX1VQREFURUQgd2l0aCBuYXR0cyA9PSAwLCBwZXJtYW5lbnRseSBpbnZpc2libGUKKwkJ ICogKEhFQVBfWE1JTl9JTlZBTElEKSwgY2FycnlpbmcgYSBmb3J3YXJkIGxpbmsgYW5kIHRo ZSBtb2RpZmllZC1hdHRycworCQkgKiBiaXRtYXAgZm9yIHRoZSBjaGFpbiBzZWdtZW50IGl0 IHN0YW5kcyBpbiBmb3IuCisJCSAqIGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1bSgpIHdv dWxkIGNsYXNzaWZ5IGl0IEhFQVBUVVBMRV9ERUFEIGFuZAorCQkgKiBwcnVuaW5nIHdvdWxk IHJlY2xhaW0gaXQsIGRlc3Ryb3lpbmcgdGhlIGJpdG1hcCBhIHJlYWQgbmVlZHMuCisJCSAq IFJlY29yZCBpdCBhcyBhbiB1bmNoYW5nZWQgaXRlbSBzbyBpdCBpcyBwcmVzZXJ2ZWQ7IHRo ZSBIT1QgY2hhaW4KKwkJICogd2FsayBzdGVwcyB0aHJvdWdoIGl0IHRyYW5zcGFyZW50bHkg dG8gcmVhY2ggdGhlIGxpdmUgdHVwbGUuCisJCSAqLworCQlpZiAoSG90SW5kZXhlZEhlYWRl cklzU3R1YihodHVwKSkKKwkJeworCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xw X3N0dWIocHJzdGF0ZSwgb2ZmbnVtKTsKKwkJCWNvbnRpbnVlOworCQl9CisKIAkJdHVwLnRf ZGF0YSA9IGh0dXA7CiAJCXR1cC50X2xlbiA9IEl0ZW1JZEdldExlbmd0aChpdGVtaWQpOwog CQlJdGVtUG9pbnRlclNldCgmdHVwLnRfc2VsZiwgYmxvY2tubywgb2ZmbnVtKTsKQEAgLTY5 NywxOCArNzMwLDM4IEBAIHBydW5lX2ZyZWV6ZV9wbGFuKFBydW5lU3RhdGUgKnByc3RhdGUs IE9mZnNldE51bWJlciAqb2ZmX2xvYykKIAkJCUl0ZW1JZAkJaXRlbWlkID0gUGFnZUdldEl0 ZW1JZChwYWdlLCBvZmZudW0pOwogCQkJSGVhcFR1cGxlSGVhZGVyIGh0dXAgPSAoSGVhcFR1 cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwogCi0JCQlpZiAobGlrZWx5 KCFIZWFwVHVwbGVIZWFkZXJJc0hvdFVwZGF0ZWQoaHR1cCkpKQotCQkJewotCQkJCUhlYXBU dXBsZUhlYWRlckFkdmFuY2VDb25mbGljdEhvcml6b24oaHR1cCwKLQkJCQkJCQkJCQkJCQkg ICZwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQpOworCQkJLyoKKwkJCSAqIEEgZGVhZCBo ZWFwLW9ubHkgdHVwbGUgdGhhdCBjYXJyaWVzIGEgc3RhbGUgYnRyZWUgbGVhZiBvZiBpdHMK KwkJCSAqIG93biAoSEVBUF9JTkRFWEVEX1VQREFURUQsIG5hdHRzID4gMCkgaXMgYSBIT1Qt aW5kZXhlZCBjaGFpbgorCQkJICogbWVtYmVyIG5vdCByZWFjaGVkIGJ5IGFueSBjaGFpbiB3 YWxrIChhbiBhYm9ydGVkCisJCQkgKiBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCBzdWItY2hh aW4sIG9yIGEgbWVtYmVyIHdob3NlIGxpdmUgcm9vdAorCQkJICogc3RvcHBlZCB0aGUgd2Fs aykuICBNYXJrIGl0IExQX0RFQUQgaW5zdGVhZCBvZiByZWNsYWltaW5nIGl0CisJCQkgKiBv dXRyaWdodDogdGhhdCBwaW5zIHRoZSBzbG90IGFnYWluc3QgcmV1c2UgYW5kIGFkZHMgaXQg dG8gdGhlCisJCQkgKiBkZWFkLWl0ZW1zIGFycmF5IHNvIGFtYnVsa2RlbGV0ZSBzd2VlcHMg dGhlIHN0YWxlIGxlYWYgYW5kIGEKKwkJCSAqIGxhdGVyIHZhY3V1bSByZWNsYWltcyB0aGUg TFAuCisJCQkgKgorCQkJICogT3RoZXJ3aXNlLCB0aGlzIGlzIHRoZSBjbGFzc2ljLUhPVCBj YXNlIHVwc3RyZWFtIGhhcyBhbHdheXMKKwkJCSAqIGhhbmRsZWQgaGVyZTogYSBkZWFkIGhl YXAtb25seSB0dXBsZSB3aXRoIG5vIGxlYWYgb2YgaXRzIG93bgorCQkJICogc2hvdWxkIGhh dmUgYmVlbiByZWFjaGVkIGFuZCByZW1vdmVkIGFzIHBhcnQgb2YgcHJ1bmluZyBpdHMKKwkJ CSAqIEhPVCBjaGFpbi4gIElmIGl0IGlzIG5vdCBIb3RVcGRhdGVkLCBpdCBpcyBhIGxlZ2l0 aW1hdGUKKwkJCSAqIHN0YW5kYWxvbmUgZGVhZCBoZWFwLW9ubHkgdHVwbGUgKGUuZy4gYW4g YWJvcnRlZCB1cGRhdGUpIGFuZAorCQkJICogY2FuIGJlIHJlY2xhaW1lZDsgaWYgaXQgKmlz KiBIb3RVcGRhdGVkLCBzb21ldGhpbmcgaXMgd3JvbmcgLS0KKwkJCSAqIHByZXNlcnZlIGl0 IGFuZCBlcnJvciBvdXQgcmF0aGVyIHRoYW4gc2lsZW50bHkgZGVzdHJveSB0aGUKKwkJCSAq IGV2aWRlbmNlLgorCQkJICovCisJCQlIZWFwVHVwbGVIZWFkZXJBZHZhbmNlQ29uZmxpY3RI b3Jpem9uKGh0dXAsCisJCQkJCQkJCQkJCQkgICZwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92 ZWQpOworCQkJaWYgKChodHVwLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVE KSAhPSAwICYmCisJCQkJSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHMoaHR1cCkgPiAwKQorCQkJ CWhlYXBfcHJ1bmVfcmVjb3JkX2RlYWRfb3JfdW51c2VkKHByc3RhdGUsIG9mZm51bSwgdHJ1 ZSk7CisJCQllbHNlIGlmIChsaWtlbHkoIUhlYXBUdXBsZUhlYWRlcklzSG90VXBkYXRlZCho dHVwKSkpCiAJCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIG9mZm51bSwg dHJ1ZSk7Ci0JCQl9CiAJCQllbHNlCiAJCQl7CiAJCQkJLyoKLQkJCQkgKiBUaGlzIHR1cGxl IHNob3VsZCd2ZSBiZWVuIHByb2Nlc3NlZCBhbmQgcmVtb3ZlZCBhcyBwYXJ0IG9mCi0JCQkJ ICogYSBIT1QgY2hhaW4sIHNvIHNvbWV0aGluZydzIHdyb25nLiAgVG8gcHJlc2VydmUgZXZp ZGVuY2UsCi0JCQkJICogd2UgZG9uJ3QgZGFyZSB0byByZW1vdmUgaXQuICBXZSBjYW5ub3Qg bGVhdmUgYmVoaW5kIGEgREVBRAorCQkJCSAqIFRoaXMgdHVwbGUgc2hvdWxkJ3ZlIGJlZW4g cHJvY2Vzc2VkIGFuZCByZW1vdmVkIGFzIHBhcnQgb2YgYQorCQkJCSAqIEhPVCBjaGFpbiwg c28gc29tZXRoaW5nJ3Mgd3JvbmcuICBUbyBwcmVzZXJ2ZSBldmlkZW5jZSwgd2UKKwkJCQkg KiBkb24ndCBkYXJlIHRvIHJlbW92ZSBpdC4gIFdlIGNhbm5vdCBsZWF2ZSBiZWhpbmQgYSBE RUFECiAJCQkJICogdHVwbGUgZWl0aGVyLCBiZWNhdXNlIHRoYXQgd2lsbCBjYXVzZSBWQUNV VU0gdG8gZXJyb3Igb3V0LgogCQkJCSAqIFRocm93aW5nIGFuIGVycm9yIHdpdGggYSBkaXN0 aW5jdCBlcnJvciBtZXNzYWdlIHNlZW1zIGxpa2UKIAkJCQkgKiB0aGUgbGVhc3QgYmFkIG9w dGlvbi4KQEAgLTExODMsNyArMTIzNiw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAKIAlkb19wcnVuZSA9IHByc3RhdGUubnJl ZGlyZWN0ZWQgPiAwIHx8CiAJCXByc3RhdGUubmRlYWQgPiAwIHx8Ci0JCXByc3RhdGUubnVu dXNlZCA+IDA7CisJCXByc3RhdGUubnVudXNlZCA+IDAgfHwKKwkJcHJzdGF0ZS5uc3R1YnMg PiAwOwogCiAJLyoKIAkgKiBFdmVuIGlmIHdlIGRvbid0IHBydW5lIGFueXRoaW5nLCBpZiB3 ZSBmb3VuZCBhIG5ldyB2YWx1ZSBmb3IgdGhlCkBAIC0xMjg0LDcgKzEzMzgsOCBAQCBoZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJ aGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUocHJzdGF0ZS5idWZmZXIsIGZhbHNlLAogCQkJCQkJ CQkJcHJzdGF0ZS5yZWRpcmVjdGVkLCBwcnN0YXRlLm5yZWRpcmVjdGVkLAogCQkJCQkJCQkJ cHJzdGF0ZS5ub3dkZWFkLCBwcnN0YXRlLm5kZWFkLAotCQkJCQkJCQkJcHJzdGF0ZS5ub3d1 bnVzZWQsIHByc3RhdGUubnVudXNlZCk7CisJCQkJCQkJCQlwcnN0YXRlLm5vd3VudXNlZCwg cHJzdGF0ZS5udW51c2VkLAorCQkJCQkJCQkJcHJzdGF0ZS5zdHVicywgcHJzdGF0ZS5uc3R1 YnMpOwogCQl9CiAKIAkJaWYgKGRvX2ZyZWV6ZSkKQEAgLTEzMjcsNyArMTM4Miw4IEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJ CQkJCQkJCQkgIHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4sCiAJCQkJCQkJCQkg IHByc3RhdGUucmVkaXJlY3RlZCwgcHJzdGF0ZS5ucmVkaXJlY3RlZCwKIAkJCQkJCQkJCSAg cHJzdGF0ZS5ub3dkZWFkLCBwcnN0YXRlLm5kZWFkLAotCQkJCQkJCQkJICBwcnN0YXRlLm5v d3VudXNlZCwgcHJzdGF0ZS5udW51c2VkKTsKKwkJCQkJCQkJCSAgcHJzdGF0ZS5ub3d1bnVz ZWQsIHByc3RhdGUubnVudXNlZCwKKwkJCQkJCQkJCSAgcHJzdGF0ZS5zdHVicywgcHJzdGF0 ZS5uc3R1YnMpOwogCQl9CiAJfQogCkBAIC0xNDY4LDYgKzE1MjQsMTAxIEBAIGh0c3ZfZ2V0 X3ZhbGlkX3N0YXR1cyhpbnQgc3RhdHVzKQogCXJldHVybiAoSFRTVl9SZXN1bHQpIHN0YXR1 czsKIH0KIAorLyoKKyAqIGhlYXBfcHJ1bmVfY2hhaW5fZmluZF9saXZlCisgKgkJRm9sbG93 IGEgSE9UIGNoYWluIGZyb20gJ3N0YXJ0JyB0byBpdHMgZmlyc3Qgc3Vydml2aW5nIG1lbWJl ci4KKyAqCisgKiBVc2VkIHdoZW4gcmUtcHJ1bmluZyBhIEhPVC9TSVUgY2hhaW4gdGhhdCB3 YXMgY29sbGFwc2VkIGJ5IGFuIGVhcmxpZXIgcHJ1bmU6CisgKiB0aGUgcm9vdCBhbmQgYW55 IGVudHJ5LWJlYXJpbmcgZGVhZCBtZW1iZXJzIHdlcmUgdHVybmVkIGludG8gTFBfUkVESVJF Q1RzIHRvCisgKiB3aGF0IHdhcyB0aGVuIHRoZSBmaXJzdCBsaXZlIHR1cGxlLiAgSWYgdGhh dCB0dXBsZSBoYXMgc2luY2UgYmVlbiBIT1QtdXBkYXRlZAorICogYWdhaW4gYW5kIGRpZWQs IHRoZSByZWRpcmVjdHMgbXVzdCBiZSByZS1wb2ludGVkIHRvIHRoZSBjdXJyZW50IGZpcnN0 IGxpdmUKKyAqIHR1cGxlLCBvciBzZXZlcmFsIHJlZGlyZWN0cyBmb3J3YXJkaW5nIHRvIG9u ZSBsaXZlIHR1cGxlIG11c3QgYWdyZWUgb24gaXQuCisgKiBCb3RoIGNhc2VzIG5lZWQgdGhl IGNoYWluJ3MgY3VycmVudCBmaXJzdCBzdXJ2aXZpbmcgbWVtYmVyLgorICoKKyAqIFdhbGtz IHRfY3RpZCBvbiB0aGlzIHBhZ2Ugc3RhcnRpbmcgYXQgJ3N0YXJ0Jywgc2tpcHBpbmcgREVB RCBtZW1iZXJzLCBhbmQKKyAqIHJldHVybnMgdGhlIG9mZnNldCBvZiB0aGUgZmlyc3Qgbm9u LURFQUQgKHN1cnZpdmluZykgbWVtYmVyLiAgUmV0dXJucworICogSW52YWxpZE9mZnNldE51 bWJlciBpZiB0aGUgY2hhaW4gZGVhZC1lbmRzIHdpdGggbm8gc3Vydml2b3Igb3IgcnVucyBv ZmYgdGhlCisgKiBwYWdlLiAgUmVhZHMgb25seSB0aGUgcGFnZSdzIHByZS1leGVjdXRlIHN0 YXRlLCBzbyBpdCBpcyBjb3JyZWN0IHJlZ2FyZGxlc3MKKyAqIG9mIHRoZSBvcmRlciBpbiB3 aGljaCBzaWJsaW5nIHJlZGlyZWN0cyBhcmUgcHJvY2Vzc2VkLgorICovCitzdGF0aWMgT2Zm c2V0TnVtYmVyCitoZWFwX3BydW5lX2NoYWluX2ZpbmRfbGl2ZShQcnVuZVN0YXRlICpwcnN0 YXRlLCBPZmZzZXROdW1iZXIgc3RhcnQpCit7CisJUGFnZQkJcGFnZSA9IHByc3RhdGUtPnBh Z2U7CisJT2Zmc2V0TnVtYmVyIG1heG9mZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFn ZSk7CisJT2Zmc2V0TnVtYmVyIG9mZm51bSA9IHN0YXJ0OworCU9mZnNldE51bWJlciBzdXJ2 aXZvciA9IHN0YXJ0OwkvKiBzdWNjZXNzb3Igb2YgdGhlIGxhc3QgREVBRCBtZW1iZXIgKi8K KwlpbnQJCQlsb29wcyA9IDA7CisKKwl3aGlsZSAob2ZmbnVtID49IEZpcnN0T2Zmc2V0TnVt YmVyICYmIG9mZm51bSA8PSBtYXhvZmYpCisJeworCQlJdGVtSWQJCWxwID0gUGFnZUdldEl0 ZW1JZChwYWdlLCBvZmZudW0pOworCQlIVFNWX1Jlc3VsdCBzdGF0dXM7CisJCUhlYXBUdXBs ZUhlYWRlciBodHVwOworCisJCS8qIEEgcmVkaXJlY3QvZGVhZC91bnVzZWQgaXRlbSBjYW5u b3QgYmUgYSBzdXJ2aXZpbmcgY2hhaW4gbWVtYmVyLiAqLworCQlpZiAoIUl0ZW1JZElzTm9y bWFsKGxwKSkKKwkJCXJldHVybiBJbnZhbGlkT2Zmc2V0TnVtYmVyOworCisJCWh0dXAgPSAo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJLyoKKwkJICog QSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGlzIGFuIHhpZC1mcmVlIGZvcndhcmRpbmcgbm9k ZSwgbm90IGEKKwkJICogY2hhaW4gbWVtYmVyOyB0aGUgcGFnZSBzY2FuIHJlY29yZHMgaXQg dW5jaGFuZ2VkIHdpdGhvdXQgY29tcHV0aW5nCisJCSAqIHZpc2liaWxpdHksIHNvIGl0cyBo dHN2IHNsb3QgaXMgdW5zZXQuICBTdGVwIHRocm91Z2ggaXQgdG8gaXRzCisJCSAqIGZvcndh cmQgbGluayByYXRoZXIgdGhhbiByZWFkaW5nIGh0c3YsIHdoaWNoIHdvdWxkIHRyaXAgdGhl CisJCSAqIHZhbGlkaXR5IGFzc2VydC4KKwkJICovCisJCWlmIChIb3RJbmRleGVkSGVhZGVy SXNTdHViKGh0dXApKQorCQl7CisJCQlvZmZudW0gPSBIb3RJbmRleGVkU3R1YkdldEZvcndh cmQoaHR1cCk7CisJCQlpZiAoKytsb29wcyA+IG1heG9mZikKKwkJCQlyZXR1cm4gSW52YWxp ZE9mZnNldE51bWJlcjsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJc3RhdHVzID0gaHRzdl9n ZXRfdmFsaWRfc3RhdHVzKHByc3RhdGUtPmh0c3Zbb2ZmbnVtXSk7CisJCWh0dXAgPSAoSGVh cFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJaWYgKHN0YXR1cyA9 PSBIRUFQVFVQTEVfREVBRCkKKwkJeworCQkJLyoKKwkJCSAqIEEgREVBRCBtZW1iZXIgaXMg cmVjbGFpbWVkL3JlZGlyZWN0ZWQsIHNvIHRoZSBzdXJ2aXZpbmcgdGFpbAorCQkJICogc3Rh cnRzIGF0IGl0cyBzdWNjZXNzb3IuICBBIERFQUQgbWVtYmVyIHdpdGggbm8gbGl2ZSBzdWNj ZXNzb3IKKwkJCSAqIG1lYW5zIHRoZSB3aG9sZSBjaGFpbiBpcyBkZWFkLgorCQkJICovCisJ CQlpZiAoIUhlYXBUdXBsZUhlYWRlcklzSG90VXBkYXRlZChodHVwKSB8fAorCQkJCUl0ZW1Q b2ludGVyR2V0QmxvY2tOdW1iZXIoJmh0dXAtPnRfY3RpZCkgIT0gcHJzdGF0ZS0+YmxvY2sp CisJCQkJcmV0dXJuIEludmFsaWRPZmZzZXROdW1iZXI7CisJCQlvZmZudW0gPSBJdGVtUG9p bnRlckdldE9mZnNldE51bWJlcigmaHR1cC0+dF9jdGlkKTsKKwkJCXN1cnZpdm9yID0gb2Zm bnVtOworCQl9CisJCWVsc2UgaWYgKHN0YXR1cyA9PSBIRUFQVFVQTEVfUkVDRU5UTFlfREVB RCkKKwkJeworCQkJLyoKKwkJCSAqIFJFQ0VOVExZX0RFQUQgbWVtYmVycyBiZWxvbmcgdG8g dGhlIHN1cnZpdmluZyB0YWlsIHVubGVzcyBhCisJCQkgKiBERUFEIG1lbWJlciBmb2xsb3dz IHRoZW0gKHdoaWNoIHdvdWxkIG1ha2UgdGhlbSBwYXJ0IG9mIHRoZQorCQkJICogZGVhZCBw cmVmaXgpLiAgS2VlcCB3YWxraW5nIHRvIGZpbmQgb3V0LCBidXQgZG8gbm90IGFkdmFuY2Ug dGhlCisJCQkgKiBzdXJ2aXZvcjsgaXQgc3RheXMgYXQgdGhlIHN1Y2Nlc3NvciBvZiB0aGUg bGFzdCBERUFEIG1lbWJlci4KKwkJCSAqLworCQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJJc0hv dFVwZGF0ZWQoaHR1cCkgfHwKKwkJCQlJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZodHVw LT50X2N0aWQpICE9IHByc3RhdGUtPmJsb2NrKQorCQkJCXJldHVybiBzdXJ2aXZvcjsKKwkJ CW9mZm51bSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZodHVwLT50X2N0aWQpOwor CQl9CisJCWVsc2UKKwkJeworCQkJLyogTElWRSAob3IgaW4tcHJvZ3Jlc3MpOiB0aGUgc3Vy dml2aW5nIHRhaWwgaXMgc2V0dGxlZC4gKi8KKwkJCXJldHVybiBzdXJ2aXZvcjsKKwkJfQor CisJCWlmICgrK2xvb3BzID4gbWF4b2ZmKQorCQkJcmV0dXJuIEludmFsaWRPZmZzZXROdW1i ZXI7IC8qIGRlZmVuZCBhZ2FpbnN0IGEgY29ycnVwdCBjeWNsZSAqLworCX0KKworCXJldHVy biBJbnZhbGlkT2Zmc2V0TnVtYmVyOworfQorCiAvKgogICogUHJ1bmUgc3BlY2lmaWVkIGxp bmUgcG9pbnRlciBvciBhIEhPVCBjaGFpbiBvcmlnaW5hdGluZyBhdCBsaW5lIHBvaW50ZXIu CiAgKgpAQCAtMTUxNSw2ICsxNjY2LDcgQEAgaGVhcF9wcnVuZV9jaGFpbihPZmZzZXROdW1i ZXIgbWF4b2ZmLCBPZmZzZXROdW1iZXIgcm9vdG9mZm51bSwKIAkgKi8KIAlpbnQJCQluZGVh ZGNoYWluID0gMCwKIAkJCQluY2hhaW4gPSAwOworCWludAkJCW5zdHViaG9wcyA9IDA7CiAK IAlyb290bHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIHJvb3RvZmZudW0pOwogCkBAIC0xNTM4 LDYgKzE2OTAsMzggQEAgaGVhcF9wcnVuZV9jaGFpbihPZmZzZXROdW1iZXIgbWF4b2ZmLCBP ZmZzZXROdW1iZXIgcm9vdG9mZm51bSwKIAkJaWYgKG9mZm51bSA+IG1heG9mZikKIAkJCWJy ZWFrOwogCisJCS8qCisJCSAqIFN0ZXAgdHJhbnNwYXJlbnRseSB0aHJvdWdoIGEgY29sbGFw c2Utc3Vydml2b3Igc3R1Yi4gIEEgcmVkaXJlY3Qgb3IKKwkJICogYW4gZWFybGllciBzdHVi IG1heSBmb3J3YXJkIGludG8gYSBzdHViIHRoYXQgcmVwbGFjZWQgYSBkZWFkCisJCSAqIG1p ZC1jaGFpbiBtZW1iZXI7IHRoZSBzdHViIHdhcyBhbHJlYWR5IHJlY29yZGVkIChhcyB1bmNo YW5nZWQpIGJ5CisJCSAqIHRoZSBwYWdlIHNjYW4gYW5kIGlzIG5vdCBpdHNlbGYgYSBjaGFp biBtZW1iZXIsIHNvIGZvbGxvdyBpdHMKKwkJICogZm9yd2FyZCBsaW5rIHJhdGhlciB0aGFu IHN0b3BwaW5nIGF0IHRoZSBwcm9jZXNzZWQgY2hlY2sgYmVsb3cuCisJCSAqLworCQl7CisJ CQlJdGVtSWQJCXNscCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgb2ZmbnVtKTsKKworCQkJaWYg KEl0ZW1JZElzTm9ybWFsKHNscCkpCisJCQl7CisJCQkJSGVhcFR1cGxlSGVhZGVyIHNodHVw ID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgc2xwKTsKKworCQkJCWlm IChIb3RJbmRleGVkSGVhZGVySXNTdHViKHNodHVwKSkKKwkJCQl7CisJCQkJCS8qCisJCQkJ CSAqIEEgc3R1YiBpcyB4aWQtZnJlZSwgc28gdGhlIHhtaW4veG1heCBsaW5rYWdlIGNhbm5v dCBiZQorCQkJCQkgKiB2ZXJpZmllZCBhY3Jvc3MgaXQuICBUcnVzdCB0aGUgc3R1YidzIGZv cndhcmQgbGluayBhbmQKKwkJCQkJICogc2tpcCB0aGUgcHJpb3IteG1heCBjaGVjayBmb3Ig dGhlIGZpcnN0IG1lbWJlciBwYXN0IGl0CisJCQkJCSAqIChvdGhlcndpc2UgdGhlIGNoYWlu IHdvdWxkIGJlIHNldmVyZWQgdGhlcmUsIGRyb3BwaW5nCisJCQkJCSAqIGl0cyB0YWlsKS4K KwkJCQkJICovCisJCQkJCW9mZm51bSA9IEhvdEluZGV4ZWRTdHViR2V0Rm9yd2FyZChzaHR1 cCk7CisJCQkJCXByaW9yWG1heCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQkJCQlpZiAo Kytuc3R1YmhvcHMgPiBtYXhvZmYpCisJCQkJCQlicmVhazsJLyogZGVmZW5kIGFnYWluc3Qg YSBjb3JydXB0IHN0dWItZm9yd2FyZCBjeWNsZSAqLworCQkJCQljb250aW51ZTsKKwkJCQl9 CisJCQl9CisJCX0KKwogCQkvKiBJZiBpdGVtIGlzIGFscmVhZHkgcHJvY2Vzc2VkLCBzdG9w IC0tLSBpdCBtdXN0IG5vdCBiZSBzYW1lIGNoYWluICovCiAJCWlmIChwcnN0YXRlLT5wcm9j ZXNzZWRbb2ZmbnVtXSkKIAkJCWJyZWFrOwpAQCAtMTY0NCwxMyArMTgyOCwyNyBAQCBoZWFw X3BydW5lX2NoYWluKE9mZnNldE51bWJlciBtYXhvZmYsIE9mZnNldE51bWJlciByb290b2Zm bnVtLAogCWlmIChJdGVtSWRJc1JlZGlyZWN0ZWQocm9vdGxwKSAmJiBuY2hhaW4gPCAyKQog CXsKIAkJLyoKLQkJICogV2UgZm91bmQgYSByZWRpcmVjdCBpdGVtIHRoYXQgZG9lc24ndCBw b2ludCB0byBhIHZhbGlkIGZvbGxvdy1vbgotCQkgKiBpdGVtLiAgVGhpcyBjYW4gaGFwcGVu IGlmIHRoZSBsb29wIGluIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkKLQkJICogY2F1 c2VkIHVzIHRvIHZpc2l0IHRoZSBkZWFkIHN1Y2Nlc3NvciBvZiBhIHJlZGlyZWN0IGl0ZW0g YmVmb3JlCi0JCSAqIHZpc2l0aW5nIHRoZSByZWRpcmVjdCBpdGVtLiAgV2UgY2FuIGNsZWFu IHVwIGJ5IHNldHRpbmcgdGhlCi0JCSAqIHJlZGlyZWN0IGl0ZW0gdG8gTFBfREVBRCBzdGF0 ZSBvciBMUF9VTlVTRUQgaWYgdGhlIGNhbGxlcgotCQkgKiBpbmRpY2F0ZWQuCisJCSAqIFRo ZSB3YWxrIGNvdWxkIG5vdCBnZXQgcGFzdCB0aGUgcmVkaXJlY3Q6IGl0cyB0YXJnZXQgd2Fz IGVpdGhlcgorCQkgKiBhbHJlYWR5IHByb2Nlc3NlZCBieSBhIHNpYmxpbmcgcmVkaXJlY3Qn cyB3YWxrIChzZXZlcmFsIHJlZGlyZWN0cworCQkgKiBvZiBhIGNvbGxhcHNlZCBIT1QvU0lV IGNoYWluIGZvcndhcmQgdG8gdGhlIHNhbWUgbGl2ZSB0dXBsZSkgb3IgaGFzCisJCSAqIHNp bmNlIGRpZWQgYW5kIGJlZW4gY29sbGFwc2VkIGZ1cnRoZXIuICBSZS1wb2ludCB0aGlzIHJl ZGlyZWN0IGF0CisJCSAqIHRoZSBjaGFpbidzIGN1cnJlbnQgZmlyc3Qgc3Vydml2aW5nIG1l bWJlciBzbyBldmVyeSBlbnRyeSB0aGF0CisJCSAqIHJlc29sdmVzIHRocm91Z2ggaXQgc3Rp bGwgcmVhY2hlcyB0aGUgbGl2ZSB0dXBsZS4gIElmIG5vIHN1cnZpdm9yCisJCSAqIHJlbWFp bnMsIHRoZSByZWRpcmVjdCBpcyBkYW5nbGluZyBhbmQgaXMgcmVjbGFpbWVkIChMUF9ERUFE LCBvcgorCQkgKiBMUF9VTlVTRUQgaWYgdGhlIGNhbGxlciBhbGxvd3MgaXQpLgogCQkgKi8K KwkJT2Zmc2V0TnVtYmVyIHRhcmdldCA9IEl0ZW1JZEdldFJlZGlyZWN0KHJvb3RscCk7CisJ CU9mZnNldE51bWJlciBsaXZlID0gaGVhcF9wcnVuZV9jaGFpbl9maW5kX2xpdmUocHJzdGF0 ZSwgdGFyZ2V0KTsKKworCQlpZiAoT2Zmc2V0TnVtYmVySXNWYWxpZChsaXZlKSkKKwkJewor CQkJaWYgKGxpdmUgPT0gdGFyZ2V0KQorCQkJCWhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdl ZF9scF9yZWRpcmVjdChwcnN0YXRlLCByb290b2ZmbnVtKTsKKwkJCWVsc2UKKwkJCQloZWFw X3BydW5lX3JlY29yZF9yZWRpcmVjdChwcnN0YXRlLCByb290b2ZmbnVtLCBsaXZlLCBmYWxz ZSk7CisJCQlyZXR1cm47CisJCX0KKwogCQloZWFwX3BydW5lX3JlY29yZF9kZWFkX29yX3Vu dXNlZChwcnN0YXRlLCByb290b2ZmbnVtLCBmYWxzZSk7CiAJCXJldHVybjsKIAl9CkBAIC0x Njc2LDI0ICsxODc0LDE0MyBAQCBwcm9jZXNzX2NoYWluOgogCWVsc2UgaWYgKG5kZWFkY2hh aW4gPT0gbmNoYWluKQogCXsKIAkJLyoKLQkJICogVGhlIGVudGlyZSBjaGFpbiBpcyBkZWFk LiAgTWFyayB0aGUgcm9vdCBsaW5lIHBvaW50ZXIgTFBfREVBRCwgYW5kCi0JCSAqIGZ1bGx5 IHJlbW92ZSB0aGUgb3RoZXIgdHVwbGVzIGluIHRoZSBjaGFpbi4KKwkJICogVGhlIGVudGly ZSBjaGFpbiBpcyBkZWFkLiAgTm8gbGl2ZSB0dXBsZSByZW1haW5zIHRvIGZvcndhcmQgdG8s IHNvCisJCSAqIG1hcmsgdGhlIHJvb3QgTFBfREVBRCAob3IgTFBfVU5VU0VEIGlmIHRoZSBj YWxsZXIgYWxsb3dzIGl0KSBhbmQKKwkJICogcmVjbGFpbSBlYWNoIG1lbWJlci4gIEEgZGVh ZCBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCBtZW1iZXIgbWF5CisJCSAqIHN0aWxsIGhhdmUg YSBzdGFsZSBidHJlZSBsZWFmIHBvaW50aW5nIGF0IGl0OiBtYXJrIGl0IExQX0RFQUQgc28K KwkJICogdGhlIHNsb3QgaXMgcGlubmVkIGFnYWluc3QgcmV1c2UgYW5kIGFkZGVkIHRvIHRo ZSBkZWFkLWl0ZW1zIGFycmF5LAorCQkgKiBsZXR0aW5nIGFtYnVsa2RlbGV0ZSBzd2VlcCB0 aGUgbGVhZiBhbmQgYSBsYXRlciB2YWN1dW0gcmVjbGFpbSB0aGUKKwkJICogbGluZSBwb2lu dGVyLiAgQ2xhc3NpYy1IT1QgbWVtYmVycyBjYXJyeSBubyBsZWFmIG9mIHRoZWlyIG93biBh bmQKKwkJICogZ28gc3RyYWlnaHQgdG8gTFBfVU5VU0VELgogCQkgKi8KIAkJaGVhcF9wcnVu ZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQocHJzdGF0ZSwgcm9vdG9mZm51bSwgSXRlbUlkSXNO b3JtYWwocm9vdGxwKSk7CiAJCWZvciAoaW50IGkgPSAxOyBpIDwgbmNoYWluOyBpKyspCi0J CQloZWFwX3BydW5lX3JlY29yZF91bnVzZWQocHJzdGF0ZSwgY2hhaW5pdGVtc1tpXSwgdHJ1 ZSk7CisJCXsKKwkJCWlmIChoZWFwX3BydW5lX2l0ZW1fcHJlc2VydmVzX2hvdF9pbmRleGVk KHBhZ2UsIGNoYWluaXRlbXNbaV0pKQorCQkJCWhlYXBfcHJ1bmVfcmVjb3JkX2RlYWRfb3Jf dW51c2VkKHByc3RhdGUsIGNoYWluaXRlbXNbaV0sIHRydWUpOworCQkJZWxzZQorCQkJCWhl YXBfcHJ1bmVfcmVjb3JkX3VudXNlZChwcnN0YXRlLCBjaGFpbml0ZW1zW2ldLCB0cnVlKTsK KwkJfQogCX0KIAllbHNlCiAJewogCQkvKgotCQkgKiBXZSBmb3VuZCBhIERFQUQgdHVwbGUg aW4gdGhlIGNoYWluLiAgUmVkaXJlY3QgdGhlIHJvb3QgbGluZSBwb2ludGVyCi0JCSAqIHRv IHRoZSBmaXJzdCBub24tREVBRCB0dXBsZSwgYW5kIG1hcmsgYXMgdW51c2VkIGVhY2ggaW50 ZXJtZWRpYXRlCi0JCSAqIGl0ZW0gdGhhdCB3ZSBhcmUgYWJsZSB0byByZW1vdmUgZnJvbSB0 aGUgY2hhaW4uCisJCSAqIFRoZSBjaGFpbiBoYXMgYSBkZWFkIHByZWZpeCBmb2xsb3dlZCBi eSBhIGxpdmUgcmVtYWluZGVyLiAgQ29sbGFwc2UKKwkJICogaXQgd2l0aCBQSE9ULXN0eWxl IGtleSB0dXBsZXMgc28gdGhhdCB0aGUgcGVyLWhvcCBtb2RpZmllZC1hdHRycworCQkgKiBi aXRtYXBzIHN1cnZpdmUgZm9yIHRoZSBiaXRtYXAtb3ZlcmxhcCByZWFkIHBhdGguCisJCSAq CisJCSAqIFdhbGsgdGhlIGRlYWQgbWVtYmVycyBmcm9tIHRoZSBsaXZlIGVuZCBiYWNrd2Fy ZHMsIGFjY3VtdWxhdGluZyBpbgorCQkgKiBsYXRlcmF0dHJzIHRoZSB1bmlvbiBvZiB0aGUg bW9kaWZpZWQtYXR0cnMgYml0bWFwcyBvZiB0aGUgbWVtYmVycworCQkgKiB0aGF0IGZvbGxv dyAodGhlICJsYXRlciBob3BzIikuICBBIGRlYWQga2V5IHR1cGxlIC0tIG9uZSB0aGF0CisJ CSAqIGNhcnJpZWQgaXRzIG93biBpbmRleCBlbnRyaWVzIGJlY2F1c2UgaXQgY2hhbmdlZCBh biBpbmRleGVkCisJCSAqIGF0dHJpYnV0ZSBhdCBpdHMgaG9wIChoZWFwX3BydW5lX2l0ZW1f cHJlc2VydmVzX2hvdF9pbmRleGVkKSAtLSBpcworCQkgKiBkaXNwb3NlZCBvZiBhcyBmb2xs b3dzOgorCQkgKgorCQkgKiAtIElmIGV2ZXJ5IGF0dHJpYnV0ZSBpdCBjaGFuZ2VkIHdhcyBj aGFuZ2VkIGFnYWluIGJ5IGEgbGF0ZXIgaG9wCisJCSAqIChpdHMgYml0bWFwIGlzIGEgc3Vi c2V0IG9mIGxhdGVyYXR0cnMpLCBldmVyeSBpbmRleCBlbnRyeSBwb2ludGluZworCQkgKiBh dCBpdCBpcyBzdXBlcnNlZGVkLCBzbyBubyBsaXZlIGVudHJ5IHJlZmVyZW5jZXMgaXQ6IHJl Y2xhaW0gaXQKKwkJICogKExQX0RFQUQpLCB3aGljaCBsZXRzIHRoaXMgdmFjdXVtJ3MgaW5k ZXggcGFzcyBzd2VlcCBpdHMgbm93LXN0YWxlCisJCSAqIGxlYXZlcyBhbmQgYSBsYXRlciBw YXNzIGZyZWUgdGhlIGxpbmUgcG9pbnRlci4gIFRoaXMgbG9zZXMgbm8KKwkJICogcGVyLWhv cCBpbmZvcm1hdGlvbiBmb3IgcmVhZGVycyAtLSBpdHMgYXR0cmlidXRlcyBhcmUgYWxyZWFk eQorCQkgKiBjYXJyaWVkIGJ5IHRoZSBzdXJ2aXZpbmcgbGF0ZXIgbWVtYmVycyB0aGUgcmVh ZGVyIHN0aWxsIGNyb3NzZXMuCisJCSAqCisJCSAqIC0gT3RoZXJ3aXNlIGl0IGludHJvZHVj ZWQgYW4gYXR0cmlidXRlIG5vdCBjaGFuZ2VkIGFnYWluLCBzbyBhIGxpdmUKKwkJICogZW50 cnkgc3RpbGwgcG9pbnRzIGF0IGl0OiBrZWVwIGl0IGFzIGFuIHhpZC1mcmVlIHN0dWIgZm9y d2FyZGluZyB0bworCQkgKiB0aGUgbmV4dCBzdXJ2aXZvciwgcHJlc2VydmluZyBpdHMgaW5s aW5lIGJpdG1hcCBmb3IgdGhlIHJlYWQgcGF0aC4KKwkJICoKKwkJICogQ2xhc3NpYy1IT1Qg bWVtYmVycyBjYXJyeSBubyBlbnRyeSBvZiB0aGVpciBvd24gYW5kIGFyZSByZWNsYWltZWQK KwkJICogdG8gTFBfVU5VU0VEOyBzdXJ2aXZvcnMgZm9yd2FyZCBwYXN0IHRoZW0uICBUaGUg cm9vdCBpcyByZWRpcmVjdGVkCisJCSAqIHRvIHRoZSBmaXJzdCBzdXJ2aXZvci4gIFN0dWJz IGNhcnJ5IG5vIFhJRHMsIHNvIHRoZSBwYWdlIHN0YXlzCisJCSAqIGZyZWV6ZS1zYWZlOyBi ZWNhdXNlIGVhY2ggZm9yd2FyZHMgdG8gdGhlIG5leHQgc3Vydml2b3IgKG5vdCB0aGUKKwkJ ICogbGl2ZSB0dXBsZSksIGEgcmVhZGVyIGNyb3NzaW5nIHRoZSBjb2xsYXBzZWQgcHJlZml4 IHNlZXMgZXZlcnkKKwkJICogc3Vydml2aW5nIGhvcCdzIGJpdG1hcCwgYW5kIHN0dWItPnN0 dWIgZm9yd2FyZGluZyBsZXRzIGEgbGF0ZXIKKwkJICogY29sbGFwc2UgZXh0ZW5kIHRoZSBj aGFpbiB3aXRob3V0IHJlLXBvaW50aW5nIGV4aXN0aW5nIHN0dWJzLgogCQkgKi8KLQkJaGVh cF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QocHJzdGF0ZSwgcm9vdG9mZm51bSwgY2hhaW5pdGVt c1tuZGVhZGNoYWluXSwKLQkJCQkJCQkJICAgSXRlbUlkSXNOb3JtYWwocm9vdGxwKSk7Ci0J CWZvciAoaW50IGkgPSAxOyBpIDwgbmRlYWRjaGFpbjsgaSsrKQotCQkJaGVhcF9wcnVuZV9y ZWNvcmRfdW51c2VkKHByc3RhdGUsIGNoYWluaXRlbXNbaV0sIHRydWUpOworCQlPZmZzZXRO dW1iZXIgZmlyc3RfbGl2ZSA9IGNoYWluaXRlbXNbbmRlYWRjaGFpbl07CisJCU9mZnNldE51 bWJlciBuZXh0X3N1cnZpdm9yID0gZmlyc3RfbGl2ZTsKKwkJT2Zmc2V0TnVtYmVyIHJvb3Rf dGFyZ2V0OworCQlpbnQJCQlyZWxuYXR0cyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZBdHRyaWJ1 dGVzKHByc3RhdGUtPnJlbGF0aW9uKTsKKwkJdWludDgJCWxhdGVyYXR0cnNbKE1heEhlYXBB dHRyaWJ1dGVOdW1iZXIgKyA3KSAvIDhdOworCisJCS8qCisJCSAqIGxhdGVyYXR0cnMgYWNj dW11bGF0ZXMgZXZlcnkgc3Vydml2aW5nIGhvcCdzIG1vZGlmaWVkIGF0dHJpYnV0ZXMuCisJ CSAqIFNpemUgaXQgZm9yIHRoZSByZWxhdGlvbidzIGN1cnJlbnQgbmF0dHMgKHRoZSBtYXhp bXVtKTsgZWFjaAorCQkgKiBjb250cmlidXRpbmcgdHVwbGUncyBiaXRtYXAgaXMgbG9jYXRl ZCBhbmQgT1ItZWQgdXNpbmcgdGhhdCB0dXBsZSdzCisJCSAqIHdyaXRlLXRpbWUgbmF0dHMg KEhvdEluZGV4ZWRUdXBsZUJpdG1hcE5hdHRzKSwgc2luY2UgQUREIENPTFVNTiBtYXkKKwkJ ICogaGF2ZSBncm93biB0aGUgcmVsYXRpb24gc2luY2Ugc29tZSBob3BzIHdlcmUgd3JpdHRl bi4KKwkJICovCisJCW1lbXNldChsYXRlcmF0dHJzLCAwLCBIb3RJbmRleGVkQml0bWFwQnl0 ZXMocmVsbmF0dHMpKTsKKwkJZm9yIChpbnQgaSA9IG5kZWFkY2hhaW47IGkgPCBuY2hhaW47 IGkrKykKKwkJeworCQkJSXRlbUlkCQlscCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgY2hhaW5p dGVtc1tpXSk7CisJCQlIZWFwVHVwbGVIZWFkZXIgaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIp IFBhZ2VHZXRJdGVtKHBhZ2UsIGxwKTsKKworCQkJaWYgKChodHVwLT50X2luZm9tYXNrMiAm IEhFQVBfSU5ERVhFRF9VUERBVEVEKSAhPSAwKQorCQkJeworCQkJCWludAkJCWJtbmF0dHMg PSBIb3RJbmRleGVkVHVwbGVCaXRtYXBOYXR0cyhodHVwKTsKKworCQkJCS8qCisJCQkJICog QSBob3AncyB3cml0ZS10aW1lIG5hdHRzIGNhbiBuZXZlciBsZWdpdGltYXRlbHkgZXhjZWVk IHRoZQorCQkJCSAqIHJlbGF0aW9uJ3MgY3VycmVudCBuYXR0cyAobmF0dHMgb25seSBncm93 cyB2aWEgQUREIENPTFVNTikuCisJCQkJICogT24gYSBjb3JydXB0IHBhZ2UgYSBzdHViJ3Mg dW5ib3VuZGVkIHN0YXNoZWQgbmF0dHMgKG9yIGEKKwkJCQkgKiBjb3JydXB0IGxpdmUgdHVw bGUncyBuYXR0cyBmaWVsZCkgY291bGQgb3RoZXJ3aXNlIG92ZXJmbG93CisJCQkJICogbGF0 ZXJhdHRycywgd2hpY2ggaXMgc2l6ZWQgZm9yIHJlbG5hdHRzOyBjbGFtcCBkZWZlbnNpdmVs eS4KKwkJCQkgKi8KKwkJCQlBc3NlcnQoYm1uYXR0cyA8PSByZWxuYXR0cyk7CisJCQkJaWYg KGJtbmF0dHMgPiByZWxuYXR0cykKKwkJCQkJYm1uYXR0cyA9IHJlbG5hdHRzOworCisJCQkJ SG90SW5kZXhlZEJpdG1hcFVuaW9uKGxhdGVyYXR0cnMsCisJCQkJCQkJCQkgIEhvdEluZGV4 ZWRHZXRNb2RpZmllZEJpdG1hcChodHVwLAorCQkJCQkJCQkJCQkJCQkJICBJdGVtSWRHZXRM ZW5ndGgobHApLAorCQkJCQkJCQkJCQkJCQkJICBibW5hdHRzKSwKKwkJCQkJCQkJCSAgYm1u YXR0cyk7CisJCQl9CisJCX0KKworCQkvKiBkZWFkIHByZWZpeDogcmVjbGFpbSBzdXBlcnNl ZGVkIG1lbWJlcnMsIHN0dWIgdGhlIHJlc3QgKi8KKwkJZm9yIChpbnQgaSA9IG5kZWFkY2hh aW4gLSAxOyBpID49IDE7IGktLSkKKwkJeworCQkJaWYgKGhlYXBfcHJ1bmVfaXRlbV9wcmVz ZXJ2ZXNfaG90X2luZGV4ZWQocGFnZSwgY2hhaW5pdGVtc1tpXSkpCisJCQl7CisJCQkJSXRl bUlkCQlscCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgY2hhaW5pdGVtc1tpXSk7CisJCQkJSGVh cFR1cGxlSGVhZGVyIGh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdl LCBscCk7CisJCQkJaW50CQkJYm1uYXR0cyA9IEhvdEluZGV4ZWRUdXBsZUJpdG1hcE5hdHRz KGh0dXApOworCQkJCWNvbnN0IHVpbnQ4ICphdHRyczsKKworCQkJCS8qIFNlZSB0aGUgY29t bWVudCBhYm92ZSBsYXRlcmF0dHJzJyBmaXJzdCB1c2UuICovCisJCQkJQXNzZXJ0KGJtbmF0 dHMgPD0gcmVsbmF0dHMpOworCQkJCWlmIChibW5hdHRzID4gcmVsbmF0dHMpCisJCQkJCWJt bmF0dHMgPSByZWxuYXR0czsKKwkJCQlhdHRycyA9IEhvdEluZGV4ZWRHZXRNb2RpZmllZEJp dG1hcChodHVwLAorCQkJCQkJCQkJCQkJCSBJdGVtSWRHZXRMZW5ndGgobHApLAorCQkJCQkJ CQkJCQkJCSBibW5hdHRzKTsKKworCQkJCWlmIChIb3RJbmRleGVkQml0bWFwSXNTdWJzZXQo YXR0cnMsIGxhdGVyYXR0cnMsIGJtbmF0dHMpKQorCQkJCQloZWFwX3BydW5lX3JlY29yZF9k ZWFkX29yX3VudXNlZChwcnN0YXRlLCBjaGFpbml0ZW1zW2ldLCB0cnVlKTsKKwkJCQllbHNl CisJCQkJeworCQkJCQloZWFwX3BydW5lX3JlY29yZF9zdHViKHByc3RhdGUsIGNoYWluaXRl bXNbaV0sIG5leHRfc3Vydml2b3IpOworCQkJCQluZXh0X3N1cnZpdm9yID0gY2hhaW5pdGVt c1tpXTsKKwkJCQl9CisJCQkJSG90SW5kZXhlZEJpdG1hcFVuaW9uKGxhdGVyYXR0cnMsIGF0 dHJzLCBibW5hdHRzKTsKKwkJCX0KKwkJCWVsc2UKKwkJCQloZWFwX3BydW5lX3JlY29yZF91 bnVzZWQocHJzdGF0ZSwgY2hhaW5pdGVtc1tpXSwgdHJ1ZSk7CisJCX0KKworCQlyb290X3Rh cmdldCA9IG5leHRfc3Vydml2b3I7CisKKwkJLyoKKwkJICogcm9vdCAtPiBmaXJzdCBzdXJ2 aXZvciAoc2tpcCBhIHJlZHVuZGFudCBuby1vcCByZWRpcmVjdCBvbgorCQkgKiByZS1wcnVu ZSkKKwkJICovCisJCWlmIChJdGVtSWRJc1JlZGlyZWN0ZWQocm9vdGxwKSAmJgorCQkJSXRl bUlkR2V0UmVkaXJlY3Qocm9vdGxwKSA9PSByb290X3RhcmdldCkKKwkJCWhlYXBfcHJ1bmVf cmVjb3JkX3VuY2hhbmdlZF9scF9yZWRpcmVjdChwcnN0YXRlLCByb290b2ZmbnVtKTsKKwkJ ZWxzZQorCQkJaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QocHJzdGF0ZSwgcm9vdG9mZm51 bSwgcm9vdF90YXJnZXQsCisJCQkJCQkJCQkgICBJdGVtSWRJc05vcm1hbChyb290bHApKTsK IAogCQkvKiB0aGUgcmVzdCBvZiB0dXBsZXMgaW4gdGhlIGNoYWluIGFyZSBub3JtYWwsIHVu Y2hhbmdlZCB0dXBsZXMgKi8KIAkJZm9yIChpbnQgaSA9IG5kZWFkY2hhaW47IGkgPCBuY2hh aW47IGkrKykKQEAgLTE3MzgsNiArMjA1NSwzNCBAQCBoZWFwX3BydW5lX3JlY29yZF9yZWRp cmVjdChQcnVuZVN0YXRlICpwcnN0YXRlLAogCSAqIHNlcGFyYXRlbHkgYXMgYW4gdW5jaGFu Z2VkIHR1cGxlLgogCSAqLwogCisJLyoKKwkgKiBJZiB0aGUgcmVkaXJlY3QgcG9pbnRzIGF0 IGEgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgbGl2ZSB0dXBsZSwgdGhlCisJICogcGFnZSBt YXkgc3RpbGwgY2Fycnkgc3RhbGUgYnRyZWUgZW50cmllcyB0aGF0IHJlc29sdmUgdGhyb3Vn aCB0aGlzCisJICogcmVkaXJlY3QgdG8gYSB0dXBsZSB3aXRoIGEgZGlmZmVyZW50IGtleS4g IFN1Y2ggZW50cmllcyBhcmUgZmlsdGVyZWQgYnkKKwkgKiB0aGUgcmVhZCBwYXRoJ3MgY3Jv c3NlZC1hdHRyaWJ1dGUgYml0bWFwLCB3aGljaCByZXF1aXJlcyBmZXRjaGluZyB0aGUKKwkg KiBoZWFwIHR1cGxlIC0tIGJ1dCBhbiBpbmRleC1vbmx5IHNjYW4gdHJ1c3RzIHRoZSB2aXNp YmlsaXR5IG1hcCBhbmQgc2tpcHMKKwkgKiB0aGF0IGZldGNoLiAgU28KKwkgKiB0aGUgcGFn ZSBtdXN0IG5vdCBiZSByZXBvcnRlZCBhbGwtdmlzaWJsZS9hbGwtZnJvemVuIHdoaWxlIHN1 Y2ggYQorCSAqIHJlZGlyZWN0IGV4aXN0czsgaXQgYmVjb21lcyBlbGlnaWJsZSBhZ2FpbiBv bmx5IG9uY2UgdmFjdXVtIGhhcyBzd2VwdAorCSAqIHRoZSBzdGFsZSBsZWF2ZXMgYW5kIHJl Y2xhaW1lZCB0aGUgcmVkaXJlY3QuCisJICovCisJaWYgKHJkb2ZmbnVtID49IEZpcnN0T2Zm c2V0TnVtYmVyICYmCisJCXJkb2ZmbnVtIDw9IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocHJz dGF0ZS0+cGFnZSkpCisJeworCQlJdGVtSWQJCXRscCA9IFBhZ2VHZXRJdGVtSWQocHJzdGF0 ZS0+cGFnZSwgcmRvZmZudW0pOworCisJCWlmIChJdGVtSWRJc05vcm1hbCh0bHApKQorCQl7 CisJCQlIZWFwVHVwbGVIZWFkZXIgdGh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0 SXRlbShwcnN0YXRlLT5wYWdlLCB0bHApOworCisJCQlpZiAoKHRodHVwLT50X2luZm9tYXNr MiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSAhPSAwKQorCQkJeworCQkJCXByc3RhdGUtPnNl dF9hbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJCXByc3RhdGUtPnNldF9hbGxfZnJvemVuID0g ZmFsc2U7CisJCQl9CisJCX0KKwl9CisKIAlBc3NlcnQocHJzdGF0ZS0+bnJlZGlyZWN0ZWQg PCBNYXhIZWFwVHVwbGVzUGVyUGFnZSk7CiAJcHJzdGF0ZS0+cmVkaXJlY3RlZFtwcnN0YXRl LT5ucmVkaXJlY3RlZCAqIDJdID0gb2ZmbnVtOwogCXByc3RhdGUtPnJlZGlyZWN0ZWRbcHJz dGF0ZS0+bnJlZGlyZWN0ZWQgKiAyICsgMV0gPSByZG9mZm51bTsKQEAgLTE3NTUsNiArMjEw MCw2NSBAQCBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdChQcnVuZVN0YXRlICpwcnN0YXRl LAogCXByc3RhdGUtPmhhc3R1cCA9IHRydWU7CiB9CiAKKy8qCisgKiBSZWNvcmQgYSBsaW5l IHBvaW50ZXIgdG8gYmUgcmV3cml0dGVuIGluIHBsYWNlIGFzIGEgSE9ULXNlbGVjdGl2ZWx5 LXVwZGF0ZWQKKyAqIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIgZm9yd2FyZGluZyB0byAnZm9y d2FyZCcuCisgKgorICogVGhlIHNvdXJjZSBtdXN0IGJlIGEgZGVhZCBoZWFwLW9ubHkgdHVw bGUgdGhhdCBjYXJyaWVkIGl0cyBvd24gYnRyZWUKKyAqIGVudHJpZXMgKGEga2V5IHR1cGxl KSBhbmQgc28gY2Fubm90IGJlIHJlY2xhaW1lZCBvdXRyaWdodDogYSBzdGFsZSBlbnRyeSBt YXkKKyAqIHN0aWxsIHJlc29sdmUgdGhyb3VnaCBpdC4gIFJld3JpdGluZyBpdCBpbnRvIGFu IHhpZC1mcmVlIHN0dWIga2VlcHMgdGhlCisgKiBmb3J3YXJkIGxpbmsgYW5kIHRoZSB0dXBs ZSdzIGlubGluZSBtb2RpZmllZC1hdHRycyBiaXRtYXAgKHNvIHRoZSByZWFkIHBhdGgKKyAq IGNhbiBqdWRnZSBzdGFsZW5lc3MpIHdoaWxlIGRyb3BwaW5nIGl0cyBYSURzLCB3aGljaCBr ZWVwcyB0aGUgcGFnZQorICogZnJlZXplLXNhZmUuCisgKi8KK3N0YXRpYyB2b2lkCitoZWFw X3BydW5lX3JlY29yZF9zdHViKFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJCSAgIE9mZnNl dE51bWJlciBvZmZudW0sIE9mZnNldE51bWJlciBmb3J3YXJkKQoreworCUFzc2VydCghcHJz dGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pOworCXByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1d ID0gdHJ1ZTsKKworCS8qCisJICogQXMgd2l0aCBhIHJlZGlyZWN0IHRvIGEgSE9ULXNlbGVj dGl2ZWx5LXVwZGF0ZWQgdHVwbGUsIHRoZSBwYWdlIG11c3QKKwkgKiBub3QgYmUgcmVwb3J0 ZWQgYWxsLXZpc2libGUvYWxsLWZyb3plbiB3aGlsZSBhIHN0dWIgZXhpc3RzOiBhbgorCSAq IGluZGV4LW9ubHkgc2NhbiB3b3VsZCBvdGhlcndpc2UgdHJ1c3QgdGhlIFZNIGFuZCBza2lw IHRoZSByZWNoZWNrIHRoYXQKKwkgKiBmaWx0ZXJzIGEgbm93LXN0YWxlIGVudHJ5IHJlc29s dmluZyB0aHJvdWdoIHRoZSBzdHViLiAgQSBzdHViJ3MKKwkgKiBIRUFQX1hNSU5fSU5WQUxJ RCBhbHNvIG1ha2VzIGl0IGludmlzaWJsZSB0byBldmVyeSBzbmFwc2hvdCwgd2hpY2ggYW4K KwkgKiBhbGwtdmlzaWJsZSBwYWdlIG11c3QgbmV2ZXIgY29udGFpbi4gIEVsaWdpYmlsaXR5 IHJldHVybnMgb25jZSB2YWN1dW0KKwkgKiByZWNsYWltcyB0aGUgc3R1Yi4KKwkgKi8KKwlw cnN0YXRlLT5zZXRfYWxsX3Zpc2libGUgPSBmYWxzZTsKKwlwcnN0YXRlLT5zZXRfYWxsX2Zy b3plbiA9IGZhbHNlOworCisJQXNzZXJ0KHByc3RhdGUtPm5zdHVicyA8IE1heEhlYXBUdXBs ZXNQZXJQYWdlKTsKKwlwcnN0YXRlLT5zdHVic1twcnN0YXRlLT5uc3R1YnMgKiAyXSA9IG9m Zm51bTsKKwlwcnN0YXRlLT5zdHVic1twcnN0YXRlLT5uc3R1YnMgKiAyICsgMV0gPSBmb3J3 YXJkOworCXByc3RhdGUtPm5zdHVicysrOworCisJLyogVGhlIGRlYWQga2V5IHR1cGxlJ3Mg c3RvcmFnZSBpcyBiZWluZyBkaXNjYXJkZWQ7IGNvdW50IGl0IHJlbW92ZWQuICovCisJcHJz dGF0ZS0+bmRlbGV0ZWQrKzsKKworCXByc3RhdGUtPmhhc3R1cCA9IHRydWU7Cit9CisKKy8q CisgKiBSZWNvcmQgYW4gZXhpc3RpbmcgY29sbGFwc2Utc3Vydml2b3Igc3R1YiB0aGF0IGlz IHRvIGJlIGxlZnQgdW5jaGFuZ2VkLgorICoKKyAqIEVuY291bnRlcmVkIHdoZW4gcmUtcHJ1 bmluZyBhIHBhZ2UgdGhhdCBhbHJlYWR5IGhvbGRzIHN0dWJzIGZyb20gYW4gZWFybGllcgor ICogY29sbGFwc2UuICBUaGUgc3R1YiBpcyBwcmVzZXJ2ZWQgKGl0cyBiaXRtYXAgaXMgc3Rp bGwgbmVlZGVkKSBhbmQgY291bnRzIGFzCisgKiBhIHJlYXNvbiB0aGUgcGFnZSBjYW5ub3Qg YmUgcmVwb3J0ZWQgYWxsLXZpc2libGUvYWxsLWZyb3plbi4KKyAqLworc3RhdGljIHZvaWQK K2hlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9zdHViKFBydW5lU3RhdGUgKnByc3Rh dGUsIE9mZnNldE51bWJlciBvZmZudW0pCit7CisJQXNzZXJ0KCFwcnN0YXRlLT5wcm9jZXNz ZWRbb2ZmbnVtXSk7CisJcHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0gPSB0cnVlOworCXBy c3RhdGUtPmhhc3R1cCA9IHRydWU7CisKKwlwcnN0YXRlLT5zZXRfYWxsX3Zpc2libGUgPSBm YWxzZTsKKwlwcnN0YXRlLT5zZXRfYWxsX2Zyb3plbiA9IGZhbHNlOworfQorCiAvKiBSZWNv cmQgbGluZSBwb2ludGVyIHRvIGJlIG1hcmtlZCBkZWFkICovCiBzdGF0aWMgdm9pZAogaGVh cF9wcnVuZV9yZWNvcmRfZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIg b2ZmbnVtLApAQCAtMTgzNiw2ICsyMjQwLDUyIEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VudXNl ZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtLCBib29sIHdhc19u b3JtCiAJCXByc3RhdGUtPm5kZWxldGVkKys7CiB9CiAKKworLyoKKyAqIGhlYXBfcHJ1bmVf aXRlbV9wcmVzZXJ2ZXNfaG90X2luZGV4ZWQKKyAqCQlUcnVlIGlmZiB0aGUgTFAgYXQgYG9m Zm51bWAgb24gYHBhZ2VgIGlzIGEgbGl2ZSBIT1QtaW5kZXhlZCAoSE9UL1NJVSkKKyAqCQlo ZWFwLW9ubHkgdHVwbGUgd2hvc2UgTFAgbXVzdCBiZSBwcmVzZXJ2ZWQgcmF0aGVyIHRoYW4g cmVjbGFpbWVkIHRvCisgKgkJTFBfVU5VU0VELCBiZWNhdXNlIGEgbm90LXlldC1zd2VwdCBp bmRleCBlbnRyeSBtYXkgc3RpbGwgcG9pbnQgYXQgaXQuCisgKgorICogQSBIT1QtaW5kZXhl ZCB1cGRhdGUgcGxhbnRzIGEgbmV3IGluZGV4IGVudHJ5IHBvaW50aW5nIGF0IHRoZSBoZWFw LW9ubHkKKyAqIHR1cGxlJ3Mgb3duIFRJRC4gIENsYXNzaWMgSE9UJ3MgaW52YXJpYW50IHRo YXQgbWlkLWNoYWluIExQcyBoYXZlIG5vCisgKiBleHRlcm5hbCByZWZlcmVuY2VzIHRoZXJl Zm9yZSBkb2VzIG5vdCBob2xkIGZvciBzdWNoIHR1cGxlczogdW50aWwKKyAqIGFtYnVsa2Rl bGV0ZSBzd2VlcHMgYW55IHN0YWxlIGluZGV4IGVudHJ5LCBhIHJlYWRlciBhcnJpdmluZyB2 aWEgaXQgbXVzdAorICogc3RpbGwgZmluZCBhIHdhbGthYmxlIGhvcCBhdCB0aGUgTFAuICBD aGFpbiBjb2xsYXBzZSBjb252ZXJ0cyBkZWFkIG1lbWJlcnMKKyAqIHRvIExQX1JFRElSRUNU IGZvcndhcmRlcnMgZm9yIGV4YWN0bHkgdGhpcyByZWFzb247IGEgbGl2ZSBtZW1iZXIgbGlr ZSB0aGlzCisgKiBvbmUgbXVzdCBzaW1wbHkgbm90IGJlIHJlY2xhaW1lZCBvdXQgZnJvbSB1 bmRlciBzdWNoIGEgcmVhZGVyLgorICoKKyAqIEV4Y2x1ZGVkIGZyb20gcHJlc2VydmF0aW9u OgorICogICAtIGl0ZW1zIHRoYXQgYXJlIG5vdCBMUF9OT1JNQUwgKFJFRElSRUNULCBERUFE LCBVTlVTRUQpOworICogICAtIHR1cGxlcyB3aXRob3V0IEhFQVBfSU5ERVhFRF9VUERBVEVE IChjbGFzc2ljIEhPVCBjaGFpbiBtZW1iZXJzIG5ldmVyCisgKiAgICAgaGFkIGEgcGVyLXR1 cGxlIGluZGV4IGVudHJ5IHBsYW50ZWQpOworICogICAtIHR1cGxlcyB3aXRoIG5vIGF0dHJp YnV0ZXMgKGRlZmVuc2l2ZTogbm90IGEgcmVhbCBjaGFpbiBtZW1iZXIpOworICogICAtIGFi b3J0ZWQgaGVhcC1vbmx5IHR1cGxlcyAoSEVBUF9YTUlOX0lOVkFMSUQpOiBuZXZlciB2aXNp YmxlIHRocm91Z2ggYW55CisgKiAgICAgaW5kZXggZW50cnksIHNvIHJlY2xhaW1pbmcgdGhl bSBpcyBzYWZlLgorICovCitzdGF0aWMgYm9vbAoraGVhcF9wcnVuZV9pdGVtX3ByZXNlcnZl c19ob3RfaW5kZXhlZChQYWdlIHBhZ2UsIE9mZnNldE51bWJlciBvZmZudW0pCit7CisJSXRl bUlkCQlscCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgb2ZmbnVtKTsKKwlIZWFwVHVwbGVIZWFk ZXIgaHR1cDsKKworCWlmICghSXRlbUlkSXNOb3JtYWwobHApKQorCQlyZXR1cm4gZmFsc2U7 CisKKwlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOwor CisJaWYgKChodHVwLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSA9PSAw KQorCQlyZXR1cm4gZmFsc2U7CisJaWYgKEhlYXBUdXBsZUhlYWRlckdldE5hdHRzKGh0dXAp ID09IDApCisJCXJldHVybiBmYWxzZTsKKwlpZiAoKGh0dXAtPnRfaW5mb21hc2sgJiBIRUFQ X1hNSU5fSU5WQUxJRCkgIT0gMCkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7 Cit9CisKKworCiAvKgogICogUmVjb3JkIGFuIHVudXNlZCBsaW5lIHBvaW50ZXIgdGhhdCBp cyBsZWZ0IHVuY2hhbmdlZC4KICAqLwpAQCAtMjA2OSw4ICsyNTE5LDQ0IEBAIGhlYXBfcHJ1 bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9yZWRpcmVjdChQcnVuZVN0YXRlICpwcnN0YXRlLCBP ZmZzZXROdW1iZXIgb2ZmbnVtCiAJICovCiAJQXNzZXJ0KCFwcnN0YXRlLT5wcm9jZXNzZWRb b2ZmbnVtXSk7CiAJcHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0gPSB0cnVlOworCisJLyoK KwkgKiBBcyBpbiBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdDogaWYgdGhpcyByZWRpcmVj dCBmb3J3YXJkcyB0byBhCisJICogSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgbGl2ZSB0dXBs ZSwgdGhlIHBhZ2UgbWF5IGNhcnJ5IHN0YWxlIGJ0cmVlCisJICogZW50cmllcyB0aGF0IHJl c29sdmUgdGhyb3VnaCBpdCwgc28gaXQgbXVzdCBub3QgYmUgcmVwb3J0ZWQKKwkgKiBhbGwt dmlzaWJsZS9hbGwtZnJvemVuIChhbiBpbmRleC1vbmx5IHNjYW4gd291bGQgb3RoZXJ3aXNl IHNraXAgdGhlCisJICogY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGNoZWNrKS4gIFRoaXMg bXVzdCBoYXBwZW4gaGVyZSB0b28sIG5vdCBvbmx5IHdoZW4gdGhlCisJICogcmVkaXJlY3Qg aXMgZmlyc3QgY3JlYXRlZCwgYmVjYXVzZSBhIHJlLXBydW5lIHJlY29yZHMgYW4gZXhpc3Rp bmcgU0lVCisJICogcmVkaXJlY3QgYXMgdW5jaGFuZ2VkLgorCSAqLworCXsKKwkJSXRlbUlk CQlscCA9IFBhZ2VHZXRJdGVtSWQocHJzdGF0ZS0+cGFnZSwgb2ZmbnVtKTsKKworCQlpZiAo SXRlbUlkSXNSZWRpcmVjdGVkKGxwKSkKKwkJeworCQkJT2Zmc2V0TnVtYmVyIHJkb2ZmbnVt ID0gSXRlbUlkR2V0UmVkaXJlY3QobHApOworCisJCQlpZiAocmRvZmZudW0gPj0gRmlyc3RP ZmZzZXROdW1iZXIgJiYKKwkJCQlyZG9mZm51bSA8PSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVy KHByc3RhdGUtPnBhZ2UpKQorCQkJeworCQkJCUl0ZW1JZAkJdGxwID0gUGFnZUdldEl0ZW1J ZChwcnN0YXRlLT5wYWdlLCByZG9mZm51bSk7CisKKwkJCQlpZiAoSXRlbUlkSXNOb3JtYWwo dGxwKSkKKwkJCQl7CisJCQkJCUhlYXBUdXBsZUhlYWRlciB0aHR1cCA9IChIZWFwVHVwbGVI ZWFkZXIpIFBhZ2VHZXRJdGVtKHByc3RhdGUtPnBhZ2UsIHRscCk7CisKKwkJCQkJaWYgKCh0 aHR1cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKKwkJCQkJ eworCQkJCQkJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFsc2U7CisJCQkJCQlwcnN0 YXRlLT5zZXRfYWxsX2Zyb3plbiA9IGZhbHNlOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9 CisJfQogfQogCisKIC8qCiAgKiBQZXJmb3JtIHRoZSBhY3R1YWwgcGFnZSBjaGFuZ2VzIG5l ZWRlZCBieSBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLgogICoKQEAgLTIwODUsMTYg KzI1NzEsMjcgQEAgdm9pZAogaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUoQnVmZmVyIGJ1ZmZl ciwgYm9vbCBscF90cnVuY2F0ZV9vbmx5LAogCQkJCQkJT2Zmc2V0TnVtYmVyICpyZWRpcmVj dGVkLCBpbnQgbnJlZGlyZWN0ZWQsCiAJCQkJCQlPZmZzZXROdW1iZXIgKm5vd2RlYWQsIGlu dCBuZGVhZCwKLQkJCQkJCU9mZnNldE51bWJlciAqbm93dW51c2VkLCBpbnQgbnVudXNlZCkK KwkJCQkJCU9mZnNldE51bWJlciAqbm93dW51c2VkLCBpbnQgbnVudXNlZCwKKwkJCQkJCU9m ZnNldE51bWJlciAqc3R1YnMsIGludCBuc3R1YnMpCiB7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZl ckdldFBhZ2UoYnVmZmVyKTsKIAlPZmZzZXROdW1iZXIgKm9mZm51bTsKIAlIZWFwVHVwbGVI ZWFkZXIgaHR1cCBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CiAKIAkvKiBTaG91bGRuJ3Qg YmUgY2FsbGVkIHVubGVzcyB0aGVyZSdzIHNvbWV0aGluZyB0byBkbyAqLwotCUFzc2VydChu cmVkaXJlY3RlZCA+IDAgfHwgbmRlYWQgPiAwIHx8IG51bnVzZWQgPiAwKTsKKwlBc3NlcnQo bnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCB8fCBuc3R1YnMg PiAwKTsKIAotCS8qIElmICdscF90cnVuY2F0ZV9vbmx5Jywgd2UgY2FuIG9ubHkgcmVtb3Zl IGFscmVhZHktZGVhZCBsaW5lIHBvaW50ZXJzICovCisJLyoKKwkgKiBJZiAnbHBfdHJ1bmNh dGVfb25seScsIHdlIGNhbiBvbmx5IHJlbW92ZSBhbHJlYWR5LWRlYWQgbGluZSBwb2ludGVy cworCSAqIGFuZCBjYW5ub3QgcmUtcG9pbnQgcmVkaXJlY3RzOiByZXBvaW50aW5nIG1vdmVz IHRoZSB0dXBsZSBhbiBpbmRleC1vbmx5CisJICogc2NhbiBvciBhIGNvbmN1cnJlbnQgY2hh aW4gd2FsayBleHBlY3RzIHRvIGZpbmQsIHdoaWNoIG5lZWRzIGEgY2xlYW51cAorCSAqIGxv Y2sgKHNlZSB0aGUgZmlsZSBoZWFkZXIgY29tbWVudCkuICBObyBwcm9kdWNlciBpbiB0aGlz IHNlcmllcyBjYWxscworCSAqIHdpdGggbHBfdHJ1bmNhdGVfb25seSBzZXQgYW5kIGEgbm9u emVybyBucmVkaXJlY3RlZCAtLSB2YWN1dW0ncyBzZWNvbmQKKwkgKiBwYXNzICh0aGUgbHBf dHJ1bmNhdGVfb25seSBjYWxsZXIpIG5ldmVyIHJlLXBvaW50cyBhIHJlZGlyZWN0IGl0c2Vs ZiwKKwkgKiBsZWF2aW5nIHRoYXQgdG8gYSBsYXRlciBwcnVuZSB0aGF0IGhvbGRzIGEgY2xl YW51cCBsb2NrIC0tIHNvIGtlZXAKKwkgKiB1cHN0cmVhbSdzIHN0cmljdGVyIGFzc2VydGlv biByYXRoZXIgdGhhbiB0aGUgd2Vha2VyIG9uZSB0aGlzIHdvdWxkCisJICogb3RoZXJ3aXNl IG5lZWQgdG8ganVzdGlmeS4KKwkgKi8KIAlBc3NlcnQoIWxwX3RydW5jYXRlX29ubHkgfHwg KG5yZWRpcmVjdGVkID09IDAgJiYgbmRlYWQgPT0gMCkpOwogCiAJLyogVXBkYXRlIGFsbCBy ZWRpcmVjdGVkIGxpbmUgcG9pbnRlcnMgKi8KQEAgLTIxMDYsNiArMjYwMywxNiBAQCBoZWFw X3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29sIGxwX3RydW5jYXRlX29u bHksCiAJCUl0ZW1JZAkJZnJvbWxwID0gUGFnZUdldEl0ZW1JZChwYWdlLCBmcm9tb2ZmKTsK IAkJSXRlbUlkCQl0b2xwIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKIAorCQkvKgorCQkg KiBBIHJlZHVuZGFudCByZWRpcmVjdCAodGhlIExQIGFscmVhZHkgcmVkaXJlY3RzIHRvIHRv b2ZmKSBpcyBhCisJCSAqIGhhcm1sZXNzIG5vLW9wLiAgVGhpcyBhcmlzZXMgd2hlbiBhIEhP VC1pbmRleGVkIGNoYWluIHRoYXQgd2FzCisJCSAqIGFscmVhZHkgY29sbGFwc2VkIGlzIHJl LXBydW5lZCBhbmQgdGhlIHJvb3Qgc3RpbGwgcmVzb2x2ZXMgdG8gdGhlCisJCSAqIHNhbWUg dGFyZ2V0OyBza2lwIGl0IHNvIHRoZSBhcHBseSBzdGF5cyBpZGVtcG90ZW50IG9uIGJvdGgg cHJpbWFyeQorCQkgKiBhbmQgcmVwbGF5LgorCQkgKi8KKwkJaWYgKEl0ZW1JZElzUmVkaXJl Y3RlZChmcm9tbHApICYmIEl0ZW1JZEdldFJlZGlyZWN0KGZyb21scCkgPT0gdG9vZmYpCisJ CQljb250aW51ZTsKKwogI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKIAogCQkvKgpAQCAt MjEyMCw3ICsyNjI3LDE2IEBAIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1ZmZlciBidWZm ZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwKIAkJCUFzc2VydChJdGVtSWRIYXNTdG9yYWdl KGZyb21scCkgJiYgSXRlbUlkSXNOb3JtYWwoZnJvbWxwKSk7CiAKIAkJCWh0dXAgPSAoSGVh cFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBmcm9tbHApOwotCQkJQXNzZXJ0KCFI ZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KGh0dXApKTsKKworCQkJLyoKKwkJCSAqIFRoZSBy ZWRpcmVjdCBzb3VyY2UgaXMgbm9ybWFsbHkgdGhlIG5vbi1oZWFwLW9ubHkgY2hhaW4gcm9v dC4gQQorCQkJICogSE9UL1NJVSBjaGFpbiBjb2xsYXBzZSBhZGRpdGlvbmFsbHkgcmVkaXJl Y3RzIGRlYWQgaGVhcC1vbmx5CisJCQkgKiBtZW1iZXJzIHRoYXQgY2FycmllZCB0aGVpciBv d24gYnRyZWUgZW50cnkgdG8gdGhlIGxpdmUgdHVwbGUsCisJCQkgKiBzbyBhIGhlYXAtb25s eSByZWRpcmVjdCBzb3VyY2UgaXMgYWxsb3dlZCB3aGVuIGl0IGlzCisJCQkgKiBIT1Qtc2Vs ZWN0aXZlbHktdXBkYXRlZCAoSEVBUF9JTkRFWEVEX1VQREFURUQpLgorCQkJICovCisJCQlB c3NlcnQoIUhlYXBUdXBsZUhlYWRlcklzSGVhcE9ubHkoaHR1cCkgfHwKKwkJCQkgICAoaHR1 cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCk7CiAJCX0KIAkJ ZWxzZQogCQl7CkBAIC0yMTQ4LDEyICsyNjY0LDU1IEBAIGhlYXBfcGFnZV9wcnVuZV9leGVj dXRlKEJ1ZmZlciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwKIAkJdG9scCA9IFBh Z2VHZXRJdGVtSWQocGFnZSwgdG9vZmYpOwogCQlBc3NlcnQoSXRlbUlkSGFzU3RvcmFnZSh0 b2xwKSAmJiBJdGVtSWRJc05vcm1hbCh0b2xwKSk7CiAJCWh0dXAgPSAoSGVhcFR1cGxlSGVh ZGVyKSBQYWdlR2V0SXRlbShwYWdlLCB0b2xwKTsKKwkJLyogQSByZWRpcmVjdCB0YXJnZXRz IHRoZSBmaXJzdCBzdXJ2aXZpbmcgbWVtYmVyOiBhIGhlYXAtb25seSB0dXBsZS4gKi8KIAkJ QXNzZXJ0KEhlYXBUdXBsZUhlYWRlcklzSGVhcE9ubHkoaHR1cCkpOwogI2VuZGlmCiAKIAkJ SXRlbUlkU2V0UmVkaXJlY3QoZnJvbWxwLCB0b29mZik7CiAJfQogCisJLyoKKwkgKiBSZXdy aXRlIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWJzIGluIHBsYWNlLiAgRWFjaCAob2Zmc2V0LCBm b3J3YXJkKSBwYWlyCisJICogbmFtZXMgYSBkZWFkIGtleSB0dXBsZSB0byBiZSB0dXJuZWQg aW50byBhbiB4aWQtZnJlZSBmb3J3YXJkaW5nIHN0dWI6CisJICogcGVybWFuZW50bHkgaW52 aXNpYmxlIChIRUFQX1hNSU5fSU5WQUxJRHxIRUFQX1hNQVhfSU5WQUxJRCksIGZsYWdnZWQK KwkgKiBIRUFQX0lOREVYRURfVVBEQVRFRCB3aXRoIG5hdHRzID09IDAgc28gY29uc3VtZXJz IHJlY29nbmlzZSBpdCBhcyBhCisJICogc3R1YiByYXRoZXIgdGhhbiBhIHR1cGxlLCBoZWFw LW9ubHkgcHJlc2VydmVkIHNvIGl0IHJlbWFpbnMgYSB2YWxpZAorCSAqIHJlZGlyZWN0L2Zv cndhcmQgdGFyZ2V0LCBhbmQgdF9jdGlkLm9mZm51bSBzZXQgdG8gdGhlIGZvcndhcmQgb2Zm c2V0LgorCSAqIFRoZSBpdGVtJ3Mgc3RvcmFnZSAoaW5jbHVkaW5nIGl0cyBpbmxpbmUgbW9k aWZpZWQtYXR0cnMgYml0bWFwIGluIHRoZQorCSAqIGZpbmFsIGJ5dGVzKSBpcyBsZWZ0IHVu ZGlzdHVyYmVkLCBzbyB0aGUgYml0bWFwIHN1cnZpdmVzIGFuZCBuZWVkIG5vdAorCSAqIGJl IGNhcnJpZWQgaW4gV0FMLgorCSAqLworCW9mZm51bSA9IHN0dWJzOworCWZvciAoaW50IGkg PSAwOyBpIDwgbnN0dWJzOyBpKyspCisJeworCQlPZmZzZXROdW1iZXIgb2ZmID0gKm9mZm51 bSsrOworCQlPZmZzZXROdW1iZXIgZm9yd2FyZCA9ICpvZmZudW0rKzsKKwkJSXRlbUlkCQls cCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgb2ZmKTsKKwkJSGVhcFR1cGxlSGVhZGVyIHR1cDsK KwkJaW50CQkJYml0bWFwX25hdHRzOworCisJCUFzc2VydChJdGVtSWRJc05vcm1hbChscCkp OworCQl0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisK KwkJLyoKKwkJICogUHJlc2VydmUgdGhlIHR1cGxlJ3Mgd3JpdGUtdGltZSBuYXR0cyBiZWZv cmUgd2Ugb3ZlcndyaXRlIHRoZSBuYXR0cworCQkgKiBmaWVsZCB3aXRoIHRoZSBzdHViIHNl bnRpbmVsICgwKTogdGhlIHRyYWlsaW5nIG1vZGlmaWVkLWF0dHJzIGJpdG1hcAorCQkgKiB3 YXMgc2l6ZWQgd2l0aCBpdCwgYW5kIHJlYWRlcnMgbmVlZCBpdCB0byBsb2NhdGUgdGhlIGJp dG1hcCB3aGVuIHRoZQorCQkgKiByZWxhdGlvbidzIGN1cnJlbnQgbmF0dHMgaGFzIHNpbmNl IGdyb3duIChBREQgQ09MVU1OKS4gIFRoZSBzdHViJ3MKKwkJICogdF9jdGlkIG9mZnNldCBo YWxmIGhvbGRzIHRoZSBmb3J3YXJkIGxpbms7IHRoZSBibG9jayBoYWxmIGlzIHVudXNlZAor CQkgKiBmb3IgYSBzdHViLCBzbyBzdGFzaCB0aGUgbmF0dHMgdGhlcmUuICBUaGlzIHJ1bnMg aWRlbnRpY2FsbHkgb24gdGhlCisJCSAqIHByaW1hcnkgYW5kIGluIHJlZG8gKHRoZSBwcmUt c3R1YiB0dXBsZSBpcyBvbiBib3RoIHBhZ2VzKSwgc28gbm8gV0FMCisJCSAqIGNoYW5nZSBp cyBuZWVkZWQuCisJCSAqLworCQliaXRtYXBfbmF0dHMgPSBIZWFwVHVwbGVIZWFkZXJHZXRO YXR0cyh0dXApOworCisJCXR1cC0+dF9pbmZvbWFzayA9IEhFQVBfWE1JTl9JTlZBTElEIHwg SEVBUF9YTUFYX0lOVkFMSUQ7CisJCXR1cC0+dF9pbmZvbWFzazIgPSBIRUFQX09OTFlfVFVQ TEUgfCBIRUFQX0lOREVYRURfVVBEQVRFRDsKKwkJSGVhcFR1cGxlSGVhZGVyU2V0TmF0dHMo dHVwLCAwKTsKKwkJSXRlbVBvaW50ZXJTZXRPZmZzZXROdW1iZXIoJnR1cC0+dF9jdGlkLCBm b3J3YXJkKTsKKwkJSG90SW5kZXhlZFN0dWJTZXRCaXRtYXBOYXR0cyh0dXAsIGJpdG1hcF9u YXR0cyk7CisJfQorCiAJLyogVXBkYXRlIGFsbCBub3ctZGVhZCBsaW5lIHBvaW50ZXJzICov CiAJb2ZmbnVtID0gbm93ZGVhZDsKIAlmb3IgKGludCBpID0gMDsgaSA8IG5kZWFkOyBpKysp CkBAIC0yMTY5LDEyICsyNzI4LDIzIEBAIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1ZmZl ciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwKIAkJICogYW4gaW5kZXguICBUaGlz IHNob3VsZCBuZXZlciBiZSBuZWNlc3Nhcnkgd2l0aCBhbnkgaW5kaXZpZHVhbAogCQkgKiBo ZWFwLW9ubHkgdHVwbGUgaXRlbSwgdGhvdWdoLiAoSXQncyBub3QgY2xlYXIgaG93IG11Y2gg b2YgYSBwcm9ibGVtCiAJCSAqIHRoYXQgd291bGQgYmUsIGJ1dCB0aGVyZSBpcyBubyByZWFz b24gdG8gYWxsb3cgaXQuKQorCQkgKgorCQkgKiBFeGNlcHRpb246IGEgSE9ULWluZGV4ZWQg YWJvcnRlZCBvcnBoYW4gd2hvc2UgY2hhaW4gcm9vdCBpcworCQkgKiB1bnJlYWNoYWJsZSBv biB0aGlzIHBhZ2UgaXMgaW50ZW50aW9uYWxseSBtYXJrZWQgTFBfREVBRCBieSB0aGUKKwkJ ICogaGVhcC1vbmx5LXR1cGxlcyBsb29wIGluIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl IChzZWUgdGhlCisJCSAqIGhlYXBfcHJ1bmVfcmVjb3JkX2RlYWQgY2FsbCB0aGVyZSkuICBU aGUgdHVwbGUgaXMgaGVhcC1vbmx5IChpdCB3YXMKKwkJICogY3JlYXRlZCBieSBhbiBVUERB VEUpIGFuZCBjYXJyaWVzIEhFQVBfSU5ERVhFRF9VUERBVEVEOyB0aGUKKwkJICogYWRqYWNl bnQgYnRyZWUgbGVhZiBpcyBzdGlsbCBsaXZlLCBzbyB3ZSBrZWVwIHRoZSBzbG90IHBpbm5l ZCB2aWEKKwkJICogTFBfREVBRCB1bnRpbCBhbWJ1bGtkZWxldGUgc3dlZXBzIGl0LiAgQSBz dWJzZXF1ZW50IHZhY3V1bSByZWNsYWltcworCQkgKiB0aGUgTFAgdG8gTFBfVU5VU0VELgog CQkgKi8KIAkJaWYgKEl0ZW1JZEhhc1N0b3JhZ2UobHApKQogCQl7CiAJCQlBc3NlcnQoSXRl bUlkSXNOb3JtYWwobHApKTsKIAkJCWh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0 SXRlbShwYWdlLCBscCk7Ci0JCQlBc3NlcnQoIUhlYXBUdXBsZUhlYWRlcklzSGVhcE9ubHko aHR1cCkpOworCQkJQXNzZXJ0KCFIZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KGh0dXApIHx8 CisJCQkJICAgKChodHVwLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSAh PSAwICYmCisJCQkJCUhlYXBUdXBsZUhlYWRlckdldE5hdHRzKGh0dXApID4gMCkpOwogCQl9 CiAJCWVsc2UKIAkJewpAQCAtMjE5Nyw3ICsyNzY3LDcgQEAgaGVhcF9wYWdlX3BydW5lX2V4 ZWN1dGUoQnVmZmVyIGJ1ZmZlciwgYm9vbCBscF90cnVuY2F0ZV9vbmx5LAogCiAJCWlmIChs cF90cnVuY2F0ZV9vbmx5KQogCQl7Ci0JCQkvKiBTZXR0aW5nIExQX0RFQUQgdG8gTFBfVU5V U0VEIGluIHZhY3V1bSdzIHNlY29uZCBwYXNzICovCisJCQkvKiBTZXR0aW5nIExQX0RFQUQg dG8gTFBfVU5VU0VEIGluIHZhY3V1bSdzIHNlY29uZCBwYXNzLiAqLwogCQkJQXNzZXJ0KEl0 ZW1JZElzRGVhZChscCkgJiYgIUl0ZW1JZEhhc1N0b3JhZ2UobHApKTsKIAkJfQogCQllbHNl CkBAIC0yMjA4LDcgKzI3NzgsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIg YnVmZmVyLCBib29sIGxwX3RydW5jYXRlX29ubHksCiAJCQkgKiBpdGVtcyB0byBiZSBtYWRl IExQX1VOVVNFRCBpbnN0ZWFkLiAgVGhpcyBpcyBvbmx5IHBvc3NpYmxlIGlmCiAJCQkgKiB0 aGUgcmVsYXRpb24gaGFzIG5vIGluZGV4ZXMuICBJZiB0aGVyZSBhcmUgYW55IGRlYWQgaXRl bXMsIHRoZW4KIAkJCSAqIG1hcmtfdW51c2VkX25vdyB3YXMgbm90IHRydWUgYW5kIGV2ZXJ5 IGl0ZW0gYmVpbmcgbWFya2VkCi0JCQkgKiBMUF9VTlVTRUQgbXVzdCByZWZlciB0byBhIGhl YXAtb25seSB0dXBsZS4KKwkJCSAqIExQX1VOVVNFRCBtdXN0IHJlZmVyIHRvIGEgaGVhcC1v bmx5IHR1cGxlIHdob3NlIGNoYWluIGhhcyBiZWVuCisJCQkgKiBwcnVuZWQuCiAJCQkgKi8K IAkJCWlmIChuZGVhZCA+IDApCiAJCQl7CkBAIC0yMjg0LDYgKzI4NTUsOCBAQCBwYWdlX3Zl cmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKQogCQlBc3NlcnQoSXRlbUlkSXNOb3JtYWwodGFy Z2l0ZW0pKTsKIAkJQXNzZXJ0KEl0ZW1JZEhhc1N0b3JhZ2UodGFyZ2l0ZW0pKTsKIAkJaHR1 cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIHRhcmdpdGVtKTsKKwor CQkvKiBBIHJlZGlyZWN0IHRhcmdldHMgdGhlIGZpcnN0IHN1cnZpdmluZyBjaGFpbiBtZW1i ZXI6IGhlYXAtb25seS4gKi8KIAkJQXNzZXJ0KEhlYXBUdXBsZUhlYWRlcklzSGVhcE9ubHko aHR1cCkpOwogCX0KICNlbmRpZgpAQCAtMjU4Niw3ICszMTU5LDggQEAgbG9nX2hlYXBfcHJ1 bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJ CSAgSGVhcFR1cGxlRnJlZXplICpmcm96ZW4sIGludCBuZnJvemVuLAogCQkJCQkJICBPZmZz ZXROdW1iZXIgKnJlZGlyZWN0ZWQsIGludCBucmVkaXJlY3RlZCwKIAkJCQkJCSAgT2Zmc2V0 TnVtYmVyICpkZWFkLCBpbnQgbmRlYWQsCi0JCQkJCQkgIE9mZnNldE51bWJlciAqdW51c2Vk LCBpbnQgbnVudXNlZCkKKwkJCQkJCSAgT2Zmc2V0TnVtYmVyICp1bnVzZWQsIGludCBudW51 c2VkLAorCQkJCQkJICBPZmZzZXROdW1iZXIgKnN0dWJzLCBpbnQgbnN0dWJzKQogewogCXhs X2hlYXBfcHJ1bmUgeGxyZWM7CiAJWExvZ1JlY1B0cglyZWNwdHI7CkBAIC0yNjAxLDggKzMx NzUsMTAgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAl4bGhwX3BydW5lX2l0ZW1zIHJlZGlyZWN0X2l0ZW1zOwogCXhs aHBfcHJ1bmVfaXRlbXMgZGVhZF9pdGVtczsKIAl4bGhwX3BydW5lX2l0ZW1zIHVudXNlZF9p dGVtczsKKwl4bGhwX3BydW5lX2l0ZW1zIHN0dWJfaXRlbXM7CiAJT2Zmc2V0TnVtYmVyIGZy el9vZmZzZXRzW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKLQlib29sCQlkb19wcnVuZSA9IG5y ZWRpcmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7CisJYm9vbAkJZG9f cHJ1bmUgPSBucmVkaXJlY3RlZCA+IDAgfHwgbmRlYWQgPiAwIHx8IG51bnVzZWQgPiAwIHx8 CisJCW5zdHVicyA+IDA7CiAJYm9vbAkJZG9fc2V0X3ZtID0gdm1mbGFncyAmIFZJU0lCSUxJ VFlNQVBfVkFMSURfQklUUzsKIAlib29sCQloZWFwX2ZwaV9hbGxvd2VkID0gdHJ1ZTsKIApA QCAtMjY5MCw2ICszMjY2LDE2IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRp b24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwg dW51c2VkLAogCQkJCQkJCXNpemVvZihPZmZzZXROdW1iZXIpICogbnVudXNlZCk7CiAJfQor CWlmIChuc3R1YnMgPiAwKQorCXsKKwkJeGxyZWMuZmxhZ3MgfD0gWExIUF9IQVNfSE9UX0lO REVYRURfU1RVQlM7CisKKwkJc3R1Yl9pdGVtcy5udGFyZ2V0cyA9IG5zdHViczsKKwkJWExv Z1JlZ2lzdGVyQnVmRGF0YSgwLCAmc3R1Yl9pdGVtcywKKwkJCQkJCQlvZmZzZXRvZih4bGhw X3BydW5lX2l0ZW1zLCBkYXRhKSk7CisJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgc3R1YnMs CisJCQkJCQkJc2l6ZW9mKE9mZnNldE51bWJlclsyXSkgKiBuc3R1YnMpOworCX0KIAlpZiAo bmZyb3plbiA+IDApCiAJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgZnJ6X29mZnNldHMsCiAJ CQkJCQkJc2l6ZW9mKE9mZnNldE51bWJlcikgKiBuZnJvemVuKTsKQEAgLTI3MTIsOCArMzI5 OCwxNyBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBC dWZmZXIgYnVmZmVyLAogCQl4bHJlYy5mbGFncyB8PSBYTEhQX0NMRUFOVVBfTE9DSzsKIAll bHNlCiAJewotCQlBc3NlcnQobnJlZGlyZWN0ZWQgPT0gMCAmJiBuZGVhZCA9PSAwKTsKLQkJ LyogYWxzbywgYW55IGl0ZW1zIGluICd1bnVzZWQnIG11c3QndmUgYmVlbiBMUF9ERUFEIHBy ZXZpb3VzbHkgKi8KKwkJLyoKKwkJICogV2l0aG91dCBhIGNsZWFudXAgbG9jayB3ZSBjYW4g b25seSByZW1vdmUgYWxyZWFkeS1kZWFkIGxpbmUKKwkJICogcG9pbnRlcnMgYW5kIHJlLXBv aW50IHJlZGlyZWN0cy4gIFRoZSBsYXR0ZXIgaGFwcGVucyB3aGVuIHZhY3V1bSdzCisJCSAq IHNlY29uZCBwYXNzIHJlY2xhaW1zIGEgY29sbGFwc2VkIEhPVC1pbmRleGVkIGNoYWluIGFu ZCByZS1wb2ludHMKKwkJICogdGhlIHJvb3QgcmVkaXJlY3QgYXQgZmlyc3RfbGl2ZTogdGhh dCBjaGFuZ2UgaXMgbWFkZSB1bmRlciBhbgorCQkgKiBleGNsdXNpdmUgbG9jayBhbmQgcHJl c2VydmVzIHRoZSBjaGFpbidzIHJlYWNoYWJpbGl0eSAoZXZlcnkgd2Fsa2VyCisJCSAqIHN0 aWxsIHJlYWNoZXMgZmlyc3RfbGl2ZSksIHNvIG5vIGNsZWFudXAgbG9jayBpcyBuZWVkZWQg LS0gdGhlIHNhbWUKKwkJICogYmFzaXMgb24gd2hpY2ggdGhpcyBwYXNzIGFscmVhZHkgcmVj bGFpbXMgZGVhZCBsaW5lIHBvaW50ZXJzIHRvCisJCSAqIExQX1VOVVNFRC4KKwkJICovCisJ CUFzc2VydChuZGVhZCA9PSAwKTsKIAl9CiAJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNp emVPZkhlYXBQcnVuZSk7CiAJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGNvbmZsaWN0X3hp ZCkpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMzkzOTVhZWQw ZDUuLjZhOGE1YmJkNzkwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CkBAIC0xMzEsNiArMTMxLDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgogI2lu Y2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaG90X2luZGV4ZWQu aCIKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNz L211bHRpeGFjdC5oIgogI2luY2x1ZGUgImFjY2Vzcy90aWRzdG9yZS5oIgpAQCAtMTk3Miw2 ICsxOTczLDcgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWws IEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkJCQkJCQkJCSAgTlVMTCwgMCwK IAkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJCQkJCQkJ CSAgTlVMTCwgMCwKIAkJCQkJCQkJCQkgIE5VTEwsIDApOwogCiAJCQlFTkRfQ1JJVF9TRUNU SU9OKCk7CkBAIC0yNjg2LDYgKzI2ODgsNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3JlbChMVlJl bFN0YXRlICp2YWNyZWwpCiAJCVNpemUJCWZyZWVzcGFjZTsKIAkJT2Zmc2V0TnVtYmVyIG9m ZnNldHNbTWF4T2Zmc2V0TnVtYmVyXTsKIAkJaW50CQkJbnVtX29mZnNldHM7CisJCWJvb2wJ CWdvdF9jbGVhbnVwX2xvY2s7CiAKIAkJdmFjdXVtX2RlbGF5X3BvaW50KGZhbHNlKTsKIApA QCAtMjcwOCw4ICsyNzExLDE4IEBAIGxhenlfdmFjdXVtX2hlYXBfcmVsKExWUmVsU3RhdGUg KnZhY3JlbCkKIAkJICovCiAJCXZpc2liaWxpdHltYXBfcGluKHZhY3JlbC0+cmVsLCBibGtu bywgJnZtYnVmZmVyKTsKIAotCQkvKiBXZSBuZWVkIGEgbm9uLWNsZWFudXAgZXhjbHVzaXZl IGxvY2sgdG8gbWFyayBkZWFkX2l0ZW1zIHVudXNlZCAqLwotCQlMb2NrQnVmZmVyKGJ1Ziwg QlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKKwkJLyoKKwkJICogU2V0dGluZyBkZWFkIGl0ZW1z IHVudXNlZCBuZWVkcyBvbmx5IGFuIGV4Y2x1c2l2ZSBsb2NrLiAgV2Ugc3RpbGwKKwkJICog cHJlZmVyIGEgY2xlYW51cCBsb2NrIGhlcmUsIGFzIHRoZSBmaXJzdCBwYXNzIGRvZXMsIGFu ZCBmYWxsIGJhY2sgdG8KKwkJICogYW4gZXhjbHVzaXZlIGxvY2sgaWYgb25lIGlzIG5vdCBp bW1lZGlhdGVseSBhdmFpbGFibGUuICBUaGlzIHBhc3MKKwkJICogb25seSB0dXJucyBMUF9E RUFEIGl0ZW1zIGludG8gTFBfVU5VU0VEOyBpdCBkb2VzIE5PVCByZWNsYWltIGEKKwkJICog Y29sbGFwc2VkIEhPVC1pbmRleGVkIGNoYWluJ3Mgc3R1YnMgb3IgcmUtcG9pbnQgaXRzIHJl ZGlyZWN0cyAtLQorCQkgKiB0aGF0IGNoYWluLXN0cnVjdHVyZSByZXdyaXRlICh3aGljaCBt b3ZlcyBUSURzIGNvbmN1cnJlbnQgc2NhbnMKKwkJICogZm9sbG93LCBhbmQgc28gbmVlZHMg YSBjbGVhbnVwIGxvY2spIGlzIGxlZnQgdG8gYSBsYXRlciBwcnVuZS4KKwkJICovCisJCWdv dF9jbGVhbnVwX2xvY2sgPSBDb25kaXRpb25hbExvY2tCdWZmZXJGb3JDbGVhbnVwKGJ1Zik7 CisJCWlmICghZ290X2NsZWFudXBfbG9jaykKKwkJCUxvY2tCdWZmZXIoYnVmLCBCVUZGRVJf TE9DS19FWENMVVNJVkUpOwogCQlsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UodmFjcmVsLCBibGtu bywgYnVmLCBvZmZzZXRzLAogCQkJCQkJCSAgbnVtX29mZnNldHMsIHZtYnVmZmVyKTsKIApA QCAtMjc4Myw3ICsyNzk2LDEwIEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRl ICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCSAqIGFuZCBt YXJrIHRoZSBwYWdlIGFsbC12aXNpYmxlIHdpdGhpbiB0aGUgc2FtZSBjcml0aWNhbCBzZWN0 aW9uLAogCSAqIGVuYWJsaW5nIGJvdGggY2hhbmdlcyB0byBiZSBlbWl0dGVkIGluIGEgc2lu Z2xlIFdBTCByZWNvcmQuIFNpbmNlIHRoZQogCSAqIHZpc2liaWxpdHkgY2hlY2tzIG1heSBw ZXJmb3JtIEkvTyBhbmQgYWxsb2NhdGUgbWVtb3J5LCB0aGV5IG11c3QgYmUKLQkgKiBkb25l IG91dHNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24uCisJICogZG9uZSBvdXRzaWRlIHRoZSBj cml0aWNhbCBzZWN0aW9uLiAgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKCkKKwkg KiBjYXJyaWVzIGl0cyBvd24gU0lVLXJlZGlyZWN0IGFuZCBzdHViIGd1YXJkcywgc28gaXQg Y29ycmVjdGx5IHJlZnVzZXMKKwkgKiB0byBtYXJrIHRoZSBwYWdlIGFsbC12aXNpYmxlIHdo aWxlIGEgbm90LXlldC1yZWNsYWltZWQgSE9ULWluZGV4ZWQKKwkgKiBtZW1iZXIgaXMgc3Rp bGwgcHJlc2VudC4KIAkgKi8KIAlpZiAoaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxl KHZhY3JlbC0+cmVsLCBidWZmZXIsCiAJCQkJCQkJCQkgICB2YWNyZWwtPnZpc3Rlc3QsIHRy dWUsCkBAIC0yODE1LDEzICsyODMxLDEyIEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJl bFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCiAJ CWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgdG9mZik7CiAKKwkJLyogQSByZWNsYWlt YWJsZSBpdGVtIGlzIGEgY2xhc3NpYyBMUF9ERUFEIGxpbmUgcG9pbnRlci4gKi8KIAkJQXNz ZXJ0KEl0ZW1JZElzRGVhZChpdGVtaWQpICYmICFJdGVtSWRIYXNTdG9yYWdlKGl0ZW1pZCkp OwogCQlJdGVtSWRTZXRVbnVzZWQoaXRlbWlkKTsKIAkJdW51c2VkW251bnVzZWQrK10gPSB0 b2ZmOwogCX0KIAotCUFzc2VydChudW51c2VkID4gMCk7Ci0KIAkvKiBBdHRlbXB0IHRvIHRy dW5jYXRlIGxpbmUgcG9pbnRlciBhcnJheSBub3cgKi8KIAlQYWdlVHJ1bmNhdGVMaW5lUG9p bnRlckFycmF5KHBhZ2UpOwogCkBAIC0yODUxLDEyICsyODY2LDEzIEBAIGxhenlfdmFjdXVt X2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZm ZXIgYnVmZmVyLAogCQkJCQkJCQkgIHZtZmxhZ3MgIT0gMCA/IHZtYnVmZmVyIDogSW52YWxp ZEJ1ZmZlciwKIAkJCQkJCQkJICB2bWZsYWdzLAogCQkJCQkJCQkgIGNvbmZsaWN0X3hpZCwK LQkJCQkJCQkJICBmYWxzZSwJLyogbm8gY2xlYW51cCBsb2NrIHJlcXVpcmVkICovCisJCQkJ CQkJCSAgZmFsc2UsCS8qIG5vIGNsZWFudXAgbG9jayByZXF1aXJlZDogc2VlIGJlbG93ICov CiAJCQkJCQkJCSAgUFJVTkVfVkFDVVVNX0NMRUFOVVAsCiAJCQkJCQkJCSAgTlVMTCwgMCwJ LyogZnJvemVuICovCiAJCQkJCQkJCSAgTlVMTCwgMCwJLyogcmVkaXJlY3RlZCAqLwogCQkJ CQkJCQkgIE5VTEwsIDAsCS8qIGRlYWQgKi8KLQkJCQkJCQkJICB1bnVzZWQsIG51bnVzZWQp OworCQkJCQkJCQkgIHVudXNlZCwgbnVudXNlZCwKKwkJCQkJCQkJICBOVUxMLCAwKTsgLyog c3R1YnMgKi8KIAl9CiAKIAlFTkRfQ1JJVF9TRUNUSU9OKCk7CkBAIC0zNjQ3LDEwICszNjYz LDQ0IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1 ZmZlciBidWYsCiAJCSpsb2dnaW5nX29mZm51bSA9IG9mZm51bTsKIAkJaXRlbWlkID0gUGFn ZUdldEl0ZW1JZChwYWdlLCBvZmZudW0pOwogCi0JCS8qIFVudXNlZCBvciByZWRpcmVjdCBs aW5lIHBvaW50ZXJzIGFyZSBvZiBubyBpbnRlcmVzdCAqLwotCQlpZiAoIUl0ZW1JZElzVXNl ZChpdGVtaWQpIHx8IEl0ZW1JZElzUmVkaXJlY3RlZChpdGVtaWQpKQorCQkvKiBVbnVzZWQg bGluZSBwb2ludGVycyBhcmUgb2Ygbm8gaW50ZXJlc3QuICovCisJCWlmICghSXRlbUlkSXNV c2VkKGl0ZW1pZCkpCiAJCQljb250aW51ZTsKIAorCQkvKgorCQkgKiBQbGFpbiByZWRpcmVj dHMgYXJlIG9mIG5vIGludGVyZXN0ICh0aGUgY2hhaW4gbWVtYmVyIHRoZXkgcG9pbnQgYXQK KwkJICogaXMgaW5zcGVjdGVkIHNlcGFyYXRlbHkpIC0tIGV4Y2VwdCBhIHJlZGlyZWN0IHRo YXQgZm9yd2FyZHMgdG8gYQorCQkgKiBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCBsaXZlIHR1 cGxlLiAgU3VjaCBhIHJlZGlyZWN0IG1heSBzdGlsbCBiZQorCQkgKiByZWFjaGVkIGJ5IGEg c3RhbGUgaW5kZXggZW50cnkgd2hvc2Uga2V5IHRoZSBsaXZlIHR1cGxlIG5vIGxvbmdlcgor CQkgKiBob2xkczsgaWYgdGhlIHBhZ2Ugd2VyZSBtYXJrZWQgYWxsLXZpc2libGUgYW4gaW5k ZXgtb25seSBzY2FuIHdvdWxkCisJCSAqIHRydXN0IHRoZSBWTSwgc2tpcCB0aGUgaGVhcCBm ZXRjaCwgYW5kIHN1cmZhY2UgdGhhdCBzdGFsZSBrZXkuCisJCSAqIEtlZXAgdGhlIHBhZ2Ug bm90LWFsbC12aXNpYmxlIHVudGlsIHRoZSBzdGFsZSBsZWF2ZXMgYXJlIHN3ZXB0IGFuZAor CQkgKiB0aGUgcmVkaXJlY3QgcmVjbGFpbWVkLiAgVGhpcyBtaXJyb3JzIHRoZSBndWFyZCBp bgorCQkgKiBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdCwgYXBwbGllZCBoZXJlIGJlY2F1 c2UgVkFDVVVNJ3Mgc2Vjb25kCisJCSAqIHBhc3MgY2FuIHNldCBhbGwtdmlzaWJsZSBhZnRl ciByZWNsYWltaW5nIG90aGVyIGl0ZW1zIG9uIHRoZSBwYWdlLgorCQkgKi8KKwkJaWYgKEl0 ZW1JZElzUmVkaXJlY3RlZChpdGVtaWQpKQorCQl7CisJCQlPZmZzZXROdW1iZXIgcmRvZmYg PSBJdGVtSWRHZXRSZWRpcmVjdChpdGVtaWQpOworCisJCQlpZiAocmRvZmYgPj0gRmlyc3RP ZmZzZXROdW1iZXIgJiYgcmRvZmYgPD0gbWF4b2ZmKQorCQkJeworCQkJCUl0ZW1JZAkJdGxw ID0gUGFnZUdldEl0ZW1JZChwYWdlLCByZG9mZik7CisKKwkJCQlpZiAoSXRlbUlkSXNOb3Jt YWwodGxwKSkKKwkJCQl7CisJCQkJCUhlYXBUdXBsZUhlYWRlciB0aHR1cCA9IChIZWFwVHVw bGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIHRscCk7CisKKwkJCQkJaWYgKCh0aHR1cC0+ dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKKwkJCQkJeworCQkJ CQkJKmFsbF9mcm96ZW4gPSBhbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJCQkJYnJlYWs7CisJ CQkJCX0KKwkJCQl9CisJCQl9CisJCQljb250aW51ZTsKKwkJfQorCiAJCUl0ZW1Qb2ludGVy U2V0KCYodHVwbGUudF9zZWxmKSwgYmxvY2tubywgb2ZmbnVtKTsKIAogCQkvKgpAQCAtMzY3 Niw2ICszNzI2LDI0IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlv biByZWwsIEJ1ZmZlciBidWYsCiAJCXR1cGxlLnRfbGVuID0gSXRlbUlkR2V0TGVuZ3RoKGl0 ZW1pZCk7CiAJCXR1cGxlLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbCk7CiAK KwkJLyoKKwkJICogQSBIT1QtaW5kZXhlZCBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGlzIGFu IExQX05PUk1BTCBpdGVtIHRoYXQgaXMKKwkJICogbm90IGEgcmVhbCB0dXBsZTogaXQgZm9y d2FyZHMgdGhyb3VnaCB0aGUgY2hhaW4gYW5kIGNhcnJpZXMgYQorCQkgKiBwcmVzZXJ2ZWQg bW9kaWZpZWQtYXR0cnMgYml0bWFwIHRoYXQgYSByZWFkZXIgYXJyaXZpbmcgdmlhIGEgc3Rh bGUKKwkJICogbGVhZiBtdXN0IHN0aWxsIGNyb3NzLiAgQSBwYWdlIGhvbGRpbmcgb25lIG11 c3Qgc3RheSBub3QtYWxsLXZpc2libGUKKwkJICogc28gaW5kZXgtb25seSBzY2FucyBoZWFw LWZldGNoIHRocm91Z2ggdGhlIGNoYWluLCBleGFjdGx5IGxpa2UgdGhlCisJCSAqIHJlZGly ZWN0LXRvLVNJVSBjYXNlIGFib3ZlLiAgQSBzdHViJ3MgaGVhZGVyIGlzIGZyb3plbi1pbnZh bGlkCisJCSAqIChIRUFQX1hNSU5fSU5WQUxJRCksIHNvIHRoZSB2aXNpYmlsaXR5IGNoZWNr IGJlbG93IHdvdWxkIGFsc28gY2xhc3MKKwkJICogaXQgbm90LWFsbC12aXNpYmxlIC0tIGJ1 dCByZWNvZ25pemUgaXQgZXhwbGljaXRseSBoZXJlIHJhdGhlciB0aGFuCisJCSAqIHJlbHlp bmcgb24gdGhhdCBzaWRlIGVmZmVjdCwgc28gdGhlIGd1YXJkIGNhbm5vdCBzaWxlbnRseSBs YXBzZSBpZgorCQkgKiB0aGUgc3R1YiBlbmNvZGluZyBldmVyIGNoYW5nZXMuCisJCSAqLwor CQlpZiAoSG90SW5kZXhlZEhlYWRlcklzU3R1Yih0dXBsZS50X2RhdGEpKQorCQl7CisJCQkq YWxsX2Zyb3plbiA9IGFsbF92aXNpYmxlID0gZmFsc2U7CisJCQlicmVhazsKKwkJfQorCiAJ CS8qIFZpc2liaWxpdHkgY2hlY2tzIG1heSBkbyBJTyBvciBhbGxvY2F0ZSBtZW1vcnkgKi8K IAkJQXNzZXJ0KENyaXRTZWN0aW9uQ291bnQgPT0gMCk7CiAJCXN3aXRjaCAoSGVhcFR1cGxl U2F0aXNmaWVzVmFjdXVtSG9yaXpvbigmdHVwbGUsIGJ1ZiwgJmRlYWRfYWZ0ZXIpKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwppbmRleCA3NWFlNmY5ZDM3NS4u OTdmOTI1ZGYxNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9o ZWFwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5j CkBAIC0xMDgsNyArMTA4LDggQEAgaGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9m cmVlemUoY2hhciAqY3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAJCQkJCQkJCQkgICBPZmZzZXRO dW1iZXIgKipmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCSAgIGludCAqbnJlZGlyZWN0ZWQsIE9m ZnNldE51bWJlciAqKnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkgICBpbnQgKm5kZWFkLCBPZmZz ZXROdW1iZXIgKipub3dkZWFkLAotCQkJCQkJCQkJICAgaW50ICpudW51c2VkLCBPZmZzZXRO dW1iZXIgKipub3d1bnVzZWQpCisJCQkJCQkJCQkgICBpbnQgKm51bnVzZWQsIE9mZnNldE51 bWJlciAqKm5vd3VudXNlZCwKKwkJCQkJCQkJCSAgIGludCAqbnN0dWJzLCBPZmZzZXROdW1i ZXIgKipzdHVicykKIHsKIAlpZiAoZmxhZ3MgJiBYTEhQX0hBU19GUkVFWkVfUExBTlMpCiAJ ewpAQCAtMTc4LDYgKzE3OSwyMyBAQCBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5k X2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywKIAkJKm5vd3VudXNlZCA9IE5V TEw7CiAJfQogCisJaWYgKGZsYWdzICYgWExIUF9IQVNfSE9UX0lOREVYRURfU1RVQlMpCisJ eworCQl4bGhwX3BydW5lX2l0ZW1zICpzdWJyZWNvcmQgPSAoeGxocF9wcnVuZV9pdGVtcyAq KSBjdXJzb3I7CisKKwkJKm5zdHVicyA9IHN1YnJlY29yZC0+bnRhcmdldHM7CisJCUFzc2Vy dCgqbnN0dWJzID4gMCk7CisJCSpzdHVicyA9ICZzdWJyZWNvcmQtPmRhdGFbMF07CisKKwkJ Y3Vyc29yICs9IG9mZnNldG9mKHhsaHBfcHJ1bmVfaXRlbXMsIGRhdGEpOworCQljdXJzb3Ig Kz0gc2l6ZW9mKE9mZnNldE51bWJlclsyXSkgKiAqbnN0dWJzOworCX0KKwllbHNlCisJewor CQkqbnN0dWJzID0gMDsKKwkJKnN0dWJzID0gTlVMTDsKKwl9CisKIAkqZnJ6X29mZnNldHMg PSAoT2Zmc2V0TnVtYmVyICopIGN1cnNvcjsKIH0KIApAQCAtMzA1LDYgKzMyMyw4IEBAIGhl YXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJ aW50CQkJbnJlZGlyZWN0ZWQ7CiAJCQlpbnQJCQludW51c2VkOwogCQkJaW50CQkJbmRlYWQ7 CisJCQlpbnQJCQluc3R1YnM7CisJCQlPZmZzZXROdW1iZXIgKnN0dWJzOwogCQkJaW50CQkJ bnBsYW5zOwogCQkJeGxocF9mcmVlemVfcGxhbiAqcGxhbnM7CiAJCQlPZmZzZXROdW1iZXIg KmZyel9vZmZzZXRzOwpAQCAtMzE1LDEwICszMzUsMTEgQEAgaGVhcDJfZGVzYyhTdHJpbmdJ bmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQkJCQkJCQkJCQkgICAmbnBs YW5zLCAmcGxhbnMsICZmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJCSAgICZucmVkaXJlY3Rl ZCwgJnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkJCQkgICAmbmRlYWQsICZub3dkZWFkLAotCQkJ CQkJCQkJCQkJICAgJm51bnVzZWQsICZub3d1bnVzZWQpOworCQkJCQkJCQkJCQkJICAgJm51 bnVzZWQsICZub3d1bnVzZWQsCisJCQkJCQkJCQkJCQkgICAmbnN0dWJzLCAmc3R1YnMpOwog Ci0JCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgbnBsYW5zOiAldSwgbnJlZGlyZWN0ZWQ6 ICV1LCBuZGVhZDogJXUsIG51bnVzZWQ6ICV1IiwKLQkJCQkJCQkgbnBsYW5zLCBucmVkaXJl Y3RlZCwgbmRlYWQsIG51bnVzZWQpOworCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsIG5w bGFuczogJXUsIG5yZWRpcmVjdGVkOiAldSwgbmRlYWQ6ICV1LCBudW51c2VkOiAldSwgbnN0 dWJzOiAldSIsCisJCQkJCQkJIG5wbGFucywgbnJlZGlyZWN0ZWQsIG5kZWFkLCBudW51c2Vk LCBuc3R1YnMpOwogCiAJCQlpZiAobnBsYW5zID4gMCkKIAkJCXsKQEAgLTM0Nyw2ICszNjgs MTMgQEAgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJCQkJYXJyYXlfZGVzYyhidWYsIG5vd3VudXNlZCwgc2l6ZW9mKE9mZnNldE51bWJl ciksIG51bnVzZWQsCiAJCQkJCQkgICAmb2Zmc2V0X2VsZW1fZGVzYywgTlVMTCk7CiAJCQl9 CisKKwkJCWlmIChuc3R1YnMgPiAwKQorCQkJeworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiLCBzdHViczoiKTsKKwkJCQlhcnJheV9kZXNjKGJ1Ziwgc3R1YnMsIHNpemVv ZihPZmZzZXROdW1iZXIpICogMiwKKwkJCQkJCSAgIG5zdHVicywgJnJlZGlyZWN0X2VsZW1f ZGVzYywgTlVMTCk7CisJCQl9CiAJCX0KIAl9CiAJZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0hF QVAyX01VTFRJX0lOU0VSVCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBmMjljY2ViOGMxYS4u MzFkMzIyMGM1ZmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQ5MCw3ICs0OTAsOCBAQCBl eHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFt cyAqcGFyYW1zLAogZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUoQnVmZmVy IGJ1ZmZlciwgYm9vbCBscF90cnVuY2F0ZV9vbmx5LAogCQkJCQkJCQkJT2Zmc2V0TnVtYmVy ICpyZWRpcmVjdGVkLCBpbnQgbnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQlPZmZzZXROdW1iZXIg Km5vd2RlYWQsIGludCBuZGVhZCwKLQkJCQkJCQkJCU9mZnNldE51bWJlciAqbm93dW51c2Vk LCBpbnQgbnVudXNlZCk7CisJCQkJCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNlZCwgaW50 IG51bnVzZWQsCisJCQkJCQkJCQlPZmZzZXROdW1iZXIgKnN0dWJzLCBpbnQgbnN0dWJzKTsK IGV4dGVybiB2b2lkIGhlYXBfZ2V0X3Jvb3RfdHVwbGVzKFBhZ2UgcGFnZSwgT2Zmc2V0TnVt YmVyICpyb290X29mZnNldHMpOwogZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCSAgQnVm ZmVyIHZtYnVmZmVyLCB1aW50OCB2bWZsYWdzLApAQCAtNTAwLDcgKzUwMSw4IEBAIGV4dGVy biB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkgIEhlYXBUdXBsZUZyZWV6ZSAqZnJvemVuLCBpbnQg bmZyb3plbiwKIAkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICpyZWRpcmVjdGVkLCBpbnQgbnJl ZGlyZWN0ZWQsCiAJCQkJCQkJCQkgIE9mZnNldE51bWJlciAqZGVhZCwgaW50IG5kZWFkLAot CQkJCQkJCQkJICBPZmZzZXROdW1iZXIgKnVudXNlZCwgaW50IG51bnVzZWQpOworCQkJCQkJ CQkJICBPZmZzZXROdW1iZXIgKnVudXNlZCwgaW50IG51bnVzZWQsCisJCQkJCQkJCQkgIE9m ZnNldE51bWJlciAqc3R1YnMsIGludCBuc3R1YnMpOwogCiAvKiBpbiBoZWFwL2hlYXBhbS5j ICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggZmRjYTdkODIxYzguLjg5 OTdhNTA1MDA2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cu aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtMjczLDYgKzI3 MywxMCBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3VwZGF0ZQogICoJCXVpbnQxNgkJCQlu dW51c2VkCiAgKgkJT2Zmc2V0TnVtYmVyCQlub3d1bnVzZWRbbnVudXNlZF0KICAqCisgKgl4 bGhwX3BydW5lX2l0ZW1zCisgKgkJdWludDE2CQkJCW5zdHVicworICoJCU9mZnNldE51bWJl cgkJc3R1YnNbMiAqIG5zdHVic10KKyAqCiAgKglPZmZzZXROdW1iZXIJCQlmcnpfb2Zmc2V0 c1tzdW0oW3BsYW4ubnR1cGxlcyBmb3IgcGxhbiBpbiBwbGFuc10pXQogICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICoKQEAgLTM0MSw2ICszNDUsMTggQEAgdHlwZWRlZiBzdHJ1Y3Qg eGxfaGVhcF9wcnVuZQogI2RlZmluZQkJWExIUF9WTV9BTExfVklTSUJMRQkJCSgxIDw8IDgp CiAjZGVmaW5lCQlYTEhQX1ZNX0FMTF9GUk9aRU4JCQkoMSA8PCA5KQogCisvKgorICogSW5k aWNhdGVzIHRoYXQgYW4geGxocF9wcnVuZV9pdGVtcyBzdWItcmVjb3JkIHdpdGggSE9ULXNl bGVjdGl2ZWx5LXVwZGF0ZWQKKyAqIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWJzIGlzIHByZXNl bnQuICBFYWNoIHBhaXIgKG9mZnNldCwgZm9yd2FyZCkgbmFtZXMgYQorICogbGluZSBwb2lu dGVyIHRvIGJlIHJld3JpdHRlbiBpbiBwbGFjZSBpbnRvIGFuIHhpZC1mcmVlIGZvcndhcmRp bmcgc3R1YgorICogKEhFQVBfWE1JTl9JTlZBTElEfEhFQVBfWE1BWF9JTlZBTElELCBIRUFQ X09OTFlfVFVQTEV8SEVBUF9JTkRFWEVEX1VQREFURUQsCisgKiBuYXR0cz09MCkgd2hvc2Ug dF9jdGlkLm9mZm51bSBpcyBzZXQgdG8gdGhlIGZvcndhcmQgb2Zmc2V0LiAgVGhlIHN0dWIn cworICogbW9kaWZpZWQtYXR0cnMgYml0bWFwIGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUg aXRlbSBvbiB0aGUgcGFnZSAoaXQgaXMgdGhlCisgKiBwcmUtcHJ1bmUgdHVwbGUncyBpbmxp bmUgYml0bWFwLCBsZWZ0IHVuZGlzdHVyYmVkKSwgc28gaXQgaXMgbm90IGNhcnJpZWQgaW4K KyAqIHRoZSBXQUwuCisgKi8KKyNkZWZpbmUJCVhMSFBfSEFTX0hPVF9JTkRFWEVEX1NUVUJT CSgxIDw8IDEwKQorCiAvKgogICogeGxocF9mcmVlemVfcGxhbiBkZXNjcmliZXMgaG93IHRv IGZyZWV6ZSBhIGdyb3VwIG9mIG9uZSBvciBtb3JlIGhlYXAgdHVwbGVzCiAgKiAoYXBwZWFy cyBpbiB4bF9oZWFwX3BydW5lJ3MgeGxocF9mcmVlemVfcGxhbnMgc3ViLXJlY29yZCkKQEAg LTQ5NCw2ICs1MTAsNyBAQCBleHRlcm4gdm9pZCBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1 bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywKIAkJCQkJCQkJCQkJ CSAgIE9mZnNldE51bWJlciAqKmZyel9vZmZzZXRzLAogCQkJCQkJCQkJCQkJICAgaW50ICpu cmVkaXJlY3RlZCwgT2Zmc2V0TnVtYmVyICoqcmVkaXJlY3RlZCwKIAkJCQkJCQkJCQkJCSAg IGludCAqbmRlYWQsIE9mZnNldE51bWJlciAqKm5vd2RlYWQsCi0JCQkJCQkJCQkJCQkgICBp bnQgKm51bnVzZWQsIE9mZnNldE51bWJlciAqKm5vd3VudXNlZCk7CisJCQkJCQkJCQkJCQkg ICBpbnQgKm51bnVzZWQsIE9mZnNldE51bWJlciAqKm5vd3VudXNlZCwKKwkJCQkJCQkJCQkJ CSAgIGludCAqbnN0dWJzLCBPZmZzZXROdW1iZXIgKipzdHVicyk7CiAKICNlbmRpZgkJCQkJ CQkvKiBIRUFQQU1fWExPR19IICovCi0tIAoyLjUwLjEKCg== --ffc971266f692fe98c1088dac35356ed85e7d5db Content-Disposition: attachment; filename*0="v63-0007-Teach-amcheck-to-recognize-HOT-indexed-chains-an.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v63-0007-Teach-amcheck-to-recognize-HOT-indexed-chains-an.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBjOGZlNjYwZjlmNGUxZDdjYjhkNzczMjUxZWE3M2UxMzJlZDQwODcyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTozMToxMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjYzIDA3 LzEwXSBUZWFjaCBhbWNoZWNrIHRvIHJlY29nbml6ZSBIT1QtaW5kZXhlZCBjaGFpbnMgYW5k CiBjb2xsYXBzZSBzdHVicwoKdmVyaWZ5X2hlYXBhbSBtdXN0IG5vdCBmbGFnIHRoZSBIT1Qt aW5kZXhlZCBhcnRpZmFjdHMgYXMgY29ycnVwdGlvbjogYSBsaXZlCkhFQVBfSU5ERVhFRF9V UERBVEVEIGhlYXAtb25seSB0dXBsZSB3aG9zZSBtaWQtY2hhaW4gbGluZSBwb2ludGVyIGlz IHByZXNlcnZlZApiZWNhdXNlIGFuIGluZGV4IGVudHJ5IHN0aWxsIHBvaW50cyBhdCBpdCwg YW4geGlkLWZyZWUgY29sbGFwc2Utc3Vydml2b3Igc3R1YiwKYW5kIG1vcmUgdGhhbiBvbmUg TFBfUkVESVJFQ1QgZm9yd2FyZGluZyB0byB0aGUgc2FtZSBsaXZlIHR1cGxlIGFyZSBhbGwK bGVnaXRpbWF0ZS4gIFJlY29nbml6ZSB0aGVtIGFuZCBjb250aW51ZSBjaGVja2luZyB0aGUg cmVzdCBvZiB0aGUgY2hhaW4uCgpDb3ZlciB0aGlzIHdpdGggYW4gYW1jaGVjayByZWdyZXNz aW9uIHRlc3QsIGFuZCBhZGQgYSBwZ191cGdyYWRlIHRlc3QgdGhhdApjYXJyaWVzIGEgcmVs YXRpb24gd2l0aCBIT1QtaW5kZXhlZCBjaGFpbnMsIGFuIEFCQS1jeWNsZWQgaW5kZXhlZCBj b2x1bW4sIGFuCm91dC1vZi1saW5lIGluZGV4ZWQgY29sdW1uLCBhbmQgVkFDVVVNLWNvbGxh cHNlZCBzdHVicyBhY3Jvc3MgYW4gdXBncmFkZSwKdmVyaWZ5aW5nIHRoZSBkYXRhLCB2ZXJp ZnlfaGVhcGFtLCBidF9pbmRleF9jaGVjaywgYW5kIHRoZSBjaGFpbiBzY2FucyBvbiB0aGUK bmV3IGNsdXN0ZXIuCgpBdXRob3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+Ci0t LQogY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2hlYXAub3V0IHwgIDQwICsrKysr KysrCiBjb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2hlYXAuc3FsICAgICAgfCAgMzcgKysr KysrKysKIGNvbnRyaWIvYW1jaGVjay92ZXJpZnlfaGVhcGFtLmMgICAgICAgICB8ICA4OSAr KysrKysrKysrKysrKysrLS0KIHNyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZCAgICAg ICAgICB8ICAgMSArCiBzcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4ZWQucGwg fCAxMTggKysrKysrKysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDI3NSBp bnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv YmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4ZWQucGwKCmRpZmYgLS1naXQgYS9jb250 cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQgYi9jb250cmliL2FtY2hlY2sv ZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQKaW5kZXggOTc5ZTVlODRlNzIuLmI4ZGVlMmJiNzFi IDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQK KysrIGIvY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2hlYXAub3V0CkBAIC0yMzEs NiArMjMxLDQ2IEBAIFNFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgndGVzdF9mb3JlaWdu X3RhYmxlJywKIAkJCQkJCQllbmRibG9jayA6PSBOVUxMKTsKIEVSUk9SOiAgY2Fubm90IGNo ZWNrIHJlbGF0aW9uICJ0ZXN0X2ZvcmVpZ25fdGFibGUiCiBERVRBSUw6ICBUaGlzIG9wZXJh dGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBmb3JlaWduIHRhYmxlcy4KKy0tIEhPVC1pbmRl eGVkIChIT1QvU0lVKSBvbi1wYWdlIGFydGlmYWN0czoKKy0tCistLSBBIEhPVC1pbmRleGVk IFVQREFURSBrZWVwcyB0aGUgbmV3IHR1cGxlIG9uIHRoZSBzYW1lIHBhZ2UgYXMgYSBoZWFw LW9ubHkKKy0tIHR1cGxlIG1hcmtlZCBIRUFQX0lOREVYRURfVVBEQVRFRCBhbmQgcGxhbnRz IGluZGV4IGVudHJpZXMgcG9pbnRpbmcgYXQgaXRzCistLSBvd24gVElELiAgUHJ1bmluZyBh IGNoYWluIG9mIHN1Y2ggdXBkYXRlcyBjb2xsYXBzZXMgZGVhZCBtZW1iZXJzIHRvCistLSBM UF9SRURJUkVDVCBmb3J3YXJkZXJzIGFuZCBwcmVzZXJ2ZXMgdGhlIExQIG9mIGEgbGl2ZSBI T1QtaW5kZXhlZCBtZW1iZXIKKy0tIHdob3NlIGluZGV4IGVudHJpZXMgbWF5IG5vdCB5ZXQg YmUgc3dlcHQuICB2ZXJpZnlfaGVhcGFtIG11c3QgdHJlYXQgYWxsIG9mCistLSB0aGVzZSBh cyBsZWdpdGltYXRlLiAgVGhpcyBzY2VuYXJpbyBleGVyY2lzZXMgdGhlbSBhbmQgYXNzZXJ0 cyB0aGF0CistLSB2ZXJpZnlfaGVhcGFtIHJlcG9ydHMgemVybyBjb3JydXB0aW9uIGFnYWlu c3QgbGVnaXRpbWF0ZSBIT1QtaW5kZXhlZAorLS0gYWN0aXZpdHkuCitDUkVBVEUgVEFCTEUg aG90X2luZGV4ZWRfY2hlY2sgKGlkIGludCBQUklNQVJZIEtFWSwgYzEgaW50LCBjMiBpbnQs IGMzIGludCkKKwlXSVRIIChmaWxsZmFjdG9yID0gNzApOworQ1JFQVRFIElOREVYIGhvdF9p bmRleGVkX2NoZWNrX2MxIE9OIGhvdF9pbmRleGVkX2NoZWNrIChjMSk7CitDUkVBVEUgSU5E RVggaG90X2luZGV4ZWRfY2hlY2tfYzIgT04gaG90X2luZGV4ZWRfY2hlY2sgKGMyKTsKK0lO U0VSVCBJTlRPIGhvdF9pbmRleGVkX2NoZWNrCisJU0VMRUNUIGcsIGcsIGcsIGcgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnOworLS0gU2luZ2xlLXN0ZXAgVVBEQVRFczogZWFj aCByb3cgZ2V0cyBvbmUgSE9ULWluZGV4ZWQgdXBkYXRlLiAgRWFjaAorLS0gc3VjY2Vzc2Z1 bCBIT1QtaW5kZXhlZCB1cGRhdGUga2VlcHMgaXRzIG5ldyB0dXBsZSBvbi1wYWdlIGFuZCBp bnNlcnRzIGFuCistLSBlbnRyeSBvbmx5IGludG8gdGhlIGluZGV4IHdob3NlIGF0dHJpYnV0 ZSBjaGFuZ2VkLgorVVBEQVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMSA9IGMxICsgMTAw MDsKKy0tIE11bHRpLXN0ZXAgVVBEQVRFczogZHJpdmUgc2V2ZXJhbCBzdWNjZXNzaXZlIEhP VC1pbmRleGVkIHVwZGF0ZXMgYWdhaW5zdAorLS0gdGhlIHNhbWUgcm93cyBzbyBwcnVuZSBz ZWVzIGEgY2hhaW4gb2YgZGVhZCBpbnRlcm1lZGlhdGVzIGFuZCBjb2xsYXBzZXMKKy0tIHRo ZW0gdG8gTFBfUkVESVJFQ1QgZm9yd2FyZGVycy4gIEFuIGV4cGxpY2l0IFZBQ1VVTSBydW5z IHRoZSBwcnVuZSBwYXRoCistLSBhbmQgZXhlcmNpc2VzIGNoYWluIGNvbGxhcHNlLgorVVBE QVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMiA9IGMyICsgMSBXSEVSRSBpZCA8PSA1MDsK K1VQREFURSBob3RfaW5kZXhlZF9jaGVjayBTRVQgYzIgPSBjMiArIDEgV0hFUkUgaWQgPD0g NTA7CitVUERBVEUgaG90X2luZGV4ZWRfY2hlY2sgU0VUIGMyID0gYzIgKyAxIFdIRVJFIGlk IDw9IDUwOworVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaG90X2luZGV4ZWRfY2hlY2s7 CistLSB2ZXJpZnlfaGVhcGFtIG11c3Qgbm90IHJlcG9ydCBhbnkgY29ycnVwdGlvbiBhZ2Fp bnN0IGxlZ2l0aW1hdGUgSE9ULQorLS0gaW5kZXhlZCBhcnRpZmFjdHMuICBTZWxlY3Rpbmcg dGhlIGNvcnJ1cHRpbmcgbWVzc2FnZSBtYWtlcyBhbnkKKy0tIHJlZ3Jlc3Npb24gdW5taXN0 YWthYmxlIGluIHRoZSByZWdyZXNzIGRpZmYuCitTRUxFQ1QgYmxrbm8sIG9mZm51bSwgYXR0 bnVtLCBtc2cKKwlGUk9NIHZlcmlmeV9oZWFwYW0oJ2hvdF9pbmRleGVkX2NoZWNrJywKKwkJ CQkJICAgc3RhcnRibG9jayA6PSBOVUxMLAorCQkJCQkgICBlbmRibG9jayA6PSBOVUxMKTsK KyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK0RST1AgVEFCTEUgaG90X2luZGV4ZWRfY2hlY2s7 CiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGhlYXB0ZXN0OwogRFJPUCBUQUJMRVNQQUNFIHJl Z3Jlc3NfdGVzdF9zdGF0c190YmxzcGM7CmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2sv c3FsL2NoZWNrX2hlYXAuc3FsIGIvY29udHJpYi9hbWNoZWNrL3NxbC9jaGVja19oZWFwLnNx bAppbmRleCAxNzQ1YmFlNjM0ZS4uYzBiYTI2MzUxODAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv YW1jaGVjay9zcWwvY2hlY2tfaGVhcC5zcWwKKysrIGIvY29udHJpYi9hbWNoZWNrL3NxbC9j aGVja19oZWFwLnNxbApAQCAtMTM4LDYgKzEzOCw0MyBAQCBTRUxFQ1QgKiBGUk9NIHZlcmlm eV9oZWFwYW0oJ3Rlc3RfZm9yZWlnbl90YWJsZScsCiAJCQkJCQkJc3RhcnRibG9jayA6PSBO VUxMLAogCQkJCQkJCWVuZGJsb2NrIDo9IE5VTEwpOwogCistLSBIT1QtaW5kZXhlZCAoSE9U L1NJVSkgb24tcGFnZSBhcnRpZmFjdHM6CistLQorLS0gQSBIT1QtaW5kZXhlZCBVUERBVEUg a2VlcHMgdGhlIG5ldyB0dXBsZSBvbiB0aGUgc2FtZSBwYWdlIGFzIGEgaGVhcC1vbmx5Cist LSB0dXBsZSBtYXJrZWQgSEVBUF9JTkRFWEVEX1VQREFURUQgYW5kIHBsYW50cyBpbmRleCBl bnRyaWVzIHBvaW50aW5nIGF0IGl0cworLS0gb3duIFRJRC4gIFBydW5pbmcgYSBjaGFpbiBv ZiBzdWNoIHVwZGF0ZXMgY29sbGFwc2VzIGRlYWQgbWVtYmVycyB0bworLS0gTFBfUkVESVJF Q1QgZm9yd2FyZGVycyBhbmQgcHJlc2VydmVzIHRoZSBMUCBvZiBhIGxpdmUgSE9ULWluZGV4 ZWQgbWVtYmVyCistLSB3aG9zZSBpbmRleCBlbnRyaWVzIG1heSBub3QgeWV0IGJlIHN3ZXB0 LiAgdmVyaWZ5X2hlYXBhbSBtdXN0IHRyZWF0IGFsbCBvZgorLS0gdGhlc2UgYXMgbGVnaXRp bWF0ZS4gIFRoaXMgc2NlbmFyaW8gZXhlcmNpc2VzIHRoZW0gYW5kIGFzc2VydHMgdGhhdAor LS0gdmVyaWZ5X2hlYXBhbSByZXBvcnRzIHplcm8gY29ycnVwdGlvbiBhZ2FpbnN0IGxlZ2l0 aW1hdGUgSE9ULWluZGV4ZWQKKy0tIGFjdGl2aXR5LgorQ1JFQVRFIFRBQkxFIGhvdF9pbmRl eGVkX2NoZWNrIChpZCBpbnQgUFJJTUFSWSBLRVksIGMxIGludCwgYzIgaW50LCBjMyBpbnQp CisJV0lUSCAoZmlsbGZhY3RvciA9IDcwKTsKK0NSRUFURSBJTkRFWCBob3RfaW5kZXhlZF9j aGVja19jMSBPTiBob3RfaW5kZXhlZF9jaGVjayAoYzEpOworQ1JFQVRFIElOREVYIGhvdF9p bmRleGVkX2NoZWNrX2MyIE9OIGhvdF9pbmRleGVkX2NoZWNrIChjMik7CitJTlNFUlQgSU5U TyBob3RfaW5kZXhlZF9jaGVjaworCVNFTEVDVCBnLCBnLCBnLCBnIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDIwMCkgZzsKKy0tIFNpbmdsZS1zdGVwIFVQREFURXM6IGVhY2ggcm93IGdl dHMgb25lIEhPVC1pbmRleGVkIHVwZGF0ZS4gIEVhY2gKKy0tIHN1Y2Nlc3NmdWwgSE9ULWlu ZGV4ZWQgdXBkYXRlIGtlZXBzIGl0cyBuZXcgdHVwbGUgb24tcGFnZSBhbmQgaW5zZXJ0cyBh bgorLS0gZW50cnkgb25seSBpbnRvIHRoZSBpbmRleCB3aG9zZSBhdHRyaWJ1dGUgY2hhbmdl ZC4KK1VQREFURSBob3RfaW5kZXhlZF9jaGVjayBTRVQgYzEgPSBjMSArIDEwMDA7CistLSBN dWx0aS1zdGVwIFVQREFURXM6IGRyaXZlIHNldmVyYWwgc3VjY2Vzc2l2ZSBIT1QtaW5kZXhl ZCB1cGRhdGVzIGFnYWluc3QKKy0tIHRoZSBzYW1lIHJvd3Mgc28gcHJ1bmUgc2VlcyBhIGNo YWluIG9mIGRlYWQgaW50ZXJtZWRpYXRlcyBhbmQgY29sbGFwc2VzCistLSB0aGVtIHRvIExQ X1JFRElSRUNUIGZvcndhcmRlcnMuICBBbiBleHBsaWNpdCBWQUNVVU0gcnVucyB0aGUgcHJ1 bmUgcGF0aAorLS0gYW5kIGV4ZXJjaXNlcyBjaGFpbiBjb2xsYXBzZS4KK1VQREFURSBob3Rf aW5kZXhlZF9jaGVjayBTRVQgYzIgPSBjMiArIDEgV0hFUkUgaWQgPD0gNTA7CitVUERBVEUg aG90X2luZGV4ZWRfY2hlY2sgU0VUIGMyID0gYzIgKyAxIFdIRVJFIGlkIDw9IDUwOworVVBE QVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMiA9IGMyICsgMSBXSEVSRSBpZCA8PSA1MDsK K1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhvdF9pbmRleGVkX2NoZWNrOworLS0gdmVy aWZ5X2hlYXBhbSBtdXN0IG5vdCByZXBvcnQgYW55IGNvcnJ1cHRpb24gYWdhaW5zdCBsZWdp dGltYXRlIEhPVC0KKy0tIGluZGV4ZWQgYXJ0aWZhY3RzLiAgU2VsZWN0aW5nIHRoZSBjb3Jy dXB0aW5nIG1lc3NhZ2UgbWFrZXMgYW55CistLSByZWdyZXNzaW9uIHVubWlzdGFrYWJsZSBp biB0aGUgcmVncmVzcyBkaWZmLgorU0VMRUNUIGJsa25vLCBvZmZudW0sIGF0dG51bSwgbXNn CisJRlJPTSB2ZXJpZnlfaGVhcGFtKCdob3RfaW5kZXhlZF9jaGVjaycsCisJCQkJCSAgIHN0 YXJ0YmxvY2sgOj0gTlVMTCwKKwkJCQkJICAgZW5kYmxvY2sgOj0gTlVMTCk7CitEUk9QIFRB QkxFIGhvdF9pbmRleGVkX2NoZWNrOworCiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGhlYXB0 ZXN0OwogRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGVzdF9zdGF0c190YmxzcGM7CmRpZmYg LS1naXQgYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X2hlYXBhbS5jIGIvY29udHJpYi9hbWNo ZWNrL3ZlcmlmeV9oZWFwYW0uYwppbmRleCAyMGZmNThhYTc4Mi4uOTNhM2JjMzE4YTIgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfaGVhcGFtLmMKKysrIGIvY29udHJp Yi9hbWNoZWNrL3ZlcmlmeV9oZWFwYW0uYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUg ImFjY2Vzcy9kZXRvYXN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL2hlYXB0b2FzdC5oIgorI2luY2x1ZGUgImFjY2Vzcy9ob3RfaW5kZXhlZC5o IgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvcmVs YXRpb24uaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKQEAgLTUyMiw5ICs1MjMsMTIg QEAgdmVyaWZ5X2hlYXBhbShQR19GVU5DVElPTl9BUkdTKQogCQkJICovCiAJCQlpZiAoSXRl bUlkSXNSZWRpcmVjdGVkKGN0eC5pdGVtaWQpKQogCQkJewotCQkJCU9mZnNldE51bWJlciBy ZG9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGN0eC5pdGVtaWQpOworCQkJCU9mZnNldE51 bWJlciByZG9mZm51bTsKIAkJCQlJdGVtSWQJCXJkaXRlbTsKIAorCQkJCS8qIFJlc29sdmUg dGhlIHJlZGlyZWN0J3MgdGFyZ2V0IG9mZnNldC4gKi8KKwkJCQlyZG9mZm51bSA9IEl0ZW1J ZEdldFJlZGlyZWN0KGN0eC5pdGVtaWQpOworCiAJCQkJaWYgKHJkb2ZmbnVtIDwgRmlyc3RP ZmZzZXROdW1iZXIpCiAJCQkJewogCQkJCQlyZXBvcnRfY29ycnVwdGlvbigmY3R4LApAQCAt NjE1LDE4ICs2MTksNDcgQEAgdmVyaWZ5X2hlYXBhbShQR19GVU5DVElPTl9BUkdTKQogCQkJ Y3R4LnR1cGhkciA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKGN0eC5wYWdlLCBj dHguaXRlbWlkKTsKIAkJCWN0eC5uYXR0cyA9IEhlYXBUdXBsZUhlYWRlckdldE5hdHRzKGN0 eC50dXBoZHIpOwogCi0JCQkvKiBPaywgcmVhZHkgdG8gY2hlY2sgdGhpcyBuZXh0IHR1cGxl ICovCi0JCQljaGVja190dXBsZSgmY3R4LAotCQkJCQkJJnhtaW5fY29tbWl0X3N0YXR1c19v a1tjdHgub2ZmbnVtXSwKLQkJCQkJCSZ4bWluX2NvbW1pdF9zdGF0dXNbY3R4Lm9mZm51bV0p OworCQkJLyoKKwkJCSAqIEEgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgY29sbGFwc2Utc3Vy dml2b3Igc3R1YiBpcyBhbgorCQkJICogTFBfTk9STUFMIGl0ZW0gdGhhdCBpcyBub3QgYSBy ZWFsIHR1cGxlOiBIRUFQX0lOREVYRURfVVBEQVRFRAorCQkJICogd2l0aCBuYXR0cyA9PSAw LCBwZXJtYW5lbnRseSBpbnZpc2libGUgKEhFQVBfWE1JTl9JTlZBTElEKSwKKwkJCSAqIGNh cnJ5aW5nIGEgZm9yd2FyZCBsaW5rIGFuZCBhIG1vZGlmaWVkLWF0dHJzIGJpdG1hcC4gIFRo ZQorCQkJICogcGVyLXR1cGxlIGNoZWNrcyBhc3N1bWUgYSByZWFsIHR1cGxlIGFuZCB3b3Vs ZCBtaXNyZXBvcnQgaXQsIHNvCisJCQkgKiBza2lwIHRoZW07IHRoZSB1cGRhdGUtY2hhaW4g cGFzcyBiZWxvdyBzdGlsbCByZWNvcmRzIGl0cworCQkJICogZm9yd2FyZCBlZGdlIGFuZCB0 cmVhdHMgaXQgbGlrZSBhIHJlZGlyZWN0IChhIGZvcndhcmRpbmcgbm9kZSkuCisJCQkgKi8K KwkJCWlmICghSG90SW5kZXhlZEhlYWRlcklzU3R1YihjdHgudHVwaGRyKSkKKwkJCQljaGVj a190dXBsZSgmY3R4LAorCQkJCQkJCSZ4bWluX2NvbW1pdF9zdGF0dXNfb2tbY3R4Lm9mZm51 bV0sCisJCQkJCQkJJnhtaW5fY29tbWl0X3N0YXR1c1tjdHgub2ZmbnVtXSk7CiAKIAkJCS8q CiAJCQkgKiBJZiB0aGUgQ1RJRCBmaWVsZCBvZiB0aGlzIHR1cGxlIHNlZW1zIHRvIHBvaW50 IHRvIGFub3RoZXIgdHVwbGUKIAkJCSAqIG9uIHRoZSBzYW1lIHBhZ2UsIHJlY29yZCB0aGF0 IHR1cGxlIGFzIHRoZSBzdWNjZXNzb3Igb2YgdGhpcwotCQkJICogb25lLgorCQkJICogb25l LiAgQSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIHN0b3JlcyBpdHMgZm9yd2FyZCBsaW5rIGlu IHRoZQorCQkJICogdF9jdGlkIG9mZnNldCBvbmx5ICh0aGUgYmxvY2sgaGFsZiBpcyByZXB1 cnBvc2VkIHRvIGhvbGQgdGhlCisJCQkgKiBzdHViJ3Mgd3JpdGUtdGltZSBuYXR0cyksIHNv IHJlc29sdmUgaXRzIHN1Y2Nlc3NvciB2aWEgdGhlIHN0dWIKKwkJCSAqIGFjY2Vzc29yOyB0 aGUgZm9yd2FyZCB0YXJnZXQgaXMgYWx3YXlzIG9uIHRoZSBzYW1lIHBhZ2UuCiAJCQkgKi8K LQkJCW5leHRibGtubyA9IEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJihjdHgudHVwaGRy KS0+dF9jdGlkKTsKLQkJCW5leHRvZmZudW0gPSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJl cigmKGN0eC50dXBoZHIpLT50X2N0aWQpOworCQkJaWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0 dWIoY3R4LnR1cGhkcikpCisJCQl7CisJCQkJbmV4dGJsa25vID0gY3R4LmJsa25vOworCQkJ CW5leHRvZmZudW0gPSBIb3RJbmRleGVkU3R1YkdldEZvcndhcmQoY3R4LnR1cGhkcik7CisJ CQkJaWYgKG5leHRvZmZudW0gPT0gY3R4Lm9mZm51bSB8fAorCQkJCQluZXh0b2ZmbnVtIDwg Rmlyc3RPZmZzZXROdW1iZXIgfHwgbmV4dG9mZm51bSA+IG1heG9mZikKKwkJCQl7CisJCQkJ CXJlcG9ydF9jb3JydXB0aW9uKCZjdHgsCisJCQkJCQkJCQkgIHBzcHJpbnRmKCJIT1QtaW5k ZXhlZCBzdHViIGZvcndhcmQgbGluayB0byBpdGVtIGF0IG9mZnNldCAlZCBpcyBvdXQgb2Yg cmFuZ2Ugb3Igc2VsZi1yZWZlcmVudGlhbCAodmFsaWQgcmFuZ2UgJWQuLiVkKSIsCisJCQkJ CQkJCQkJCSAgIG5leHRvZmZudW0sCisJCQkJCQkJCQkJCSAgIEZpcnN0T2Zmc2V0TnVtYmVy LCBtYXhvZmYpKTsKKwkJCQkJY29udGludWU7CisJCQkJfQorCQkJfQorCQkJZWxzZQorCQkJ eworCQkJCW5leHRibGtubyA9IEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJihjdHgudHVw aGRyKS0+dF9jdGlkKTsKKwkJCQluZXh0b2ZmbnVtID0gSXRlbVBvaW50ZXJHZXRPZmZzZXRO dW1iZXIoJihjdHgudHVwaGRyKS0+dF9jdGlkKTsKKwkJCX0KIAkJCWlmIChuZXh0Ymxrbm8g PT0gY3R4LmJsa25vICYmIG5leHRvZmZudW0gIT0gY3R4Lm9mZm51bSAmJgogCQkJCW5leHRv ZmZudW0gPj0gRmlyc3RPZmZzZXROdW1iZXIgJiYgbmV4dG9mZm51bSA8PSBtYXhvZmYpCiAJ CQkJc3VjY2Vzc29yW2N0eC5vZmZudW1dID0gbmV4dG9mZm51bTsKQEAgLTY3NSw3ICs3MDgs NyBAQCB2ZXJpZnlfaGVhcGFtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJICovCiAJCQkJQXNz ZXJ0KEl0ZW1JZElzTm9ybWFsKG5leHRfbHApKTsKIAotCQkJCS8qIENhbiBvbmx5IHJlZGly ZWN0IHRvIGEgSE9UIHR1cGxlLiAqLworCQkJCS8qIEEgcmVkaXJlY3QgdGFyZ2V0cyB0aGUg Zmlyc3Qgc3Vydml2aW5nIGNoYWluIG1lbWJlci4gKi8KIAkJCQluZXh0X2h0dXAgPSAoSGVh cFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShjdHgucGFnZSwgbmV4dF9scCk7CiAJCQkJaWYg KCFIZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KG5leHRfaHR1cCkpCiAJCQkJewpAQCAtNjg3 LDYgKzcyMCwxOSBAQCB2ZXJpZnlfaGVhcGFtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJLyog SE9UIGNoYWlucyBzaG91bGQgbm90IGludGVyc2VjdC4gKi8KIAkJCQlpZiAocHJlZGVjZXNz b3JbbmV4dG9mZm51bV0gIT0gSW52YWxpZE9mZnNldE51bWJlcikKIAkJCQl7CisJCQkJCS8q CisJCQkJCSAqIEluIHRoZSBIT1QvU0lVIG1vZGVsIHNldmVyYWwgcmVkaXJlY3RzIGxlZ2l0 aW1hdGVseQorCQkJCQkgKiBmb3J3YXJkIHRvIHRoZSBzYW1lIGxpdmUgdHVwbGU6IHdoZW4g YSBjaGFpbiBjb2xsYXBzZXMsCisJCQkJCSAqIHRoZSByb290IGFuZCBlYWNoIGVudHJ5LWJl YXJpbmcgZGVhZCBtZW1iZXIgYmVjb21lIGEKKwkJCQkJICogcmVkaXJlY3QgdG8gZmlyc3Rf bGl2ZSBzbyBldmVyeSBzdGFsZSBidHJlZSBlbnRyeSBzdGlsbAorCQkJCQkgKiByZXNvbHZl cyB0aGVyZSAodGhlIHJlYWQgcGF0aCB0aGVuIHJlY2hlY2tzIHRoZSBsZWFmCisJCQkJCSAq IGtleSkuICBNdWx0aXBsZSBwcmVkZWNlc3NvcnMgYXJlIHRoZXJlZm9yZSBleHBlY3RlZAor CQkJCQkgKiB3aGVuIHRoZSB0YXJnZXQgaXMgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQ7IGtl ZXAgdGhlCisJCQkJCSAqIGZpcnN0IHByZWRlY2Vzc29yIGFuZCBkbyBub3QgcmVwb3J0IGl0 IGFzIGNvcnJ1cHRpb24uCisJCQkJCSAqLworCQkJCQlpZiAoKG5leHRfaHR1cC0+dF9pbmZv bWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKKwkJCQkJCWNvbnRpbnVlOwor CiAJCQkJCXJlcG9ydF9jb3JydXB0aW9uKCZjdHgsCiAJCQkJCQkJCQkgIHBzcHJpbnRmKCJy ZWRpcmVjdCBsaW5lIHBvaW50ZXIgcG9pbnRzIHRvIG9mZnNldCAlZCwgYnV0IG9mZnNldCAl ZCBhbHNvIHBvaW50cyB0aGVyZSIsCiAJCQkJCQkJCQkJCSAgIG5leHRvZmZudW0sIHByZWRl Y2Vzc29yW25leHRvZmZudW1dKSk7CkBAIC03MDEsNiArNzQ3LDMwIEBAIHZlcmlmeV9oZWFw YW0oUEdfRlVOQ1RJT05fQVJHUykKIAkJCQljb250aW51ZTsKIAkJCX0KIAorCQkJLyoKKwkJ CSAqIEEgY29sbGFwc2Utc3Vydml2b3Igc3R1YiBmb3J3YXJkcyBsaWtlIGEgcmVkaXJlY3Q6 IGl0IGlzIG5vdCBhCisJCQkgKiByZWFsIHR1cGxlLCBzbyBkb24ndCBhcHBseSB0aGUgdHVw bGUtdG8tdHVwbGUgdXBkYXRlLWNoYWluCisJCQkgKiBjaGVja3MsIGJ1dCBkbyByZWNvcmQg dGhlIHByZWRlY2Vzc29yIGVkZ2UgdG8gaXRzIHRhcmdldCBzbyB0aGUKKwkJCSAqIGxpdmUg dHVwbGUgaXQgdWx0aW1hdGVseSBmb3J3YXJkcyB0byBpcyBub3QgbWlzdGFrZW4gZm9yIGEK KwkJCSAqIGNoYWluIHJvb3QuICBJdHMgdGFyZ2V0IG11c3QgYmUgaGVhcC1vbmx5IChhbm90 aGVyIHN0dWIgb3IgdGhlCisJCQkgKiBsaXZlIGhlYXAtb25seSB0dXBsZSkuCisJCQkgKi8K KwkJCWN1cnJfaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKGN0eC5wYWdl LCBjdXJyX2xwKTsKKwkJCWlmIChIb3RJbmRleGVkSGVhZGVySXNTdHViKGN1cnJfaHR1cCkp CisJCQl7CisJCQkJaWYgKEl0ZW1JZElzTm9ybWFsKG5leHRfbHApKQorCQkJCXsKKwkJCQkJ bmV4dF9odHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0oY3R4LnBhZ2UsIG5l eHRfbHApOworCQkJCQlpZiAoIUhlYXBUdXBsZUhlYWRlcklzSGVhcE9ubHkobmV4dF9odHVw KSkKKwkJCQkJCXJlcG9ydF9jb3JydXB0aW9uKCZjdHgsCisJCQkJCQkJCQkJICBwc3ByaW50 ZigiSE9ULWluZGV4ZWQgc3R1YiBmb3J3YXJkcyB0byBhIG5vbi1oZWFwLW9ubHkgdHVwbGUg YXQgb2Zmc2V0ICVkIiwKKwkJCQkJCQkJCQkJCSAgIG5leHRvZmZudW0pKTsKKwkJCQkJZWxz ZSBpZiAocHJlZGVjZXNzb3JbbmV4dG9mZm51bV0gPT0gSW52YWxpZE9mZnNldE51bWJlcikK KwkJCQkJCXByZWRlY2Vzc29yW25leHRvZmZudW1dID0gY3R4Lm9mZm51bTsKKwkJCQl9CisJ CQkJY29udGludWU7CisJCQl9CisKIAkJCS8qCiAJCQkgKiBJZiB0aGUgbmV4dCBsaW5lIHBv aW50ZXIgaXMgYSByZWRpcmVjdCwgb3IgaWYgaXQncyBhIHR1cGxlIGJ1dAogCQkJICogdGhl IFhNQVggb2YgdGhpcyB0dXBsZSBkb2Vzbid0IG1hdGNoIHRoZSBYTUlOIG9mIHRoZSBuZXh0 CkBAIC03MDksNyArNzc5LDYgQEAgdmVyaWZ5X2hlYXBhbShQR19GVU5DVElPTl9BUkdTKQog CQkJICovCiAJCQlpZiAoSXRlbUlkSXNSZWRpcmVjdGVkKG5leHRfbHApKQogCQkJCWNvbnRp bnVlOwotCQkJY3Vycl9odHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0oY3R4 LnBhZ2UsIGN1cnJfbHApOwogCQkJY3Vycl94bWF4ID0gSGVhcFR1cGxlSGVhZGVyR2V0VXBk YXRlWGlkKGN1cnJfaHR1cCk7CiAJCQluZXh0X2h0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQ YWdlR2V0SXRlbShjdHgucGFnZSwgbmV4dF9scCk7CiAJCQluZXh0X3htaW4gPSBIZWFwVHVw bGVIZWFkZXJHZXRYbWluKG5leHRfaHR1cCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Vw Z3JhZGUvbWVzb24uYnVpbGQgYi9zcmMvYmluL3BnX3VwZ3JhZGUvbWVzb24uYnVpbGQKaW5k ZXggZmZiZjZhZThkNzUuLjBhNmZhMGRjZmYyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Vw Z3JhZGUvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxk CkBAIC02OSw2ICs2OSw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAwNl90cmFuc2Zlcl9t b2Rlcy5wbCcsCiAgICAgICAndC8wMDdfbXVsdGl4YWN0X2NvbnZlcnNpb24ucGwnLAogICAg ICAgJ3QvMDA4X2V4dGVuc2lvbl9jb250cm9sX3BhdGgucGwnLAorICAgICAgJ3QvMDA5X2hv dF9pbmRleGVkLnBsJywKICAgICBdLAogICAgICdkZXBzJzogW3Rlc3RfZXh0XSwKICAgICAn dGVzdF9rd2FyZ3MnOiB7J3ByaW9yaXR5JzogNDB9LCAjIHBnX3VwZ3JhZGUgdGVzdHMgYXJl IHNsb3cKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwOV9ob3RfaW5kZXhl ZC5wbCBiL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwOV9ob3RfaW5kZXhlZC5wbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjcxMTI5YWUwM2QKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4ZWQucGwKQEAg LTAsMCArMSwxMTggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorCisjIHBnX3VwZ3JhZGUgbXVzdCBwcmVzZXJ2ZSBIT1Qt aW5kZXhlZCBvbi1kaXNrIHN0YXRlLiAgQSByZWxhdGlvbiB0aGF0IGhhcworIyBhY2N1bXVs YXRlZCBIT1QtaW5kZXhlZCBjaGFpbnMgLS0gaW5jbHVkaW5nIGEgdmFsdWUgY3ljbGVkIGF3 YXkgYW5kIGJhY2sKKyMgKEFCQSksIGFuIG91dC1vZi1saW5lIChUT0FTVCkgaW5kZXhlZCBj b2x1bW4sIGFuZCBjaGFpbnMgY29sbGFwc2VkIHRvCisjIHhpZC1mcmVlIGZvcndhcmRpbmcg c3R1YnMgYnkgVkFDVVVNIC0tIG11c3QgY29tZSB0aHJvdWdoIGFuIHVwZ3JhZGUgd2l0aCBp dHMKKyMgZGF0YSBpbnRhY3QsIGl0cyBpbmRleGVzIHN0cnVjdHVyYWxseSBzb3VuZCwgYW5k IGl0cyBjaGFpbnMgc3RpbGwgc2Nhbm5pbmcKKyMgY29ycmVjdGx5LiAgcGdfdXBncmFkZSB0 cmFuc2ZlcnMgaGVhcCBhbmQgaW5kZXggZmlsZXMgdmVyYmF0aW0sIHNvIHRoaXMgaXMKKyMg cmVhbGx5IGEgY2hlY2sgdGhhdCB0aGUgbmV3LXN0YXRlIGJpdHMgKEhFQVBfSU5ERVhFRF9V UERBVEVELCBjb2xsYXBzZSBzdHVicykKKyMgYXJlIG5vdCByZWplY3RlZCBieSBwZ191cGdy YWRlJ3MgY2hlY2tzIGFuZCBzdGF5IGNvcnJlY3Qgb24gdGhlIG5ldyBjbHVzdGVyLgorCit1 c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2Ug VGVzdDo6TW9yZTsKKworbXkgJG1vZGUgPSAkRU5We1BHX1RFU1RfUEdfVVBHUkFERV9NT0RF fSB8fCAnLS1jb3B5JzsKKworbXkgJG9sZG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ29sZF9ub2RlJyk7Ciskb2xkbm9kZS0+aW5pdDsKKyRvbGRub2RlLT5zdGFy dDsKKworIyBCdWlsZCBhIHJlbGF0aW9uIHdpdGggc2V2ZXJhbCBzZWNvbmRhcnkgaW5kZXhl cyBzbyBzaW5nbGUtY29sdW1uIHVwZGF0ZXMKKyMgc3RheSBIT1QtaW5kZXhlZCwgdGhlbiBl eGVyY2lzZSB0aGUgY2FzZXMgdGhhdCBwcm9kdWNlIGludGVyZXN0aW5nIG9uLWRpc2sKKyMg c3RhdGUuCiskb2xkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJQ1JFQVRFIEVY VEVOU0lPTiBhbWNoZWNrOworCUNSRUFURSBUQUJMRSBoaSAoaWQgaW50IFBSSU1BUlkgS0VZ LCBrIGludCwgdiBpbnQsIGJpZyB0ZXh0KQorCSAgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsK KwlBTFRFUiBUQUJMRSBoaSBBTFRFUiBDT0xVTU4gYmlnIFNFVCBTVE9SQUdFIEVYVEVSTkFM OworCUNSRUFURSBJTkRFWCBoaV9rIE9OIGhpIChrKTsKKwlDUkVBVEUgSU5ERVggaGlfdiBP TiBoaSAodik7CisJQ1JFQVRFIElOREVYIGhpX2JpZyBPTiBoaSAoYmlnKTsKKwlJTlNFUlQg SU5UTyBoaSBTRUxFQ1QgZywgZywgZyAqIDEwLCByZXBlYXQoY2hyKDY0ICsgZyksIDIwMDAp CisJICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgZzsKK30pOworCisjIEludGVybGVh dmUgdXBkYXRlcyBvZiBkaWZmZXJlbnQgaW5kZXhlZCBjb2x1bW5zIG9uIHRoZSBzYW1lIHJv d3MuICBBIG1lbWJlcgorIyB0aGF0IGNoYW5nZWQgYSBjb2x1bW4gbm90IGNoYW5nZWQgYWdh aW4gYnkgYSBsYXRlciBob3Agc3Vydml2ZXMgVkFDVVVNIGFzIGEKKyMgY29sbGFwc2Ugc3R1 YjsgdGhlIHJlc3QgYXJlIHJlY2xhaW1lZC4gIFJvdyAxIGFkZGl0aW9uYWxseSBjeWNsZXMg ayBhd2F5IGFuZAorIyBiYWNrIChBQkEpLCBhbmQgcm93IDIgcmV3cml0ZXMgaXRzIHRvYXN0 ZWQgaW5kZXhlZCBjb2x1bW4uCiskb2xkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7 CisJVVBEQVRFIGhpIFNFVCBrID0gayArIDEwMCBXSEVSRSBpZCA8PSAxMDsgICAtLSBjaGFu Z2VzIGsKKwlVUERBVEUgaGkgU0VUIHYgPSB2ICsgMSAgIFdIRVJFIGlkIDw9IDEwOyAgICAt LSBjaGFuZ2VzIHYgKHN1cnZpdmVzIGFzIHN0dWIpCisJVVBEQVRFIGhpIFNFVCBrID0gayAt IDEwMCBXSEVSRSBpZCA8PSAxMDsgICAgLS0gayBiYWNrIHRvIG9yaWdpbmFsIChBQkEpCisJ VVBEQVRFIGhpIFNFVCBiaWcgPSByZXBlYXQoJ1onLCAyMDAwKSBXSEVSRSBpZCA9IDI7Cit9 KTsKKyMgQ29sbGFwc2UgZGVhZCBjaGFpbiBtZW1iZXJzIHRvIHN0dWJzLgorJG9sZG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGkn KTsKKworIyBUaGUgcHJlLXVwZ3JhZGUgc3RhdGUgbXVzdCBhbHJlYWR5IGJlIHNlbGYtY29u c2lzdGVudC4KK2lzKCAkb2xkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VM RUNUIGNvdW50KCopIEZST00gdmVyaWZ5X2hlYXBhbSgnaGknKX0pLAorCScwJywgJ3ByZS11 cGdyYWRlIGhlYXAgaXMgY29uc2lzdGVudCcpOworCisjIFNuYXBzaG90IHRoZSBkYXRhIHdl IHdpbGwgY29tcGFyZSBhZnRlciB0aGUgdXBncmFkZS4KK215ICRleHBlY3QgPSAkb2xkbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgaWQsIGssIHYsIGxlbmd0aChi aWcpIEZST00gaGkgT1JERVIgQlkgaWR9KTsKKworJG9sZG5vZGUtPnN0b3A7CisKKyMgTmV3 IGNsdXN0ZXIsIHNhbWUgdmVyc2lvbi4KK215ICRuZXdub2RlID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCduZXdfbm9kZScpOworJG5ld25vZGUtPmluaXQ7CisKK215ICRv bGRiaW5kaXIgPSAkb2xkbm9kZS0+Y29uZmlnX2RhdGEoJy0tYmluZGlyJyk7CitteSAkbmV3 YmluZGlyID0gJG5ld25vZGUtPmNvbmZpZ19kYXRhKCctLWJpbmRpcicpOworCisjIFJ1biBw Z191cGdyYWRlIGZyb20gYSB3cml0YWJsZSBkaXJlY3RvcnkgKG1hdGNoZXMgMDAyX3BnX3Vw Z3JhZGUpLgorY2hkaXIgJHtQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dG1wX2NoZWNrfTsK KworY29tbWFuZF9vaygKKwlbCisJCSdwZ191cGdyYWRlJywgJy0tbm8tc3luYycsCisJCSct LW9sZC1kYXRhZGlyJyA9PiAkb2xkbm9kZS0+ZGF0YV9kaXIsCisJCSctLW5ldy1kYXRhZGly JyA9PiAkbmV3bm9kZS0+ZGF0YV9kaXIsCisJCSctLW9sZC1iaW5kaXInID0+ICRvbGRiaW5k aXIsCisJCSctLW5ldy1iaW5kaXInID0+ICRuZXdiaW5kaXIsCisJCSctLXNvY2tldGRpcicg PT4gJG5ld25vZGUtPmhvc3QsCisJCSctLW9sZC1wb3J0JyA9PiAkb2xkbm9kZS0+cG9ydCwK KwkJJy0tbmV3LXBvcnQnID0+ICRuZXdub2RlLT5wb3J0LAorCQkkbW9kZSwKKwldLAorCSdy dW4gb2YgcGdfdXBncmFkZSBmb3IgSE9ULWluZGV4ZWQgcmVsYXRpb24nKTsKKworJG5ld25v ZGUtPnN0YXJ0OworCisjIERhdGEgc3Vydml2ZWQgaW50YWN0LgorbXkgJGdvdCA9ICRuZXdu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBpZCwgaywgdiwgbGVuZ3Ro KGJpZykgRlJPTSBoaSBPUkRFUiBCWSBpZH0pOworaXMoJGdvdCwgJGV4cGVjdCwgJ0hPVC1p bmRleGVkIHRhYmxlIGRhdGEgcHJlc2VydmVkIGFjcm9zcyBwZ191cGdyYWRlJyk7CisKKyMg SGVhcCBhbmQgaW5kZXhlcyBhcmUgc3RydWN0dXJhbGx5IHNvdW5kIG9uIHRoZSBuZXcgY2x1 c3Rlci4KK2lzKCAkbmV3bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNU IGNvdW50KCopIEZST00gdmVyaWZ5X2hlYXBhbSgnaGknKX0pLAorCScwJywgJ3Bvc3QtdXBn cmFkZSBoZWFwIGlzIGNvbnNpc3RlbnQgKGNvbGxhcHNlIHN0dWJzIHJlY29nbmlzZWQpJyk7 CitpcyggJG5ld25vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCQlTRUxFQ1QgY291 bnQoKikgRlJPTSAoCisJCQlTRUxFQ1QgYnRfaW5kZXhfY2hlY2soYy5vaWQpCisJCQlGUk9N IHBnX2NsYXNzIGMgSk9JTiBwZ19pbmRleCBpIE9OIGkuaW5kZXhyZWxpZCA9IGMub2lkCisJ CQlXSEVSRSBpLmluZHJlbGlkID0gJ2hpJzo6cmVnY2xhc3MpIHN9KSwKKwknNCcsICdwb3N0 LXVwZ3JhZGUgaW5kZXhlcyBwYXNzIGJ0X2luZGV4X2NoZWNrJyk7CisKKyMgVGhlIEFCQSBj aGFpbiBvbiByb3cgMSBzdGlsbCBzY2FucyBjb3JyZWN0bHkgdGhyb3VnaCBhIGZvcmNlZCBp bmRleCBzY2FuOgorIyBrPTEgcmV0dXJucyBleGFjdGx5IHRoZSBvbmUgbGl2ZSByb3csIGFu ZCBpdHMgc3VwZXJzZWRlZCB2YWx1ZSBpcyBnb25lLgoraXMoICRuZXdub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcXsKKwkJU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOyBTRVQgZW5h YmxlX2JpdG1hcHNjYW4gPSBvZmY7CisJCVNFTEVDVCBjb3VudCgqKSBGUk9NIGhpIFdIRVJF IGsgPSAxfSksCisJJzEnLCAncG9zdC11cGdyYWRlIGluZGV4IHNjYW4gcmV0dXJucyB0aGUg QUJBIHJvdyBvbmNlJyk7CitpcyggJG5ld25vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx eworCQlTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7IFNFVCBlbmFibGVfYml0bWFwc2NhbiA9 IG9mZjsKKwkJU0VMRUNUIGNvdW50KCopIEZST00gaGkgV0hFUkUgayA9IDEwMX0pLAorCScw JywgJ3Bvc3QtdXBncmFkZSBpbmRleCBzY2FuIGRyb3BzIHRoZSBzdXBlcnNlZGVkIHZhbHVl Jyk7CisKKyRuZXdub2RlLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNTAuMQoK --ffc971266f692fe98c1088dac35356ed85e7d5db Content-Disposition: attachment; filename*0="v63-0008-Add-HOT-indexed-statistics-and-the-comprehensive.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v63-0008-Add-HOT-indexed-statistics-and-the-comprehensive.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA4NWE4NjM2MDQxNDhiZWZiN2UxYTY4MDJmOTRmYzY5OWRlNGU4ZjFlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTozODoxMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjYzIDA4 LzEwXSBBZGQgSE9ULWluZGV4ZWQgc3RhdGlzdGljcyBhbmQgdGhlIGNvbXByZWhlbnNpdmUK IHRlc3Qgc3VpdGUKCkV4cG9zZSB0aGUgSE9ULWluZGV4ZWQgYWN0aXZpdHkgY291bnRlcnMg bWFpbnRhaW5lZCBieSB0aGUgd3JpdGUgcGF0aDoKcGdfc3RhdF9hbGxfdGFibGVzLm5fdHVw X2hvdF9pbmRleGVkX3VwZCwgdGhlIHBlci1pbmRleApuX3R1cF9ob3RfaW5kZXhlZF91cGRf bWF0Y2hlZCAvIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkIGNvdW50ZXJzIGluCnBn X3N0YXRfYWxsX2luZGV4ZXMsIGFuZCBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygp IHJlcG9ydGluZyBwZXItcmVsYXRpb24KSE9ULWluZGV4ZWQgY2hhaW4gY29tcG9zaXRpb24u ICBEb2N1bWVudCB0aGVtIGluIG1vbml0b3Jpbmcuc2dtbCBhbmQgdGhlClJFQURNRS4KCldp dGggc3RhdGlzdGljcywgcHJ1bmUvY29sbGFwc2UsIGFuZCBhbWNoZWNrIHJlY29nbml0aW9u IGFsbCBpbiBwbGFjZSwgYWRkIHRoZQpmdWxsIGZlYXR1cmUgdGVzdCBzdWl0ZSwgd2hpY2gg dXNlcyB0aG9zZSBmYWNpbGl0aWVzIHRvIHZlcmlmeSBiZWhhdmlvcjoKCi0gaG90X2luZGV4 ZWRfdXBkYXRlcyAocmVncmVzc2lvbik6IGVsaWdpYmlsaXR5IGFuZCBjbGFzc2lmaWNhdGlv bjsgc2VsZWN0aXZlCiAgbWFpbnRlbmFuY2UgYWNyb3NzIG11bHRpcGxlL2NvbXBvc2l0ZSBp bmRleGVzOyB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgcmVhZAogIHBhdGggZm9yIGVxdWFsaXR5 LCByYW5nZSwgYW5kIGluZXF1YWxpdHkgc2NhbnM7IGEga2V5IGN5Y2xlZCBhd2F5IGFuZCBi YWNrCiAgKEFCQSksIGluY2x1ZGluZyBhY3Jvc3MgdHdvIGRpc3RpbmN0IGxpdmUgcm93czsg VE9BU1RlZCBpbmRleGVkIGNvbHVtbnM7CiAgcGFydGlhbC1pbmRleCBwcmVkaWNhdGUgZmxp cHMgKGtleSBhbmQgbm9uLWtleSBwcmVkaWNhdGUgY29sdW1ucyk7CiAgdHJpZ2dlci1tb2Rp ZmllZCBpbmRleGVkIGNvbHVtbnM7IGV4Y2x1c2lvbi1jb25zdHJhaW50IHRhYmxlczsgcGFy dGl0aW9uZWQKICB0YWJsZXM7IG5vbi1idHJlZSBhY2Nlc3MgbWV0aG9kcyAoaGFzaCwgR0lO LCBHaVNUKTsgYSBVTklRVUUgaW5kZXggb24gYSB0eXBlCiAgd2hlcmUgaW1hZ2UgZXF1YWxp dHkgZGlmZmVycyBmcm9tIG9wZXJhdG9yIGVxdWFsaXR5OyBDUkVBVEUgSU5ERVggLyBSRUlO REVYCiAgYW5kIERST1AgSU5ERVggb3ZlciBsaXZlIGNoYWluczsgcHJ1bmUgcmVjbGFtYXRp b24sIHN0dWIgbWl4ZXMsIGFuZAogIHJlLWNvbGxhcHNlIGFjcm9zcyBwYXJ0aWFsIFZBQ1VV TXM7IHRoZSBuZXZlci1hbGwtdmlzaWJsZSBndWFyZDsgYW5kIERETAogIGFmdGVyIGEgY2hh aW4gZXhpc3RzIChBREQgQ09MVU1OIGNyb3NzaW5nIGEgYml0bWFwLXNpemUgYm91bmRhcnks IERST1AKICBDT0xVTU4pLgotIGhvdF9pbmRleGVkX2FkdmVyc2FyaWFsIChpc29sYXRpb24p OiBjb25jdXJyZW50IFVQREFURSAvIFZBQ1VVTSAvIHBydW5lIGFuZAogIGluZGV4IHNjYW5z LCBrZXkgY3ljbGluZywgYWJvcnRzLCBhbmQgcmVhZGVyIGNvbnNpc3RlbmN5IGFjcm9zcyBh IGNvbmN1cnJlbnQKICBjb2xsYXBzZS4KLSAwNTRfaG90X2luZGV4ZWRfcmVjb3ZlcnkgKHJl Y292ZXJ5KTogV0FMIHJlcGxheSBvZiB0aGUgY2hhaW4gYW5kIGl0cyBjb2xsYXBzZQogIHVu ZGVyIHdhbF9jb25zaXN0ZW5jeV9jaGVja2luZy4KLSBwZ19zdXJnZXJ5IGhhbmRsaW5nIG9m IEhPVC1pbmRleGVkIHR1cGxlcyBhbmQgY29sbGFwc2Utc3Vydml2b3Igc3R1YnMuCgpBdXRo b3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+Ci0tLQogY29udHJpYi9wYWdlaW5z cGVjdC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgICAgOSArLQogLi4uL2V4cGVjdGVk L2hvdF9pbmRleGVkX3VwZGF0ZXMub3V0ICAgICAgICAgIHwgMjIwNiArKysrKysrKysrKysr KysrKwogLi4uL3BhZ2VpbnNwZWN0fS9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQgICAgIHwg ICAgMyArLQogY29udHJpYi9wYWdlaW5zcGVjdC9tZXNvbi5idWlsZCAgICAgICAgICAgICAg IHwgICAgMiArCiAuLi4vcGFnZWluc3BlY3Qvc3FsL2hvdF9pbmRleGVkX3VwZGF0ZXMuc3Fs ICAgfCAxNTAxICsrKysrKysrKysrCiAuLi4vcGFnZWluc3BlY3R9L3NxbC9ob3RfdXBkYXRl cy5zcWwgICAgICAgICAgfCAgICAzICstCiBjb250cmliL3BnX3N1cmdlcnkvTWFrZWZpbGUg ICAgICAgICAgICAgICAgICAgfCAgICAxICsKIGNvbnRyaWIvcGdfc3VyZ2VyeS9leHBlY3Rl ZC9oZWFwX3N1cmdlcnkub3V0ICB8ICAgODMgKwogY29udHJpYi9wZ19zdXJnZXJ5L2hlYXBf c3VyZ2VyeS5jICAgICAgICAgICAgIHwgICAxNiArCiBjb250cmliL3BnX3N1cmdlcnkvc3Fs L2hlYXBfc3VyZ2VyeS5zcWwgICAgICAgfCAgIDUzICsKIGRvYy9zcmMvc2dtbC9tb25pdG9y aW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAgNTcgKwogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9ob3RfaW5kZXhlZF9zdGF0cy5jICAgfCAgMTg4ICsrCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9tZXNvbi5idWlsZCAgICAgICAgICAgfCAgICAxICsKIHNyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICB8ICAgIDQgKwogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgICAgICAgICAgIHwgICAxMiArCiBzcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgIDI4ICsKIC4uLi9l eHBlY3RlZC9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5vdXQgICAgICB8ICAxMzkgKysKIHNy Yy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgICAgICAgICB8ICAgIDEgKwog Li4uL3NwZWNzL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLnNwZWMgICAgICAgIHwgIDEyMyAr CiBzcmMvdGVzdC9yZWNvdmVyeS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgfCAgICAz ICstCiBzcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgfCAg ICAxICsKIC4uLi9yZWNvdmVyeS90LzA1NV9ob3RfaW5kZXhlZF9yZWNvdmVyeS5wbCAgICB8 ICAxNDkgKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICAg ICB8ICAgMTIgKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAg ICAgIHwgICAgNSAtCiAyNSBmaWxlcyBjaGFuZ2VkLCA0NTkyIGluc2VydGlvbnMoKyksIDkg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wYWdlaW5zcGVjdC9l eHBlY3RlZC9ob3RfaW5kZXhlZF91cGRhdGVzLm91dAogcmVuYW1lIHtzcmMvdGVzdC9yZWdy ZXNzID0+IGNvbnRyaWIvcGFnZWluc3BlY3R9L2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dCAo OTklKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL2hvdF9p bmRleGVkX3VwZGF0ZXMuc3FsCiByZW5hbWUge3NyYy90ZXN0L3JlZ3Jlc3MgPT4gY29udHJp Yi9wYWdlaW5zcGVjdH0vc3FsL2hvdF91cGRhdGVzLnNxbCAoOTglKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hvdF9pbmRleGVkX3N0YXRzLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaG90X2luZGV4 ZWRfYWR2ZXJzYXJpYWwub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0 aW9uL3NwZWNzL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLnNwZWMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9yZWNvdmVyeS90LzA1NV9ob3RfaW5kZXhlZF9yZWNvdmVyeS5wbAoK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3QvTWFrZWZpbGUgYi9jb250cmliL3Bh Z2VpbnNwZWN0L01ha2VmaWxlCmluZGV4IDA5Nzc0ZmQzNDBjLi5lZTc5NmY1ZjI1ZiAxMDA2 NDQKLS0tIGEvY29udHJpYi9wYWdlaW5zcGVjdC9NYWtlZmlsZQorKysgYi9jb250cmliL3Bh Z2VpbnNwZWN0L01ha2VmaWxlCkBAIC0yMyw2ICsyMywxMSBAQCBEQVRBID0gIHBhZ2VpbnNw ZWN0LS0xLjEzLS0xLjE0LnNxbCBwYWdlaW5zcGVjdC0tMS4xMi0tMS4xMy5zcWwgXAogCXBh Z2VpbnNwZWN0LS0xLjAtLTEuMS5zcWwKIFBHRklMRURFU0MgPSAicGFnZWluc3BlY3QgLSBm dW5jdGlvbnMgdG8gaW5zcGVjdCBjb250ZW50cyBvZiBkYXRhYmFzZSBwYWdlcyIKIAorIyBo b3RfdXBkYXRlcyAvIGhvdF9pbmRleGVkX3VwZGF0ZXMgdmVyaWZ5IEhPVCBhbmQgSE9ULWlu ZGV4ZWQgKFNJVSkgaGVhcAorIyBiZWhhdmlvdXIgdXNpbmcgcGFnZWluc3BlY3QsIGFtY2hl Y2sgYW5kIGJ0cmVlX2dpc3QgdG9nZXRoZXIsIHNvIHRoZXkgbGl2ZQorIyBoZXJlICh3aGVy ZSBwYWdlaW5zcGVjdCBpcyBidWlsdCkgYW5kIHB1bGwgaW4gdGhlIG90aGVyIHR3byBleHRl bnNpb25zLgorRVhUUkFfSU5TVEFMTCA9IGNvbnRyaWIvYW1jaGVjayBjb250cmliL2J0cmVl X2dpc3QKKwogIyAicGFnZSIgaXMgZmlyc3QgYmVjYXVzZSBpdCBjcmVhdGVzIHRoZSBleHRl bnNpb24uCiBSRUdSRVNTID0gXAogCXBhZ2UgXApAQCAtMzIsNyArMzcsOSBAQCBSRUdSRVNT ID0gXAogCWdpbiBcCiAJZ2lzdCBcCiAJaGFzaCBcCi0Jb2xkZXh0dmVyc2lvbnMKKwlvbGRl eHR2ZXJzaW9ucyBcCisJaG90X3VwZGF0ZXMgXAorCWhvdF9pbmRleGVkX3VwZGF0ZXMKIAog aWZkZWYgVVNFX1BHWFMKIFBHX0NPTkZJRyA9IHBnX2NvbmZpZwpkaWZmIC0tZ2l0IGEvY29u dHJpYi9wYWdlaW5zcGVjdC9leHBlY3RlZC9ob3RfaW5kZXhlZF91cGRhdGVzLm91dCBiL2Nv bnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvaG90X2luZGV4ZWRfdXBkYXRlcy5vdXQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJiZDUxNTY5MTczCi0tLSAv ZGV2L251bGwKKysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9leHBlY3RlZC9ob3RfaW5kZXhl ZF91cGRhdGVzLm91dApAQCAtMCwwICsxLDIyMDYgQEAKKy0tCistLSBIT1RfSU5ERVhFRF9V UERBVEVTCistLSBUZXN0IEhPVC1pbmRleGVkIHVwZGF0ZSAoaG90LWluZGV4ZWQpLCBha2Eg SE9ULWluZGV4ZWQsIGJlaGF2aW91cgorLS0KKy0tIEV2ZXJ5IFVQREFURSBpbiB0aGlzIGZp bGUgbW9kaWZpZXMgYXQgbGVhc3Qgb25lIG5vbi1zdW1tYXJpemluZworLS0gaW5kZXhlZCBh dHRyaWJ1dGUuICBPbiBhIHByZS1ob3QtaW5kZXhlZCBzZXJ2ZXIgYWxsIG9mIHRoZXNlIHdv dWxkIGJlCistLSBub24tSE9UOyBvbiB0aGUgaG90LWluZGV4ZWQgYnJhbmNoIGVhY2ggZWxp Z2libGUgdXBkYXRlIHN0YXlzIG9uLXBhZ2UgYW5kCistLSBpbnNlcnRzIGludG8gb25seSB0 aGUgaW5kZXhlcyB3aG9zZSBhdHRyaWJ1dGVzIGFjdHVhbGx5IGNoYW5nZWQuCistLQorLS0g V2UgdmVyaWZ5IGZvdXIgdGhpbmdzOgorLS0gICAoQSkgcGdfc3RhdCBjb3VudGVyczogSE9U IGFuZCBob3QtaW5kZXhlZCBjb3VudHMgaW5jcmVtZW50IGFzIGV4cGVjdGVkCistLSAgIChC KSBpbmRleCBsb29rdXBzIHJldHVybiB0aGUgbmV3IHZhbHVlIGFuZCBub3QgdGhlIHN0YWxl IHZhbHVlCistLSAgICAgICBmb3IgRVFVQUxJVFkgcXVlcmllcyAodGhlIHJlYWQtc2lkZSBz dGFsZW5lc3MgdGVzdCBkcm9wcyBhCistLSAgICAgICBsZWFmIHdob3NlIGNvdmVyZWQgYXR0 cmlidXRlIGNoYW5nZWQgb24gdGhlIHdheSB0byB0aGUgbGl2ZSB0dXBsZSkKKy0tICAgKEMp IHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzIHJlcG9ydHMgdGhlIEhPVC1pbmRleGVk IHZlcnNpb25zIHdlIGV4cGVjdAorLS0gICAoRCkgKipSQU5HRS9JTkVRVUFMSVRZKiogcXVl cmllcyByZXR1cm4gdGhlIGNvcnJlY3QgbnVtYmVyIG9mCistLSAgICAgICB0dXBsZXMgLS0g dGhpcyBpcyB0aGUgY2xhc3Mgb2YgYnVncyB3aGVyZSBhIHN0YWxlIGJ0cmVlCistLSAgICAg ICBlbnRyeSdzIGtleSBpcyBzdGlsbCByZWFjaGFibGUgdmlhIGEgbG9vc2VyIHNjYW4ga2V5 OyB0aGUKKy0tICAgICAgIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBkcm9wcyB0aGUgc3Rh bGUgYXJyaXZhbCBiZWNhdXNlIHRoZSBpbmRleCdzCistLSAgICAgICBhdHRyaWJ1dGUgY2hh bmdlZCBiZXR3ZWVuIHRoYXQgbGVhZidzIHRhcmdldCBhbmQgdGhlIGxpdmUgdHVwbGUKKy0t CitDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGFnZWluc3BlY3Q7CitOT1RJQ0U6 ICBleHRlbnNpb24gInBhZ2VpbnNwZWN0IiBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmcKK0NS RUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGdldF9ob3RfY291bnQocmVsX25hbWUgdGV4dCkK K1JFVFVSTlMgVEFCTEUgKHVwZGF0ZXMgQklHSU5ULCBob3QgQklHSU5UKSBBUyAkJAorREVD TEFSRSByZWxfb2lkIG9pZDsKK0JFR0lOCisgICAgcmVsX29pZCA6PSByZWxfbmFtZTo6cmVn Y2xhc3M6Om9pZDsKKyAgICB1cGRhdGVzIDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxl c191cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICAgICAgICBDT0FMRVNDRShwZ19z dGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKTsKKyAgICBob3QgOj0g Q09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKSAr CisgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRh dGVkKHJlbF9vaWQpLCAwKTsKKyAgICBSRVRVUk4gTkVYVDsKK0VORDsKKyQkIExBTkdVQUdF IHBscGdzcWw7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBnZXRfaGlfY291bnQocmVs X25hbWUgdGV4dCkKK1JFVFVSTlMgVEFCTEUgKHVwZGF0ZXMgQklHSU5ULCBob3QgQklHSU5U LCBob3RfaWR4IEJJR0lOVCkgQVMgJCQKK0RFQ0xBUkUgcmVsX29pZCBvaWQ7CitCRUdJTgor ICAgIHJlbF9vaWQgOj0gcmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7CisgICAgdXBkYXRlcyA6 PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKwor ICAgICAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRl ZChyZWxfb2lkKSwgMCk7CisgICAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxl c19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICBDT0FMRVNDRShwZ19z dGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgaG90 X2lkeCA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRl ZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0 X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkKHJlbF9vaWQpLCAwKTsKKyAgICBSRVRVUk4g TkVYVDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDEuIEJhc2ljIGhvdC1pbmRleGVkOiBtb2RpZnlpbmcgYW4gaW5kZXhlZCBj b2x1bW4gc3RheXMgSE9UIGFuZCBjb3VudHMgYXMgaG90LWluZGV4ZWQKKy0tIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2Jhc2ljICgKKyAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIG5vbl9pbmRleGVkX2NvbCB0 ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfYmFzaWNf aWR4IE9OIGhpX2Jhc2ljKGluZGV4ZWRfY29sKTsKK0lOU0VSVCBJTlRPIGhpX2Jhc2ljIFZB TFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworLS0gUHJlLWhvdC1pbmRleGVkIHRoaXMgd291 bGQgYmUgbm9uLUhPVC4gIFVuZGVyIGhvdC1pbmRleGVkIGl0J3MgSE9ULWluZGV4ZWQ7IGJv dGggdGhlCistLSBIT1QgY291bnRlciBhbmQgdGhlIGhvdC1pbmRleGVkIGNvdW50ZXIgYWR2 YW5jZS4KK1VQREFURSBoaV9iYXNpYyBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQg PSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK1NFTEVDVCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9iYXNpYycpOworIHVwZGF0ZXMg fCBob3QgfCBob3RfaWR4IAorLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEg fCAgIDEgfCAgICAgICAxCisoMSByb3cpCisKKy0tIFRoZSBuZXcgdmFsdWUgaXMgcmVhY2hh YmxlIHZpYSB0aGUgaW5kZXguCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitFWFBMQUlO IChDT1NUUyBPRkYpIFNFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBoaV9iYXNpYyBXSEVS RSBpbmRleGVkX2NvbCA9IDE1MDsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEJpdG1hcCBIZWFwIFNjYW4gb24gaGlfYmFzaWMKKyAgIFJlY2hlY2sgQ29uZDogKGluZGV4 ZWRfY29sID0gMTUwKQorICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGhpX2Jhc2ljX2lk eAorICAgICAgICAgSW5kZXggQ29uZDogKGluZGV4ZWRfY29sID0gMTUwKQorKDQgcm93cykK KworU0VMRUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhpX2Jhc2ljIFdIRVJFIGluZGV4ZWRf Y29sID0gMTUwOworIGlkIHwgaW5kZXhlZF9jb2wgCistLS0tKy0tLS0tLS0tLS0tLS0KKyAg MSB8ICAgICAgICAgMTUwCisoMSByb3cpCisKKy0tIFRoZSBvbGQgdmFsdWUgaXMgbm90IHJl YWNoYWJsZSB0aHJvdWdoIHRoaXMgaW5kZXg6IHRoZSBzdGFsZSBidHJlZQorLS0gZW50cnkg KGluZGV4ZWRfY29sPTEwMCkgd2Fsa3MgdG8gdGhlIGN1cnJlbnQgdHVwbGUgdmlhIHRoZSBo b3QtaW5kZXhlZCBob3AsCistLSBub2RlSW5kZXhzY2FuIHJlLWV2YWx1YXRlcyBgaW5kZXhl ZF9jb2wgPSAxMDBgIGFnYWluc3QgdGhlIGN1cnJlbnQKKy0tIHR1cGxlIChpbmRleGVkX2Nv bD0xNTApLCBhbmQgdGhlIHJvdyBpcyBjb3JyZWN0bHkgZHJvcHBlZC4gIFRoaXMgaXMKKy0t IHRoZSBlcXVhbGl0eS1sb29rdXAgY2FzZSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFw IGhhbmRsZXMuCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCBGUk9NIGhpX2Jhc2lj IFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgQml0bWFwIEhlYXAgU2NhbiBvbiBoaV9iYXNpYworICAgUmVjaGVjayBDb25kOiAo aW5kZXhlZF9jb2wgPSAxMDApCisgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gaGlfYmFz aWNfaWR4CisgICAgICAgICBJbmRleCBDb25kOiAoaW5kZXhlZF9jb2wgPSAxMDApCisoNCBy b3dzKQorCitTRUxFQ1QgaWQgRlJPTSBoaV9iYXNpYyBXSEVSRSBpbmRleGVkX2NvbCA9IDEw MDsKKyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworLS0g cGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMgc2VlcyBvbmUgSE9ULWluZGV4ZWQgdmVy c2lvbiwgemVybyBIT1QgcmVkaXJlY3RzICh0aGUKKy0tIGNoYWluIGhhcyBub3QgeWV0IGJl ZW4gcHJ1bmVkIHNvIG5vIExQX1JFRElSRUNUIGV4aXN0cykuCitTRUxFQ1Qgbl9ob3RfaW5k ZXhlZCwgbl9jaGFpbnMsIGF2Z19jaGFpbl9sZW4sIG1heF9jaGFpbl9sZW4KK0ZST00gcGdf cmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX2Jhc2ljJyk7Cisgbl9ob3RfaW5kZXhl ZCB8IG5fY2hhaW5zIHwgYXZnX2NoYWluX2xlbiB8IG1heF9jaGFpbl9sZW4gCistLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgMSB8ICAgICAgICAwIHwgICAgICAgICAgICAgMCB8ICAgICAgICAgICAg IDAKKygxIHJvdykKKworRFJPUCBUQUJMRSBoaV9iYXNpYzsKKy0tIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorLS0gMi4gUkFOR0UvSU5FUVVBTElUWSBjb3JyZWN0bmVzcyBhZnRlciBob3Qt aW5kZXhlZCBvbiBhbiBpbmRleGVkIGNvbHVtbgorLS0KKy0tIFRoaXMgaXMgdGhlIHRlc3Qg Y2xhc3MgdGhhdCBjYXRjaGVzIHRoZSBob3QtaW5kZXhlZCBmYWxzZS1kdXAgYnVnOiBhIHN0 YWxlCistLSBidHJlZSBlbnRyeSB3aG9zZSBrZXkgdmFsdWUgc3RpbGwgc2F0aXNmaWVzIHRo ZSByYW5nZSBwcmVkaWNhdGUsCistLSByZWFjaGFibGUgdmlhIHRoZSBob3QtaW5kZXhlZCBj aGFpbiBob3AuCistLQorLS0gVG8gZXhlcmNpc2UgdGhlIGJ1ZyB3ZSBtdXN0IGZvcmNlIGFu IEluZGV4U2NhbiBwbGFuICh0aGUKKy0tIEluZGV4T25seVNjYW4gcGF0aCBwZXJtaXNzaXZl bHkgZHJvcHMgZXZlcnkgaG90LWluZGV4ZWQtcmVhY2hhYmxlIGluZGV4LW9ubHkKKy0tIGhp dDsgdGhlIEJpdG1hcEhlYXBTY2FuIHBhdGggZGVkdXBzIGJ5IFRJRCkuICBXZSBpbmNsdWRl IGEgcGF5bG9hZAorLS0gY29sdW1uIG5vdCBwcmVzZW50IGluIHRoZSBQSyBzbyB0aGUgcGxh bm5lciBtdXN0IGhlYXAtZmV0Y2guCistLQorLS0gVGhlIHJlYWQtc2lkZSBjcm9zc2VkLWF0 dHJpYnV0ZSBiaXRtYXAgbWFrZXMgdGhlIEluZGV4U2NhbiByZXR1cm4gdGhlIGNvcnJlY3QK Ky0tIGNvdW50IG9mIDE6IHRoZSBzdGFsZSBlbnRyeSAoJzEnLCc1JykgY2hhaW4td2Fsa3Mg dG8gdGhlIGxpdmUgdHVwbGUgYWNyb3NzCistLSB0aGUgYi1jaGFuZ2luZyBob3AsIGFuZCBi ZWNhdXNlIHRoZSBQSyBjb3ZlcnMgYiB0aGUgb3ZlcmxhcCBpcyBub24tZW1wdHksIHNvCist LSB0aGUgc3RhbGUgbGVhZiBpcyBkcm9wcGVkLiAgVGhlIGZyZXNoIGVudHJ5ICgnMScsJzE1 JykgcG9pbnRzIGRpcmVjdGx5IGF0IHRoZQorLS0gbGl2ZSB0dXBsZSAobm8gaG9wIGFmdGVy IGl0KSBhbmQgaXMga2VwdC4gIFRoZSBPUkRFUiBCWSBsaWtld2lzZSByZXR1cm5zIHRoZQor LS0gc2luZ2xlIGxpdmUgcm93LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUg VEFCTEUgaGlfcmFuZ2UgKAorICAgIGEgaW50LAorICAgIGIgaW50LAorICAgIHBheWxvYWQg dGV4dCwKKyAgICBQUklNQVJZIEtFWSAoYSwgYikKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKK0lOU0VSVCBJTlRPIGhpX3JhbmdlIFZBTFVFUyAoMSwgNSwgJ2hpJyk7CistLSBob3Qt aW5kZXhlZCB1cGRhdGUgb24gdGhlIHNlY29uZCBQSyBjb2x1bW46IHN0YWxlIGJ0cmVlIGVu dHJ5ICgnMScsJzUnKQorLS0gcmVtYWlucywgbmV3IGVudHJ5ICgnMScsJzE1JykgaW5zZXJ0 ZWQuICBUaGUgc3RhbGUgZW50cnkgcG9pbnRzIGF0CistLSB0aGUgY2hhaW4gcm9vdDsgdGhl IGZyZXNoIGVudHJ5IHBvaW50cyBkaXJlY3RseSBhdCB0aGUgbmV3CistLSBoZWFwLW9ubHkg dHVwbGUuCitVUERBVEUgaGlfcmFuZ2UgU0VUIGIgPSAxNSBXSEVSRSBhID0gMSBBTkQgYiA9 IDU7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4g PSBvZmY7CistLSBJbmRleFNjYW46IHBheWxvYWQgSVMgTk9UIE5VTEwgZm9yY2VzIGhlYXAg ZmV0Y2gsIG5vIEluZGV4T25seVNjYW4uCistLSBUaGUgc3RhbGUgKCcxJywnNScpIGxlYWYg aXMgZHJvcHBlZCBieSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwLCBzbyB0aGlzCist LSByZXR1cm5zIDEuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJP TSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMCBBTkQgcGF5bG9hZCBJUyBOT1Qg TlVMTDsKKyAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEFnZ3JlZ2F0ZQorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgaGlfcmFuZ2VfcGtleSBv biBoaV9yYW5nZQorICAgICAgICAgSW5kZXggQ29uZDogKChhID0gMSkgQU5EIChiIDwgMTAw KSkKKyAgICAgICAgIEZpbHRlcjogKHBheWxvYWQgSVMgTk9UIE5VTEwpCisoNCByb3dzKQor CitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEw MCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQor KDEgcm93KQorCitTRUxFQ1QgYSwgYiBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBw YXlsb2FkIElTIE5PVCBOVUxMIE9SREVSIEJZIGI7CisgYSB8IGIgIAorLS0tKy0tLS0KKyAx IHwgMTUKKygxIHJvdykKKworLS0gSW5kZXhPbmx5U2NhbjogdGhlIHBhZ2UgaG9sZHMgYSBw cmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyIHNvIGl0IGlzIG5ldmVyIGFsbC12aXNpYmxl OyBJT1MKKy0tIHBlcmZvcm1zIHRoZSBoZWFwIGZldGNoIGFuZCB0aGUgY3Jvc3NlZC1hdHRy aWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBzdGFsZSAoJzEnLCc1JykKKy0tIGxlYWYsIHNvIGNv dW50ID0gMS4KK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIEZST00gaGlf cmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7CisgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAt PiAgSW5kZXggT25seSBTY2FuIHVzaW5nIGhpX3JhbmdlX3BrZXkgb24gaGlfcmFuZ2UKKyAg ICAgICAgIEluZGV4IENvbmQ6ICgoYSA9IDEpIEFORCAoYiA8IDEwMCkpCisoMyByb3dzKQor CitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEw MDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCistLSBCaXRtYXBIZWFw U2NhbjogVElEIGRlZHVwIGNvbGxhcHNlcyB0aGUgc3RhbGUgYW5kIGZyZXNoIGhpdHMuCitT RVQgZW5hYmxlX2luZGV4c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfaW5kZXhvbmx5c2NhbiA9 IG9mZjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBT RUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsK KyAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg QWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBoaV9yYW5nZQorICAgICAg ICAgUmVjaGVjayBDb25kOiAoKGEgPSAxKSBBTkQgKGIgPCAxMDApKQorICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIGhpX3JhbmdlX3BrZXkKKyAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6ICgoYSA9IDEpIEFORCAoYiA8IDEwMCkpCisoNSByb3dzKQorCitTRUxFQ1Qg Y291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsKKyBjb3Vu dCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitSRVNFVCBlbmFibGVfaW5kZXhzY2Fu OworUkVTRVQgZW5hYmxlX2luZGV4b25seXNjYW47CistLSBTZXFTY2FuOiByZWFkcyB0aGUg aGVhcCBkaXJlY3RseSwgc2VlcyBleGFjdGx5IG9uZSBsaXZlIHR1cGxlLgorUkVTRVQgZW5h YmxlX3NlcXNjYW47CitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVf aW5kZXhvbmx5c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK0VY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUg YSA9IDEgQU5EIGIgPCAxMDA7CisgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBB Z2dyZWdhdGUKKyAgIC0+ICBTZXEgU2NhbiBvbiBoaV9yYW5nZQorICAgICAgICAgRmlsdGVy OiAoKGIgPCAxMDApIEFORCAoYSA9IDEpKQorKDMgcm93cykKKworU0VMRUNUIGNvdW50KCop IEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7CisgY291bnQgCistLS0t LS0tCisgICAgIDEKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX2luZGV4c2NhbjsKK1JFU0VU IGVuYWJsZV9pbmRleG9ubHlzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CistLSBT YW1lIHNoYXBlIG9uIGEgc2Vjb25kYXJ5IChub24tUEspIGJ0cmVlOiBhbm90aGVyIGhvdC1p bmRleGVkIHVwZGF0ZSBvbiBiLgorQ1JFQVRFIElOREVYIGhpX3JhbmdlX2JfaWR4IE9OIGhp X3JhbmdlKGIpOworVVBEQVRFIGhpX3JhbmdlIFNFVCBiID0gMjUgV0hFUkUgYSA9IDEgQU5E IGIgPSAxNTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFw c2NhbiA9IG9mZjsKKy0tIEluZGV4U2NhbiBwYXRoIG9uIHRoZSBzZWNvbmRhcnkgaW5kZXg7 IHNhbWUgZml4IGFwcGxpZXMuCitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVS RSBiIEJFVFdFRU4gMCBBTkQgMTAwIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGNvdW50 IAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOwor UkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitEUk9QIFRBQkxFIGhpX3JhbmdlOworLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCistLSAzLiBBbGwtb3Itbm9uZSBvbiBhIG11bHRpLWluZGV4 ZWQgdGFibGU6IGhvdC1pbmRleGVkIG9ubHkgdG91Y2hlcyBpbmRleGVzCistLSAgICB3aG9z ZSBhdHRyaWJ1dGVzIGNoYW5nZWQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRF IFRBQkxFIGhpX211bHRpICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgY29sX2Eg aW50LAorICAgIGNvbF9iIGludCwKKyAgICBjb2xfYyBpbnQsCisgICAgbm9uX2luZGV4ZWQg dGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX211bHRp X2FfaWR4IE9OIGhpX211bHRpKGNvbF9hKTsKK0NSRUFURSBJTkRFWCBoaV9tdWx0aV9iX2lk eCBPTiBoaV9tdWx0aShjb2xfYik7CitDUkVBVEUgSU5ERVggaGlfbXVsdGlfY19pZHggT04g aGlfbXVsdGkoY29sX2MpOworSU5TRVJUIElOVE8gaGlfbXVsdGkgVkFMVUVTICgxLCAxMCwg MjAsIDMwLCAnaW5pdGlhbCcpOworLS0gY29sX2Egb25seTogdW5kZXIgaG90LWluZGV4ZWQg dGhpcyBpcyBIT1QtaW5kZXhlZCwgYW5kIG9ubHkgaGlfbXVsdGlfYV9pZHgKKy0tIGdldHMg YSBuZXcgZW50cnkuICBoaV9tdWx0aV9iX2lkeCAvIGhpX211bHRpX2NfaWR4IGtlZXAgcG9p bnRpbmcKKy0tIGF0IHRoZSBjaGFpbiByb290LgorVVBEQVRFIGhpX211bHRpIFNFVCBjb2xf YSA9IDE1IFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfbXVs dGknKTsKKyB1cGRhdGVzIHwgaG90IHwgaG90X2lkeCAKKy0tLS0tLS0tLSstLS0tLSstLS0t LS0tLS0KKyAgICAgICAxIHwgICAxIHwgICAgICAgMQorKDEgcm93KQorCistLSBMb29rdXBz IG9uIGFsbCB0aHJlZSBpbmRleGVzIHJldHVybiB0aGUgcm93LgorU0VUIGVuYWJsZV9zZXFz Y2FuID0gb2ZmOworU0VMRUNUIGlkIEZST00gaGlfbXVsdGkgV0hFUkUgY29sX2EgPSAxNTsK KyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitTRUxFQ1QgaWQgRlJPTSBoaV9tdWx0aSBX SEVSRSBjb2xfYiA9IDIwOworIGlkIAorLS0tLQorICAxCisoMSByb3cpCisKK1NFTEVDVCBp ZCBGUk9NIGhpX211bHRpIFdIRVJFIGNvbF9jID0gMzA7CisgaWQgCistLS0tCisgIDEKKygx IHJvdykKKworLS0gT2xkIGNvbF9hIHZhbHVlIGlzIHVucmVhY2hhYmxlIGJ5IGVxdWFsaXR5 IChzdGFsZSBlbnRyeSBkcm9wcGVkIGJ5IHRoZQorLS0gcmVhZC1zaWRlIGNyb3NzZWQtYXR0 cmlidXRlIGJpdG1hcCkuCitTRUxFQ1QgaWQgRlJPTSBoaV9tdWx0aSBXSEVSRSBjb2xfYSA9 IDEwOworIGlkIAorLS0tLQorKDAgcm93cykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitE Uk9QIFRBQkxFIGhpX211bHRpOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA0LiBN dWx0aS1jb2x1bW4gYnRyZWU6IGhvdC1pbmRleGVkIG9uIHBhcnQgb2YgYSBjb21wb3NpdGUg a2V5CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9jb21wb3Np dGUgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29s X2IgaW50LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JF QVRFIElOREVYIGhpX2NvbXBvc2l0ZV9hYl9pZHggT04gaGlfY29tcG9zaXRlKGNvbF9hLCBj b2xfYik7CitJTlNFUlQgSU5UTyBoaV9jb21wb3NpdGUgVkFMVUVTICgxLCAxMCwgMjAsICdk YXRhJyk7CistLSBjb2xfYSBpcyBwYXJ0IG9mIHRoZSBjb21wb3NpdGUga2V5OiBob3QtaW5k ZXhlZC4KK1VQREFURSBoaV9jb21wb3NpdGUgU0VUIGNvbF9hID0gMTU7CitTRUxFQ1QgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUICogRlJP TSBnZXRfaGlfY291bnQoJ2hpX2NvbXBvc2l0ZScpOworIHVwZGF0ZXMgfCBob3QgfCBob3Rf aWR4IAorLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEgfCAgIDEgfCAgICAg ICAxCisoMSByb3cpCisKKy0tIFJlc2V0IGFuZCB0aGVuIHVwZGF0ZSBjb2xfYiAoYWxzbyBw YXJ0IG9mIHRoZSBrZXkpLgorVVBEQVRFIGhpX2NvbXBvc2l0ZSBTRVQgY29sX2EgPSAxMDsK K1VQREFURSBoaV9jb21wb3NpdGUgU0VUIGNvbF9iID0gMjU7CitTRUxFQ1QgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBnZXRf aGlfY291bnQoJ2hpX2NvbXBvc2l0ZScpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAor LS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDMgfCAgIDMgfCAgICAgICAzCiso MSByb3cpCisKK0RST1AgVEFCTEUgaGlfY29tcG9zaXRlOworLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCistLSA1LiBQYXJ0aWFsIGluZGV4OiBzdGF0dXMgdHJhbnNpdGlvbiBvdXQtb2Yt cHJlZGljYXRlCistLQorLS0gJ3N0YXR1cycgaXMgYSBwYXJ0aWFsLWluZGV4IHByZWRpY2F0 ZSBjb2x1bW4uICBBIGNoYW5nZSB0byBhIHByZWRpY2F0ZQorLS0gY29sdW1uIGNhbiBmbGlw IGEgcm93IGluIG9yIG91dCBvZiB0aGUgaW5kZXgsIHdoaWNoIHRoZSByZWFkLXNpZGUga2V5 CistLSByZWNoZWNrIGNhbm5vdCBkZXRlY3QsIHNvIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUg Y29uc2VydmF0aXZlbHkgZGlzcXVhbGlmaWVzCistLSBIT1QtaW5kZXhlZCBmb3IgYW55IHBy ZWRpY2F0ZS1jb2x1bW4gY2hhbmdlIChldmVuIHRoaXMgb3V0LW9mLXByZWRpY2F0ZSAtPgor LS0gb3V0LW9mLXByZWRpY2F0ZSBjYXNlKS4gIFRoZSB1cGRhdGUgaXMgdGhlcmVmb3JlIG5v bi1IT1QsIGFuZCB0aGUgcGFydGlhbAorLS0gaW5kZXggY29ycmVjdGx5IHN0YXlzIGVtcHR5 IGZvciB0aGVzZSBub24tJ2FjdGl2ZScgcm93cy4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorQ1JFQVRFIFRBQkxFIGhpX3BhcnRpYWwgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwK KyAgICBzdGF0dXMgdGV4dCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9 IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0aWFsX2FjdGl2ZV9pZHggT04gaGlfcGFydGlh bChzdGF0dXMpIFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOworSU5TRVJUIElOVE8gaGlfcGFy dGlhbCBWQUxVRVMgKDEsICdhY3RpdmUnLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhpX3Bh cnRpYWwgVkFMVUVTICgyLCAnaW5hY3RpdmUnLCAnZGF0YTInKTsKK0lOU0VSVCBJTlRPIGhp X3BhcnRpYWwgVkFMVUVTICgzLCAnZGVsZXRlZCcsICdkYXRhMycpOworLS0gb3V0IC0+IG91 dCB0cmFuc2l0aW9uIG9uIHRoZSBwcmVkaWNhdGUgY29sdW1uOiBIT1QtaW5kZXhlZCBrZWVw cyBpdCBvbi1wYWdlLAorLS0gYW5kIHRoZSBwYXJ0aWFsIGluZGV4IGdldHMgbm8gZW50cnkg KHRoZSByb3cgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUgbmVpdGhlcgorLS0gYmVmb3JlIG5v ciBhZnRlciB0aGUgdXBkYXRlKS4KK1VQREFURSBoaV9wYXJ0aWFsIFNFVCBzdGF0dXMgPSAn ZGVsZXRlZCcgV0hFUkUgaWQgPSAyOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9w YXJ0aWFsJyk7CisgdXBkYXRlcyB8IGhvdCB8IGhvdF9pZHggCistLS0tLS0tLS0rLS0tLS0r LS0tLS0tLS0tCisgICAgICAgMSB8ICAgMSB8ICAgICAgIDEKKygxIHJvdykKKworLS0gVGhl IHBhcnRpYWwgaW5kZXggc3RpbGwgY29ycmVjdGx5IGFuc3dlcnMgImFjdGl2ZSIgcXVlcmll cy4KK1NFTEVDVCBpZCwgc3RhdHVzIEZST00gaGlfcGFydGlhbCBXSEVSRSBzdGF0dXMgPSAn YWN0aXZlJzsKKyBpZCB8IHN0YXR1cyAKKy0tLS0rLS0tLS0tLS0KKyAgMSB8IGFjdGl2ZQor KDEgcm93KQorCitEUk9QIFRBQkxFIGhpX3BhcnRpYWw7CistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDYuIFBhcnRpdGlvbjogaG90LWluZGV4ZWQgaW5zaWRlIG9uZSBwYXJ0aXRp b24KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3BhcnQgKAor ICAgIGlkIGludCwKKyAgICBwYXJ0aXRpb25fa2V5IGludCwKKyAgICBpbmRleGVkX2NvbCBp bnQsCisgICAgZGF0YSB0ZXh0LAorICAgIFBSSU1BUlkgS0VZIChpZCwgcGFydGl0aW9uX2tl eSkKKykgUEFSVElUSU9OIEJZIFJBTkdFIChwYXJ0aXRpb25fa2V5KTsKK0NSRUFURSBUQUJM RSBoaV9wYXJ0XzEgUEFSVElUSU9OIE9GIGhpX3BhcnQKKyAgICBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgxMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlf cGFydF9pZHggT04gaGlfcGFydChpbmRleGVkX2NvbCk7CitJTlNFUlQgSU5UTyBoaV9wYXJ0 IFZBTFVFUyAoMSwgNTAsIDEwMCwgJ2RhdGEnKTsKK1VQREFURSBoaV9wYXJ0IFNFVCBpbmRl eGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQo J2hpX3BhcnRfMScpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAorLS0tLS0tLS0tKy0t LS0tKy0tLS0tLS0tLQorICAgICAgIDEgfCAgIDEgfCAgICAgICAxCisoMSByb3cpCisKK1NF VCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnQgV0hFUkUg aW5kZXhlZF9jb2wgPSAxNTA7CisgaWQgCistLS0tCisgIDEKKygxIHJvdykKKworU0VMRUNU IGlkIEZST00gaGlfcGFydCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKyBpZCAKKy0tLS0K KygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9wYXJ0 IENBU0NBREU7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcuIFRyaWdnZXIgbW9k aWZpZXMgaW5kZXhlZCBjb2x1bW46IGhvdC1pbmRleGVkLCBub3Qgbm9uLUhPVAorLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdHJpZ2dlciAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIHRyaWdnZXJlZF9jb2wgaW50LAorICAgIGRhdGEgdGV4 dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3RyaWdnZXJf aWR4IE9OIGhpX3RyaWdnZXIodHJpZ2dlcmVkX2NvbCk7CitDUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiBoaV90cmlnZ2VyX2J1bXAoKQorUkVUVVJOUyBUUklHR0VSIEFTICQkCitCRUdJ TgorICAgIE5FVy50cmlnZ2VyZWRfY29sID0gTkVXLnRyaWdnZXJlZF9jb2wgKyAxOworICAg IFJFVFVSTiBORVc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIFRSSUdH RVIgYmVmb3JlX3VwZGF0ZV9idW1wCisgICAgQkVGT1JFIFVQREFURSBPTiBoaV90cmlnZ2Vy CisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBGVU5DVElPTiBoaV90cmlnZ2VyX2J1 bXAoKTsKK0lOU0VSVCBJTlRPIGhpX3RyaWdnZXIgVkFMVUVTICgxLCAxMDAsICdpbml0aWFs Jyk7CistLSBVUERBVEUncyBTRVQgY2xhdXNlIGRvZXNuJ3QgdG91Y2ggdGhlIGluZGV4ZWQg Y29sdW1uLCBidXQgdGhlCistLSB0cmlnZ2VyIG1vZGlmaWVzIGl0IHZpYSBoZWFwX21vZGlm eV90dXBsZS4gIGhvdC1pbmRleGVkIG11c3QgZGV0ZWN0IHRoaXMKKy0tIGFuZCBrZWVwIHRo ZSB0dXBsZSBvbi1wYWdlIChIRUFQX0lOREVYRURfVVBEQVRFRCkgcGx1cyBhIG5ldyBidHJl ZSBlbnRyeS4KK1VQREFURSBoaV90cmlnZ2VyIFNFVCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJF IGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0 X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfdHJpZ2dlcicpOworIHVw ZGF0ZXMgfCBob3QgfCBob3RfaWR4IAorLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAg ICAgIDEgfCAgIDEgfCAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCB0cmlnZ2VyZWRfY29s IEZST00gaGlfdHJpZ2dlciBXSEVSRSBpZCA9IDE7CisgdHJpZ2dlcmVkX2NvbCAKKy0tLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAxMDEKKygxIHJvdykKKworLS0gTmV3IHZhbHVlIHJl YWNoYWJsZS4KK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhp X3RyaWdnZXIgV0hFUkUgdHJpZ2dlcmVkX2NvbCA9IDEwMTsKKyBpZCAKKy0tLS0KKyAgMQor KDEgcm93KQorCitTRUxFQ1QgaWQgRlJPTSBoaV90cmlnZ2VyIFdIRVJFIHRyaWdnZXJlZF9j b2wgPSAxMDA7CisgaWQgCistLS0tCisoMCByb3dzKQorCitSRVNFVCBlbmFibGVfc2Vxc2Nh bjsKK0RST1AgVEFCTEUgaGlfdHJpZ2dlciBDQVNDQURFOworRFJPUCBGVU5DVElPTiBoaV90 cmlnZ2VyX2J1bXAoKTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gOC4gSlNPTkIg ZXhwcmVzc2lvbiBpbmRleDogSE9ULWluZGV4ZWQgaXMgbm90IHlldCBzdXBwb3J0ZWQgb24g ZXhwcmVzc2lvbgorLS0gICAgaW5kZXhlcywgc28gdGhlIHVwZGF0ZSBmYWxscyBiYWNrIHRv IGEgbm9uLUhPVCB1cGRhdGUgKGhvdF9pZHggPSAwKS4KKy0tICAgIFJlYWRzIHN0YXkgY29y cmVjdC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2pzb25i ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgZGF0YSBqc29uYgorKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2pzb25iX25hbWVfaWR4IE9OIGhp X2pzb25iICgoZGF0YS0+PiduYW1lJykpOworSU5TRVJUIElOVE8gaGlfanNvbmIgVkFMVUVT ICgxLCAneyJuYW1lIjoiQWxpY2UiLCJhZ2UiOjMwfScpOworLS0gQ2hhbmdpbmcgdGhlIGlu ZGV4ZWQgZXhwcmVzc2lvbidzIHZhbHVlIChuYW1lKTogZXhwcmVzc2lvbiBpbmRleGVzIGFy ZSBub3QKKy0tIHlldCBzdXBwb3J0ZWQsIHNvIHRoaXMgaXMgYSBub24tSE9UIHVwZGF0ZS4K K1VQREFURSBoaV9qc29uYiBTRVQgZGF0YSA9IGpzb25iX3NldChkYXRhLCAne25hbWV9Jywg JyJBbGljZTIiJykgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9m bHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gZ2V0X2hpX2NvdW50KCdo aV9qc29uYicpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAorLS0tLS0tLS0tKy0tLS0t Ky0tLS0tLS0tLQorICAgICAgIDEgfCAgIDAgfCAgICAgICAwCisoMSByb3cpCisKK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX2pzb25iIFdIRVJFIGRh dGEtPj4nbmFtZScgPSAnQWxpY2UyJzsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitT RUxFQ1QgaWQgRlJPTSBoaV9qc29uYiBXSEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlJzsK KyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBU QUJMRSBoaV9qc29uYjsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gOS4gR0lOIGlu ZGV4IHdpdGggY2hhbmdlZCBleHRyYWN0ZWQga2V5czogaG90LWluZGV4ZWQKKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2dpbiAoCisgICAgaWQgaW50IFBS SU1BUlkgS0VZLAorICAgIHRhZ3MgdGV4dFtdCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaGlfZ2luX3RhZ3NfaWR4IE9OIGhpX2dpbiBVU0lORyBnaW4gKHRh Z3MpOworSU5TRVJUIElOVE8gaGlfZ2luIFZBTFVFUyAoMSwgQVJSQVlbJ3RhZzEnLCAndGFn MiddKTsKKy0tIEFkZGluZyBhIHRhZyB5aWVsZHMgYSBkaWZmZXJlbnQgZXh0cmFjdGVkLWtl eSBzZXQ6IGhvdC1pbmRleGVkLgorVVBEQVRFIGhpX2dpbiBTRVQgdGFncyA9IEFSUkFZWyd0 YWcxJywgJ3RhZzInLCAndGFnNSddIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9o aV9jb3VudCgnaGlfZ2luJyk7CisgdXBkYXRlcyB8IGhvdCB8IGhvdF9pZHggCistLS0tLS0t LS0rLS0tLS0rLS0tLS0tLS0tCisgICAgICAgMSB8ICAgMSB8ICAgICAgIDEKKygxIHJvdykK KworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkIEZST00gaGlfZ2luIFdI RVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUnXTsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQor CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlfZ2luOworLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSAxMC4gUGVyLWluZGV4IEhPVC1pbmRleGVkIGNvdW50ZXJz OiBza2lwcGVkIHZzIG1hdGNoZWQKKy0tCistLSBBIHRhYmxlIHdpdGggdHdvIGluZGVwZW5k ZW50IHNlY29uZGFyeSBpbmRleGVzLiAgQW4gVVBEQVRFIHRvdWNoZXMgYQorLS0gY29sdW1u IGNvdmVyZWQgYnkgb25seSBvbmUgb2YgdGhlbTsgdGhlIEhPVC1pbmRleGVkIHBhdGggbXVz dCBpbnNlcnQKKy0tIGludG8gdGhhdCBvbmUgaW5kZXggYW5kIHNraXAgdGhlIG90aGVyLiAg cGdfc3RhdF9hbGxfaW5kZXhlcyByZXBvcnRzCistLSBtYXRjaGVkPjAgb24gdGhlIHVwZGF0 ZWQgaW5kZXggYW5kIHNraXBwZWQ+MCBvbiB0aGUgdW50b3VjaGVkIGluZGV4LgorLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaG90aWR4X3BlcmluZGV4ICgKKyAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgYSBpbnQsCisgICAgYiBpbnQKKykgV0lUSCAo ZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBob3RpZHhfcGVyaW5kZXhfYSBPTiBo b3RpZHhfcGVyaW5kZXgoYSk7CitDUkVBVEUgSU5ERVggaG90aWR4X3BlcmluZGV4X2IgT04g aG90aWR4X3BlcmluZGV4KGIpOworSU5TRVJUIElOVE8gaG90aWR4X3BlcmluZGV4IFZBTFVF UyAoMSwgMTAwLCAyMDApOworLS0gTW9kaWZ5IG9ubHkgY29sdW1uIGEuICBIT1QtaW5kZXhl ZCBpbnNlcnRzIGludG8gaG90aWR4X3BlcmluZGV4X2EgYW5kCistLSBza2lwcyBob3RpZHhf cGVyaW5kZXhfYiAocHJpbWFyeSBrZXkgaW5kcmVsaWQgaXMgdGhlIHRhYmxlIGl0c2VsZiBh bmQKKy0tIGFsc28gdW5jaGFuZ2VkLCBzbyBpdCBjb3VudHMgYXMgc2tpcHBlZCB0b28pLgor VVBEQVRFIGhvdGlkeF9wZXJpbmRleCBTRVQgYSA9IDEwMSBXSEVSRSBpZCA9IDE7CistLSBG b3JjZSBmbHVzaCBvZiBwZW5kaW5nIHN0YXRzIHRvIHRoZSBzaGFyZWQgZW50cnkuCitTRUxF Q1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNU IGluZGV4cmVsbmFtZSwKKyAgICAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCBB UyBtYXRjaGVkLAorICAgICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkIEFTIHNr aXBwZWQKKyAgRlJPTSBwZ19zdGF0X2FsbF9pbmRleGVzCisgV0hFUkUgcmVsbmFtZSA9ICdo b3RpZHhfcGVyaW5kZXgnCisgT1JERVIgQlkgaW5kZXhyZWxuYW1lOworICAgICBpbmRleHJl bG5hbWUgICAgIHwgbWF0Y2hlZCB8IHNraXBwZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0KKyBob3RpZHhfcGVyaW5kZXhfYSAgICB8ICAgICAgIDEg fCAgICAgICAwCisgaG90aWR4X3BlcmluZGV4X2IgICAgfCAgICAgICAwIHwgICAgICAgMQor IGhvdGlkeF9wZXJpbmRleF9wa2V5IHwgICAgICAgMCB8ICAgICAgIDEKKygzIHJvd3MpCisK Ky0tIEEgc2Vjb25kIFVQREFURSB0b3VjaGluZyBvbmx5IGIgaW52ZXJ0cyB0aGUgYXNzaWdu bWVudC4KK1VQREFURSBob3RpZHhfcGVyaW5kZXggU0VUIGIgPSAyMDEgV0hFUkUgaWQgPSAx OworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K1NFTEVDVCBpbmRleHJlbG5hbWUsCisgICAgICAgbl90dXBfaG90X2luZGV4ZWRfdXBkX21h dGNoZWQgQVMgbWF0Y2hlZCwKKyAgICAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBl ZCBBUyBza2lwcGVkCisgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcworIFdIRVJFIHJlbG5h bWUgPSAnaG90aWR4X3BlcmluZGV4JworIE9SREVSIEJZIGluZGV4cmVsbmFtZTsKKyAgICAg aW5kZXhyZWxuYW1lICAgICB8IG1hdGNoZWQgfCBza2lwcGVkIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tCisgaG90aWR4X3BlcmluZGV4X2EgICAgfCAg ICAgICAxIHwgICAgICAgMQorIGhvdGlkeF9wZXJpbmRleF9iICAgIHwgICAgICAgMSB8ICAg ICAgIDEKKyBob3RpZHhfcGVyaW5kZXhfcGtleSB8ICAgICAgIDAgfCAgICAgICAyCisoMyBy b3dzKQorCistLSBJbnZhcmlhbnQ6IG1hdGNoZWQgKyBza2lwcGVkID09IG93bmluZyB0YWJs ZSdzIG5fdHVwX2hvdF9pbmRleGVkX3VwZC4KK1NFTEVDVCBpbmRleHJlbG5hbWUsCisgICAg ICAgbl90dXBfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQgKyBuX3R1cF9ob3RfaW5kZXhlZF91 cGRfc2tpcHBlZCBBUyB0b3RhbCwKKyAgICAgICAoU0VMRUNUIG5fdHVwX2hvdF9pbmRleGVk X3VwZCBGUk9NIHBnX3N0YXRfYWxsX3RhYmxlcworICAgICAgICAgV0hFUkUgcmVsbmFtZSA9 ICdob3RpZHhfcGVyaW5kZXgnKSBBUyB0YWJsZV9ob3RfaWR4X3VwZAorICBGUk9NIHBnX3N0 YXRfYWxsX2luZGV4ZXMKKyBXSEVSRSByZWxuYW1lID0gJ2hvdGlkeF9wZXJpbmRleCcKKyBP UkRFUiBCWSBpbmRleHJlbG5hbWU7CisgICAgIGluZGV4cmVsbmFtZSAgICAgfCB0b3RhbCB8 IHRhYmxlX2hvdF9pZHhfdXBkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0KKyBob3RpZHhfcGVyaW5kZXhfYSAgICB8ICAgICAyIHwgICAg ICAgICAgICAgICAgIDIKKyBob3RpZHhfcGVyaW5kZXhfYiAgICB8ICAgICAyIHwgICAgICAg ICAgICAgICAgIDIKKyBob3RpZHhfcGVyaW5kZXhfcGtleSB8ICAgICAyIHwgICAgICAgICAg ICAgICAgIDIKKygzIHJvd3MpCisKKy0tIEJvb2xlYW4gYXNzZXJ0aW9uIG9mIHRoZSBzYW1l IGludmFyaWFudC4gIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBmb3JtCistLSByZXZpZXdlcnMg YXNrZWQgZm9yOiBldmVyeSBpbmRleCBlbnRyeSBpcyBlaXRoZXIgbWF0Y2hlZCAodGhlIGlu ZGV4CistLSBnb3QgYSBmcmVzaCBpbnNlcnQgdGhpcyBVUERBVEUpIG9yIHNraXBwZWQgKEhP VC1pbmRleGVkIGNvcnJlY3RseQorLS0gYXZvaWRlZCBhbiBpbnNlcnQgYmVjYXVzZSB0aGUg aW5kZXgncyBhdHRycyBkaWQgbm90IGNoYW5nZSkuICBJZiB0aGUKKy0tIHR3byBjb3VudGVy cyBkcmlmdCBhcGFydCBmcm9tIHRoZSB0YWJsZS1sZXZlbCBuX3R1cF9ob3RfaW5kZXhlZF91 cGQgd2UKKy0tIGhhdmUgZWl0aGVyIGxvc3QgYSBwZXItaW5kZXggaW5jcmVtZW50IG9yIGRv dWJsZS1jb3VudGVkIG9uZS4KK1NFTEVDVCBib29sX2FuZCgobl90dXBfaG90X2luZGV4ZWRf dXBkX21hdGNoZWQgKyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCkgPQorICAgICAg ICAgICAgICAgIChTRUxFQ1Qgbl90dXBfaG90X2luZGV4ZWRfdXBkIEZST00gcGdfc3RhdF9h bGxfdGFibGVzCisgICAgICAgICAgICAgICAgICBXSEVSRSByZWxuYW1lID0gJ2hvdGlkeF9w ZXJpbmRleCcpKQorICAgICAgICAgQVMgcGVyaW5kZXhfaW52YXJpYW50X2hvbGRzCisgIEZS T00gcGdfc3RhdF9hbGxfaW5kZXhlcworIFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4X3Blcmlu ZGV4JzsKKyBwZXJpbmRleF9pbnZhcmlhbnRfaG9sZHMgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIHQKKygxIHJvdykKKworRFJPUCBUQUJMRSBob3RpZHhfcGVyaW5kZXg7Cist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDExLiBMb25nIGhvdC1sb29wIFVQREFURSBz dGF5cyBjb21wYWN0IGFuZCBIT1QtaW5kZXhlZAorLS0KKy0tIEEgbG9uZyBydW4gb2YgSE9U LWluZGV4ZWQgVVBEQVRFcyB0byBhIHNpbmdsZSByb3cgc3RheXMgY29tcGFjdDogcHJ1bmUK Ky0tIGNvbGxhcHNlcyBlYWNoIGRlYWQgdmVyc2lvbiB0byBhIHJlZGlyZWN0IHRvIHRoZSBs aXZlIHR1cGxlIGFuZCByZXVzZXMgaXRzCistLSBzbG90LCBzbyB0aGUgaGVhcCBzdGF5cyBi b3VuZGVkIGFuZCB0aGUgY2hhaW4gZG9lcyBub3QgZ3JvdyB1bmJvdW5kZWQuCistLSBFdmVy eSBVUERBVEUgdGhhdCBjaGFuZ2VzIHRoZSBpbmRleGVkIGNvbHVtbiAoYW5kIGxlYXZlcyBh bm90aGVyIGluZGV4LAorLS0gaGVyZSB0aGUgUEssIHVuY2hhbmdlZCkgdGFrZXMgdGhlIEhP VC1pbmRleGVkIHBhdGguCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJM RSBoaV9jaGFpbmNhcCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGEgaW50Cisp IFdJVEggKGZpbGxmYWN0b3IgPSAxMCk7CitDUkVBVEUgSU5ERVggaGlfY2hhaW5jYXBfYV9p ZHggT04gaGlfY2hhaW5jYXAoYSk7CitJTlNFUlQgSU5UTyBoaV9jaGFpbmNhcCBWQUxVRVMg KDEsIDApOworRE8gJCQKK0RFQ0xBUkUKKyAgICBpIGludDsKK0JFR0lOCisgICAgRk9SIGkg SU4gMSAuLiAyMDAgTE9PUAorICAgICAgICBVUERBVEUgaGlfY2hhaW5jYXAgU0VUIGEgPSBp IFdIRVJFIGlkID0gMTsKKyAgICBFTkQgTE9PUDsKK0VORCAkJDsKKy0tIEFmdGVyIDIwMCBV UERBVEVzIHRoZSByb3cncyB2YWx1ZSBpcyAyMDAuCitTRUxFQ1QgYSBGUk9NIGhpX2NoYWlu Y2FwIFdIRVJFIGlkID0gMTsKKyAgYSAgCistLS0tLQorIDIwMAorKDEgcm93KQorCistLSBF dmVyeSBVUERBVEUgdG9vayB0aGUgSE9ULWluZGV4ZWQgcGF0aCAodGhlIFBLIGluZGV4IGlz IHVuY2hhbmdlZCwgc28gaXQgaXMKKy0tIHNraXBwZWQpLCBzbyBuX3R1cF9ob3RfaW5kZXhl ZF91cGQgYWR2YW5jZWQuCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7Cisg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGhvdF9pbmRleGVkX2ZpcmVk CisgIEZST00gZ2V0X2hpX2NvdW50KCdoaV9jaGFpbmNhcCcpOworIGhvdF9pbmRleGVkX2Zp cmVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gVGhlIGhlYXAg c3RheWVkIGNvbXBhY3Q6IHBydW5lK2NvbGxhcHNlIHJlY2xhaW1lZCB0aGUgZGVhZCB2ZXJz aW9ucywgc28gdGhlCistLSBzaW5nbGUgbGl2ZSByb3cgc3RheXMgd2l0aGluIGEgY291cGxl IG9mIHBhZ2VzLiAgcGdfcmVsYXRpb25fc2l6ZSByZWZsZWN0cworLS0gdGhlIHRhYmxlJ3Mg YWN0dWFsIGN1cnJlbnQgc2l6ZSByZWdhcmRsZXNzIG9mIHZhY3V1bS9hbmFseXplIHN0YXRz LCB1bmxpa2UKKy0tIHBnX2NsYXNzLnJlbHBhZ2VzICh3aGljaCBpcyBvbmx5IHVwZGF0ZWQg YnkgVkFDVVVNL0FOQUxZWkUgYW5kIHdvdWxkIGJlCistLSB0cml2aWFsbHkgPD0gMSBvbiB0 aGlzIG5ldmVyLXZhY3V1bWVkIHRhYmxlIGV2ZW4gaWYgcHJ1bmluZyBoYWQgZmFpbGVkIGFu ZAorLS0gdGhlIGhlYXAgaGFkIGJhbGxvb25lZCkuCitTRUxFQ1QgcGdfcmVsYXRpb25fc2l6 ZSgnaGlfY2hhaW5jYXAnKSA8PSA4MTkyICogMiBBUyBoZWFwX3N0YXllZF9jb21wYWN0Owor IGhlYXBfc3RheWVkX2NvbXBhY3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSBy b3cpCisKK0RST1AgVEFCTEUgaGlfY2hhaW5jYXA7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIDEyLiBBIEhPVC1pbmRleGVkIGNoYWluIGZvcm1zIGFuZCByZWFkcyB0aHJvdWdo IGl0IHN0YXkgY29ycmVjdAorLS0KKy0tIFNldmVyYWwgSE9ULWluZGV4ZWQgdXBkYXRlcyBv ZiB0aGUgc2FtZSBsaXZlIHJvdyBidWlsZCBhIG11bHRpLWhvcCBjaGFpbiBvZgorLS0gcHJl c2VydmVkIEhPVC1pbmRleGVkIG1lbWJlcnMsIGVhY2ggY2FycnlpbmcgaXRzIG93biBjcm9z c2VkLWF0dHJpYnV0ZQorLS0gYml0bWFwLiAgV2UgYXNzZXJ0IG9ubHkgaG9yaXpvbi1pbmRl cGVuZGVudCBmYWN0czogYXQgbGVhc3Qgb25lIEhPVC1pbmRleGVkCistLSBtZW1iZXIgaXMg cHJlc2VudCAodGhlIGxpdmUgdmVyc2lvbiBhbHdheXMgaXMsIGFuZCBjYW5ub3QgYmUgcHJ1 bmVkKSwgYSBzY2FuCistLSB0aHJvdWdoIHRoZSBzZWNvbmRhcnkgaW5kZXggcmV0dXJucyB0 aGUgb25lIGxpdmUgcm93IGJ5IGl0cyBjdXJyZW50IGtleSwgYW5kCistLSBub25lIG9mIHRo ZSBzdXBlcnNlZGVkIGtleXMgc3VyZmFjZSAodGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1h cCBmaWx0ZXJzCistLSB0aGVpciBzdGFsZSBsZWF2ZXMpLgorLS0KKy0tIFdlIGRlbGliZXJh dGVseSBkbyBOT1QgYXNzZXJ0IGFuIGV4YWN0IG1lbWJlciBjb3VudCBvciBhbnkgcG9zdC1W QUNVVU0KKy0tIGNvbGxhcHNlL3JlY2xhaW0gc3RhdGU6IG9wcG9ydHVuaXN0aWMgSE9UIHBy dW5pbmcgYW5kIFZBQ1VVTSBjb2xsYXBzZSBhcmUKKy0tIGJvdGggZ2F0ZWQgb24gdGhlIHN1 cGVyc2VkZWQgdmVyc2lvbnMgZmFsbGluZyBiZWxvdyB0aGUgZ2xvYmFsIHhtaW4gaG9yaXpv biwKKy0tIHdoaWNoIGEgc25hcHNob3QgaGVsZCBlbHNld2hlcmUgaW4gdGhlIHJ1bm5pbmcg cmVncmVzc2lvbiBjbHVzdGVyIGNhbiBwaW4KKy0tIGJhY2sgaW5kZWZpbml0ZWx5IC0tIHNv IHRoZSBwaHlzaWNhbCBsYXlvdXQgKG5faG90X2luZGV4ZWQncyBleGFjdCB2YWx1ZSwKKy0t IHdoZXRoZXIgdGhlIGNoYWluIGhhcyBjb2xsYXBzZWQgdG8gYW4gTFBfUkVESVJFQ1QpIGlz IG5vdCBkZXRlcm1pbmlzdGljCistLSBoZXJlLiAgUHJ1bmUvY29sbGFwc2UgYW5kIHNuYXBz aG90LWdhdGVkIHN0YWxlLWxlYWYgcmVjbGFpbSBhcmUgY292ZXJlZAorLS0gZGV0ZXJtaW5p c3RpY2FsbHkgYnkgdGhlIGhvdF9pbmRleGVkX2FkdmVyc2FyaWFsIGlzb2xhdGlvbiBzcGVj LCB3aGVyZQorLS0gdHJhbnNhY3Rpb24gb3JkZXJpbmcgLS0gaGVuY2UgdGhlIGhvcml6b24g LS0gaXMgY29udHJvbGxlZCBhbmQgdGhlIGNvbGxhcHNlCistLSBpcyB2YWxpZGF0ZWQgYnkg cmVhZGVyIGNvbnNpc3RlbmN5IGFjcm9zcyBpdCAocGVybXV0YXRpb24gNykuCistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9yZWNsYWltICgKKyAgICBpZCBp bnQgUFJJTUFSWSBLRVksCisgICAgYSBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwLCBh dXRvdmFjdXVtX2VuYWJsZWQgPSBmYWxzZSk7CitDUkVBVEUgSU5ERVggaGlfcmVjbGFpbV9h X2lkeCBPTiBoaV9yZWNsYWltKGEpOworSU5TRVJUIElOVE8gaGlfcmVjbGFpbSBWQUxVRVMg KDEsIDEwMCk7CistLSBCdWlsZCBhIG11bHRpLWhvcCBjaGFpbiB2aWEgc2V2ZXJhbCBIT1Qt aW5kZXhlZCB1cGRhdGVzOyB0aGUgcm93IHN0YXlzIGxpdmUuCitVUERBVEUgaGlfcmVjbGFp bSBTRVQgYSA9IDIwMCBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfcmVjbGFpbSBTRVQgYSA9 IDMwMCBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfcmVjbGFpbSBTRVQgYSA9IDQwMCBXSEVS RSBpZCA9IDE7CistLSBUaGUgbGl2ZSB2ZXJzaW9uIGlzIGEgSE9ULWluZGV4ZWQgbWVtYmVy IGFuZCBjYW5ub3QgYmUgcHJ1bmVkLCBzbyB0aGlzIGhvbGRzCistLSByZWdhcmRsZXNzIG9m IGhvdyBtdWNoIG9wcG9ydHVuaXN0aWMgcHJ1bmluZyBoYXMgaGFwcGVuZWQuCitTRUxFQ1Qg bl9ob3RfaW5kZXhlZCA+PSAxIEFTIGhvdF9pbmRleGVkX21lbWJlcl9wcmVzZW50CisgIEZS T00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX3JlY2xhaW0nKTsKKyBob3Rf aW5kZXhlZF9tZW1iZXJfcHJlc2VudCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyB0CisoMSByb3cpCisKKy0tIFRoZSBsaXZlIHJvdyByZXNvbHZlcyB0aHJvdWdoIHRoZSBz ZWNvbmRhcnkgaW5kZXggYnkgaXRzIGN1cnJlbnQga2V5LCBhbmQKKy0tIG5vbmUgb2YgdGhl IHN1cGVyc2VkZWQga2V5cyBzdXJmYWNlIHRocm91Z2ggdGhlaXIgc3RhbGUgbGVhdmVzLgor U0VMRUNUIGlkLCBhIEZST00gaGlfcmVjbGFpbSBXSEVSRSBhID0gNDAwOworIGlkIHwgIGEg IAorLS0tLSstLS0tLQorICAxIHwgNDAwCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSA9 IDAgQVMgbm9fc3RhbGVfa2V5X3N1cmZhY2VzCisgIEZST00gaGlfcmVjbGFpbSBXSEVSRSBh IElOICgxMDAsIDIwMCwgMzAwKTsKKyBub19zdGFsZV9rZXlfc3VyZmFjZXMgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworRFJPUCBUQUJMRSBoaV9yZWNsYWlt OworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxMy4gUGFnZSB3aXRoIGEgcHJlc2Vy dmVkIEhPVC1pbmRleGVkIG1lbWJlciBpcyBuZXZlciBtYXJrZWQgYWxsLXZpc2libGUKKy0t CistLSBwcnVuZWhlYXAgZGVsaWJlcmF0ZWx5IGxlYXZlcyBQRF9BTExfVklTSUJMRSBjbGVh ciBvbiBhbnkgcGFnZSB0aGF0IHN0aWxsCistLSBjYXJyaWVzIGEgcHJlc2VydmVkIEhPVC1p bmRleGVkIG1lbWJlcjogYW4gaW5kZXgtb25seSBzY2FuIG11c3QgaGVhcC1mZXRjaAorLS0g dGhyb3VnaCB0aGUgY2hhaW4gc28gdGhlIHJlYWQtc2lkZSBjcm9zc2VkLWF0dHJpYnV0ZSBi aXRtYXAgY2FuIGZpbHRlciBzdGFsZSBidHJlZQorLS0gZW50cmllcy4KKy0tCistLSBXZSBm b3JjZSB0aGUgZnJlZXplIHBhdGggd2l0aCBWQUNVVU0gKEZSRUVaRSwgRElTQUJMRV9QQUdF X1NLSVBQSU5HKSBhbmQKKy0tIHRoZW4gcmVhZCBwZF9mbGFncyB2aWEgcGFnZWluc3BlY3Qu cGFnZV9oZWFkZXIuICBUaGUgcGFnZSBtdXN0IHN0aWxsIGNhcnJ5CistLSBhIEhPVC1pbmRl eGVkIG1lbWJlciAobl9ob3RfaW5kZXhlZCA+IDApIEFORCBtdXN0IG5vdCBoYXZlIFBEX0FM TF9WSVNJQkxFCistLSAoMHgwMDA0KS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JF QVRFIFRBQkxFIGhpX3ZtICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgYSBpbnQK KykgV0lUSCAoZmlsbGZhY3RvciA9IDUwLCBhdXRvdmFjdXVtX2VuYWJsZWQgPSBmYWxzZSk7 CitDUkVBVEUgSU5ERVggaGlfdm1fYV9pZHggT04gaGlfdm0oYSk7CitJTlNFUlQgSU5UTyBo aV92bSBWQUxVRVMgKDEsIDEpOworLS0gVHdvIEhPVC1pbmRleGVkIHVwZGF0ZXMgbGVhdmUg YSBtdWx0aS1ob3AgY2hhaW4sIHNvIGEgcHJlc2VydmVkIEhPVC1pbmRleGVkCistLSBtZW1i ZXIgcmVtYWlucyBvbiB0aGUgcGFnZSBhZnRlciBwcnVuZSwgd2hpY2ggaXMgd2hhdCB0aGlz IHRlc3QgbmVlZHMuCitVUERBVEUgaGlfdm0gU0VUIGEgPSAyIFdIRVJFIGlkID0gMTsKK1VQ REFURSBoaV92bSBTRVQgYSA9IDMgV0hFUkUgaWQgPSAxOworLS0gRm9yY2UgdGhlIGFsbC12 aXNpYmxlIGJpdCBkZWNpc2lvbjogVkFDVVVNIHdpdGggRElTQUJMRV9QQUdFX1NLSVBQSU5H CistLSBjb25zaWRlcnMgZXZlcnkgcGFnZTsgRlJFRVpFIHB1c2hlcyBoaW50IGJpdHMgaGFy ZC4gIEFmdGVyIHRoaXMsIGFueQorLS0gcGFnZSBiZWFyaW5nIGEgcHJlc2VydmVkIEhPVC1p bmRleGVkIG1lbWJlciBtdXN0IHN0aWxsIHJlcG9ydCBhbGxfdmlzaWJsZSA9IDAuCitWQUNV VU0gKEZSRUVaRSwgRElTQUJMRV9QQUdFX1NLSVBQSU5HKSBoaV92bTsKK1NFTEVDVCBuX2hv dF9pbmRleGVkID49IDEgQVMgaG90X2luZGV4ZWRfcHJlc2VudAorICBGUk9NIHBnX3JlbGF0 aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV92bScpOworIGhvdF9pbmRleGVkX3ByZXNlbnQg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIFBEX0FMTF9WSVNJ QkxFID0gMHgwMDA0LiAgTXVzdCBiZSAwIG9uIGEgcGFnZSB3aXRoIGEgcHJlc2VydmVkIG1l bWJlci4KK1NFTEVDVCAoZmxhZ3MgJiA0KSA9IDAgQVMgbm90X21hcmtlZF9hbGxfdmlzaWJs ZQorICBGUk9NIHBhZ2VfaGVhZGVyKGdldF9yYXdfcGFnZSgnaGlfdm0nLCAwKSk7Cisgbm90 X21hcmtlZF9hbGxfdmlzaWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygx IHJvdykKKworRFJPUCBUQUJMRSBoaV92bTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor LS0gMTQuIEN5Y2xlLWtleSBkZWR1cDogY29sdW1uIHJlbmFtZSBhIC0+IGIgLT4gYSBzdGF5 cyBjb3JyZWN0CistLQorLS0gQSByZW5hbWUgZG9lcyBub3QgcmV3cml0ZSBoZWFwIG9yIGlu ZGV4IGVudHJpZXM7IGl0IG9ubHkgdXBkYXRlcyB0aGUKKy0tIGNhdGFsb2cuICBUaGUgcmVs Y2FjaGUgaW52YWxpZGF0aW9uIG11c3QgdHJpZ2dlciBhIGZyZXNoIGF0dHJpYnV0ZQorLS0g Yml0bWFwIGFuZCB0aGUgSE9ULWluZGV4ZWQgcHJlZGljYXRlIG11c3QgY29tcGFyZSBhdHRy aWJ1dGUgKm51bWJlcnMqLAorLS0gbm90IGF0dHJpYnV0ZSAqbmFtZXMqLiAgQWZ0ZXIgdHdv IHJlbmFtZXMgdGhhdCBuZXQgdG8gaWRlbnRpdHksIGV2ZXJ5CistLSBzdWJzZXF1ZW50IFVQ REFURSBtdXN0IGNvbnRpbnVlIHRvIGRyaXZlIHRoZSBIT1QtaW5kZXhlZCBwYXRoLgorLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfY3ljbGUgKAorICAgIGlk IGludCBQUklNQVJZIEtFWSwKKyAgICBhIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworQ1JFQVRFIElOREVYIGhpX2N5Y2xlX2FfaWR4IE9OIGhpX2N5Y2xlKGEpOworSU5TRVJU IElOVE8gaGlfY3ljbGUgVkFMVUVTICgxLCAxMDApOworLS0gQ3ljbGUgdGhlIGNvbHVtbiBu YW1lIGFuZCBjb25maXJtIGJvdGggaW50ZXJtZWRpYXRlIGZvcm1zIGRyaXZlIEhPVC1pbmRl eGVkLgorQUxURVIgVEFCTEUgaGlfY3ljbGUgUkVOQU1FIENPTFVNTiBhIFRPIGI7CitVUERB VEUgaGlfY3ljbGUgU0VUIGIgPSAyMDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBob3RfaWR4ID4g MCBBUyBob3RfaW5kZXhlZF9hZnRlcl9maXJzdF9yZW5hbWUKKyAgRlJPTSBnZXRfaGlfY291 bnQoJ2hpX2N5Y2xlJyk7CisgaG90X2luZGV4ZWRfYWZ0ZXJfZmlyc3RfcmVuYW1lIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0FMVEVSIFRB QkxFIGhpX2N5Y2xlIFJFTkFNRSBDT0xVTU4gYiBUTyBhOworVVBEQVRFIGhpX2N5Y2xlIFNF VCBhID0gMzAwIFdIRVJFIGlkID0gMTsKKy0tIExvb2t1cCB2aWEgdGhlIGluZGV4IHJldHVy bnMgdGhlIGN1cnJlbnQgdmFsdWUsIG5vdCBhbnkgb2YgdGhlCistLSBwcmUtcmVuYW1lIHZh bHVlcy4KK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSBGUk9NIGhp X2N5Y2xlIFdIRVJFIGEgPSAzMDA7CisgaWQgfCAgYSAgCistLS0tKy0tLS0tCisgIDEgfCAz MDAKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaGlfY3ljbGUgV0hFUkUgYSA9IDEwMDsK KyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCBpZCBGUk9NIGhpX2N5Y2xlIFdIRVJF IGEgPSAyMDA7CisgaWQgCistLS0tCisoMCByb3dzKQorCitSRVNFVCBlbmFibGVfc2Vxc2Nh bjsKK0RST1AgVEFCTEUgaGlfY3ljbGU7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDE1LiBTdW1tYXJpemluZy1vbmx5IGNvbHVtbiBVUERBVEUgcHJvZHVjZXMgQ0xBU1NJQywg bm90IElOREVYRUQKKy0tCistLSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlIHJldHVybnMgSEVB UF9IRUFQX09OTFlfVVBEQVRFIHdoZW4gZXZlcnkKKy0tIG1vZGlmaWVkIGluZGV4ZWQgYXR0 cmlidXRlIGlzIGNvdmVyZWQgb25seSBieSBzdW1tYXJpemluZyBpbmRleGVzLgorLS0gQSBC UklOLW9ubHkgY29sdW1uIGlzIHRoZSBjYW5vbmljYWwgY2FzZTogdGhlIEJSSU4gaW5kZXgg Z2V0cyBhCistLSBuZXcgc3VtbWFyeSBlbnRyeSB2aWEgYW1pbnNlcnQsIGJ1dCBubyBwZXIt dXBkYXRlIGJ0cmVlIGVudHJ5IGlzCistLSBuZWVkZWQgYW5kIEhPVC1pbmRleGVkIGRvZXMg bm90IGZpcmUuICBUaGUgc2lnbmFsIGlzCistLSBuX3R1cF9ob3RfdXBkID4gMCB3aXRoIG5f dHVwX2hvdF9pbmRleGVkX3VwZCB1bmNoYW5nZWQuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK0NSRUFURSBUQUJMRSBoaV9icmluICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisg ICAgYmNvbCBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBo aV9icmluX2lkeCBPTiBoaV9icmluIFVTSU5HIGJyaW4oYmNvbCk7CitJTlNFUlQgSU5UTyBo aV9icmluIFZBTFVFUyAoMSwgMTAwKTsKKy0tIENhcHR1cmUgdGhlIEhPVC1pbmRleGVkIGNv dW50ZXIgYmVmb3JlLCBkcml2ZSBhIEJSSU4tb25seSB1cGRhdGUsCistLSBhbmQgYXNzZXJ0 IHRoYXQgY2xhc3NpYyBIT1QgYWR2YW5jZWQgd2hpbGUgSE9ULWluZGV4ZWQgZGlkIG5vdC4K K1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25l eHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgaG90X2lkeCBBUyBob3RfaWR4X2JlZm9yZSBGUk9NIGdldF9oaV9jb3VudCgnaGlf YnJpbicpIFxnc2V0CitVUERBVEUgaGlfYnJpbiBTRVQgYmNvbCA9IDIwMCBXSEVSRSBpZCA9 IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworU0VMRUNUIChob3QgLSAwKSA+IDAgQVMgY2xhc3NpY19ob3RfZmlyZWQsCisgICAgICAg aG90X2lkeCA9IDpob3RfaWR4X2JlZm9yZSBBUyBob3RfaW5kZXhlZF9kaWRfbm90X2ZpcmUK KyAgRlJPTSBnZXRfaGlfY291bnQoJ2hpX2JyaW4nKTsKKyBjbGFzc2ljX2hvdF9maXJlZCB8 IGhvdF9pbmRleGVkX2RpZF9ub3RfZmlyZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgICAgICAgICB8IHQKKygxIHJvdykK KworLS0gVGhlIEJSSU4gaW5kZXggc2VlcyB0aGUgbmV3IHZhbHVlIHZpYSBhbWluc2VydC4K K1NFTEVDVCBiY29sIEZST00gaGlfYnJpbiBXSEVSRSBpZCA9IDE7CisgYmNvbCAKKy0tLS0t LQorICAyMDAKKygxIHJvdykKKworRFJPUCBUQUJMRSBoaV9icmluOworLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSAxNi4gVU5JUVVFIGluZGV4IG9uIGEgdHlwZSB3aGVyZSBpbWFn ZSBlcXVhbGl0eSAhPSBvcGVyYXRvciBlcXVhbGl0eQorLS0KKy0tIG51bWVyaWMgMS4wIGFu ZCAxLjAwIGFyZSBlcXVhbCB1bmRlciB0aGUgYnRyZWUgb3BjbGFzcyBidXQgaGF2ZQorLS0g ZGlmZmVyZW50IG9uLWRpc2sgaW1hZ2VzLiAgQSBIT1QtaW5kZXhlZCB1cGRhdGUgMS4wIC0+ IDEuMDAgaW5zZXJ0cyBhCistLSBmcmVzaCBsZWFmIGNhcnJ5aW5nIHRoZSBsaXZlIGltYWdl IGFuZCBsZWF2ZXMgYSBzdGFsZSBsZWFmIGZvciAxLjAKKy0tICh0aGUgaG9wJ3MgbW9kaWZp ZWQtYXR0cnMgYml0bWFwIG1hcmtzIGsgY2hhbmdlZCwgc2luY2UgbW9kaWZpZWQtY29sdW1u CistLSBkZXRlY3Rpb24gaXMgaW1hZ2UtYmFzZWQpLiAgQSBsYXRlciBJTlNFUlQgb2YgYSB2 YWx1ZSBlcXVhbCB1bmRlciB0aGUKKy0tIG9wY2xhc3MgbXVzdCBzdGlsbCBiZSBkZXRlY3Rl ZCBhcyBhIGR1cGxpY2F0ZTogdGhlIHVuaXF1ZSBjaGVjayByZWFjaGVzCistLSB0aGUgbGl2 ZSB0dXBsZSB0aHJvdWdoIHRoZSBmcmVzaCBsZWFmLCB3aGljaCBwb2ludHMgZGlyZWN0bHkg YXQgaXQgKG5vIGhvcAorLS0gYWZ0ZXIgaXQsIHNvIHRoZSBvdmVybGFwIGlzIGVtcHR5IGFu ZCB0aGUgbGVhZiBpcyBhIGdlbnVpbmUgY29uZmxpY3QpOyB0aGUKKy0tIHN0YWxlIDEuMCBs ZWFmIGlzIHNraXBwZWQgYmVjYXVzZSB0aGUgay1jaGFuZ2luZyBob3Agb3ZlcmxhcHMgdGhl IHVuaXF1ZQorLS0gaW5kZXgncyBhdHRyaWJ1dGUuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK0NSRUFURSBUQUJMRSBoaV91bnVtIChrIG51bWVyaWMgVU5JUVVFLCBqIGludCkgV0lU SCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV91bnVtX2ogT04gaGlfdW51 bShqKTsgICAgICAgICAgICAgLS0gMm5kIGluZGV4ZWQgYXR0ciwga2VwdCBmaXhlZAorSU5T RVJUIElOVE8gaGlfdW51bSBWQUxVRVMgKDEuMCwgMTAwKTsKK1VQREFURSBoaV91bnVtIFNF VCBrID0gMS4wMCBXSEVSRSBqID0gMTAwOyAgICAgICAgLS0gSE9ULWluZGV4ZWQ6IDEuMCAt PiAxLjAwCitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCA+IDAgQVMgbWFkZV9ob3RfaW5kZXhlZAor ICBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV91bnVtJyk7CisgbWFk ZV9ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0g QSBudW1lcmljYWxseS1lcXVhbCBpbnNlcnQgbXVzdCBjb25mbGljdCAodGhlIGZyZXNoIGxl YWYgY2F0Y2hlcyBpdCk6CitJTlNFUlQgSU5UTyBoaV91bnVtIFZBTFVFUyAoMS4wLCAxKTsg ICAgICAgICAgICAgIC0tIGV4cGVjdCBkdXBsaWNhdGUga2V5IGVycm9yCitFUlJPUjogIGR1 cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgImhpX3VudW1f a19rZXkiCitERVRBSUw6ICBLZXkgKGspPSgxLjApIGFscmVhZHkgZXhpc3RzLgorLS0gQSBn ZW51aW5lbHkgZGlmZmVyZW50IHZhbHVlIGlzIGFjY2VwdGVkOgorSU5TRVJUIElOVE8gaGlf dW51bSBWQUxVRVMgKDIuMCwgMik7CitTRUxFQ1QgaywgaiBGUk9NIGhpX3VudW0gT1JERVIg QlkgajsKKyAgayAgIHwgIGogIAorLS0tLS0tKy0tLS0tCisgIDIuMCB8ICAgMgorIDEuMDAg fCAxMDAKKygyIHJvd3MpCisKK0RST1AgVEFCTEUgaGlfdW51bTsKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gMTcuIENSRUFURSBJTkRFWCBhbmQgUkVJTkRFWCBvdmVyIGxpdmUg SE9ULWluZGV4ZWQgY2hhaW5zCistLQorLS0gQSBmcmVzaGx5IGJ1aWx0IG9yIHJlYnVpbHQg aW5kZXggbXVzdCByZWZsZWN0IGN1cnJlbnQgdmFsdWVzLCBuZXZlciBhCistLSBzdGFsZSBj aGFpbiBtZW1iZXI6IHRoZSBidWlsZCBzY2FucyBsaXZlIHR1cGxlcyBvbmx5IGFuZCBwb2lu dHMgZWFjaAorLS0gSE9ULWluZGV4ZWQgbGl2ZSB0dXBsZSdzIGVudHJ5IGF0IGl0cyBvd24g VElELCBzbyB0aGUgbmV3IGVudHJpZXMgaGF2ZSBubworLS0gaG9wIGFmdGVyIHRoZW0gYW5k IHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAga2VlcHMgdGhlbS4KKy0tIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3JlaW5kZXggKGlkIGludCBQUklNQVJZ IEtFWSwgYSBpbnQsIGIgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElO REVYIGhpX3JlaW5kZXhfYSBPTiBoaV9yZWluZGV4KGEpOworSU5TRVJUIElOVE8gaGlfcmVp bmRleCBTRUxFQ1QgZywgZywgZyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2KSBnOworVVBE QVRFIGhpX3JlaW5kZXggU0VUIGEgPSBhICsgMTAwOyAgICAgICAgICAgICAgICAtLSBIT1Qt aW5kZXhlZCBvbiBhCitVUERBVEUgaGlfcmVpbmRleCBTRVQgYSA9IGEgKyAxMDA7ICAgICAg ICAgICAgICAgIC0tIGFnYWluIC0+IGxvbmdlciBjaGFpbnMKK1NFTEVDVCBuX2hvdF9pbmRl eGVkID4gMCBBUyBtYWRlX2hvdF9pbmRleGVkCisgIEZST00gcGdfcmVsYXRpb25faG90X2lu ZGV4ZWRfc3RhdHMoJ2hpX3JlaW5kZXgnKTsKKyBtYWRlX2hvdF9pbmRleGVkIAorLS0tLS0t LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBCdWlsZCBhIE5FVyBpbmRleCBhbmQg UkVJTkRFWCB0aGUgZXhpc3Rpbmcgb25lIG92ZXIgdGhlIGxpdmUgY2hhaW5zLgorQ1JFQVRF IElOREVYIGhpX3JlaW5kZXhfYiBPTiBoaV9yZWluZGV4KGIpOworUkVJTkRFWCBJTkRFWCBo aV9yZWluZGV4X2E7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQsIGEg RlJPTSBoaV9yZWluZGV4IFdIRVJFIGEgPSAyMDQ7ICAgICAgIC0tIGN1cnJlbnQgdmFsdWUg LT4gaWQgNAorIGlkIHwgIGEgIAorLS0tLSstLS0tLQorICA0IHwgMjA0CisoMSByb3cpCisK K1NFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JlaW5kZXggV0hFUkUgYSA9IDQ7ICAgICAgLS0g b2Jzb2xldGUgdmFsdWUgLT4gMAorIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cp CisKK1NFTEVDVCBpZCBGUk9NIGhpX3JlaW5kZXggV0hFUkUgYiA9IDI7ICAgICAgICAgICAg LS0gdmlhIGZyZXNobHkgYnVpbHQgaW5kZXggLT4gMgorIGlkIAorLS0tLQorICAyCisoMSBy b3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9yZWluZGV4Owor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxOC4gRFJPUCBldmVyeSBpbmRleCBvdmVy IGxpdmUgSE9ULWluZGV4ZWQgY2hhaW5zLCB0aGVuIFZBQ1VVTQorLS0KKy0tIEFmdGVyIGFs bCBpbmRleGVzIGFyZSBkcm9wcGVkLCBoZWFwIHBhZ2VzIG1heSBzdGlsbCBjYXJyeSBwcmVz ZXJ2ZWQKKy0tIEhPVC1pbmRleGVkIG1lbWJlcnMgbGVmdCBieSBlYXJsaWVyIHVwZGF0ZXMu ICBWQUNVVU0gb2Ygc3VjaCBhIG5vLWluZGV4CistLSByZWxhdGlvbiBtdXN0IGNvbXBsZXRl IHdpdGhvdXQgZXJyb3IsIGFuZCByZWFkcyBtdXN0IHN0YXkgY29ycmVjdCB2aWEgdGhlCist LSByZWRpcmVjdCBmb3J3YXJkZXJzLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVB VEUgVEFCTEUgaGlfZHJvcGlkeCAoaWQgaW50IFBSSU1BUlkgS0VZLCBhIGludCkgV0lUSCAo ZmlsbGZhY3RvciA9IDUwLCBhdXRvdmFjdXVtX2VuYWJsZWQgPSBmYWxzZSk7CitDUkVBVEUg SU5ERVggaGlfZHJvcGlkeF9hIE9OIGhpX2Ryb3BpZHgoYSk7CitJTlNFUlQgSU5UTyBoaV9k cm9waWR4IFNFTEVDVCBnLCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYpIGc7CitVUERB VEUgaGlfZHJvcGlkeCBTRVQgYSA9IGEgKyAxMDA7ICAgICAgICAgICAgICAgIC0tIEhPVC1p bmRleGVkIG9uIGEKK1VQREFURSBoaV9kcm9waWR4IFNFVCBhID0gYSArIDEwMDsgICAgICAg ICAgICAgICAgLS0gYWdhaW4gLT4gbG9uZ2VyIGNoYWlucworU0VMRUNUIG5faG90X2luZGV4 ZWQgPiAwIEFTIG1hZGVfaG90X2luZGV4ZWQKKyAgRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5k ZXhlZF9zdGF0cygnaGlfZHJvcGlkeCcpOworIG1hZGVfaG90X2luZGV4ZWQgCistLS0tLS0t LS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIERyb3AgZXZlcnkgaW5kZXgsIGxlYXZp bmcgcHJlc2VydmVkIEhPVC1pbmRleGVkIG1lbWJlcnMgd2l0aCBubyBpbmRleCB0byBzd2Vl cC4KK0RST1AgSU5ERVggaGlfZHJvcGlkeF9hOworQUxURVIgVEFCTEUgaGlfZHJvcGlkeCBE Uk9QIENPTlNUUkFJTlQgaGlfZHJvcGlkeF9wa2V5OworLS0gTXVzdCBub3QgY3Jhc2ggb24g dGhlIG5vLWluZGV4IHBhdGg7IHR3byBwYXNzZXMgZXhlcmNpc2UgdGhlIHNlY29uZC1wYXNz CistLSByZWNsYWltIGd1YXJkIGFzIHdlbGwuCitWQUNVVU0gaGlfZHJvcGlkeDsKK1ZBQ1VV TSBoaV9kcm9waWR4OworLS0gUmVhZHMgcmVtYWluIGNvcnJlY3QgYWZ0ZXIgdGhlIGluZGV4 ZXMgYXJlIGdvbmUuCitTRUxFQ1QgaWQsIGEgRlJPTSBoaV9kcm9waWR4IE9SREVSIEJZIGlk OworIGlkIHwgIGEgIAorLS0tLSstLS0tLQorICAxIHwgMjAxCisgIDIgfCAyMDIKKyAgMyB8 IDIwMworICA0IHwgMjA0CisgIDUgfCAyMDUKKyAgNiB8IDIwNgorKDYgcm93cykKKworRFJP UCBUQUJMRSBoaV9kcm9waWR4OworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxOS4g UmUtY29sbGFwc2Ugb2YgYSBkYXRhLXJlZGlyZWN0IGNoYWluIGFjcm9zcyBwYXJ0aWFsIFZB Q1VVTXMKKy0tCistLSBBIGNoYWluIHRoYXQgY29sbGFwc2VzIHRvIGEgSE9ULWluZGV4ZWQg ZGF0YSByZWRpcmVjdCwgaXMgdmFjdXVtZWQgd2l0aAorLS0gSU5ERVhfQ0xFQU5VUCBvZmYg KHNvIHRoZSBzdGFsZSBsZWF2ZXMgYW5kIHRoZSByZWRpcmVjdCBzdXJ2aXZlKSwgdGhlbgor LS0gcmVjZWl2ZXMgZnVydGhlciBIT1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQgcmUtY29sbGFw c2UgdGhlIGNoYWluIGFuZAorLS0gcmUtcG9pbnQgdGhlIHJlZGlyZWN0IGF0IGEgbmV3IGxp dmUgdHVwbGUsIG11c3Qgbm90IGxlYXZlIHRoZSByZWRpcmVjdAorLS0gZGFuZ2xpbmcuICBB IHN1YnNlcXVlbnQgZnVsbCBWQUNVVU0gbXVzdCBjb21wbGV0ZSB3aXRob3V0IGVycm9yLCBs ZWF2ZSB0aGUKKy0tIGhlYXAgY29uc2lzdGVudCAodmVyaWZ5X2hlYXBhbSByZXBvcnRzIG5v dGhpbmcpLCBhbmQgcmVhZHMgbXVzdCBzdGF5CistLSBjb3JyZWN0LiAgKFJlZ3Jlc3Npb246 IGFuIGVhcmxpZXIgcmV2aXNpb24gY3Jhc2hlZCByZWNsYWltaW5nIGEgbWlkLWNoYWluCist LSBtZW1iZXIgd2hpbGUgYSBkYXRhIHJlZGlyZWN0IHN0aWxsIHBvaW50ZWQgcGFzdCBpdC4p CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVY SVNUUyBhbWNoZWNrOworQ1JFQVRFIFRBQkxFIGhpX3JlY29sbGFwc2UgKGlkIGludCBQUklN QVJZIEtFWSwgYSBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCwgYXV0b3ZhY3V1bV9lbmFi bGVkID0gZmFsc2UpOworQ1JFQVRFIElOREVYIGhpX3JlY29sbGFwc2VfYSBPTiBoaV9yZWNv bGxhcHNlKGEpOworSU5TRVJUIElOVE8gaGlfcmVjb2xsYXBzZSBWQUxVRVMgKDEsIDEpOwor LS0gRmlyc3QgY2hhaW46IHR3byBIT1QtaW5kZXhlZCB1cGRhdGVzLCB0aGVuIHBydW5lIHRv IGEgZGF0YSByZWRpcmVjdCB3aGlsZQorLS0gbGVhdmluZyB0aGUgc3RhbGUgYnRyZWUgbGVh dmVzIGluIHBsYWNlIChJTkRFWF9DTEVBTlVQIG9mZikuCitVUERBVEUgaGlfcmVjb2xsYXBz ZSBTRVQgYSA9IDIgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX3JlY29sbGFwc2UgU0VUIGEg PSAzIFdIRVJFIGlkID0gMTsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpX3JlY29s bGFwc2U7CistLSBSZS1jb2xsYXBzZTogbW9yZSBIT1QtaW5kZXhlZCB1cGRhdGVzIGV4dGVu ZCB0aGUgY2hhaW4gcGFzdCB0aGUgcmVkaXJlY3QKKy0tIHRhcmdldDsgdGhlIG5leHQgcHJ1 bmUgcmUtcG9pbnRzIHRoZSBkYXRhIHJlZGlyZWN0IGF0IHRoZSBuZXcgZmlyc3QgbGl2ZQor LS0gdHVwbGUgYW5kIGV4dGVuZHMgaXRzIHVuaW9uLgorVVBEQVRFIGhpX3JlY29sbGFwc2Ug U0VUIGEgPSA0IFdIRVJFIGlkID0gMTsKK1VQREFURSBoaV9yZWNvbGxhcHNlIFNFVCBhID0g NSBXSEVSRSBpZCA9IDE7CitWQUNVVU0gKElOREVYX0NMRUFOVVAgb2ZmKSBoaV9yZWNvbGxh cHNlOworLS0gRnVsbCB2YWN1dW0gbm93IHJlY2xhaW1zIHRoZSBkZWFkIGNoYWluOyB0aGUg cmUtcG9pbnRlZCByZWRpcmVjdCBtdXN0IG5vdAorLS0gZGFuZ2xlLiAgVHdvIHBhc3NlcyBh bHNvIGV4ZXJjaXNlIHRoZSByZWRpcmVjdCByZS1wb2ludCBzZWNvbmQgcGFzcy4KK1ZBQ1VV TSBoaV9yZWNvbGxhcHNlOworVkFDVVVNIGhpX3JlY29sbGFwc2U7CistLSBIZWFwIG11c3Qg YmUgc3RydWN0dXJhbGx5IGNvbnNpc3RlbnQgKG5vIHJvd3MgPT0gbm8gY29ycnVwdGlvbiku CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3JlY29sbGFwc2UnKTsKKyBibGtu byB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0KKygwIHJvd3MpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBp ZCwgYSBGUk9NIGhpX3JlY29sbGFwc2UgV0hFUkUgYSA9IDU7ICAgICAtLSBjdXJyZW50IHZh bHVlIC0+IGlkIDEKKyBpZCB8IGEgCistLS0tKy0tLQorICAxIHwgNQorKDEgcm93KQorCitT RUxFQ1QgY291bnQoKikgRlJPTSBoaV9yZWNvbGxhcHNlIFdIRVJFIGEgPSAzOyAgLS0gb2Jz b2xldGUgdmFsdWUgLT4gMAorIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisK K1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUIGlkLCBhIEZST00gaGlfcmVjb2xsYXBz ZSBPUkRFUiBCWSBpZDsKKyBpZCB8IGEgCistLS0tKy0tLQorICAxIHwgNQorKDEgcm93KQor CitEUk9QIFRBQkxFIGhpX3JlY29sbGFwc2U7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky0tIDIwLiBJbmRleCBkZWxldGlvbiBvdmVyIGFuIGVudHJ5IHRoYXQgcG9pbnRzIGF0IGEg ZGF0YS1yZWRpcmVjdCByb290CistLQorLS0gQSBkYXRhIHJlZGlyZWN0IGlzIGFuIExQX1JF RElSRUNUIHRoYXQgY2FycmllcyBhIGJpdG1hcCwgc28gaXQgcmVwb3J0cworLS0gbHBfbGVu ID4gMCAoSXRlbUlkSGFzU3RvcmFnZSB0cnVlKSBldmVuIHRob3VnaCBpdCBpcyBub3QgYSBu b3JtYWwgdHVwbGUuCistLSBpbmRleF9kZWxldGVfY2hlY2tfaHRpZCBtdXN0IHRyZWF0IGl0 IGFzIGEgcmVkaXJlY3QsIG5vdCByZWFkIGl0cyBibG9iIGFzIGEKKy0tIEhlYXBUdXBsZUhl YWRlci4gIFJlcHJvZHVjZTogY29sbGFwc2UgYSBjaGFpbiByb290IHRvIGEgZGF0YSByZWRp cmVjdCB3aGlsZQorLS0ga2VlcGluZyB0aGUgc3RhbGUgbGVhZiB0aGF0IHBvaW50cyBhdCBp dCAoSU5ERVhfQ0xFQU5VUCBvZmYpLCB0aGVuIGluc2VydAorLS0gbWFueSBkdXBsaWNhdGVz IG9mIHRoZSBzdGFsZSBrZXkgc28gYnRyZWUgYm90dG9tLXVwIGRlbGV0aW9uIHJ1bnMKKy0t IGhlYXBfaW5kZXhfZGVsZXRlX3R1cGxlcyBvdmVyIHRoYXQgc3RhbGUgZW50cnkuCistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9pZGRlbCAoaWQgaW50LCBh IGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwLCBhdXRvdmFjdXVtX2VuYWJsZWQgPSBmYWxz ZSk7CitDUkVBVEUgSU5ERVggaGlfaWRkZWxfYSBPTiBoaV9pZGRlbChhKTsKK0lOU0VSVCBJ TlRPIGhpX2lkZGVsIFZBTFVFUyAoMSwgMSk7CitVUERBVEUgaGlfaWRkZWwgU0VUIGEgPSBh ICsgMSBXSEVSRSBpZCA9IDE7ICAgICAgICAgIC0tIEhPVC1pbmRleGVkCitVUERBVEUgaGlf aWRkZWwgU0VUIGEgPSBhICsgMSBXSEVSRSBpZCA9IDE7ICAgICAgICAgIC0tIG11bHRpLWhv cCBjaGFpbgorVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGlfaWRkZWw7ICAgICAgICAg ICAgICAgICAtLSByb290IC0+IGRhdGEgcmVkaXJlY3QsIGtlZXAgc3RhbGUgYT0xIGxlYWYK Ky0tIE1hbnkgZHVwbGljYXRlcyBvZiB0aGUgc3RhbGUga2V5IGZpbGwgdGhlIGxlYWYgYW5k IHRyaWdnZXIgYm90dG9tLXVwCistLSBkZWxldGlvbiwgd2hpY2ggZmVlZHMgdGhlIHN0YWxl IGE9MSBlbnRyeSAoaHRpZCAtPiB0aGUgZGF0YS1yZWRpcmVjdCByb290KQorLS0gdG8gaGVh cF9pbmRleF9kZWxldGVfdHVwbGVzLiAgTXVzdCBub3QgY3Jhc2ggb3IgbWlzcmVhZCB0aGUg YmxvYi4KK0lOU0VSVCBJTlRPIGhpX2lkZGVsIFNFTEVDVCBnLCAxIEZST00gZ2VuZXJhdGVf c2VyaWVzKDIsIDMwMDApIGc7CitWQUNVVU0gaGlfaWRkZWw7CitTRUxFQ1QgKiBGUk9NIHZl cmlmeV9oZWFwYW0oJ2hpX2lkZGVsJyk7CisgYmxrbm8gfCBvZmZudW0gfCBhdHRudW0gfCBt c2cgCistLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tCisoMCByb3dzKQorCitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQsIGEgRlJPTSBoaV9pZGRlbCBXSEVS RSBpZCA9IDE7ICAgICAgICAgICAgIC0tIGN1cnJlbnQgdmFsdWUgLT4gYSA9IDMKKyBpZCB8 IGEgCistLS0tKy0tLQorICAxIHwgMworKDEgcm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2Nh bjsKK0RST1AgVEFCTEUgaGlfaWRkZWw7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDIxLiBBIGNoYW5nZSB0byBhIGNvbHVtbiBjb3ZlcmVkIGJ5IGEgbm9uLWJ0cmVlIGluZGV4 IEFNIGlzIEhPVC1pbmRleGVkCistLQorLS0gQSBIT1QtaW5kZXhlZCB1cGRhdGUgbGVhdmVz IGEgc3RhbGUgcHJlLXVwZGF0ZSBsZWFmIHRoYXQgdGhlIHJlYWQgc2lkZQorLS0gZmlsdGVy cyB2aWEgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCwgd2hpY2ggaXMgYWNjZXNzLW1l dGhvZCBhZ25vc3RpYy4KKy0tIEEgY29sdW1uIGNvdmVyZWQgYnkgYSBub24tYnRyZWUgaW5k ZXggKGhlcmUgYSBHaVNUIGluZGV4IG9uIGEgcG9pbnQgY29sdW1uKQorLS0gaXMgdGhlcmVm b3JlIEhPVC1pbmRleGVkIGxpa2UgYW55IG90aGVyLCBhbmQgdGhlIEdpU1QgaW5kZXggc3Rp bGwgcmV0dXJucworLS0gY29ycmVjdCByZXN1bHRzIGFjcm9zcyB0aGUgY2hhaW4uICBBIGNo YW5nZSB0byBhIGJ0cmVlLW9ubHkgY29sdW1uIG9uIHRoZQorLS0gc2FtZSB0YWJsZSBpcyBs aWtld2lzZSBIT1QtaW5kZXhlZC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRF IFRBQkxFIGhpX25vbmJ0cmVlIChpZCBpbnQgUFJJTUFSWSBLRVksIHRhZyBpbnQsIHAgcG9p bnQpCisgICAgV0lUSCAoZmlsbGZhY3RvciA9IDEwKTsKK0NSRUFURSBJTkRFWCBoaV9ub25i dHJlZV90YWcgT04gaGlfbm9uYnRyZWUgKHRhZyk7ICAgICAgICAgIC0tIGJ0cmVlIGluZGV4 CitDUkVBVEUgSU5ERVggaGlfbm9uYnRyZWVfcCBPTiBoaV9ub25idHJlZSBVU0lORyBnaXN0 IChwKTsgICAtLSBHaVNULCBub24tYnRyZWUKK0lOU0VSVCBJTlRPIGhpX25vbmJ0cmVlIFNF TEVDVCBnLCBnLCBwb2ludChnLCBnKQorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIw MCkgZzsKKy0tIENoYW5nZSB0aGUgR2lTVC1jb3ZlcmVkIGNvbHVtbiBmaXJzdDogSE9ULWlu ZGV4ZWQgKGhvdF9pZHggPSAyMDApLgorVVBEQVRFIGhpX25vbmJ0cmVlIFNFVCBwID0gcG9p bnQocFswXSArIDEwMDAsIHBbMV0gKyAxMDAwKTsKK1NFTEVDVCBob3RfaWR4IEFTIGdpc3Rf Y29sX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9ub25idHJlZScpOworIGdp c3RfY29sX2hvdF9pbmRleGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAgICAgMjAwCisoMSByb3cpCisKKy0tIFRoZSBHaVNUIGluZGV4IG11c3QgcmV0dXJu IGNvcnJlY3QgcmVzdWx0czogdGhlIG9sZCBwb3NpdGlvbnMgYXJlIGdvbmUgYW5kCistLSBl dmVyeSByb3cgaXMgZm91bmQgYXQgaXRzIG5ldyBwb3NpdGlvbiAobm8gc3RhbGUgbGVhZiBz dXJmYWNlcyBhbiBvbGQga2V5KS4KK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVD VCBjb3VudCgqKSBBUyBhdF9vbGRfcG9zaXRpb25zCisgICAgRlJPTSBoaV9ub25idHJlZSBX SEVSRSBwIDxAIGJveChwb2ludCgwLCAwKSwgcG9pbnQoMzAwLCAzMDApKTsKKyBhdF9vbGRf cG9zaXRpb25zIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgMAorKDEg cm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYXRfbmV3X3Bvc2l0aW9ucworICAgIEZST00g aGlfbm9uYnRyZWUgV0hFUkUgcCA8QCBib3gocG9pbnQoMTAwMCwgMTAwMCksIHBvaW50KDEz MDAsIDEzMDApKTsKKyBhdF9uZXdfcG9zaXRpb25zIAorLS0tLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgIDIwMAorKDEgcm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKy0t IENoYW5naW5nIHRoZSBidHJlZS1vbmx5IGNvbHVtbiAocCB1bmNoYW5nZWQpIHN0YXlzIEhP VC1pbmRleGVkLgorVVBEQVRFIGhpX25vbmJ0cmVlIFNFVCB0YWcgPSB0YWcgKyAxMDAwOwor U0VMRUNUIGhvdF9pZHggPiAwIEFTIGJ0cmVlX2NvbF9pc19ob3RfaW5kZXhlZCBGUk9NIGdl dF9oaV9jb3VudCgnaGlfbm9uYnRyZWUnKTsKKyBidHJlZV9jb2xfaXNfaG90X2luZGV4ZWQg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gQSBkaXN0 YW5jZS1vcmRlcmVkIChLTk4pIEdpU1Qgc2NhbiB1c2VzIHRoZSByZW9yZGVyIHNjYW4gcGF0 aAorLS0gKEluZGV4TmV4dFdpdGhSZW9yZGVyKSwgYSBkaWZmZXJlbnQgY29kZSBwYXRoIGZy b20gdGhlIHJhbmdlIHNjYW4gYWJvdmUuCistLSBJdCBtdXN0IGFsc28gZHJvcCBzdGFsZSBI T1QtaW5kZXhlZCBsZWF2ZXM6IGFmdGVyIHRoZSBwLXVwZGF0ZSB0aGUgb25seQorLS0gbGl2 ZSBwb3NpdGlvbnMgYXJlIHRoZSBuZXcgb25lcywgc28gdGhlIG5lYXJlc3QgbmVpZ2hib3Vy cyBvZiB0aGUgbmV3CistLSBvcmlnaW4gbXVzdCBhbGwgYmUgYXQgdGhlIG5ldyBwb3NpdGlv bnMgYW5kIG5vbmUgYXQgdGhlIG9sZCBvbmVzLgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2Zm OworU0VMRUNUIGNvdW50KCopIEFTIGtubl9hbGxfYXRfbmV3X3Bvc2l0aW9ucyBGUk9NICgK KyAgICBTRUxFQ1QgcCBGUk9NIGhpX25vbmJ0cmVlIE9SREVSIEJZIHAgPC0+IHBvaW50KDEw MDAsIDEwMDApIExJTUlUIDIwMAorKSBzIFdIRVJFIHAgPEAgYm94KHBvaW50KDEwMDAsIDEw MDApLCBwb2ludCgxMzAwLCAxMzAwKSk7Cisga25uX2FsbF9hdF9uZXdfcG9zaXRpb25zIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAyMDAK KygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEFTIGtubl9ub25lX2F0X29sZF9wb3NpdGlv bnMgRlJPTSAoCisgICAgU0VMRUNUIHAgRlJPTSBoaV9ub25idHJlZSBPUkRFUiBCWSBwIDwt PiBwb2ludCgwLCAwKSBMSU1JVCAyMDAKKykgcyBXSEVSRSBwIDxAIGJveChwb2ludCgwLCAw KSwgcG9pbnQoMzAwLCAzMDApKTsKKyBrbm5fbm9uZV9hdF9vbGRfcG9zaXRpb25zIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgMAor KDEgcm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlfbm9uYnRy ZWU7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIyLiBBQkEgb24gYSB1bmlxdWUg a2V5IGFjcm9zcyB0d28gZGlzdGluY3QgbGl2ZSByb3dzOiBhIGtleSBjeWNsZWQgYXdheQor LS0gYW5kIGJhY2sgbXVzdCBzdGlsbCBjb2xsaWRlIHdpdGggYW5vdGhlciByb3cgdGhhdCBo b2xkcyBpdC4gIFRoZSBzdGFsZQorLS0gbGVhdmVzIGxlZnQgYnkgdGhlIGN5Y2xlIG11c3Qg bm90IGxldCBhIGdlbnVpbmUgZHVwbGljYXRlIHNsaXAgcGFzdCB0aGUKKy0tIHVuaXF1ZW5l c3MgY2hlY2sgLS0gdGhlIHJlYWQtc2lkZSByZWNoZWNrIGNvbXBhcmVzIHRoZSBsaXZlIGtl eSwgbm90IGp1c3QKKy0tIGEgY2hhbmdlZC1hdHRyaWJ1dGUgYml0bWFwLgorLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfYWJhIChrIGludCwgdiBpbnQpIFdJ VEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgVU5JUVVFIElOREVYIGhpX2FiYV9rIE9O IGhpX2FiYSAoayk7CitDUkVBVEUgSU5ERVggaGlfYWJhX3YgT04gaGlfYWJhICh2KTsKK0lO U0VSVCBJTlRPIGhpX2FiYSBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKKy0tIEN5Y2xlIHJv dzEncyB1bmlxdWUga2V5IDEgLT4gMyAtPiAxICh2IHVuY2hhbmdlZCwgc28gZWFjaCBzdGVw IGlzCistLSBIT1QtaW5kZXhlZCBhbmQgbGVhdmVzIHN0YWxlIGVudHJpZXMgaW4gaGlfYWJh X2spLgorVVBEQVRFIGhpX2FiYSBTRVQgayA9IDMgV0hFUkUgdiA9IDEwOworVVBEQVRFIGhp X2FiYSBTRVQgayA9IDEgV0hFUkUgdiA9IDEwOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGN5 Y2xlZF9ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfYWJhJyk7CisgY3ljbGVk X2hvdF9pbmRleGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0t IHJvdzEgaXMgbGl2ZSBhdCBrID0gMSBhZ2Fpbi4gIE1vdmluZyByb3cyIG9udG8gayA9IDEg bXVzdCByYWlzZSBhIHVuaXF1ZQorLS0gdmlvbGF0aW9uIGRlc3BpdGUgdGhlIHN0YWxlICcx JyBsZWF2ZXMgZnJvbSB0aGUgY3ljbGUuCitVUERBVEUgaGlfYWJhIFNFVCBrID0gMSBXSEVS RSB2ID0gMjA7CitFUlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVl IGNvbnN0cmFpbnQgImhpX2FiYV9rIgorREVUQUlMOiAgS2V5IChrKT0oMSkgYWxyZWFkeSBl eGlzdHMuCitEUk9QIFRBQkxFIGhpX2FiYTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor LS0gMjMuIFBhcnRpYWwgaW5kZXggd2hvc2UgcHJlZGljYXRlIHJlZmVyZW5jZXMgYSBub24t a2V5IGNvbHVtbi4gIEZsaXBwaW5nIHRoZQorLS0gcm93IG91dCBvZiB0aGUgcHJlZGljYXRl IHdoaWxlIGxlYXZpbmcgdGhlIGluZGV4ZWQga2V5IHVuY2hhbmdlZCBpcworLS0gSE9ULWlu ZGV4ZWQ6IHRoZSBwcmVkaWNhdGUgY29sdW1uIGlzIHBhcnQgb2YgdGhlIGluZGV4J3MgYXR0 cmlidXRlIHNldCwgc28KKy0tIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgZHJvcHMg dGhlIG5vdy1zdGFsZSBwYXJ0aWFsLWluZGV4IGVudHJ5IG9uIHJlYWQKKy0tIChubyB2YWx1 ZSByZWNoZWNrIGlzIGludm9sdmVkKS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JF QVRFIFRBQkxFIGhpX3BhcnRwcmVkIChpZCBpbnQgUFJJTUFSWSBLRVksIGsgaW50LCBhY3Rp dmUgYm9vbGVhbikKKyAgICBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVY IGhpX3BhcnRwcmVkX2sgT04gaGlfcGFydHByZWQgKGspIFdIRVJFIGFjdGl2ZTsKK0lOU0VS VCBJTlRPIGhpX3BhcnRwcmVkIFZBTFVFUyAoMSwgMTAwLCB0cnVlKTsKKy0tIEZsaXAgdGhl IHByZWRpY2F0ZSBjb2x1bW4gJ2FjdGl2ZScgdHJ1ZSAtPiBmYWxzZTsgdGhlIGluZGV4IGtl eSBrIGlzCistLSB1bmNoYW5nZWQuICBUaGUgcm93IG5vIGxvbmdlciBzYXRpc2ZpZXMgdGhl IHByZWRpY2F0ZSwgc28gaXRzIHBhcnRpYWwtaW5kZXgKKy0tIGVudHJ5IG11c3QgYmUgcmVt b3ZlZCwgbm90IGxlZnQgcG9pbnRpbmcgaW50byB0aGUgY2hhaW4uCitVUERBVEUgaGlfcGFy dHByZWQgU0VUIGFjdGl2ZSA9IGZhbHNlIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0 X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgaG90LCBob3Rf aWR4IEZST00gZ2V0X2hpX2NvdW50KCdoaV9wYXJ0cHJlZCcpOworIGhvdCB8IGhvdF9pZHgg CistLS0tLSstLS0tLS0tLS0KKyAgIDEgfCAgICAgICAxCisoMSByb3cpCisKKy0tIFRoZSBw YXJ0aWFsIGluZGV4IG11c3Qgbm90IHN1cmZhY2UgdGhlIHJvdyBub3cgdGhhdCBhY3RpdmUg PSBmYWxzZS4KKy0tIEEgcXVlcnkgd2hvc2UgcXVhbCBleGFjdGx5IG1hdGNoZXMgdGhlIHBh cnRpYWwgcHJlZGljYXRlIHVzZXMgdGhlIGluZGV4CistLSB3aXRob3V0IHJlLWZpbHRlcmlu ZyAnYWN0aXZlJyBvbiB0aGUgaGVhcCwgc28gYSBzdGFsZSBlbnRyeSB3b3VsZCBzdXJmYWNl LgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0g b2ZmOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJPTSBoaV9wYXJ0cHJlZCBX SEVSRSBhY3RpdmU7CisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBJbmRleCBTY2FuIHVzaW5nIGhpX3BhcnRwcmVkX2sgb24gaGlfcGFydHByZWQKKygx IHJvdykKKworU0VMRUNUIGlkIEZST00gaGlfcGFydHByZWQgV0hFUkUgayA9IDEwMCBBTkQg YWN0aXZlOworIGlkIAorLS0tLQorKDAgcm93cykKKworU0VMRUNUIGlkIEZST00gaGlfcGFy dHByZWQgV0hFUkUgYWN0aXZlOworIGlkIAorLS0tLQorKDAgcm93cykKKworUkVTRVQgZW5h YmxlX2JpdG1hcHNjYW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlf cGFydHByZWQ7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI0LiBSZWNsYWltICsg c3R1YiBtaXguICBSZXBlYXRlZCB1cGRhdGVzIG9mIGNvbHVtbiBhIGZvbGxvd2VkIGJ5IGFu IHVwZGF0ZQorLS0gb2YgY29sdW1uIGIgYnVpbGQgYSBjaGFpbiB3aG9zZSBwcnVuZSByZWNs YWltcyB0aGUgbWVtYmVycyB3aG9zZSBjaGFuZ2Ugd2FzCistLSBzdXBlcnNlZGVkIChhIGNo YW5nZWQgYWdhaW4pIGFuZCBrZWVwcyBzdHVicyBmb3IgdGhvc2UgdGhhdCB3ZXJlIG5vdCwg c28gYQorLS0gcm9vdCByZWRpcmVjdCBlbmRzIHVwIHBvaW50aW5nIGF0IGEgc3R1YiBhbmQg YSBsYXRlciB3YWxrIGNyb3NzZXMgbWlkLWNoYWluCistLSBzdHVicy4gIFJlYWRzIHRocm91 Z2ggZWFjaCBpbmRleCBhbmQgYW1jaGVjayBtdXN0IHN0YXkgY29ycmVjdCBhY3Jvc3MgdGhl CistLSBjb2xsYXBzZSwgYW5kIGEgc2Vjb25kIHJvdW5kIG11c3Qgd2FsayB0aGUgZXhpc3Rp bmcgc3R1YnMgd2l0aG91dCBzZXZlcmluZworLS0gdGhlIGNoYWluLgorLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfc3R1Ym1peCAoaWQgaW50IFBSSU1BUlkg S0VZLCBhIGludCwgYiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCwgYXV0b3ZhY3V1bV9l bmFibGVkID0gZmFsc2UpOworQ1JFQVRFIElOREVYIGhpX3N0dWJtaXhfYSBPTiBoaV9zdHVi bWl4IChhKTsKK0NSRUFURSBJTkRFWCBoaV9zdHVibWl4X2IgT04gaGlfc3R1Ym1peCAoYik7 CitJTlNFUlQgSU5UTyBoaV9zdHVibWl4IFZBTFVFUyAoMSwgMTAsIDEwMCk7CitVUERBVEUg aGlfc3R1Ym1peCBTRVQgYSA9IDExIFdIRVJFIGlkID0gMTsgICAtLSBjaGFuZ2VzIGEKK1VQ REFURSBoaV9zdHVibWl4IFNFVCBhID0gMTIgV0hFUkUgaWQgPSAxOyAgIC0tIGNoYW5nZXMg YSBhZ2FpbiAoc3VwZXJzZWRlcykKK1VQREFURSBoaV9zdHVibWl4IFNFVCBiID0gMTAxIFdI RVJFIGlkID0gMTsgIC0tIGNoYW5nZXMgYgorVkFDVVVNIGhpX3N0dWJtaXg7CitTRVQgZW5h YmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxF Q1QgaWQsIGEsIGIgRlJPTSBoaV9zdHVibWl4IFdIRVJFIGEgPSAxMjsgICAtLSBjdXJyZW50 IGEKKyBpZCB8IGEgIHwgIGIgIAorLS0tLSstLS0tKy0tLS0tCisgIDEgfCAxMiB8IDEwMQor KDEgcm93KQorCitTRUxFQ1QgaWQsIGEsIGIgRlJPTSBoaV9zdHVibWl4IFdIRVJFIGIgPSAx MDE7ICAtLSBjdXJyZW50IGIKKyBpZCB8IGEgIHwgIGIgIAorLS0tLSstLS0tKy0tLS0tCisg IDEgfCAxMiB8IDEwMQorKDEgcm93KQorCitTRUxFQ1QgaWQgRlJPTSBoaV9zdHVibWl4IFdI RVJFIGEgPSAxMDsgICAgICAgICAtLSBzdGFsZSBhOiAwIHJvd3MKKyBpZCAKKy0tLS0KKygw IHJvd3MpCisKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNj YW47CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3N0dWJtaXgnKTsgICAgICAt LSBubyBjb3JydXB0aW9uIGFjcm9zcyBzdHVicworIGJsa25vIHwgb2ZmbnVtIHwgYXR0bnVt IHwgbXNnIAorLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLQorKDAgcm93cykKKwor LS0gQSBzZWNvbmQgcm91bmQgbXVzdCB3YWxrIHRoZSBleGlzdGluZyBzdHVicyAobm8gcHJp b3JYbWF4IHNldmVyKS4KK1VQREFURSBoaV9zdHVibWl4IFNFVCBhID0gMTMgV0hFUkUgaWQg PSAxOworVkFDVVVNIGhpX3N0dWJtaXg7CitTRUxFQ1QgaWQsIGEsIGIgRlJPTSBoaV9zdHVi bWl4IFdIRVJFIGEgPSAxMzsKKyBpZCB8IGEgIHwgIGIgIAorLS0tLSstLS0tKy0tLS0tCisg IDEgfCAxMyB8IDEwMQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0o J2hpX3N0dWJtaXgnKTsKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK0RST1AgVEFCTEUgaGlf c3R1Ym1peDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjUuIEV4Y2x1c2lvbi1j b25zdHJhaW50IHRhYmxlcyBhcmUgSE9ULWluZGV4ZWQtZWxpZ2libGUuCistLQorLS0gQW4g ZXhjbHVzaW9uIGNvbnN0cmFpbnQgaXMgZW5mb3JjZWQgYnkgY2hlY2tfZXhjbHVzaW9uX29y X3VuaXF1ZV9jb25zdHJhaW50LAorLS0gd2hpY2ggcmVjaGVja3MgZWFjaCBjYW5kaWRhdGUg YWdhaW5zdCB0aGUgbGl2ZSB0dXBsZSdzIGN1cnJlbnQgaW5kZXgtZm9ybQorLS0gd2l0aCB0 aGUgY29uc3RyYWludCdzIG93biBvcGVyYXRvcnMsIHNvIGEgc3RhbGUgZW50cnkgbGVmdCBi eSBhIEhPVC1pbmRleGVkCistLSB1cGRhdGUgaXMgc2tpcHBlZCB3aGlsZSB0aGUgbGl2ZSBr ZXkgYWx3YXlzIGhhcyBpdHMgb3duIGVudHJ5LiAgVXBkYXRpbmcgYQorLS0gbm9uLWNvbnN0 cmFpbmVkIGluZGV4ZWQgY29sdW1uIGlzIEhPVC1pbmRleGVkICh0aGUgR2lTVCBleGNsdXNp b24gaW5kZXggaXMKKy0tIHNraXBwZWQpLCBhbmQgdGhlIGNvbnN0cmFpbnQgc3RheXMgY29y cmVjdC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2V4Y2wg KAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0YWcgaW50LAorICAgIGR1cmluZyBp bnQ0cmFuZ2UsCisgICAgRVhDTFVERSBVU0lORyBnaXN0IChkdXJpbmcgV0lUSCAmJikKKykg V0lUSCAoZmlsbGZhY3RvciA9IDEwKTsKK0NSRUFURSBJTkRFWCBoaV9leGNsX3RhZyBPTiBo aV9leGNsKHRhZyk7CitJTlNFUlQgSU5UTyBoaV9leGNsIFZBTFVFUyAoMSwgMTAwLCBpbnQ0 cmFuZ2UoMSwgMTApKSwgKDIsIDIwMCwgaW50NHJhbmdlKDIwLCAzMCkpOworLS0gVXBkYXRl IGEgbm9uLWNvbnN0cmFpbmVkIGluZGV4ZWQgY29sdW1uOiBIT1QtaW5kZXhlZCAoR2lTVCBl eGNsdXNpb24gaW5kZXgKKy0tIGFuZCBQSyBza2lwcGVkKSwgYW5kIHRoZSBleGNsdXNpb24g Y29uc3RyYWludCBpcyBzdGlsbCBlbmZvcmNlZC4KK1VQREFURSBoaV9leGNsIFNFVCB0YWcg PSB0YWcgKyAxIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyB0YWdfdXBk YXRlX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9leGNsJyk7CisgdGFnX3Vw ZGF0ZV9ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJv dykKKworSU5TRVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDMsIDMwMCwgaW50NHJhbmdlKDUs IDE1KSk7ICAtLSBvdmVybGFwcyBpZD0xJ3MgKDEsMTApCitFUlJPUjogIGNvbmZsaWN0aW5n IGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAiaGlfZXhjbF9kdXJp bmdfZXhjbCIKK0RFVEFJTDogIEtleSAoZHVyaW5nKT0oWzUsMTUpKSBjb25mbGljdHMgd2l0 aCBleGlzdGluZyBrZXkgKGR1cmluZyk9KFsxLDEwKSkuCistLSBNb3ZlIGlkPTEncyByYW5n ZSBhd2F5ICh0aGlzIHVwZGF0ZXMgdGhlIEdpU1QgaW5kZXgsIGxlYXZpbmcgYSBzdGFsZSBl bnRyeQorLS0gZm9yIHRoZSBvbGQgKDEsMTApIHJhbmdlKS4gIEEgcmFuZ2Ugb3ZlcmxhcHBp bmcgb25seSB0aGUgT0xEIHJhbmdlIG5vdworLS0gaW5zZXJ0cyBjbGVhbmx5ICh0aGUgc3Rh bGUgZW50cnkgaXMgc2tpcHBlZCk7IG9uZSBvdmVybGFwcGluZyB0aGUgTkVXIHJhbmdlCist LSBzdGlsbCBjb25mbGljdHMuCitVUERBVEUgaGlfZXhjbCBTRVQgZHVyaW5nID0gaW50NHJh bmdlKDEwMCwgMTEwKSBXSEVSRSBpZCA9IDE7CitJTlNFUlQgSU5UTyBoaV9leGNsIFZBTFVF UyAoNCwgNDAwLCBpbnQ0cmFuZ2UoNSwgMTUpKTsgICAtLSBvbmx5IG92ZXJsYXBwZWQgb2xk IHJhbmdlOiBPSworSU5TRVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDUsIDUwMCwgaW50NHJh bmdlKDEwNSwgMTE1KSk7LS0gb3ZlcmxhcHMgbmV3ICgxMDAsMTEwKTogY29uZmxpY3QKK0VS Uk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJh aW50ICJoaV9leGNsX2R1cmluZ19leGNsIgorREVUQUlMOiAgS2V5IChkdXJpbmcpPShbMTA1 LDExNSkpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoZHVyaW5nKT0oWzEwMCwxMTAp KS4KK0RST1AgVEFCTEUgaGlfZXhjbDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0g MjYuIFRPQVNUIGludGVyYWN0aW9uLiAgQW4gaW5kZXhlZCBjb2x1bW4gc3RvcmVkIG91dC1v Zi1saW5lIG11c3QgYmVoYXZlCistLSBjb3JyZWN0bHkgYWNyb3NzIEhPVC1pbmRleGVkIHVw ZGF0ZXM6IGFuIGVudHJ5IGtlcHQgYWNyb3NzIGFuIHVwZGF0ZSBvZiBhCistLSBkaWZmZXJl bnQgY29sdW1uIHN0aWxsIHJlc29sdmVzIHRvIHRoZSAodW5jaGFuZ2VkKSB0b2FzdGVkIHZh bHVlLCBhbmQgYWZ0ZXIKKy0tIHRoZSB0b2FzdGVkIGNvbHVtbiBpdHNlbGYgaXMgY2hhbmdl ZCB0aGUgc3RhbGUgZW50cnkgaXMgZHJvcHBlZCBieSB0aGUKKy0tIGNyb3NzZWQtYXR0cmli dXRlIGJpdG1hcCAobm8gdmFsdWUgY29tcGFyaXNvbiBvciBkZXRvYXN0aW5nIGlzIG5lZWRl ZCkuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV90b2FzdCAo aWQgaW50IFBSSU1BUlkgS0VZLCBiaWcgdGV4dCwgdGFnIGludCkgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKK0FMVEVSIFRBQkxFIGhpX3RvYXN0IEFMVEVSIENPTFVNTiBiaWcgU0VUIFNU T1JBR0UgRVhURVJOQUw7ICAtLSBubyBjb21wcmVzc2lvbgorQ1JFQVRFIElOREVYIGhpX3Rv YXN0X2JpZyBPTiBoaV90b2FzdCAoYmlnKTsKK0NSRUFURSBJTkRFWCBoaV90b2FzdF90YWcg T04gaGlfdG9hc3QgKHRhZyk7CitJTlNFUlQgSU5UTyBoaV90b2FzdCBWQUxVRVMgKDEsIHJl cGVhdCgnQScsIDIwMDApLCAxMCk7CistLSBUaGUgYmlnIHZhbHVlIGlzIHN0b3JlZCBvdXQt b2YtbGluZS4KK1NFTEVDVCBwZ19jb2x1bW5fc2l6ZShiaWcpID4gMTUwMCBBUyBiaWdfaXNf ZXh0ZXJuYWwgRlJPTSBoaV90b2FzdCBXSEVSRSBpZCA9IDE7CisgYmlnX2lzX2V4dGVybmFs IAorLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIEhPVC1pbmRleGVkIHVw ZGF0ZSBvZiB0YWcgbGVhdmVzIGJpZyAoYW5kIGl0cyBpbmRleCBlbnRyeSkgdW5jaGFuZ2Vk LgorVVBEQVRFIGhpX3RvYXN0IFNFVCB0YWcgPSAxMSBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg aG90X2lkeCA+IDAgQVMgdGFnX3VwZGF0ZV9ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9jb3Vu dCgnaGlfdG9hc3QnKTsKKyB0YWdfdXBkYXRlX2hvdF9pbmRleGVkIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7 CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1QgaWQsIHRhZywgbGVuZ3Ro KGJpZykgRlJPTSBoaV90b2FzdCBXSEVSRSBiaWcgPSByZXBlYXQoJ0EnLCAyMDAwKTsKKyBp ZCB8IHRhZyB8IGxlbmd0aCAKKy0tLS0rLS0tLS0rLS0tLS0tLS0KKyAgMSB8ICAxMSB8ICAg MjAwMAorKDEgcm93KQorCistLSBIT1QtaW5kZXhlZCB1cGRhdGUgb2YgdGhlIHRvYXN0ZWQg aW5kZXhlZCBjb2x1bW4gaXRzZWxmOiB0aGUgb2xkIGVudHJ5IGlzCistLSBub3cgc3RhbGUg YmVjYXVzZSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIHNob3dzIGJpZyBjaGFuZ2Vk LgorVVBEQVRFIGhpX3RvYXN0IFNFVCBiaWcgPSByZXBlYXQoJ0InLCAyMDAwKSBXSEVSRSBp ZCA9IDE7CitTRUxFQ1QgaWQgRlJPTSBoaV90b2FzdCBXSEVSRSBiaWcgPSByZXBlYXQoJ0En LCAyMDAwKTsgICAtLSBzdGFsZTogMCByb3dzCisgaWQgCistLS0tCisoMCByb3dzKQorCitT RUxFQ1QgaWQsIGxlbmd0aChiaWcpIEZST00gaGlfdG9hc3QgV0hFUkUgYmlnID0gcmVwZWF0 KCdCJywgMjAwMCk7ICAtLSBjdXJyZW50CisgaWQgfCBsZW5ndGggCistLS0tKy0tLS0tLS0t CisgIDEgfCAgIDIwMDAKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitS RVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlf dG9hc3QnKTsKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK0RST1AgVEFCTEUgaGlfdG9hc3Q7 CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI3LiBBQkEgb24gYW4gaW5kZXhlZCBj b2x1bW4uICBBIEhPVC1pbmRleGVkIHVwZGF0ZSB0aGF0IHNldHMgYW4gaW5kZXhlZAorLS0g Y29sdW1uIHRvIGEgdmFsdWUgYW4gZWFybGllciBjaGFpbiBtZW1iZXIgYWxyZWFkeSBoZWxk IGxlYXZlcyB0d28gbGVhdmVzCistLSB3aXRoIHRoYXQgc2FtZSBrZXksIGJvdGggY2hhaW4t cmVzb2x2aW5nIHRvIHRoZSBsaXZlIHR1cGxlLiAgQSB2YWx1ZS1iYXNlZAorLS0gcmVjaGVj ayBjYW5ub3QgdGVsbCB0aGVtIGFwYXJ0IGFuZCB3b3VsZCByZXR1cm4gdGhlIHJvdyB0d2lj ZTsgdGhlCistLSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgZHJvcHMgdGhlIHN0YWxlIGFu Y2VzdG9yIGxlYWYgKGl0cyB3YWxrIGNyb3NzZXMgdGhlCistLSBrZXktY2hhbmdpbmcgaG9w cykgYW5kIGtlZXBzIG9ubHkgdGhlIGZyZXNoIGVudHJ5LCBzbyBhIGZvcmNlZCBpbmRleCBz Y2FuCistLSByZXR1cm5zIHRoZSByb3cgZXhhY3RseSBvbmNlLiAgUkVJTkRFWCBtdXN0IG5v dCBjaGFuZ2UgdGhhdC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxF IGhpX2FiYSAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgdiBpbnQpIFdJVEggKGZpbGxm YWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfYWJhX2sgT04gaGlfYWJhIChrKTsKK0NS RUFURSBJTkRFWCBoaV9hYmFfdiBPTiBoaV9hYmEgKHYpOworSU5TRVJUIElOVE8gaGlfYWJh IFZBTFVFUyAoMSwgMSwgMTAwKTsKK1VQREFURSBoaV9hYmEgU0VUIGsgPSAzIFdIRVJFIGlk ID0gMTsgICAtLSBIT1QtaW5kZXhlZDogayBjaGFuZ2VkLCB2IGtlcHQKK1VQREFURSBoaV9h YmEgU0VUIGsgPSAxIFdIRVJFIGlkID0gMTsgICAtLSBIT1QtaW5kZXhlZDogayBjeWNsZWQg YmFjayAoQUJBKQorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRt YXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEFTIGsxX29uY2UgRlJPTSBoaV9hYmEg V0hFUkUgayA9IDE7ICAgICAtLSBleGFjdGx5IDEKKyBrMV9vbmNlIAorLS0tLS0tLS0tCisg ICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgazNfZ29uZSBGUk9NIGhp X2FiYSBXSEVSRSBrID0gMzsgICAgIC0tIDAgKHN0YWxlIGRyb3BwZWQpCisgazNfZ29uZSAK Ky0tLS0tLS0tLQorICAgICAgIDAKKygxIHJvdykKKworUkVJTkRFWCBJTkRFWCBoaV9hYmFf azsKK1NFTEVDVCBjb3VudCgqKSBBUyBrMV9hZnRlcl9yZWluZGV4IEZST00gaGlfYWJhIFdI RVJFIGsgPSAxOyAgLS0gc3RpbGwgMQorIGsxX2FmdGVyX3JlaW5kZXggCistLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9i aXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitTRUxFQ1QgKiBGUk9NIHZlcmlm eV9oZWFwYW0oJ2hpX2FiYScpOworIGJsa25vIHwgb2ZmbnVtIHwgYXR0bnVtIHwgbXNnIAor LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLQorKDAgcm93cykKKworRFJPUCBUQUJM RSBoaV9hYmE7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI4LiBQYXJ0aWFsIGlu ZGV4LCBwcmVkaWNhdGUgY29sdW1uIGNoYW5nZWQgYnV0IHRoZSByb3cgU1RBWVMgaW4gdGhl IGluZGV4CistLSAocHJlZGljYXRlIHN0aWxsIHRydWUsIGtleSB1bmNoYW5nZWQpLiAgVGhl IHVwZGF0ZSBpcyBIT1QtaW5kZXhlZDsgc2VsZWN0aXZlCistLSBtYWludGVuYW5jZSByZS1p bnNlcnRzIGEgZnJlc2ggZW50cnkgKHRoZSBwcmVkaWNhdGUgY29sdW1uIGNoYW5nZWQgYW5k IHN0aWxsCistLSBob2xkcyksIHNvIHRoZSByb3cgaXMgc3RpbGwgcmV0dXJuZWQgLS0gdGhl IGJpdG1hcCBkcm9wcyB0aGUgb2xkZXIgZW50cnkgYW5kCistLSB0aGUgZnJlc2ggb25lIHJl LXN1cHBsaWVzIGl0LiAgR3VhcmRzIGFnYWluc3QgYSAibG9zdCByb3ciIGZyb20gb3Zlci1l YWdlcgorLS0gZHJvcHBpbmcuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBU QUJMRSBoaV9wYXJ0c3RheSAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgbiBpbnQpIFdJ VEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcGFydHN0YXlfayBPTiBo aV9wYXJ0c3RheSAoaykgV0hFUkUgbiA+IDA7CitDUkVBVEUgSU5ERVggaGlfcGFydHN0YXlf aWQyIE9OIGhpX3BhcnRzdGF5IChpZCk7CitJTlNFUlQgSU5UTyBoaV9wYXJ0c3RheSBWQUxV RVMgKDEsIDUsIDMpOworVVBEQVRFIGhpX3BhcnRzdGF5IFNFVCBuID0gNyBXSEVSRSBpZCA9 IDE7ICAgLS0gbiAzLT43LCBzdGlsbCA+IDAsIGsgdW5jaGFuZ2VkCitTRUxFQ1QgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGhvdF9pZHgg PiAwIEFTIHN0YXlfaXNfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX3BhcnRz dGF5Jyk7Cisgc3RheV9pc19ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IHQKKygxIHJvdykKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9i aXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEFTIHN0YXlfcm93cyBGUk9NIGhp X3BhcnRzdGF5IFdIRVJFIGsgPSA1IEFORCBuID4gMDsgICAtLSB3YW50IDEKKyBzdGF5X3Jv d3MgCistLS0tLS0tLS0tLQorICAgICAgICAgMQorKDEgcm93KQorCitSRVNFVCBlbmFibGVf Yml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9wYXJ0 c3RheTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjkuIFBhcnRpdGlvbmVkIHRh YmxlLiAgQSB3aXRoaW4tcGFydGl0aW9uIFVQREFURSBvZiBvbmUgaW5kZXhlZCBjb2x1bW4g aXMKKy0tIEhPVC1pbmRleGVkIG9uIHRoZSBsZWFmIHBhcnRpdGlvbidzIGhlYXAgZXhhY3Rs eSBhcyBmb3IgYSBub24tcGFydGl0aW9uZWQKKy0tIHRhYmxlOyBhIGNyb3NzLXBhcnRpdGlv biB1cGRhdGUgaXMgYSBkZWxldGUraW5zZXJ0IGFuZCBuZXZlciBIT1QuCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0IChpZCBpbnQsIGEgaW50LCBi IGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpZCk7CitDUkVBVEUgVEFCTEUgaGlfcGFydDEg UEFSVElUSU9OIE9GIGhpX3BhcnQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTAwKQorICAg IFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcGFydF9hIE9OIGhp X3BhcnQgKGEpOworQ1JFQVRFIElOREVYIGhpX3BhcnRfYiBPTiBoaV9wYXJ0IChiKTsKK0lO U0VSVCBJTlRPIGhpX3BhcnQgVkFMVUVTICgxLCAxMCwgMjApOworVVBEQVRFIGhpX3BhcnQg U0VUIGEgPSAxMSBXSEVSRSBpZCA9IDE7ICAgLS0gb25lIGluZGV4ZWQgY29sLCB3aXRoaW4g cGFydGl0aW9uCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworU0VMRUNUIGhvdF9pZHggPiAwIEFTIHBhcnRfaXNfaG90X2luZGV4ZWQgRlJP TSBnZXRfaGlfY291bnQoJ2hpX3BhcnQxJyk7CisgcGFydF9pc19ob3RfaW5kZXhlZCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VUIGVuYWJsZV9zZXFzY2Fu ID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCop IEFTIGExMSBGUk9NIGhpX3BhcnQgV0hFUkUgYSA9IDExOyAgIC0tIHdhbnQgMQorIGExMSAK Ky0tLS0tCisgICAxCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBBUyBhMTAgRlJPTSBo aV9wYXJ0IFdIRVJFIGEgPSAxMDsgICAtLSB3YW50IDAgKHN0YWxlIGRyb3BwZWQpCisgYTEw IAorLS0tLS0KKyAgIDAKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitS RVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlf cGFydDEnKTsKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK0RST1AgVEFCTEUgaGlfcGFydDsK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMzAuIE5vbi1idHJlZSBhY2Nlc3MgbWV0 aG9kIChoYXNoKS4gIFJlYWQtc2lkZSBzdGFsZW5lc3MgaXMgYWNjZXNzLW1ldGhvZAorLS0g YWdub3N0aWMgKHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXApLCBzbyBhbnkgaW5kZXgg QU0ncyBjb2x1bW4gaXMKKy0tIEhPVC1pbmRleGVkLiAgSGFzaCBpcyB0aGUgc2hhcnBlc3Qg Y2FzZTogaXRzIHNjYW5zIHJlY2hlY2sgdGhlIGhlYXAgdmFsdWUsCistLSB3aGljaCBhbG9u ZSBjYW5ub3QgZGlzYW1iaWd1YXRlIGEgdmFsdWUgY3ljbGVkIGF3YXkgYW5kIGJhY2sgKEFC QSkgLS0gdGhlCistLSBiaXRtYXAgZHJvcHMgdGhlIHN0YWxlIGFuY2VzdG9yIHNvIHRoZSBy b3cgaXMgcmV0dXJuZWQgZXhhY3RseSBvbmNlLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitDUkVBVEUgVEFCTEUgaGlfaGFzaCAoaWQgaW50IFBSSU1BUlkgS0VZLCB2IGludCwgdyBp bnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfaGFzaF92IE9O IGhpX2hhc2ggVVNJTkcgaGFzaCAodik7CitDUkVBVEUgSU5ERVggaGlfaGFzaF93IE9OIGhp X2hhc2ggKHcpOworSU5TRVJUIElOVE8gaGlfaGFzaCBWQUxVRVMgKDEsIDEwLCAxMDApOwor VVBEQVRFIGhpX2hhc2ggU0VUIHYgPSA5OSBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfaGFz aCBTRVQgdiA9IDEwIFdIRVJFIGlkID0gMTsgICAtLSBBQkE6IDEwIC0+IDk5IC0+IDEwLCB3 IHVuY2hhbmdlZAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0 YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBoYXNoX2lzX2hvdF9pbmRleGVkIEZS T00gZ2V0X2hpX2NvdW50KCdoaV9oYXNoJyk7CisgaGFzaF9pc19ob3RfaW5kZXhlZCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VUIGVuYWJsZV9zZXFzY2Fu ID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCop IEFTIGhhc2hfdjEwIEZST00gaGlfaGFzaCBXSEVSRSB2ID0gMTA7ICAgLS0gd2FudCAxIChu byBkdXBsaWNhdGUpCisgaGFzaF92MTAgCistLS0tLS0tLS0tCisgICAgICAgIDEKKygxIHJv dykKKworU0VMRUNUIGNvdW50KCopIEFTIGhhc2hfdjk5IEZST00gaGlfaGFzaCBXSEVSRSB2 ID0gOTk7ICAgLS0gd2FudCAwIChzdGFsZSBkcm9wcGVkKQorIGhhc2hfdjk5IAorLS0tLS0t LS0tLQorICAgICAgICAwCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOwor UkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX2hhc2g7CistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKy0tIDMxLiBEREwgYWZ0ZXIgYSBIT1QtaW5kZXhlZCBjaGFpbiBl eGlzdHMuICBUaGUgcGVyLWhvcCBtb2RpZmllZC1hdHRycworLS0gYml0bWFwIG9uIHRoZSBw YWdlIGlzIGtleWVkIGJ5IHBoeXNpY2FsIGF0dHJpYnV0ZSBudW1iZXIgYW5kIHNpemVkIGJ5 IHRoZQorLS0gcmVsYXRpb24ncyBuYXR0cyBBVCBXUklURSBUSU1FLiAgSW5kZXhlcyBhZGRl ZC9kcm9wcGVkIGFmdGVyIHRoZSBjaGFpbgorLS0gZm9ybXMsIGFuZCBBREQvRFJPUCBDT0xV TU4sIG11c3Qgbm90IGNvcnJ1cHQgdGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgdGVzdC4KKy0t IFRoZSBzaGFycCBjYXNlIGlzIEFERCBDT0xVTU4gY3Jvc3NpbmcgYW4gOC1hdHRyaWJ1dGUg Ym91bmRhcnksIHdoaWNoIGdyb3dzCistLSBjZWlsKG5hdHRzLzgpOiByZWFkZXJzIG11c3Qg bG9jYXRlIGVhY2ggaG9wJ3MgYml0bWFwIGZyb20gdGhhdCBob3AncyBvd24KKy0tIHdyaXRl LXRpbWUgbmF0dHMgKEhlYXBUdXBsZUhlYWRlckdldE5hdHRzIC8gdGhlIHN0dWIncyBzdGFz aGVkIG5hdHRzKSwgbm90CistLSB0aGUgcmVsYXRpb24ncyBjdXJyZW50IG5hdHRzLgorLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFeGFjdGx5IDggYXR0cmlidXRlcyAoYzEuLmM3 ICsgcGF5bG9hZCkgc28gYWRkaW5nIHRoZSA5dGggZmxpcHMgdGhlIGJpdG1hcAorLS0gZnJv bSAxIGJ5dGUgdG8gMi4gIGM3IGlzIHRoZSBjb2x1bW4gd2UgY2h1cm47IGMyIGlzIGFuIHVu Y2hhbmdlZCBpbmRleGVkCistLSBjb2x1bW4gd2hvc2UgbGVhZiBtdXN0IHN0YXkgY3VycmVu dC4KK0NSRUFURSBUQUJMRSBoaV9kZGwgKAorICAgIGMxIGludCBQUklNQVJZIEtFWSwgYzIg aW50LCBjMyBpbnQsIGM0IGludCwKKyAgICBjNSBpbnQsIGM2IGludCwgYzcgaW50LCBwYXls b2FkIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwLCBhdXRvdmFjdXVtX2VuYWJsZWQg PSBmYWxzZSk7CitDUkVBVEUgSU5ERVggaGlfZGRsX2MyIE9OIGhpX2RkbChjMik7CitDUkVB VEUgSU5ERVggaGlfZGRsX2M3IE9OIGhpX2RkbChjNyk7CitJTlNFUlQgSU5UTyBoaV9kZGwg VkFMVUVTICgxLCAxMCwgMjAsIDMwLCA0MCwgNTAsIDcwLCAncCcpOworLS0gRm9ybSBhIEhP VC1pbmRleGVkIGNoYWluIG9uIGM3IEJFRk9SRSBhbnkgZnVydGhlciBEREwuCitVUERBVEUg aGlfZGRsIFNFVCBjNyA9IDcxIFdIRVJFIGMxID0gMTsKK1VQREFURSBoaV9kZGwgU0VUIGM3 ID0gNzIgV0hFUkUgYzEgPSAxOworLS0gKGEpIENSRUFURSBJTkRFWCBhZnRlciB0aGUgY2hh aW4gZXhpc3RzOiB0aGUgbmV3IGluZGV4IGlzIGJ1aWx0IGFnYWluc3QgdGhlCistLSBsaXZl IHR1cGxlIHVuZGVyIGl0cyBvd24gVElELCBzbyBpdHMgZW50cnkgaXMgbmV2ZXIgc3RhbGUu CitDUkVBVEUgSU5ERVggaGlfZGRsX2MzIE9OIGhpX2RkbChjMyk7CistLSAoYikgQUREIENP TFVNTiBjcm9zc2luZyB0aGUgOC1hdHRyaWJ1dGUgYm91bmRhcnkgKG5hdHRzIDggLT4gOSku ICBFeGlzdGluZworLS0gaG9wcyBrZWVwIHRoZWlyIDEtYnl0ZSBiaXRtYXBzOyB0aGUgcmVs YXRpb24gbm93IHdhbnRzIDIuICBSZWFkcyB0aHJvdWdoIHRoZQorLS0gb2xkIGNoYWluIG11 c3Qgc3RpbGwgYmUgY29ycmVjdC4KK0FMVEVSIFRBQkxFIGhpX2RkbCBBREQgQ09MVU1OIGM5 IGludDsKK0NSRUFURSBJTkRFWCBoaV9kZGxfYzkgT04gaGlfZGRsKGM5KTsKK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFVCBl bmFibGVfaW5kZXhvbmx5c2NhbiA9IG9mZjsKKy0tIExpdmUgYzcgaXMgNzIuICBUaGUgYzcg aW5kZXggbXVzdCByZXR1cm4gdGhlIGxpdmUgcm93IGZvciA3MiBhbmQgZHJvcCB0aGUKKy0t IHN0YWxlIGxlYXZlcyBmb3IgNzAgYW5kIDcxIChvZmZzZXRzIG1pc3JlYWQgd291bGQgY29y cnVwdCB0aGlzKS4KK1NFTEVDVCBjb3VudCgqKSBBUyBjN19lcV83MiBGUk9NIGhpX2RkbCBX SEVSRSBjNyA9IDcyIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGM3X2VxXzcyIAorLS0t LS0tLS0tLQorICAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBBUyBjN19l cV83MF9zdGFsZSBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDcwIEFORCBwYXlsb2FkIElTIE5P VCBOVUxMOworIGM3X2VxXzcwX3N0YWxlIAorLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAwCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBBUyBjN19lcV83MV9zdGFsZSBG Uk9NIGhpX2RkbCBXSEVSRSBjNyA9IDcxIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGM3 X2VxXzcxX3N0YWxlIAorLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAwCisoMSBy b3cpCisKKy0tIGMyIG5ldmVyIGNoYW5nZWQgYWNyb3NzIHRoZSBjaGFpbjogaXRzIGxlYWYg bXVzdCBOT1QgYmUganVkZ2VkIHN0YWxlIGV2ZW4KKy0tIHRob3VnaCBhIGNyb3NzZWQgaG9w IGNoYW5nZWQgYzcuICBBIG1pc3JlYWQgYml0bWFwIGNvdWxkIHNwdXJpb3VzbHkgZmxhZyBp dC4KK1NFTEVDVCBjb3VudCgqKSBBUyBjMl9lcV8xMF9jdXJyZW50IEZST00gaGlfZGRsIFdI RVJFIGMyID0gMTAgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisgYzJfZXFfMTBfY3VycmVu dCAKKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKwor LS0gKGMpIENvbnRpbnVlIGNodXJuaW5nIGM3IEFGVEVSIHRoZSBBREQgQ09MVU1OOiB0aGUg bmV3IGhvcCdzIGJpdG1hcCBpcyBzaXplZAorLS0gZm9yIG5hdHRzIDkgKDIgYnl0ZXMpOyB0 aGUgb2xkIGhvcHMgYXJlIDEgYnl0ZS4gIEEgY2hhaW4gd2l0aCBtaXhlZC1zaXplCistLSBi aXRtYXBzIG11c3Qgc3RpbGwgcmVzb2x2ZSBjb3JyZWN0bHkuCitVUERBVEUgaGlfZGRsIFNF VCBjNyA9IDczIFdIRVJFIGMxID0gMTsKK1NFTEVDVCBjb3VudCgqKSBBUyBjN19lcV83MyBG Uk9NIGhpX2RkbCBXSEVSRSBjNyA9IDczIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGM3 X2VxXzczIAorLS0tLS0tLS0tLQorICAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBjb3Vu dCgqKSBBUyBjN19lcV83Ml9ub3dfc3RhbGUgRlJPTSBoaV9kZGwgV0hFUkUgYzcgPSA3MiBB TkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19lcV83Ml9ub3dfc3RhbGUgCistLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgMAorKDEgcm93KQorCistLSAoZCkg Q29sbGFwc2UgdGhlIGNoYWluIHRvIHN0dWJzIHZpYSBWQUNVVU0sIHRoZW4gcmVhZCBhZ2Fp bjogdGhlIHN0dWIgbXVzdAorLS0gcHJlc2VydmUgaXRzIHdyaXRlLXRpbWUgbmF0dHMgc28g aXRzIGJpdG1hcCBzdGF5cyBsb2NhdGFibGUgcG9zdC1BREQgQ09MVU1OLgorVVBEQVRFIGhp X2RkbCBTRVQgYzcgPSA3NCBXSEVSRSBjMSA9IDE7CitWQUNVVU0gKElOREVYX0NMRUFOVVAg b2ZmKSBoaV9kZGw7CitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzRfYWZ0ZXJfdmFjdXVt IEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzQgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7Cisg YzdfZXFfNzRfYWZ0ZXJfdmFjdXVtIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEFTIGMyX2Vx XzEwX2FmdGVyX3ZhY3V1bSBGUk9NIGhpX2RkbCBXSEVSRSBjMiA9IDEwIEFORCBwYXlsb2Fk IElTIE5PVCBOVUxMOworIGMyX2VxXzEwX2FmdGVyX3ZhY3V1bSAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIChlKSBE Uk9QIENPTFVNTiBrZWVwcyB0aGUgYXR0bnVtIHNsb3QgKG5vIHJlbnVtYmVyKSwgc28gYml0 bWFwcyBzdGF5IGFsaWduZWQuCitBTFRFUiBUQUJMRSBoaV9kZGwgRFJPUCBDT0xVTU4gYzQ7 CitTRUxFQ1QgY291bnQoKikgQVMgYzdfYWZ0ZXJfZHJvcCBGUk9NIGhpX2RkbCBXSEVSRSBj NyA9IDc0IEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGM3X2FmdGVyX2Ryb3AgCistLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgq KSBBUyBjMl9hZnRlcl9kcm9wIEZST00gaGlfZGRsIFdIRVJFIGMyID0gMTAgQU5EIHBheWxv YWQgSVMgTk9UIE5VTEw7CisgYzJfYWZ0ZXJfZHJvcCAKKy0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgIDEKKygxIHJvdykKKworLS0gKGYpIERST1AgSU5ERVggb24gdGhlIGNodXJu ZWQgY29sdW1uOiByZW1haW5pbmcgaW5kZXhlcyBzdGlsbCByZXNvbHZlLgorRFJPUCBJTkRF WCBoaV9kZGxfYzc7CitTRUxFQ1QgY291bnQoKikgQVMgYzJfYWZ0ZXJfZHJvcGlkeCBGUk9N IGhpX2RkbCBXSEVSRSBjMiA9IDEwIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGMyX2Fm dGVyX2Ryb3BpZHggCistLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAxCiso MSByb3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNj YW47CitSRVNFVCBlbmFibGVfaW5kZXhvbmx5c2NhbjsKKy0tIFRoZSBzZXFzY2FuIHRydXRo IGNvbmZpcm1zIHRoZSBsaXZlIHJvdzsgdGhlIGNvdW50IGFzc2VydGlvbnMgYWJvdmUgKHJl YWQKKy0tIHRocm91Z2ggdGhlIHBvc3QtRERMIGluZGV4ZXMpIG1hdGNoIGl0LCB3aGljaCBp cyB3aGF0IHdvdWxkIGJyZWFrIGlmIGEKKy0tIG1pcy1zaXplZCBiaXRtYXAgY29ycnVwdGVk IHRoZSBzdGFsZW5lc3MgdmVyZGljdC4KK1NFTEVDVCBjMSwgYzIsIGM3IEZST00gaGlfZGRs IFdIRVJFIGMxID0gMTsKKyBjMSB8IGMyIHwgYzcgCistLS0tKy0tLS0rLS0tLQorICAxIHwg MTAgfCA3NAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX2RkbDsKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gMzIuIEJpdG1hcEFuZC9CaXRtYXBPciBhY3Jvc3MgYSBjaGFuZ2Vk IGFuZCBhbiB1bmNoYW5nZWQgaW5kZXgKKy0tCistLSBSZXBvcnRlZCBieSBBbGV4YW5kZXIg S29yb3Rrb3YsIDIwMjYtMDctMDkuICBBIEhPVC1pbmRleGVkIHVwZGF0ZSBwb2ludHMKKy0t IHRoZSBDSEFOR0VEIGluZGV4J3MgZnJlc2ggZW50cnkgYXQgdGhlIG5ldyBoZWFwLW9ubHkg dHVwbGUsIHdoaWxlIHRoZQorLS0gVU5DSEFOR0VEIGluZGV4J3MgZW50cnkgc3RpbGwgcG9p bnRzIGF0IHRoZSBjaGFpbiByb290LiAgQml0bWFwQW5kL0JpdG1hcE9yCistLSBpbnRlcnNl Y3QvdW5pb24gdHdvIGluZGV4ZXMnIHJhdyBUSUQgc2V0cyBpbiB0aGUgVElELWJpdG1hcCBs YXllciBCRUZPUkUKKy0tIGVpdGhlciBzaWRlIHRvdWNoZXMgdGhlIGhlYXA6IGFuIGV4YWN0 LW1vZGUgaW50ZXJzZWN0aW9uIHNlZXMge3Jvb3R9IG9uIG9uZQorLS0gc2lkZSBhbmQge25l dy10dXBsZX0gb24gdGhlIG90aGVyIGFuZCBkcm9wcyB0aGUgcm93LCBldmVuIHRob3VnaCBi b3RoCistLSByZXNvbHZlLCB0aHJvdWdoIHRoZSBjaGFpbiwgdG8gdGhlIG9uZSBsaXZlIHR1 cGxlLiAgQml0bWFwIHNjYW5zIHRvbGVyYXRlCistLSBmYWxzZSBwb3NpdGl2ZXMgYnV0IG5v dCBmYWxzZSBuZWdhdGl2ZXMsIHNvIHRoaXMgd2FzIGEgY29ycmVjdG5lc3MgYnVnLgorLS0K Ky0tIEZpeGVkIGJ5IGEgb25lLWJpdCBtYXJrZXIgaW4gdGhlIHN0b3JlZCBUSUQncyBvdGhl cndpc2UtdW51c2VkIG9mZnNldCBiaXQKKy0tIDE0IChJdGVtUG9pbnRlclNJVU1heWJlU3Rh bGVGbGFnLCBzdG9yYWdlL2l0ZW1wdHIuaCksIHNldCBvbmx5IG9uIGEKKy0tIEhPVC1pbmRl eGVkIGZyZXNoIGVudHJ5J3Mgb3duIFRJRCAobmV2ZXIgb24gdHRzX3RpZCBpdHNlbGYsIG5l dmVyIG9uIGEKKy0tIGNsYXNzaWMtSE9UIG9yIHBsYWluLWluc2VydCBlbnRyeSkuICB0Ym1f YWRkX3R1cGxlcygpIC0tIHRoZSBzaW5nbGUgY2hva2UKKy0tIHBvaW50IGV2ZXJ5IGFtZ2V0 Yml0bWFwIGZ1bm5lbHMgZXhhY3QgaGVhcCBUSURzIHRocm91Z2ggLS0gY2hlY2tzIHRoZSBm bGFnCistLSBhbmQsIHdoZW4gc2V0LCBhZGRzIHRoZSB3aG9sZSBwYWdlIGFzIGxvc3N5ICh0 Ym1fYWRkX3BhZ2UpIGluc3RlYWQgb2YgdGhlCistLSBzaW5nbGUgZXhhY3Qgb2Zmc2V0LiAg QSBsb3NzeSBwYWdlIHN1cnZpdmVzIGFueSBBTkQvT1IgYWdhaW5zdCBhbiBleGFjdC1tb2Rl CistLSBwYWdlIChwZXIgdGJtX2ludGVyc2VjdF9wYWdlJ3Mgb3duIGNhc2UgYW5hbHlzaXMp IGFuZCBmb3JjZXMgdGhlIGV4aXN0aW5nCistLSBoZWFwLXNpZGUgY3Jvc3NlZC1hdHRyaWJ1 dGUgcmVjaGVjayB0byBtYWtlIHRoZSBmaW5hbCBjYWxsLiAgSGFuZGxpbmcgaXQKKy0tIHRo ZXJlIG1lYW5zIE5PIGluZGV4IGFjY2VzcyBtZXRob2QgbmVlZHMgdG8ga25vdyBhYm91dCBI T1QtaW5kZXhlZCBjaGFpbnM6CistLSBidHJlZSwgaGFzaCwgR0lOLCBHaVNULCBTUC1HaVNU LCBjb250cmliL2Jsb29tLCBhbmQgYW55IG91dC1vZi10cmVlIEFNIGFyZQorLS0gYWxsIGNv cnJlY3Qgd2l0aCBubyBBTS1zcGVjaWZpYyBjb2RlLiAgT25lIHRhYmxlIHBlciBub24tYnRy ZWUgYWNjZXNzIG1ldGhvZAorLS0gYmVsb3csIGVhY2ggcGFpcmVkIHdpdGggYSBidHJlZSBp bmRleCBvbiB0aGUgY2hhbmdlZCBjb2x1bW4sIGV4ZXJjaXNlcyB0aGUKKy0tIGNoYW5nZWQr dW5jaGFuZ2VkIEJpdG1hcEFuZC9CaXRtYXBPciBzaGFwZSBmb3IgZXZlcnkgQU0gU0lVIHVz ZXMgZWxzZXdoZXJlCistLSBpbiB0aGlzIGZpbGU7IGJsb29tJ3MgZXF1aXZhbGVudCBjYXNl IGxpdmVzIGluIGNvbnRyaWIvYmxvb20ncyBvd24gdGVzdAorLS0gKHdoZXJlIHRoZSBleHRl bnNpb24gaXMgZ3VhcmFudGVlZCBwcmVzZW50KS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBv ZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvbjsKKy0tIChhKSBidHJlZSArIGJ0cmVl CitDUkVBVEUgVEFCTEUgaGlfYm1hbmRfYnQgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwK KyAgICBjMSBpbnQsCisgICAgYzIgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitD UkVBVEUgSU5ERVggaGlfYm1hbmRfYnRfYzEgT04gaGlfYm1hbmRfYnQoYzEpOyAgIC0tIHVu Y2hhbmdlZAorQ1JFQVRFIElOREVYIGhpX2JtYW5kX2J0X2MyIE9OIGhpX2JtYW5kX2J0KGMy KTsgICAtLSBjaGFuZ2VkCitJTlNFUlQgSU5UTyBoaV9ibWFuZF9idCBWQUxVRVMgKDEsIDEx LCAyMSk7CitVUERBVEUgaGlfYm1hbmRfYnQgU0VUIGMyID0gMjIgV0hFUkUgaWQgPSAxOwor U0VMRUNUIGNvdW50KCopIEFTIGJ0X2J0X2JpdG1hcGFuZCBGUk9NIGhpX2JtYW5kX2J0IFdI RVJFIGMxID0gMTEgQU5EIGMyID0gMjI7CisgYnRfYnRfYml0bWFwYW5kIAorLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworLS0gVGhlIGZyZXNoIGVu dHJ5IGluIHRoZSBjaGFuZ2VkIGluZGV4IChoaV9ibWFuZF9idF9jMikgaXMgZmxhZ2dlZDog cGFnZWluc3BlY3QKKy0tIHJlcG9ydHMgaXRzIHJlYWwgaGVhcCBvZmZzZXQgKHRoZSBtYXJr ZXIgaXMgc3RyaXBwZWQgZnJvbSBjdGlkL2h0aWQpIGFuZAorLS0gc3VyZmFjZXMgdGhlIG1h cmtlciBpbiB0aGUgaG90X2luZGV4ZWQgY29sdW1uLiAgVGhlIHVuY2hhbmdlZCBpbmRleCdz IGVudHJ5CistLSBpcyBub3QgZmxhZ2dlZC4gIChidF9wYWdlX2l0ZW1zIGJsb2NrIDEgaXMg dGhlIHNvbGUgbGVhZiBmb3IgYSBzaW5nbGUgcm93LikKK1NFTEVDVCBob3RfaW5kZXhlZCwg Y291bnQoKikKKyAgRlJPTSBidF9wYWdlX2l0ZW1zKCdoaV9ibWFuZF9idF9jMicsIDEpIEdS T1VQIEJZIGhvdF9pbmRleGVkIE9SREVSIEJZIGhvdF9pbmRleGVkOworIGhvdF9pbmRleGVk IHwgY291bnQgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBmICAgICAgICAgICB8ICAgICAx CisgdCAgICAgICAgICAgfCAgICAgMQorKDIgcm93cykKKworU0VMRUNUIGJvb2xfYW5kKE5P VCBob3RfaW5kZXhlZCkgQVMgdW5jaGFuZ2VkX2luZGV4X25ldmVyX2ZsYWdnZWQKKyAgRlJP TSBidF9wYWdlX2l0ZW1zKCdoaV9ibWFuZF9idF9jMScsIDEpOworIHVuY2hhbmdlZF9pbmRl eF9uZXZlcl9mbGFnZ2VkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQK KygxIHJvdykKKworLS0gYW1jaGVjaydzIGhlYXBhbGxpbmRleGVkIHZlcmlmaWNhdGlvbiBy ZS1kZXJpdmVzIGVhY2ggbGl2ZSBoZWFwIHR1cGxlJ3MKKy0tIGV4cGVjdGVkIGluZGV4IGVu dHJ5IGFuZCBjaGVja3MgdGhlIGluZGV4IGNvbnRhaW5zIGl0LiAgRm9yIHRoZSBDSEFOR0VE CistLSBpbmRleCwgYSBIT1QtaW5kZXhlZCBmcmVzaCBlbnRyeSBzdG9yZXMgdGhhdCBUSUQg d2l0aCB0aGUgU0lVIG1heS1iZS1zdGFsZQorLS0gbWFya2VyIHNldCBpbiB0aGUgb2Zmc2V0 OyBhbWNoZWNrIG11c3Qgc3RyaXAgaXQgd2hlbiBmaW5nZXJwcmludGluZyBvciBpdAorLS0g d291bGQgc3B1cmlvdXNseSByZXBvcnQgImxhY2tzIG1hdGNoaW5nIGluZGV4IHR1cGxlIi4g IE5vIFZBQ1VVTSBoYXMgcnVuLCBzbworLS0gdGhlIGZyZXNoIGVudHJ5IHBvaW50cyBkaXJl Y3RseSBhdCB0aGUgbGl2ZSBoZWFwLW9ubHkgdHVwbGUgKG5vIHN0dWIKKy0tIGZvcndhcmRp bmcpLCBpc29sYXRpbmcgdGhlIG1hcmtlci1zdHJpcCBwYXRoIHRoaXMgY29tbWl0IGFkZHMu CistLQorLS0gKE9ubHkgdGhlIGNoYW5nZWQgaW5kZXggaXMgY2hlY2tlZCBoZXJlLiAgaGVh cGFsbGluZGV4ZWQgb24gYW4gaW5kZXggTk9UCistLSBtYWludGFpbmVkIGJ5IGEgSE9ULWlu ZGV4ZWQgdXBkYXRlIC0tIHdoaWNoIGJ5IGRlc2lnbiBoYXMgbm8gZW50cnkgZm9yIHRoZQor LS0gbmV3IGhlYXAtb25seSB0dXBsZSAtLSBpcyBhIHNlcGFyYXRlLCBwcmUtZXhpc3Rpbmcg U0lVL2FtY2hlY2staW50ZWdyYXRpb24KKy0tIHF1ZXN0aW9uLCB1bnJlbGF0ZWQgdG8gdGhl IGJpdC0xNCBtYXJrZXIsIGFuZCBvdXQgb2Ygc2NvcGUgZm9yIHRoaXMgY29tbWl0LikKK1NF TEVDVCBidF9pbmRleF9jaGVjaygnaGlfYm1hbmRfYnRfYzInLCBoZWFwYWxsaW5kZXhlZCA9 PiB0cnVlKTsKKyBidF9pbmRleF9jaGVjayAKKy0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworRFJPUCBUQUJMRSBoaV9ibWFuZF9idDsKKy0tIChiKSBoYXNoICh1bmNoYW5nZWQp ICsgYnRyZWUgKGNoYW5nZWQpCitDUkVBVEUgVEFCTEUgaGlfYm1hbmRfaGFzaCAoCisgICAg aWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGMxIGludCwKKyAgICBjMiBpbnQKKykgV0lUSCAo ZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9ibWFuZF9oYXNoX2MxIE9OIGhp X2JtYW5kX2hhc2ggVVNJTkcgaGFzaCAoYzEpOworQ1JFQVRFIElOREVYIGhpX2JtYW5kX2hh c2hfYzIgT04gaGlfYm1hbmRfaGFzaChjMik7CitJTlNFUlQgSU5UTyBoaV9ibWFuZF9oYXNo IFZBTFVFUyAoMSwgMTEsIDIxKTsKK1VQREFURSBoaV9ibWFuZF9oYXNoIFNFVCBjMiA9IDIy IFdIRVJFIGlkID0gMTsKK1NFTEVDVCBjb3VudCgqKSBBUyBoYXNoX2J0X2JpdG1hcGFuZCBG Uk9NIGhpX2JtYW5kX2hhc2ggV0hFUkUgYzEgPSAxMSBBTkQgYzIgPSAyMjsKKyBoYXNoX2J0 X2JpdG1hcGFuZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgMQor KDEgcm93KQorCitEUk9QIFRBQkxFIGhpX2JtYW5kX2hhc2g7CistLSAoYykgR0lOICh1bmNo YW5nZWQpICsgYnRyZWUgKGNoYW5nZWQpCitDUkVBVEUgVEFCTEUgaGlfYm1hbmRfZ2luICgK KyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdGFncyBpbnRbXSwKKyAgICBjMiBpbnQK KykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9ibWFuZF9naW5f dGFncyBPTiBoaV9ibWFuZF9naW4gVVNJTkcgZ2luICh0YWdzKTsKK0NSRUFURSBJTkRFWCBo aV9ibWFuZF9naW5fYzIgT04gaGlfYm1hbmRfZ2luKGMyKTsKK0lOU0VSVCBJTlRPIGhpX2Jt YW5kX2dpbiBWQUxVRVMgKDEsIEFSUkFZWzEsMiwzXSwgMjEpOworVVBEQVRFIGhpX2JtYW5k X2dpbiBTRVQgYzIgPSAyMiBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgY291bnQoKikgQVMgZ2lu X2J0X2JpdG1hcGFuZAorICBGUk9NIGhpX2JtYW5kX2dpbiBXSEVSRSB0YWdzIEA+IEFSUkFZ WzJdIEFORCBjMiA9IDIyOworIGdpbl9idF9iaXRtYXBhbmQgCistLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlfYm1hbmRf Z2luOworLS0gKGQpIEdpU1QgKHVuY2hhbmdlZCkgKyBidHJlZSAoY2hhbmdlZCkKK0NSRUFU RSBUQUJMRSBoaV9ibWFuZF9naXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAg cCBwb2ludCwKKyAgICBjMiBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFU RSBJTkRFWCBoaV9ibWFuZF9naXN0X3AgT04gaGlfYm1hbmRfZ2lzdCBVU0lORyBnaXN0IChw KTsKK0NSRUFURSBJTkRFWCBoaV9ibWFuZF9naXN0X2MyIE9OIGhpX2JtYW5kX2dpc3QoYzIp OworSU5TRVJUIElOVE8gaGlfYm1hbmRfZ2lzdCBWQUxVRVMgKDEsIHBvaW50KDUsIDUpLCAy MSk7CitVUERBVEUgaGlfYm1hbmRfZ2lzdCBTRVQgYzIgPSAyMiBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgY291bnQoKikgQVMgZ2lzdF9idF9iaXRtYXBhbmQKKyAgRlJPTSBoaV9ibWFuZF9n aXN0IFdIRVJFIHAgPEAgYm94KHBvaW50KDAsIDApLCBwb2ludCgxMCwgMTApKSBBTkQgYzIg PSAyMjsKKyBnaXN0X2J0X2JpdG1hcGFuZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgMQorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX2JtYW5kX2dpc3Q7Cist LSAoZSkgU1AtR2lTVCAodW5jaGFuZ2VkKSArIGJ0cmVlIChjaGFuZ2VkKQorQ1JFQVRFIFRB QkxFIGhpX2JtYW5kX3NwZ2lzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHQg dGV4dCwKKyAgICBjMiBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJ TkRFWCBoaV9ibWFuZF9zcGdpc3RfdCBPTiBoaV9ibWFuZF9zcGdpc3QgVVNJTkcgc3BnaXN0 ICh0KTsKK0NSRUFURSBJTkRFWCBoaV9ibWFuZF9zcGdpc3RfYzIgT04gaGlfYm1hbmRfc3Bn aXN0KGMyKTsKK0lOU0VSVCBJTlRPIGhpX2JtYW5kX3NwZ2lzdCBWQUxVRVMgKDEsICdoZWxs bycsIDIxKTsKK1VQREFURSBoaV9ibWFuZF9zcGdpc3QgU0VUIGMyID0gMjIgV0hFUkUgaWQg PSAxOworU0VMRUNUIGNvdW50KCopIEFTIHNwZ2lzdF9idF9iaXRtYXBhbmQKKyAgRlJPTSBo aV9ibWFuZF9zcGdpc3QgV0hFUkUgdCA9ICdoZWxsbycgQU5EIGMyID0gMjI7Cisgc3BnaXN0 X2J0X2JpdG1hcGFuZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg ICAgIDEKKygxIHJvdykKKworRFJPUCBUQUJMRSBoaV9ibWFuZF9zcGdpc3Q7CistLSAoZikg Qml0bWFwT3I6IGEgSE9ULWluZGV4ZWQgZnJlc2ggZW50cnkgKGJ0cmVlLCBjaGFuZ2VkKSB1 bmlvbmVkIHdpdGggYW4KKy0tIHVucmVsYXRlZCB1bmNoYW5nZWQgaW5kZXgncyBlbnRyeSBm b3IgYSBESUZGRVJFTlQgcm93IG11c3Qgbm90IGFmZmVjdCB0aGF0CistLSBvdGhlciByb3cn cyBjb3VudCwgYW5kIHRoZSBTSVUgcm93IGl0c2VsZiBtdXN0IHN0aWxsIGJlIGZvdW5kIHRo cm91Z2gKKy0tIGVpdGhlciBhcm0gb2YgdGhlIE9SLgorQ1JFQVRFIFRBQkxFIGhpX2Jtb3Jf YnQgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBjMSBpbnQsCisgICAgYzIgaW50 CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfYm1vcl9idF9j MSBPTiBoaV9ibW9yX2J0KGMxKTsKK0NSRUFURSBJTkRFWCBoaV9ibW9yX2J0X2MyIE9OIGhp X2Jtb3JfYnQoYzIpOworSU5TRVJUIElOVE8gaGlfYm1vcl9idCBWQUxVRVMgKDEsIDExLCAy MSksICgyLCAxMiwgMzIpOworVVBEQVRFIGhpX2Jtb3JfYnQgU0VUIGMyID0gMjIgV0hFUkUg aWQgPSAxOyAgIC0tIEhPVC1pbmRleGVkIG9uIHJvdyAxIG9ubHkKK1NFTEVDVCBjb3VudCgq KSBBUyBidF9idF9iaXRtYXBvcgorICBGUk9NIGhpX2Jtb3JfYnQgV0hFUkUgYzEgPSAxMSBP UiBjMiA9IDMyOyAgICAtLSByb3cgMSB2aWEgYzEsIHJvdyAyIHZpYSBjMgorIGJ0X2J0X2Jp dG1hcG9yIAorLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyCisoMSByb3cpCisK K0RST1AgVEFCTEUgaGlfYm1vcl9idDsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworUkVTRVQg ZW5hYmxlX2luZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSAzMy4gSGVhcCByZXdyaXRlIChDTFVTVEVSIC8gVkFDVVVN IEZVTEwpIG92ZXIgbGl2ZSBIT1QtaW5kZXhlZCBjaGFpbnMKKy0tCistLSBDTFVTVEVSIGFu ZCBWQUNVVU0gRlVMTCByZXdyaXRlIHRoZSBoZWFwIGFuZCByZWJ1aWxkIGV2ZXJ5IGluZGV4 LCBmbGF0dGVuaW5nCistLSBlYWNoIEhPVCBjaGFpbjogZWFjaCBsaXZlIHR1cGxlIGJlY29t ZXMgYSBzdGFuZGFsb25lIHR1cGxlIGluIHRoZSBuZXcgaGVhcAorLS0gd2l0aCBhIGZyZXNo LCBkaXJlY3QgaW5kZXggZW50cnksIHNvIG5vIHJld3JpdHRlbiB0dXBsZSBpcyBhIEhPVC1p bmRleGVkCistLSAoU0lVKSBjaGFpbiBtZW1iZXIuICBUaGUgcmV3cml0ZSAocmVmb3JtX3R1 cGxlKSBtdXN0IHRoZXJlZm9yZSBjbGVhcgorLS0gSEVBUF9JTkRFWEVEX1VQREFURUQgb24g dGhlIGNvcGllZCB0dXBsZTsgbGVhdmluZyBpdCBzZXQgd291bGQgbGVhdmUgYQorLS0gc3Rh bmRhbG9uZSB0dXBsZSBjYXJyeWluZyB0aGUgbWFya2VyIChhbmQgYSBub3ctbWVhbmluZ2xl c3MgaW5saW5lCistLSBtb2RpZmllZC1hdHRycyBiaXRtYXApLCBzbyBhIHJlYWRlciByZWFj aGluZyBpdCB0aHJvdWdoIHRoZSByZWJ1aWx0IGluZGV4CistLSB3b3VsZCBydW4gdGhlIHJl YWQtc2lkZSBzdGFsZW5lc3MgdGVzdCBhZ2FpbnN0IGdhcmJhZ2UgYW5kIHdyb25nbHkgZHJv cCB0aGUKKy0tIHJvdy4gIFJlZ3Jlc3Npb24gZ3VhcmQ6IHdpdGhvdXQgdGhlIGNsZWFyLCBh PTIwMyAoYW5kLCBmb3IgQ0xVU1RFUiBvdmVyIHRoZQorLS0gU0lVIHNlY29uZGFyeSBpbmRl eCwgbGl2ZSByb3dzKSB3ZW50IG1pc3NpbmcgdmlhIGluZGV4IGFmdGVyIHRoZSByZXdyaXRl CistLSB3aGlsZSB0aGUgaGVhcCBzdGlsbCBoZWxkIHRoZW0uCistLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKy0tIChhKSBWQUNVVU0gRlVMTCwgaW5jbHVkaW5nIHRoZSBzaW5nbGUtc2Vj b25kYXJ5LWluZGV4IGNhc2UgdGhhdCBtYWRlIGFueQorLS0gU0lVLXVwZGF0ZWQgdGFibGUg cmV0dXJuIHdyb25nIGluZGV4IHJlc3VsdHMgYWZ0ZXIgYSByb3V0aW5lIFZBQ1VVTSBGVUxM LgorQ1JFQVRFIFRBQkxFIGhpX3Jld3JpdGUgKGlkIGludCBQUklNQVJZIEtFWSwgYSBpbnQs IHBheWxvYWQgdGV4dCkKKyAgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRF WCBoaV9yZXdyaXRlX2EgT04gaGlfcmV3cml0ZShhKTsKK0lOU0VSVCBJTlRPIGhpX3Jld3Jp dGUgU0VMRUNUIGcsIGcsIHJlcGVhdCgneCcsIDIwKSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAyMCkgZzsKK1VQREFURSBoaV9yZXdyaXRlIFNFVCBhID0gYSArIDEwMCBXSEVSRSBpZCA8 PSAxMDsgICAtLSBIT1QtaW5kZXhlZCBvbiBhCitVUERBVEUgaGlfcmV3cml0ZSBTRVQgYSA9 IGEgKyAxMDAgV0hFUkUgaWQgPD0gNTsgICAgIC0tIGFnYWluIC0+IGxvbmdlciBjaGFpbnMK Ky0tIFJvdyBpZD0zIGhhcyBhID0gMjAzIGFmdGVyIHR3byBIT1QtaW5kZXhlZCB1cGRhdGVz LgorU0VMRUNUIGNvdW50KCopIEFTIHNlcWNvdW50X2JlZm9yZSBGUk9NIGhpX3Jld3JpdGU7 Cisgc2VxY291bnRfYmVmb3JlIAorLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg MjAKKygxIHJvdykKKworVkFDVVVNIEZVTEwgaGlfcmV3cml0ZTsKK1NFTEVDVCBjb3VudCgq KSBBUyBzZXFjb3VudF9hZnRlcl92ZiBGUk9NIGhpX3Jld3JpdGU7ICAgLS0gbm8gcm93cyBs b3N0Cisgc2VxY291bnRfYWZ0ZXJfdmYgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgMjAKKygxIHJvdykKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VU IGVuYWJsZV9pbmRleHNjYW4gPSBvbjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsK Ky0tIEV2ZXJ5IGN1cnJlbnQgdmFsdWUgaXMgZmluZGFibGUgdGhyb3VnaCB0aGUgcmVidWls dCBpbmRleC4uLgorU0VMRUNUIGEgQVMgYTIwM192aWFfaW5kZXhfYWZ0ZXJfdmYgRlJPTSBo aV9yZXdyaXRlIFdIRVJFIGEgPSAyMDM7CisgYTIwM192aWFfaW5kZXhfYWZ0ZXJfdmYgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAyMDMKKygx IHJvdykKKworU0VMRUNUIGNvdW50KCopIEFTIGFsbF9maW5kYWJsZV92aWFfaW5kZXhfYWZ0 ZXJfdmYKKyAgRlJPTSBoaV9yZXdyaXRlIFdIRVJFIGEgQkVUV0VFTiAxIEFORCAxMDAwMDA7 CisgYWxsX2ZpbmRhYmxlX3ZpYV9pbmRleF9hZnRlcl92ZiAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAKKygx IHJvdykKKworLS0gLi4uYW5kIG5vIHN1cGVyc2VkZWQgKHN0YWxlKSB2YWx1ZSBzdXJmYWNl cy4KK1NFTEVDVCBjb3VudCgqKSBBUyBzdGFsZV9hX2FmdGVyX3ZmIEZST00gaGlfcmV3cml0 ZSBXSEVSRSBhIElOICgzLCAxMDMpOworIHN0YWxlX2FfYWZ0ZXJfdmYgCistLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9z ZXFzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBz Y2FuOworU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV9yZXdyaXRlJyk7CisgYmxr bm8gfCBvZmZudW0gfCBhdHRudW0gfCBtc2cgCistLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tCisoMCByb3dzKQorCitTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2hpX3Jld3JpdGVf YScsIGhlYXBhbGxpbmRleGVkID0+IHRydWUpOworIGJ0X2luZGV4X2NoZWNrIAorLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX3Jld3JpdGU7CistLSAo YikgQ0xVU1RFUiB1c2luZyB0aGUgU0lVLXVwZGF0ZWQgc2Vjb25kYXJ5IGluZGV4ICh0aGUg b3JkZXJpbmcgc2NhbiB3YWxrcworLS0gdGhlIGNoYWlucykgYW5kIGEgc2Vjb25kIENMVVNU RVIgYnkgaGVhcCBvcmRlcjsgcm93IGFuZCB2YWx1ZSBjb3VudHMgbXVzdCBiZQorLS0gcHJl c2VydmVkIGFuZCBldmVyeSB2YWx1ZSBmaW5kYWJsZSB0aHJvdWdoIHRoZSBpbmRleCBhZnRl cndhcmQuCitDUkVBVEUgVEFCTEUgaGlfY2x1c3RlciAoaWQgaW50IFBSSU1BUlkgS0VZLCBh IGludCwgYiBpbnQsIHBheWxvYWQgdGV4dCkKKyAgV0lUSCAoZmlsbGZhY3RvciA9IDQwKTsK K0NSRUFURSBJTkRFWCBoaV9jbHVzdGVyX2EgT04gaGlfY2x1c3RlcihhKTsKK0NSRUFURSBJ TkRFWCBoaV9jbHVzdGVyX2IgT04gaGlfY2x1c3RlcihiKTsKK0lOU0VSVCBJTlRPIGhpX2Ns dXN0ZXIKKyAgU0VMRUNUIGcsIGcsIGcgKiAxMCwgcmVwZWF0KCd4JywgMjApIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDMwKSBnOworVVBEQVRFIGhpX2NsdXN0ZXIgU0VUIGEgPSBhICsg MTAwIFdIRVJFIGlkICUgMiA9IDA7ICAgLS0gSE9ULWluZGV4ZWQgb24gYQorVVBEQVRFIGhp X2NsdXN0ZXIgU0VUIGIgPSBiICsgNTAwIFdIRVJFIGlkICUgMyA9IDA7ICAgLS0gSE9ULWlu ZGV4ZWQgb24gYgorVVBEQVRFIGhpX2NsdXN0ZXIgU0VUIGEgPSBhIC0gMTAwIFdIRVJFIGlk ID0gNjsgICAgICAgIC0tIGN5Y2xlIGEgYmFjayAoQUJBKQorLS0gc2Vxc2NhbiB0cnV0aCAo c3VtcyBhcmUgaW52YXJpYW50IGFjcm9zcyBhbnkgbG9zc2xlc3MgcmV3cml0ZSkuCitTRUxF Q1QgY291bnQoKikgQVMgbl9iZWZvcmUsIHN1bShhKSBBUyBzdW1hX2JlZm9yZSwgc3VtKGIp IEFTIHN1bWJfYmVmb3JlCisgIEZST00gaGlfY2x1c3RlcjsKKyBuX2JlZm9yZSB8IHN1bWFf YmVmb3JlIHwgc3VtYl9iZWZvcmUgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLQorICAgICAgIDMwIHwgICAgICAgIDE4NjUgfCAgICAgICAgOTY1MAorKDEgcm93 KQorCitDTFVTVEVSIGhpX2NsdXN0ZXIgVVNJTkcgaGlfY2x1c3Rlcl9hOworU0VMRUNUIGNv dW50KCopIEFTIG5fYWZ0ZXJfY2x1c3Rlciwgc3VtKGEpIEFTIHN1bWFfYWZ0ZXIsIHN1bShi KSBBUyBzdW1iX2FmdGVyCisgIEZST00gaGlfY2x1c3RlcjsKKyBuX2FmdGVyX2NsdXN0ZXIg fCBzdW1hX2FmdGVyIHwgc3VtYl9hZnRlciAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMzAgfCAgICAgICAxODY1IHwgICAg ICAgOTY1MAorKDEgcm93KQorCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5h YmxlX2luZGV4c2NhbiA9IG9uOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VM RUNUIGNvdW50KCopIEFTIGFfYWxsX2ZpbmRhYmxlCisgIEZST00gaGlfY2x1c3RlciBXSEVS RSBhIEJFVFdFRU4gMSBBTkQgMTAwMDAwOworIGFfYWxsX2ZpbmRhYmxlIAorLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgIDMwCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBB UyBiX2FsbF9maW5kYWJsZQorICBGUk9NIGhpX2NsdXN0ZXIgV0hFUkUgYiBCRVRXRUVOIDEg QU5EIDEwMDAwMDsKKyBiX2FsbF9maW5kYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAzMAorKDEgcm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1JFU0VUIGVu YWJsZV9pbmRleHNjYW47CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1NFTEVDVCBidF9p bmRleF9jaGVjaygnaGlfY2x1c3Rlcl9hJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSk7Cisg YnRfaW5kZXhfY2hlY2sgCistLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVD VCBidF9pbmRleF9jaGVjaygnaGlfY2x1c3Rlcl9iJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1 ZSk7CisgYnRfaW5kZXhfY2hlY2sgCistLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfY2x1c3RlcicpOworIGJsa25vIHwg b2ZmbnVtIHwgYXR0bnVtIHwgbXNnIAorLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0t LQorKDAgcm93cykKKworRFJPUCBUQUJMRSBoaV9jbHVzdGVyOworLS0gKGMpIENMVVNURVIg VVNJTkcgYSBzZWNvbmRhcnkgaW5kZXggd2hlbiBhIHJvdydzIGNsdXN0ZXJpbmctY29sdW1u IHZhbHVlIHdhcworLS0gU0lVLWNoYW5nZWQgKG9yIEFCQS1jeWNsZWQpIGluIGFuIEVBUkxJ RVIgaG9wIGFuZCBhIERJRkZFUkVOVCBpbmRleGVkIGNvbHVtbgorLS0gY2hhbmdlZCBpbiB0 aGUgTEFTVCBob3AsIHdpdGggdGhlIGNoYWluIGxlZnQgVU5DT0xMQVBTRUQgKG5vIFZBQ1VV TSBiZWZvcmUKKy0tIHRoZSBDTFVTVEVSKS4gIFRoaXMgaXMgdGhlIHNoYXBlIHRoYXQgc2ls ZW50bHkgbG9zdCByb3dzOiB0aGUgY2x1c3RlcmluZworLS0gaW5kZXggaGFzIG5vIGVudHJ5 IHBvaW50aW5nIGRpcmVjdGx5IGF0IHRoZSBsaXZlIHR1cGxlIChpdHMgZW50cmllcyBhZGRy ZXNzCistLSBlYXJsaWVyIGNoYWluIG1lbWJlcnMsIGFuZCBubyBmcmVzaCBjbHVzdGVyaW5n LWluZGV4IGVudHJ5IHdhcyBwbGFudGVkCistLSBiZWNhdXNlIHRoZSBsYXN0IGhvcCBjaGFu Z2VkIGEgZGlmZmVyZW50IGNvbHVtbiksIHNvIENMVVNURVIncyBpbmRleC1zY2FuCistLSBj b3B5IHBhdGggLS0gcnVubmluZyB1bmRlciBTbmFwc2hvdEFueSwgYmVmb3JlIGFueSBwcnVu ZS9jb2xsYXBzZSBpbnNlcnRzIGEKKy0tIHJlZGlyZWN0L3N0dWIgdGhhdCB3b3VsZCBsZXQg aXQgY2hhaW4td2FsayB0byB0aGUgbGl2ZSB0dXBsZSAtLSBuZXZlcgorLS0gcmVhY2hlZCB0 aGUgcm93IGFuZCBkcm9wcGVkIGl0IGZyb20gdGhlIHJld3JpdHRlbiBoZWFwLiAgQSBsb3Nz bGVzcyByZXdyaXRlCistLSBtdXN0IHByZXNlcnZlIGV2ZXJ5IGxpdmUgcm93IHJlZ2FyZGxl c3Mgb2Ygd2hpY2ggaW5kZXggaXQgY2x1c3RlcnMgYnksIHNvCistLSB0aGUgZml4IChyZXBh Y2suYykgZm9yY2VzIHRoZSBzZXFzY2FuK3NvcnQgY29weSBwYXRoIGZvciBhbnkgaGVhcCB3 aXRoIG1vcmUKKy0tIHRoYW4gb25lIGluZGV4IChTSVUtY2FwYWJsZSksIHRoZSBzYW1lIHBh dGggVkFDVVVNIEZVTEwgYWxyZWFkeSB1c2VzLgorLS0KKy0tIE5COiBkbyBOT1QgVkFDVVVN IGJlZm9yZSB0aGUgQ0xVU1RFUiBoZXJlLCBhbmQga2VlcCBhIG5vbi1yb29teSBmaWxsZmFj dG9yOgorLS0gYSBjaGFpbiBjb2xsYXBzZSBvciBhIHJvb21pZXIgcGFnZSBib3RoIG1hc2sg dGhlIGJ1ZyAodGhleSBjaGFuZ2Ugd2hhdCB0aGUKKy0tIGluZGV4IHNjYW4gY2FuIHJlYWNo KSwgc28gdGhpcyB0ZXN0IGRlbGliZXJhdGVseSByZXByb2R1Y2VzIHRoZSBsb3NpbmcKKy0t IGNvbmRpdGlvbnMuCitDUkVBVEUgVEFCTEUgaGlfY2x1c3Rlcl9sYXN0aG9wIChpZCBpbnQg UFJJTUFSWSBLRVksIGEgaW50LCBiIGludCkKKyAgV0lUSCAoZmlsbGZhY3RvciA9IDQwLCBh dXRvdmFjdXVtX2VuYWJsZWQgPSBmYWxzZSk7CitDUkVBVEUgSU5ERVggaGlfY2xfbGhfYSBP TiBoaV9jbHVzdGVyX2xhc3Rob3AoYSk7CitDUkVBVEUgSU5ERVggaGlfY2xfbGhfYiBPTiBo aV9jbHVzdGVyX2xhc3Rob3AoYik7CitJTlNFUlQgSU5UTyBoaV9jbHVzdGVyX2xhc3Rob3AK KyAgU0VMRUNUIGcsIGcsIGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIGc7CistLSBp ZHMgMS4uMTA6IGNoYW5nZSB0aGUgY2x1c3RlcmluZyBjb2x1bW4gYSBhbmQgY2hhbmdlIGl0 IGJhY2sgKEFCQSBvbiBhKQorVVBEQVRFIGhpX2NsdXN0ZXJfbGFzdGhvcCBTRVQgYSA9IGEg KyAxMDAwIFdIRVJFIGlkIDw9IDEwOworVVBEQVRFIGhpX2NsdXN0ZXJfbGFzdGhvcCBTRVQg YSA9IGEgLSAxMDAwIFdIRVJFIGlkIDw9IDEwOworLS0gaWRzIDUuLjE1OiBMQVNUIGhvcCBj aGFuZ2VzIGIgKGEgZGlmZmVyZW50IGluZGV4ZWQgY29sdW1uKSwgYSB1bmNoYW5nZWQgaGVy ZQorVVBEQVRFIGhpX2NsdXN0ZXJfbGFzdGhvcCBTRVQgYiA9IGIgKyAxMDAgV0hFUkUgaWQg QkVUV0VFTiA1IEFORCAxNTsKK1NFTEVDVCBuX2hvdF9pbmRleGVkID49IDEgQVMgc2l1X2No YWluc19mb3JtZWQKKyAgRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlf Y2x1c3Rlcl9sYXN0aG9wJyk7Cisgc2l1X2NoYWluc19mb3JtZWQgCistLS0tLS0tLS0tLS0t LS0tLS0tCisgdAorKDEgcm93KQorCistLSBncm91bmQgdHJ1dGggdmlhIHNlcXNjYW46IDIw IGxpdmUgcm93cyAoY2hhaW5zIE5PVCBjb2xsYXBzZWQpLgorU0VUIGVuYWJsZV9pbmRleHNj YW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1QgY291bnQo KikgQVMgbl9iZWZvcmUgRlJPTSBoaV9jbHVzdGVyX2xhc3Rob3A7Cisgbl9iZWZvcmUgCist LS0tLS0tLS0tCisgICAgICAgMjAKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX2luZGV4c2Nh bjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworQ0xVU1RFUiBoaV9jbHVzdGVyX2xhc3Ro b3AgVVNJTkcgaGlfY2xfbGhfYTsKKy0tIEFsbCByb3dzIG11c3Qgc3Vydml2ZSAoc2Vxc2Nh biwgcmVhZHMgdGhlIGhlYXAgZGlyZWN0bHkpLgorU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBv ZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1QgY291bnQoKikgQVMg bl9hZnRlcl9jbHVzdGVyX2EgRlJPTSBoaV9jbHVzdGVyX2xhc3Rob3A7Cisgbl9hZnRlcl9j bHVzdGVyX2EgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgMjAKKygx IHJvdykKKworU0VMRUNUIHN0cmluZ19hZ2coaWQ6OnRleHQsICcsJyBPUkRFUiBCWSBpZCkg QVMgbWlzc2luZ19pZHMKKyAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIGlkCisgIFdI RVJFIGlkIE5PVCBJTiAoU0VMRUNUIGlkIEZST00gaGlfY2x1c3Rlcl9sYXN0aG9wKTsKKyBt aXNzaW5nX2lkcyAKKy0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworUkVTRVQgZW5hYmxl X2luZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworLS0gLi4uYW5kIGV2ZXJ5 IHJvdyBpcyBmaW5kYWJsZSB0aHJvdWdoIHRoZSBjbHVzdGVyaW5nIGluZGV4IGFmdGVyd2Fy ZC4KK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0g b247CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1QgY291bnQoKikgQVMg YWxsX2ZpbmRhYmxlX3ZpYV9hCisgIEZST00gaGlfY2x1c3Rlcl9sYXN0aG9wIFdIRVJFIGEg QkVUV0VFTiAxIEFORCAxMDAwMDA7CisgYWxsX2ZpbmRhYmxlX3ZpYV9hIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgMjAKKygxIHJvdykKKworUkVTRVQgZW5h YmxlX3NlcXNjYW47CitSRVNFVCBlbmFibGVfaW5kZXhzY2FuOworUkVTRVQgZW5hYmxlX2Jp dG1hcHNjYW47CitTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2hpX2NsX2xoX2EnLCBoZWFwYWxs aW5kZXhlZCA9PiB0cnVlKTsKKyBidF9pbmRleF9jaGVjayAKKy0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworLS0gU2FtZSBsb3Npbmcgc2hhcGUsIGJ1dCBDTFVTVEVSIGJ5IGEg Tk9OLWJ0cmVlIGNsdXN0ZXJhYmxlIGluZGV4IChHaVNUKS4gIFRoZQorLS0gZml4IGxpdmVz IGluIHRoZSBoZWFwIEFNJ3MgY29weS1mb3ItY2x1c3RlciBwYXRoIGFuZCBpcyBhZ25vc3Rp YyB0byB0aGUKKy0tIGNsdXN0ZXJpbmcgaW5kZXgncyBhY2Nlc3MgbWV0aG9kLCBzbyB0aGlz IG11c3QgcHJlc2VydmUgZXZlcnkgcm93IHRvbyAtLSBhCistLSBndWFyZCB0aGF0IGEgYnRy ZWUtb25seSBmaXggKG9yIG9uZSB0aGF0IHRvdWNoZWQgaW5kZXggQU1zKSB3b3VsZCBtaXNz LiAgQQorLS0gR2lTVCBjbHVzdGVyaW5nIGluZGV4IGhhcyBubyBzb3J0IHBhdGgsIHNvIHRo ZSBoZWFwIEFNIGZhbGxzIGJhY2sgdG8gYSBwbGFpbgorLS0gc2Vxc2NhbiBjb3B5OyBvcmRl ciBpcyBub3QgcHJlc2VydmVkLCBidXQgbm8gbGl2ZSByb3cgaXMgbG9zdC4KK0NSRUFURSBF WFRFTlNJT04gSUYgTk9UIEVYSVNUUyBidHJlZV9naXN0OworQ1JFQVRFIFRBQkxFIGhpX2Ns dXN0ZXJfZ2lzdCAoaWQgaW50IFBSSU1BUlkgS0VZLCBhIGludCwgYiBpbnQpCisgIFdJVEgg KGZpbGxmYWN0b3IgPSA0MCwgYXV0b3ZhY3V1bV9lbmFibGVkID0gZmFsc2UpOworQ1JFQVRF IElOREVYIGhpX2NsX2dfYSBPTiBoaV9jbHVzdGVyX2dpc3QgVVNJTkcgZ2lzdCAoYSk7CitD UkVBVEUgSU5ERVggaGlfY2xfZ19iIE9OIGhpX2NsdXN0ZXJfZ2lzdCAoYik7CitJTlNFUlQg SU5UTyBoaV9jbHVzdGVyX2dpc3QKKyAgU0VMRUNUIGcsIGcsIGcgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMjApIGc7CitVUERBVEUgaGlfY2x1c3Rlcl9naXN0IFNFVCBhID0gYSArIDEw MDAgV0hFUkUgaWQgPD0gMTA7CitVUERBVEUgaGlfY2x1c3Rlcl9naXN0IFNFVCBhID0gYSAt IDEwMDAgV0hFUkUgaWQgPD0gMTA7CitVUERBVEUgaGlfY2x1c3Rlcl9naXN0IFNFVCBiID0g YiArIDEwMCBXSEVSRSBpZCBCRVRXRUVOIDUgQU5EIDE1OworQ0xVU1RFUiBoaV9jbHVzdGVy X2dpc3QgVVNJTkcgaGlfY2xfZ19hOworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CitT RVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1QgY291bnQoKikgQVMgbl9hZnRl cl9jbHVzdGVyX2dpc3QgRlJPTSBoaV9jbHVzdGVyX2dpc3Q7Cisgbl9hZnRlcl9jbHVzdGVy X2dpc3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgMjAK KygxIHJvdykKKworU0VMRUNUIHN0cmluZ19hZ2coaWQ6OnRleHQsICcsJyBPUkRFUiBCWSBp ZCkgQVMgbWlzc2luZ19pZHNfZ2lzdAorICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkg aWQKKyAgV0hFUkUgaWQgTk9UIElOIChTRUxFQ1QgaWQgRlJPTSBoaV9jbHVzdGVyX2dpc3Qp OworIG1pc3NpbmdfaWRzX2dpc3QgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworUkVTRVQgZW5hYmxlX2luZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOwor RFJPUCBUQUJMRSBoaV9jbHVzdGVyX2dpc3Q7CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFw YW0oJ2hpX2NsdXN0ZXJfbGFzdGhvcCcpOworIGJsa25vIHwgb2ZmbnVtIHwgYXR0bnVtIHwg bXNnIAorLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLQorKDAgcm93cykKKworRFJP UCBUQUJMRSBoaV9jbHVzdGVyX2xhc3Rob3A7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky0tIENsZWFudXAKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRFJPUCBGVU5DVElPTiBn ZXRfaGlfY291bnQodGV4dCk7CitEUk9QIEZVTkNUSU9OIGdldF9ob3RfY291bnQodGV4dCk7 CistLSBwYWdlaW5zcGVjdCBhbmQgYW1jaGVjayB3ZXJlIGJvdGggY3JlYXRlZCBhYm92ZSB3 aXRoIElGIE5PVCBFWElTVFMgYW5kIG1heQorLS0gaGF2ZSBwcmUtZXhpc3RlZCB0aGlzIHRl c3Q7IGxlYXZlIHRoZW0sIG1hdGNoaW5nIGFtY2hlY2sncyB0cmVhdG1lbnQsCistLSByYXRo ZXIgdGhhbiByaXNrIGRyb3BwaW5nIGFuIGV4dGVuc2lvbiB0aGlzIHRlc3QgZGlkIG5vdCBj cmVhdGUuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRh dGVzLm91dCBiL2NvbnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0 CnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvaG90X3VwZGF0ZXMub3V0CnJlbmFtZSB0byBjb250cmliL3BhZ2VpbnNwZWN0L2V4 cGVjdGVkL2hvdF91cGRhdGVzLm91dAppbmRleCAwNjk3OWVkMzFkMC4uOTFkZWE0MTliNjQg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0 CisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0CkBA IC01MzEsNCArNTMxLDUgQEAgRFJPUCBUQUJMRSBob3RfZ2luX3Rlc3Q7CiBEUk9QIEZVTkNU SU9OIGhhc19ob3RfY2hhaW4odGV4dCwgdGlkKTsKIERST1AgRlVOQ1RJT04gcHJpbnRfaG90 X2NoYWluKHRleHQsIHRpZCk7CiBEUk9QIEZVTkNUSU9OIGdldF9ob3RfY291bnQodGV4dCk7 Ci1EUk9QIEVYVEVOU0lPTiBwYWdlaW5zcGVjdDsKKy0tIExlYXZlIHBhZ2VpbnNwZWN0IGlu c3RhbGxlZDogdGhpcyBydW5zIGluc2lkZSB0aGUgcGFnZWluc3BlY3QgcmVncmVzcyBzdWl0 ZQorLS0gKHBhZ2Uuc3FsIGNyZWF0ZWQgaXQpLCBhbmQgb3RoZXIgdGVzdHMgaW4gdGhlIHNj aGVkdWxlIHN0aWxsIG5lZWQgaXQuCmRpZmYgLS1naXQgYS9jb250cmliL3BhZ2VpbnNwZWN0 L21lc29uLmJ1aWxkIGIvY29udHJpYi9wYWdlaW5zcGVjdC9tZXNvbi5idWlsZAppbmRleCAy ZjMzMzYzNTgzOC4uMDQ2NGY3M2E5MDEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3Bl Y3QvbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9tZXNvbi5idWlsZApA QCAtNTcsNiArNTcsOCBAQCB0ZXN0cyArPSB7CiAgICAgICAnaGFzaCcsCiAgICAgICAnY2hl Y2tzdW0nLAogICAgICAgJ29sZGV4dHZlcnNpb25zJywKKyAgICAgICdob3RfdXBkYXRlcycs CisgICAgICAnaG90X2luZGV4ZWRfdXBkYXRlcycsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAt LWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL2hvdF9pbmRleGVkX3VwZGF0ZXMuc3Fs IGIvY29udHJpYi9wYWdlaW5zcGVjdC9zcWwvaG90X2luZGV4ZWRfdXBkYXRlcy5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEyNzBlZWFkMDhkCi0tLSAv ZGV2L251bGwKKysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9zcWwvaG90X2luZGV4ZWRfdXBk YXRlcy5zcWwKQEAgLTAsMCArMSwxNTAxIEBACistLQorLS0gSE9UX0lOREVYRURfVVBEQVRF UworLS0gVGVzdCBIT1QtaW5kZXhlZCB1cGRhdGUgKGhvdC1pbmRleGVkKSwgYWthIEhPVC1p bmRleGVkLCBiZWhhdmlvdXIKKy0tCistLSBFdmVyeSBVUERBVEUgaW4gdGhpcyBmaWxlIG1v ZGlmaWVzIGF0IGxlYXN0IG9uZSBub24tc3VtbWFyaXppbmcKKy0tIGluZGV4ZWQgYXR0cmli dXRlLiAgT24gYSBwcmUtaG90LWluZGV4ZWQgc2VydmVyIGFsbCBvZiB0aGVzZSB3b3VsZCBi ZQorLS0gbm9uLUhPVDsgb24gdGhlIGhvdC1pbmRleGVkIGJyYW5jaCBlYWNoIGVsaWdpYmxl IHVwZGF0ZSBzdGF5cyBvbi1wYWdlIGFuZAorLS0gaW5zZXJ0cyBpbnRvIG9ubHkgdGhlIGlu ZGV4ZXMgd2hvc2UgYXR0cmlidXRlcyBhY3R1YWxseSBjaGFuZ2VkLgorLS0KKy0tIFdlIHZl cmlmeSBmb3VyIHRoaW5nczoKKy0tICAgKEEpIHBnX3N0YXQgY291bnRlcnM6IEhPVCBhbmQg aG90LWluZGV4ZWQgY291bnRzIGluY3JlbWVudCBhcyBleHBlY3RlZAorLS0gICAoQikgaW5k ZXggbG9va3VwcyByZXR1cm4gdGhlIG5ldyB2YWx1ZSBhbmQgbm90IHRoZSBzdGFsZSB2YWx1 ZQorLS0gICAgICAgZm9yIEVRVUFMSVRZIHF1ZXJpZXMgKHRoZSByZWFkLXNpZGUgc3RhbGVu ZXNzIHRlc3QgZHJvcHMgYQorLS0gICAgICAgbGVhZiB3aG9zZSBjb3ZlcmVkIGF0dHJpYnV0 ZSBjaGFuZ2VkIG9uIHRoZSB3YXkgdG8gdGhlIGxpdmUgdHVwbGUpCistLSAgIChDKSBwZ19y ZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cyByZXBvcnRzIHRoZSBIT1QtaW5kZXhlZCB2ZXJz aW9ucyB3ZSBleHBlY3QKKy0tICAgKEQpICoqUkFOR0UvSU5FUVVBTElUWSoqIHF1ZXJpZXMg cmV0dXJuIHRoZSBjb3JyZWN0IG51bWJlciBvZgorLS0gICAgICAgdHVwbGVzIC0tIHRoaXMg aXMgdGhlIGNsYXNzIG9mIGJ1Z3Mgd2hlcmUgYSBzdGFsZSBidHJlZQorLS0gICAgICAgZW50 cnkncyBrZXkgaXMgc3RpbGwgcmVhY2hhYmxlIHZpYSBhIGxvb3NlciBzY2FuIGtleTsgdGhl CistLSAgICAgICBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgZHJvcHMgdGhlIHN0YWxlIGFy cml2YWwgYmVjYXVzZSB0aGUgaW5kZXgncworLS0gICAgICAgYXR0cmlidXRlIGNoYW5nZWQg YmV0d2VlbiB0aGF0IGxlYWYncyB0YXJnZXQgYW5kIHRoZSBsaXZlIHR1cGxlCistLQorCitD UkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGFnZWluc3BlY3Q7CisKK0NSRUFURSBP UiBSRVBMQUNFIEZVTkNUSU9OIGdldF9ob3RfY291bnQocmVsX25hbWUgdGV4dCkKK1JFVFVS TlMgVEFCTEUgKHVwZGF0ZXMgQklHSU5ULCBob3QgQklHSU5UKSBBUyAkJAorREVDTEFSRSBy ZWxfb2lkIG9pZDsKK0JFR0lOCisgICAgcmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6 Om9pZDsKKyAgICB1cGRhdGVzIDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc191cGRh dGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dl dF94YWN0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKTsKKyAgICBob3QgOj0gQ09BTEVT Q0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAg ICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKHJl bF9vaWQpLCAwKTsKKyAgICBSRVRVUk4gTkVYVDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdz cWw7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGdldF9oaV9jb3VudChyZWxfbmFt ZSB0ZXh0KQorUkVUVVJOUyBUQUJMRSAodXBkYXRlcyBCSUdJTlQsIGhvdCBCSUdJTlQsIGhv dF9pZHggQklHSU5UKSBBUyAkJAorREVDTEFSRSByZWxfb2lkIG9pZDsKK0JFR0lOCisgICAg cmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsKKyAgICB1cGRhdGVzIDo9IENP QUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAg ICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJl bF9vaWQpLCAwKTsKKyAgICBob3QgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hv dF91cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRf Z2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKTsKKyAgICBob3RfaWR4 IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkKHJl bF9vaWQpLCAwKSArCisgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQocmVsX29pZCksIDApOworICAgIFJFVFVSTiBORVhU OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDEuIEJhc2ljIGhvdC1pbmRleGVkOiBtb2RpZnlpbmcgYW4gaW5kZXhlZCBj b2x1bW4gc3RheXMgSE9UIGFuZCBjb3VudHMgYXMgaG90LWluZGV4ZWQKKy0tIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2Jhc2ljICgKKyAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIG5vbl9pbmRleGVkX2NvbCB0 ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfYmFzaWNf aWR4IE9OIGhpX2Jhc2ljKGluZGV4ZWRfY29sKTsKKworSU5TRVJUIElOVE8gaGlfYmFzaWMg VkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CisKKy0tIFByZS1ob3QtaW5kZXhlZCB0aGlz IHdvdWxkIGJlIG5vbi1IT1QuICBVbmRlciBob3QtaW5kZXhlZCBpdCdzIEhPVC1pbmRleGVk OyBib3RoIHRoZQorLS0gSE9UIGNvdW50ZXIgYW5kIHRoZSBob3QtaW5kZXhlZCBjb3VudGVy IGFkdmFuY2UuCitVUERBVEUgaGlfYmFzaWMgU0VUIGluZGV4ZWRfY29sID0gMTUwIFdIRVJF IGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAq IEZST00gZ2V0X2hpX2NvdW50KCdoaV9iYXNpYycpOworCistLSBUaGUgbmV3IHZhbHVlIGlz IHJlYWNoYWJsZSB2aWEgdGhlIGluZGV4LgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOwor RVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaGlfYmFz aWMgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CitTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZS T00gaGlfYmFzaWMgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisKKy0tIFRoZSBvbGQgdmFs dWUgaXMgbm90IHJlYWNoYWJsZSB0aHJvdWdoIHRoaXMgaW5kZXg6IHRoZSBzdGFsZSBidHJl ZQorLS0gZW50cnkgKGluZGV4ZWRfY29sPTEwMCkgd2Fsa3MgdG8gdGhlIGN1cnJlbnQgdHVw bGUgdmlhIHRoZSBob3QtaW5kZXhlZCBob3AsCistLSBub2RlSW5kZXhzY2FuIHJlLWV2YWx1 YXRlcyBgaW5kZXhlZF9jb2wgPSAxMDBgIGFnYWluc3QgdGhlIGN1cnJlbnQKKy0tIHR1cGxl IChpbmRleGVkX2NvbD0xNTApLCBhbmQgdGhlIHJvdyBpcyBjb3JyZWN0bHkgZHJvcHBlZC4g IFRoaXMgaXMKKy0tIHRoZSBlcXVhbGl0eS1sb29rdXAgY2FzZSB0aGUgY3Jvc3NlZC1hdHRy aWJ1dGUgYml0bWFwIGhhbmRsZXMuCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCBG Uk9NIGhpX2Jhc2ljIFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworU0VMRUNUIGlkIEZST00g aGlfYmFzaWMgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7CitSRVNFVCBlbmFibGVfc2Vxc2Nh bjsKKworLS0gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMgc2VlcyBvbmUgSE9ULWlu ZGV4ZWQgdmVyc2lvbiwgemVybyBIT1QgcmVkaXJlY3RzICh0aGUKKy0tIGNoYWluIGhhcyBu b3QgeWV0IGJlZW4gcHJ1bmVkIHNvIG5vIExQX1JFRElSRUNUIGV4aXN0cykuCitTRUxFQ1Qg bl9ob3RfaW5kZXhlZCwgbl9jaGFpbnMsIGF2Z19jaGFpbl9sZW4sIG1heF9jaGFpbl9sZW4K K0ZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX2Jhc2ljJyk7CisKK0RS T1AgVEFCTEUgaGlfYmFzaWM7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMi4g UkFOR0UvSU5FUVVBTElUWSBjb3JyZWN0bmVzcyBhZnRlciBob3QtaW5kZXhlZCBvbiBhbiBp bmRleGVkIGNvbHVtbgorLS0KKy0tIFRoaXMgaXMgdGhlIHRlc3QgY2xhc3MgdGhhdCBjYXRj aGVzIHRoZSBob3QtaW5kZXhlZCBmYWxzZS1kdXAgYnVnOiBhIHN0YWxlCistLSBidHJlZSBl bnRyeSB3aG9zZSBrZXkgdmFsdWUgc3RpbGwgc2F0aXNmaWVzIHRoZSByYW5nZSBwcmVkaWNh dGUsCistLSByZWFjaGFibGUgdmlhIHRoZSBob3QtaW5kZXhlZCBjaGFpbiBob3AuCistLQor LS0gVG8gZXhlcmNpc2UgdGhlIGJ1ZyB3ZSBtdXN0IGZvcmNlIGFuIEluZGV4U2NhbiBwbGFu ICh0aGUKKy0tIEluZGV4T25seVNjYW4gcGF0aCBwZXJtaXNzaXZlbHkgZHJvcHMgZXZlcnkg aG90LWluZGV4ZWQtcmVhY2hhYmxlIGluZGV4LW9ubHkKKy0tIGhpdDsgdGhlIEJpdG1hcEhl YXBTY2FuIHBhdGggZGVkdXBzIGJ5IFRJRCkuICBXZSBpbmNsdWRlIGEgcGF5bG9hZAorLS0g Y29sdW1uIG5vdCBwcmVzZW50IGluIHRoZSBQSyBzbyB0aGUgcGxhbm5lciBtdXN0IGhlYXAt ZmV0Y2guCistLQorLS0gVGhlIHJlYWQtc2lkZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAg bWFrZXMgdGhlIEluZGV4U2NhbiByZXR1cm4gdGhlIGNvcnJlY3QKKy0tIGNvdW50IG9mIDE6 IHRoZSBzdGFsZSBlbnRyeSAoJzEnLCc1JykgY2hhaW4td2Fsa3MgdG8gdGhlIGxpdmUgdHVw bGUgYWNyb3NzCistLSB0aGUgYi1jaGFuZ2luZyBob3AsIGFuZCBiZWNhdXNlIHRoZSBQSyBj b3ZlcnMgYiB0aGUgb3ZlcmxhcCBpcyBub24tZW1wdHksIHNvCistLSB0aGUgc3RhbGUgbGVh ZiBpcyBkcm9wcGVkLiAgVGhlIGZyZXNoIGVudHJ5ICgnMScsJzE1JykgcG9pbnRzIGRpcmVj dGx5IGF0IHRoZQorLS0gbGl2ZSB0dXBsZSAobm8gaG9wIGFmdGVyIGl0KSBhbmQgaXMga2Vw dC4gIFRoZSBPUkRFUiBCWSBsaWtld2lzZSByZXR1cm5zIHRoZQorLS0gc2luZ2xlIGxpdmUg cm93LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcmFuZ2Ug KAorICAgIGEgaW50LAorICAgIGIgaW50LAorICAgIHBheWxvYWQgdGV4dCwKKyAgICBQUklN QVJZIEtFWSAoYSwgYikKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKworSU5TRVJUIElO VE8gaGlfcmFuZ2UgVkFMVUVTICgxLCA1LCAnaGknKTsKKworLS0gaG90LWluZGV4ZWQgdXBk YXRlIG9uIHRoZSBzZWNvbmQgUEsgY29sdW1uOiBzdGFsZSBidHJlZSBlbnRyeSAoJzEnLCc1 JykKKy0tIHJlbWFpbnMsIG5ldyBlbnRyeSAoJzEnLCcxNScpIGluc2VydGVkLiAgVGhlIHN0 YWxlIGVudHJ5IHBvaW50cyBhdAorLS0gdGhlIGNoYWluIHJvb3Q7IHRoZSBmcmVzaCBlbnRy eSBwb2ludHMgZGlyZWN0bHkgYXQgdGhlIG5ldworLS0gaGVhcC1vbmx5IHR1cGxlLgorVVBE QVRFIGhpX3JhbmdlIFNFVCBiID0gMTUgV0hFUkUgYSA9IDEgQU5EIGIgPSA1OworCitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CisK Ky0tIEluZGV4U2NhbjogcGF5bG9hZCBJUyBOT1QgTlVMTCBmb3JjZXMgaGVhcCBmZXRjaCwg bm8gSW5kZXhPbmx5U2Nhbi4KKy0tIFRoZSBzdGFsZSAoJzEnLCc1JykgbGVhZiBpcyBkcm9w cGVkIGJ5IHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAsIHNvIHRoaXMKKy0tIHJldHVy bnMgMS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3Jh bmdlIFdIRVJFIGEgPSAxIEFORCBiIDwgMTAwIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOwor U0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDAg QU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CitTRUxFQ1QgYSwgYiBGUk9NIGhpX3JhbmdlIFdI RVJFIGEgPSAxIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMIE9SREVSIEJZIGI7CisKKy0tIElu ZGV4T25seVNjYW46IHRoZSBwYWdlIGhvbGRzIGEgcHJlc2VydmVkIEhPVC1pbmRleGVkIG1l bWJlciBzbyBpdCBpcyBuZXZlciBhbGwtdmlzaWJsZTsgSU9TCistLSBwZXJmb3JtcyB0aGUg aGVhcCBmZXRjaCBhbmQgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBkcm9wcyB0aGUg c3RhbGUgKCcxJywnNScpCistLSBsZWFmLCBzbyBjb3VudCA9IDEuCitFWFBMQUlOIChDT1NU UyBPRkYpIFNFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBi IDwgMTAwOworU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5E IGIgPCAxMDA7CisKKy0tIEJpdG1hcEhlYXBTY2FuOiBUSUQgZGVkdXAgY29sbGFwc2VzIHRo ZSBzdGFsZSBhbmQgZnJlc2ggaGl0cy4KK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gb2ZmOwor U0VUIGVuYWJsZV9pbmRleG9ubHlzY2FuID0gb2ZmOworUkVTRVQgZW5hYmxlX2JpdG1hcHNj YW47CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3Jhbmdl IFdIRVJFIGEgPSAxIEFORCBiIDwgMTAwOworU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFu Z2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7CitSRVNFVCBlbmFibGVfaW5kZXhzY2FuOwor UkVTRVQgZW5hYmxlX2luZGV4b25seXNjYW47CisKKy0tIFNlcVNjYW46IHJlYWRzIHRoZSBo ZWFwIGRpcmVjdGx5LCBzZWVzIGV4YWN0bHkgb25lIGxpdmUgdHVwbGUuCitSRVNFVCBlbmFi bGVfc2Vxc2NhbjsKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9p bmRleG9ubHlzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworRVhQ TEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBh ID0gMSBBTkQgYiA8IDEwMDsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJF IGEgPSAxIEFORCBiIDwgMTAwOworUkVTRVQgZW5hYmxlX2luZGV4c2NhbjsKK1JFU0VUIGVu YWJsZV9pbmRleG9ubHlzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CisKKy0tIFNh bWUgc2hhcGUgb24gYSBzZWNvbmRhcnkgKG5vbi1QSykgYnRyZWU6IGFub3RoZXIgaG90LWlu ZGV4ZWQgdXBkYXRlIG9uIGIuCitDUkVBVEUgSU5ERVggaGlfcmFuZ2VfYl9pZHggT04gaGlf cmFuZ2UoYik7CitVUERBVEUgaGlfcmFuZ2UgU0VUIGIgPSAyNSBXSEVSRSBhID0gMSBBTkQg YiA9IDE1OworCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1h cHNjYW4gPSBvZmY7CistLSBJbmRleFNjYW4gcGF0aCBvbiB0aGUgc2Vjb25kYXJ5IGluZGV4 OyBzYW1lIGZpeCBhcHBsaWVzLgorU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hF UkUgYiBCRVRXRUVOIDAgQU5EIDEwMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKK1JFU0VU IGVuYWJsZV9zZXFzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CisKK0RST1AgVEFC TEUgaGlfcmFuZ2U7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMy4gQWxsLW9y LW5vbmUgb24gYSBtdWx0aS1pbmRleGVkIHRhYmxlOiBob3QtaW5kZXhlZCBvbmx5IHRvdWNo ZXMgaW5kZXhlcworLS0gICAgd2hvc2UgYXR0cmlidXRlcyBjaGFuZ2VkCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9tdWx0aSAoCisgICAgaWQgaW50IFBS SU1BUlkgS0VZLAorICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQsCisgICAgY29sX2Mg aW50LAorICAgIG5vbl9pbmRleGVkIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsK K0NSRUFURSBJTkRFWCBoaV9tdWx0aV9hX2lkeCBPTiBoaV9tdWx0aShjb2xfYSk7CitDUkVB VEUgSU5ERVggaGlfbXVsdGlfYl9pZHggT04gaGlfbXVsdGkoY29sX2IpOworQ1JFQVRFIElO REVYIGhpX211bHRpX2NfaWR4IE9OIGhpX211bHRpKGNvbF9jKTsKKworSU5TRVJUIElOVE8g aGlfbXVsdGkgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcpOworCistLSBjb2xf YSBvbmx5OiB1bmRlciBob3QtaW5kZXhlZCB0aGlzIGlzIEhPVC1pbmRleGVkLCBhbmQgb25s eSBoaV9tdWx0aV9hX2lkeAorLS0gZ2V0cyBhIG5ldyBlbnRyeS4gIGhpX211bHRpX2JfaWR4 IC8gaGlfbXVsdGlfY19pZHgga2VlcCBwb2ludGluZworLS0gYXQgdGhlIGNoYWluIHJvb3Qu CitVUERBVEUgaGlfbXVsdGkgU0VUIGNvbF9hID0gMTUgV0hFUkUgaWQgPSAxOworU0VMRUNU IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUICogRlJPTSBnZXRfaGlfY291 bnQoJ2hpX211bHRpJyk7CisKKy0tIExvb2t1cHMgb24gYWxsIHRocmVlIGluZGV4ZXMgcmV0 dXJuIHRoZSByb3cuCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQgRlJP TSBoaV9tdWx0aSBXSEVSRSBjb2xfYSA9IDE1OworU0VMRUNUIGlkIEZST00gaGlfbXVsdGkg V0hFUkUgY29sX2IgPSAyMDsKK1NFTEVDVCBpZCBGUk9NIGhpX211bHRpIFdIRVJFIGNvbF9j ID0gMzA7CisKKy0tIE9sZCBjb2xfYSB2YWx1ZSBpcyB1bnJlYWNoYWJsZSBieSBlcXVhbGl0 eSAoc3RhbGUgZW50cnkgZHJvcHBlZCBieSB0aGUKKy0tIHJlYWQtc2lkZSBjcm9zc2VkLWF0 dHJpYnV0ZSBiaXRtYXApLgorU0VMRUNUIGlkIEZST00gaGlfbXVsdGkgV0hFUkUgY29sX2Eg PSAxMDsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCitEUk9QIFRBQkxFIGhpX211bHRpOwor CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDQuIE11bHRpLWNvbHVtbiBidHJlZTog aG90LWluZGV4ZWQgb24gcGFydCBvZiBhIGNvbXBvc2l0ZSBrZXkKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2NvbXBvc2l0ZSAoCisgICAgaWQgaW50IFBS SU1BUlkgS0VZLAorICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQsCisgICAgZGF0YSB0 ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfY29tcG9z aXRlX2FiX2lkeCBPTiBoaV9jb21wb3NpdGUoY29sX2EsIGNvbF9iKTsKKworSU5TRVJUIElO VE8gaGlfY29tcG9zaXRlIFZBTFVFUyAoMSwgMTAsIDIwLCAnZGF0YScpOworCistLSBjb2xf YSBpcyBwYXJ0IG9mIHRoZSBjb21wb3NpdGUga2V5OiBob3QtaW5kZXhlZC4KK1VQREFURSBo aV9jb21wb3NpdGUgU0VUIGNvbF9hID0gMTU7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoKCk7CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfY29tcG9zaXRlJyk7 CisKKy0tIFJlc2V0IGFuZCB0aGVuIHVwZGF0ZSBjb2xfYiAoYWxzbyBwYXJ0IG9mIHRoZSBr ZXkpLgorVVBEQVRFIGhpX2NvbXBvc2l0ZSBTRVQgY29sX2EgPSAxMDsKK1VQREFURSBoaV9j b21wb3NpdGUgU0VUIGNvbF9iID0gMjU7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoKCk7CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfY29tcG9zaXRlJyk7CisK K0RST1AgVEFCTEUgaGlfY29tcG9zaXRlOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky0tIDUuIFBhcnRpYWwgaW5kZXg6IHN0YXR1cyB0cmFuc2l0aW9uIG91dC1vZi1wcmVkaWNh dGUKKy0tCistLSAnc3RhdHVzJyBpcyBhIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlIGNvbHVt bi4gIEEgY2hhbmdlIHRvIGEgcHJlZGljYXRlCistLSBjb2x1bW4gY2FuIGZsaXAgYSByb3cg aW4gb3Igb3V0IG9mIHRoZSBpbmRleCwgd2hpY2ggdGhlIHJlYWQtc2lkZSBrZXkKKy0tIHJl Y2hlY2sgY2Fubm90IGRldGVjdCwgc28gSGVhcFVwZGF0ZUhvdEFsbG93YWJsZSBjb25zZXJ2 YXRpdmVseSBkaXNxdWFsaWZpZXMKKy0tIEhPVC1pbmRleGVkIGZvciBhbnkgcHJlZGljYXRl LWNvbHVtbiBjaGFuZ2UgKGV2ZW4gdGhpcyBvdXQtb2YtcHJlZGljYXRlIC0+CistLSBvdXQt b2YtcHJlZGljYXRlIGNhc2UpLiAgVGhlIHVwZGF0ZSBpcyB0aGVyZWZvcmUgbm9uLUhPVCwg YW5kIHRoZSBwYXJ0aWFsCistLSBpbmRleCBjb3JyZWN0bHkgc3RheXMgZW1wdHkgZm9yIHRo ZXNlIG5vbi0nYWN0aXZlJyByb3dzLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVB VEUgVEFCTEUgaGlfcGFydGlhbCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHN0 YXR1cyB0ZXh0LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhpX3BhcnRpYWxfYWN0aXZlX2lkeCBPTiBoaV9wYXJ0aWFsKHN0YXR1 cykgV0hFUkUgc3RhdHVzID0gJ2FjdGl2ZSc7CisKK0lOU0VSVCBJTlRPIGhpX3BhcnRpYWwg VkFMVUVTICgxLCAnYWN0aXZlJywgJ2RhdGExJyk7CitJTlNFUlQgSU5UTyBoaV9wYXJ0aWFs IFZBTFVFUyAoMiwgJ2luYWN0aXZlJywgJ2RhdGEyJyk7CitJTlNFUlQgSU5UTyBoaV9wYXJ0 aWFsIFZBTFVFUyAoMywgJ2RlbGV0ZWQnLCAnZGF0YTMnKTsKKworLS0gb3V0IC0+IG91dCB0 cmFuc2l0aW9uIG9uIHRoZSBwcmVkaWNhdGUgY29sdW1uOiBIT1QtaW5kZXhlZCBrZWVwcyBp dCBvbi1wYWdlLAorLS0gYW5kIHRoZSBwYXJ0aWFsIGluZGV4IGdldHMgbm8gZW50cnkgKHRo ZSByb3cgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUgbmVpdGhlcgorLS0gYmVmb3JlIG5vciBh ZnRlciB0aGUgdXBkYXRlKS4KK1VQREFURSBoaV9wYXJ0aWFsIFNFVCBzdGF0dXMgPSAnZGVs ZXRlZCcgV0hFUkUgaWQgPSAyOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgp OworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX3BhcnRpYWwnKTsKKworLS0gVGhl IHBhcnRpYWwgaW5kZXggc3RpbGwgY29ycmVjdGx5IGFuc3dlcnMgImFjdGl2ZSIgcXVlcmll cy4KK1NFTEVDVCBpZCwgc3RhdHVzIEZST00gaGlfcGFydGlhbCBXSEVSRSBzdGF0dXMgPSAn YWN0aXZlJzsKKworRFJPUCBUQUJMRSBoaV9wYXJ0aWFsOworCistLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKy0tIDYuIFBhcnRpdGlvbjogaG90LWluZGV4ZWQgaW5zaWRlIG9uZSBwYXJ0 aXRpb24KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3BhcnQg KAorICAgIGlkIGludCwKKyAgICBwYXJ0aXRpb25fa2V5IGludCwKKyAgICBpbmRleGVkX2Nv bCBpbnQsCisgICAgZGF0YSB0ZXh0LAorICAgIFBSSU1BUlkgS0VZIChpZCwgcGFydGl0aW9u X2tleSkKKykgUEFSVElUSU9OIEJZIFJBTkdFIChwYXJ0aXRpb25fa2V5KTsKK0NSRUFURSBU QUJMRSBoaV9wYXJ0XzEgUEFSVElUSU9OIE9GIGhpX3BhcnQKKyAgICBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgxMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVgg aGlfcGFydF9pZHggT04gaGlfcGFydChpbmRleGVkX2NvbCk7CisKK0lOU0VSVCBJTlRPIGhp X3BhcnQgVkFMVUVTICgxLCA1MCwgMTAwLCAnZGF0YScpOworCitVUERBVEUgaGlfcGFydCBT RVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCgpOworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX3BhcnRf MScpOworCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQgRlJPTSBoaV9w YXJ0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworU0VMRUNUIGlkIEZST00gaGlfcGFydCBX SEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCitEUk9Q IFRBQkxFIGhpX3BhcnQgQ0FTQ0FERTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCist LSA3LiBUcmlnZ2VyIG1vZGlmaWVzIGluZGV4ZWQgY29sdW1uOiBob3QtaW5kZXhlZCwgbm90 IG5vbi1IT1QKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3Ry aWdnZXIgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cmlnZ2VyZWRfY29sIGlu dCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJ TkRFWCBoaV90cmlnZ2VyX2lkeCBPTiBoaV90cmlnZ2VyKHRyaWdnZXJlZF9jb2wpOworCitD UkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBoaV90cmlnZ2VyX2J1bXAoKQorUkVUVVJOUyBU UklHR0VSIEFTICQkCitCRUdJTgorICAgIE5FVy50cmlnZ2VyZWRfY29sID0gTkVXLnRyaWdn ZXJlZF9jb2wgKyAxOworICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBn c3FsOworCitDUkVBVEUgVFJJR0dFUiBiZWZvcmVfdXBkYXRlX2J1bXAKKyAgICBCRUZPUkUg VVBEQVRFIE9OIGhpX3RyaWdnZXIKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIEZV TkNUSU9OIGhpX3RyaWdnZXJfYnVtcCgpOworCitJTlNFUlQgSU5UTyBoaV90cmlnZ2VyIFZB TFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworCistLSBVUERBVEUncyBTRVQgY2xhdXNlIGRv ZXNuJ3QgdG91Y2ggdGhlIGluZGV4ZWQgY29sdW1uLCBidXQgdGhlCistLSB0cmlnZ2VyIG1v ZGlmaWVzIGl0IHZpYSBoZWFwX21vZGlmeV90dXBsZS4gIGhvdC1pbmRleGVkIG11c3QgZGV0 ZWN0IHRoaXMKKy0tIGFuZCBrZWVwIHRoZSB0dXBsZSBvbi1wYWdlIChIRUFQX0lOREVYRURf VVBEQVRFRCkgcGx1cyBhIG5ldyBidHJlZSBlbnRyeS4KK1VQREFURSBoaV90cmlnZ2VyIFNF VCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV90cmlnZ2Vy Jyk7CitTRUxFQ1QgdHJpZ2dlcmVkX2NvbCBGUk9NIGhpX3RyaWdnZXIgV0hFUkUgaWQgPSAx OworCistLSBOZXcgdmFsdWUgcmVhY2hhYmxlLgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2Zm OworU0VMRUNUIGlkIEZST00gaGlfdHJpZ2dlciBXSEVSRSB0cmlnZ2VyZWRfY29sID0gMTAx OworU0VMRUNUIGlkIEZST00gaGlfdHJpZ2dlciBXSEVSRSB0cmlnZ2VyZWRfY29sID0gMTAw OworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgaGlfdHJpZ2dlciBDQVND QURFOworRFJPUCBGVU5DVElPTiBoaV90cmlnZ2VyX2J1bXAoKTsKKworLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSA4LiBKU09OQiBleHByZXNzaW9uIGluZGV4OiBIT1QtaW5kZXhl ZCBpcyBub3QgeWV0IHN1cHBvcnRlZCBvbiBleHByZXNzaW9uCistLSAgICBpbmRleGVzLCBz byB0aGUgdXBkYXRlIGZhbGxzIGJhY2sgdG8gYSBub24tSE9UIHVwZGF0ZSAoaG90X2lkeCA9 IDApLgorLS0gICAgUmVhZHMgc3RheSBjb3JyZWN0LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitDUkVBVEUgVEFCTEUgaGlfanNvbmIgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwK KyAgICBkYXRhIGpzb25iCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5E RVggaGlfanNvbmJfbmFtZV9pZHggT04gaGlfanNvbmIgKChkYXRhLT4+J25hbWUnKSk7CisK K0lOU0VSVCBJTlRPIGhpX2pzb25iIFZBTFVFUyAoMSwgJ3sibmFtZSI6IkFsaWNlIiwiYWdl IjozMH0nKTsKKworLS0gQ2hhbmdpbmcgdGhlIGluZGV4ZWQgZXhwcmVzc2lvbidzIHZhbHVl IChuYW1lKTogZXhwcmVzc2lvbiBpbmRleGVzIGFyZSBub3QKKy0tIHlldCBzdXBwb3J0ZWQs IHNvIHRoaXMgaXMgYSBub24tSE9UIHVwZGF0ZS4KK1VQREFURSBoaV9qc29uYiBTRVQgZGF0 YSA9IGpzb25iX3NldChkYXRhLCAne25hbWV9JywgJyJBbGljZTIiJykgV0hFUkUgaWQgPSAx OworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUICogRlJPTSBn ZXRfaGlfY291bnQoJ2hpX2pzb25iJyk7CisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsK K1NFTEVDVCBpZCBGUk9NIGhpX2pzb25iIFdIRVJFIGRhdGEtPj4nbmFtZScgPSAnQWxpY2Uy JzsKK1NFTEVDVCBpZCBGUk9NIGhpX2pzb25iIFdIRVJFIGRhdGEtPj4nbmFtZScgPSAnQWxp Y2UnOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgaGlfanNvbmI7CisK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gOS4gR0lOIGluZGV4IHdpdGggY2hhbmdl ZCBleHRyYWN0ZWQga2V5czogaG90LWluZGV4ZWQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorQ1JFQVRFIFRBQkxFIGhpX2dpbiAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAg IHRhZ3MgdGV4dFtdCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVgg aGlfZ2luX3RhZ3NfaWR4IE9OIGhpX2dpbiBVU0lORyBnaW4gKHRhZ3MpOworCitJTlNFUlQg SU5UTyBoaV9naW4gVkFMVUVTICgxLCBBUlJBWVsndGFnMScsICd0YWcyJ10pOworCistLSBB ZGRpbmcgYSB0YWcgeWllbGRzIGEgZGlmZmVyZW50IGV4dHJhY3RlZC1rZXkgc2V0OiBob3Qt aW5kZXhlZC4KK1VQREFURSBoaV9naW4gU0VUIHRhZ3MgPSBBUlJBWVsndGFnMScsICd0YWcy JywgJ3RhZzUnXSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoKCk7CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfZ2luJyk7CisKK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX2dpbiBXSEVSRSB0YWdz IEA+IEFSUkFZWyd0YWc1J107CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKworRFJPUCBUQUJM RSBoaV9naW47CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTAuIFBlci1pbmRl eCBIT1QtaW5kZXhlZCBjb3VudGVyczogc2tpcHBlZCB2cyBtYXRjaGVkCistLQorLS0gQSB0 YWJsZSB3aXRoIHR3byBpbmRlcGVuZGVudCBzZWNvbmRhcnkgaW5kZXhlcy4gIEFuIFVQREFU RSB0b3VjaGVzIGEKKy0tIGNvbHVtbiBjb3ZlcmVkIGJ5IG9ubHkgb25lIG9mIHRoZW07IHRo ZSBIT1QtaW5kZXhlZCBwYXRoIG11c3QgaW5zZXJ0CistLSBpbnRvIHRoYXQgb25lIGluZGV4 IGFuZCBza2lwIHRoZSBvdGhlci4gIHBnX3N0YXRfYWxsX2luZGV4ZXMgcmVwb3J0cworLS0g bWF0Y2hlZD4wIG9uIHRoZSB1cGRhdGVkIGluZGV4IGFuZCBza2lwcGVkPjAgb24gdGhlIHVu dG91Y2hlZCBpbmRleC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxF IGhvdGlkeF9wZXJpbmRleCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGEgaW50 LAorICAgIGIgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVgg aG90aWR4X3BlcmluZGV4X2EgT04gaG90aWR4X3BlcmluZGV4KGEpOworQ1JFQVRFIElOREVY IGhvdGlkeF9wZXJpbmRleF9iIE9OIGhvdGlkeF9wZXJpbmRleChiKTsKKworSU5TRVJUIElO VE8gaG90aWR4X3BlcmluZGV4IFZBTFVFUyAoMSwgMTAwLCAyMDApOworCistLSBNb2RpZnkg b25seSBjb2x1bW4gYS4gIEhPVC1pbmRleGVkIGluc2VydHMgaW50byBob3RpZHhfcGVyaW5k ZXhfYSBhbmQKKy0tIHNraXBzIGhvdGlkeF9wZXJpbmRleF9iIChwcmltYXJ5IGtleSBpbmRy ZWxpZCBpcyB0aGUgdGFibGUgaXRzZWxmIGFuZAorLS0gYWxzbyB1bmNoYW5nZWQsIHNvIGl0 IGNvdW50cyBhcyBza2lwcGVkIHRvbykuCitVUERBVEUgaG90aWR4X3BlcmluZGV4IFNFVCBh ID0gMTAxIFdIRVJFIGlkID0gMTsKKworLS0gRm9yY2UgZmx1c2ggb2YgcGVuZGluZyBzdGF0 cyB0byB0aGUgc2hhcmVkIGVudHJ5LgorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCgpOworCitTRUxFQ1QgaW5kZXhyZWxuYW1lLAorICAgICAgIG5fdHVwX2hvdF9pbmRleGVk X3VwZF9tYXRjaGVkIEFTIG1hdGNoZWQsCisgICAgICAgbl90dXBfaG90X2luZGV4ZWRfdXBk X3NraXBwZWQgQVMgc2tpcHBlZAorICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKKyBXSEVS RSByZWxuYW1lID0gJ2hvdGlkeF9wZXJpbmRleCcKKyBPUkRFUiBCWSBpbmRleHJlbG5hbWU7 CisKKy0tIEEgc2Vjb25kIFVQREFURSB0b3VjaGluZyBvbmx5IGIgaW52ZXJ0cyB0aGUgYXNz aWdubWVudC4KK1VQREFURSBob3RpZHhfcGVyaW5kZXggU0VUIGIgPSAyMDEgV0hFUkUgaWQg PSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworCitTRUxFQ1QgaW5k ZXhyZWxuYW1lLAorICAgICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkIEFTIG1h dGNoZWQsCisgICAgICAgbl90dXBfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQgQVMgc2tpcHBl ZAorICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKKyBXSEVSRSByZWxuYW1lID0gJ2hvdGlk eF9wZXJpbmRleCcKKyBPUkRFUiBCWSBpbmRleHJlbG5hbWU7CisKKy0tIEludmFyaWFudDog bWF0Y2hlZCArIHNraXBwZWQgPT0gb3duaW5nIHRhYmxlJ3Mgbl90dXBfaG90X2luZGV4ZWRf dXBkLgorU0VMRUNUIGluZGV4cmVsbmFtZSwKKyAgICAgICBuX3R1cF9ob3RfaW5kZXhlZF91 cGRfbWF0Y2hlZCArIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkIEFTIHRvdGFsLAor ICAgICAgIChTRUxFQ1Qgbl90dXBfaG90X2luZGV4ZWRfdXBkIEZST00gcGdfc3RhdF9hbGxf dGFibGVzCisgICAgICAgICBXSEVSRSByZWxuYW1lID0gJ2hvdGlkeF9wZXJpbmRleCcpIEFT IHRhYmxlX2hvdF9pZHhfdXBkCisgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcworIFdIRVJF IHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JworIE9SREVSIEJZIGluZGV4cmVsbmFtZTsK KworLS0gQm9vbGVhbiBhc3NlcnRpb24gb2YgdGhlIHNhbWUgaW52YXJpYW50LiAgVGhpcyBp cyB0aGUgY2Fub25pY2FsIGZvcm0KKy0tIHJldmlld2VycyBhc2tlZCBmb3I6IGV2ZXJ5IGlu ZGV4IGVudHJ5IGlzIGVpdGhlciBtYXRjaGVkICh0aGUgaW5kZXgKKy0tIGdvdCBhIGZyZXNo IGluc2VydCB0aGlzIFVQREFURSkgb3Igc2tpcHBlZCAoSE9ULWluZGV4ZWQgY29ycmVjdGx5 CistLSBhdm9pZGVkIGFuIGluc2VydCBiZWNhdXNlIHRoZSBpbmRleCdzIGF0dHJzIGRpZCBu b3QgY2hhbmdlKS4gIElmIHRoZQorLS0gdHdvIGNvdW50ZXJzIGRyaWZ0IGFwYXJ0IGZyb20g dGhlIHRhYmxlLWxldmVsIG5fdHVwX2hvdF9pbmRleGVkX3VwZCB3ZQorLS0gaGF2ZSBlaXRo ZXIgbG9zdCBhIHBlci1pbmRleCBpbmNyZW1lbnQgb3IgZG91YmxlLWNvdW50ZWQgb25lLgor U0VMRUNUIGJvb2xfYW5kKChuX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCArIG5fdHVw X2hvdF9pbmRleGVkX3VwZF9za2lwcGVkKSA9CisgICAgICAgICAgICAgICAgKFNFTEVDVCBu X3R1cF9ob3RfaW5kZXhlZF91cGQgRlJPTSBwZ19zdGF0X2FsbF90YWJsZXMKKyAgICAgICAg ICAgICAgICAgIFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JykpCisgICAgICAg ICBBUyBwZXJpbmRleF9pbnZhcmlhbnRfaG9sZHMKKyAgRlJPTSBwZ19zdGF0X2FsbF9pbmRl eGVzCisgV0hFUkUgcmVsbmFtZSA9ICdob3RpZHhfcGVyaW5kZXgnOworCitEUk9QIFRBQkxF IGhvdGlkeF9wZXJpbmRleDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxMS4g TG9uZyBob3QtbG9vcCBVUERBVEUgc3RheXMgY29tcGFjdCBhbmQgSE9ULWluZGV4ZWQKKy0t CistLSBBIGxvbmcgcnVuIG9mIEhPVC1pbmRleGVkIFVQREFURXMgdG8gYSBzaW5nbGUgcm93 IHN0YXlzIGNvbXBhY3Q6IHBydW5lCistLSBjb2xsYXBzZXMgZWFjaCBkZWFkIHZlcnNpb24g dG8gYSByZWRpcmVjdCB0byB0aGUgbGl2ZSB0dXBsZSBhbmQgcmV1c2VzIGl0cworLS0gc2xv dCwgc28gdGhlIGhlYXAgc3RheXMgYm91bmRlZCBhbmQgdGhlIGNoYWluIGRvZXMgbm90IGdy b3cgdW5ib3VuZGVkLgorLS0gRXZlcnkgVVBEQVRFIHRoYXQgY2hhbmdlcyB0aGUgaW5kZXhl ZCBjb2x1bW4gKGFuZCBsZWF2ZXMgYW5vdGhlciBpbmRleCwKKy0tIGhlcmUgdGhlIFBLLCB1 bmNoYW5nZWQpIHRha2VzIHRoZSBIT1QtaW5kZXhlZCBwYXRoLgorLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfY2hhaW5jYXAgKAorICAgIGlkIGludCBQUklN QVJZIEtFWSwKKyAgICBhIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gMTApOworQ1JFQVRF IElOREVYIGhpX2NoYWluY2FwX2FfaWR4IE9OIGhpX2NoYWluY2FwKGEpOworCitJTlNFUlQg SU5UTyBoaV9jaGFpbmNhcCBWQUxVRVMgKDEsIDApOworCitETyAkJAorREVDTEFSRQorICAg IGkgaW50OworQkVHSU4KKyAgICBGT1IgaSBJTiAxIC4uIDIwMCBMT09QCisgICAgICAgIFVQ REFURSBoaV9jaGFpbmNhcCBTRVQgYSA9IGkgV0hFUkUgaWQgPSAxOworICAgIEVORCBMT09Q OworRU5EICQkOworCistLSBBZnRlciAyMDAgVVBEQVRFcyB0aGUgcm93J3MgdmFsdWUgaXMg MjAwLgorU0VMRUNUIGEgRlJPTSBoaV9jaGFpbmNhcCBXSEVSRSBpZCA9IDE7CisKKy0tIEV2 ZXJ5IFVQREFURSB0b29rIHRoZSBIT1QtaW5kZXhlZCBwYXRoICh0aGUgUEsgaW5kZXggaXMg dW5jaGFuZ2VkLCBzbyBpdCBpcworLS0gc2tpcHBlZCksIHNvIG5fdHVwX2hvdF9pbmRleGVk X3VwZCBhZHZhbmNlZC4KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NF TEVDVCBob3RfaWR4ID4gMCBBUyBob3RfaW5kZXhlZF9maXJlZAorICBGUk9NIGdldF9oaV9j b3VudCgnaGlfY2hhaW5jYXAnKTsKKworLS0gVGhlIGhlYXAgc3RheWVkIGNvbXBhY3Q6IHBy dW5lK2NvbGxhcHNlIHJlY2xhaW1lZCB0aGUgZGVhZCB2ZXJzaW9ucywgc28gdGhlCistLSBz aW5nbGUgbGl2ZSByb3cgc3RheXMgd2l0aGluIGEgY291cGxlIG9mIHBhZ2VzLiAgcGdfcmVs YXRpb25fc2l6ZSByZWZsZWN0cworLS0gdGhlIHRhYmxlJ3MgYWN0dWFsIGN1cnJlbnQgc2l6 ZSByZWdhcmRsZXNzIG9mIHZhY3V1bS9hbmFseXplIHN0YXRzLCB1bmxpa2UKKy0tIHBnX2Ns YXNzLnJlbHBhZ2VzICh3aGljaCBpcyBvbmx5IHVwZGF0ZWQgYnkgVkFDVVVNL0FOQUxZWkUg YW5kIHdvdWxkIGJlCistLSB0cml2aWFsbHkgPD0gMSBvbiB0aGlzIG5ldmVyLXZhY3V1bWVk IHRhYmxlIGV2ZW4gaWYgcHJ1bmluZyBoYWQgZmFpbGVkIGFuZAorLS0gdGhlIGhlYXAgaGFk IGJhbGxvb25lZCkuCitTRUxFQ1QgcGdfcmVsYXRpb25fc2l6ZSgnaGlfY2hhaW5jYXAnKSA8 PSA4MTkyICogMiBBUyBoZWFwX3N0YXllZF9jb21wYWN0OworCitEUk9QIFRBQkxFIGhpX2No YWluY2FwOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDEyLiBBIEhPVC1pbmRl eGVkIGNoYWluIGZvcm1zIGFuZCByZWFkcyB0aHJvdWdoIGl0IHN0YXkgY29ycmVjdAorLS0K Ky0tIFNldmVyYWwgSE9ULWluZGV4ZWQgdXBkYXRlcyBvZiB0aGUgc2FtZSBsaXZlIHJvdyBi dWlsZCBhIG11bHRpLWhvcCBjaGFpbiBvZgorLS0gcHJlc2VydmVkIEhPVC1pbmRleGVkIG1l bWJlcnMsIGVhY2ggY2FycnlpbmcgaXRzIG93biBjcm9zc2VkLWF0dHJpYnV0ZQorLS0gYml0 bWFwLiAgV2UgYXNzZXJ0IG9ubHkgaG9yaXpvbi1pbmRlcGVuZGVudCBmYWN0czogYXQgbGVh c3Qgb25lIEhPVC1pbmRleGVkCistLSBtZW1iZXIgaXMgcHJlc2VudCAodGhlIGxpdmUgdmVy c2lvbiBhbHdheXMgaXMsIGFuZCBjYW5ub3QgYmUgcHJ1bmVkKSwgYSBzY2FuCistLSB0aHJv dWdoIHRoZSBzZWNvbmRhcnkgaW5kZXggcmV0dXJucyB0aGUgb25lIGxpdmUgcm93IGJ5IGl0 cyBjdXJyZW50IGtleSwgYW5kCistLSBub25lIG9mIHRoZSBzdXBlcnNlZGVkIGtleXMgc3Vy ZmFjZSAodGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBmaWx0ZXJzCistLSB0aGVpciBz dGFsZSBsZWF2ZXMpLgorLS0KKy0tIFdlIGRlbGliZXJhdGVseSBkbyBOT1QgYXNzZXJ0IGFu IGV4YWN0IG1lbWJlciBjb3VudCBvciBhbnkgcG9zdC1WQUNVVU0KKy0tIGNvbGxhcHNlL3Jl Y2xhaW0gc3RhdGU6IG9wcG9ydHVuaXN0aWMgSE9UIHBydW5pbmcgYW5kIFZBQ1VVTSBjb2xs YXBzZSBhcmUKKy0tIGJvdGggZ2F0ZWQgb24gdGhlIHN1cGVyc2VkZWQgdmVyc2lvbnMgZmFs bGluZyBiZWxvdyB0aGUgZ2xvYmFsIHhtaW4gaG9yaXpvbiwKKy0tIHdoaWNoIGEgc25hcHNo b3QgaGVsZCBlbHNld2hlcmUgaW4gdGhlIHJ1bm5pbmcgcmVncmVzc2lvbiBjbHVzdGVyIGNh biBwaW4KKy0tIGJhY2sgaW5kZWZpbml0ZWx5IC0tIHNvIHRoZSBwaHlzaWNhbCBsYXlvdXQg KG5faG90X2luZGV4ZWQncyBleGFjdCB2YWx1ZSwKKy0tIHdoZXRoZXIgdGhlIGNoYWluIGhh cyBjb2xsYXBzZWQgdG8gYW4gTFBfUkVESVJFQ1QpIGlzIG5vdCBkZXRlcm1pbmlzdGljCist LSBoZXJlLiAgUHJ1bmUvY29sbGFwc2UgYW5kIHNuYXBzaG90LWdhdGVkIHN0YWxlLWxlYWYg cmVjbGFpbSBhcmUgY292ZXJlZAorLS0gZGV0ZXJtaW5pc3RpY2FsbHkgYnkgdGhlIGhvdF9p bmRleGVkX2FkdmVyc2FyaWFsIGlzb2xhdGlvbiBzcGVjLCB3aGVyZQorLS0gdHJhbnNhY3Rp b24gb3JkZXJpbmcgLS0gaGVuY2UgdGhlIGhvcml6b24gLS0gaXMgY29udHJvbGxlZCBhbmQg dGhlIGNvbGxhcHNlCistLSBpcyB2YWxpZGF0ZWQgYnkgcmVhZGVyIGNvbnNpc3RlbmN5IGFj cm9zcyBpdCAocGVybXV0YXRpb24gNykuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NS RUFURSBUQUJMRSBoaV9yZWNsYWltICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAg YSBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwLCBhdXRvdmFjdXVtX2VuYWJsZWQgPSBm YWxzZSk7CitDUkVBVEUgSU5ERVggaGlfcmVjbGFpbV9hX2lkeCBPTiBoaV9yZWNsYWltKGEp OworCitJTlNFUlQgSU5UTyBoaV9yZWNsYWltIFZBTFVFUyAoMSwgMTAwKTsKKy0tIEJ1aWxk IGEgbXVsdGktaG9wIGNoYWluIHZpYSBzZXZlcmFsIEhPVC1pbmRleGVkIHVwZGF0ZXM7IHRo ZSByb3cgc3RheXMgbGl2ZS4KK1VQREFURSBoaV9yZWNsYWltIFNFVCBhID0gMjAwIFdIRVJF IGlkID0gMTsKK1VQREFURSBoaV9yZWNsYWltIFNFVCBhID0gMzAwIFdIRVJFIGlkID0gMTsK K1VQREFURSBoaV9yZWNsYWltIFNFVCBhID0gNDAwIFdIRVJFIGlkID0gMTsKKworLS0gVGhl IGxpdmUgdmVyc2lvbiBpcyBhIEhPVC1pbmRleGVkIG1lbWJlciBhbmQgY2Fubm90IGJlIHBy dW5lZCwgc28gdGhpcyBob2xkcworLS0gcmVnYXJkbGVzcyBvZiBob3cgbXVjaCBvcHBvcnR1 bmlzdGljIHBydW5pbmcgaGFzIGhhcHBlbmVkLgorU0VMRUNUIG5faG90X2luZGV4ZWQgPj0g MSBBUyBob3RfaW5kZXhlZF9tZW1iZXJfcHJlc2VudAorICBGUk9NIHBnX3JlbGF0aW9uX2hv dF9pbmRleGVkX3N0YXRzKCdoaV9yZWNsYWltJyk7CisKKy0tIFRoZSBsaXZlIHJvdyByZXNv bHZlcyB0aHJvdWdoIHRoZSBzZWNvbmRhcnkgaW5kZXggYnkgaXRzIGN1cnJlbnQga2V5LCBh bmQKKy0tIG5vbmUgb2YgdGhlIHN1cGVyc2VkZWQga2V5cyBzdXJmYWNlIHRocm91Z2ggdGhl aXIgc3RhbGUgbGVhdmVzLgorU0VMRUNUIGlkLCBhIEZST00gaGlfcmVjbGFpbSBXSEVSRSBh ID0gNDAwOworU0VMRUNUIGNvdW50KCopID0gMCBBUyBub19zdGFsZV9rZXlfc3VyZmFjZXMK KyAgRlJPTSBoaV9yZWNsYWltIFdIRVJFIGEgSU4gKDEwMCwgMjAwLCAzMDApOworCitEUk9Q IFRBQkxFIGhpX3JlY2xhaW07CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTMu IFBhZ2Ugd2l0aCBhIHByZXNlcnZlZCBIT1QtaW5kZXhlZCBtZW1iZXIgaXMgbmV2ZXIgbWFy a2VkIGFsbC12aXNpYmxlCistLQorLS0gcHJ1bmVoZWFwIGRlbGliZXJhdGVseSBsZWF2ZXMg UERfQUxMX1ZJU0lCTEUgY2xlYXIgb24gYW55IHBhZ2UgdGhhdCBzdGlsbAorLS0gY2Fycmll cyBhIHByZXNlcnZlZCBIT1QtaW5kZXhlZCBtZW1iZXI6IGFuIGluZGV4LW9ubHkgc2NhbiBt dXN0IGhlYXAtZmV0Y2gKKy0tIHRocm91Z2ggdGhlIGNoYWluIHNvIHRoZSByZWFkLXNpZGUg Y3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGNhbiBmaWx0ZXIgc3RhbGUgYnRyZWUKKy0tIGVu dHJpZXMuCistLQorLS0gV2UgZm9yY2UgdGhlIGZyZWV6ZSBwYXRoIHdpdGggVkFDVVVNIChG UkVFWkUsIERJU0FCTEVfUEFHRV9TS0lQUElORykgYW5kCistLSB0aGVuIHJlYWQgcGRfZmxh Z3MgdmlhIHBhZ2VpbnNwZWN0LnBhZ2VfaGVhZGVyLiAgVGhlIHBhZ2UgbXVzdCBzdGlsbCBj YXJyeQorLS0gYSBIT1QtaW5kZXhlZCBtZW1iZXIgKG5faG90X2luZGV4ZWQgPiAwKSBBTkQg bXVzdCBub3QgaGF2ZSBQRF9BTExfVklTSUJMRQorLS0gKDB4MDAwNCkuCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV92bSAoCisgICAgaWQgaW50IFBSSU1B UlkgS0VZLAorICAgIGEgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCwgYXV0b3ZhY3V1 bV9lbmFibGVkID0gZmFsc2UpOworQ1JFQVRFIElOREVYIGhpX3ZtX2FfaWR4IE9OIGhpX3Zt KGEpOworCitJTlNFUlQgSU5UTyBoaV92bSBWQUxVRVMgKDEsIDEpOworLS0gVHdvIEhPVC1p bmRleGVkIHVwZGF0ZXMgbGVhdmUgYSBtdWx0aS1ob3AgY2hhaW4sIHNvIGEgcHJlc2VydmVk IEhPVC1pbmRleGVkCistLSBtZW1iZXIgcmVtYWlucyBvbiB0aGUgcGFnZSBhZnRlciBwcnVu ZSwgd2hpY2ggaXMgd2hhdCB0aGlzIHRlc3QgbmVlZHMuCitVUERBVEUgaGlfdm0gU0VUIGEg PSAyIFdIRVJFIGlkID0gMTsKK1VQREFURSBoaV92bSBTRVQgYSA9IDMgV0hFUkUgaWQgPSAx OworCistLSBGb3JjZSB0aGUgYWxsLXZpc2libGUgYml0IGRlY2lzaW9uOiBWQUNVVU0gd2l0 aCBESVNBQkxFX1BBR0VfU0tJUFBJTkcKKy0tIGNvbnNpZGVycyBldmVyeSBwYWdlOyBGUkVF WkUgcHVzaGVzIGhpbnQgYml0cyBoYXJkLiAgQWZ0ZXIgdGhpcywgYW55CistLSBwYWdlIGJl YXJpbmcgYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyIG11c3Qgc3RpbGwgcmVwb3J0 IGFsbF92aXNpYmxlID0gMC4KK1ZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BBR0VfU0tJUFBJ TkcpIGhpX3ZtOworCitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCA+PSAxIEFTIGhvdF9pbmRleGVk X3ByZXNlbnQKKyAgRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfdm0n KTsKKworLS0gUERfQUxMX1ZJU0lCTEUgPSAweDAwMDQuICBNdXN0IGJlIDAgb24gYSBwYWdl IHdpdGggYSBwcmVzZXJ2ZWQgbWVtYmVyLgorU0VMRUNUIChmbGFncyAmIDQpID0gMCBBUyBu b3RfbWFya2VkX2FsbF92aXNpYmxlCisgIEZST00gcGFnZV9oZWFkZXIoZ2V0X3Jhd19wYWdl KCdoaV92bScsIDApKTsKKworRFJPUCBUQUJMRSBoaV92bTsKKworLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSAxNC4gQ3ljbGUta2V5IGRlZHVwOiBjb2x1bW4gcmVuYW1lIGEgLT4g YiAtPiBhIHN0YXlzIGNvcnJlY3QKKy0tCistLSBBIHJlbmFtZSBkb2VzIG5vdCByZXdyaXRl IGhlYXAgb3IgaW5kZXggZW50cmllczsgaXQgb25seSB1cGRhdGVzIHRoZQorLS0gY2F0YWxv Zy4gIFRoZSByZWxjYWNoZSBpbnZhbGlkYXRpb24gbXVzdCB0cmlnZ2VyIGEgZnJlc2ggYXR0 cmlidXRlCistLSBiaXRtYXAgYW5kIHRoZSBIT1QtaW5kZXhlZCBwcmVkaWNhdGUgbXVzdCBj b21wYXJlIGF0dHJpYnV0ZSAqbnVtYmVycyosCistLSBub3QgYXR0cmlidXRlICpuYW1lcyou ICBBZnRlciB0d28gcmVuYW1lcyB0aGF0IG5ldCB0byBpZGVudGl0eSwgZXZlcnkKKy0tIHN1 YnNlcXVlbnQgVVBEQVRFIG11c3QgY29udGludWUgdG8gZHJpdmUgdGhlIEhPVC1pbmRleGVk IHBhdGguCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9jeWNs ZSAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGEgaW50CispIFdJVEggKGZpbGxm YWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfY3ljbGVfYV9pZHggT04gaGlfY3ljbGUo YSk7CisKK0lOU0VSVCBJTlRPIGhpX2N5Y2xlIFZBTFVFUyAoMSwgMTAwKTsKKworLS0gQ3lj bGUgdGhlIGNvbHVtbiBuYW1lIGFuZCBjb25maXJtIGJvdGggaW50ZXJtZWRpYXRlIGZvcm1z IGRyaXZlIEhPVC1pbmRleGVkLgorQUxURVIgVEFCTEUgaGlfY3ljbGUgUkVOQU1FIENPTFVN TiBhIFRPIGI7CitVUERBVEUgaGlfY3ljbGUgU0VUIGIgPSAyMDAgV0hFUkUgaWQgPSAxOwor U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUIGhvdF9pZHggPiAw IEFTIGhvdF9pbmRleGVkX2FmdGVyX2ZpcnN0X3JlbmFtZQorICBGUk9NIGdldF9oaV9jb3Vu dCgnaGlfY3ljbGUnKTsKKworQUxURVIgVEFCTEUgaGlfY3ljbGUgUkVOQU1FIENPTFVNTiBi IFRPIGE7CitVUERBVEUgaGlfY3ljbGUgU0VUIGEgPSAzMDAgV0hFUkUgaWQgPSAxOworLS0g TG9va3VwIHZpYSB0aGUgaW5kZXggcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSwgbm90IGFu eSBvZiB0aGUKKy0tIHByZS1yZW5hbWUgdmFsdWVzLgorU0VUIGVuYWJsZV9zZXFzY2FuID0g b2ZmOworU0VMRUNUIGlkLCBhIEZST00gaGlfY3ljbGUgV0hFUkUgYSA9IDMwMDsKK1NFTEVD VCBpZCBGUk9NIGhpX2N5Y2xlIFdIRVJFIGEgPSAxMDA7CitTRUxFQ1QgaWQgRlJPTSBoaV9j eWNsZSBXSEVSRSBhID0gMjAwOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFC TEUgaGlfY3ljbGU7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTUuIFN1bW1h cml6aW5nLW9ubHkgY29sdW1uIFVQREFURSBwcm9kdWNlcyBDTEFTU0lDLCBub3QgSU5ERVhF RAorLS0KKy0tIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUgcmV0dXJucyBIRUFQX0hFQVBfT05M WV9VUERBVEUgd2hlbiBldmVyeQorLS0gbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGUgaXMg Y292ZXJlZCBvbmx5IGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMuCistLSBBIEJSSU4tb25seSBj b2x1bW4gaXMgdGhlIGNhbm9uaWNhbCBjYXNlOiB0aGUgQlJJTiBpbmRleCBnZXRzIGEKKy0t IG5ldyBzdW1tYXJ5IGVudHJ5IHZpYSBhbWluc2VydCwgYnV0IG5vIHBlci11cGRhdGUgYnRy ZWUgZW50cnkgaXMKKy0tIG5lZWRlZCBhbmQgSE9ULWluZGV4ZWQgZG9lcyBub3QgZmlyZS4g IFRoZSBzaWduYWwgaXMKKy0tIG5fdHVwX2hvdF91cGQgPiAwIHdpdGggbl90dXBfaG90X2lu ZGV4ZWRfdXBkIHVuY2hhbmdlZC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRF IFRBQkxFIGhpX2JyaW4gKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBiY29sIGlu dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2JyaW5faWR4 IE9OIGhpX2JyaW4gVVNJTkcgYnJpbihiY29sKTsKKworSU5TRVJUIElOVE8gaGlfYnJpbiBW QUxVRVMgKDEsIDEwMCk7CisKKy0tIENhcHR1cmUgdGhlIEhPVC1pbmRleGVkIGNvdW50ZXIg YmVmb3JlLCBkcml2ZSBhIEJSSU4tb25seSB1cGRhdGUsCistLSBhbmQgYXNzZXJ0IHRoYXQg Y2xhc3NpYyBIT1QgYWR2YW5jZWQgd2hpbGUgSE9ULWluZGV4ZWQgZGlkIG5vdC4KK1NFTEVD VCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCBob3RfaWR4IEFTIGhvdF9p ZHhfYmVmb3JlIEZST00gZ2V0X2hpX2NvdW50KCdoaV9icmluJykgXGdzZXQKK1VQREFURSBo aV9icmluIFNFVCBiY29sID0gMjAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAoaG90IC0gMCkgPiAwIEFTIGNsYXNzaWNfaG90 X2ZpcmVkLAorICAgICAgIGhvdF9pZHggPSA6aG90X2lkeF9iZWZvcmUgQVMgaG90X2luZGV4 ZWRfZGlkX25vdF9maXJlCisgIEZST00gZ2V0X2hpX2NvdW50KCdoaV9icmluJyk7CisKKy0t IFRoZSBCUklOIGluZGV4IHNlZXMgdGhlIG5ldyB2YWx1ZSB2aWEgYW1pbnNlcnQuCitTRUxF Q1QgYmNvbCBGUk9NIGhpX2JyaW4gV0hFUkUgaWQgPSAxOworCitEUk9QIFRBQkxFIGhpX2Jy aW47CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTYuIFVOSVFVRSBpbmRleCBv biBhIHR5cGUgd2hlcmUgaW1hZ2UgZXF1YWxpdHkgIT0gb3BlcmF0b3IgZXF1YWxpdHkKKy0t CistLSBudW1lcmljIDEuMCBhbmQgMS4wMCBhcmUgZXF1YWwgdW5kZXIgdGhlIGJ0cmVlIG9w Y2xhc3MgYnV0IGhhdmUKKy0tIGRpZmZlcmVudCBvbi1kaXNrIGltYWdlcy4gIEEgSE9ULWlu ZGV4ZWQgdXBkYXRlIDEuMCAtPiAxLjAwIGluc2VydHMgYQorLS0gZnJlc2ggbGVhZiBjYXJy eWluZyB0aGUgbGl2ZSBpbWFnZSBhbmQgbGVhdmVzIGEgc3RhbGUgbGVhZiBmb3IgMS4wCist LSAodGhlIGhvcCdzIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBtYXJrcyBrIGNoYW5nZWQsIHNp bmNlIG1vZGlmaWVkLWNvbHVtbgorLS0gZGV0ZWN0aW9uIGlzIGltYWdlLWJhc2VkKS4gIEEg bGF0ZXIgSU5TRVJUIG9mIGEgdmFsdWUgZXF1YWwgdW5kZXIgdGhlCistLSBvcGNsYXNzIG11 c3Qgc3RpbGwgYmUgZGV0ZWN0ZWQgYXMgYSBkdXBsaWNhdGU6IHRoZSB1bmlxdWUgY2hlY2sg cmVhY2hlcworLS0gdGhlIGxpdmUgdHVwbGUgdGhyb3VnaCB0aGUgZnJlc2ggbGVhZiwgd2hp Y2ggcG9pbnRzIGRpcmVjdGx5IGF0IGl0IChubyBob3AKKy0tIGFmdGVyIGl0LCBzbyB0aGUg b3ZlcmxhcCBpcyBlbXB0eSBhbmQgdGhlIGxlYWYgaXMgYSBnZW51aW5lIGNvbmZsaWN0KTsg dGhlCistLSBzdGFsZSAxLjAgbGVhZiBpcyBza2lwcGVkIGJlY2F1c2UgdGhlIGstY2hhbmdp bmcgaG9wIG92ZXJsYXBzIHRoZSB1bmlxdWUKKy0tIGluZGV4J3MgYXR0cmlidXRlLgorLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdW51bSAoayBudW1lcmlj IFVOSVFVRSwgaiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVgg aGlfdW51bV9qIE9OIGhpX3VudW0oaik7ICAgICAgICAgICAgIC0tIDJuZCBpbmRleGVkIGF0 dHIsIGtlcHQgZml4ZWQKK0lOU0VSVCBJTlRPIGhpX3VudW0gVkFMVUVTICgxLjAsIDEwMCk7 CitVUERBVEUgaGlfdW51bSBTRVQgayA9IDEuMDAgV0hFUkUgaiA9IDEwMDsgICAgICAgIC0t IEhPVC1pbmRleGVkOiAxLjAgLT4gMS4wMAorU0VMRUNUIG5faG90X2luZGV4ZWQgPiAwIEFT IG1hZGVfaG90X2luZGV4ZWQKKyAgRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0 cygnaGlfdW51bScpOworLS0gQSBudW1lcmljYWxseS1lcXVhbCBpbnNlcnQgbXVzdCBjb25m bGljdCAodGhlIGZyZXNoIGxlYWYgY2F0Y2hlcyBpdCk6CitJTlNFUlQgSU5UTyBoaV91bnVt IFZBTFVFUyAoMS4wLCAxKTsgICAgICAgICAgICAgIC0tIGV4cGVjdCBkdXBsaWNhdGUga2V5 IGVycm9yCistLSBBIGdlbnVpbmVseSBkaWZmZXJlbnQgdmFsdWUgaXMgYWNjZXB0ZWQ6CitJ TlNFUlQgSU5UTyBoaV91bnVtIFZBTFVFUyAoMi4wLCAyKTsKK1NFTEVDVCBrLCBqIEZST00g aGlfdW51bSBPUkRFUiBCWSBqOworRFJPUCBUQUJMRSBoaV91bnVtOworCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKy0tIDE3LiBDUkVBVEUgSU5ERVggYW5kIFJFSU5ERVggb3ZlciBs aXZlIEhPVC1pbmRleGVkIGNoYWlucworLS0KKy0tIEEgZnJlc2hseSBidWlsdCBvciByZWJ1 aWx0IGluZGV4IG11c3QgcmVmbGVjdCBjdXJyZW50IHZhbHVlcywgbmV2ZXIgYQorLS0gc3Rh bGUgY2hhaW4gbWVtYmVyOiB0aGUgYnVpbGQgc2NhbnMgbGl2ZSB0dXBsZXMgb25seSBhbmQg cG9pbnRzIGVhY2gKKy0tIEhPVC1pbmRleGVkIGxpdmUgdHVwbGUncyBlbnRyeSBhdCBpdHMg b3duIFRJRCwgc28gdGhlIG5ldyBlbnRyaWVzIGhhdmUgbm8KKy0tIGhvcCBhZnRlciB0aGVt IGFuZCB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGtlZXBzIHRoZW0uCistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9yZWluZGV4IChpZCBpbnQgUFJJ TUFSWSBLRVksIGEgaW50LCBiIGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFU RSBJTkRFWCBoaV9yZWluZGV4X2EgT04gaGlfcmVpbmRleChhKTsKK0lOU0VSVCBJTlRPIGhp X3JlaW5kZXggU0VMRUNUIGcsIGcsIGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNikgZzsK K1VQREFURSBoaV9yZWluZGV4IFNFVCBhID0gYSArIDEwMDsgICAgICAgICAgICAgICAgLS0g SE9ULWluZGV4ZWQgb24gYQorVVBEQVRFIGhpX3JlaW5kZXggU0VUIGEgPSBhICsgMTAwOyAg ICAgICAgICAgICAgICAtLSBhZ2FpbiAtPiBsb25nZXIgY2hhaW5zCitTRUxFQ1Qgbl9ob3Rf aW5kZXhlZCA+IDAgQVMgbWFkZV9ob3RfaW5kZXhlZAorICBGUk9NIHBnX3JlbGF0aW9uX2hv dF9pbmRleGVkX3N0YXRzKCdoaV9yZWluZGV4Jyk7CistLSBCdWlsZCBhIE5FVyBpbmRleCBh bmQgUkVJTkRFWCB0aGUgZXhpc3Rpbmcgb25lIG92ZXIgdGhlIGxpdmUgY2hhaW5zLgorQ1JF QVRFIElOREVYIGhpX3JlaW5kZXhfYiBPTiBoaV9yZWluZGV4KGIpOworUkVJTkRFWCBJTkRF WCBoaV9yZWluZGV4X2E7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQs IGEgRlJPTSBoaV9yZWluZGV4IFdIRVJFIGEgPSAyMDQ7ICAgICAgIC0tIGN1cnJlbnQgdmFs dWUgLT4gaWQgNAorU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmVpbmRleCBXSEVSRSBhID0g NDsgICAgICAtLSBvYnNvbGV0ZSB2YWx1ZSAtPiAwCitTRUxFQ1QgaWQgRlJPTSBoaV9yZWlu ZGV4IFdIRVJFIGIgPSAyOyAgICAgICAgICAgIC0tIHZpYSBmcmVzaGx5IGJ1aWx0IGluZGV4 IC0+IDIKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9yZWluZGV4Owor CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDE4LiBEUk9QIGV2ZXJ5IGluZGV4IG92 ZXIgbGl2ZSBIT1QtaW5kZXhlZCBjaGFpbnMsIHRoZW4gVkFDVVVNCistLQorLS0gQWZ0ZXIg YWxsIGluZGV4ZXMgYXJlIGRyb3BwZWQsIGhlYXAgcGFnZXMgbWF5IHN0aWxsIGNhcnJ5IHBy ZXNlcnZlZAorLS0gSE9ULWluZGV4ZWQgbWVtYmVycyBsZWZ0IGJ5IGVhcmxpZXIgdXBkYXRl cy4gIFZBQ1VVTSBvZiBzdWNoIGEgbm8taW5kZXgKKy0tIHJlbGF0aW9uIG11c3QgY29tcGxl dGUgd2l0aG91dCBlcnJvciwgYW5kIHJlYWRzIG11c3Qgc3RheSBjb3JyZWN0IHZpYSB0aGUK Ky0tIHJlZGlyZWN0IGZvcndhcmRlcnMuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NS RUFURSBUQUJMRSBoaV9kcm9waWR4IChpZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50KSBXSVRI IChmaWxsZmFjdG9yID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFU RSBJTkRFWCBoaV9kcm9waWR4X2EgT04gaGlfZHJvcGlkeChhKTsKK0lOU0VSVCBJTlRPIGhp X2Ryb3BpZHggU0VMRUNUIGcsIGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNikgZzsKK1VQ REFURSBoaV9kcm9waWR4IFNFVCBhID0gYSArIDEwMDsgICAgICAgICAgICAgICAgLS0gSE9U LWluZGV4ZWQgb24gYQorVVBEQVRFIGhpX2Ryb3BpZHggU0VUIGEgPSBhICsgMTAwOyAgICAg ICAgICAgICAgICAtLSBhZ2FpbiAtPiBsb25nZXIgY2hhaW5zCitTRUxFQ1Qgbl9ob3RfaW5k ZXhlZCA+IDAgQVMgbWFkZV9ob3RfaW5kZXhlZAorICBGUk9NIHBnX3JlbGF0aW9uX2hvdF9p bmRleGVkX3N0YXRzKCdoaV9kcm9waWR4Jyk7CistLSBEcm9wIGV2ZXJ5IGluZGV4LCBsZWF2 aW5nIHByZXNlcnZlZCBIT1QtaW5kZXhlZCBtZW1iZXJzIHdpdGggbm8gaW5kZXggdG8gc3dl ZXAuCitEUk9QIElOREVYIGhpX2Ryb3BpZHhfYTsKK0FMVEVSIFRBQkxFIGhpX2Ryb3BpZHgg RFJPUCBDT05TVFJBSU5UIGhpX2Ryb3BpZHhfcGtleTsKKy0tIE11c3Qgbm90IGNyYXNoIG9u IHRoZSBuby1pbmRleCBwYXRoOyB0d28gcGFzc2VzIGV4ZXJjaXNlIHRoZSBzZWNvbmQtcGFz cworLS0gcmVjbGFpbSBndWFyZCBhcyB3ZWxsLgorVkFDVVVNIGhpX2Ryb3BpZHg7CitWQUNV VU0gaGlfZHJvcGlkeDsKKy0tIFJlYWRzIHJlbWFpbiBjb3JyZWN0IGFmdGVyIHRoZSBpbmRl eGVzIGFyZSBnb25lLgorU0VMRUNUIGlkLCBhIEZST00gaGlfZHJvcGlkeCBPUkRFUiBCWSBp ZDsKK0RST1AgVEFCTEUgaGlfZHJvcGlkeDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistLSAxOS4gUmUtY29sbGFwc2Ugb2YgYSBkYXRhLXJlZGlyZWN0IGNoYWluIGFjcm9zcyBw YXJ0aWFsIFZBQ1VVTXMKKy0tCistLSBBIGNoYWluIHRoYXQgY29sbGFwc2VzIHRvIGEgSE9U LWluZGV4ZWQgZGF0YSByZWRpcmVjdCwgaXMgdmFjdXVtZWQgd2l0aAorLS0gSU5ERVhfQ0xF QU5VUCBvZmYgKHNvIHRoZSBzdGFsZSBsZWF2ZXMgYW5kIHRoZSByZWRpcmVjdCBzdXJ2aXZl KSwgdGhlbgorLS0gcmVjZWl2ZXMgZnVydGhlciBIT1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQg cmUtY29sbGFwc2UgdGhlIGNoYWluIGFuZAorLS0gcmUtcG9pbnQgdGhlIHJlZGlyZWN0IGF0 IGEgbmV3IGxpdmUgdHVwbGUsIG11c3Qgbm90IGxlYXZlIHRoZSByZWRpcmVjdAorLS0gZGFu Z2xpbmcuICBBIHN1YnNlcXVlbnQgZnVsbCBWQUNVVU0gbXVzdCBjb21wbGV0ZSB3aXRob3V0 IGVycm9yLCBsZWF2ZSB0aGUKKy0tIGhlYXAgY29uc2lzdGVudCAodmVyaWZ5X2hlYXBhbSBy ZXBvcnRzIG5vdGhpbmcpLCBhbmQgcmVhZHMgbXVzdCBzdGF5CistLSBjb3JyZWN0LiAgKFJl Z3Jlc3Npb246IGFuIGVhcmxpZXIgcmV2aXNpb24gY3Jhc2hlZCByZWNsYWltaW5nIGEgbWlk LWNoYWluCistLSBtZW1iZXIgd2hpbGUgYSBkYXRhIHJlZGlyZWN0IHN0aWxsIHBvaW50ZWQg cGFzdCBpdC4pCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBFWFRFTlNJT04g SUYgTk9UIEVYSVNUUyBhbWNoZWNrOworQ1JFQVRFIFRBQkxFIGhpX3JlY29sbGFwc2UgKGlk IGludCBQUklNQVJZIEtFWSwgYSBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCwgYXV0b3Zh Y3V1bV9lbmFibGVkID0gZmFsc2UpOworQ1JFQVRFIElOREVYIGhpX3JlY29sbGFwc2VfYSBP TiBoaV9yZWNvbGxhcHNlKGEpOworSU5TRVJUIElOVE8gaGlfcmVjb2xsYXBzZSBWQUxVRVMg KDEsIDEpOworLS0gRmlyc3QgY2hhaW46IHR3byBIT1QtaW5kZXhlZCB1cGRhdGVzLCB0aGVu IHBydW5lIHRvIGEgZGF0YSByZWRpcmVjdCB3aGlsZQorLS0gbGVhdmluZyB0aGUgc3RhbGUg YnRyZWUgbGVhdmVzIGluIHBsYWNlIChJTkRFWF9DTEVBTlVQIG9mZikuCitVUERBVEUgaGlf cmVjb2xsYXBzZSBTRVQgYSA9IDIgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX3JlY29sbGFw c2UgU0VUIGEgPSAzIFdIRVJFIGlkID0gMTsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYp IGhpX3JlY29sbGFwc2U7CistLSBSZS1jb2xsYXBzZTogbW9yZSBIT1QtaW5kZXhlZCB1cGRh dGVzIGV4dGVuZCB0aGUgY2hhaW4gcGFzdCB0aGUgcmVkaXJlY3QKKy0tIHRhcmdldDsgdGhl IG5leHQgcHJ1bmUgcmUtcG9pbnRzIHRoZSBkYXRhIHJlZGlyZWN0IGF0IHRoZSBuZXcgZmly c3QgbGl2ZQorLS0gdHVwbGUgYW5kIGV4dGVuZHMgaXRzIHVuaW9uLgorVVBEQVRFIGhpX3Jl Y29sbGFwc2UgU0VUIGEgPSA0IFdIRVJFIGlkID0gMTsKK1VQREFURSBoaV9yZWNvbGxhcHNl IFNFVCBhID0gNSBXSEVSRSBpZCA9IDE7CitWQUNVVU0gKElOREVYX0NMRUFOVVAgb2ZmKSBo aV9yZWNvbGxhcHNlOworLS0gRnVsbCB2YWN1dW0gbm93IHJlY2xhaW1zIHRoZSBkZWFkIGNo YWluOyB0aGUgcmUtcG9pbnRlZCByZWRpcmVjdCBtdXN0IG5vdAorLS0gZGFuZ2xlLiAgVHdv IHBhc3NlcyBhbHNvIGV4ZXJjaXNlIHRoZSByZWRpcmVjdCByZS1wb2ludCBzZWNvbmQgcGFz cy4KK1ZBQ1VVTSBoaV9yZWNvbGxhcHNlOworVkFDVVVNIGhpX3JlY29sbGFwc2U7CistLSBI ZWFwIG11c3QgYmUgc3RydWN0dXJhbGx5IGNvbnNpc3RlbnQgKG5vIHJvd3MgPT0gbm8gY29y cnVwdGlvbikuCitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3JlY29sbGFwc2Un KTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSBGUk9NIGhpX3Jl Y29sbGFwc2UgV0hFUkUgYSA9IDU7ICAgICAtLSBjdXJyZW50IHZhbHVlIC0+IGlkIDEKK1NF TEVDVCBjb3VudCgqKSBGUk9NIGhpX3JlY29sbGFwc2UgV0hFUkUgYSA9IDM7ICAtLSBvYnNv bGV0ZSB2YWx1ZSAtPiAwCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NFTEVDVCBpZCwgYSBG Uk9NIGhpX3JlY29sbGFwc2UgT1JERVIgQlkgaWQ7CitEUk9QIFRBQkxFIGhpX3JlY29sbGFw c2U7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjAuIEluZGV4IGRlbGV0aW9u IG92ZXIgYW4gZW50cnkgdGhhdCBwb2ludHMgYXQgYSBkYXRhLXJlZGlyZWN0IHJvb3QKKy0t CistLSBBIGRhdGEgcmVkaXJlY3QgaXMgYW4gTFBfUkVESVJFQ1QgdGhhdCBjYXJyaWVzIGEg Yml0bWFwLCBzbyBpdCByZXBvcnRzCistLSBscF9sZW4gPiAwIChJdGVtSWRIYXNTdG9yYWdl IHRydWUpIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCBhIG5vcm1hbCB0dXBsZS4KKy0tIGluZGV4 X2RlbGV0ZV9jaGVja19odGlkIG11c3QgdHJlYXQgaXQgYXMgYSByZWRpcmVjdCwgbm90IHJl YWQgaXRzIGJsb2IgYXMgYQorLS0gSGVhcFR1cGxlSGVhZGVyLiAgUmVwcm9kdWNlOiBjb2xs YXBzZSBhIGNoYWluIHJvb3QgdG8gYSBkYXRhIHJlZGlyZWN0IHdoaWxlCistLSBrZWVwaW5n IHRoZSBzdGFsZSBsZWFmIHRoYXQgcG9pbnRzIGF0IGl0IChJTkRFWF9DTEVBTlVQIG9mZiks IHRoZW4gaW5zZXJ0CistLSBtYW55IGR1cGxpY2F0ZXMgb2YgdGhlIHN0YWxlIGtleSBzbyBi dHJlZSBib3R0b20tdXAgZGVsZXRpb24gcnVucworLS0gaGVhcF9pbmRleF9kZWxldGVfdHVw bGVzIG92ZXIgdGhhdCBzdGFsZSBlbnRyeS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor Q1JFQVRFIFRBQkxFIGhpX2lkZGVsIChpZCBpbnQsIGEgaW50KSBXSVRIIChmaWxsZmFjdG9y ID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV9p ZGRlbF9hIE9OIGhpX2lkZGVsKGEpOworSU5TRVJUIElOVE8gaGlfaWRkZWwgVkFMVUVTICgx LCAxKTsKK1VQREFURSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdIRVJFIGlkID0gMTsgICAg ICAgICAgLS0gSE9ULWluZGV4ZWQKK1VQREFURSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdI RVJFIGlkID0gMTsgICAgICAgICAgLS0gbXVsdGktaG9wIGNoYWluCitWQUNVVU0gKElOREVY X0NMRUFOVVAgb2ZmKSBoaV9pZGRlbDsgICAgICAgICAgICAgICAgIC0tIHJvb3QgLT4gZGF0 YSByZWRpcmVjdCwga2VlcCBzdGFsZSBhPTEgbGVhZgorLS0gTWFueSBkdXBsaWNhdGVzIG9m IHRoZSBzdGFsZSBrZXkgZmlsbCB0aGUgbGVhZiBhbmQgdHJpZ2dlciBib3R0b20tdXAKKy0t IGRlbGV0aW9uLCB3aGljaCBmZWVkcyB0aGUgc3RhbGUgYT0xIGVudHJ5IChodGlkIC0+IHRo ZSBkYXRhLXJlZGlyZWN0IHJvb3QpCistLSB0byBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMu ICBNdXN0IG5vdCBjcmFzaCBvciBtaXNyZWFkIHRoZSBibG9iLgorSU5TRVJUIElOVE8gaGlf aWRkZWwgU0VMRUNUIGcsIDEgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMiwgMzAwMCkgZzsKK1ZB Q1VVTSBoaV9pZGRlbDsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfaWRkZWwn KTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSBGUk9NIGhpX2lk ZGVsIFdIRVJFIGlkID0gMTsgICAgICAgICAgICAgLS0gY3VycmVudCB2YWx1ZSAtPiBhID0g MworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX2lkZGVsOworCistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIxLiBBIGNoYW5nZSB0byBhIGNvbHVtbiBjb3Zl cmVkIGJ5IGEgbm9uLWJ0cmVlIGluZGV4IEFNIGlzIEhPVC1pbmRleGVkCistLQorLS0gQSBI T1QtaW5kZXhlZCB1cGRhdGUgbGVhdmVzIGEgc3RhbGUgcHJlLXVwZGF0ZSBsZWFmIHRoYXQg dGhlIHJlYWQgc2lkZQorLS0gZmlsdGVycyB2aWEgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJp dG1hcCwgd2hpY2ggaXMgYWNjZXNzLW1ldGhvZCBhZ25vc3RpYy4KKy0tIEEgY29sdW1uIGNv dmVyZWQgYnkgYSBub24tYnRyZWUgaW5kZXggKGhlcmUgYSBHaVNUIGluZGV4IG9uIGEgcG9p bnQgY29sdW1uKQorLS0gaXMgdGhlcmVmb3JlIEhPVC1pbmRleGVkIGxpa2UgYW55IG90aGVy LCBhbmQgdGhlIEdpU1QgaW5kZXggc3RpbGwgcmV0dXJucworLS0gY29ycmVjdCByZXN1bHRz IGFjcm9zcyB0aGUgY2hhaW4uICBBIGNoYW5nZSB0byBhIGJ0cmVlLW9ubHkgY29sdW1uIG9u IHRoZQorLS0gc2FtZSB0YWJsZSBpcyBsaWtld2lzZSBIT1QtaW5kZXhlZC4KKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX25vbmJ0cmVlIChpZCBpbnQgUFJJ TUFSWSBLRVksIHRhZyBpbnQsIHAgcG9pbnQpCisgICAgV0lUSCAoZmlsbGZhY3RvciA9IDEw KTsKK0NSRUFURSBJTkRFWCBoaV9ub25idHJlZV90YWcgT04gaGlfbm9uYnRyZWUgKHRhZyk7 ICAgICAgICAgIC0tIGJ0cmVlIGluZGV4CitDUkVBVEUgSU5ERVggaGlfbm9uYnRyZWVfcCBP TiBoaV9ub25idHJlZSBVU0lORyBnaXN0IChwKTsgICAtLSBHaVNULCBub24tYnRyZWUKK0lO U0VSVCBJTlRPIGhpX25vbmJ0cmVlIFNFTEVDVCBnLCBnLCBwb2ludChnLCBnKQorICAgIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgZzsKKworLS0gQ2hhbmdlIHRoZSBHaVNULWNv dmVyZWQgY29sdW1uIGZpcnN0OiBIT1QtaW5kZXhlZCAoaG90X2lkeCA9IDIwMCkuCitVUERB VEUgaGlfbm9uYnRyZWUgU0VUIHAgPSBwb2ludChwWzBdICsgMTAwMCwgcFsxXSArIDEwMDAp OworU0VMRUNUIGhvdF9pZHggQVMgZ2lzdF9jb2xfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlf Y291bnQoJ2hpX25vbmJ0cmVlJyk7CisKKy0tIFRoZSBHaVNUIGluZGV4IG11c3QgcmV0dXJu IGNvcnJlY3QgcmVzdWx0czogdGhlIG9sZCBwb3NpdGlvbnMgYXJlIGdvbmUgYW5kCistLSBl dmVyeSByb3cgaXMgZm91bmQgYXQgaXRzIG5ldyBwb3NpdGlvbiAobm8gc3RhbGUgbGVhZiBz dXJmYWNlcyBhbiBvbGQga2V5KS4KK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVD VCBjb3VudCgqKSBBUyBhdF9vbGRfcG9zaXRpb25zCisgICAgRlJPTSBoaV9ub25idHJlZSBX SEVSRSBwIDxAIGJveChwb2ludCgwLCAwKSwgcG9pbnQoMzAwLCAzMDApKTsKK1NFTEVDVCBj b3VudCgqKSBBUyBhdF9uZXdfcG9zaXRpb25zCisgICAgRlJPTSBoaV9ub25idHJlZSBXSEVS RSBwIDxAIGJveChwb2ludCgxMDAwLCAxMDAwKSwgcG9pbnQoMTMwMCwgMTMwMCkpOworUkVT RVQgZW5hYmxlX3NlcXNjYW47CisKKy0tIENoYW5naW5nIHRoZSBidHJlZS1vbmx5IGNvbHVt biAocCB1bmNoYW5nZWQpIHN0YXlzIEhPVC1pbmRleGVkLgorVVBEQVRFIGhpX25vbmJ0cmVl IFNFVCB0YWcgPSB0YWcgKyAxMDAwOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGJ0cmVlX2Nv bF9pc19ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfbm9uYnRyZWUnKTsKKwor LS0gQSBkaXN0YW5jZS1vcmRlcmVkIChLTk4pIEdpU1Qgc2NhbiB1c2VzIHRoZSByZW9yZGVy IHNjYW4gcGF0aAorLS0gKEluZGV4TmV4dFdpdGhSZW9yZGVyKSwgYSBkaWZmZXJlbnQgY29k ZSBwYXRoIGZyb20gdGhlIHJhbmdlIHNjYW4gYWJvdmUuCistLSBJdCBtdXN0IGFsc28gZHJv cCBzdGFsZSBIT1QtaW5kZXhlZCBsZWF2ZXM6IGFmdGVyIHRoZSBwLXVwZGF0ZSB0aGUgb25s eQorLS0gbGl2ZSBwb3NpdGlvbnMgYXJlIHRoZSBuZXcgb25lcywgc28gdGhlIG5lYXJlc3Qg bmVpZ2hib3VycyBvZiB0aGUgbmV3CistLSBvcmlnaW4gbXVzdCBhbGwgYmUgYXQgdGhlIG5l dyBwb3NpdGlvbnMgYW5kIG5vbmUgYXQgdGhlIG9sZCBvbmVzLgorU0VUIGVuYWJsZV9zZXFz Y2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEFTIGtubl9hbGxfYXRfbmV3X3Bvc2l0aW9u cyBGUk9NICgKKyAgICBTRUxFQ1QgcCBGUk9NIGhpX25vbmJ0cmVlIE9SREVSIEJZIHAgPC0+ IHBvaW50KDEwMDAsIDEwMDApIExJTUlUIDIwMAorKSBzIFdIRVJFIHAgPEAgYm94KHBvaW50 KDEwMDAsIDEwMDApLCBwb2ludCgxMzAwLCAxMzAwKSk7CitTRUxFQ1QgY291bnQoKikgQVMg a25uX25vbmVfYXRfb2xkX3Bvc2l0aW9ucyBGUk9NICgKKyAgICBTRUxFQ1QgcCBGUk9NIGhp X25vbmJ0cmVlIE9SREVSIEJZIHAgPC0+IHBvaW50KDAsIDApIExJTUlUIDIwMAorKSBzIFdI RVJFIHAgPEAgYm94KHBvaW50KDAsIDApLCBwb2ludCgzMDAsIDMwMCkpOworUkVTRVQgZW5h YmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX25vbmJ0cmVlOworCistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKy0tIDIyLiBBQkEgb24gYSB1bmlxdWUga2V5IGFjcm9zcyB0d28gZGlz dGluY3QgbGl2ZSByb3dzOiBhIGtleSBjeWNsZWQgYXdheQorLS0gYW5kIGJhY2sgbXVzdCBz dGlsbCBjb2xsaWRlIHdpdGggYW5vdGhlciByb3cgdGhhdCBob2xkcyBpdC4gIFRoZSBzdGFs ZQorLS0gbGVhdmVzIGxlZnQgYnkgdGhlIGN5Y2xlIG11c3Qgbm90IGxldCBhIGdlbnVpbmUg ZHVwbGljYXRlIHNsaXAgcGFzdCB0aGUKKy0tIHVuaXF1ZW5lc3MgY2hlY2sgLS0gdGhlIHJl YWQtc2lkZSByZWNoZWNrIGNvbXBhcmVzIHRoZSBsaXZlIGtleSwgbm90IGp1c3QKKy0tIGEg Y2hhbmdlZC1hdHRyaWJ1dGUgYml0bWFwLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitD UkVBVEUgVEFCTEUgaGlfYWJhIChrIGludCwgdiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CitDUkVBVEUgVU5JUVVFIElOREVYIGhpX2FiYV9rIE9OIGhpX2FiYSAoayk7CitDUkVB VEUgSU5ERVggaGlfYWJhX3YgT04gaGlfYWJhICh2KTsKK0lOU0VSVCBJTlRPIGhpX2FiYSBW QUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKKworLS0gQ3ljbGUgcm93MSdzIHVuaXF1ZSBrZXkg MSAtPiAzIC0+IDEgKHYgdW5jaGFuZ2VkLCBzbyBlYWNoIHN0ZXAgaXMKKy0tIEhPVC1pbmRl eGVkIGFuZCBsZWF2ZXMgc3RhbGUgZW50cmllcyBpbiBoaV9hYmFfaykuCitVUERBVEUgaGlf YWJhIFNFVCBrID0gMyBXSEVSRSB2ID0gMTA7CitVUERBVEUgaGlfYWJhIFNFVCBrID0gMSBX SEVSRSB2ID0gMTA7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgY3ljbGVkX2hvdF9pbmRleGVk IEZST00gZ2V0X2hpX2NvdW50KCdoaV9hYmEnKTsKKworLS0gcm93MSBpcyBsaXZlIGF0IGsg PSAxIGFnYWluLiAgTW92aW5nIHJvdzIgb250byBrID0gMSBtdXN0IHJhaXNlIGEgdW5pcXVl CistLSB2aW9sYXRpb24gZGVzcGl0ZSB0aGUgc3RhbGUgJzEnIGxlYXZlcyBmcm9tIHRoZSBj eWNsZS4KK1VQREFURSBoaV9hYmEgU0VUIGsgPSAxIFdIRVJFIHYgPSAyMDsKK0RST1AgVEFC TEUgaGlfYWJhOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIzLiBQYXJ0aWFs IGluZGV4IHdob3NlIHByZWRpY2F0ZSByZWZlcmVuY2VzIGEgbm9uLWtleSBjb2x1bW4uICBG bGlwcGluZyB0aGUKKy0tIHJvdyBvdXQgb2YgdGhlIHByZWRpY2F0ZSB3aGlsZSBsZWF2aW5n IHRoZSBpbmRleGVkIGtleSB1bmNoYW5nZWQgaXMKKy0tIEhPVC1pbmRleGVkOiB0aGUgcHJl ZGljYXRlIGNvbHVtbiBpcyBwYXJ0IG9mIHRoZSBpbmRleCdzIGF0dHJpYnV0ZSBzZXQsIHNv CistLSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBub3ctc3RhbGUg cGFydGlhbC1pbmRleCBlbnRyeSBvbiByZWFkCistLSAobm8gdmFsdWUgcmVjaGVjayBpcyBp bnZvbHZlZCkuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9w YXJ0cHJlZCAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgYWN0aXZlIGJvb2xlYW4pCisg ICAgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0cHJlZF9r IE9OIGhpX3BhcnRwcmVkIChrKSBXSEVSRSBhY3RpdmU7CitJTlNFUlQgSU5UTyBoaV9wYXJ0 cHJlZCBWQUxVRVMgKDEsIDEwMCwgdHJ1ZSk7CisKKy0tIEZsaXAgdGhlIHByZWRpY2F0ZSBj b2x1bW4gJ2FjdGl2ZScgdHJ1ZSAtPiBmYWxzZTsgdGhlIGluZGV4IGtleSBrIGlzCistLSB1 bmNoYW5nZWQuICBUaGUgcm93IG5vIGxvbmdlciBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZSwg c28gaXRzIHBhcnRpYWwtaW5kZXgKKy0tIGVudHJ5IG11c3QgYmUgcmVtb3ZlZCwgbm90IGxl ZnQgcG9pbnRpbmcgaW50byB0aGUgY2hhaW4uCitVUERBVEUgaGlfcGFydHByZWQgU0VUIGFj dGl2ZSA9IGZhbHNlIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKTsKK1NFTEVDVCBob3QsIGhvdF9pZHggRlJPTSBnZXRfaGlfY291bnQoJ2hpX3Bh cnRwcmVkJyk7CisKKy0tIFRoZSBwYXJ0aWFsIGluZGV4IG11c3Qgbm90IHN1cmZhY2UgdGhl IHJvdyBub3cgdGhhdCBhY3RpdmUgPSBmYWxzZS4KKy0tIEEgcXVlcnkgd2hvc2UgcXVhbCBl eGFjdGx5IG1hdGNoZXMgdGhlIHBhcnRpYWwgcHJlZGljYXRlIHVzZXMgdGhlIGluZGV4Cist LSB3aXRob3V0IHJlLWZpbHRlcmluZyAnYWN0aXZlJyBvbiB0aGUgaGVhcCwgc28gYSBzdGFs ZSBlbnRyeSB3b3VsZCBzdXJmYWNlLgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VU IGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg aWQgRlJPTSBoaV9wYXJ0cHJlZCBXSEVSRSBhY3RpdmU7CitTRUxFQ1QgaWQgRlJPTSBoaV9w YXJ0cHJlZCBXSEVSRSBrID0gMTAwIEFORCBhY3RpdmU7CitTRUxFQ1QgaWQgRlJPTSBoaV9w YXJ0cHJlZCBXSEVSRSBhY3RpdmU7CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VU IGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9wYXJ0cHJlZDsKKworLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSAyNC4gUmVjbGFpbSArIHN0dWIgbWl4LiAgUmVwZWF0ZWQg dXBkYXRlcyBvZiBjb2x1bW4gYSBmb2xsb3dlZCBieSBhbiB1cGRhdGUKKy0tIG9mIGNvbHVt biBiIGJ1aWxkIGEgY2hhaW4gd2hvc2UgcHJ1bmUgcmVjbGFpbXMgdGhlIG1lbWJlcnMgd2hv c2UgY2hhbmdlIHdhcworLS0gc3VwZXJzZWRlZCAoYSBjaGFuZ2VkIGFnYWluKSBhbmQga2Vl cHMgc3R1YnMgZm9yIHRob3NlIHRoYXQgd2VyZSBub3QsIHNvIGEKKy0tIHJvb3QgcmVkaXJl Y3QgZW5kcyB1cCBwb2ludGluZyBhdCBhIHN0dWIgYW5kIGEgbGF0ZXIgd2FsayBjcm9zc2Vz IG1pZC1jaGFpbgorLS0gc3R1YnMuICBSZWFkcyB0aHJvdWdoIGVhY2ggaW5kZXggYW5kIGFt Y2hlY2sgbXVzdCBzdGF5IGNvcnJlY3QgYWNyb3NzIHRoZQorLS0gY29sbGFwc2UsIGFuZCBh IHNlY29uZCByb3VuZCBtdXN0IHdhbGsgdGhlIGV4aXN0aW5nIHN0dWJzIHdpdGhvdXQgc2V2 ZXJpbmcKKy0tIHRoZSBjaGFpbi4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRF IFRBQkxFIGhpX3N0dWJtaXggKGlkIGludCBQUklNQVJZIEtFWSwgYSBpbnQsIGIgaW50KSBX SVRIIChmaWxsZmFjdG9yID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NS RUFURSBJTkRFWCBoaV9zdHVibWl4X2EgT04gaGlfc3R1Ym1peCAoYSk7CitDUkVBVEUgSU5E RVggaGlfc3R1Ym1peF9iIE9OIGhpX3N0dWJtaXggKGIpOworSU5TRVJUIElOVE8gaGlfc3R1 Ym1peCBWQUxVRVMgKDEsIDEwLCAxMDApOworVVBEQVRFIGhpX3N0dWJtaXggU0VUIGEgPSAx MSBXSEVSRSBpZCA9IDE7ICAgLS0gY2hhbmdlcyBhCitVUERBVEUgaGlfc3R1Ym1peCBTRVQg YSA9IDEyIFdIRVJFIGlkID0gMTsgICAtLSBjaGFuZ2VzIGEgYWdhaW4gKHN1cGVyc2VkZXMp CitVUERBVEUgaGlfc3R1Ym1peCBTRVQgYiA9IDEwMSBXSEVSRSBpZCA9IDE7ICAtLSBjaGFu Z2VzIGIKK1ZBQ1VVTSBoaV9zdHVibWl4OworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOwor U0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGlkLCBhLCBiIEZST00gaGlf c3R1Ym1peCBXSEVSRSBhID0gMTI7ICAgLS0gY3VycmVudCBhCitTRUxFQ1QgaWQsIGEsIGIg RlJPTSBoaV9zdHVibWl4IFdIRVJFIGIgPSAxMDE7ICAtLSBjdXJyZW50IGIKK1NFTEVDVCBp ZCBGUk9NIGhpX3N0dWJtaXggV0hFUkUgYSA9IDEwOyAgICAgICAgIC0tIHN0YWxlIGE6IDAg cm93cworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsK K1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfc3R1Ym1peCcpOyAgICAgIC0tIG5v IGNvcnJ1cHRpb24gYWNyb3NzIHN0dWJzCistLSBBIHNlY29uZCByb3VuZCBtdXN0IHdhbGsg dGhlIGV4aXN0aW5nIHN0dWJzIChubyBwcmlvclhtYXggc2V2ZXIpLgorVVBEQVRFIGhpX3N0 dWJtaXggU0VUIGEgPSAxMyBXSEVSRSBpZCA9IDE7CitWQUNVVU0gaGlfc3R1Ym1peDsKK1NF TEVDVCBpZCwgYSwgYiBGUk9NIGhpX3N0dWJtaXggV0hFUkUgYSA9IDEzOworU0VMRUNUICog RlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV9zdHVibWl4Jyk7CitEUk9QIFRBQkxFIGhpX3N0dWJt aXg7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjUuIEV4Y2x1c2lvbi1jb25z dHJhaW50IHRhYmxlcyBhcmUgSE9ULWluZGV4ZWQtZWxpZ2libGUuCistLQorLS0gQW4gZXhj bHVzaW9uIGNvbnN0cmFpbnQgaXMgZW5mb3JjZWQgYnkgY2hlY2tfZXhjbHVzaW9uX29yX3Vu aXF1ZV9jb25zdHJhaW50LAorLS0gd2hpY2ggcmVjaGVja3MgZWFjaCBjYW5kaWRhdGUgYWdh aW5zdCB0aGUgbGl2ZSB0dXBsZSdzIGN1cnJlbnQgaW5kZXgtZm9ybQorLS0gd2l0aCB0aGUg Y29uc3RyYWludCdzIG93biBvcGVyYXRvcnMsIHNvIGEgc3RhbGUgZW50cnkgbGVmdCBieSBh IEhPVC1pbmRleGVkCistLSB1cGRhdGUgaXMgc2tpcHBlZCB3aGlsZSB0aGUgbGl2ZSBrZXkg YWx3YXlzIGhhcyBpdHMgb3duIGVudHJ5LiAgVXBkYXRpbmcgYQorLS0gbm9uLWNvbnN0cmFp bmVkIGluZGV4ZWQgY29sdW1uIGlzIEhPVC1pbmRleGVkICh0aGUgR2lTVCBleGNsdXNpb24g aW5kZXggaXMKKy0tIHNraXBwZWQpLCBhbmQgdGhlIGNvbnN0cmFpbnQgc3RheXMgY29ycmVj dC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2V4Y2wgKAor ICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0YWcgaW50LAorICAgIGR1cmluZyBpbnQ0 cmFuZ2UsCisgICAgRVhDTFVERSBVU0lORyBnaXN0IChkdXJpbmcgV0lUSCAmJikKKykgV0lU SCAoZmlsbGZhY3RvciA9IDEwKTsKK0NSRUFURSBJTkRFWCBoaV9leGNsX3RhZyBPTiBoaV9l eGNsKHRhZyk7CitJTlNFUlQgSU5UTyBoaV9leGNsIFZBTFVFUyAoMSwgMTAwLCBpbnQ0cmFu Z2UoMSwgMTApKSwgKDIsIDIwMCwgaW50NHJhbmdlKDIwLCAzMCkpOworCistLSBVcGRhdGUg YSBub24tY29uc3RyYWluZWQgaW5kZXhlZCBjb2x1bW46IEhPVC1pbmRleGVkIChHaVNUIGV4 Y2x1c2lvbiBpbmRleAorLS0gYW5kIFBLIHNraXBwZWQpLCBhbmQgdGhlIGV4Y2x1c2lvbiBj b25zdHJhaW50IGlzIHN0aWxsIGVuZm9yY2VkLgorVVBEQVRFIGhpX2V4Y2wgU0VUIHRhZyA9 IHRhZyArIDEgV0hFUkUgaWQgPSAxOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIHRhZ191cGRh dGVfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX2V4Y2wnKTsKK0lOU0VSVCBJ TlRPIGhpX2V4Y2wgVkFMVUVTICgzLCAzMDAsIGludDRyYW5nZSg1LCAxNSkpOyAgLS0gb3Zl cmxhcHMgaWQ9MSdzICgxLDEwKQorCistLSBNb3ZlIGlkPTEncyByYW5nZSBhd2F5ICh0aGlz IHVwZGF0ZXMgdGhlIEdpU1QgaW5kZXgsIGxlYXZpbmcgYSBzdGFsZSBlbnRyeQorLS0gZm9y IHRoZSBvbGQgKDEsMTApIHJhbmdlKS4gIEEgcmFuZ2Ugb3ZlcmxhcHBpbmcgb25seSB0aGUg T0xEIHJhbmdlIG5vdworLS0gaW5zZXJ0cyBjbGVhbmx5ICh0aGUgc3RhbGUgZW50cnkgaXMg c2tpcHBlZCk7IG9uZSBvdmVybGFwcGluZyB0aGUgTkVXIHJhbmdlCistLSBzdGlsbCBjb25m bGljdHMuCitVUERBVEUgaGlfZXhjbCBTRVQgZHVyaW5nID0gaW50NHJhbmdlKDEwMCwgMTEw KSBXSEVSRSBpZCA9IDE7CitJTlNFUlQgSU5UTyBoaV9leGNsIFZBTFVFUyAoNCwgNDAwLCBp bnQ0cmFuZ2UoNSwgMTUpKTsgICAtLSBvbmx5IG92ZXJsYXBwZWQgb2xkIHJhbmdlOiBPSwor SU5TRVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDUsIDUwMCwgaW50NHJhbmdlKDEwNSwgMTE1 KSk7LS0gb3ZlcmxhcHMgbmV3ICgxMDAsMTEwKTogY29uZmxpY3QKK0RST1AgVEFCTEUgaGlf ZXhjbDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyNi4gVE9BU1QgaW50ZXJh Y3Rpb24uICBBbiBpbmRleGVkIGNvbHVtbiBzdG9yZWQgb3V0LW9mLWxpbmUgbXVzdCBiZWhh dmUKKy0tIGNvcnJlY3RseSBhY3Jvc3MgSE9ULWluZGV4ZWQgdXBkYXRlczogYW4gZW50cnkg a2VwdCBhY3Jvc3MgYW4gdXBkYXRlIG9mIGEKKy0tIGRpZmZlcmVudCBjb2x1bW4gc3RpbGwg cmVzb2x2ZXMgdG8gdGhlICh1bmNoYW5nZWQpIHRvYXN0ZWQgdmFsdWUsIGFuZCBhZnRlcgor LS0gdGhlIHRvYXN0ZWQgY29sdW1uIGl0c2VsZiBpcyBjaGFuZ2VkIHRoZSBzdGFsZSBlbnRy eSBpcyBkcm9wcGVkIGJ5IHRoZQorLS0gY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIChubyB2 YWx1ZSBjb21wYXJpc29uIG9yIGRldG9hc3RpbmcgaXMgbmVlZGVkKS4KKy0tIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3RvYXN0IChpZCBpbnQgUFJJTUFSWSBL RVksIGJpZyB0ZXh0LCB0YWcgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQUxURVIg VEFCTEUgaGlfdG9hc3QgQUxURVIgQ09MVU1OIGJpZyBTRVQgU1RPUkFHRSBFWFRFUk5BTDsg IC0tIG5vIGNvbXByZXNzaW9uCitDUkVBVEUgSU5ERVggaGlfdG9hc3RfYmlnIE9OIGhpX3Rv YXN0IChiaWcpOworQ1JFQVRFIElOREVYIGhpX3RvYXN0X3RhZyBPTiBoaV90b2FzdCAodGFn KTsKK0lOU0VSVCBJTlRPIGhpX3RvYXN0IFZBTFVFUyAoMSwgcmVwZWF0KCdBJywgMjAwMCks IDEwKTsKKy0tIFRoZSBiaWcgdmFsdWUgaXMgc3RvcmVkIG91dC1vZi1saW5lLgorU0VMRUNU IHBnX2NvbHVtbl9zaXplKGJpZykgPiAxNTAwIEFTIGJpZ19pc19leHRlcm5hbCBGUk9NIGhp X3RvYXN0IFdIRVJFIGlkID0gMTsKKy0tIEhPVC1pbmRleGVkIHVwZGF0ZSBvZiB0YWcgbGVh dmVzIGJpZyAoYW5kIGl0cyBpbmRleCBlbnRyeSkgdW5jaGFuZ2VkLgorVVBEQVRFIGhpX3Rv YXN0IFNFVCB0YWcgPSAxMSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMg dGFnX3VwZGF0ZV9ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfdG9hc3QnKTsK K1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9m ZjsKK1NFTEVDVCBpZCwgdGFnLCBsZW5ndGgoYmlnKSBGUk9NIGhpX3RvYXN0IFdIRVJFIGJp ZyA9IHJlcGVhdCgnQScsIDIwMDApOworLS0gSE9ULWluZGV4ZWQgdXBkYXRlIG9mIHRoZSB0 b2FzdGVkIGluZGV4ZWQgY29sdW1uIGl0c2VsZjogdGhlIG9sZCBlbnRyeSBpcworLS0gbm93 IHN0YWxlIGJlY2F1c2UgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBzaG93cyBiaWcg Y2hhbmdlZC4KK1VQREFURSBoaV90b2FzdCBTRVQgYmlnID0gcmVwZWF0KCdCJywgMjAwMCkg V0hFUkUgaWQgPSAxOworU0VMRUNUIGlkIEZST00gaGlfdG9hc3QgV0hFUkUgYmlnID0gcmVw ZWF0KCdBJywgMjAwMCk7ICAgLS0gc3RhbGU6IDAgcm93cworU0VMRUNUIGlkLCBsZW5ndGgo YmlnKSBGUk9NIGhpX3RvYXN0IFdIRVJFIGJpZyA9IHJlcGVhdCgnQicsIDIwMDApOyAgLS0g Y3VycmVudAorUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitSRVNFVCBlbmFibGVfc2Vxc2Nh bjsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfdG9hc3QnKTsKK0RST1AgVEFC TEUgaGlfdG9hc3Q7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjcuIEFCQSBv biBhbiBpbmRleGVkIGNvbHVtbi4gIEEgSE9ULWluZGV4ZWQgdXBkYXRlIHRoYXQgc2V0cyBh biBpbmRleGVkCistLSBjb2x1bW4gdG8gYSB2YWx1ZSBhbiBlYXJsaWVyIGNoYWluIG1lbWJl ciBhbHJlYWR5IGhlbGQgbGVhdmVzIHR3byBsZWF2ZXMKKy0tIHdpdGggdGhhdCBzYW1lIGtl eSwgYm90aCBjaGFpbi1yZXNvbHZpbmcgdG8gdGhlIGxpdmUgdHVwbGUuICBBIHZhbHVlLWJh c2VkCistLSByZWNoZWNrIGNhbm5vdCB0ZWxsIHRoZW0gYXBhcnQgYW5kIHdvdWxkIHJldHVy biB0aGUgcm93IHR3aWNlOyB0aGUKKy0tIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBkcm9w cyB0aGUgc3RhbGUgYW5jZXN0b3IgbGVhZiAoaXRzIHdhbGsgY3Jvc3NlcyB0aGUKKy0tIGtl eS1jaGFuZ2luZyBob3BzKSBhbmQga2VlcHMgb25seSB0aGUgZnJlc2ggZW50cnksIHNvIGEg Zm9yY2VkIGluZGV4IHNjYW4KKy0tIHJldHVybnMgdGhlIHJvdyBleGFjdGx5IG9uY2UuICBS RUlOREVYIG11c3Qgbm90IGNoYW5nZSB0aGF0LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitDUkVBVEUgVEFCTEUgaGlfYWJhIChpZCBpbnQgUFJJTUFSWSBLRVksIGsgaW50LCB2IGlu dCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9hYmFfayBPTiBo aV9hYmEgKGspOworQ1JFQVRFIElOREVYIGhpX2FiYV92IE9OIGhpX2FiYSAodik7CitJTlNF UlQgSU5UTyBoaV9hYmEgVkFMVUVTICgxLCAxLCAxMDApOworVVBEQVRFIGhpX2FiYSBTRVQg ayA9IDMgV0hFUkUgaWQgPSAxOyAgIC0tIEhPVC1pbmRleGVkOiBrIGNoYW5nZWQsIHYga2Vw dAorVVBEQVRFIGhpX2FiYSBTRVQgayA9IDEgV0hFUkUgaWQgPSAxOyAgIC0tIEhPVC1pbmRl eGVkOiBrIGN5Y2xlZCBiYWNrIChBQkEpCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitT RVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1QgY291bnQoKikgQVMgazFfb25j ZSBGUk9NIGhpX2FiYSBXSEVSRSBrID0gMTsgICAgIC0tIGV4YWN0bHkgMQorU0VMRUNUIGNv dW50KCopIEFTIGszX2dvbmUgRlJPTSBoaV9hYmEgV0hFUkUgayA9IDM7ICAgICAtLSAwIChz dGFsZSBkcm9wcGVkKQorUkVJTkRFWCBJTkRFWCBoaV9hYmFfazsKK1NFTEVDVCBjb3VudCgq KSBBUyBrMV9hZnRlcl9yZWluZGV4IEZST00gaGlfYWJhIFdIRVJFIGsgPSAxOyAgLS0gc3Rp bGwgMQorUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsK K1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfYWJhJyk7CitEUk9QIFRBQkxFIGhp X2FiYTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyOC4gUGFydGlhbCBpbmRl eCwgcHJlZGljYXRlIGNvbHVtbiBjaGFuZ2VkIGJ1dCB0aGUgcm93IFNUQVlTIGluIHRoZSBp bmRleAorLS0gKHByZWRpY2F0ZSBzdGlsbCB0cnVlLCBrZXkgdW5jaGFuZ2VkKS4gIFRoZSB1 cGRhdGUgaXMgSE9ULWluZGV4ZWQ7IHNlbGVjdGl2ZQorLS0gbWFpbnRlbmFuY2UgcmUtaW5z ZXJ0cyBhIGZyZXNoIGVudHJ5ICh0aGUgcHJlZGljYXRlIGNvbHVtbiBjaGFuZ2VkIGFuZCBz dGlsbAorLS0gaG9sZHMpLCBzbyB0aGUgcm93IGlzIHN0aWxsIHJldHVybmVkIC0tIHRoZSBi aXRtYXAgZHJvcHMgdGhlIG9sZGVyIGVudHJ5IGFuZAorLS0gdGhlIGZyZXNoIG9uZSByZS1z dXBwbGllcyBpdC4gIEd1YXJkcyBhZ2FpbnN0IGEgImxvc3Qgcm93IiBmcm9tIG92ZXItZWFn ZXIKKy0tIGRyb3BwaW5nLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFC TEUgaGlfcGFydHN0YXkgKGlkIGludCBQUklNQVJZIEtFWSwgayBpbnQsIG4gaW50KSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3BhcnRzdGF5X2sgT04gaGlf cGFydHN0YXkgKGspIFdIRVJFIG4gPiAwOworQ1JFQVRFIElOREVYIGhpX3BhcnRzdGF5X2lk MiBPTiBoaV9wYXJ0c3RheSAoaWQpOworSU5TRVJUIElOVE8gaGlfcGFydHN0YXkgVkFMVUVT ICgxLCA1LCAzKTsKK1VQREFURSBoaV9wYXJ0c3RheSBTRVQgbiA9IDcgV0hFUkUgaWQgPSAx OyAgIC0tIG4gMy0+Nywgc3RpbGwgPiAwLCBrIHVuY2hhbmdlZAorU0VMRUNUIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIHN0YXlfaXNfaG90 X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX3BhcnRzdGF5Jyk7CitTRVQgZW5hYmxl X3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1Qg Y291bnQoKikgQVMgc3RheV9yb3dzIEZST00gaGlfcGFydHN0YXkgV0hFUkUgayA9IDUgQU5E IG4gPiAwOyAgIC0tIHdhbnQgMQorUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitSRVNFVCBl bmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlfcGFydHN0YXk7CisKKy0tIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorLS0gMjkuIFBhcnRpdGlvbmVkIHRhYmxlLiAgQSB3aXRoaW4tcGFy dGl0aW9uIFVQREFURSBvZiBvbmUgaW5kZXhlZCBjb2x1bW4gaXMKKy0tIEhPVC1pbmRleGVk IG9uIHRoZSBsZWFmIHBhcnRpdGlvbidzIGhlYXAgZXhhY3RseSBhcyBmb3IgYSBub24tcGFy dGl0aW9uZWQKKy0tIHRhYmxlOyBhIGNyb3NzLXBhcnRpdGlvbiB1cGRhdGUgaXMgYSBkZWxl dGUraW5zZXJ0IGFuZCBuZXZlciBIT1QuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NS RUFURSBUQUJMRSBoaV9wYXJ0IChpZCBpbnQsIGEgaW50LCBiIGludCkgUEFSVElUSU9OIEJZ IFJBTkdFIChpZCk7CitDUkVBVEUgVEFCTEUgaGlfcGFydDEgUEFSVElUSU9OIE9GIGhpX3Bh cnQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTAwKQorICAgIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcGFydF9hIE9OIGhpX3BhcnQgKGEpOworQ1JFQVRF IElOREVYIGhpX3BhcnRfYiBPTiBoaV9wYXJ0IChiKTsKK0lOU0VSVCBJTlRPIGhpX3BhcnQg VkFMVUVTICgxLCAxMCwgMjApOworVVBEQVRFIGhpX3BhcnQgU0VUIGEgPSAxMSBXSEVSRSBp ZCA9IDE7ICAgLS0gb25lIGluZGV4ZWQgY29sLCB3aXRoaW4gcGFydGl0aW9uCitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgcGFy dF9pc19ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfcGFydDEnKTsKK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NF TEVDVCBjb3VudCgqKSBBUyBhMTEgRlJPTSBoaV9wYXJ0IFdIRVJFIGEgPSAxMTsgICAtLSB3 YW50IDEKK1NFTEVDVCBjb3VudCgqKSBBUyBhMTAgRlJPTSBoaV9wYXJ0IFdIRVJFIGEgPSAx MDsgICAtLSB3YW50IDAgKHN0YWxlIGRyb3BwZWQpCitSRVNFVCBlbmFibGVfYml0bWFwc2Nh bjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFt KCdoaV9wYXJ0MScpOworRFJPUCBUQUJMRSBoaV9wYXJ0OworCistLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKy0tIDMwLiBOb24tYnRyZWUgYWNjZXNzIG1ldGhvZCAoaGFzaCkuICBSZWFk LXNpZGUgc3RhbGVuZXNzIGlzIGFjY2Vzcy1tZXRob2QKKy0tIGFnbm9zdGljICh0aGUgY3Jv c3NlZC1hdHRyaWJ1dGUgYml0bWFwKSwgc28gYW55IGluZGV4IEFNJ3MgY29sdW1uIGlzCist LSBIT1QtaW5kZXhlZC4gIEhhc2ggaXMgdGhlIHNoYXJwZXN0IGNhc2U6IGl0cyBzY2FucyBy ZWNoZWNrIHRoZSBoZWFwIHZhbHVlLAorLS0gd2hpY2ggYWxvbmUgY2Fubm90IGRpc2FtYmln dWF0ZSBhIHZhbHVlIGN5Y2xlZCBhd2F5IGFuZCBiYWNrIChBQkEpIC0tIHRoZQorLS0gYml0 bWFwIGRyb3BzIHRoZSBzdGFsZSBhbmNlc3RvciBzbyB0aGUgcm93IGlzIHJldHVybmVkIGV4 YWN0bHkgb25jZS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhp X2hhc2ggKGlkIGludCBQUklNQVJZIEtFWSwgdiBpbnQsIHcgaW50KSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2hhc2hfdiBPTiBoaV9oYXNoIFVTSU5HIGhh c2ggKHYpOworQ1JFQVRFIElOREVYIGhpX2hhc2hfdyBPTiBoaV9oYXNoICh3KTsKK0lOU0VS VCBJTlRPIGhpX2hhc2ggVkFMVUVTICgxLCAxMCwgMTAwKTsKK1VQREFURSBoaV9oYXNoIFNF VCB2ID0gOTkgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX2hhc2ggU0VUIHYgPSAxMCBXSEVS RSBpZCA9IDE7ICAgLS0gQUJBOiAxMCAtPiA5OSAtPiAxMCwgdyB1bmNoYW5nZWQKK1NFTEVD VCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBo YXNoX2lzX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9oYXNoJyk7CitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitT RUxFQ1QgY291bnQoKikgQVMgaGFzaF92MTAgRlJPTSBoaV9oYXNoIFdIRVJFIHYgPSAxMDsg ICAtLSB3YW50IDEgKG5vIGR1cGxpY2F0ZSkKK1NFTEVDVCBjb3VudCgqKSBBUyBoYXNoX3Y5 OSBGUk9NIGhpX2hhc2ggV0hFUkUgdiA9IDk5OyAgIC0tIHdhbnQgMCAoc3RhbGUgZHJvcHBl ZCkKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitE Uk9QIFRBQkxFIGhpX2hhc2g7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMzEu IERETCBhZnRlciBhIEhPVC1pbmRleGVkIGNoYWluIGV4aXN0cy4gIFRoZSBwZXItaG9wIG1v ZGlmaWVkLWF0dHJzCistLSBiaXRtYXAgb24gdGhlIHBhZ2UgaXMga2V5ZWQgYnkgcGh5c2lj YWwgYXR0cmlidXRlIG51bWJlciBhbmQgc2l6ZWQgYnkgdGhlCistLSByZWxhdGlvbidzIG5h dHRzIEFUIFdSSVRFIFRJTUUuICBJbmRleGVzIGFkZGVkL2Ryb3BwZWQgYWZ0ZXIgdGhlIGNo YWluCistLSBmb3JtcywgYW5kIEFERC9EUk9QIENPTFVNTiwgbXVzdCBub3QgY29ycnVwdCB0 aGUgcmVhZC1zaWRlIHN0YWxlbmVzcyB0ZXN0LgorLS0gVGhlIHNoYXJwIGNhc2UgaXMgQURE IENPTFVNTiBjcm9zc2luZyBhbiA4LWF0dHJpYnV0ZSBib3VuZGFyeSwgd2hpY2ggZ3Jvd3MK Ky0tIGNlaWwobmF0dHMvOCk6IHJlYWRlcnMgbXVzdCBsb2NhdGUgZWFjaCBob3AncyBiaXRt YXAgZnJvbSB0aGF0IGhvcCdzIG93bgorLS0gd3JpdGUtdGltZSBuYXR0cyAoSGVhcFR1cGxl SGVhZGVyR2V0TmF0dHMgLyB0aGUgc3R1YidzIHN0YXNoZWQgbmF0dHMpLCBub3QKKy0tIHRo ZSByZWxhdGlvbidzIGN1cnJlbnQgbmF0dHMuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky0tIEV4YWN0bHkgOCBhdHRyaWJ1dGVzIChjMS4uYzcgKyBwYXlsb2FkKSBzbyBhZGRpbmcg dGhlIDl0aCBmbGlwcyB0aGUgYml0bWFwCistLSBmcm9tIDEgYnl0ZSB0byAyLiAgYzcgaXMg dGhlIGNvbHVtbiB3ZSBjaHVybjsgYzIgaXMgYW4gdW5jaGFuZ2VkIGluZGV4ZWQKKy0tIGNv bHVtbiB3aG9zZSBsZWFmIG11c3Qgc3RheSBjdXJyZW50LgorQ1JFQVRFIFRBQkxFIGhpX2Rk bCAoCisgICAgYzEgaW50IFBSSU1BUlkgS0VZLCBjMiBpbnQsIGMzIGludCwgYzQgaW50LAor ICAgIGM1IGludCwgYzYgaW50LCBjNyBpbnQsIHBheWxvYWQgdGV4dAorKSBXSVRIIChmaWxs ZmFjdG9yID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRF WCBoaV9kZGxfYzIgT04gaGlfZGRsKGMyKTsKK0NSRUFURSBJTkRFWCBoaV9kZGxfYzcgT04g aGlfZGRsKGM3KTsKK0lOU0VSVCBJTlRPIGhpX2RkbCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAs IDQwLCA1MCwgNzAsICdwJyk7CisKKy0tIEZvcm0gYSBIT1QtaW5kZXhlZCBjaGFpbiBvbiBj NyBCRUZPUkUgYW55IGZ1cnRoZXIgRERMLgorVVBEQVRFIGhpX2RkbCBTRVQgYzcgPSA3MSBX SEVSRSBjMSA9IDE7CitVUERBVEUgaGlfZGRsIFNFVCBjNyA9IDcyIFdIRVJFIGMxID0gMTsK KworLS0gKGEpIENSRUFURSBJTkRFWCBhZnRlciB0aGUgY2hhaW4gZXhpc3RzOiB0aGUgbmV3 IGluZGV4IGlzIGJ1aWx0IGFnYWluc3QgdGhlCistLSBsaXZlIHR1cGxlIHVuZGVyIGl0cyBv d24gVElELCBzbyBpdHMgZW50cnkgaXMgbmV2ZXIgc3RhbGUuCitDUkVBVEUgSU5ERVggaGlf ZGRsX2MzIE9OIGhpX2RkbChjMyk7CisKKy0tIChiKSBBREQgQ09MVU1OIGNyb3NzaW5nIHRo ZSA4LWF0dHJpYnV0ZSBib3VuZGFyeSAobmF0dHMgOCAtPiA5KS4gIEV4aXN0aW5nCistLSBo b3BzIGtlZXAgdGhlaXIgMS1ieXRlIGJpdG1hcHM7IHRoZSByZWxhdGlvbiBub3cgd2FudHMg Mi4gIFJlYWRzIHRocm91Z2ggdGhlCistLSBvbGQgY2hhaW4gbXVzdCBzdGlsbCBiZSBjb3Jy ZWN0LgorQUxURVIgVEFCTEUgaGlfZGRsIEFERCBDT0xVTU4gYzkgaW50OworQ1JFQVRFIElO REVYIGhpX2RkbF9jOSBPTiBoaV9kZGwoYzkpOworCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBv ZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4b25s eXNjYW4gPSBvZmY7CisKKy0tIExpdmUgYzcgaXMgNzIuICBUaGUgYzcgaW5kZXggbXVzdCBy ZXR1cm4gdGhlIGxpdmUgcm93IGZvciA3MiBhbmQgZHJvcCB0aGUKKy0tIHN0YWxlIGxlYXZl cyBmb3IgNzAgYW5kIDcxIChvZmZzZXRzIG1pc3JlYWQgd291bGQgY29ycnVwdCB0aGlzKS4K K1NFTEVDVCBjb3VudCgqKSBBUyBjN19lcV83MiBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDcy IEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzcw X3N0YWxlIEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzAgQU5EIHBheWxvYWQgSVMgTk9UIE5V TEw7CitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzFfc3RhbGUgRlJPTSBoaV9kZGwgV0hF UkUgYzcgPSA3MSBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKworLS0gYzIgbmV2ZXIgY2hh bmdlZCBhY3Jvc3MgdGhlIGNoYWluOiBpdHMgbGVhZiBtdXN0IE5PVCBiZSBqdWRnZWQgc3Rh bGUgZXZlbgorLS0gdGhvdWdoIGEgY3Jvc3NlZCBob3AgY2hhbmdlZCBjNy4gIEEgbWlzcmVh ZCBiaXRtYXAgY291bGQgc3B1cmlvdXNseSBmbGFnIGl0LgorU0VMRUNUIGNvdW50KCopIEFT IGMyX2VxXzEwX2N1cnJlbnQgRlJPTSBoaV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9h ZCBJUyBOT1QgTlVMTDsKKworLS0gKGMpIENvbnRpbnVlIGNodXJuaW5nIGM3IEFGVEVSIHRo ZSBBREQgQ09MVU1OOiB0aGUgbmV3IGhvcCdzIGJpdG1hcCBpcyBzaXplZAorLS0gZm9yIG5h dHRzIDkgKDIgYnl0ZXMpOyB0aGUgb2xkIGhvcHMgYXJlIDEgYnl0ZS4gIEEgY2hhaW4gd2l0 aCBtaXhlZC1zaXplCistLSBiaXRtYXBzIG11c3Qgc3RpbGwgcmVzb2x2ZSBjb3JyZWN0bHku CitVUERBVEUgaGlfZGRsIFNFVCBjNyA9IDczIFdIRVJFIGMxID0gMTsKK1NFTEVDVCBjb3Vu dCgqKSBBUyBjN19lcV83MyBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDczIEFORCBwYXlsb2Fk IElTIE5PVCBOVUxMOworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzcyX25vd19zdGFsZSBG Uk9NIGhpX2RkbCBXSEVSRSBjNyA9IDcyIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworCist LSAoZCkgQ29sbGFwc2UgdGhlIGNoYWluIHRvIHN0dWJzIHZpYSBWQUNVVU0sIHRoZW4gcmVh ZCBhZ2FpbjogdGhlIHN0dWIgbXVzdAorLS0gcHJlc2VydmUgaXRzIHdyaXRlLXRpbWUgbmF0 dHMgc28gaXRzIGJpdG1hcCBzdGF5cyBsb2NhdGFibGUgcG9zdC1BREQgQ09MVU1OLgorVVBE QVRFIGhpX2RkbCBTRVQgYzcgPSA3NCBXSEVSRSBjMSA9IDE7CitWQUNVVU0gKElOREVYX0NM RUFOVVAgb2ZmKSBoaV9kZGw7CitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzRfYWZ0ZXJf dmFjdXVtIEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzQgQU5EIHBheWxvYWQgSVMgTk9UIE5V TEw7CitTRUxFQ1QgY291bnQoKikgQVMgYzJfZXFfMTBfYWZ0ZXJfdmFjdXVtIEZST00gaGlf ZGRsIFdIRVJFIGMyID0gMTAgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisKKy0tIChlKSBE Uk9QIENPTFVNTiBrZWVwcyB0aGUgYXR0bnVtIHNsb3QgKG5vIHJlbnVtYmVyKSwgc28gYml0 bWFwcyBzdGF5IGFsaWduZWQuCitBTFRFUiBUQUJMRSBoaV9kZGwgRFJPUCBDT0xVTU4gYzQ7 CitTRUxFQ1QgY291bnQoKikgQVMgYzdfYWZ0ZXJfZHJvcCBGUk9NIGhpX2RkbCBXSEVSRSBj NyA9IDc0IEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworU0VMRUNUIGNvdW50KCopIEFTIGMy X2FmdGVyX2Ryb3AgRlJPTSBoaV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9hZCBJUyBO T1QgTlVMTDsKKworLS0gKGYpIERST1AgSU5ERVggb24gdGhlIGNodXJuZWQgY29sdW1uOiBy ZW1haW5pbmcgaW5kZXhlcyBzdGlsbCByZXNvbHZlLgorRFJPUCBJTkRFWCBoaV9kZGxfYzc7 CitTRUxFQ1QgY291bnQoKikgQVMgYzJfYWZ0ZXJfZHJvcGlkeCBGUk9NIGhpX2RkbCBXSEVS RSBjMiA9IDEwIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworCitSRVNFVCBlbmFibGVfc2Vx c2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4b25s eXNjYW47CisKKy0tIFRoZSBzZXFzY2FuIHRydXRoIGNvbmZpcm1zIHRoZSBsaXZlIHJvdzsg dGhlIGNvdW50IGFzc2VydGlvbnMgYWJvdmUgKHJlYWQKKy0tIHRocm91Z2ggdGhlIHBvc3Qt RERMIGluZGV4ZXMpIG1hdGNoIGl0LCB3aGljaCBpcyB3aGF0IHdvdWxkIGJyZWFrIGlmIGEK Ky0tIG1pcy1zaXplZCBiaXRtYXAgY29ycnVwdGVkIHRoZSBzdGFsZW5lc3MgdmVyZGljdC4K K1NFTEVDVCBjMSwgYzIsIGM3IEZST00gaGlfZGRsIFdIRVJFIGMxID0gMTsKKworRFJPUCBU QUJMRSBoaV9kZGw7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMzIuIEJpdG1h cEFuZC9CaXRtYXBPciBhY3Jvc3MgYSBjaGFuZ2VkIGFuZCBhbiB1bmNoYW5nZWQgaW5kZXgK Ky0tCistLSBSZXBvcnRlZCBieSBBbGV4YW5kZXIgS29yb3Rrb3YsIDIwMjYtMDctMDkuICBB IEhPVC1pbmRleGVkIHVwZGF0ZSBwb2ludHMKKy0tIHRoZSBDSEFOR0VEIGluZGV4J3MgZnJl c2ggZW50cnkgYXQgdGhlIG5ldyBoZWFwLW9ubHkgdHVwbGUsIHdoaWxlIHRoZQorLS0gVU5D SEFOR0VEIGluZGV4J3MgZW50cnkgc3RpbGwgcG9pbnRzIGF0IHRoZSBjaGFpbiByb290LiAg Qml0bWFwQW5kL0JpdG1hcE9yCistLSBpbnRlcnNlY3QvdW5pb24gdHdvIGluZGV4ZXMnIHJh dyBUSUQgc2V0cyBpbiB0aGUgVElELWJpdG1hcCBsYXllciBCRUZPUkUKKy0tIGVpdGhlciBz aWRlIHRvdWNoZXMgdGhlIGhlYXA6IGFuIGV4YWN0LW1vZGUgaW50ZXJzZWN0aW9uIHNlZXMg e3Jvb3R9IG9uIG9uZQorLS0gc2lkZSBhbmQge25ldy10dXBsZX0gb24gdGhlIG90aGVyIGFu ZCBkcm9wcyB0aGUgcm93LCBldmVuIHRob3VnaCBib3RoCistLSByZXNvbHZlLCB0aHJvdWdo IHRoZSBjaGFpbiwgdG8gdGhlIG9uZSBsaXZlIHR1cGxlLiAgQml0bWFwIHNjYW5zIHRvbGVy YXRlCistLSBmYWxzZSBwb3NpdGl2ZXMgYnV0IG5vdCBmYWxzZSBuZWdhdGl2ZXMsIHNvIHRo aXMgd2FzIGEgY29ycmVjdG5lc3MgYnVnLgorLS0KKy0tIEZpeGVkIGJ5IGEgb25lLWJpdCBt YXJrZXIgaW4gdGhlIHN0b3JlZCBUSUQncyBvdGhlcndpc2UtdW51c2VkIG9mZnNldCBiaXQK Ky0tIDE0IChJdGVtUG9pbnRlclNJVU1heWJlU3RhbGVGbGFnLCBzdG9yYWdlL2l0ZW1wdHIu aCksIHNldCBvbmx5IG9uIGEKKy0tIEhPVC1pbmRleGVkIGZyZXNoIGVudHJ5J3Mgb3duIFRJ RCAobmV2ZXIgb24gdHRzX3RpZCBpdHNlbGYsIG5ldmVyIG9uIGEKKy0tIGNsYXNzaWMtSE9U IG9yIHBsYWluLWluc2VydCBlbnRyeSkuICB0Ym1fYWRkX3R1cGxlcygpIC0tIHRoZSBzaW5n bGUgY2hva2UKKy0tIHBvaW50IGV2ZXJ5IGFtZ2V0Yml0bWFwIGZ1bm5lbHMgZXhhY3QgaGVh cCBUSURzIHRocm91Z2ggLS0gY2hlY2tzIHRoZSBmbGFnCistLSBhbmQsIHdoZW4gc2V0LCBh ZGRzIHRoZSB3aG9sZSBwYWdlIGFzIGxvc3N5ICh0Ym1fYWRkX3BhZ2UpIGluc3RlYWQgb2Yg dGhlCistLSBzaW5nbGUgZXhhY3Qgb2Zmc2V0LiAgQSBsb3NzeSBwYWdlIHN1cnZpdmVzIGFu eSBBTkQvT1IgYWdhaW5zdCBhbiBleGFjdC1tb2RlCistLSBwYWdlIChwZXIgdGJtX2ludGVy c2VjdF9wYWdlJ3Mgb3duIGNhc2UgYW5hbHlzaXMpIGFuZCBmb3JjZXMgdGhlIGV4aXN0aW5n CistLSBoZWFwLXNpZGUgY3Jvc3NlZC1hdHRyaWJ1dGUgcmVjaGVjayB0byBtYWtlIHRoZSBm aW5hbCBjYWxsLiAgSGFuZGxpbmcgaXQKKy0tIHRoZXJlIG1lYW5zIE5PIGluZGV4IGFjY2Vz cyBtZXRob2QgbmVlZHMgdG8ga25vdyBhYm91dCBIT1QtaW5kZXhlZCBjaGFpbnM6CistLSBi dHJlZSwgaGFzaCwgR0lOLCBHaVNULCBTUC1HaVNULCBjb250cmliL2Jsb29tLCBhbmQgYW55 IG91dC1vZi10cmVlIEFNIGFyZQorLS0gYWxsIGNvcnJlY3Qgd2l0aCBubyBBTS1zcGVjaWZp YyBjb2RlLiAgT25lIHRhYmxlIHBlciBub24tYnRyZWUgYWNjZXNzIG1ldGhvZAorLS0gYmVs b3csIGVhY2ggcGFpcmVkIHdpdGggYSBidHJlZSBpbmRleCBvbiB0aGUgY2hhbmdlZCBjb2x1 bW4sIGV4ZXJjaXNlcyB0aGUKKy0tIGNoYW5nZWQrdW5jaGFuZ2VkIEJpdG1hcEFuZC9CaXRt YXBPciBzaGFwZSBmb3IgZXZlcnkgQU0gU0lVIHVzZXMgZWxzZXdoZXJlCistLSBpbiB0aGlz IGZpbGU7IGJsb29tJ3MgZXF1aXZhbGVudCBjYXNlIGxpdmVzIGluIGNvbnRyaWIvYmxvb20n cyBvd24gdGVzdAorLS0gKHdoZXJlIHRoZSBleHRlbnNpb24gaXMgZ3VhcmFudGVlZCBwcmVz ZW50KS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGVuYWJsZV9zZXFzY2FuID0g b2ZmOworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNj YW4gPSBvbjsKKworLS0gKGEpIGJ0cmVlICsgYnRyZWUKK0NSRUFURSBUQUJMRSBoaV9ibWFu ZF9idCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGMxIGludCwKKyAgICBjMiBp bnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9ibWFuZF9i dF9jMSBPTiBoaV9ibWFuZF9idChjMSk7ICAgLS0gdW5jaGFuZ2VkCitDUkVBVEUgSU5ERVgg aGlfYm1hbmRfYnRfYzIgT04gaGlfYm1hbmRfYnQoYzIpOyAgIC0tIGNoYW5nZWQKK0lOU0VS VCBJTlRPIGhpX2JtYW5kX2J0IFZBTFVFUyAoMSwgMTEsIDIxKTsKK1VQREFURSBoaV9ibWFu ZF9idCBTRVQgYzIgPSAyMiBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgY291bnQoKikgQVMgYnRf YnRfYml0bWFwYW5kIEZST00gaGlfYm1hbmRfYnQgV0hFUkUgYzEgPSAxMSBBTkQgYzIgPSAy MjsKKy0tIFRoZSBmcmVzaCBlbnRyeSBpbiB0aGUgY2hhbmdlZCBpbmRleCAoaGlfYm1hbmRf YnRfYzIpIGlzIGZsYWdnZWQ6IHBhZ2VpbnNwZWN0CistLSByZXBvcnRzIGl0cyByZWFsIGhl YXAgb2Zmc2V0ICh0aGUgbWFya2VyIGlzIHN0cmlwcGVkIGZyb20gY3RpZC9odGlkKSBhbmQK Ky0tIHN1cmZhY2VzIHRoZSBtYXJrZXIgaW4gdGhlIGhvdF9pbmRleGVkIGNvbHVtbi4gIFRo ZSB1bmNoYW5nZWQgaW5kZXgncyBlbnRyeQorLS0gaXMgbm90IGZsYWdnZWQuICAoYnRfcGFn ZV9pdGVtcyBibG9jayAxIGlzIHRoZSBzb2xlIGxlYWYgZm9yIGEgc2luZ2xlIHJvdy4pCitT RUxFQ1QgaG90X2luZGV4ZWQsIGNvdW50KCopCisgIEZST00gYnRfcGFnZV9pdGVtcygnaGlf Ym1hbmRfYnRfYzInLCAxKSBHUk9VUCBCWSBob3RfaW5kZXhlZCBPUkRFUiBCWSBob3RfaW5k ZXhlZDsKK1NFTEVDVCBib29sX2FuZChOT1QgaG90X2luZGV4ZWQpIEFTIHVuY2hhbmdlZF9p bmRleF9uZXZlcl9mbGFnZ2VkCisgIEZST00gYnRfcGFnZV9pdGVtcygnaGlfYm1hbmRfYnRf YzEnLCAxKTsKKy0tIGFtY2hlY2sncyBoZWFwYWxsaW5kZXhlZCB2ZXJpZmljYXRpb24gcmUt ZGVyaXZlcyBlYWNoIGxpdmUgaGVhcCB0dXBsZSdzCistLSBleHBlY3RlZCBpbmRleCBlbnRy eSBhbmQgY2hlY2tzIHRoZSBpbmRleCBjb250YWlucyBpdC4gIEZvciB0aGUgQ0hBTkdFRAor LS0gaW5kZXgsIGEgSE9ULWluZGV4ZWQgZnJlc2ggZW50cnkgc3RvcmVzIHRoYXQgVElEIHdp dGggdGhlIFNJVSBtYXktYmUtc3RhbGUKKy0tIG1hcmtlciBzZXQgaW4gdGhlIG9mZnNldDsg YW1jaGVjayBtdXN0IHN0cmlwIGl0IHdoZW4gZmluZ2VycHJpbnRpbmcgb3IgaXQKKy0tIHdv dWxkIHNwdXJpb3VzbHkgcmVwb3J0ICJsYWNrcyBtYXRjaGluZyBpbmRleCB0dXBsZSIuICBO byBWQUNVVU0gaGFzIHJ1biwgc28KKy0tIHRoZSBmcmVzaCBlbnRyeSBwb2ludHMgZGlyZWN0 bHkgYXQgdGhlIGxpdmUgaGVhcC1vbmx5IHR1cGxlIChubyBzdHViCistLSBmb3J3YXJkaW5n KSwgaXNvbGF0aW5nIHRoZSBtYXJrZXItc3RyaXAgcGF0aCB0aGlzIGNvbW1pdCBhZGRzLgor LS0KKy0tIChPbmx5IHRoZSBjaGFuZ2VkIGluZGV4IGlzIGNoZWNrZWQgaGVyZS4gIGhlYXBh bGxpbmRleGVkIG9uIGFuIGluZGV4IE5PVAorLS0gbWFpbnRhaW5lZCBieSBhIEhPVC1pbmRl eGVkIHVwZGF0ZSAtLSB3aGljaCBieSBkZXNpZ24gaGFzIG5vIGVudHJ5IGZvciB0aGUKKy0t IG5ldyBoZWFwLW9ubHkgdHVwbGUgLS0gaXMgYSBzZXBhcmF0ZSwgcHJlLWV4aXN0aW5nIFNJ VS9hbWNoZWNrLWludGVncmF0aW9uCistLSBxdWVzdGlvbiwgdW5yZWxhdGVkIHRvIHRoZSBi aXQtMTQgbWFya2VyLCBhbmQgb3V0IG9mIHNjb3BlIGZvciB0aGlzIGNvbW1pdC4pCitTRUxF Q1QgYnRfaW5kZXhfY2hlY2soJ2hpX2JtYW5kX2J0X2MyJywgaGVhcGFsbGluZGV4ZWQgPT4g dHJ1ZSk7CitEUk9QIFRBQkxFIGhpX2JtYW5kX2J0OworCistLSAoYikgaGFzaCAodW5jaGFu Z2VkKSArIGJ0cmVlIChjaGFuZ2VkKQorQ1JFQVRFIFRBQkxFIGhpX2JtYW5kX2hhc2ggKAor ICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBjMSBpbnQsCisgICAgYzIgaW50CispIFdJ VEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfYm1hbmRfaGFzaF9jMSBP TiBoaV9ibWFuZF9oYXNoIFVTSU5HIGhhc2ggKGMxKTsKK0NSRUFURSBJTkRFWCBoaV9ibWFu ZF9oYXNoX2MyIE9OIGhpX2JtYW5kX2hhc2goYzIpOworSU5TRVJUIElOVE8gaGlfYm1hbmRf aGFzaCBWQUxVRVMgKDEsIDExLCAyMSk7CitVUERBVEUgaGlfYm1hbmRfaGFzaCBTRVQgYzIg PSAyMiBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgY291bnQoKikgQVMgaGFzaF9idF9iaXRtYXBh bmQgRlJPTSBoaV9ibWFuZF9oYXNoIFdIRVJFIGMxID0gMTEgQU5EIGMyID0gMjI7CitEUk9Q IFRBQkxFIGhpX2JtYW5kX2hhc2g7CisKKy0tIChjKSBHSU4gKHVuY2hhbmdlZCkgKyBidHJl ZSAoY2hhbmdlZCkKK0NSRUFURSBUQUJMRSBoaV9ibWFuZF9naW4gKAorICAgIGlkIGludCBQ UklNQVJZIEtFWSwKKyAgICB0YWdzIGludFtdLAorICAgIGMyIGludAorKSBXSVRIIChmaWxs ZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2JtYW5kX2dpbl90YWdzIE9OIGhpX2Jt YW5kX2dpbiBVU0lORyBnaW4gKHRhZ3MpOworQ1JFQVRFIElOREVYIGhpX2JtYW5kX2dpbl9j MiBPTiBoaV9ibWFuZF9naW4oYzIpOworSU5TRVJUIElOVE8gaGlfYm1hbmRfZ2luIFZBTFVF UyAoMSwgQVJSQVlbMSwyLDNdLCAyMSk7CitVUERBVEUgaGlfYm1hbmRfZ2luIFNFVCBjMiA9 IDIyIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBjb3VudCgqKSBBUyBnaW5fYnRfYml0bWFwYW5k CisgIEZST00gaGlfYm1hbmRfZ2luIFdIRVJFIHRhZ3MgQD4gQVJSQVlbMl0gQU5EIGMyID0g MjI7CitEUk9QIFRBQkxFIGhpX2JtYW5kX2dpbjsKKworLS0gKGQpIEdpU1QgKHVuY2hhbmdl ZCkgKyBidHJlZSAoY2hhbmdlZCkKK0NSRUFURSBUQUJMRSBoaV9ibWFuZF9naXN0ICgKKyAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgcCBwb2ludCwKKyAgICBjMiBpbnQKKykgV0lU SCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9ibWFuZF9naXN0X3AgT04g aGlfYm1hbmRfZ2lzdCBVU0lORyBnaXN0IChwKTsKK0NSRUFURSBJTkRFWCBoaV9ibWFuZF9n aXN0X2MyIE9OIGhpX2JtYW5kX2dpc3QoYzIpOworSU5TRVJUIElOVE8gaGlfYm1hbmRfZ2lz dCBWQUxVRVMgKDEsIHBvaW50KDUsIDUpLCAyMSk7CitVUERBVEUgaGlfYm1hbmRfZ2lzdCBT RVQgYzIgPSAyMiBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgY291bnQoKikgQVMgZ2lzdF9idF9i aXRtYXBhbmQKKyAgRlJPTSBoaV9ibWFuZF9naXN0IFdIRVJFIHAgPEAgYm94KHBvaW50KDAs IDApLCBwb2ludCgxMCwgMTApKSBBTkQgYzIgPSAyMjsKK0RST1AgVEFCTEUgaGlfYm1hbmRf Z2lzdDsKKworLS0gKGUpIFNQLUdpU1QgKHVuY2hhbmdlZCkgKyBidHJlZSAoY2hhbmdlZCkK K0NSRUFURSBUQUJMRSBoaV9ibWFuZF9zcGdpc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICB0IHRleHQsCisgICAgYzIgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaGlfYm1hbmRfc3BnaXN0X3QgT04gaGlfYm1hbmRfc3BnaXN0IFVT SU5HIHNwZ2lzdCAodCk7CitDUkVBVEUgSU5ERVggaGlfYm1hbmRfc3BnaXN0X2MyIE9OIGhp X2JtYW5kX3NwZ2lzdChjMik7CitJTlNFUlQgSU5UTyBoaV9ibWFuZF9zcGdpc3QgVkFMVUVT ICgxLCAnaGVsbG8nLCAyMSk7CitVUERBVEUgaGlfYm1hbmRfc3BnaXN0IFNFVCBjMiA9IDIy IFdIRVJFIGlkID0gMTsKK1NFTEVDVCBjb3VudCgqKSBBUyBzcGdpc3RfYnRfYml0bWFwYW5k CisgIEZST00gaGlfYm1hbmRfc3BnaXN0IFdIRVJFIHQgPSAnaGVsbG8nIEFORCBjMiA9IDIy OworRFJPUCBUQUJMRSBoaV9ibWFuZF9zcGdpc3Q7CisKKy0tIChmKSBCaXRtYXBPcjogYSBI T1QtaW5kZXhlZCBmcmVzaCBlbnRyeSAoYnRyZWUsIGNoYW5nZWQpIHVuaW9uZWQgd2l0aCBh bgorLS0gdW5yZWxhdGVkIHVuY2hhbmdlZCBpbmRleCdzIGVudHJ5IGZvciBhIERJRkZFUkVO VCByb3cgbXVzdCBub3QgYWZmZWN0IHRoYXQKKy0tIG90aGVyIHJvdydzIGNvdW50LCBhbmQg dGhlIFNJVSByb3cgaXRzZWxmIG11c3Qgc3RpbGwgYmUgZm91bmQgdGhyb3VnaAorLS0gZWl0 aGVyIGFybSBvZiB0aGUgT1IuCitDUkVBVEUgVEFCTEUgaGlfYm1vcl9idCAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIGMxIGludCwKKyAgICBjMiBpbnQKKykgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9ibW9yX2J0X2MxIE9OIGhpX2Jtb3Jf YnQoYzEpOworQ1JFQVRFIElOREVYIGhpX2Jtb3JfYnRfYzIgT04gaGlfYm1vcl9idChjMik7 CitJTlNFUlQgSU5UTyBoaV9ibW9yX2J0IFZBTFVFUyAoMSwgMTEsIDIxKSwgKDIsIDEyLCAz Mik7CitVUERBVEUgaGlfYm1vcl9idCBTRVQgYzIgPSAyMiBXSEVSRSBpZCA9IDE7ICAgLS0g SE9ULWluZGV4ZWQgb24gcm93IDEgb25seQorU0VMRUNUIGNvdW50KCopIEFTIGJ0X2J0X2Jp dG1hcG9yCisgIEZST00gaGlfYm1vcl9idCBXSEVSRSBjMSA9IDExIE9SIGMyID0gMzI7ICAg IC0tIHJvdyAxIHZpYSBjMSwgcm93IDIgdmlhIGMyCitEUk9QIFRBQkxFIGhpX2Jtb3JfYnQ7 CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4c2NhbjsKK1JF U0VUIGVuYWJsZV9iaXRtYXBzY2FuOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDMzLiBIZWFwIHJld3JpdGUgKENMVVNURVIgLyBWQUNVVU0gRlVMTCkgb3ZlciBsaXZlIEhP VC1pbmRleGVkIGNoYWlucworLS0KKy0tIENMVVNURVIgYW5kIFZBQ1VVTSBGVUxMIHJld3Jp dGUgdGhlIGhlYXAgYW5kIHJlYnVpbGQgZXZlcnkgaW5kZXgsIGZsYXR0ZW5pbmcKKy0tIGVh Y2ggSE9UIGNoYWluOiBlYWNoIGxpdmUgdHVwbGUgYmVjb21lcyBhIHN0YW5kYWxvbmUgdHVw bGUgaW4gdGhlIG5ldyBoZWFwCistLSB3aXRoIGEgZnJlc2gsIGRpcmVjdCBpbmRleCBlbnRy eSwgc28gbm8gcmV3cml0dGVuIHR1cGxlIGlzIGEgSE9ULWluZGV4ZWQKKy0tIChTSVUpIGNo YWluIG1lbWJlci4gIFRoZSByZXdyaXRlIChyZWZvcm1fdHVwbGUpIG11c3QgdGhlcmVmb3Jl IGNsZWFyCistLSBIRUFQX0lOREVYRURfVVBEQVRFRCBvbiB0aGUgY29waWVkIHR1cGxlOyBs ZWF2aW5nIGl0IHNldCB3b3VsZCBsZWF2ZSBhCistLSBzdGFuZGFsb25lIHR1cGxlIGNhcnJ5 aW5nIHRoZSBtYXJrZXIgKGFuZCBhIG5vdy1tZWFuaW5nbGVzcyBpbmxpbmUKKy0tIG1vZGlm aWVkLWF0dHJzIGJpdG1hcCksIHNvIGEgcmVhZGVyIHJlYWNoaW5nIGl0IHRocm91Z2ggdGhl IHJlYnVpbHQgaW5kZXgKKy0tIHdvdWxkIHJ1biB0aGUgcmVhZC1zaWRlIHN0YWxlbmVzcyB0 ZXN0IGFnYWluc3QgZ2FyYmFnZSBhbmQgd3JvbmdseSBkcm9wIHRoZQorLS0gcm93LiAgUmVn cmVzc2lvbiBndWFyZDogd2l0aG91dCB0aGUgY2xlYXIsIGE9MjAzIChhbmQsIGZvciBDTFVT VEVSIG92ZXIgdGhlCistLSBTSVUgc2Vjb25kYXJ5IGluZGV4LCBsaXZlIHJvd3MpIHdlbnQg bWlzc2luZyB2aWEgaW5kZXggYWZ0ZXIgdGhlIHJld3JpdGUKKy0tIHdoaWxlIHRoZSBoZWFw IHN0aWxsIGhlbGQgdGhlbS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gKGEpIFZB Q1VVTSBGVUxMLCBpbmNsdWRpbmcgdGhlIHNpbmdsZS1zZWNvbmRhcnktaW5kZXggY2FzZSB0 aGF0IG1hZGUgYW55CistLSBTSVUtdXBkYXRlZCB0YWJsZSByZXR1cm4gd3JvbmcgaW5kZXgg cmVzdWx0cyBhZnRlciBhIHJvdXRpbmUgVkFDVVVNIEZVTEwuCitDUkVBVEUgVEFCTEUgaGlf cmV3cml0ZSAoaWQgaW50IFBSSU1BUlkgS0VZLCBhIGludCwgcGF5bG9hZCB0ZXh0KQorICBX SVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3Jld3JpdGVfYSBPTiBo aV9yZXdyaXRlKGEpOworSU5TRVJUIElOVE8gaGlfcmV3cml0ZSBTRUxFQ1QgZywgZywgcmVw ZWF0KCd4JywgMjApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBnOworVVBEQVRFIGhp X3Jld3JpdGUgU0VUIGEgPSBhICsgMTAwIFdIRVJFIGlkIDw9IDEwOyAgIC0tIEhPVC1pbmRl eGVkIG9uIGEKK1VQREFURSBoaV9yZXdyaXRlIFNFVCBhID0gYSArIDEwMCBXSEVSRSBpZCA8 PSA1OyAgICAgLS0gYWdhaW4gLT4gbG9uZ2VyIGNoYWlucworLS0gUm93IGlkPTMgaGFzIGEg PSAyMDMgYWZ0ZXIgdHdvIEhPVC1pbmRleGVkIHVwZGF0ZXMuCitTRUxFQ1QgY291bnQoKikg QVMgc2VxY291bnRfYmVmb3JlIEZST00gaGlfcmV3cml0ZTsKKworVkFDVVVNIEZVTEwgaGlf cmV3cml0ZTsKKworU0VMRUNUIGNvdW50KCopIEFTIHNlcWNvdW50X2FmdGVyX3ZmIEZST00g aGlfcmV3cml0ZTsgICAtLSBubyByb3dzIGxvc3QKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9m ZjsKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gb247CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4g PSBvZmY7CistLSBFdmVyeSBjdXJyZW50IHZhbHVlIGlzIGZpbmRhYmxlIHRocm91Z2ggdGhl IHJlYnVpbHQgaW5kZXguLi4KK1NFTEVDVCBhIEFTIGEyMDNfdmlhX2luZGV4X2FmdGVyX3Zm IEZST00gaGlfcmV3cml0ZSBXSEVSRSBhID0gMjAzOworU0VMRUNUIGNvdW50KCopIEFTIGFs bF9maW5kYWJsZV92aWFfaW5kZXhfYWZ0ZXJfdmYKKyAgRlJPTSBoaV9yZXdyaXRlIFdIRVJF IGEgQkVUV0VFTiAxIEFORCAxMDAwMDA7CistLSAuLi5hbmQgbm8gc3VwZXJzZWRlZCAoc3Rh bGUpIHZhbHVlIHN1cmZhY2VzLgorU0VMRUNUIGNvdW50KCopIEFTIHN0YWxlX2FfYWZ0ZXJf dmYgRlJPTSBoaV9yZXdyaXRlIFdIRVJFIGEgSU4gKDMsIDEwMyk7CitSRVNFVCBlbmFibGVf c2Vxc2NhbjsKK1JFU0VUIGVuYWJsZV9pbmRleHNjYW47CitSRVNFVCBlbmFibGVfYml0bWFw c2NhbjsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfcmV3cml0ZScpOworU0VM RUNUIGJ0X2luZGV4X2NoZWNrKCdoaV9yZXdyaXRlX2EnLCBoZWFwYWxsaW5kZXhlZCA9PiB0 cnVlKTsKK0RST1AgVEFCTEUgaGlfcmV3cml0ZTsKKworLS0gKGIpIENMVVNURVIgdXNpbmcg dGhlIFNJVS11cGRhdGVkIHNlY29uZGFyeSBpbmRleCAodGhlIG9yZGVyaW5nIHNjYW4gd2Fs a3MKKy0tIHRoZSBjaGFpbnMpIGFuZCBhIHNlY29uZCBDTFVTVEVSIGJ5IGhlYXAgb3JkZXI7 IHJvdyBhbmQgdmFsdWUgY291bnRzIG11c3QgYmUKKy0tIHByZXNlcnZlZCBhbmQgZXZlcnkg dmFsdWUgZmluZGFibGUgdGhyb3VnaCB0aGUgaW5kZXggYWZ0ZXJ3YXJkLgorQ1JFQVRFIFRB QkxFIGhpX2NsdXN0ZXIgKGlkIGludCBQUklNQVJZIEtFWSwgYSBpbnQsIGIgaW50LCBwYXls b2FkIHRleHQpCisgIFdJVEggKGZpbGxmYWN0b3IgPSA0MCk7CitDUkVBVEUgSU5ERVggaGlf Y2x1c3Rlcl9hIE9OIGhpX2NsdXN0ZXIoYSk7CitDUkVBVEUgSU5ERVggaGlfY2x1c3Rlcl9i IE9OIGhpX2NsdXN0ZXIoYik7CitJTlNFUlQgSU5UTyBoaV9jbHVzdGVyCisgIFNFTEVDVCBn LCBnLCBnICogMTAsIHJlcGVhdCgneCcsIDIwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAz MCkgZzsKK1VQREFURSBoaV9jbHVzdGVyIFNFVCBhID0gYSArIDEwMCBXSEVSRSBpZCAlIDIg PSAwOyAgIC0tIEhPVC1pbmRleGVkIG9uIGEKK1VQREFURSBoaV9jbHVzdGVyIFNFVCBiID0g YiArIDUwMCBXSEVSRSBpZCAlIDMgPSAwOyAgIC0tIEhPVC1pbmRleGVkIG9uIGIKK1VQREFU RSBoaV9jbHVzdGVyIFNFVCBhID0gYSAtIDEwMCBXSEVSRSBpZCA9IDY7ICAgICAgICAtLSBj eWNsZSBhIGJhY2sgKEFCQSkKKy0tIHNlcXNjYW4gdHJ1dGggKHN1bXMgYXJlIGludmFyaWFu dCBhY3Jvc3MgYW55IGxvc3NsZXNzIHJld3JpdGUpLgorU0VMRUNUIGNvdW50KCopIEFTIG5f YmVmb3JlLCBzdW0oYSkgQVMgc3VtYV9iZWZvcmUsIHN1bShiKSBBUyBzdW1iX2JlZm9yZQor ICBGUk9NIGhpX2NsdXN0ZXI7CisKK0NMVVNURVIgaGlfY2x1c3RlciBVU0lORyBoaV9jbHVz dGVyX2E7CisKK1NFTEVDVCBjb3VudCgqKSBBUyBuX2FmdGVyX2NsdXN0ZXIsIHN1bShhKSBB UyBzdW1hX2FmdGVyLCBzdW0oYikgQVMgc3VtYl9hZnRlcgorICBGUk9NIGhpX2NsdXN0ZXI7 CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9u OworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEFTIGFf YWxsX2ZpbmRhYmxlCisgIEZST00gaGlfY2x1c3RlciBXSEVSRSBhIEJFVFdFRU4gMSBBTkQg MTAwMDAwOworU0VMRUNUIGNvdW50KCopIEFTIGJfYWxsX2ZpbmRhYmxlCisgIEZST00gaGlf Y2x1c3RlciBXSEVSRSBiIEJFVFdFRU4gMSBBTkQgMTAwMDAwOworUkVTRVQgZW5hYmxlX3Nl cXNjYW47CitSRVNFVCBlbmFibGVfaW5kZXhzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNj YW47CitTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2hpX2NsdXN0ZXJfYScsIGhlYXBhbGxpbmRl eGVkID0+IHRydWUpOworU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdoaV9jbHVzdGVyX2InLCBo ZWFwYWxsaW5kZXhlZCA9PiB0cnVlKTsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgn aGlfY2x1c3RlcicpOworRFJPUCBUQUJMRSBoaV9jbHVzdGVyOworCistLSAoYykgQ0xVU1RF UiBVU0lORyBhIHNlY29uZGFyeSBpbmRleCB3aGVuIGEgcm93J3MgY2x1c3RlcmluZy1jb2x1 bW4gdmFsdWUgd2FzCistLSBTSVUtY2hhbmdlZCAob3IgQUJBLWN5Y2xlZCkgaW4gYW4gRUFS TElFUiBob3AgYW5kIGEgRElGRkVSRU5UIGluZGV4ZWQgY29sdW1uCistLSBjaGFuZ2VkIGlu IHRoZSBMQVNUIGhvcCwgd2l0aCB0aGUgY2hhaW4gbGVmdCBVTkNPTExBUFNFRCAobm8gVkFD VVVNIGJlZm9yZQorLS0gdGhlIENMVVNURVIpLiAgVGhpcyBpcyB0aGUgc2hhcGUgdGhhdCBz aWxlbnRseSBsb3N0IHJvd3M6IHRoZSBjbHVzdGVyaW5nCistLSBpbmRleCBoYXMgbm8gZW50 cnkgcG9pbnRpbmcgZGlyZWN0bHkgYXQgdGhlIGxpdmUgdHVwbGUgKGl0cyBlbnRyaWVzIGFk ZHJlc3MKKy0tIGVhcmxpZXIgY2hhaW4gbWVtYmVycywgYW5kIG5vIGZyZXNoIGNsdXN0ZXJp bmctaW5kZXggZW50cnkgd2FzIHBsYW50ZWQKKy0tIGJlY2F1c2UgdGhlIGxhc3QgaG9wIGNo YW5nZWQgYSBkaWZmZXJlbnQgY29sdW1uKSwgc28gQ0xVU1RFUidzIGluZGV4LXNjYW4KKy0t IGNvcHkgcGF0aCAtLSBydW5uaW5nIHVuZGVyIFNuYXBzaG90QW55LCBiZWZvcmUgYW55IHBy dW5lL2NvbGxhcHNlIGluc2VydHMgYQorLS0gcmVkaXJlY3Qvc3R1YiB0aGF0IHdvdWxkIGxl dCBpdCBjaGFpbi13YWxrIHRvIHRoZSBsaXZlIHR1cGxlIC0tIG5ldmVyCistLSByZWFjaGVk IHRoZSByb3cgYW5kIGRyb3BwZWQgaXQgZnJvbSB0aGUgcmV3cml0dGVuIGhlYXAuICBBIGxv c3NsZXNzIHJld3JpdGUKKy0tIG11c3QgcHJlc2VydmUgZXZlcnkgbGl2ZSByb3cgcmVnYXJk bGVzcyBvZiB3aGljaCBpbmRleCBpdCBjbHVzdGVycyBieSwgc28KKy0tIHRoZSBmaXggKHJl cGFjay5jKSBmb3JjZXMgdGhlIHNlcXNjYW4rc29ydCBjb3B5IHBhdGggZm9yIGFueSBoZWFw IHdpdGggbW9yZQorLS0gdGhhbiBvbmUgaW5kZXggKFNJVS1jYXBhYmxlKSwgdGhlIHNhbWUg cGF0aCBWQUNVVU0gRlVMTCBhbHJlYWR5IHVzZXMuCistLQorLS0gTkI6IGRvIE5PVCBWQUNV VU0gYmVmb3JlIHRoZSBDTFVTVEVSIGhlcmUsIGFuZCBrZWVwIGEgbm9uLXJvb215IGZpbGxm YWN0b3I6CistLSBhIGNoYWluIGNvbGxhcHNlIG9yIGEgcm9vbWllciBwYWdlIGJvdGggbWFz ayB0aGUgYnVnICh0aGV5IGNoYW5nZSB3aGF0IHRoZQorLS0gaW5kZXggc2NhbiBjYW4gcmVh Y2gpLCBzbyB0aGlzIHRlc3QgZGVsaWJlcmF0ZWx5IHJlcHJvZHVjZXMgdGhlIGxvc2luZwor LS0gY29uZGl0aW9ucy4KK0NSRUFURSBUQUJMRSBoaV9jbHVzdGVyX2xhc3Rob3AgKGlkIGlu dCBQUklNQVJZIEtFWSwgYSBpbnQsIGIgaW50KQorICBXSVRIIChmaWxsZmFjdG9yID0gNDAs IGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV9jbF9saF9h IE9OIGhpX2NsdXN0ZXJfbGFzdGhvcChhKTsKK0NSRUFURSBJTkRFWCBoaV9jbF9saF9iIE9O IGhpX2NsdXN0ZXJfbGFzdGhvcChiKTsKK0lOU0VSVCBJTlRPIGhpX2NsdXN0ZXJfbGFzdGhv cAorICBTRUxFQ1QgZywgZywgZyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgZzsKKy0t IGlkcyAxLi4xMDogY2hhbmdlIHRoZSBjbHVzdGVyaW5nIGNvbHVtbiBhIGFuZCBjaGFuZ2Ug aXQgYmFjayAoQUJBIG9uIGEpCitVUERBVEUgaGlfY2x1c3Rlcl9sYXN0aG9wIFNFVCBhID0g YSArIDEwMDAgV0hFUkUgaWQgPD0gMTA7CitVUERBVEUgaGlfY2x1c3Rlcl9sYXN0aG9wIFNF VCBhID0gYSAtIDEwMDAgV0hFUkUgaWQgPD0gMTA7CistLSBpZHMgNS4uMTU6IExBU1QgaG9w IGNoYW5nZXMgYiAoYSBkaWZmZXJlbnQgaW5kZXhlZCBjb2x1bW4pLCBhIHVuY2hhbmdlZCBo ZXJlCitVUERBVEUgaGlfY2x1c3Rlcl9sYXN0aG9wIFNFVCBiID0gYiArIDEwMCBXSEVSRSBp ZCBCRVRXRUVOIDUgQU5EIDE1OworU0VMRUNUIG5faG90X2luZGV4ZWQgPj0gMSBBUyBzaXVf Y2hhaW5zX2Zvcm1lZAorICBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdo aV9jbHVzdGVyX2xhc3Rob3AnKTsKKy0tIGdyb3VuZCB0cnV0aCB2aWEgc2Vxc2NhbjogMjAg bGl2ZSByb3dzIChjaGFpbnMgTk9UIGNvbGxhcHNlZCkuCitTRVQgZW5hYmxlX2luZGV4c2Nh biA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgq KSBBUyBuX2JlZm9yZSBGUk9NIGhpX2NsdXN0ZXJfbGFzdGhvcDsKK1JFU0VUIGVuYWJsZV9p bmRleHNjYW47CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKKworQ0xVU1RFUiBoaV9jbHVz dGVyX2xhc3Rob3AgVVNJTkcgaGlfY2xfbGhfYTsKKworLS0gQWxsIHJvd3MgbXVzdCBzdXJ2 aXZlIChzZXFzY2FuLCByZWFkcyB0aGUgaGVhcCBkaXJlY3RseSkuCitTRVQgZW5hYmxlX2lu ZGV4c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBj b3VudCgqKSBBUyBuX2FmdGVyX2NsdXN0ZXJfYSBGUk9NIGhpX2NsdXN0ZXJfbGFzdGhvcDsK K1NFTEVDVCBzdHJpbmdfYWdnKGlkOjp0ZXh0LCAnLCcgT1JERVIgQlkgaWQpIEFTIG1pc3Np bmdfaWRzCisgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBpZAorICBXSEVSRSBpZCBO T1QgSU4gKFNFTEVDVCBpZCBGUk9NIGhpX2NsdXN0ZXJfbGFzdGhvcCk7CitSRVNFVCBlbmFi bGVfaW5kZXhzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CistLSAuLi5hbmQgZXZl cnkgcm93IGlzIGZpbmRhYmxlIHRocm91Z2ggdGhlIGNsdXN0ZXJpbmcgaW5kZXggYWZ0ZXJ3 YXJkLgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9pbmRleHNjYW4g PSBvbjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBB UyBhbGxfZmluZGFibGVfdmlhX2EKKyAgRlJPTSBoaV9jbHVzdGVyX2xhc3Rob3AgV0hFUkUg YSBCRVRXRUVOIDEgQU5EIDEwMDAwMDsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworUkVTRVQg ZW5hYmxlX2luZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworU0VMRUNUIGJ0 X2luZGV4X2NoZWNrKCdoaV9jbF9saF9hJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSk7CisK Ky0tIFNhbWUgbG9zaW5nIHNoYXBlLCBidXQgQ0xVU1RFUiBieSBhIE5PTi1idHJlZSBjbHVz dGVyYWJsZSBpbmRleCAoR2lTVCkuICBUaGUKKy0tIGZpeCBsaXZlcyBpbiB0aGUgaGVhcCBB TSdzIGNvcHktZm9yLWNsdXN0ZXIgcGF0aCBhbmQgaXMgYWdub3N0aWMgdG8gdGhlCistLSBj bHVzdGVyaW5nIGluZGV4J3MgYWNjZXNzIG1ldGhvZCwgc28gdGhpcyBtdXN0IHByZXNlcnZl IGV2ZXJ5IHJvdyB0b28gLS0gYQorLS0gZ3VhcmQgdGhhdCBhIGJ0cmVlLW9ubHkgZml4IChv ciBvbmUgdGhhdCB0b3VjaGVkIGluZGV4IEFNcykgd291bGQgbWlzcy4gIEEKKy0tIEdpU1Qg Y2x1c3RlcmluZyBpbmRleCBoYXMgbm8gc29ydCBwYXRoLCBzbyB0aGUgaGVhcCBBTSBmYWxs cyBiYWNrIHRvIGEgcGxhaW4KKy0tIHNlcXNjYW4gY29weTsgb3JkZXIgaXMgbm90IHByZXNl cnZlZCwgYnV0IG5vIGxpdmUgcm93IGlzIGxvc3QuCitDUkVBVEUgRVhURU5TSU9OIElGIE5P VCBFWElTVFMgYnRyZWVfZ2lzdDsKK0NSRUFURSBUQUJMRSBoaV9jbHVzdGVyX2dpc3QgKGlk IGludCBQUklNQVJZIEtFWSwgYSBpbnQsIGIgaW50KQorICBXSVRIIChmaWxsZmFjdG9yID0g NDAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV9jbF9n X2EgT04gaGlfY2x1c3Rlcl9naXN0IFVTSU5HIGdpc3QgKGEpOworQ1JFQVRFIElOREVYIGhp X2NsX2dfYiBPTiBoaV9jbHVzdGVyX2dpc3QgKGIpOworSU5TRVJUIElOVE8gaGlfY2x1c3Rl cl9naXN0CisgIFNFTEVDVCBnLCBnLCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBn OworVVBEQVRFIGhpX2NsdXN0ZXJfZ2lzdCBTRVQgYSA9IGEgKyAxMDAwIFdIRVJFIGlkIDw9 IDEwOworVVBEQVRFIGhpX2NsdXN0ZXJfZ2lzdCBTRVQgYSA9IGEgLSAxMDAwIFdIRVJFIGlk IDw9IDEwOworVVBEQVRFIGhpX2NsdXN0ZXJfZ2lzdCBTRVQgYiA9IGIgKyAxMDAgV0hFUkUg aWQgQkVUV0VFTiA1IEFORCAxNTsKKworQ0xVU1RFUiBoaV9jbHVzdGVyX2dpc3QgVVNJTkcg aGlfY2xfZ19hOworCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVf Yml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBuX2FmdGVyX2NsdXN0ZXJf Z2lzdCBGUk9NIGhpX2NsdXN0ZXJfZ2lzdDsKK1NFTEVDVCBzdHJpbmdfYWdnKGlkOjp0ZXh0 LCAnLCcgT1JERVIgQlkgaWQpIEFTIG1pc3NpbmdfaWRzX2dpc3QKKyAgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMjApIGlkCisgIFdIRVJFIGlkIE5PVCBJTiAoU0VMRUNUIGlkIEZST00g aGlfY2x1c3Rlcl9naXN0KTsKK1JFU0VUIGVuYWJsZV9pbmRleHNjYW47CitSRVNFVCBlbmFi bGVfYml0bWFwc2NhbjsKK0RST1AgVEFCTEUgaGlfY2x1c3Rlcl9naXN0OworU0VMRUNUICog RlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV9jbHVzdGVyX2xhc3Rob3AnKTsKK0RST1AgVEFCTEUg aGlfY2x1c3Rlcl9sYXN0aG9wOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIENs ZWFudXAKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRFJPUCBGVU5DVElPTiBnZXRfaGlf Y291bnQodGV4dCk7CitEUk9QIEZVTkNUSU9OIGdldF9ob3RfY291bnQodGV4dCk7CistLSBw YWdlaW5zcGVjdCBhbmQgYW1jaGVjayB3ZXJlIGJvdGggY3JlYXRlZCBhYm92ZSB3aXRoIElG IE5PVCBFWElTVFMgYW5kIG1heQorLS0gaGF2ZSBwcmUtZXhpc3RlZCB0aGlzIHRlc3Q7IGxl YXZlIHRoZW0sIG1hdGNoaW5nIGFtY2hlY2sncyB0cmVhdG1lbnQsCistLSByYXRoZXIgdGhh biByaXNrIGRyb3BwaW5nIGFuIGV4dGVuc2lvbiB0aGlzIHRlc3QgZGlkIG5vdCBjcmVhdGUu CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwgYi9j b250cmliL3BhZ2VpbnNwZWN0L3NxbC9ob3RfdXBkYXRlcy5zcWwKc2ltaWxhcml0eSBpbmRl eCA5OCUKcmVuYW1lIGZyb20gc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3Fs CnJlbmFtZSB0byBjb250cmliL3BhZ2VpbnNwZWN0L3NxbC9ob3RfdXBkYXRlcy5zcWwKaW5k ZXggMzVjZTdlMWNkY2QuLjkxOWUwOTM5ZDdjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwKKysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9zcWwv aG90X3VwZGF0ZXMuc3FsCkBAIC0zOTUsNCArMzk1LDUgQEAgRFJPUCBUQUJMRSBob3RfZ2lu X3Rlc3Q7CiBEUk9QIEZVTkNUSU9OIGhhc19ob3RfY2hhaW4odGV4dCwgdGlkKTsKIERST1Ag RlVOQ1RJT04gcHJpbnRfaG90X2NoYWluKHRleHQsIHRpZCk7CiBEUk9QIEZVTkNUSU9OIGdl dF9ob3RfY291bnQodGV4dCk7Ci1EUk9QIEVYVEVOU0lPTiBwYWdlaW5zcGVjdDsKKy0tIExl YXZlIHBhZ2VpbnNwZWN0IGluc3RhbGxlZDogdGhpcyBydW5zIGluc2lkZSB0aGUgcGFnZWlu c3BlY3QgcmVncmVzcyBzdWl0ZQorLS0gKHBhZ2Uuc3FsIGNyZWF0ZWQgaXQpLCBhbmQgb3Ro ZXIgdGVzdHMgaW4gdGhlIHNjaGVkdWxlIHN0aWxsIG5lZWQgaXQuCmRpZmYgLS1naXQgYS9j b250cmliL3BnX3N1cmdlcnkvTWFrZWZpbGUgYi9jb250cmliL3BnX3N1cmdlcnkvTWFrZWZp bGUKaW5kZXggYTY2Nzc2YzRjNDEuLmRhNzUyYTgxMTQ3IDEwMDY0NAotLS0gYS9jb250cmli L3BnX3N1cmdlcnkvTWFrZWZpbGUKKysrIGIvY29udHJpYi9wZ19zdXJnZXJ5L01ha2VmaWxl CkBAIC0xMCw2ICsxMCw3IEBAIERBVEEgPSBwZ19zdXJnZXJ5LS0xLjAuc3FsCiBQR0ZJTEVE RVNDID0gInBnX3N1cmdlcnkgLSBwZXJmb3JtIHN1cmdlcnkgb24gYSBkYW1hZ2VkIHJlbGF0 aW9uIgogCiBSRUdSRVNTID0gaGVhcF9zdXJnZXJ5CitFWFRSQV9JTlNUQUxMID0gY29udHJp Yi9wYWdlaW5zcGVjdAogCiBpZmRlZiBVU0VfUEdYUwogUEdfQ09ORklHID0gcGdfY29uZmln CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N1cmdlcnkvZXhwZWN0ZWQvaGVhcF9zdXJnZXJ5 Lm91dCBiL2NvbnRyaWIvcGdfc3VyZ2VyeS9leHBlY3RlZC9oZWFwX3N1cmdlcnkub3V0Cmlu ZGV4IGRmN2QxM2IwOTA4Li4xYTVmZWY1YjJiYiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19z dXJnZXJ5L2V4cGVjdGVkL2hlYXBfc3VyZ2VyeS5vdXQKKysrIGIvY29udHJpYi9wZ19zdXJn ZXJ5L2V4cGVjdGVkL2hlYXBfc3VyZ2VyeS5vdXQKQEAgLTE3NSw2ICsxNzUsODkgQEAgREVU QUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3Igdmlld3MuCiBzZWxl Y3QgaGVhcF9mb3JjZV9mcmVlemUoJ3Z3Jzo6cmVnY2xhc3MsIEFSUkFZWycoMCwgMSknXTo6 dGlkW10pOwogRVJST1I6ICBjYW5ub3Qgb3BlcmF0ZSBvbiByZWxhdGlvbiAidnciCiBERVRB SUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aWV3cy4KKy0tIEEg SE9UL1NJVSBjaGFpbiBjb2xsYXBzZSB0dXJucyB0aGUgY2hhaW4gcm9vdCBhbmQgZWFjaCBk ZWFkIGVudHJ5LWJlYXJpbmcKKy0tIG1lbWJlciBpbnRvIGFuIExQX1JFRElSRUNUIHRvIHRo ZSBsaXZlIHR1cGxlLiAgcGdfc3VyZ2VyeSBvcGVyYXRlcyBvbiByZWFsCistLSB0dXBsZXMg YW5kIG11c3QgbGVhdmUgdGhlIGxpdmUgcm93IHJlYWNoYWJsZSBhZnRlciBzdWNoIGEgY29s bGFwc2UuCitjcmVhdGUgZXh0ZW5zaW9uIHBhZ2VpbnNwZWN0OworY3JlYXRlIHRhYmxlIGh0 b21iIChpZCBpbnQgcHJpbWFyeSBrZXksIGEgaW50LCBiIGludCkgd2l0aCAoZmlsbGZhY3Rv ciA9IDUwKTsKK2NyZWF0ZSBpbmRleCBodG9tYl9hIG9uIGh0b21iKGEpOworaW5zZXJ0IGlu dG8gaHRvbWIgdmFsdWVzICgxLCAxMCwgMjApOworLS0gVHdvIEhPVC1pbmRleGVkIHVwZGF0 ZXMgb24gYW4gaW5kZXhlZCBhdHRyLCB0aGVuIHBydW5lOiB0aGUgZGVhZCBtaWQtY2hhaW4K Ky0tIHZlcnNpb25zIGNvbGxhcHNlIHRvIExQX1JFRElSRUNUcyB0byB0aGUgbGl2ZSB0dXBs ZS4gIElOREVYX0NMRUFOVVAgb2ZmIGtlZXBzCistLSB0aGUgc3RhbGUgYnRyZWUgbGVhdmVz IChhbmQgaGVuY2UgdGhlIHJlZGlyZWN0cykgaW4gcGxhY2UuCit1cGRhdGUgaHRvbWIgc2V0 IGEgPSAxMSB3aGVyZSBpZCA9IDE7Cit1cGRhdGUgaHRvbWIgc2V0IGEgPSAxMiB3aGVyZSBp ZCA9IDE7Cit2YWN1dW0gKGluZGV4X2NsZWFudXAgb2ZmKSBodG9tYjsKK3NlbGVjdCBuX2hv dF9pbmRleGVkID4gMCBhcyBtYWRlX2hvdF9pbmRleGVkCisgIGZyb20gcGdfcmVsYXRpb25f aG90X2luZGV4ZWRfc3RhdHMoJ2h0b21iJyk7CisgbWFkZV9ob3RfaW5kZXhlZCAKKy0tLS0t LS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gdGhlIGxpdmUgcm93IGlzIGludGFj dCBhbmQgcmVhY2hhYmxlIGFmdGVyIHRoZSBjb2xsYXBzZQorc2VsZWN0IGlkLCBhLCBiIGZy b20gaHRvbWI7CisgaWQgfCBhICB8IGIgIAorLS0tLSstLS0tKy0tLS0KKyAgMSB8IDEyIHwg MjAKKygxIHJvdykKKworZHJvcCB0YWJsZSBodG9tYjsKKy0tIEEgY29sbGFwc2UgdGhhdCBr ZWVwcyBhICpzdHViKiAoYW4geGlkLWZyZWUgZm9yd2FyZGluZyBMUF9OT1JNQUwgaXRlbSB3 aXRoCistLSBuYXR0cyA9PSAwKSwgbm90IGp1c3QgcmVkaXJlY3RzOiB1cGRhdGUgdHdvIGRp ZmZlcmVudCBpbmRleGVkIGNvbHVtbnMgc28gdGhlCistLSBmaXJzdCBkZWFkIG1lbWJlcidz IGNoYW5nZWQtYXR0ciBiaXRtYXAgaXMgbm90IHN1YnN1bWVkIGJ5IGxhdGVyIGhvcHMgYW5k IGlzCistLSBwcmVzZXJ2ZWQgYXMgYSBzdHViLiAgcGdfc3VyZ2VyeSBtdXN0IHNraXAgc3Vj aCBhIHN0dWIgLS0gZm9yY2luZyBhCistLSBmcmVlemUva2lsbCB3b3VsZCBvdmVyd3JpdGUg aXRzIHRfY3RpZCBmb3J3YXJkIGxpbmsgYW5kIGNvcnJ1cHQgdGhlIGNoYWluLgorY3JlYXRl IHRhYmxlIGhzdHViIChpZCBpbnQgcHJpbWFyeSBrZXksIGEgaW50LCBiIGludCkgd2l0aCAo ZmlsbGZhY3RvciA9IDUwKTsKK2NyZWF0ZSBpbmRleCBoc3R1Yl9hIG9uIGhzdHViKGEpOwor Y3JlYXRlIGluZGV4IGhzdHViX2Igb24gaHN0dWIoYik7CitpbnNlcnQgaW50byBoc3R1YiB2 YWx1ZXMgKDEsIDEwLCAxMDApOwordXBkYXRlIGhzdHViIHNldCBhID0gMTEgd2hlcmUgaWQg PSAxOyAgIC0tIGNoYW5nZXMgYQordXBkYXRlIGhzdHViIHNldCBhID0gMTIgd2hlcmUgaWQg PSAxOyAgIC0tIGNoYW5nZXMgYSBhZ2FpbiAoc3VwZXJzZWRlcykKK3VwZGF0ZSBoc3R1YiBz ZXQgYiA9IDEwMSB3aGVyZSBpZCA9IDE7ICAtLSBjaGFuZ2VzIGIgLT4gZmlyc3QgaG9wJ3Mg e2F9IGtlcHQgYXMgc3R1YgordmFjdXVtIChpbmRleF9jbGVhbnVwIG9mZikgaHN0dWI7Cist LSBMb2NhdGUgdGhlIHN0dWI6IGFuIExQX05PUk1BTCBpdGVtIGNhcnJ5aW5nIEhFQVBfSU5E RVhFRF9VUERBVEVEICgweDA4MDAgaW4KKy0tIHRfaW5mb21hc2syKSB3aXRoIHplcm8gbGl2 ZSBhdHRyaWJ1dGVzICh0X2luZm9tYXNrMiBuYXR0cyBiaXRzID09IDApLgorc2VsZWN0IGxw IGFzIHN0dWJfb2ZmCisgIGZyb20gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnaHN0 dWInLCAwKSkKKyAgd2hlcmUgbHBfZmxhZ3MgPSAxICAgICAgICAgICAgICAgICAgICAgICAt LSBMUF9OT1JNQUwKKyAgICBhbmQgKHRfaW5mb21hc2syICYgMjA0OCkgPD4gMCAgICAgICAg ICAtLSBIRUFQX0lOREVYRURfVVBEQVRFRAorICAgIGFuZCAodF9pbmZvbWFzazIgJiAyMDQ3 KSA9IDAgICAgICAgICAgIC0tIG5hdHRzID09IDAgKHN0dWIgc2VudGluZWwpCisgIFxnc2V0 CistLSBGb3JjZSBraWxsL2ZyZWV6ZSBvbiB0aGUgc3R1YidzIHRpZDogYm90aCBtdXN0IGJl IHJlZnVzZWQgd2l0aCBhIE5PVElDRS4KK3NlbGVjdCBoZWFwX2ZvcmNlX2tpbGwoJ2hzdHVi Jzo6cmVnY2xhc3MsIEFSUkFZWygnKDAsJyB8fCA6J3N0dWJfb2ZmJyB8fCAnKScpXTo6dGlk W10pOworTk9USUNFOiAgc2tpcHBpbmcgdGlkICgwLCAzKSBmb3IgcmVsYXRpb24gImhzdHVi IiBiZWNhdXNlIGl0IGlzIGEgSE9ULWluZGV4ZWQgY29sbGFwc2Ugc3R1YgorIGhlYXBfZm9y Y2Vfa2lsbCAKKy0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBoZWFw X2ZvcmNlX2ZyZWV6ZSgnaHN0dWInOjpyZWdjbGFzcywgQVJSQVlbKCcoMCwnIHx8IDonc3R1 Yl9vZmYnIHx8ICcpJyldOjp0aWRbXSk7CitOT1RJQ0U6ICBza2lwcGluZyB0aWQgKDAsIDMp IGZvciByZWxhdGlvbiAiaHN0dWIiIGJlY2F1c2UgaXQgaXMgYSBIT1QtaW5kZXhlZCBjb2xs YXBzZSBzdHViCisgaGVhcF9mb3JjZV9mcmVlemUgCistLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKKy0tIFRoZSBjaGFpbiBpcyB1bnRvdWNoZWQ6IHRoZSBsaXZlIHJvdyBp cyBzdGlsbCByZWFjaGFibGUgdGhyb3VnaCBlYWNoIGluZGV4Lgorc2V0IGVuYWJsZV9zZXFz Y2FuID0gb2ZmOworc2V0IGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworc2VsZWN0IGlkLCBh LCBiIGZyb20gaHN0dWIgd2hlcmUgYSA9IDEyOworIGlkIHwgYSAgfCAgYiAgCistLS0tKy0t LS0rLS0tLS0KKyAgMSB8IDEyIHwgMTAxCisoMSByb3cpCisKK3NlbGVjdCBpZCwgYSwgYiBm cm9tIGhzdHViIHdoZXJlIGIgPSAxMDE7CisgaWQgfCBhICB8ICBiICAKKy0tLS0rLS0tLSst LS0tLQorICAxIHwgMTIgfCAxMDEKKygxIHJvdykKKworcmVzZXQgZW5hYmxlX2JpdG1hcHNj YW47CityZXNldCBlbmFibGVfc2Vxc2NhbjsKK2Ryb3AgdGFibGUgaHN0dWI7Citkcm9wIGV4 dGVuc2lvbiBwYWdlaW5zcGVjdDsKIC0tIGNsZWFudXAuCiBkcm9wIHZpZXcgdnc7CiBkcm9w IGV4dGVuc2lvbiBwZ19zdXJnZXJ5OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdXJnZXJ5 L2hlYXBfc3VyZ2VyeS5jIGIvY29udHJpYi9wZ19zdXJnZXJ5L2hlYXBfc3VyZ2VyeS5jCmlu ZGV4IGI4Y2UxMDk1NzgyLi43ZmM2NTNjYzMzNCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19z dXJnZXJ5L2hlYXBfc3VyZ2VyeS5jCisrKyBiL2NvbnRyaWIvcGdfc3VyZ2VyeS9oZWFwX3N1 cmdlcnkuYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNp bmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hvdF9p bmRleGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgpA QCAtMjI2LDYgKzIyNywyMSBAQCBoZWFwX2ZvcmNlX2NvbW1vbihGdW5jdGlvbkNhbGxJbmZv IGZjaW5mbywgSGVhcFR1cGxlRm9yY2VPcHRpb24gaGVhcF9mb3JjZV9vcHQpCiAJCQkJCQkJ CWJsa25vLCBvZmZubywgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKIAkJCQlj b250aW51ZTsKIAkJCX0KKwkJCWVsc2UgaWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIoKEhl YXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgaXRlbWlkKSkpCisJCQl7CisJCQkJ LyoKKwkJCQkgKiBBIEhPVC1pbmRleGVkIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIgaXMgYW4g eGlkLWZyZWUKKwkJCQkgKiBmb3J3YXJkaW5nIG5vZGUsIG5vdCBhIHJlYWwgdHVwbGU6IGl0 cyB0X2N0aWQgY2FycmllcyB0aGUKKwkJCQkgKiBjaGFpbiBmb3J3YXJkIGxpbmsgYW5kIHRo ZSB3cml0ZS10aW1lIG5hdHRzLCBhbmQgaXQgaGFzIG5vCisJCQkJICogYXR0cmlidXRlIGRh dGEuICBGb3JjaW5nIGEga2lsbCBvciBmcmVlemUgd291bGQgb3ZlcndyaXRlCisJCQkJICog dF9jdGlkIGFuZCBjbGVhciBpdHMgeGFjdCBiaXRzLCBicmVha2luZyB0aGUgY2hhaW4gd2Fs ayBhbmQKKwkJCQkgKiBjb3JydXB0aW5nIHRoZSBoZWFwLiAgU2tpcCBpdCwgYXMgd2UgZG8g Zm9yIHJlZGlyZWN0cy4KKwkJCQkgKi8KKwkJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJCShl cnJtc2coInNraXBwaW5nIHRpZCAoJXUsICV1KSBmb3IgcmVsYXRpb24gXCIlc1wiIGJlY2F1 c2UgaXQgaXMgYSBIT1QtaW5kZXhlZCBjb2xsYXBzZSBzdHViIiwKKwkJCQkJCQkJYmxrbm8s IG9mZm5vLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQkJCWNvbnRpbnVl OworCQkJfQogCiAJCQkvKiBNYXJrIGl0IGZvciBwcm9jZXNzaW5nLiAqLwogCQkJQXNzZXJ0 KG9mZm5vIDw9IE1heEhlYXBUdXBsZXNQZXJQYWdlKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIv cGdfc3VyZ2VyeS9zcWwvaGVhcF9zdXJnZXJ5LnNxbCBiL2NvbnRyaWIvcGdfc3VyZ2VyeS9z cWwvaGVhcF9zdXJnZXJ5LnNxbAppbmRleCA2NTI2YjI3NTM1ZC4uYmU0ZmVkMmFmNjUgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3VyZ2VyeS9zcWwvaGVhcF9zdXJnZXJ5LnNxbAorKysg Yi9jb250cmliL3BnX3N1cmdlcnkvc3FsL2hlYXBfc3VyZ2VyeS5zcWwKQEAgLTgzLDYgKzgz LDU5IEBAIGNyZWF0ZSB2aWV3IHZ3IGFzIHNlbGVjdCAxOwogc2VsZWN0IGhlYXBfZm9yY2Vf a2lsbCgndncnOjpyZWdjbGFzcywgQVJSQVlbJygwLCAxKSddOjp0aWRbXSk7CiBzZWxlY3Qg aGVhcF9mb3JjZV9mcmVlemUoJ3Z3Jzo6cmVnY2xhc3MsIEFSUkFZWycoMCwgMSknXTo6dGlk W10pOwogCistLSBBIEhPVC9TSVUgY2hhaW4gY29sbGFwc2UgdHVybnMgdGhlIGNoYWluIHJv b3QgYW5kIGVhY2ggZGVhZCBlbnRyeS1iZWFyaW5nCistLSBtZW1iZXIgaW50byBhbiBMUF9S RURJUkVDVCB0byB0aGUgbGl2ZSB0dXBsZS4gIHBnX3N1cmdlcnkgb3BlcmF0ZXMgb24gcmVh bAorLS0gdHVwbGVzIGFuZCBtdXN0IGxlYXZlIHRoZSBsaXZlIHJvdyByZWFjaGFibGUgYWZ0 ZXIgc3VjaCBhIGNvbGxhcHNlLgorY3JlYXRlIGV4dGVuc2lvbiBwYWdlaW5zcGVjdDsKK2Ny ZWF0ZSB0YWJsZSBodG9tYiAoaWQgaW50IHByaW1hcnkga2V5LCBhIGludCwgYiBpbnQpIHdp dGggKGZpbGxmYWN0b3IgPSA1MCk7CitjcmVhdGUgaW5kZXggaHRvbWJfYSBvbiBodG9tYihh KTsKK2luc2VydCBpbnRvIGh0b21iIHZhbHVlcyAoMSwgMTAsIDIwKTsKKy0tIFR3byBIT1Qt aW5kZXhlZCB1cGRhdGVzIG9uIGFuIGluZGV4ZWQgYXR0ciwgdGhlbiBwcnVuZTogdGhlIGRl YWQgbWlkLWNoYWluCistLSB2ZXJzaW9ucyBjb2xsYXBzZSB0byBMUF9SRURJUkVDVHMgdG8g dGhlIGxpdmUgdHVwbGUuICBJTkRFWF9DTEVBTlVQIG9mZiBrZWVwcworLS0gdGhlIHN0YWxl IGJ0cmVlIGxlYXZlcyAoYW5kIGhlbmNlIHRoZSByZWRpcmVjdHMpIGluIHBsYWNlLgordXBk YXRlIGh0b21iIHNldCBhID0gMTEgd2hlcmUgaWQgPSAxOwordXBkYXRlIGh0b21iIHNldCBh ID0gMTIgd2hlcmUgaWQgPSAxOwordmFjdXVtIChpbmRleF9jbGVhbnVwIG9mZikgaHRvbWI7 CitzZWxlY3Qgbl9ob3RfaW5kZXhlZCA+IDAgYXMgbWFkZV9ob3RfaW5kZXhlZAorICBmcm9t IHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdodG9tYicpOworLS0gdGhlIGxpdmUg cm93IGlzIGludGFjdCBhbmQgcmVhY2hhYmxlIGFmdGVyIHRoZSBjb2xsYXBzZQorc2VsZWN0 IGlkLCBhLCBiIGZyb20gaHRvbWI7Citkcm9wIHRhYmxlIGh0b21iOworCistLSBBIGNvbGxh cHNlIHRoYXQga2VlcHMgYSAqc3R1YiogKGFuIHhpZC1mcmVlIGZvcndhcmRpbmcgTFBfTk9S TUFMIGl0ZW0gd2l0aAorLS0gbmF0dHMgPT0gMCksIG5vdCBqdXN0IHJlZGlyZWN0czogdXBk YXRlIHR3byBkaWZmZXJlbnQgaW5kZXhlZCBjb2x1bW5zIHNvIHRoZQorLS0gZmlyc3QgZGVh ZCBtZW1iZXIncyBjaGFuZ2VkLWF0dHIgYml0bWFwIGlzIG5vdCBzdWJzdW1lZCBieSBsYXRl ciBob3BzIGFuZCBpcworLS0gcHJlc2VydmVkIGFzIGEgc3R1Yi4gIHBnX3N1cmdlcnkgbXVz dCBza2lwIHN1Y2ggYSBzdHViIC0tIGZvcmNpbmcgYQorLS0gZnJlZXplL2tpbGwgd291bGQg b3ZlcndyaXRlIGl0cyB0X2N0aWQgZm9yd2FyZCBsaW5rIGFuZCBjb3JydXB0IHRoZSBjaGFp bi4KK2NyZWF0ZSB0YWJsZSBoc3R1YiAoaWQgaW50IHByaW1hcnkga2V5LCBhIGludCwgYiBp bnQpIHdpdGggKGZpbGxmYWN0b3IgPSA1MCk7CitjcmVhdGUgaW5kZXggaHN0dWJfYSBvbiBo c3R1YihhKTsKK2NyZWF0ZSBpbmRleCBoc3R1Yl9iIG9uIGhzdHViKGIpOworaW5zZXJ0IGlu dG8gaHN0dWIgdmFsdWVzICgxLCAxMCwgMTAwKTsKK3VwZGF0ZSBoc3R1YiBzZXQgYSA9IDEx IHdoZXJlIGlkID0gMTsgICAtLSBjaGFuZ2VzIGEKK3VwZGF0ZSBoc3R1YiBzZXQgYSA9IDEy IHdoZXJlIGlkID0gMTsgICAtLSBjaGFuZ2VzIGEgYWdhaW4gKHN1cGVyc2VkZXMpCit1cGRh dGUgaHN0dWIgc2V0IGIgPSAxMDEgd2hlcmUgaWQgPSAxOyAgLS0gY2hhbmdlcyBiIC0+IGZp cnN0IGhvcCdzIHthfSBrZXB0IGFzIHN0dWIKK3ZhY3V1bSAoaW5kZXhfY2xlYW51cCBvZmYp IGhzdHViOworLS0gTG9jYXRlIHRoZSBzdHViOiBhbiBMUF9OT1JNQUwgaXRlbSBjYXJyeWlu ZyBIRUFQX0lOREVYRURfVVBEQVRFRCAoMHgwODAwIGluCistLSB0X2luZm9tYXNrMikgd2l0 aCB6ZXJvIGxpdmUgYXR0cmlidXRlcyAodF9pbmZvbWFzazIgbmF0dHMgYml0cyA9PSAwKS4K K3NlbGVjdCBscCBhcyBzdHViX29mZgorICBmcm9tIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3 X3BhZ2UoJ2hzdHViJywgMCkpCisgIHdoZXJlIGxwX2ZsYWdzID0gMSAgICAgICAgICAgICAg ICAgICAgICAgLS0gTFBfTk9STUFMCisgICAgYW5kICh0X2luZm9tYXNrMiAmIDIwNDgpIDw+ IDAgICAgICAgICAgLS0gSEVBUF9JTkRFWEVEX1VQREFURUQKKyAgICBhbmQgKHRfaW5mb21h c2syICYgMjA0NykgPSAwICAgICAgICAgICAtLSBuYXR0cyA9PSAwIChzdHViIHNlbnRpbmVs KQorICBcZ3NldAorLS0gRm9yY2Uga2lsbC9mcmVlemUgb24gdGhlIHN0dWIncyB0aWQ6IGJv dGggbXVzdCBiZSByZWZ1c2VkIHdpdGggYSBOT1RJQ0UuCitzZWxlY3QgaGVhcF9mb3JjZV9r aWxsKCdoc3R1Yic6OnJlZ2NsYXNzLCBBUlJBWVsoJygwLCcgfHwgOidzdHViX29mZicgfHwg JyknKV06OnRpZFtdKTsKK3NlbGVjdCBoZWFwX2ZvcmNlX2ZyZWV6ZSgnaHN0dWInOjpyZWdj bGFzcywgQVJSQVlbKCcoMCwnIHx8IDonc3R1Yl9vZmYnIHx8ICcpJyldOjp0aWRbXSk7Cist LSBUaGUgY2hhaW4gaXMgdW50b3VjaGVkOiB0aGUgbGl2ZSByb3cgaXMgc3RpbGwgcmVhY2hh YmxlIHRocm91Z2ggZWFjaCBpbmRleC4KK3NldCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK3Nl dCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK3NlbGVjdCBpZCwgYSwgYiBmcm9tIGhzdHVi IHdoZXJlIGEgPSAxMjsKK3NlbGVjdCBpZCwgYSwgYiBmcm9tIGhzdHViIHdoZXJlIGIgPSAx MDE7CityZXNldCBlbmFibGVfYml0bWFwc2NhbjsKK3Jlc2V0IGVuYWJsZV9zZXFzY2FuOwor ZHJvcCB0YWJsZSBoc3R1YjsKK2Ryb3AgZXh0ZW5zaW9uIHBhZ2VpbnNwZWN0OworCiAtLSBj bGVhbnVwLgogZHJvcCB2aWV3IHZ3OwogZHJvcCBleHRlbnNpb24gcGdfc3VyZ2VyeTsKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sCmluZGV4IGQxYTIwZDAwMWU5Li4yNDJmNjIxOGU5NiAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sCkBAIC00NDY3LDYgKzQ0NjcsMTkgQEAgZGVzY3JpcHRpb24gfCBX YWl0aW5nIGZvciBhIG5ld2x5IGluaXRpYWxpemVkIFdBTCBmaWxlIHRvIHJlYWNoIGR1cmFi bGUgc3RvcmFnZQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5uX3R1cF9o b3RfaW5kZXhlZF91cGQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAg ICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2Ygcm93cyB1cGRhdGVk IHVzaW5nIHRoZSBIT1QtaW5kZXhlZCBwYXRoOiB0aGUgc3VjY2Vzc29yCisgICAgICAgdmVy c2lvbiBzdGF5cyBvbiB0aGUgc2FtZSBwYWdlIGFzIGEgaGVhcC1vbmx5IHR1cGxlIGV2ZW4g dGhvdWdoIGl0CisgICAgICAgY2hhbmdlZCBvbmUgb3IgbW9yZSBpbmRleGVkIGNvbHVtbnMs IGFuZCBvbmx5IHRoZSBhZmZlY3RlZCBpbmRleGVzCisgICAgICAgcmVjZWl2ZSBhIG5ldyBl bnRyeS4gIEV2ZXJ5IHN1Y2ggdXBkYXRlIGlzIGFsc28gY291bnRlZCBpbgorICAgICAgIDxz dHJ1Y3RmaWVsZD5uX3R1cF9ob3RfdXBkPC9zdHJ1Y3RmaWVsZD4uCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CiAgICAgICAgPHN0cnVjdGZpZWxkPm5fdHVwX25ld3BhZ2VfdXBkPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+YmlnaW50PC90eXBlPgpAQCAtNDkzNyw2ICs0OTUwLDI3IEBAIGRlc2NyaXB0aW9u 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 NTYxOCw2ICs1NjUyLDI5IEBAIGRlc2NyaXB0aW9uIHwgV2FpdGluZyBmb3IgYSBuZXdseSBp 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 YXp5Lm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaG90X2luZGV4 ZWRfc3RhdHMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hvdF9pbmRleGVkX3N0YXRz LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg5NWEyOTY1NGI1 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaG90X2luZGV4 ZWRfc3RhdHMuYwpAQCAtMCwwICsxLDE4OCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KgorICogaG90X2luZGV4ZWRfc3RhdHMuYworICoJICBTUUwtY2FsbGFibGUgZGlhZ25vc3Rp YyB0aGF0IHdhbGtzIGV2ZXJ5IHBhZ2Ugb2YgYSBoZWFwIHJlbGF0aW9uIGFuZAorICoJICBy ZXBvcnRzIGhvdC1pbmRleGVkLXJlbGF0ZWQgc3RydWN0dXJhbCBzdGF0aXN0aWNzLgorICoK KyAqIFRoZXNlIG51bWJlcnMgY29tcGxlbWVudCB0aGUgcnVubmluZyBwZ3N0YXQgY291bnRl cnMKKyAqIChuX3R1cF9ob3RfaW5kZXhlZF91cGQgaW4gcGdfc3RhdF9hbGxfdGFibGVzKTog dGhleSBhbnN3ZXIgIndoYXQgaXMgb24gZGlzaworICogcmlnaHQgbm93PyIgcmF0aGVyIHRo YW4gImhvdyBvZnRlbiBkaWQgaG90LWluZGV4ZWQgZmlyZSBkdXJpbmcgdGhlIHN0YXRzCisg KiB3aW5kb3c/Ii4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNB VElPTgorICoJICBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9ob3RfaW5kZXhlZF9zdGF0cy5j CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5o IgorCisjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbS5oIgorI2luY2x1ZGUgImFjY2Vzcy9ob3Rf aW5kZXhlZC5oIgorI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRl ICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUu aCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9idWZwYWdlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pdGVtcHRyLmgiCisjaW5j bHVkZSAidXRpbHMvYWNsLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNs dWRlICJ1dGlscy9yZWwuaCIKKworLyoKKyAqIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0 YXRzKHJlZ2NsYXNzKSAtPiByZWNvcmQKKyAqCisgKiBXYWxrcyBldmVyeSBibG9jayBvZiB0 aGUgcmVsYXRpb24ncyBtYWluIGZvcmsgYW5kIGNvdW50czoKKyAqICAgbl9ob3RfaW5kZXhl ZCAgIC0tIGxpdmUgSE9ULWluZGV4ZWQgdmVyc2lvbnMgKEhFQVBfSU5ERVhFRF9VUERBVEVE LCBuYXR0cz4wLAorICogICAgICAgICAgICAgICAgICAgICAgY2FycnlpbmcgYW4gaW5saW5l LXRyYWlsaW5nIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCkKKyAqICAgbl9jaGFpbnMgICAgICAg IC0tIExQX1JFRElSRUNUIGl0ZW1zLCBpLmUuIEhPVCBjaGFpbiByb290cy4gIE1hdGNoZXMK KyAqICAgICAgICAgICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgZGlzdGluY3QgSE9UIGNo YWlucyB0aGF0IGhhdmUgc3Vydml2ZWQKKyAqICAgICAgICAgICAgICAgICAgICAgIHRoZSBt b3N0IHJlY2VudCBwcnVuZS4gIFJvb3Qtbm90LXJlZGlyZWN0IGNoYWlucworICogICAgICAg ICAgICAgICAgICAgICAgKGxlbmd0aCAxKSBhcmUgbm90IGNvdW50ZWQgaGVyZSBiZWNhdXNl IHRoZXkgYXJlCisgKiAgICAgICAgICAgICAgICAgICAgICBpbmRpc3Rpbmd1aXNoYWJsZSBm cm9tIGEgbm9uLWNoYWluIHR1cGxlLgorICogICBhdmdfY2hhaW5fbGVuICAgLS0gbWVhbiBs ZW5ndGggYWNyb3NzIGNoYWlucyByb290ZWQgYXQgYW4gTFBfUkVESVJFQ1QsCisgKiAgICAg ICAgICAgICAgICAgICAgICBkZXJpdmVkIGJ5IHdhbGtpbmcgZWFjaCByZWRpcmVjdCB0YXJn ZXQgdG8gdGhlIGVuZAorICogICAgICAgICAgICAgICAgICAgICAgb2YgaXRzIEhFQVBfSE9U X1VQREFURUQgY2hhaW4uCisgKiAgIG1heF9jaGFpbl9sZW4gICAtLSBsb25nZXN0IGNoYWlu IG9ic2VydmVkLgorICoKKyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIFNFTEVDVCBwcml2aWxl Z2Ugb24gdGhlIHJlbGF0aW9uLCBsaWtlIG90aGVyCisgKiByZWxhdGlvbi1pbnNwZWN0aW9u IGZ1bmN0aW9uczsgaXQgdGFrZXMgb25seSBBY2Nlc3NTaGFyZUxvY2sgYW5kIHNob3J0LXRl cm0KKyAqIGJ1ZmZlciBzaGFyZSBsb2NrcyB3aGlsZSBzY2FubmluZy4KKyAqLworRGF0dW0K K3BnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJ T2lkCQkJcmVsaWQgPSBQR19HRVRBUkdfT0lEKDApOworCVJlbGF0aW9uCXJlbDsKKwlBY2xS ZXN1bHQJYWNscmVzdWx0OworCUJsb2NrTnVtYmVyIG5ibG9ja3M7CisJQmxvY2tOdW1iZXIg YmxrOworCWludDY0CQluX2hvdF9pbmRleGVkID0gMDsKKwlpbnQ2NAkJbl9jaGFpbnMgPSAw OworCWludDY0CQlzdW1fY2hhaW5fbGVuID0gMDsKKwlpbnQ2NAkJbWF4X2NoYWluX2xlbiA9 IDA7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJRGF0dW0JCXZhbHVlc1s0XTsKKwlib29sCQlu dWxsc1s0XSA9IHswfTsKKwlIZWFwVHVwbGUJcmVzdWx0dHVwOworCisJcmVsID0gcmVsYXRp b25fb3BlbihyZWxpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlpZiAocmVsLT5yZF9yZWwtPnJl bGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTiAmJgorCQlyZWwtPnJkX3JlbC0+cmVsa2luZCAh PSBSRUxLSU5EX01BVFZJRVcgJiYKKwkJcmVsLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lO RF9UT0FTVFZBTFVFKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf V1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSB0YWJs ZSwgbWF0ZXJpYWxpemVkIHZpZXcsIG9yIFRPQVNUIHRhYmxlIiwKKwkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisKKwkvKiBDYWxsZXIgbXVzdCBiZSBhYmxlIHRv IHJlYWQgdGhlIHJlbGF0aW9uLiAqLworCWFjbHJlc3VsdCA9IHBnX2NsYXNzX2FjbGNoZWNr KHJlbGlkLCBHZXRVc2VySWQoKSwgQUNMX1NFTEVDVCk7CisJaWYgKGFjbHJlc3VsdCAhPSBB Q0xDSEVDS19PSykKKwkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LAorCQkJCQkgICBnZXRf cmVsa2luZF9vYmp0eXBlKHJlbC0+cmRfcmVsLT5yZWxraW5kKSwKKwkJCQkJICAgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocmVsKSk7CisKKwluYmxvY2tzID0gUmVsYXRpb25HZXROdW1i ZXJPZkJsb2NrcyhyZWwpOworCisJZm9yIChibGsgPSAwOyBibGsgPCBuYmxvY2tzOyBibGsr KykKKwl7CisJCUJ1ZmZlcgkJYnVmOworCQlQYWdlCQlwYWdlOworCQlPZmZzZXROdW1iZXIg b2ZmOworCQlPZmZzZXROdW1iZXIgbWF4b2ZmOworCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CisKKwkJYnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCBi bGssIFJCTV9OT1JNQUwsIE5VTEwpOworCQlMb2NrQnVmZmVyKGJ1ZiwgQlVGRkVSX0xPQ0tf U0hBUkUpOworCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOworCisJCWlmIChQYWdlSXNO ZXcocGFnZSkgfHwgUGFnZUlzRW1wdHkocGFnZSkpCisJCXsKKwkJCVVubG9ja1JlbGVhc2VC dWZmZXIoYnVmKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJbWF4b2ZmID0gUGFnZUdldE1h eE9mZnNldE51bWJlcihwYWdlKTsKKwkJZm9yIChvZmYgPSBGaXJzdE9mZnNldE51bWJlcjsg b2ZmIDw9IG1heG9mZjsgb2ZmID0gT2Zmc2V0TnVtYmVyTmV4dChvZmYpKQorCQl7CisJCQlJ dGVtSWQJCWxwID0gUGFnZUdldEl0ZW1JZChwYWdlLCBvZmYpOworCisJCQlpZiAoIUl0ZW1J ZElzVXNlZChscCkpCisJCQkJY29udGludWU7CisKKwkJCWlmIChJdGVtSWRJc1JlZGlyZWN0 ZWQobHApKQorCQkJeworCQkJCS8qIFdhbGsgdGhlIGNoYWluIHN0YXJ0aW5nIGF0IHRoZSBy ZWRpcmVjdCB0YXJnZXQuICovCisJCQkJT2Zmc2V0TnVtYmVyIGN1ciA9IEl0ZW1JZEdldFJl ZGlyZWN0KGxwKTsKKwkJCQlpbnQ2NAkJbGVuID0gMDsKKworCQkJCS8qCisJCQkJICogV2Fs ayB0aGUgc2FtZS1wYWdlIEhPVCBjaGFpbi4gIEJvdW5kIHRoZSBsb29wIGJ5IHRoZSBwYWdl J3MKKwkJCQkgKiBpdGVtIGNvdW50IHNvIGEgY29ycnVwdCBjeWNsaWMgdF9jdGlkIGNhbm5v dCBzcGluIGZvcmV2ZXIKKwkJCQkgKiB1bmRlciB0aGUgYnVmZmVyIGxvY2ssIGFuZCBjaGVj ayBmb3IgaW50ZXJydXB0cyBlYWNoIHN0ZXAuCisJCQkJICovCisJCQkJd2hpbGUgKGN1ciA+ PSBGaXJzdE9mZnNldE51bWJlciAmJiBjdXIgPD0gbWF4b2ZmICYmIGxlbiA8IG1heG9mZikK KwkJCQl7CisJCQkJCUl0ZW1JZAkJY2hhaW5fbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIGN1 cik7CisJCQkJCUhlYXBUdXBsZUhlYWRlciB0aGRyOworCisJCQkJCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7CisKKwkJCQkJaWYgKCFJdGVtSWRJc05vcm1hbChjaGFpbl9scCkpCisJCQkJ CQlicmVhazsKKwkJCQkJdGhkciA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBh Z2UsIGNoYWluX2xwKTsKKwkJCQkJbGVuKys7CisJCQkJCWlmICghKHRoZHItPnRfaW5mb21h c2syICYgSEVBUF9IT1RfVVBEQVRFRCkpCisJCQkJCQlicmVhazsKKwkJCQkJLyogSE9UIGNo YWlucyBzdGF5IG9uIG9uZSBwYWdlOyBzdG9wIGlmIHRoZSBsaW5rIGxlYXZlcyBpdC4gKi8K KwkJCQkJaWYgKEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJnRoZHItPnRfY3RpZCkgIT0g YmxrKQorCQkJCQkJYnJlYWs7CisJCQkJCWN1ciA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVt YmVyKCZ0aGRyLT50X2N0aWQpOworCQkJCX0KKwkJCQlpZiAobGVuID4gMCkKKwkJCQl7CisJ CQkJCW5fY2hhaW5zKys7CisJCQkJCXN1bV9jaGFpbl9sZW4gKz0gbGVuOworCQkJCQlpZiAo bGVuID4gbWF4X2NoYWluX2xlbikKKwkJCQkJCW1heF9jaGFpbl9sZW4gPSBsZW47CisJCQkJ fQorCQkJfQorCQkJZWxzZSBpZiAoSXRlbUlkSXNOb3JtYWwobHApKQorCQkJeworCQkJCUhl YXBUdXBsZUhlYWRlciB0aGRyID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFn ZSwgbHApOworCisJCQkJaWYgKCFIb3RJbmRleGVkSGVhZGVySXNTdHViKHRoZHIpICYmCisJ CQkJCSh0aGRyLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSAhPSAwKQor CQkJCQluX2hvdF9pbmRleGVkKys7CisJCQl9CisJCX0KKworCQlVbmxvY2tSZWxlYXNlQnVm ZmVyKGJ1Zik7CisJfQorCisJcmVsYXRpb25fY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2sp OworCisJdHVwZGVzYyA9IENyZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKDQpOworCVR1cGxlRGVz Y0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgIm5faG90X2luZGV4ZWQiLCBJ TlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVt YmVyKSAyLCAibl9jaGFpbnMiLCBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVu dHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAzLCAiYXZnX2NoYWluX2xlbiIsIEZMT0FUOE9J RCwgLTEsIDApOworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikg NCwgIm1heF9jaGFpbl9sZW4iLCBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjRmluYWxp emUodHVwZGVzYyk7CisJdHVwZGVzYyA9IEJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOworCisJ dmFsdWVzWzBdID0gSW50NjRHZXREYXR1bShuX2hvdF9pbmRleGVkKTsKKwl2YWx1ZXNbMV0g PSBJbnQ2NEdldERhdHVtKG5fY2hhaW5zKTsKKwlpZiAobl9jaGFpbnMgPiAwKQorCQl2YWx1 ZXNbMl0gPSBGbG9hdDhHZXREYXR1bSgoKGRvdWJsZSkgc3VtX2NoYWluX2xlbikgLyAoZG91 YmxlKSBuX2NoYWlucyk7CisJZWxzZQorCQl2YWx1ZXNbMl0gPSBGbG9hdDhHZXREYXR1bSgw LjApOworCXZhbHVlc1szXSA9IEludDY0R2V0RGF0dW0obWF4X2NoYWluX2xlbik7CisKKwly ZXN1bHR0dXAgPSBoZWFwX2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBudWxscyk7CisJ UEdfUkVUVVJOX0RBVFVNKEhlYXBUdXBsZUdldERhdHVtKHJlc3VsdHR1cCkpOworfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvbWVzb24uYnVpbGQgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9tZXNvbi5idWlsZAppbmRleCAwMGVjMDdkN2YzMC4uYjVjMmE4 ZDVjYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL21lc29uLmJ1aWxk CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL21lc29uLmJ1aWxkCkBAIC04LDYgKzgs NyBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdoZWFwYW1feGxvZy5jJywKICAg J2hlYXB0b2FzdC5jJywKICAgJ2hpby5jJywKKyAgJ2hvdF9pbmRleGVkX3N0YXRzLmMnLAog ICAncHJ1bmVoZWFwLmMnLAogICAncmV3cml0ZWhlYXAuYycsCiAgICd2YWN1dW1sYXp5LmMn LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDA5MDI4MWEwM2Rk Li43MTg2ZGQ2YzRkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1f dmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApA QCAtNzMwLDYgKzczMCw3IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfYWxsX3RhYmxlcyBBUwog ICAgICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQoQy5vaWQpIEFTIG5fdHVw X3VwZCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19kZWxldGVkKEMub2lkKSBB UyBuX3R1cF9kZWwsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0 ZWQoQy5vaWQpIEFTIG5fdHVwX2hvdF91cGQsCisgICAgICAgICAgICBwZ19zdGF0X2dldF90 dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZChDLm9pZCkgQVMgbl90dXBfaG90X2luZGV4ZWRf dXBkLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX25ld3BhZ2VfdXBkYXRlZChD Lm9pZCkgQVMgbl90dXBfbmV3cGFnZV91cGQsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF9s aXZlX3R1cGxlcyhDLm9pZCkgQVMgbl9saXZlX3R1cCwKICAgICAgICAgICAgIHBnX3N0YXRf Z2V0X2RlYWRfdHVwbGVzKEMub2lkKSBBUyBuX2RlYWRfdHVwLApAQCAtNzY4LDYgKzc2OSw3 IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfeGFjdF9hbGxfdGFibGVzIEFTCiAgICAgICAgICAg ICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKEMub2lkKSBBUyBuX3R1cF91cGQs CiAgICAgICAgICAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19kZWxldGVkKEMub2lkKSBB UyBuX3R1cF9kZWwsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3Rf dXBkYXRlZChDLm9pZCkgQVMgbl90dXBfaG90X3VwZCwKKyAgICAgICAgICAgIHBnX3N0YXRf Z2V0X3hhY3RfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQoQy5vaWQpIEFTIG5fdHVwX2hv dF9pbmRleGVkX3VwZCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX25l d3BhZ2VfdXBkYXRlZChDLm9pZCkgQVMgbl90dXBfbmV3cGFnZV91cGQKICAgICBGUk9NIHBn X2NsYXNzIEMgTEVGVCBKT0lOCiAgICAgICAgICBwZ19pbmRleCBJIE9OIEMub2lkID0gSS5p bmRyZWxpZApAQCAtODY5LDYgKzg3MSw4IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfYWxsX2lu ZGV4ZXMgQVMKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2xhc3RzY2FuKEkub2lkKSBBUyBs YXN0X2lkeF9zY2FuLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX3JldHVybmVk KEkub2lkKSBBUyBpZHhfdHVwX3JlYWQsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF90dXBs ZXNfZmV0Y2hlZChJLm9pZCkgQVMgaWR4X3R1cF9mZXRjaCwKKyAgICAgICAgICAgIHBnX3N0 YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkX3NraXBwZWQoSS5vaWQpIEFTIG5f dHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkLAorICAgICAgICAgICAgcGdfc3RhdF9nZXRf dHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWRfbWF0Y2hlZChJLm9pZCkgQVMgbl90dXBfaG90 X2luZGV4ZWRfdXBkX21hdGNoZWQsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF9zdGF0X3Jl c2V0X3RpbWUoSS5vaWQpIEFTIHN0YXRzX3Jlc2V0CiAgICAgRlJPTSBwZ19jbGFzcyBDIEpP SU4KICAgICAgICAgICAgIHBnX2luZGV4IFggT04gQy5vaWQgPSBYLmluZHJlbGlkIEpPSU4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKaW5kZXggNTY1ZDBlNzA3NjguLjU1 MmYzNTQwY2RlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwpAQCAtOTMs NiArOTMsMTUgQEAgUEdfU1RBVF9HRVRfUkVMRU5UUllfSU5UNjQodHVwbGVzX2ZldGNoZWQp CiAvKiBwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQgKi8KIFBHX1NUQVRfR0VUX1JF TEVOVFJZX0lOVDY0KHR1cGxlc19ob3RfdXBkYXRlZCkKIAorLyogcGdfc3RhdF9nZXRfdHVw bGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQgKi8KK1BHX1NUQVRfR0VUX1JFTEVOVFJZX0lOVDY0 KHR1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkKQorCisvKiBwZ19zdGF0X2dldF90dXBsZXNf aG90X2luZGV4ZWRfdXBkYXRlZF9za2lwcGVkICovCitQR19TVEFUX0dFVF9SRUxFTlRSWV9J TlQ2NCh0dXBsZXNfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQpCisKKy8qIHBnX3N0YXRfZ2V0 X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkX21hdGNoZWQgKi8KK1BHX1NUQVRfR0VUX1JF TEVOVFJZX0lOVDY0KHR1cGxlc19ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCkKKwogLyogcGdf c3RhdF9nZXRfdHVwbGVzX25ld3BhZ2VfdXBkYXRlZCAqLwogUEdfU1RBVF9HRVRfUkVMRU5U UllfSU5UNjQodHVwbGVzX25ld3BhZ2VfdXBkYXRlZCkKIApAQCAtMTg4OCw2ICsxODk3LDkg QEAgUEdfU1RBVF9HRVRfWEFDVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfZmV0Y2hlZCkKIC8q IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkICovCiBQR19TVEFUX0dFVF9Y QUNUX1JFTEVOVFJZX0lOVDY0KHR1cGxlc19ob3RfdXBkYXRlZCkKIAorLyogcGdfc3RhdF9n ZXRfeGFjdF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCAqLworUEdfU1RBVF9HRVRfWEFD VF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCkKKwogLyogcGdf c3RhdF9nZXRfeGFjdF90dXBsZXNfbmV3cGFnZV91cGRhdGVkICovCiBQR19TVEFUX0dFVF9Y QUNUX1JFTEVOVFJZX0lOVDY0KHR1cGxlc19uZXdwYWdlX3VwZGF0ZWQpCiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CmluZGV4IDNjYjg0MzU5YWRmLi4xNzVmYTg4ZWI1NyAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC01NTk0LDYgKzU1OTQsMjkgQEAKICAgcHJvbmFt ZSA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkJywgcHJvdm9sYXRpbGUgPT4g J3MnLAogICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9h cmd0eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF90dXBsZXNfaG90 X3VwZGF0ZWQnIH0sCit7IG9pZCA9PiAnOTk1MycsCisgIGRlc2NyID0+ICdzdGF0aXN0aWNz OiBudW1iZXIgb2YgdHVwbGVzIHVwZGF0ZWQgdmlhIEhPVC1pbmRleGVkIChTZWxlY3RpdmUg SW5kZXggVXBkYXRlKScsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3R1cGxlc19ob3Rf aW5kZXhlZF91cGRhdGVkJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9wYXJhbGxlbCA9 PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAg cHJvc3JjID0+ICdwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCcgfSwK K3sgb2lkID0+ICc5OTU2JywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IG51bWJlciBvZiBI T1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQgc2tpcHBlZCB0aGlzIGluZGV4JywKKyAgcHJvbmFt ZSA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWRfc2tpcHBlZCcs IHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBl ID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCisgIHByb3NyYyA9PiAncGdfc3Rh dF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkJyB9LAoreyBvaWQgPT4gJzk5 NTcnLAorICBkZXNjciA9PiAnc3RhdGlzdGljczogbnVtYmVyIG9mIEhPVC1pbmRleGVkIHVw ZGF0ZXMgdGhhdCBpbnNlcnRlZCBpbnRvIHRoaXMgaW5kZXgnLAorICBwcm9uYW1lID0+ICdw Z19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZF9tYXRjaGVkJywgcHJvdm9s YXRpbGUgPT4gJ3MnLAorICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2lu dDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF90 dXBsZXNfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQnIH0sCit7IG9pZCA9PiAnOTk1NScsCisg IGRlc2NyID0+ICdIT1QtaW5kZXhlZCBzdHJ1Y3R1cmFsIHN0YXRzOiBIT1QtaW5kZXhlZCB2 ZXJzaW9ucyBhbmQgY2hhaW4gbGVuZ3RocycsCisgIHByb25hbWUgPT4gJ3BnX3JlbGF0aW9u X2hvdF9pbmRleGVkX3N0YXRzJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9wYXJhbGxl bCA9PiAncicsIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICdyZWdj bGFzcycsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7cmVnY2xhc3MsaW50OCxpbnQ4LGZsb2F0 OCxpbnQ4fScsCisgIHByb2FyZ21vZGVzID0+ICd7aSxvLG8sbyxvfScsCisgIHByb2FyZ25h bWVzID0+ICd7cmVsYXRpb24sbl9ob3RfaW5kZXhlZCxuX2NoYWlucyxhdmdfY2hhaW5fbGVu LG1heF9jaGFpbl9sZW59JywKKyAgcHJvc3JjID0+ICdwZ19yZWxhdGlvbl9ob3RfaW5kZXhl ZF9zdGF0cycgfSwKIHsgb2lkID0+ICc2MjE3JywKICAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6 IG51bWJlciBvZiB0dXBsZXMgdXBkYXRlZCBvbnRvIGEgbmV3IHBhZ2UnLAogICBwcm9uYW1l ID0+ICdwZ19zdGF0X2dldF90dXBsZXNfbmV3cGFnZV91cGRhdGVkJywgcHJvdm9sYXRpbGUg PT4gJ3MnLApAQCAtNjE3OSw2ICs2MjAyLDExIEBACiAgIHByb25hbWUgPT4gJ3BnX3N0YXRf Z2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBw cm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9 PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBk YXRlZCcgfSwKK3sgb2lkID0+ICc5OTU0JywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IG51 bWJlciBvZiBIT1QtaW5kZXhlZCB0dXBsZSB1cGRhdGVzIGluIGN1cnJlbnQgdHJhbnNhY3Rp b24nLAorICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfaW5kZXhl ZF91cGRhdGVkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9wYXJhbGxlbCA9PiAncics IHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvc3Jj ID0+ICdwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkJyB9LAog eyBvaWQgPT4gJzYyMTgnLAogICBkZXNjciA9PiAnc3RhdGlzdGljczogbnVtYmVyIG9mIHR1 cGxlcyB1cGRhdGVkIG9udG8gYSBuZXcgcGFnZSBpbiBjdXJyZW50IHRyYW5zYWN0aW9uJywK ICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfbmV3cGFnZV91cGRhdGVk JywgcHJvdm9sYXRpbGUgPT4gJ3YnLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9u L2V4cGVjdGVkL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLm91dCBiL3NyYy90ZXN0L2lzb2xh dGlvbi9leHBlY3RlZC9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5vdXQKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIyZjYyODAxNTEzCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2hvdF9pbmRleGVkX2FkdmVyc2Fy aWFsLm91dApAQCAtMCwwICsxLDEzOSBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDYgc2Vz c2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyX25vc2VxIHMxX2N5Y2xlIHMyX2Vx MTAgczJfZXEyMAorc3RlcCBzMl9ub3NlcTogU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOwor c3RlcCBzMV9jeWNsZTogVVBEQVRFIGhpYSBTRVQgayA9IDIwIFdIRVJFIGlkID0gMTsgVVBE QVRFIGhpYSBTRVQgayA9IDEwIFdIRVJFIGlkID0gMTsKK3N0ZXAgczJfZXExMDogU0VMRUNU IGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAxMDsKK2lkfCBrCistLSstLQorIDF8MTAKKygx IHJvdykKKworc3RlcCBzMl9lcTIwOiBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hFUkUgayA9 IDIwOworaWR8aworLS0rLQorKDAgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjog czJfbm9zZXEgczFfY3ljbGUgczJfcmFuZ2UKK3N0ZXAgczJfbm9zZXE6IFNFVCBlbmFibGVf c2Vxc2NhbiA9IG9mZjsKK3N0ZXAgczFfY3ljbGU6IFVQREFURSBoaWEgU0VUIGsgPSAyMCBX SEVSRSBpZCA9IDE7IFVQREFURSBoaWEgU0VUIGsgPSAxMCBXSEVSRSBpZCA9IDE7CitzdGVw IHMyX3JhbmdlOiBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hFUkUgayA+PSA1IE9SREVSIEJZ IGs7CitpZHwgaworLS0rLS0KKyAxfDEwCisoMSByb3cpCisKKworc3RhcnRpbmcgcGVybXV0 YXRpb246IHMyX25vc2VxIHMxX2JlZ2luIHMxX3VwZDIwIHMxX2Fib3J0IHMyX2VxMjAgczJf ZXExMAorc3RlcCBzMl9ub3NlcTogU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworc3RlcCBz MV9iZWdpbjogQkVHSU47CitzdGVwIHMxX3VwZDIwOiBVUERBVEUgaGlhIFNFVCBrID0gMjAg V0hFUkUgaWQgPSAxOworc3RlcCBzMV9hYm9ydDogUk9MTEJBQ0s7CitzdGVwIHMyX2VxMjA6 IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID0gMjA7CitpZHxrCistLSstCisoMCBy b3dzKQorCitzdGVwIHMyX2VxMTA6IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID0g MTA7CitpZHwgaworLS0rLS0KKyAxfDEwCisoMSByb3cpCisKKworc3RhcnRpbmcgcGVybXV0 YXRpb246IHMxX2JlZ2luIHMxX3V1cGQyMCBzMl9pbnMxMCBzMV9jb21taXQKK3N0ZXAgczFf YmVnaW46IEJFR0lOOworc3RlcCBzMV91dXBkMjA6IFVQREFURSBoaXUgU0VUIGsgPSAyMCBX SEVSRSBpZCA9IDE7CitzdGVwIHMyX2luczEwOiBJTlNFUlQgSU5UTyBoaXUgVkFMVUVTICgy LCAxMCwgcmVwZWF0KCd5JywgNDApKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMV9jb21taXQ6 IENPTU1JVDsKK3N0ZXAgczJfaW5zMTA6IDwuLi4gY29tcGxldGVkPgorCitzdGFydGluZyBw ZXJtdXRhdGlvbjogczFfYmVnaW4gczFfdXVwZDIwIHMxX2NvbW1pdCBzMl9pbnMxMAorc3Rl cCBzMV9iZWdpbjogQkVHSU47CitzdGVwIHMxX3V1cGQyMDogVVBEQVRFIGhpdSBTRVQgayA9 IDIwIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMyX2lu czEwOiBJTlNFUlQgSU5UTyBoaXUgVkFMVUVTICgyLCAxMCwgcmVwZWF0KCd5JywgNDApKTsK Kworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxX2JlZ2luIHMxX3V1cGQyMCBzMV9jb21taXQg czJfaW5zMjAKK3N0ZXAgczFfYmVnaW46IEJFR0lOOworc3RlcCBzMV91dXBkMjA6IFVQREFU RSBoaXUgU0VUIGsgPSAyMCBXSEVSRSBpZCA9IDE7CitzdGVwIHMxX2NvbW1pdDogQ09NTUlU Oworc3RlcCBzMl9pbnMyMDogSU5TRVJUIElOVE8gaGl1IFZBTFVFUyAoMywgMjAsIHJlcGVh dCgneicsIDQwKSk7CitFUlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5p cXVlIGNvbnN0cmFpbnQgImhpdV9rIgorCitzdGFydGluZyBwZXJtdXRhdGlvbjogczNfYmVn aW4gczNfZXExMCBzMl90bzMwIHMyX3NjYW4zMCBzM19lcTEwIHMzX2NvbW1pdAorc3RlcCBz M19iZWdpbjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsgU0VUIGVu YWJsZV9zZXFzY2FuID0gb2ZmOworc3RlcCBzM19lcTEwOiBTRUxFQ1QgaWQsIGsgRlJPTSBo aWEgV0hFUkUgayA9IDEwOworaWR8IGsKKy0tKy0tCisgMXwxMAorKDEgcm93KQorCitzdGVw IHMyX3RvMzA6IFVQREFURSBoaWEgU0VUIGsgPSAyMCBXSEVSRSBpZCA9IDE7IFVQREFURSBo aWEgU0VUIGsgPSAzMCBXSEVSRSBpZCA9IDE7CitzdGVwIHMyX3NjYW4zMDogU0VUIGVuYWJs ZV9zZXFzY2FuID0gb2ZmOyBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hFUkUgayA9IDMwOwor aWR8IGsKKy0tKy0tCisgMXwzMAorKDEgcm93KQorCitzdGVwIHMzX2VxMTA6IFNFTEVDVCBp ZCwgayBGUk9NIGhpYSBXSEVSRSBrID0gMTA7CitpZHwgaworLS0rLS0KKyAxfDEwCisoMSBy b3cpCisKK3N0ZXAgczNfY29tbWl0OiBDT01NSVQ7CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9u OiBiMV9iZWdpbiBiMV9zbmFwIGIyX3VwZGF0ZSBiMl92YWN1dW0gYjFfc25hcCBiMV9jb21t aXQgYjNfc2VxCitzdGVwIGIxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgYjFfc25hcDogU0VMRUNU IGlkLCB2IEZST00gaGliIFdIRVJFIHYgPSA0MDA7CitpZHwgIHYKKy0tKy0tLQorIDF8NDAw CisoMSByb3cpCisKK3N0ZXAgYjJfdXBkYXRlOiBVUERBVEUgaGliIFNFVCB2ID0gNTAwIFdI RVJFIGlkID0gMTsKK3N0ZXAgYjJfdmFjdXVtOiBWQUNVVU0gKElOREVYX0NMRUFOVVAgb2Zm KSBoaWI7CitzdGVwIGIxX3NuYXA6IFNFTEVDVCBpZCwgdiBGUk9NIGhpYiBXSEVSRSB2ID0g NDAwOworaWR8dgorLS0rLQorKDAgcm93cykKKworc3RlcCBiMV9jb21taXQ6IENPTU1JVDsK K3N0ZXAgYjNfc2VxOiBTRUxFQ1QgaWQsIHYgRlJPTSBoaWIgT1JERVIgQlkgaWQ7CitpZHwg IHYKKy0tKy0tLQorIDF8NTAwCisgMnwgMjAKKyAzfCAzMAorIDR8IDQwCisgNXwgNTAKKyg1 IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IGIxX2JlZ2luIGIyX3VwZGF0ZSBi MV9zbmFwIGIyX3ZhY3V1bSBiMV9zbmFwIGIxX2NvbW1pdCBiM19zZXEKK3N0ZXAgYjFfYmVn aW46IEJFR0lOOworc3RlcCBiMl91cGRhdGU6IFVQREFURSBoaWIgU0VUIHYgPSA1MDAgV0hF UkUgaWQgPSAxOworc3RlcCBiMV9zbmFwOiBTRUxFQ1QgaWQsIHYgRlJPTSBoaWIgV0hFUkUg diA9IDQwMDsKK2lkfHYKKy0tKy0KKygwIHJvd3MpCisKK3N0ZXAgYjJfdmFjdXVtOiBWQUNV VU0gKElOREVYX0NMRUFOVVAgb2ZmKSBoaWI7CitzdGVwIGIxX3NuYXA6IFNFTEVDVCBpZCwg diBGUk9NIGhpYiBXSEVSRSB2ID0gNDAwOworaWR8dgorLS0rLQorKDAgcm93cykKKworc3Rl cCBiMV9jb21taXQ6IENPTU1JVDsKK3N0ZXAgYjNfc2VxOiBTRUxFQ1QgaWQsIHYgRlJPTSBo aWIgT1JERVIgQlkgaWQ7CitpZHwgIHYKKy0tKy0tLQorIDF8NTAwCisgMnwgMjAKKyAzfCAz MAorIDR8IDQwCisgNXwgNTAKKyg1IHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lz b2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0 aW9uX3NjaGVkdWxlCmluZGV4IGI4ZWJlOTI1NTNjLi5lOWFmYjQ4MTk5ZSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQorKysgYi9zcmMvdGVz dC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCkBAIC0xMjgsMyArMTI4LDQgQEAgdGVz dDogbWF0dmlldy13cml0ZS1za2V3CiB0ZXN0OiBsb2NrLW5vd2FpdAogdGVzdDogZm9yLXBv cnRpb24tb2YKIHRlc3Q6IGRkbC1kZXBlbmRlbmN5LWxvY2tpbmcKK3Rlc3Q6IGhvdF9pbmRl eGVkX2FkdmVyc2FyaWFsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3Mv aG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwuc3BlYyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVj cy9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi42NDcwNWJmMzdlMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L2lzb2xhdGlvbi9zcGVjcy9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5zcGVjCkBAIC0w LDAgKzEsMTIzIEBACisjIEFkdmVyc2FyaWFsIGNvcnJlY3RuZXNzIHRlc3RzIGZvciBIT1Qt aW5kZXhlZCAoU0lVKSB1cGRhdGVzLgorIworIyBFYWNoIHBlcm11dGF0aW9uIHBpbnMgYSBj YXNlIHRoYXQgdGhlIG1pZC1jaGFpbi1wb2ludGluZyBpbnZhcmlhbnQgbXVzdAorIyBzYXRp c2Z5OiBhbiBpbmRleCBlbnRyeSBwb2ludHMgYXQgdGhlIGhlYXAtb25seSB2ZXJzaW9uIHdo b3NlIGtleSBpdAorIyBtYXRjaGVkLCBhbmQgYSBjaGFpbiB3YWxrIHRoYXQgY3Jvc3NlcyBh IEhPVC1pbmRleGVkIGhvcCBkcm9wcyB0aGUgYXJyaXZpbmcKKyMgZW50cnkgd2hlbiB0aGUg Y3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIG92ZXJsYXBzIHRoZSBpbmRleCdzIGtleSBjb2x1 bW5zCisjIChubyBrZXkgY29tcGFyaXNvbikuICBUaGVzZSBhcmUKKyMgZXhhY3RseSB0aGUg Y2FzZXMgdGhhdCBoaXN0b3JpY2FsbHkgYnJva2Ugd3JpdGUtYW1wbGlmaWNhdGlvbi1yZWR1 Y3Rpb24KKyMgZGVzaWducy4KKworc2V0dXAKK3sKKyAgICBDUkVBVEUgVEFCTEUgaGlhIChp ZCBpbnQgUFJJTUFSWSBLRVksIGsgaW50LCBwYWQgdGV4dCkgV0lUSCAoZmlsbGZhY3RvciA9 IDQwKTsKKyAgICBDUkVBVEUgSU5ERVggaGlhX2sgT04gaGlhKGspOworICAgIENSRUFURSBU QUJMRSBoaXUgKGlkIGludCBQUklNQVJZIEtFWSwgayBpbnQsIHBhZCB0ZXh0KSBXSVRIIChm aWxsZmFjdG9yID0gNDApOworICAgIENSRUFURSBVTklRVUUgSU5ERVggaGl1X2sgT04gaGl1 KGspOworICAgIElOU0VSVCBJTlRPIGhpYSBWQUxVRVMgKDEsIDEwLCByZXBlYXQoJ3gnLCA0 MCkpOworICAgIElOU0VSVCBJTlRPIGhpdSBWQUxVRVMgKDEsIDEwLCByZXBlYXQoJ3gnLCA0 MCkpOworCisgICAgLS0gVGFibGUgZm9yIHRoZSBjb25jdXJyZW50LWNvbGxhcHNlIHJlYWRl ci1jb25zaXN0ZW5jeSBjYXNlICg3KS4KKyAgICBDUkVBVEUgVEFCTEUgaGliIChpZCBpbnQg UFJJTUFSWSBLRVksIHYgaW50LCBwYWQgdGV4dCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsK KyAgICBDUkVBVEUgSU5ERVggaGliX3ZfaWR4IE9OIGhpYih2KTsKKyAgICBJTlNFUlQgSU5U TyBoaWIgU0VMRUNUIGcsIGcgKiAxMCwgcmVwZWF0KCd4JywgNTApIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDUpIGc7CisgICAgVVBEQVRFIGhpYiBTRVQgdiA9IDEwMCBXSEVSRSBpZCA9 IDE7CisgICAgVVBEQVRFIGhpYiBTRVQgdiA9IDIwMCBXSEVSRSBpZCA9IDE7CisgICAgVVBE QVRFIGhpYiBTRVQgdiA9IDMwMCBXSEVSRSBpZCA9IDE7CisgICAgVVBEQVRFIGhpYiBTRVQg diA9IDQwMCBXSEVSRSBpZCA9IDE7Cit9CisKK3RlYXJkb3duCit7CisgICAgRFJPUCBUQUJM RSBoaWE7CisgICAgRFJPUCBUQUJMRSBoaXU7CisgICAgRFJPUCBUQUJMRSBoaWI7Cit9CisK K3Nlc3Npb24gczEKK3N0ZXAgczFfYmVnaW4gICB7IEJFR0lOOyB9CisjIEN5Y2xlIHRoZSBp bmRleGVkIGtleSBhd2F5IGFuZCBiYWNrOiAxMCAtPiAyMCAtPiAxMC4gIFRoZSBvcmlnaW5h bCAxMCBsZWFmCisjIGFuZCB0aGUgZnJlc2hseS1pbnNlcnRlZCAxMCBsZWFmIGJvdGggcmVz b2x2ZSB0byB0aGUgbGl2ZSB0dXBsZTsgdGhlIGNoYWluCisjIHdhbGsgbXVzdCBkcm9wIHRo ZSBzdGFsZSBvbmUgc28gYSBsb29rdXAgcmV0dXJucyB0aGUgcm93IGV4YWN0bHkgb25jZS4K K3N0ZXAgczFfY3ljbGUgICB7IFVQREFURSBoaWEgU0VUIGsgPSAyMCBXSEVSRSBpZCA9IDE7 IFVQREFURSBoaWEgU0VUIGsgPSAxMCBXSEVSRSBpZCA9IDE7IH0KKyMgQSBzaW5nbGUgSE9U LWluZGV4ZWQgdXBkYXRlIG9uIGhpYSwgdXNlZCBieSB0aGUgYWJvcnQgYW5kIHJlYWRlciBj YXNlcy4KK3N0ZXAgczFfdXBkMjAgICB7IFVQREFURSBoaWEgU0VUIGsgPSAyMCBXSEVSRSBp ZCA9IDE7IH0KKyMgQSBIT1QtaW5kZXhlZCB1cGRhdGUgb24gdGhlIFVOSVFVRS1pbmRleGVk IHRhYmxlLCBmcmVlaW5nIGtleSAxMCBmb3Igaz0yMC4KK3N0ZXAgczFfdXVwZDIwICB7IFVQ REFURSBoaXUgU0VUIGsgPSAyMCBXSEVSRSBpZCA9IDE7IH0KK3N0ZXAgczFfY29tbWl0ICB7 IENPTU1JVDsgfQorc3RlcCBzMV9hYm9ydCAgIHsgUk9MTEJBQ0s7IH0KKworc2Vzc2lvbiBz MgorIyBJbmRleC1vbmx5IGxvb2t1cHMgKGZvcmNlZCkgdGhhdCBleGVyY2lzZSB0aGUgc3Rh bGUtbGVhZiByZWNoZWNrLgorc3RlcCBzMl9ub3NlcSAgIHsgU0VUIGVuYWJsZV9zZXFzY2Fu ID0gb2ZmOyB9CitzdGVwIHMyX2VxMTAgICAgeyBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hF UkUgayA9IDEwOyB9CitzdGVwIHMyX2VxMjAgICAgeyBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEg V0hFUkUgayA9IDIwOyB9CitzdGVwIHMyX3JhbmdlICAgeyBTRUxFQ1QgaWQsIGsgRlJPTSBo aWEgV0hFUkUgayA+PSA1IE9SREVSIEJZIGs7IH0KKyMgQ29uY3VycmVudCB1bmlxdWUgaW5z ZXJ0IG9mIHRoZSBrZXkgczEgaXMgZnJlZWluZyAoMTApIGFuZCBvZiB0aGUga2V5IHMxIGlz CisjIHRha2luZyAoMjApOyBfYnRfY2hlY2tfdW5pcXVlIG11c3QgZmlsdGVyIHRoZSBzdGFs ZSAxMCBsZWFmIGJ1dCBzdGlsbAorIyBjb25mbGljdCBvbiB0aGUgbGl2ZSBrZXkuCitzdGVw IHMyX2luczEwICAgeyBJTlNFUlQgSU5UTyBoaXUgVkFMVUVTICgyLCAxMCwgcmVwZWF0KCd5 JywgNDApKTsgfQorc3RlcCBzMl9pbnMyMCAgIHsgSU5TRVJUIElOVE8gaGl1IFZBTFVFUyAo MywgMjAsIHJlcGVhdCgneicsIDQwKSk7IH0KKyMgTW92ZSB0aGUgaW5kZXhlZCBrZXkgd2Vs bCBhd2F5IGZyb20gMTAgKHR3byBIT1QtaW5kZXhlZCBob3BzKSBhbmQgZm9yY2UgYW4KKyMg aW5kZXggc2NhbiBvbiB0aGUgbmV3IGtleS4gIFRoYXQgc2NhbiByZWFjaGVzIHRoZSBsaXZl IHR1cGxlIHRocm91Z2ggdGhlCisjIHN0YWxlIDEwIGxlYWYgYW5kIG1heSB0cnkgdG8ga2ls bCBpdCBmb3IgYmxvYXQgcmVjbGFpbS4KK3N0ZXAgczJfdG8zMCAgICB7IFVQREFURSBoaWEg U0VUIGsgPSAyMCBXSEVSRSBpZCA9IDE7IFVQREFURSBoaWEgU0VUIGsgPSAzMCBXSEVSRSBp ZCA9IDE7IH0KK3N0ZXAgczJfc2NhbjMwICB7IFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsg U0VMRUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAzMDsgfQorCisjIFJlYWRlciBob2xk aW5nIGFuIG9sZGVyIFJFUEVBVEFCTEUgUkVBRCBzbmFwc2hvdCB0aGF0IHN0aWxsIHNlZXMg az0xMC4KK3Nlc3Npb24gczMKK3N0ZXAgczNfYmVnaW4gICB7IEJFR0lOIElTT0xBVElPTiBM RVZFTCBSRVBFQVRBQkxFIFJFQUQ7IFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsgfQorc3Rl cCBzM19lcTEwICAgIHsgU0VMRUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAxMDsgfQor c3RlcCBzM19jb21taXQgIHsgQ09NTUlUOyB9CisKK3Nlc3Npb24gYjEKK3N0ZXAgYjFfYmVn aW4gICB7IEJFR0lOOyB9CisjIFJlYWRlciB0YWtlcyBhIHNuYXBzaG90IGFuZCByZWFkcyB0 aGUgY2hhaW4gdmlhIHRoZSBzZWNvbmRhcnkgaW5kZXguCitzdGVwIGIxX3NuYXAgICAgeyBT RUxFQ1QgaWQsIHYgRlJPTSBoaWIgV0hFUkUgdiA9IDQwMDsgfQorc3RlcCBiMV9jb21taXQg IHsgQ09NTUlUOyB9CisKK3Nlc3Npb24gYjIKKyMgRm9yY2UgcHJ1bmUvY29sbGFwc2U6IGFu b3RoZXIgSE9ULWluZGV4ZWQgdXBkYXRlIHBsdXMgYSBWQUNVVU0gdGhhdAorIyBjb2xsYXBz ZXMgdGhlIGRlYWQgY2hhaW4gbWVtYmVycyB0byBMUF9SRURJUkVDVCBmb3J3YXJkZXJzLgor c3RlcCBiMl91cGRhdGUgIHsgVVBEQVRFIGhpYiBTRVQgdiA9IDUwMCBXSEVSRSBpZCA9IDE7 IH0KK3N0ZXAgYjJfdmFjdXVtICB7IFZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpYjsg fQorCitzZXNzaW9uIGIzCitzdGVwIGIzX3NlcSAgICAgeyBTRUxFQ1QgaWQsIHYgRlJPTSBo aWIgT1JERVIgQlkgaWQ7IH0KKworIyAxLiBhLT5iLT5hIGN5Y2xlOiBleGFjdGx5IG9uZSBy b3cgZm9yIHRoZSBjeWNsZWQtYmFjayBrZXksIG5vbmUgZm9yIHRoZQorIyAgICB0cmFuc2ll bnQga2V5LgorcGVybXV0YXRpb24gczJfbm9zZXEgczFfY3ljbGUgczJfZXExMCBzMl9lcTIw CisKKyMgMi4gUmFuZ2Ugc2NhbiByZXR1cm5zIHRoZSBsaXZlIHJvdyBleGFjdGx5IG9uY2Ug YWNyb3NzIHRoZSBzdGFsZStmcmVzaAorIyAgICBsZWF2ZXMgbGVmdCBieSB0aGUgY3ljbGUu CitwZXJtdXRhdGlvbiBzMl9ub3NlcSBzMV9jeWNsZSBzMl9yYW5nZQorCisjIDMuIEFib3J0 IG9mIGEgSE9ULWluZGV4ZWQgdXBkYXRlOiB0aGUgbmV3IGtleSBtdXN0IG5vdCBzdXJmYWNl IGFuZCB0aGUgb2xkCisjICAgIGtleSBtdXN0IHN0aWxsIHJlc29sdmUgdG8gdGhlIChyZXN0 b3JlZCkgbGl2ZSB0dXBsZS4KK3Blcm11dGF0aW9uIHMyX25vc2VxIHMxX2JlZ2luIHMxX3Vw ZDIwIHMxX2Fib3J0IHMyX2VxMjAgczJfZXExMAorCisjIDQuIENvbmN1cnJlbnQgdW5pcXVl IGluc2VydCB3aGlsZSBhIEhPVC1pbmRleGVkIHVwZGF0ZSBpcyBpbiBmbGlnaHQuICBBbgor IyAgICBpbnNlcnQgb2YgdGhlIGtleSBzMSBpcyBmcmVlaW5nICgxMCkgbXVzdCB3YWl0IG9u IHRoZSB1bmNvbW1pdHRlZCB1cGRhdGVyLAorIyAgICB0aGVuIHN1Y2NlZWQgb25jZSBpdCBj b21taXRzICh0aGUgc3RhbGUgMTAgbGVhZiBpcyBmaWx0ZXJlZCkuCitwZXJtdXRhdGlvbiBz MV9iZWdpbiBzMV91dXBkMjAgczJfaW5zMTAgczFfY29tbWl0CisKKyMgNS4gQWZ0ZXIgdGhl IHVwZGF0ZSBjb21taXRzLCB0aGUgZnJlZWQga2V5ICgxMCkgaW5zZXJ0cyBjbGVhbmx5IGFu ZCB0aGUKKyMgICAgdGFrZW4ga2V5ICgyMCkgY29uZmxpY3RzIC0tIHRoZSBsaXZlIGxlYWYg aXMgaG9ub3VyZWQsIHRoZSBzdGFsZSBvbmUgaXMgbm90LgorcGVybXV0YXRpb24gczFfYmVn aW4gczFfdXVwZDIwIHMxX2NvbW1pdCBzMl9pbnMxMAorcGVybXV0YXRpb24gczFfYmVnaW4g czFfdXVwZDIwIHMxX2NvbW1pdCBzMl9pbnMyMAorCisjIDYuIFNuYXBzaG90IHNhZmV0eSBv ZiBzdGFsZS1sZWFmIHJlY2xhaW0uICBBbiBvbGRlciBSRVBFQVRBQkxFIFJFQUQgcmVhZGVy CisjICAgIHN0aWxsIHNlZXMgaz0xMDsgYSBjb25jdXJyZW50IHNlc3Npb24gdGhlbiBtb3Zl cyB0aGUga2V5IHRvIDMwIGFuZCBydW5zIGFuCisjICAgIGluZGV4IHNjYW4gdGhhdCByZWFj aGVzIHRoZSBsaXZlIHR1cGxlIHRocm91Z2ggdGhlIHN0YWxlIDEwIGxlYWYgYW5kIG1heQor IyAgICB0cnkgdG8gcmVjbGFpbSBpdC4gIFRoZSByZWNsYWltIGlzIGdhdGVkIG9uIHRoZSBz a2lwcGVkIHZlcnNpb25zIGJlaW5nCisjICAgIGRlYWQgdG8gYWxsIHRyYW5zYWN0aW9ucywg d2hpY2ggczMncyBoZWxkIHNuYXBzaG90IHByZXZlbnRzLCBzbyBzMyBtdXN0CisjICAgIHN0 aWxsIGZpbmQgdGhlIHJvdyBieSBrPTEwIGFmdGVyIHRoZSBzY2FuLgorcGVybXV0YXRpb24g czNfYmVnaW4gczNfZXExMCBzMl90bzMwIHMyX3NjYW4zMCBzM19lcTEwIHMzX2NvbW1pdAor CisjIDcuIFJlYWRlciBjb25zaXN0ZW5jeSBhY3Jvc3MgYSBjb25jdXJyZW50IHBydW5lL2Nv bGxhcHNlLiAgczEncyBpbmRleCBzY2FuLAorIyAgICBjcm9zc2luZyB0aGUgY29sbGFwc2Vk IGNoYWluIGFmdGVyIHRoZSBWQUNVVU0sIG11c3Qgc3RpbGwgcmV0dXJuIHRoZSByb3cKKyMg ICAgdmlhIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXA7IHRoZSBxdWVyeSBtdXN0IG5v dCBlcnJvciBhbmQgdGhlIHJvdyBjb3VudAorIyAgICBtdXN0IGJlIGNvbnNpc3RlbnQuCitw ZXJtdXRhdGlvbiBiMV9iZWdpbiBiMV9zbmFwIGIyX3VwZGF0ZSBiMl92YWN1dW0gYjFfc25h cCBiMV9jb21taXQgYjNfc2VxCitwZXJtdXRhdGlvbiBiMV9iZWdpbiBiMl91cGRhdGUgYjFf c25hcCBiMl92YWN1dW0gYjFfc25hcCBiMV9jb21taXQgYjNfc2VxCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWNvdmVyeS9NYWtlZmlsZSBiL3NyYy90ZXN0L3JlY292ZXJ5L01ha2VmaWxl CmluZGV4IGQ0MWFhYWY4YWUxLi4yNzM2Y2FhMWExYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVjb3ZlcnkvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvTWFrZWZpbGUKQEAg LTksNyArOSw4IEBACiAjCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1FWFRSQV9JTlNUQUxM PWNvbnRyaWIvcGdfcHJld2FybSBcCitFWFRSQV9JTlNUQUxMPWNvbnRyaWIvYW1jaGVjayBc CisJY29udHJpYi9wZ19wcmV3YXJtIFwKIAljb250cmliL3BnX3N0YXRfc3RhdGVtZW50cyBc CiAJY29udHJpYi90ZXN0X2RlY29kaW5nIFwKIAlzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkIGIv c3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKaW5kZXggYWQwZDg1ZjQxODkuLjhkYmNk YTM1Nzc1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZAorKysg Yi9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZApAQCAtNjMsNiArNjMsNyBAQCB0ZXN0 cyArPSB7CiAgICAgICAndC8wNTJfY2hlY2twb2ludF9zZWdtZW50X21pc3NpbmcucGwnLAog ICAgICAgJ3QvMDUzX3N0YW5kYnlfbG9naW5fZXZlbnRfdHJpZ2dlci5wbCcsCiAgICAgICAn dC8wNTRfdW5sb2dnZWRfc2VxdWVuY2VfcHJvbW90aW9uLnBsJywKKyAgICAgICd0LzA1NV9o b3RfaW5kZXhlZF9yZWNvdmVyeS5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDU1X2hvdF9pbmRleGVkX3JlY292ZXJ5LnBsIGIvc3Jj L3Rlc3QvcmVjb3ZlcnkvdC8wNTVfaG90X2luZGV4ZWRfcmVjb3ZlcnkucGwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI2ZjA3N2IzMTU5Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTVfaG90X2luZGV4ZWRfcmVjb3Zlcnku cGwKQEAgLTAsMCArMSwxNDkgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgQ3Jhc2gtcmVjb3ZlcnkgY292ZXJh Z2UgZm9yIEhPVC1pbmRleGVkIChIT1QvU0lVKSBjaGFpbnMuCisjCisjIEJ1aWxkIGEgSE9U LWluZGV4ZWQgY2hhaW4gYnkgcmVwZWF0ZWRseSBVUERBVEVpbmcgYSBzaW5nbGUgcm93LAor IyBjaGFuZ2luZyBvbmUgaW5kZXhlZCAobm9uLVBLKSBjb2x1bW4gZWFjaCB0aW1lLiAgRm9y Y2UgYSBwcnVuZSBzbyB0aGUKKyMgZGVhZCBjaGFpbiBtZW1iZXJzIGNvbGxhcHNlIHRvIExQ X1JFRElSRUNUIGZvcndhcmRlcnMgKHdpdGggdGhlIGxpdmUKKyMgSE9ULWluZGV4ZWQgdmVy c2lvbiB2aXNpYmxlIHZpYSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cyBhcworIyBu X2hvdF9pbmRleGVkID4gMCkuICBDcmFzaC1yZWNvdmVyIHRoZSBwcmltYXJ5IHdpdGggc3Rv cCgnaW1tZWRpYXRlJykKKyMgc28gdGhlIGNvbGxhcHNlZCBjaGFpbiBjb21lcyBiYWNrIGZy b20gV0FMIG9yIGZyb20gdGhlIEZQSS4gIEFmdGVyCisjIHJlc3RhcnQsIHZlcmlmeToKKyMK KyMgICAxLiBhbiBpbmRleCBsb29rdXAgd2Fsa2luZyB0aGUgY2hhaW4gcmV0dXJucyB0aGUg bGl2ZSB0dXBsZSwKKyMgICAyLiBwZ19hbWNoZWNrICh2ZXJpZnlfaGVhcGFtKSByZXBvcnRz IG5vIGVycm9ycyBvbiB0aGUgcmVsYXRpb24sCisjICAgMy4gVkFDVVVNIHJlY2xhaW1zIHRo ZSBjb2xsYXBzZWQgY2hhaW4gKG5faG90X2luZGV4ZWQgZHJvcHMgdG8gMCkuCisjCit1c2Ug c3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVz dDo6TW9yZTsKKworbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J3ByaW1hcnknKTsKKyRub2RlLT5pbml0OworIyBEaXNhYmxlIGF1dG92YWN1dW0gdG8ga2Vl cCB0aGUgY2hhaW4gc2hhcGUgc3RhYmxlIHVwIHRvIHRoZSBleHBsaWNpdAorIyBwcnVuZSB3 ZSB0cmlnZ2VyIGJlbG93LgorJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LCBxe2F1dG92YWN1dW0gPSBvZmYKK3dhbF9jb25zaXN0ZW5jeV9jaGVja2luZyA9ICdhbGwn fSk7Ciskbm9kZS0+c3RhcnQ7CisKKyMgYW1jaGVjayAodmVyaWZ5X2hlYXBhbSkgaXMgc2hp cHBlZCBhcyBhIGNvbnRyaWIgZXh0ZW5zaW9uOyB3ZSB1c2UgaXQKKyMgZnJvbSBTUUwgYWZ0 ZXIgdGhlIGNyYXNoLXJlc3RhcnQgY3ljbGUuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHF7Q1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrfSk7CisKKyMgV2lkZS1pc2ggdGFibGU6 IFBLICsgZm91ciBpbmRleGVkIGNvbHVtbnMgcGx1cyBhIG5vbi1pbmRleGVkIHBheWxvYWQK KyMgc28gSE9ULWluZGV4ZWQgdXBkYXRlcyBoYXZlIHdpZHRoIHRvIGFtb3J0aXNlLiAgZmls bGZhY3RvciA9IDUwIGtlZXBzCisjIGZyZWUgc3BhY2Ugb24tcGFnZSBmb3IgSE9ULWluZGV4 ZWQgY29udGludWF0aW9ucy4KKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwlD UkVBVEUgVEFCTEUgaGlfcmVjb3YgKAorCQlpZCAgICAgIGludCBQUklNQVJZIEtFWSwKKwkJ YzEgICAgICBpbnQsCisJCWMyICAgICAgaW50LAorCQljMyAgICAgIGludCwKKwkJYzQgICAg ICBpbnQsCisJCXBheWxvYWQgdGV4dAorCSkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKwlD UkVBVEUgSU5ERVggaGlfcmVjb3ZfYzEgT04gaGlfcmVjb3YoYzEpOworCUNSRUFURSBJTkRF WCBoaV9yZWNvdl9jMiBPTiBoaV9yZWNvdihjMik7CisJQ1JFQVRFIElOREVYIGhpX3JlY292 X2MzIE9OIGhpX3JlY292KGMzKTsKKwlDUkVBVEUgSU5ERVggaGlfcmVjb3ZfYzQgT04gaGlf cmVjb3YoYzQpOworCUlOU0VSVCBJTlRPIGhpX3JlY292IFZBTFVFUyAoMSwgMTAwLCAyMDAs IDMwMCwgNDAwLCAncGF5bG9hZCcpOworfSk7CisKKyMgQnVpbGQgYSBIT1QtaW5kZXhlZCBj aGFpbjogZml2ZSBVUERBVEVzLCBlYWNoIHRvdWNoaW5nIG9uZSBpbmRleGVkCisjIGNvbHVt bi4gIEV2ZXJ5IFVQREFURSBrZWVwcyB0aGUgbmV3IHZlcnNpb24gb24tcGFnZSBhbmQgcGxh bnRzIGEgZnJlc2gKKyMgaW5kZXggZW50cnkgYmVjYXVzZSBjMSBpcyBpbmRleGVkIGFuZCBj aGFuZ2VkLiAgVXNlIGEgU1FMIHRyYW5zYWN0aW9uLQorIyByYW5nZSBsb29wIHNvIGVhY2gg VVBEQVRFIGlzIGl0cyBvd24geGFjdCAoeG1pbi94bWF4IGRpc3RpbmN0KS4KK2ZvciBteSAk aSAoMSAuLiA1KQoreworCW15ICRuZXd2YWwgPSAxMDAgKyAkaTsKKwkkbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgaGlfcmVjb3YgU0VUIGMxID0gJG5ld3ZhbCBX SEVSRSBpZCA9IDEiKTsKK30KKworbXkgJHByZV9wcnVuZSA9ICRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwlxe1NFTEVDVCBuX2hvdF9pbmRleGVkIEZST00gcGdfcmVsYXRpb25f aG90X2luZGV4ZWRfc3RhdHMoJ2hpX3JlY292Jyl9KTsKK2NtcF9vaygkcHJlX3BydW5lLCAn PicsIDAsCisJJ0hPVC1pbmRleGVkIGNoYWluIGhhcyBhdCBsZWFzdCBvbmUgbGl2ZSBIT1Qt aW5kZXhlZCB2ZXJzaW9uIGJlZm9yZSBwcnVuZScpOworCisjIEZvcmNlIGEgcHJ1bmUuICBU aGUgY2hhaW4gaGFzIGRlYWQgaGVhcC1vbmx5IG1lbWJlcnMgZnJvbSB0aGUgZWFybHkKKyMg VVBEQVRFcyAodGhlaXIgeG1pbnMgYXJlIG5vdyBjb21taXR0ZWQgYW5kIGJlbG93IHRoZSBz bmFwc2hvdCBob3Jpem9uKS4KKyMgQSBTRUxFQ1QgdW5kZXIgZGVmYXVsdCBpc29sYXRpb24g dmlzaXRzIHRoZSBwYWdlOyB1bmRlcgorIyBkZWZhdWx0X3N0YXRpc3RpY3NfdGFyZ2V0IGV0 Yy4gdGhhdCdzIG5vdCBlbm91Z2ggb24gaXRzIG93biB0byB0cmlnZ2VyCisjIHBydW5lLiAg VGhlIHJlbGlhYmxlIHdheSB0byBkcml2ZSBvcHBvcnR1bmlzdGljIHBydW5lIGlzIGEgcXVl cnkgdGhhdAorIyBleGVyY2lzZXMgdGhlIGhlYXBfcGFnZV9wcnVuZV9vcHQgcGF0aCwgd2hp Y2ggZmlyZXMgZnJvbSBhbiBpbmRleHNjYW4KKyMgdGhhdCBmaW5kcyB0aGUgcGFnZSBub24t YWxsLXZpc2libGUuICBVc2UgYSBzZXF1ZW50aWFsIHNjYW4gcGx1cyBhCisjIHN1YnNlcXVl bnQgVVBEQVRFIHRoYXQgaXRzZWxmIGxvb2tzIGZvciBmcmVlIHNwYWNlIChoZWFwX3VwZGF0 ZSBjYWxscworIyBoZWFwX3BhZ2VfcHJ1bmVfb3B0KS4KKyRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcXsKKwlTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9mZjsKKwlTRUxFQ1QgY291 bnQoKikgRlJPTSBoaV9yZWNvdjsKKwlVUERBVEUgaGlfcmVjb3YgU0VUIHBheWxvYWQgPSAn cHJ1bmVkJyBXSEVSRSBpZCA9IDE7Cit9KTsKKworIyBSZWFkIHRoZSBjaGFpbiBzdGF0ZSBh ZnRlciB0aGUgcHJ1bmU6IHRoZSBsaXZlIEhPVC1pbmRleGVkIHZlcnNpb24KKyMgcmVtYWlu cyB3aGlsZSBkZWFkIG1lbWJlcnMgY29sbGFwc2UgdG8gTFBfUkVESVJFQ1QgZm9yd2FyZGVy cy4KK215ICRwb3N0X3BydW5lID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7 U0VMRUNUIG5faG90X2luZGV4ZWQgRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0 cygnaGlfcmVjb3YnKX0pOworY21wX29rKCRwb3N0X3BydW5lLCAnPicsIDAsCisJJ2xpdmUg SE9ULWluZGV4ZWQgdmVyc2lvbiBzdXJ2aXZlcyBvcHBvcnR1bmlzdGljIHBydW5lJyk7CisK KyMgQ3Jhc2gtcmVzdGFydC4gIHN0b3AoJ2ltbWVkaWF0ZScpIGlzIHRoZSBzdGFuZGFyZCAi a2lsbCAtOSIgc2ltdWxhdGlvbgorIyB1c2VkIGVsc2V3aGVyZSBpbiBzcmMvdGVzdC9yZWNv dmVyeS8uICBXZSBpbnRlbnRpb25hbGx5IGRvIE5PVCBpc3N1ZSBhCisjIENIRUNLUE9JTlQg Zmlyc3Q6IHRoYXQgd291bGQgYWR2YW5jZSB0aGUgcmVkbyBwb2ludCBwYXN0IHRoZSBIT1Qt aW5kZXhlZAorIyBVUERBVEUvcHJ1bmUgcmVjb3JkcyBhbmQgbGVhdmUgbm90aGluZyBmb3Ig cmVjb3ZlcnkgdG8gcmVwbGF5LiAgQ3Jhc2hpbmcKKyMgd2l0aG91dCBhIGNoZWNrcG9pbnQg Zm9yY2VzIHN0YXJ0dXAgcmVkbyB0byByZWNvbnN0cnVjdCB0aGUgY29sbGFwc2VkCisjIGNo YWluIGZyb20gV0FMLCBhbmQgd2FsX2NvbnNpc3RlbmN5X2NoZWNraW5nID0gJ2FsbCcgKHNl dCBhYm92ZSkgY29tcGFyZXMKKyMgZWFjaCByZXBsYXllZCBwYWdlIGFnYWluc3QgaXRzIGZ1 bGwtcGFnZSBpbWFnZSwgY2F0Y2hpbmcgYW55IGRpdmVyZ2VuY2UKKyMgYmV0d2VlbiB0aGUg d3JpdGUgcGF0aCBhbmQgdGhlIHJlZG8gcGF0aC4KKyRub2RlLT5zdG9wKCdpbW1lZGlhdGUn KTsKKyRub2RlLT5zdGFydDsKKworIyAxLiBDaGFpbiB3YWxrIHZpYSB0aGUgaW5kZXhlZCBj b2x1bW4gb24gdGhlIGxpdmUgcm93IHJldHVybnMgdGhlCisjICAgIGNvcnJlY3QgKGFuZCBv bmx5IHRoZSBjb3JyZWN0KSB0dXBsZS4gIGMxID0gMTA1IHdhcyB0aGUgbGFzdAorIyAgICBV UERBVEUsIHNvIHRoZSBsaXZlIHR1cGxlIGhhcyBjMSA9IDEwNSBhbmQgYzIuLmM0IHVuY2hh bmdlZC4KK215ICRsaXZlID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCVNF VCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKKwlTRUxFQ1QgaWQsIGMxLCBjMiwgYzMsIGM0LCBw YXlsb2FkIEZST00gaGlfcmVjb3YgV0hFUkUgYzEgPSAxMDU7Cit9KTsKK2lzKCRsaXZlLCAi MXwxMDV8MjAwfDMwMHw0MDB8cHJ1bmVkIiwKKwknaW5kZXggbG9va3VwIG9uIGNoYWluIHJl dHVybnMgdGhlIHBvc3QtcHJ1bmUgbGl2ZSB0dXBsZScpOworCisjIE9sZGVyIGMxIHZhbHVl cyBhcmUgbm90IHJlYWNoYWJsZTogZXZlcnkgc3RhbGUgYnRyZWUgZW50cnkgdGhhdAorIyBj aGFpbi1yZXNvbHZlcyBhY3Jvc3MgYSBIT1QvU0lVIGhvcCBtdXN0IGJlIGRyb3BwZWQgYnkg dGhlIHJlYWQtc2lkZQorIyBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAuCitteSAkc3RhbGVf Y291bnQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgY291bnQo KikgRlJPTSBoaV9yZWNvdiBXSEVSRSBjMSA9IDEwMH0pOworaXMoJHN0YWxlX2NvdW50LCAn MCcsCisJJ3N0YWxlIGJ0cmVlIGVudHJpZXMgYXJlIGZpbHRlcmVkIGJ5IHRoZSBjcm9zc2Vk LWF0dHJpYnV0ZSBiaXRtYXAnKTsKKworIyAyLiB2ZXJpZnlfaGVhcGFtIHJlcG9ydHMgbm8g ZXJyb3JzIG9uIHRoZSByZWxhdGlvbiAoc2tpcF9vcHRpb24gPQorIyAgICAnYWxsLWZyb3pl bicgaXMgdGhlIGRlZmF1bHQ7IHdlIHdhbnQgdG8gc2NhbiBldmVyeXRoaW5nKS4KK215ICRo ZWFwY2hlY2sgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJU0VMRUNUIGNv dW50KCopIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfcmVjb3YnLAorCSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2tpcCA6PSAnbm9uZScsCisJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjaGVja190b2FzdCA6PSBmYWxzZSk7Cit9KTsKK2lzKCRo ZWFwY2hlY2ssICcwJywKKwkndmVyaWZ5X2hlYXBhbSByZXBvcnRzIHplcm8gZXJyb3JzIGFm dGVyIGNyYXNoIHJlY292ZXJ5Jyk7CisKKyMgMy4gUmVjbGFtYXRpb246IGFmdGVyIHRoZSBs aXZlIHJvdyBpcyBkZWxldGVkLCB0d28gVkFDVVVNIChGUkVFWkUpCisjICAgIHBhc3NlcyBk cml2ZSBwcnVuZSB0byByZXZpc2l0IHRoZSBwYWdlIGFuZCByZWNsYWltIHRoZSBub3ctZnVs bHktZGVhZAorIyAgICBjb2xsYXBzZWQgY2hhaW4gKHRoZSBmaXJzdCByZW1vdmVzIHRoZSBk ZWFkIHJvdydzIGluZGV4IGVudHJpZXMgYW5kCisjICAgIHJlZHVjZXMgaXRzIExQOyB0aGUg c2Vjb25kIHJlY2xhaW1zIHRoZSB1bnJlZmVyZW5jZWQgbWVtYmVycyBhbmQKKyMgICAgcmUt cG9pbnRzIHRoZSByZWRpcmVjdCkuICBBZnRlciB0aGF0LCBuX2hvdF9pbmRleGVkIG11c3Qg YmUgemVyby4KKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtERUxFVEUgRlJPTSBo aV9yZWNvdiBXSEVSRSBpZCA9IDF9KTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK Kwlxe1ZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BBR0VfU0tJUFBJTkcpIGhpX3JlY292fSk7 Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtWQUNVVU0gKEZSRUVaRSwgRElT QUJMRV9QQUdFX1NLSVBQSU5HKSBoaV9yZWNvdn0pOworbXkgJGZpbmFsID0gJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNUIG5faG90X2luZGV4ZWQgRlJPTSBwZ19y ZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfcmVjb3YnKX0pOworaXMoJGZpbmFsLCAn MCcsCisJJ3R3byBWQUNVVU0gKEZSRUVaRSkgcGFzc2VzIGFmdGVyIERFTEVURSByZWNsYWlt IHRoZSBjaGFpbiBwb3N0LXJlY292ZXJ5Jyk7CisKKyRub2RlLT5zdG9wOworCitkb25lX3Rl c3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggNmEzMzQx MzU2ZGEuLmEzYjJjZDk4ZmY4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dApAQCAtMTgxMCw2ICsxODEwLDggQEAgcGdfc3RhdF9hbGxfaW5kZXhlc3wgU0VMRUNUIGMu b2lkIEFTIHJlbGlkLAogICAgIHBnX3N0YXRfZ2V0X2xhc3RzY2FuKGkub2lkKSBBUyBsYXN0 X2lkeF9zY2FuLAogICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19yZXR1cm5lZChpLm9pZCkgQVMg aWR4X3R1cF9yZWFkLAogICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19mZXRjaGVkKGkub2lkKSBB UyBpZHhfdHVwX2ZldGNoLAorICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91 cGRhdGVkX3NraXBwZWQoaS5vaWQpIEFTIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVk LAorICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkX21hdGNoZWQo aS5vaWQpIEFTIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkLAogICAgIHBnX3N0YXRf Z2V0X3N0YXRfcmVzZXRfdGltZShpLm9pZCkgQVMgc3RhdHNfcmVzZXQKICAgIEZST00gKCgo cGdfY2xhc3MgYwogICAgICBKT0lOIHBnX2luZGV4IHggT04gKChjLm9pZCA9IHguaW5kcmVs aWQpKSkKQEAgLTE4MjksNiArMTgzMSw3IEBAIHBnX3N0YXRfYWxsX3RhYmxlc3wgU0VMRUNU IGMub2lkIEFTIHJlbGlkLAogICAgIHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKGMub2lk KSBBUyBuX3R1cF91cGQsCiAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2RlbGV0ZWQoYy5vaWQp IEFTIG5fdHVwX2RlbCwKICAgICBwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQoYy5v aWQpIEFTIG5fdHVwX2hvdF91cGQsCisgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRl eGVkX3VwZGF0ZWQoYy5vaWQpIEFTIG5fdHVwX2hvdF9pbmRleGVkX3VwZCwKICAgICBwZ19z dGF0X2dldF90dXBsZXNfbmV3cGFnZV91cGRhdGVkKGMub2lkKSBBUyBuX3R1cF9uZXdwYWdl X3VwZCwKICAgICBwZ19zdGF0X2dldF9saXZlX3R1cGxlcyhjLm9pZCkgQVMgbl9saXZlX3R1 cCwKICAgICBwZ19zdGF0X2dldF9kZWFkX3R1cGxlcyhjLm9pZCkgQVMgbl9kZWFkX3R1cCwK QEAgLTIzMzUsNiArMjMzOCw4IEBAIHBnX3N0YXRfc3lzX2luZGV4ZXN8IFNFTEVDVCByZWxp ZCwKICAgICBsYXN0X2lkeF9zY2FuLAogICAgIGlkeF90dXBfcmVhZCwKICAgICBpZHhfdHVw X2ZldGNoLAorICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkLAorICAgIG5fdHVw X2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkLAogICAgIHN0YXRzX3Jlc2V0CiAgICBGUk9NIHBn X3N0YXRfYWxsX2luZGV4ZXMKICAgV0hFUkUgKChzY2hlbWFuYW1lID0gQU5ZIChBUlJBWVsn cGdfY2F0YWxvZyc6Om5hbWUsICdpbmZvcm1hdGlvbl9zY2hlbWEnOjpuYW1lXSkpIE9SIChz Y2hlbWFuYW1lIH4gJ15wZ190b2FzdCc6OnRleHQpKTsKQEAgLTIzNTEsNiArMjM1Niw3IEBA IHBnX3N0YXRfc3lzX3RhYmxlc3wgU0VMRUNUIHJlbGlkLAogICAgIG5fdHVwX3VwZCwKICAg ICBuX3R1cF9kZWwsCiAgICAgbl90dXBfaG90X3VwZCwKKyAgICBuX3R1cF9ob3RfaW5kZXhl ZF91cGQsCiAgICAgbl90dXBfbmV3cGFnZV91cGQsCiAgICAgbl9saXZlX3R1cCwKICAgICBu X2RlYWRfdHVwLApAQCAtMjM5MCw2ICsyMzk2LDggQEAgcGdfc3RhdF91c2VyX2luZGV4ZXN8 IFNFTEVDVCByZWxpZCwKICAgICBsYXN0X2lkeF9zY2FuLAogICAgIGlkeF90dXBfcmVhZCwK ICAgICBpZHhfdHVwX2ZldGNoLAorICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVk LAorICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkLAogICAgIHN0YXRzX3Jlc2V0 CiAgICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKICAgV0hFUkUgKChzY2hlbWFuYW1lIDw+ IEFMTCAoQVJSQVlbJ3BnX2NhdGFsb2cnOjpuYW1lLCAnaW5mb3JtYXRpb25fc2NoZW1hJzo6 bmFtZV0pKSBBTkQgKHNjaGVtYW5hbWUgIX4gJ15wZ190b2FzdCc6OnRleHQpKTsKQEAgLTI0 MDYsNiArMjQxNCw3IEBAIHBnX3N0YXRfdXNlcl90YWJsZXN8IFNFTEVDVCByZWxpZCwKICAg ICBuX3R1cF91cGQsCiAgICAgbl90dXBfZGVsLAogICAgIG5fdHVwX2hvdF91cGQsCisgICAg bl90dXBfaG90X2luZGV4ZWRfdXBkLAogICAgIG5fdHVwX25ld3BhZ2VfdXBkLAogICAgIG5f bGl2ZV90dXAsCiAgICAgbl9kZWFkX3R1cCwKQEAgLTI0NjEsNiArMjQ3MCw3IEBAIHBnX3N0 YXRfeGFjdF9hbGxfdGFibGVzfCBTRUxFQ1QgYy5vaWQgQVMgcmVsaWQsCiAgICAgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChjLm9pZCkgQVMgbl90dXBfdXBkLAogICAgIHBn X3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2RlbGV0ZWQoYy5vaWQpIEFTIG5fdHVwX2RlbCwKICAg ICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChjLm9pZCkgQVMgbl90dXBf aG90X3VwZCwKKyAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRh dGVkKGMub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91cGQsCiAgICAgcGdfc3RhdF9nZXRf eGFjdF90dXBsZXNfbmV3cGFnZV91cGRhdGVkKGMub2lkKSBBUyBuX3R1cF9uZXdwYWdlX3Vw ZAogICAgRlJPTSAoKHBnX2NsYXNzIGMKICAgICAgTEVGVCBKT0lOIHBnX2luZGV4IGkgT04g KChjLm9pZCA9IGkuaW5kcmVsaWQpKSkKQEAgLTI0NzgsNiArMjQ4OCw3IEBAIHBnX3N0YXRf eGFjdF9zeXNfdGFibGVzfCBTRUxFQ1QgcmVsaWQsCiAgICAgbl90dXBfdXBkLAogICAgIG5f dHVwX2RlbCwKICAgICBuX3R1cF9ob3RfdXBkLAorICAgIG5fdHVwX2hvdF9pbmRleGVkX3Vw ZCwKICAgICBuX3R1cF9uZXdwYWdlX3VwZAogICAgRlJPTSBwZ19zdGF0X3hhY3RfYWxsX3Rh YmxlcwogICBXSEVSRSAoKHNjaGVtYW5hbWUgPSBBTlkgKEFSUkFZWydwZ19jYXRhbG9nJzo6 bmFtZSwgJ2luZm9ybWF0aW9uX3NjaGVtYSc6Om5hbWVdKSkgT1IgKHNjaGVtYW5hbWUgfiAn XnBnX3RvYXN0Jzo6dGV4dCkpOwpAQCAtMjUwMSw2ICsyNTEyLDcgQEAgcGdfc3RhdF94YWN0 X3VzZXJfdGFibGVzfCBTRUxFQ1QgcmVsaWQsCiAgICAgbl90dXBfdXBkLAogICAgIG5fdHVw X2RlbCwKICAgICBuX3R1cF9ob3RfdXBkLAorICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZCwK ICAgICBuX3R1cF9uZXdwYWdlX3VwZAogICAgRlJPTSBwZ19zdGF0X3hhY3RfYWxsX3RhYmxl cwogICBXSEVSRSAoKHNjaGVtYW5hbWUgPD4gQUxMIChBUlJBWVsncGdfY2F0YWxvZyc6Om5h bWUsICdpbmZvcm1hdGlvbl9zY2hlbWEnOjpuYW1lXSkpIEFORCAoc2NoZW1hbmFtZSAhfiAn XnBnX3RvYXN0Jzo6dGV4dCkpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5k ZXggYmQ5NWNjMjQ5NzcuLjhmYTBhNmM0N2ZiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxf c2NoZWR1bGUKQEAgLTE0MywxMSArMTQzLDYgQEAgdGVzdDogZXZlbnRfdHJpZ2dlcl9sb2dp bgogIyB0aGlzIHRlc3QgYWxzbyB1c2VzIGV2ZW50IHRyaWdnZXJzLCBzbyBsaWtld2lzZSBy dW4gaXQgYnkgaXRzZWxmCiB0ZXN0OiBmYXN0X2RlZmF1bHQKIAotIyAtLS0tLS0tLS0tCi0j IEhPVCB1cGRhdGVzIHRlc3RzCi0jIC0tLS0tLS0tLS0KLXRlc3Q6IGhvdF91cGRhdGVzCi0K ICMgcnVuIHRhYmxlc3BhY2UgdGVzdCBhdCB0aGUgZW5kIGJlY2F1c2UgaXQgZHJvcHMgdGhl IHRhYmxlc3BhY2UgY3JlYXRlZCBkdXJpbmcKICMgc2V0dXAgdGhhdCBvdGhlciB0ZXN0cyBt YXkgdXNlLgogdGVzdDogdGFibGVzcGFjZQotLSAKMi41MC4xCgo= --ffc971266f692fe98c1088dac35356ed85e7d5db Content-Disposition: attachment; filename*0="v63-0009-Gate-HOT-indexed-updates-on-the-logical-replicat.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v63-0009-Gate-HOT-indexed-updates-on-the-logical-replicat.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAwZThjZjBjNDczMjk3NTBiMDMyMzllNDFlY2NjYTFhNGM2ZWQ4NjU5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTo0Mzo1MyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjYzIDA5 LzEwXSBHYXRlIEhPVC1pbmRleGVkIHVwZGF0ZXMgb24gdGhlIGxvZ2ljYWwtcmVwbGljYXRp b24KIGFwcGx5IHBhdGgKCkEgSE9ULWluZGV4ZWQgdXBkYXRlIG9mIGEgcmVwbGljYS1pZGVu dGl0eSBhdHRyaWJ1dGUgb24gYSBzdWJzY3JpYmVyIGxlYXZlcyBhCnN0YWxlIGluZGV4IGxl YWYgdGhhdCB0aGUgYXBwbHkgd29ya2VyJ3MgcmVwbGljYS1pZGVudGl0eSBsb29rdXBzIG11 c3QgdG9sZXJhdGUKLS0gd2hpY2ggdGhleSBkbywgYnV0IG9ubHkgd2hlbiB0aGUgc3Vic2Ny aWJlcidzIGluZGV4ZWQgYXR0cmlidXRlcyBkbyBub3QKZXh0ZW5kIHBhc3QgdGhlIGNvbHVt bnMgdGhvc2UgbG9va3VwcyBrZXkgb24uICBBZGQgdGhlIHBlci1zdWJzY3JpcHRpb24KaG90 X2luZGV4ZWRfb25fYXBwbHkgb3B0aW9uIChzdWJob3RpbmRleGVkb25hcHBseTogb2ZmIC8g c3Vic2V0X29ubHkgKGRlZmF1bHQpCi8gYWx3YXlzKSBhbmQgaGF2ZSBIZWFwVXBkYXRlSG90 QWxsb3dhYmxlIGNvbnN1bHQgaXQgd2hlbiBydW5uaW5nIGluIGFuIGFwcGx5Cndvcmtlciwg Y29tcGFyaW5nIHRoZSByZWxhdGlvbidzIGluZGV4ZWQtYXR0cmlidXRlIHNldCBhZ2FpbnN0 IGl0cyBwcmltYXJ5LWtleQphdHRyaWJ1dGVzOiAib2ZmIiBkaXNxdWFsaWZpZXMgSE9ULWlu ZGV4ZWQgd2hlbmV2ZXIgYW55IGluZGV4ZWQgYXR0cmlidXRlIGxpZXMKb3V0c2lkZSB0aGUg cHJpbWFyeSBrZXksICJzdWJzZXRfb25seSIgcmVxdWlyZXMgdGhlIGluZGV4ZWQgYXR0cmli dXRlcyB0byBiZSBhCnN1YnNldCBvZiB0aGUgcHJpbWFyeSBrZXksIGFuZCAiYWx3YXlzIiBh cHBsaWVzIG5vIGFwcGx5LXBhdGggZ2F0aW5nLgoKV2lyZSB0aGUgb3B0aW9uIHRocm91Z2gg Q1JFQVRFL0FMVEVSIFNVQlNDUklQVElPTiwgcGdfc3Vic2NyaXB0aW9uLCBwZ19kdW1wLAph bmQgcHNxbCdzIFxkUnMrLCBhbmQgZG9jdW1lbnQgaXQgKGNyZWF0ZV9zdWJzY3JpcHRpb24s IGFsdGVyX3N1YnNjcmlwdGlvbiwKY2F0YWxvZ3MpLiAgQ292ZXIgYXBwbHkgdW5kZXIgZWFj aCBtb2RlICgwMzkpLCBhcHBseSB1bmRlciBSRVBMSUNBIElERU5USVRZCkZVTEwgYW5kIGEg bm9uLVBLIFVTSU5HIElOREVYIHdob3NlIGtleSBpcyBjeWNsZWQgKDA0MCksIGFuZCBkZWNv ZGluZyBvZgpIT1QtaW5kZXhlZCB1cGRhdGUgY2hhaW5zICh0ZXN0X2RlY29kaW5nKS4KCkF1 dGhvcmVkLWJ5OiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KLS0tCiBjb250cmliL3Rlc3Rf ZGVjb2RpbmcvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi90ZXN0X2Rl Y29kaW5nL2V4cGVjdGVkL2hvdF9pbmRleGVkLm91dCAgICB8ICA1OSArKysKIGNvbnRyaWIv dGVzdF9kZWNvZGluZy9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgMSArCiBjb250cmli L3Rlc3RfZGVjb2Rpbmcvc3FsL2hvdF9pbmRleGVkLnNxbCAgICAgfCAgMjkgKysKIGRvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAxNiArCiBkb2Mv c3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sICAgICAgfCAgIDcgKy0KIGRv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8ICA1NSArKysK IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICAzMCAr Kwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAg NDMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8 ICAyMyArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAg fCAgMTcgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAg IHwgICAxICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAxMCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmggICAgICAgICAg ICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAg ICAgICB8ICAyNyArKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5o ICAgICAgIHwgICA4ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9u Lm91dCAgICB8IDE3NiArKysrLS0tLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1 aWxkICAgICAgICAgICAgIHwgICAyICsKIC4uLi9zdWJzY3JpcHRpb24vdC8wMzlfaG90X2lu ZGV4ZWRfYXBwbHkucGwgICB8IDQxNiArKysrKysrKysrKysrKysrKysKIC4uLi90LzA0MF9o b3RfaW5kZXhlZF9yZXBsaWNhX2lkZW50aXR5LnBsICAgICB8IDExMCArKysrKwogMjIgZmls ZXMgY2hhbmdlZCwgOTQzIGluc2VydGlvbnMoKyksIDk0IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGNvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9ob3RfaW5kZXhl ZC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3Rlc3RfZGVjb2Rpbmcvc3FsL2hv dF9pbmRleGVkLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAzOV9ob3RfaW5kZXhlZF9hcHBseS5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzA0MF9ob3RfaW5kZXhlZF9yZXBsaWNhX2lkZW50aXR5LnBs CgpkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlIGIvY29udHJp Yi90ZXN0X2RlY29kaW5nL01ha2VmaWxlCmluZGV4IDAxMTExMjQzOTlhLi44MDAyMTZiMmFl NCAxMDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlCisrKyBiL2Nv bnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZQpAQCAtNSw3ICs1LDcgQEAgUEdGSUxFREVT QyA9ICJ0ZXN0X2RlY29kaW5nIC0gZXhhbXBsZSBvZiBhIGxvZ2ljYWwgZGVjb2Rpbmcgb3V0 cHV0IHBsdWdpbiIKIAogUkVHUkVTUyA9IGRkbCB4YWN0IHJld3JpdGUgdG9hc3QgcGVybWlz c2lvbnMgZGVjb2RpbmdfaW5feGFjdCBcCiAJZGVjb2RpbmdfaW50b19yZWwgYmluYXJ5IHBy ZXBhcmVkIHJlcGxvcmlnaW4gdGltZSBtZXNzYWdlcyBcCi0JcmVwYWNrIHNwaWxsIHNsb3Qg dHJ1bmNhdGUgc3RyZWFtIHN0YXRzIHR3b3BoYXNlIHR3b3BoYXNlX3N0cmVhbQorCXJlcGFj ayBzcGlsbCBzbG90IHRydW5jYXRlIHN0cmVhbSBzdGF0cyB0d29waGFzZSB0d29waGFzZV9z dHJlYW0gaG90X2luZGV4ZWQKIElTT0xBVElPTiA9IG14YWN0IGRlbGF5ZWRfc3RhcnR1cCBv bmRpc2tfc3RhcnR1cCBjb25jdXJyZW50X2RkbF9kbWwgXAogCW9sZGVzdF94bWluIHNuYXBz aG90X3RyYW5zZmVyIHN1YnhhY3Rfd2l0aG91dF90b3AgY29uY3VycmVudF9zdHJlYW0gXAog CXR3b3BoYXNlX3NuYXBzaG90IHNsb3RfY3JlYXRpb25fZXJyb3IgY2F0YWxvZ19jaGFuZ2Vf c25hcHNob3QgXApkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVk L2hvdF9pbmRleGVkLm91dCBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9ob3Rf aW5kZXhlZC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFl MjE4NmZkYTU2Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4 cGVjdGVkL2hvdF9pbmRleGVkLm91dApAQCAtMCwwICsxLDU5IEBACistLSBMb2dpY2FsIGRl Y29kaW5nIG9mIEhPVC1pbmRleGVkIFVQREFURXMuICBBIEhPVC1pbmRleGVkIHVwZGF0ZSBp cyBhbgorLS0gb3JkaW5hcnkgaGVhcCB1cGRhdGUgYXQgdGhlIFdBTCBsZXZlbCAodGhlIG5l dyB2ZXJzaW9uIGlzIGxvZ2dlZCBpbiBmdWxsKSwKKy0tIHNvIGl0IG11c3QgZGVjb2RlIGV4 YWN0bHkgbGlrZSBhbnkgb3RoZXIgdXBkYXRlLiAgRXhlcmNpc2UgYSBjaGFpbiBvZgorLS0g SE9ULWluZGV4ZWQgdXBkYXRlcyB1bmRlciBSRVBMSUNBIElERU5USVRZIEZVTEwgc28gdGhl IGRlY29kZWQgb2xkIHR1cGxlIGFuZAorLS0gbmV3IHR1cGxlIGNhbiBib3RoIGJlIGNoZWNr ZWQuCitTRVQgc3luY2hyb25vdXNfY29tbWl0ID0gb247CitTRUxFQ1QgJ2luaXQnIEZST00g cGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgncmVncmVzc2lvbl9zbG90Jywg J3Rlc3RfZGVjb2RpbmcnKTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBpbml0CisoMSBy b3cpCisKK0NSRUFURSBUQUJMRSBoaV9kZWNvZGUgKGlkIGludCBQUklNQVJZIEtFWSwgYSBp bnQsIGIgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2Rl Y29kZV9hIE9OIGhpX2RlY29kZSAoYSk7CitDUkVBVEUgSU5ERVggaGlfZGVjb2RlX2IgT04g aGlfZGVjb2RlIChiKTsKK0FMVEVSIFRBQkxFIGhpX2RlY29kZSBSRVBMSUNBIElERU5USVRZ IEZVTEw7CitJTlNFUlQgSU5UTyBoaV9kZWNvZGUgVkFMVUVTICgxLCAxMCwgMTAwKTsKKy0t IGVhY2ggdXBkYXRlIGNoYW5nZXMgb25lIGluZGV4ZWQgY29sdW1uLCBzbyBlYWNoIHN0YXlz IEhPVC1pbmRleGVkCitVUERBVEUgaGlfZGVjb2RlIFNFVCBhID0gMTEgV0hFUkUgaWQgPSAx OworVVBEQVRFIGhpX2RlY29kZSBTRVQgYiA9IDEwMSBXSEVSRSBpZCA9IDE7CitVUERBVEUg aGlfZGVjb2RlIFNFVCBhID0gMTIgV0hFUkUgaWQgPSAxOworLS0gY3ljbGUgYSBhd2F5IGFu ZCBiYWNrIChBQkEpIGFuZCB0aGVuIGRlbGV0ZQorVVBEQVRFIGhpX2RlY29kZSBTRVQgYSA9 IDk5IFdIRVJFIGlkID0gMTsKK1VQREFURSBoaV9kZWNvZGUgU0VUIGEgPSAxMiBXSEVSRSBp ZCA9IDE7CitERUxFVEUgRlJPTSBoaV9kZWNvZGUgV0hFUkUgaWQgPSAxOworU0VMRUNUIGRh dGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcs IE5VTEwsIE5VTEwsCisgICAgICAgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkt eGFjdHMnLCAnMScpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJFR0lOCisgdGFibGUgcHVibGljLmhpX2Rl Y29kZTogSU5TRVJUOiBpZFtpbnRlZ2VyXToxIGFbaW50ZWdlcl06MTAgYltpbnRlZ2VyXTox MDAKKyBDT01NSVQKKyBCRUdJTgorIHRhYmxlIHB1YmxpYy5oaV9kZWNvZGU6IFVQREFURTog b2xkLWtleTogaWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjEwIGJbaW50ZWdlcl06MTAwIG5l dy10dXBsZTogaWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjExIGJbaW50ZWdlcl06MTAwCisg Q09NTUlUCisgQkVHSU4KKyB0YWJsZSBwdWJsaWMuaGlfZGVjb2RlOiBVUERBVEU6IG9sZC1r ZXk6IGlkW2ludGVnZXJdOjEgYVtpbnRlZ2VyXToxMSBiW2ludGVnZXJdOjEwMCBuZXctdHVw bGU6IGlkW2ludGVnZXJdOjEgYVtpbnRlZ2VyXToxMSBiW2ludGVnZXJdOjEwMQorIENPTU1J VAorIEJFR0lOCisgdGFibGUgcHVibGljLmhpX2RlY29kZTogVVBEQVRFOiBvbGQta2V5OiBp ZFtpbnRlZ2VyXToxIGFbaW50ZWdlcl06MTEgYltpbnRlZ2VyXToxMDEgbmV3LXR1cGxlOiBp ZFtpbnRlZ2VyXToxIGFbaW50ZWdlcl06MTIgYltpbnRlZ2VyXToxMDEKKyBDT01NSVQKKyBC RUdJTgorIHRhYmxlIHB1YmxpYy5oaV9kZWNvZGU6IFVQREFURTogb2xkLWtleTogaWRbaW50 ZWdlcl06MSBhW2ludGVnZXJdOjEyIGJbaW50ZWdlcl06MTAxIG5ldy10dXBsZTogaWRbaW50 ZWdlcl06MSBhW2ludGVnZXJdOjk5IGJbaW50ZWdlcl06MTAxCisgQ09NTUlUCisgQkVHSU4K KyB0YWJsZSBwdWJsaWMuaGlfZGVjb2RlOiBVUERBVEU6IG9sZC1rZXk6IGlkW2ludGVnZXJd OjEgYVtpbnRlZ2VyXTo5OSBiW2ludGVnZXJdOjEwMSBuZXctdHVwbGU6IGlkW2ludGVnZXJd OjEgYVtpbnRlZ2VyXToxMiBiW2ludGVnZXJdOjEwMQorIENPTU1JVAorIEJFR0lOCisgdGFi bGUgcHVibGljLmhpX2RlY29kZTogREVMRVRFOiBpZFtpbnRlZ2VyXToxIGFbaW50ZWdlcl06 MTIgYltpbnRlZ2VyXToxMDEKKyBDT01NSVQKKygyMSByb3dzKQorCitTRUxFQ1QgcGdfZHJv cF9yZXBsaWNhdGlvbl9zbG90KCdyZWdyZXNzaW9uX3Nsb3QnKTsKKyBwZ19kcm9wX3JlcGxp Y2F0aW9uX3Nsb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitEUk9QIFRBQkxFIGhpX2RlY29kZTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNv ZGluZy9tZXNvbi5idWlsZCBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9tZXNvbi5idWlsZApp bmRleCBhYzY1NTg1M2QyNi4uOTE3NjVjYTBlNzIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVz dF9kZWNvZGluZy9tZXNvbi5idWlsZAorKysgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvbWVz b24uYnVpbGQKQEAgLTQyLDYgKzQyLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3N0YXRzJywK ICAgICAgICd0d29waGFzZScsCiAgICAgICAndHdvcGhhc2Vfc3RyZWFtJywKKyAgICAgICdo b3RfaW5kZXhlZCcsCiAgICAgXSwKICAgICAncmVncmVzc19hcmdzJzogWwogICAgICAgJy0t dGVtcC1jb25maWcnLCBmaWxlcygnbG9naWNhbC5jb25mJyksCmRpZmYgLS1naXQgYS9jb250 cmliL3Rlc3RfZGVjb2Rpbmcvc3FsL2hvdF9pbmRleGVkLnNxbCBiL2NvbnRyaWIvdGVzdF9k ZWNvZGluZy9zcWwvaG90X2luZGV4ZWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi4wNWQ3ZDA5MWI2MgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIv dGVzdF9kZWNvZGluZy9zcWwvaG90X2luZGV4ZWQuc3FsCkBAIC0wLDAgKzEsMjkgQEAKKy0t IExvZ2ljYWwgZGVjb2Rpbmcgb2YgSE9ULWluZGV4ZWQgVVBEQVRFcy4gIEEgSE9ULWluZGV4 ZWQgdXBkYXRlIGlzIGFuCistLSBvcmRpbmFyeSBoZWFwIHVwZGF0ZSBhdCB0aGUgV0FMIGxl dmVsICh0aGUgbmV3IHZlcnNpb24gaXMgbG9nZ2VkIGluIGZ1bGwpLAorLS0gc28gaXQgbXVz dCBkZWNvZGUgZXhhY3RseSBsaWtlIGFueSBvdGhlciB1cGRhdGUuICBFeGVyY2lzZSBhIGNo YWluIG9mCistLSBIT1QtaW5kZXhlZCB1cGRhdGVzIHVuZGVyIFJFUExJQ0EgSURFTlRJVFkg RlVMTCBzbyB0aGUgZGVjb2RlZCBvbGQgdHVwbGUgYW5kCistLSBuZXcgdHVwbGUgY2FuIGJv dGggYmUgY2hlY2tlZC4KK1NFVCBzeW5jaHJvbm91c19jb21taXQgPSBvbjsKKworU0VMRUNU ICdpbml0JyBGUk9NIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jl c3Npb25fc2xvdCcsICd0ZXN0X2RlY29kaW5nJyk7CisKK0NSRUFURSBUQUJMRSBoaV9kZWNv ZGUgKGlkIGludCBQUklNQVJZIEtFWSwgYSBpbnQsIGIgaW50KSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOworQ1JFQVRFIElOREVYIGhpX2RlY29kZV9hIE9OIGhpX2RlY29kZSAoYSk7CitD UkVBVEUgSU5ERVggaGlfZGVjb2RlX2IgT04gaGlfZGVjb2RlIChiKTsKK0FMVEVSIFRBQkxF IGhpX2RlY29kZSBSRVBMSUNBIElERU5USVRZIEZVTEw7CisKK0lOU0VSVCBJTlRPIGhpX2Rl Y29kZSBWQUxVRVMgKDEsIDEwLCAxMDApOworLS0gZWFjaCB1cGRhdGUgY2hhbmdlcyBvbmUg aW5kZXhlZCBjb2x1bW4sIHNvIGVhY2ggc3RheXMgSE9ULWluZGV4ZWQKK1VQREFURSBoaV9k ZWNvZGUgU0VUIGEgPSAxMSBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfZGVjb2RlIFNFVCBi ID0gMTAxIFdIRVJFIGlkID0gMTsKK1VQREFURSBoaV9kZWNvZGUgU0VUIGEgPSAxMiBXSEVS RSBpZCA9IDE7CistLSBjeWNsZSBhIGF3YXkgYW5kIGJhY2sgKEFCQSkgYW5kIHRoZW4gZGVs ZXRlCitVUERBVEUgaGlfZGVjb2RlIFNFVCBhID0gOTkgV0hFUkUgaWQgPSAxOworVVBEQVRF IGhpX2RlY29kZSBTRVQgYSA9IDEyIFdIRVJFIGlkID0gMTsKK0RFTEVURSBGUk9NIGhpX2Rl Y29kZSBXSEVSRSBpZCA9IDE7CisKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90 X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLAorICAgICAgICdp bmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnKTsKKworU0VMRUNU IHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgncmVncmVzc2lvbl9zbG90Jyk7CitEUk9QIFRB QkxFIGhpX2RlY29kZTsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s IGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggNGI0NzRjMTM5MTcuLjRjOWFi YTcyYmE3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtODcyNyw2ICs4NzI3LDIyIEBAIFNDUkFN LVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNl YWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9y b3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZp ZWxkPnN1YmhvdGluZGV4ZWRvbmFwcGx5PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hhcjwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIEdhdGluZyBtb2RlIGZv ciB0aGUgSE9ULWluZGV4ZWQgYXBwbHkgcGF0aC4gIENvcnJlc3BvbmRzIHRvIHRoZQorICAg ICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgt aG90LWluZGV4ZWQtb24tYXBwbHkiPjxsaXRlcmFsPmhvdF9pbmRleGVkX29uX2FwcGx5PC9s aXRlcmFsPjwvbGluaz4KKyAgICAgICBzdWJzY3JpcHRpb24gb3B0aW9uOgorICAgICAgIDxp dGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGl0ZXJhbD5vPC9saXRl cmFsPiA9IG9mZjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+ PGxpdGVyYWw+czwvbGl0ZXJhbD4gPSBzdWJzZXRfb25seSAoZGVmYXVsdCk8L3BhcmE+PC9s aXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaXRlcmFsPmE8L2xpdGVyYWw+ ID0gYWx3YXlzPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgPC9pdGVtaXplZGxpc3Q+Cisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnN1YnNlcnZlcjwvc3RydWN0Zmll bGQ+IDx0eXBlPm9pZDwvdHlwZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlw dGlvbi5zZ21sCmluZGV4IDhkNjQ3NDQzNzVhLi5jY2NlNWM3M2E0NCAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yOTYsOCArMjk2LDExIEBA IEFMVEVSIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFt ZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8CiAgICAgICA8bGluayBsaW5rZW5kPSJzcWwt Y3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLXR3by1waGFzZSI+PGxpdGVyYWw+dHdv X3BoYXNlPC9saXRlcmFsPjwvbGluaz4sCiAgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3Jl YXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLXJldGFpbi1kZWFkLXR1cGxlcyI+PGxpdGVy YWw+cmV0YWluX2RlYWRfdHVwbGVzPC9saXRlcmFsPjwvbGluaz4sCiAgICAgICA8bGluayBs aW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLW1heC1yZXRlbnRp b24tZHVyYXRpb24iPjxsaXRlcmFsPm1heF9yZXRlbnRpb25fZHVyYXRpb248L2xpdGVyYWw+ PC9saW5rPiwKLSAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24t cGFyYW1zLXdpdGgtd2FsLXJlY2VpdmVyLXRpbWVvdXQiPjxsaXRlcmFsPndhbF9yZWNlaXZl cl90aW1lb3V0PC9saXRlcmFsPjwvbGluaz4sIGFuZAotICAgICAgPGxpbmsgbGlua2VuZD0i c3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1jb25mbGljdC1sb2ctZGVzdGlu YXRpb24iPjxsaXRlcmFsPmNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbjwvbGl0ZXJhbD48L2xp bms+LgorICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJh bXMtd2l0aC13YWwtcmVjZWl2ZXItdGltZW91dCI+PGxpdGVyYWw+d2FsX3JlY2VpdmVyX3Rp bWVvdXQ8L2xpdGVyYWw+PC9saW5rPiwKKyAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVh dGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtY29uZmxpY3QtbG9nLWRlc3RpbmF0aW9uIj48 bGl0ZXJhbD5jb25mbGljdF9sb2dfZGVzdGluYXRpb248L2xpdGVyYWw+PC9saW5rPiwgYW5k CisgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13 aXRoLWhvdC1pbmRleGVkLW9uLWFwcGx5Ij48bGl0ZXJhbD5ob3RfaW5kZXhlZF9vbl9hcHBs eTwvbGl0ZXJhbD48L2xpbms+LgorICAgICAgRm9yIDxsaXRlcmFsPmhvdF9pbmRleGVkX29u X2FwcGx5PC9saXRlcmFsPiwgdGhlIG5ldyB2YWx1ZSB0YWtlcyBlZmZlY3QKKyAgICAgIGF0 IHRoZSBhcHBseSB3b3JrZXIncyBuZXh0IGNhdGFsb2cgcmVsb2FkLgogICAgICAgT25seSBh IHN1cGVydXNlciBjYW4gc2V0IDxsaXRlcmFsPnBhc3N3b3JkX3JlcXVpcmVkID0gZmFsc2U8 L2xpdGVyYWw+LgogICAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf c3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggODFmYmYzNDg3YTQuLjBkNTlmODU3YmIzIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtNjUxLDYg KzY1MSw2MSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgICAgPC9wYXJh PgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAg ICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRo LWhvdC1pbmRleGVkLW9uLWFwcGx5Ij4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+aG90X2lu ZGV4ZWRfb25fYXBwbHk8L2xpdGVyYWw+ICg8dHlwZT50ZXh0PC90eXBlPik8L3Rlcm0+Cisg ICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIENvbnRyb2xz IHdoZXRoZXIgdGhlIHN1YnNjcmlwdGlvbidzIGFwcGx5IHdvcmtlciBtYXkgdGFrZSB0aGUK KyAgICAgICAgICBIT1QtaW5kZXhlZCB1cGRhdGUgcGF0aCB3aGVuIGFuIDxjb21tYW5kPlVQ REFURTwvY29tbWFuZD4gcmVwbGljYXRlZAorICAgICAgICAgIGZyb20gdGhlIHB1Ymxpc2hl ciB0b3VjaGVzIGFuIGluZGV4ZWQgYXR0cmlidXRlLiAgQmVjYXVzZSB0aGUKKyAgICAgICAg ICBzdWJzY3JpYmVyJ3MgaW5kZXggc2V0IG1heSBkaWZmZXIgZnJvbSB0aGUgcHVibGlzaGVy J3MsIGFuCisgICAgICAgICAgdW5jb25zdHJhaW5lZCBIT1QtaW5kZXhlZCBkZWNpc2lvbiBv biB0aGUgYXBwbHkgcGF0aCBjYW4gcHJvZHVjZSBhCisgICAgICAgICAgaGVhcCBjaGFpbiB3 aG9zZSBpbmRleCBzdGF0ZSBkaXNhZ3JlZXMgd2l0aCB0aGUgdXBzdHJlYW0gcm93LiAgVGhl CisgICAgICAgICAgb3B0aW9uIHJlc3RyaWN0cyB3aGVuIHRoZSBhcHBseSB3b3JrZXIgaXMg YWxsb3dlZCB0byB0YWtlIHRoYXQgcGF0aC4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAg IDxwYXJhPgorICAgICAgICAgIEFjY2VwdGVkIHZhbHVlcyBhcmU6CisgICAgICAgICAgPHZh cmlhYmxlbGlzdD4KKyAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgIDx0 ZXJtPjxsaXRlcmFsPm9mZjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0 ZW0+CisgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIEZvcmNlIG5vbi1IT1Qg b24gYXBwbHkgd2hlbmV2ZXIgdGhlIHN1YnNjcmliZXIgaGFzIGFueSBpbmRleGVkCisgICAg ICAgICAgICAgIGF0dHJpYnV0ZSBiZXlvbmQgdGhlIHByaW1hcnkga2V5LiAgVGhpcyBtYXRj aGVzIHRoZSBjb25zZXJ2YXRpdmUKKyAgICAgICAgICAgICAgcHJlLWV4aXN0aW5nIGJlaGF2 aW91ci4KKyAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgor ICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4K KyAgICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN1YnNldF9vbmx5PC9saXRlcmFsPjwvdGVy bT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICA8cGFyYT4KKyAgICAg ICAgICAgICAgQWxsb3cgdGhlIEhPVC1pbmRleGVkIGFwcGx5IHBhdGggd2hlbiB0aGUgc3Vi c2NyaWJlcidzCisgICAgICAgICAgICAgIGluZGV4ZWQtYXR0ciBzZXQgaXMgYSBzdWJzZXQg b2YgaXRzIHByaW1hcnkta2V5IGF0dHJzICh3aGljaAorICAgICAgICAgICAgICBpbmNsdWRl cyB0aGUgbm8tc2Vjb25kYXJ5LWluZGV4IGNhc2UpLiAgVGhpcyBpcyB0aGUgZGVmYXVsdCBh bmQKKyAgICAgICAgICAgICAgY2FwdHVyZXMgdGhlIGNvbW1vbiByZXBsaWNhdGlvbi1yZWFk eSBzY2hlbWEgc2hhcGUgd2hpbGUgc3RheWluZworICAgICAgICAgICAgICBzYWZlIHdoZW4g dGhlIHN1YnNjcmliZXIgYWRkcyBpbmRleGVzIHRoZSBwdWJsaXNoZXIgZG9lcyBub3QKKyAg ICAgICAgICAgICAgaGF2ZS4KKyAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8 L2xpc3RpdGVtPgorICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgPHZh cmxpc3RlbnRyeT4KKyAgICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmFsd2F5czwvbGl0ZXJh bD48L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgPHBhcmE+ CisgICAgICAgICAgICAgIFVuY29uZGl0aW9uYWwgSE9ULWluZGV4ZWQgZWxpZ2liaWxpdHkg b24gYXBwbHkuICBUaGUgb3BlcmF0b3IKKyAgICAgICAgICAgICAgdGFrZXMgcmVzcG9uc2li aWxpdHkgZm9yIGtlZXBpbmcgdGhlIHN1YnNjcmliZXIncyBpbmRleGVkLWF0dHIKKyAgICAg ICAgICAgICAgc2V0IGNvbXBhdGlibGUgd2l0aCB0aGUgcHVibGlzaGVyJ3M7IGRpdmVyZ2Vu dCBzY2hlbWFzIGNhbgorICAgICAgICAgICAgICBwcm9kdWNlIHNwdXJpb3VzIGR1cGxpY2F0 ZS1rZXkgY29uZmxpY3RzIGZvciBzdWJzZXF1ZW50CisgICAgICAgICAgICAgIGluc2VydHMg b24gdGhlIHN1YnNjcmliZXIuCisgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAg PC9saXN0aXRlbT4KKyAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgPC92 YXJpYWJsZWxpc3Q+CisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICA8L3ZhcmlhYmxlbGlzdD48L3BhcmE+CiAg ICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwppbmRleCBhYmU0MGNlMWI0Mi4uNDA1MzBhMzJmYmYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbS5jCkBAIC00NTEyLDYgKzQ1MTIsMzYgQEAgSGVhcFVwZGF0ZUhvdEFs bG93YWJsZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9p ZHhfYXR0cnMpCiAJYWxsX2lkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFw Tm9Db3B5KHJlbGF0aW9uLAogCQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9JTkRF WEVEKTsKIAorCS8qCisJICogVGhlIGxvZ2ljYWwtcmVwbGljYXRpb24gYXBwbHkgcGF0aCBn YXRlcyBIT1QtaW5kZXhlZCB1cGRhdGVzIG9uIHRoZQorCSAqIHBlci1zdWJzY3JpcHRpb24g aG90X2luZGV4ZWRfb25fYXBwbHkgb3B0aW9uLiAgQSBIT1QtaW5kZXhlZCB1cGRhdGUgb2YK KwkgKiBhIHJlcGxpY2EtaWRlbnRpdHkgYXR0cmlidXRlIGxlYXZlcyBhIHN0YWxlIGluZGV4 IGxlYWY7IHRoZSBhcHBseQorCSAqIHdvcmtlcidzIHJlcGxpY2EtaWRlbnRpdHkgbG9va3Vw cyBjb3BlIHdpdGggdGhhdCAoc2VlCisJICogUmVsYXRpb25GaW5kUmVwbFR1cGxlQnlJbmRl eCksIGJ1dCBvbmx5IHdoZW4gdGhlIGluZGV4ZWQgYXR0cmlidXRlcyBhcmUKKwkgKiBhIHN1 YnNldCBvZiB0aGUgcmVwbGljYSBpZGVudGl0eS4gICJvZmYiIGRpc3F1YWxpZmllcyB3aGVu ZXZlciB0aGUKKwkgKiBzdWJzY3JpYmVyIGhhcyBhbnkgaW5kZXhlZCBhdHRyaWJ1dGUgYmV5 b25kIGl0cyBQSzsgInN1YnNldF9vbmx5IiAodGhlCisJICogZGVmYXVsdCkgcmVxdWlyZXMg dGhlIGluZGV4ZWQgYXR0cmlidXRlcyB0byBiZSBhIHN1YnNldCBvZiB0aGUgUEs7CisJICog ImFsd2F5cyIgYXBwbGllcyBubyBhcHBseS1wYXRoIGdhdGluZy4KKwkgKi8KKwlpZiAoSXNM b2dpY2FsV29ya2VyKCkpCisJeworCQljaGFyCQltb2RlID0gR2V0SG90SW5kZXhlZEFwcGx5 TW9kZSgpOworCQljb25zdCBCaXRtYXBzZXQgICpwa19hdHRycyA9IFJlbGF0aW9uR2V0SW5k ZXhBdHRyQml0bWFwTm9Db3B5KHJlbGF0aW9uLAorCQkJCQkJCQkJCQkgIElOREVYX0FUVFJf QklUTUFQX1BSSU1BUllfS0VZKTsKKworCQlpZiAobW9kZSA9PSBMT0dJQ0FMUkVQX0hPVF9J TkRFWEVEX09GRikKKwkJeworCQkJaWYgKCFibXNfZXF1YWwoYWxsX2lkeF9hdHRycywgcGtf YXR0cnMpKQorCQkJCXJldHVybiBIRUFQX1VQREFURV9BTExfSU5ERVhFUzsKKwkJfQorCQll bHNlIGlmIChtb2RlID09IExPR0lDQUxSRVBfSE9UX0lOREVYRURfU1VCU0VUX09OTFkpCisJ CXsKKwkJCWlmICghYm1zX2lzX3N1YnNldChhbGxfaWR4X2F0dHJzLCBwa19hdHRycykpCisJ CQkJcmV0dXJuIEhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTOworCQl9CisJCS8qIExPR0lDQUxS RVBfSE9UX0lOREVYRURfQUxXQVlTOiBubyBhcHBseS1wYXRoIGdhdGluZy4gKi8KKwl9CisK IAkvKgogCSAqIFN5c3RlbSBjYXRhbG9ncyBrZWVwIGNsYXNzaWMgSE9UIChhbiBVUERBVEUg dG91Y2hpbmcgbm8gbm9uLXN1bW1hcml6aW5nCiAJICogaW5kZXhlZCBhdHRyaWJ1dGUgYWxy ZWFkeSByZXR1cm5lZCBIRUFQX0hFQVBfT05MWV9VUERBVEUgYWJvdmUpLCBidXQgZG8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IDIwNjhlMDNjNTcxLi5i MDY1YTdiZTI0OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3Jp cHRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCkBA IC0xMzMsNiArMTMzLDcgQEAgR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNz aW5nX29rLCBib29sIGNvbm5pbmZvX25lZWRlZCwKIAlzdWItPm1heHJldGVudGlvbiA9IHN1 YmZvcm0tPnN1Ym1heHJldGVudGlvbjsKIAlzdWItPnJldGVudGlvbmFjdGl2ZSA9IHN1YmZv cm0tPnN1YnJldGVudGlvbmFjdGl2ZTsKIAlzdWItPmNvbmZsaWN0bG9ncmVsaWQgPSBzdWJm b3JtLT5zdWJjb25mbGljdGxvZ3JlbGlkOworCXN1Yi0+aG90aW5kZXhlZG9uYXBwbHkgPSBz dWJmb3JtLT5zdWJob3RpbmRleGVkb25hcHBseTsKIAogCWlmIChjb25uaW5mb19uZWVkZWQp CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDcxODZkZDZj NGQ3Li45MTQzOWQ3YjFkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bApAQCAtMTU0Miw2ICsxNTQyLDcgQEAgR1JBTlQgU0VMRUNUIChvaWQsIHN1YmRiaWQsIHN1 YnNraXBsc24sIHN1Ym5hbWUsIHN1Ym93bmVyLCBzdWJlbmFibGVkLAogICAgICAgICAgICAg ICBzdWJiaW5hcnksIHN1YnN0cmVhbSwgc3VidHdvcGhhc2VzdGF0ZSwgc3ViZGlzYWJsZW9u ZXJyLAogCQkJICBzdWJwYXNzd29yZHJlcXVpcmVkLCBzdWJydW5hc293bmVyLCBzdWJmYWls b3ZlciwKICAgICAgICAgICAgICAgc3VicmV0YWluZGVhZHR1cGxlcywgc3VibWF4cmV0ZW50 aW9uLCBzdWJyZXRlbnRpb25hY3RpdmUsCisgICAgICAgICAgICAgIHN1YmhvdGluZGV4ZWRv bmFwcGx5LAogICAgICAgICAgICAgICBzdWJzZXJ2ZXIsIHN1YmNvbmZsaWN0bG9ncmVsaWQs IHN1YmNvbmZsaWN0bG9nZGVzdCwgc3Vic2xvdG5hbWUsCiAgICAgICAgICAgICAgIHN1YnN5 bmNjb21taXQsIHN1YndhbHJjdnRpbWVvdXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2lu KQogICAgIE9OIHBnX3N1YnNjcmlwdGlvbiBUTyBwdWJsaWM7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggNDI5MmU3ZmI4ZjQuLmJmOWRiYTNmNGU0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC04Miw2 ICs4Miw3IEBACiAjZGVmaW5lIFNVQk9QVF9MU04JCQkJCTB4MDAwMjAwMDAKICNkZWZpbmUg U1VCT1BUX09SSUdJTgkJCQkweDAwMDQwMDAwCiAjZGVmaW5lIFNVQk9QVF9DT05GTElDVF9M T0dfREVTVAkweDAwMDgwMDAwCisjZGVmaW5lIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBM WQkweDAwMTAwMDAwCiAKIC8qIGNoZWNrIGlmIHRoZSAndmFsJyBoYXMgJ2JpdHMnIHNldCAq LwogI2RlZmluZSBJc1NldCh2YWwsIGJpdHMpICAoKCh2YWwpICYgKGJpdHMpKSA9PSAoYml0 cykpCkBAIC0xMTMsNiArMTE0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3ViT3B0cwogCUNvbmZs aWN0TG9nRGVzdCBjb25mbGljdGxvZ2Rlc3Q7CiAJWExvZ1JlY1B0cglsc247CiAJY2hhcgkg ICAqd2FsX3JlY2VpdmVyX3RpbWVvdXQ7CisJY2hhcgkJaG90aW5kZXhlZG9uYXBwbHk7CiB9 IFN1Yk9wdHM7CiAKIC8qCkBAIC0yMDcsNiArMjA5LDggQEAgcGFyc2Vfc3Vic2NyaXB0aW9u X29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpzdG10X29wdGlvbnMsCiAJCW9w dHMtPm9yaWdpbiA9IHBzdHJkdXAoTE9HSUNBTFJFUF9PUklHSU5fQU5ZKTsKIAlpZiAoSXNT ZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCkpCiAJCW9wdHMt PmNvbmZsaWN0bG9nZGVzdCA9IENPTkZMSUNUX0xPR19ERVNUX0xPRzsKKwlpZiAoSXNTZXQo c3VwcG9ydGVkX29wdHMsIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWSkpCisJCW9wdHMt PmhvdGluZGV4ZWRvbmFwcGx5ID0gTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9TVUJTRVRfT05M WTsKIAogCS8qIFBhcnNlIG9wdGlvbnMgKi8KIAlmb3JlYWNoKGxjLCBzdG10X29wdGlvbnMp CkBAIC00NTksNiArNDYzLDMwIEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNl U3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQkJb3B0cy0+Y29uZmxpY3Rs b2dkZXN0ID0gR2V0Q29uZmxpY3RMb2dEZXN0KHZhbCk7CiAJCQlvcHRzLT5zcGVjaWZpZWRf b3B0cyB8PSBTVUJPUFRfQ09ORkxJQ1RfTE9HX0RFU1Q7CiAJCX0KKwkJZWxzZSBpZiAoSXNT ZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWSkgJiYKKwkJ CQkgc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAiaG90X2luZGV4ZWRfb25fYXBwbHkiKSA9PSAw KQorCQl7CisJCQljaGFyCSAgICp2YWw7CisKKwkJCWlmIChJc1NldChvcHRzLT5zcGVjaWZp ZWRfb3B0cywgU1VCT1BUX0hPVF9JTkRFWEVEX09OX0FQUExZKSkKKwkJCQllcnJvckNvbmZs aWN0aW5nRGVmRWxlbShkZWZlbCwgcHN0YXRlKTsKKworCQkJb3B0cy0+c3BlY2lmaWVkX29w dHMgfD0gU1VCT1BUX0hPVF9JTkRFWEVEX09OX0FQUExZOworCQkJdmFsID0gZGVmR2V0U3Ry aW5nKGRlZmVsKTsKKworCQkJaWYgKHBnX3N0cmNhc2VjbXAodmFsLCAib2ZmIikgPT0gMCkK KwkJCQlvcHRzLT5ob3RpbmRleGVkb25hcHBseSA9IExPR0lDQUxSRVBfSE9UX0lOREVYRURf T0ZGOworCQkJZWxzZSBpZiAocGdfc3RyY2FzZWNtcCh2YWwsICJzdWJzZXRfb25seSIpID09 IDApCisJCQkJb3B0cy0+aG90aW5kZXhlZG9uYXBwbHkgPSBMT0dJQ0FMUkVQX0hPVF9JTkRF WEVEX1NVQlNFVF9PTkxZOworCQkJZWxzZSBpZiAocGdfc3RyY2FzZWNtcCh2YWwsICJhbHdh eXMiKSA9PSAwKQorCQkJCW9wdHMtPmhvdGluZGV4ZWRvbmFwcGx5ID0gTE9HSUNBTFJFUF9I T1RfSU5ERVhFRF9BTFdBWVM7CisJCQllbHNlCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJIGVy cm1zZygidW5yZWNvZ25pemVkIHZhbHVlIGZvciBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIFwi JXNcIjogXCIlc1wiIiwKKwkJCQkJCQkJImhvdF9pbmRleGVkX29uX2FwcGx5IiwgdmFsKSwK KwkJCQkJCSBlcnJoaW50KCJWYWxpZCB2YWx1ZXMgYXJlIFwib2ZmXCIsIFwic3Vic2V0X29u bHlcIiwgYW5kIFwiYWx3YXlzXCIuIikpKTsKKwkJfQogCQllbHNlCiAJCQllcmVwb3J0KEVS Uk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC02OTksNyAr NzI3LDggQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRl U3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJICBTVUJPUFRfUkVUQUlOX0RFQURfVFVQ TEVTIHwKIAkJCQkJICBTVUJPUFRfTUFYX1JFVEVOVElPTl9EVVJBVElPTiB8CiAJCQkJCSAg U1VCT1BUX1dBTF9SRUNFSVZFUl9USU1FT1VUIHwgU1VCT1BUX09SSUdJTiB8Ci0JCQkJCSAg U1VCT1BUX0NPTkZMSUNUX0xPR19ERVNUKTsKKwkJCQkJICBTVUJPUFRfQ09ORkxJQ1RfTE9H X0RFU1QgfAorCQkJCQkgIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWSk7CiAJcGFyc2Vf c3Vic2NyaXB0aW9uX29wdGlvbnMocHN0YXRlLCBzdG10LT5vcHRpb25zLCBzdXBwb3J0ZWRf b3B0cywgJm9wdHMpOwogCiAJLyoKQEAgLTg1Myw2ICs4ODIsOCBAQCBDcmVhdGVTdWJzY3Jp cHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10 LAogCQlJbnQzMkdldERhdHVtKG9wdHMubWF4cmV0ZW50aW9uKTsKIAl2YWx1ZXNbQW51bV9w Z19zdWJzY3JpcHRpb25fc3VicmV0ZW50aW9uYWN0aXZlIC0gMV0gPQogCQlCb29sR2V0RGF0 dW0ob3B0cy5yZXRhaW5kZWFkdHVwbGVzKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRp b25fc3ViaG90aW5kZXhlZG9uYXBwbHkgLSAxXSA9CisJCUNoYXJHZXREYXR1bShvcHRzLmhv dGluZGV4ZWRvbmFwcGx5KTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic2Vy dmVyIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHNlcnZlcmlkKTsKIAlpZiAoIU9pZElzVmFs aWQoc2VydmVyaWQpKQogCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmlu Zm8gLSAxXSA9CkBAIC0xNjI0LDcgKzE2NTUsOCBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJCQkg IFNVQk9QVF9NQVhfUkVURU5USU9OX0RVUkFUSU9OIHwKIAkJCQkJCQkgIFNVQk9QVF9XQUxf UkVDRUlWRVJfVElNRU9VVCB8CiAJCQkJCQkJICBTVUJPUFRfT1JJR0lOIHwKLQkJCQkJCQkg IFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCk7CisJCQkJCQkJICBTVUJPUFRfQ09ORkxJQ1Rf TE9HX0RFU1QgfAorCQkJCQkJCSAgU1VCT1BUX0hPVF9JTkRFWEVEX09OX0FQUExZKTsKIAkJ CWJyZWFrOwogCiAJCWNhc2UgQUxURVJfU1VCU0NSSVBUSU9OX0VOQUJMRUQ6CkBAIC0yMDEx LDYgKzIwNDMsMTMgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBB bHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCX0KIAkJCQl9CiAKKwkJCQlpZiAo SXNTZXQob3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX0hPVF9JTkRFWEVEX09OX0FQUExZ KSkKKwkJCQl7CisJCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJob3RpbmRl eGVkb25hcHBseSAtIDFdID0KKwkJCQkJCUNoYXJHZXREYXR1bShvcHRzLmhvdGluZGV4ZWRv bmFwcGx5KTsKKwkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViaG90aW5k ZXhlZG9uYXBwbHkgLSAxXSA9IHRydWU7CisJCQkJfQorCiAJCQkJdXBkYXRlX3R1cGxlID0g dHJ1ZTsKIAkJCQlicmVhazsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCmluZGV4IDc3OTkyNjZjNjE0Li4xNjMzNmNlZDEwNCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC02MDgzLDYgKzYwODMs MjkgQEAgSXNMb2dpY2FsV29ya2VyKHZvaWQpCiAJcmV0dXJuIE15TG9naWNhbFJlcFdvcmtl ciAhPSBOVUxMOwogfQogCisvKgorICogUmV0dXJuIHRoZSBjYWNoZWQgSE9ULWluZGV4ZWQg YXBwbHkgbW9kZSBvZiB0aGUgY3VycmVudCBsb2dpY2FsIHJlcGxpY2F0aW9uCisgKiB3b3Jr ZXIncyBzdWJzY3JpcHRpb24uCisgKgorICogQ2FsbGVycyBvdXRzaWRlIHdvcmtlci5jIChu b3RhYmx5IGhlYXBhbS5jJ3MgSGVhcFVwZGF0ZUhvdEFsbG93YWJsZSkgdXNlCisgKiB0aGlz IGFjY2Vzc29yIHRvIGF2b2lkIHB1bGxpbmcgaW4gd29ya2VyX2ludGVybmFsLmggb3IgdGhl IFN1YnNjcmlwdGlvbgorICogc3RydWN0LiAgTm9uLWFwcGx5IHByb2Nlc3NlcyBnZXQgTE9H SUNBTFJFUF9IT1RfSU5ERVhFRF9PRkYsIHdoaWNoIGlzIHRoZQorICogY29uc2VydmF0aXZl IHZhbHVlOyBjYWxsZXJzIGFyZSBleHBlY3RlZCB0byBndWFyZCB3aXRoIElzTG9naWNhbFdv cmtlcigpCisgKiBmaXJzdCBmb3IgY2xhcml0eSwgYnV0IHRoZSBhY2Nlc3NvciBpcyBzYWZl IGVpdGhlciB3YXkuCisgKi8KK2NoYXIKK0dldEhvdEluZGV4ZWRBcHBseU1vZGUodm9pZCkK K3sKKwkvKgorCSAqIERlcml2ZSBkaXJlY3RseSBmcm9tIE15U3Vic2NyaXB0aW9uIHJhdGhl ciB0aGFuIGNhY2hpbmcsIHNvIHRoZXJlIGlzIG5vCisJICogc2Vjb25kIGNvcHkgdG8ga2Vl cCBpbiBzeW5jIHdpdGggTXlTdWJzY3JpcHRpb24gcmVsb2Fkcy4gIFJlYWRlcnMKKwkgKiBv dXRzaWRlIHdvcmtlci5jIGdvIHRocm91Z2ggdGhpcyBhY2Nlc3NvciBzbyB0aGV5IGRvbid0 IG5lZWQgdmlzaWJpbGl0eQorCSAqIGludG8gdGhlIFN1YnNjcmlwdGlvbiBzdHJ1Y3QuCisJ ICovCisJcmV0dXJuIE15U3Vic2NyaXB0aW9uID8gTXlTdWJzY3JpcHRpb24tPmhvdGluZGV4 ZWRvbmFwcGx5CisJCTogTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9PRkY7Cit9CisKIC8qCiAg KiBJcyBjdXJyZW50IHByb2Nlc3MgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFw cGx5IHdvcmtlcj8KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggNDk0OGU2ZDgwYzcuLjljZWMw ZTBiYjJiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTUxMzgsNiArNTEzOCw3IEBAIGdldFN1YnNj cmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpbnQJCQlpX3N1YmZhaWxvdmVyOwogCWludAkJ CWlfc3VicmV0YWluZGVhZHR1cGxlczsKIAlpbnQJCQlpX3N1Ym1heHJldGVudGlvbjsKKwlp bnQJCQlpX3N1YmhvdGluZGV4ZWRvbmFwcGx5OwogCWludAkJCWksCiAJCQkJbnR1cHM7CiAK QEAgLTUyMzUsNiArNTIzNiwxNCBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQp CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiICctMScgQVMgc3Vi d2FscmN2dGltZW91dCxcbiIpOwogCisJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTkw MDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIiBzLnN1Ymhv dGluZGV4ZWRvbmFwcGx5LFxuIik7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVy eSwKKwkJCQkJCSAgIiAnJWMnIEFTIHN1YmhvdGluZGV4ZWRvbmFwcGx5LFxuIiwKKwkJCQkJ CSAgTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9TVUJTRVRfT05MWSk7CisKIAlpZiAoZm91dC0+ cmVtb3RlVmVyc2lvbiA+PSAxOTAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LCAiIGZzLnNydm5hbWUgQVMgc3Vic2VydmVybmFtZVxuIik7CiAJZWxzZQpAQCAtNTI3OSw2 ICs1Mjg4LDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCWlfc3ViZmFp bG92ZXIgPSBQUWZudW1iZXIocmVzLCAic3ViZmFpbG92ZXIiKTsKIAlpX3N1YnJldGFpbmRl YWR0dXBsZXMgPSBQUWZudW1iZXIocmVzLCAic3VicmV0YWluZGVhZHR1cGxlcyIpOwogCWlf c3VibWF4cmV0ZW50aW9uID0gUFFmbnVtYmVyKHJlcywgInN1Ym1heHJldGVudGlvbiIpOwor CWlfc3ViaG90aW5kZXhlZG9uYXBwbHkgPSBQUWZudW1iZXIocmVzLCAic3ViaG90aW5kZXhl ZG9uYXBwbHkiKTsKIAlpX3N1YnNlcnZlcm5hbWUgPSBQUWZudW1iZXIocmVzLCAic3Vic2Vy dmVybmFtZSIpOwogCWlfc3ViY29ubmluZm8gPSBQUWZudW1iZXIocmVzLCAic3ViY29ubmlu Zm8iKTsKIAlpX3N1YnNsb3RuYW1lID0gUFFmbnVtYmVyKHJlcywgInN1YnNsb3RuYW1lIik7 CkBAIC01MzIyLDYgKzUzMzIsOCBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQp CiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1YnJldGFpbmRlYWR0dXBsZXMp LCAidCIpID09IDApOwogCQlzdWJpbmZvW2ldLnN1Ym1heHJldGVudGlvbiA9CiAJCQlhdG9p KFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1Ym1heHJldGVudGlvbikpOworCQlzdWJpbmZvW2ld LnN1YmhvdGluZGV4ZWRvbmFwcGx5ID0KKwkJCSooUFFnZXR2YWx1ZShyZXMsIGksIGlfc3Vi aG90aW5kZXhlZG9uYXBwbHkpKTsKIAkJaWYgKFBRZ2V0aXNudWxsKHJlcywgaSwgaV9zdWJj b25uaW5mbykpCiAJCQlzdWJpbmZvW2ldLnN1YmNvbm5pbmZvID0gTlVMTDsKIAkJZWxzZQpA QCAtNTU5OSw2ICs1NjExLDExIEBAIGR1bXBTdWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91dCwg Y29uc3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5mbykKIAlpZiAoc3ViaW5mby0+c3VibWF4 cmV0ZW50aW9uKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiwgbWF4X3JldGVudGlv bl9kdXJhdGlvbiA9ICVkIiwgc3ViaW5mby0+c3VibWF4cmV0ZW50aW9uKTsKIAorCWlmIChz dWJpbmZvLT5zdWJob3RpbmRleGVkb25hcHBseSA9PSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVE X09GRikKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIGhvdF9pbmRleGVkX29u X2FwcGx5ID0gb2ZmIik7CisJZWxzZSBpZiAoc3ViaW5mby0+c3ViaG90aW5kZXhlZG9uYXBw bHkgPT0gTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9BTFdBWVMpCisJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiLCBob3RfaW5kZXhlZF9vbl9hcHBseSA9IGFsd2F5cyIpOworCiAJ aWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzeW5jY29tbWl0LCAib2ZmIikgIT0gMCkKIAkJYXBw ZW5kUFFFeHBCdWZmZXIocXVlcnksICIsIHN5bmNocm9ub3VzX2NvbW1pdCA9ICVzIiwgZm10 SWQoc3ViaW5mby0+c3Vic3luY2NvbW1pdCkpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA1YTY3 MjZkOGIxMi4uZTNlNzQwMWRmMDggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNzIyLDYgKzcyMiw3 IEBAIHR5cGVkZWYgc3RydWN0IF9TdWJzY3JpcHRpb25JbmZvCiAJYm9vbAkJc3ViZmFpbG92 ZXI7CiAJYm9vbAkJc3VicmV0YWluZGVhZHR1cGxlczsKIAlpbnQJCQlzdWJtYXhyZXRlbnRp b247CisJY2hhcgkJc3ViaG90aW5kZXhlZG9uYXBwbHk7CiAJY2hhcgkgICAqc3Vic2VydmVy bmFtZTsKIAljaGFyCSAgICpzdWJjb25uaW5mbzsKIAljaGFyCSAgICpzdWJzbG90bmFtZTsK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKaW5kZXggYTJmMDljMjYzNjkuLjA1YTg5M2FhYjVjIDEwMDY0NAotLS0gYS9z cmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpA QCAtNjg5Myw3ICs2ODkzLDcgQEAgZGVzY3JpYmVTdWJzY3JpcHRpb25zKGNvbnN0IGNoYXIg KnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAlwcmludFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5w b3B0OwogCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9jb2x1bW5zW10gPSB7ZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UsCiAJCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAotCWZhbHNlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKKwlmYWxzZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9OwogCiAJaW5pdFBR RXhwQnVmZmVyKCZidWYpOwogCkBAIC02OTY2LDYgKzY5NjYsMTQgQEAgZGVzY3JpYmVTdWJz Y3JpcHRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAkJCQkJCQkg ICIsIHN1Ym1heHJldGVudGlvbiBBUyBcIiVzXCJcbiIsCiAJCQkJCQkJICBnZXR0ZXh0X25v b3AoIk1heCByZXRlbnRpb24gZHVyYXRpb24iKSk7CiAKKwkJCWFwcGVuZFBRRXhwQnVmZmVy KCZidWYsCisJCQkJCQkJICAiLCAoQ0FTRSBzdWJob3RpbmRleGVkb25hcHBseVxuIgorCQkJ CQkJCSAgIiAgICBXSEVOICIgQ3BwQXNTdHJpbmcyKExPR0lDQUxSRVBfSE9UX0lOREVYRURf T0ZGKSAiIFRIRU4gJ29mZidcbiIKKwkJCQkJCQkgICIgICAgV0hFTiAiIENwcEFzU3RyaW5n MihMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX1NVQlNFVF9PTkxZKSAiIFRIRU4gJ3N1YnNldF9v bmx5J1xuIgorCQkJCQkJCSAgIiAgICBXSEVOICIgQ3BwQXNTdHJpbmcyKExPR0lDQUxSRVBf SE9UX0lOREVYRURfQUxXQVlTKSAiIFRIRU4gJ2Fsd2F5cydcbiIKKwkJCQkJCQkgICIgICBF TkQpIEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkgIGdldHRleHRfbm9vcCgiSE9ULWluZGV4ZWQg b24gYXBwbHkiKSk7CisKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJICAi LCBzdWJyZXRlbnRpb25hY3RpdmUgQVMgXCIlc1wiXG4iLAogCQkJCQkJCSAgZ2V0dGV4dF9u b29wKCJSZXRlbnRpb24gYWN0aXZlIikpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9jYXR2ZXJzaW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaApp bmRleCBiYTRlMmI0ZDkwOC4uZDU4ODVhMmVkYzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvY2F0dmVyc2lvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVy c2lvbi5oCkBAIC01Nyw2ICs1Nyw5IEBACiAgKi8KIAogLyoJCQkJCQkJeXl5eW1tZGROICov CisvKiBYWFggYnVtcCBjYXR2ZXJzaW9uIC0tIHRoaXMgY29tbWl0IGFkZHMgYSBjYXRhbG9n IGNvbHVtbgorICogKHN1YmhvdGluZGV4ZWRvbmFwcGx5KSBhbmQgdG91Y2hlcyBwZ19zdWJz Y3JpcHRpb247IHRoZSBjb21taXR0ZXIKKyAqIHNldHMgdGhlIHJlYWwgdmFsdWUgYXQgY29t bWl0IHRpbWUgdG8gYXZvaWQgbmVlZGxlc3MgcmViYXNlIGNodXJuLiAqLwogI2RlZmluZSBD QVRBTE9HX1ZFUlNJT05fTk8JMjAyNjA3MDkxCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggNjVjZThlMTQ1ZmIuLjliZTU1NmI4ODRmIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTkyLDYgKzkyLDEw IEBAIENBVEFMT0cocGdfc3Vic2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25J ZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lfUk9XCiAJCQkJCQkJCQkgKiBleGNlZWRlZCBt YXhfcmV0ZW50aW9uX2R1cmF0aW9uLCB3aGVuCiAJCQkJCQkJCQkgKiBkZWZpbmVkICovCiAK KwljaGFyCQlzdWJob3RpbmRleGVkb25hcHBseTsJLyogUGVyLXN1YnNjcmlwdGlvbiBnYXRp bmcgb2YgdGhlIEhPVC0KKwkJCQkJCQkJCQkgKiBpbmRleGVkIGFwcGx5IHBhdGguICBTZWUK KwkJCQkJCQkJCQkgKiBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEXyogY29uc3RhbnRzLiAqLwor CiAJT2lkCQkJc3Vic2VydmVyIEJLSV9MT09LVVBfT1BUKHBnX2ZvcmVpZ25fc2VydmVyKTsJ LyogSWYgY29ubmVjdGlvbiB1c2VzCiAJCQkJCQkJCQkJCQkJCQkJICogc2VydmVyICovCiAK QEAgLTE3Myw2ICsxNzcsOSBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAkJCQkJ CQkJCSAqIGV4Y2VlZGVkIG1heF9yZXRlbnRpb25fZHVyYXRpb24sIHdoZW4KIAkJCQkJCQkJ CSAqIGRlZmluZWQgKi8KIAlPaWQJCQljb25mbGljdGxvZ3JlbGlkOwkvKiBjb25mbGljdCBs b2cgdGFibGUgT2lkICovCisJY2hhcgkJaG90aW5kZXhlZG9uYXBwbHk7IC8qIFBlci1zdWJz Y3JpcHRpb24gZ2F0aW5nIG9mIHRoZQorCQkJCQkJCQkJICogSE9ULWluZGV4ZWQgYXBwbHkg cGF0aC4gIFNlZQorCQkJCQkJCQkJICogTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF8qIGNvbnN0 YW50cy4gKi8KIAljaGFyCSAgICpjb25uaW5mbzsJCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRv IHRoZSBwdWJsaXNoZXIgKi8KIAljaGFyCSAgICpzbG90bmFtZTsJCS8qIE5hbWUgb2YgdGhl IHJlcGxpY2F0aW9uIHNsb3QgKi8KIAljaGFyCSAgICpzeW5jY29tbWl0OwkJLyogU3luY2hy b25vdXMgY29tbWl0IHNldHRpbmcgZm9yIHdvcmtlciAqLwpAQCAtMjIwLDYgKzIyNywyNiBA QCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KICAqLwogI2RlZmluZSBMT0dJQ0FMUkVQ X1NUUkVBTV9QQVJBTExFTCAncCcKIAorLyoKKyAqIFBlci1zdWJzY3JpcHRpb24gZ2F0aW5n IG9mIHRoZSBIT1QtaW5kZXhlZCBhcHBseSBwYXRoLiAgUmVjb3JkZWQgYXMgYQorICogc2lu Z2xlLWNoYXJhY3RlciBjb2RlIGluIHBnX3N1YnNjcmlwdGlvbi5zdWJob3RpbmRleGVkb25h cHBseS4KKyAqCisgKiAgICdvJyAtLSBPRkY6IGZvcmNlIG5vbi1IT1Qgb24gYXBwbHkgd2hl bmV2ZXIgdGhlIHN1YnNjcmliZXIgY2FycmllcyBhbnkKKyAqCQkgIGluZGV4ZWQgYXR0cmli dXRlIGJleW9uZCB0aGUgcHJpbWFyeSBrZXkuICBNYXRjaGVzIHRoZSBjb25zZXJ2YXRpdmUK KyAqCQkgIGJlaGF2aW91ciBiZWZvcmUgdGhpcyBvcHRpb24gd2FzIGludHJvZHVjZWQuCisg KiAgICdzJyAtLSBTVUJTRVRfT05MWSAoZGVmYXVsdCBmb3IgZnJlc2hseSBjcmVhdGVkIHN1 YnNjcmlwdGlvbnMpOiBhbGxvdyB0aGUKKyAqCQkgIEhPVC1pbmRleGVkIGFwcGx5IHBhdGgg d2hlbiB0aGUgc3Vic2NyaWJlcidzIGZ1bGwgaW5kZXhlZC1hdHRyIHNldCBpcworICoJCSAg YSBzdWJzZXQgb2YgaXRzIHByaW1hcnkta2V5IGF0dHJzICh3aGljaCBjb3ZlcnMgdGhlIG5v LXNlY29uZGFyeS0KKyAqCQkgIGluZGV4IGNhc2UgYXMgd2VsbCkuICBTYWZlIG9uIG1hdGNo aW5nIHNjaGVtYXM7IGZhbGxzIGJhY2sgdG8gbm9uLUhPVAorICoJCSAgd2hlbiB0aGUgc3Vi c2NyaWJlciBhZGRzIGluZGV4ZXMgYmV5b25kIHRoZSBwcmltYXJ5IGtleS4KKyAqICAgJ2En IC0tIEFMV0FZUzogdW5jb25kaXRpb25hbCBIT1QtaW5kZXhlZCBlbGlnaWJpbGl0eSBvbiBh cHBseS4gIFRoZQorICoJCSAgb3BlcmF0b3IgYWNjZXB0cyByZXNwb25zaWJpbGl0eSBmb3Ig a2VlcGluZyBzdWJzY3JpYmVyIGFuZCBwdWJsaXNoZXIKKyAqCQkgIGluZGV4ZWQtYXR0ciBz ZXRzIGNvbXBhdGlibGUuCisgKi8KKyNkZWZpbmUgTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9P RkYJCQknbycKKyNkZWZpbmUgTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9TVUJTRVRfT05MWQkn cycKKyNkZWZpbmUgTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9BTFdBWVMJCSdhJworCiAjZW5k aWYJCQkJCQkJLyogRVhQT1NFX1RPX0NMSUVOVF9DT0RFICovCiAKIGV4dGVybiBTdWJzY3Jp cHRpb24gKkdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vaywKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAppbmRleCA3ZDc0OGEyOGRh OC4uYzlkZjdkMzJmMmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWx3b3JrZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29y a2VyLmgKQEAgLTI0LDYgKzI0LDE0IEBAIGV4dGVybiB2b2lkIFNlcXVlbmNlU3luY1dvcmtl ck1haW4oRGF0dW0gbWFpbl9hcmcpOwogZXh0ZXJuIGJvb2wgSXNMb2dpY2FsV29ya2VyKHZv aWQpOwogZXh0ZXJuIGJvb2wgSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdvcmtlcih2b2lkKTsK IAorLyoKKyAqIEFjY2Vzc29yIGZvciB0aGUgY2FjaGVkIGhvdF9pbmRleGVkX29uX2FwcGx5 IG1vZGUgb2YgdGhlIGN1cnJlbnQgYXBwbHkKKyAqIHdvcmtlcidzIHN1YnNjcmlwdGlvbi4g IFJldHVybnMgYSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEXyogY29kZSAoc2VlCisgKiBjYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5oKS4gIE5vbi1hcHBseSBwcm9jZXNzZXMgYWx3YXlzIHNl ZQorICogTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9PRkYuCisgKi8KK2V4dGVybiBjaGFyIEdl dEhvdEluZGV4ZWRBcHBseU1vZGUodm9pZCk7CisKIGV4dGVybiB2b2lkIEhhbmRsZVBhcmFs bGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KHZvaWQpOwogZXh0ZXJuIHZvaWQgUHJvY2Vzc1Bh cmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9zdWJzY3JpcHRpb24ub3V0CmluZGV4IGQyMDFhZDc2NGYwLi5jYzFkOWJiYjE0NiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApAQCAt MTM5LDE4ICsxMzksMTggQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0 IENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFUKIFdBUk5JTkc6 ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCiBISU5U OiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0 aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCBhbHRl ciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRpb25zLgogXGRScysgcmVn cmVzc190ZXN0c3ViNAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgICBOYW1l ICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNh dGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/ IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50 aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tp cCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQotIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAg ICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBub25lICAgfCB0ICAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAg ICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJz Y3JpcHRpb25zCisgICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28t cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJl cXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRl YWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFw cGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg IENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwg RGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAg fCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG5vbmUgICB8IHQgICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9vbmx5 ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRi bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAw MDAwIHwgCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0 IFNFVCAob3JpZ2luID0gYW55KTsKIFxkUnMrIHJlZ3Jlc3NfdGVzdHN1YjQKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1p bmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBh c3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwg UmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlv biBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAg ICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAot LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWI0IHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAg ICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwg CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0 aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8g fCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRp b24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUg fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBS ZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jl c3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0 ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiBEUk9Q IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIzOwpAQCAtMjM3LDEwICsyMzcsMTAgQEAg QUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdmb29iYXIn OwogRVJST1I6ICBpbnZhbGlkIGNvbm5lY3Rpb24gc3RyaW5nIHN5bnRheDogbWlzc2luZyAi PSIgYWZ0ZXIgImZvb2JhciIgaW4gY29ubmVjdGlvbiBpbmZvIHN0cmluZwogCiBcZFJzKwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5 IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8 IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24g fCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29u bmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCAgICBE ZXNjcmlwdGlvbiAgICAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0K LSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAg ICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNjcmlwdGlvbgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBT dHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdp biB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2Vy dmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhP VC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNv bW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQg fCAgU2tpcCBMU04gIHwgICAgRGVzY3JpcHRpb24gICAgCistLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rl c3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi fSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg fCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAt MSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IHRlc3Qgc3Vic2NyaXB0aW9uCiAoMSBy b3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIFBVQkxJQ0FU SU9OIHRlc3RwdWIyLCB0ZXN0cHViMyBXSVRIIChyZWZyZXNoID0gZmFsc2UpOwpAQCAtMjQ5 LDEwICsyNDksMTAgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQg KHNsb3RfbmFtZSA9ICduZXduYW1lJyk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIFNFVCAocGFzc3dvcmRfcmVxdWlyZWQgPSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAocnVuX2FzX293bmVyID0gdHJ1ZSk7CiBcZFJz KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRp b24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2Fi bGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25l cj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRl bnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAg U2tpcCBMU04gIHwgICAgRGVzY3JpcHRpb24gICAgCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAg ICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCBmICAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgfCBmICAgICAg ICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg IDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0MiB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwg dGVzdCBzdWJzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFz c3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBS ZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4 ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tp cCBMU04gIHwgICAgRGVzY3JpcHRpb24gICAgCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IGYgICAgICAgICAgICAgICAgIHwgdCAg ICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9vbmx5ICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdDIgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IHRlc3Qgc3Vic2Ny aXB0aW9uCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg U0VUIChwYXNzd29yZF9yZXF1aXJlZCA9IHRydWUpOwpAQCAtMjY4LDEwICsyNjgsMTAgQEAg RVJST1I6ICB1bnJlY29nbml6ZWQgc3Vic2NyaXB0aW9uIHBhcmFtZXRlcjogImNyZWF0ZV9z bG90IgogLS0gb2sKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0tJUCAo bHNuID0gJzAvMTIzNDUnKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBU d28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3Jk IHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWlu IGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3Rp dmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCAgICBEZXNjcmlwdGlvbiAgICAK LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KLSByZWdy ZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0 ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgLTEgICAgICAg ICAgICAgICB8IDAvMDAwMTIzNDUgfCB0ZXN0IHN1YnNjcmlwdGlvbgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24g ICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8g fCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRp b24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUg fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwg UmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCAgICBEZXNjcmlwdGlvbiAgICAKKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IHBhcmFs bGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg dCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAg fCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0 X29ubHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IC0xICAgICAgICAgICAgICAgfCAw LzAwMDEyMzQ1IHwgdGVzdCBzdWJzY3JpcHRpb24KICgxIHJvdykKIAogLS0gb2sgLSB3aXRo IGxzbiA9IE5PTkUKQEAgLTI4MCwxMCArMjgwLDEwIEBAIEFMVEVSIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgU0tJUCAobHNuID0gTk9ORSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIFNLSVAgKGxzbiA9ICcwLzAnKTsKIEVSUk9SOiAgaW52YWxpZCBX QUwgbG9jYXRpb24gKExTTik6IDAvMAogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFz c3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBS ZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9u IGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAg ICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8ICAgIERlc2NyaXB0aW9u ICAgIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQot IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9m ZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAtMSAg ICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IHRlc3Qgc3Vic2NyaXB0aW9uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAg ICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNh dGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93 bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJl dGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFj dGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8ICAgIERlc2NyaXB0aW9uICAg IAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwg cGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAg ICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBz dWJzZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgLTEgICAgICAgICAgICAg ICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNjcmlwdGlvbgogKDEgcm93KQogCiBCRUdJTjsK QEAgLTMxOSwxMCArMzE5LDEwIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWJfZm9vIFNFVCAod2FsX3JlY2VpdmVyX3RpbWVvdXQgPSAnODBzJyk7CiBBTFRFUiBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViX2ZvbyBTRVQgKHdhbF9yZWNlaXZlcl90aW1lb3V0 ID0gJ2Zvb2JhcicpOwogRVJST1I6ICBpbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgIndh bF9yZWNlaXZlcl90aW1lb3V0IjogImZvb2JhciIKIFxkUnMrCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgICBOYW1lICAgICAgICAgfCAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8 IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVy IHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlv biB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCAg ICBEZXNjcmlwdGlvbiAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViX2ZvbyB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8 IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAg ICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwg ZiAgICAgICAgICAgICAgICB8IGxvY2FsICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdDIgfCA4MHMgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IHRlc3Qg c3Vic2NyaXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2Ny aXB0aW9ucworICAgICAgICBOYW1lICAgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1p bmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBh c3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwg UmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRl eGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNr aXAgTFNOICB8ICAgIERlc2NyaXB0aW9uICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJl Z3Jlc3NfdGVzdHN1Yl9mb28gfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9vbmx5ICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IGxvY2FsICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdDIgfCA4MHMgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IHRl c3Qgc3Vic2NyaXB0aW9uCiAoMSByb3cpCiAKIC0tIHJlbmFtZSBiYWNrIHRvIGtlZXAgdGhl IHJlc3Qgc2ltcGxlCkBAIC0zNTEsMTkgKzM1MSwxOSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QnIFBVQgogV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5v dCBjb25uZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3Qg bWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNj cmlwdGlvbiwgYW5kIGFsdGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNh dGlvbnMuCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0 aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8g fCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRp b24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lw IExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0K LSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAg ICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1 cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8 IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25u aW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2Ny aXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IHQgICAgICB8IHBhcmFsbGVsICB8IGQgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0X29ubHkgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAK ICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGJp bmFyeSA9IGZhbHNlKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VU IChzbG90X25hbWUgPSBOT05FKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9u cwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFi bGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29t bWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwg UnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVz IHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJv bm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0 aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1p bmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBh c3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwg UmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRl eGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tp cCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFy YWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAg ICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJz ZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwg MC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWI7CkBAIC0zNzUsMjcgKzM3NSwyNyBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBV QgogV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25u ZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFs bHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlv biwgYW5kIGFsdGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMu CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwg QmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJy b3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWls b3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVy YXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAg ICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAg fCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdy ZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0 ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8 IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMK KyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxl ZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1 biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8 IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVu dGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAg ICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9u IAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0X29ubHkgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJv dykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWlu ZyA9IHBhcmFsbGVsKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwg RGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFz IG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4 IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0 IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAg ICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg c3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBU d28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3Jk IHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWlu IGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9u IGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAg ICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04g IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwg IHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJzZXRfb25s eSAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAw MDAwMCB8IAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IFNFVCAoc3RyZWFtaW5nID0gZmFsc2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogXGRScysKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3 by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQg cmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4g ZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2 ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9m ZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAg IHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAg ICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAg ICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFy eSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwg T3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIg fCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9u IHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25v dXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGlt ZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAg ICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgMCB8IHN1YnNldF9vbmx5ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAg ICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIC0tIGZhaWwgLSBwdWJsaWNh dGlvbiBhbHJlYWR5IGV4aXN0cwpAQCAtNDEwLDEwICs0MTAsMTAgQEAgQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBBREQgUFVCTElDQVRJT04gdGVzdHB1YjEsIHRlc3Rw dWIyIFdJVEggKHJlZnIKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQURE IFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0cHViMiBXSVRIIChyZWZyZXNoID0gZmFsc2Up OwogRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1YjEiIGlzIGFscmVhZHkgaW4gc3Vic2Ny aXB0aW9uICJyZWdyZXNzX3Rlc3RzdWIiCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg c3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBFbmFibGVkIHwgICAgICAgICBQdWJsaWNhdGlvbiAgICAgICAgIHwgQmluYXJ5 IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8 IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24g fCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29u bmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNj cmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yix0ZXN0cHViMSx0ZXN0cHViMn0gfCBmICAgICAgfCBvZmYgICAg ICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQg ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwg ZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAg ICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgICAgIFB1YmxpY2F0 aW9uICAgICAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwg RGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFz IG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4 IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9u IGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCist LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yix0ZXN0cHViMSx0ZXN0cHViMn0gfCBmICAg ICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAg IHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg MCB8IHN1YnNldF9vbmx5ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAg ICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIC0tIGZhaWwgLSBwdWJsaWNhdGlv biB1c2VkIG1vcmUgdGhhbiBvbmNlCkBAIC00MjgsMTAgKzQyOCwxMCBAQCBFUlJPUjogIHB1 YmxpY2F0aW9uICJ0ZXN0cHViMyIgaXMgbm90IGluIHN1YnNjcmlwdGlvbiAicmVncmVzc190 ZXN0c3ViIgogLS0gb2sgLSBkZWxldGUgcHVibGljYXRpb25zCiBBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIERST1AgUFVCTElDQVRJT04gdGVzdHB1YjEsIHRlc3RwdWIy IFdJVEggKHJlZnJlc2ggPSBmYWxzZSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1 cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2 ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAg IHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAg ICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZl ciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1Qt aW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21t aXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwg IFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8 IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAg ICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwg c3Vic2V0X29ubHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAg ICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVz c190ZXN0c3ViOwpAQCAtNDY3LDE5ICs0NjcsMTkgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3Qg Y29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1h bnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3Jp cHRpb24sIGFuZCBhbHRlciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRp b25zLgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAg ICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlv biB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9u IGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwg RmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9u IGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAg ICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBM U04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0g cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAg fCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IHAgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAg ICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBj b21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQg fCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBs ZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBS ZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmlu Zm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlw dGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBwICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9vbmx5ICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAo MSByb3cpCiAKIC0tIHdlIGNhbiBhbHRlciBzdHJlYW1pbmcgd2hlbiB0d29fcGhhc2UgZW5h YmxlZAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWlu ZyA9IHRydWUpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJs aWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNh YmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3du ZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0 ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1p dCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAg U2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAg ICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJz Y3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1w aGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVx dWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVh ZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBw bHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBE ZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBw ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9vbmx5ICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAw IHwgCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VU IChzbG90X25hbWUgPSBOT05FKTsKQEAgLTQ4OSwxMCArNDg5LDEwIEBAIENSRUFURSBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCcgUFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBi dXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5 b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0 aGUgc3Vic2NyaXB0aW9uLCBhbmQgYWx0ZXIgdGhlIHN1YnNjcmlwdGlvbiB0byByZWZyZXNo IHB1YmxpY2F0aW9ucy4KIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwg RGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFz IG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4 IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0 IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBwICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAg ICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg c3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBU d28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3Jk IHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWlu IGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9u IGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAg ICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04g IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAg IHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJzZXRfb25s eSAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAw MDAwMCB8IAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CkBAIC01MDUsMTggKzUwNSwxOCBAQCBDUkVBVEUg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QnIFBVQgogV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRl ZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlv biwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFi bGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFsdGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVm cmVzaCBwdWJsaWNhdGlvbnMuCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMK LSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxl ZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1 biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8 IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25v dXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGlt ZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg LTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNz d29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJl dGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhl ZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAg TFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJz Y3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFs bGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg dCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAg fCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0 X29ubHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAv MDAwMDAwMDAgfCAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3IgPSB0cnVlKTsKIFxkUnMrCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3 b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0 YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBh Y3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgICB8IGFu eSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwg ICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8 IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBC aW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxv dmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJh dGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNo cm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVy IHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBm ICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAg ICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CkBAIC01Mjks MTAgKzUyOSwxMCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05O RUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQgogV0FSTklORzogIHN1 YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKIEhJTlQ6ICBU byBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSBy ZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFsdGVyIHRo ZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCiBcZFJzKwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFt aW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQ YXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8 IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRp b24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAK LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCBy ZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAg ICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAg ICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg IDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAg ICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9u IHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24g ZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBG YWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24g ZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNl aXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190 ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1 Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAwIHwgc3Vic2V0X29ubHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg LTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogQUxURVIgU1VC U0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpAQCAt NTQ5LDEwICs1NDksMTAgQEAgTk9USUNFOiAgbWF4X3JldGVudGlvbl9kdXJhdGlvbiBpcyBp bmVmZmVjdGl2ZSB3aGVuIHJldGFpbl9kZWFkX3R1cGxlcyBpcyBkaXNhYmwKIFdBUk5JTkc6 ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCiBISU5U OiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0 aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCBhbHRl ciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRpb25zLgogXGRScysKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0 cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2lu IHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2 ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0 ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRp b24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAg ICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAxMDAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAw IHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1l ICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNh dGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/ IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50 aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZl IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwg UmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICAgICAgMTAwMCB8IHN1YnNldF9vbmx5ICAgICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIC0tIGZh aWwgLSBtYXhfcmV0ZW50aW9uX2R1cmF0aW9uIG11c3QgYmUgbm9uLW5lZ2F0aXZlCkBAIC01 NjEsMTAgKzU2MSwxMCBAQCBFUlJPUjogIG1heF9yZXRlbnRpb25fZHVyYXRpb24gY2Fubm90 IGJlIG5lZ2F0aXZlCiAtLSBvawogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBTRVQgKG1heF9yZXRlbnRpb25fZHVyYXRpb24gPSAwKTsKIFxkUnMrCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3 b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0 YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBh Y3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwg ICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8 IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBC aW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxv dmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJh dGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNo cm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVy IHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBm ICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAg ICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vbWVzb24uYnVpbGQKaW5kZXggZTcxZTk1YzYyOTcuLmY3ZWU1Yjg0NDlhIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCkBAIC00OCw2ICs0OCw4IEBAIHRlc3Rz ICs9IHsKICAgICAgICd0LzAzNl9zZXF1ZW5jZXMucGwnLAogICAgICAgJ3QvMDM3X2V4Y2Vw dC5wbCcsCiAgICAgICAndC8wMzhfd2Fsc25kX3NodXRkb3duX3RpbWVvdXQucGwnLAorICAg ICAgJ3QvMDM5X2hvdF9pbmRleGVkX2FwcGx5LnBsJywKKyAgICAgICd0LzA0MF9ob3RfaW5k ZXhlZF9yZXBsaWNhX2lkZW50aXR5LnBsJywKICAgICAgICd0LzEwMF9idWdzLnBsJywKICAg ICBdLAogICB9LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM5X2hv dF9pbmRleGVkX2FwcGx5LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM5X2hvdF9p bmRleGVkX2FwcGx5LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5mZTEwOGU2ZjA4MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAzOV9ob3RfaW5kZXhlZF9hcHBseS5wbApAQCAtMCwwICsxLDQxNiBAQAorCisjIENv cHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK KworIyBQZXItc3Vic2NyaXB0aW9uIGhvdF9pbmRleGVkX29uX2FwcGx5IG9wdGlvbjogcGFy c2VyLCBjYXRhbG9nIHJvdW5kLXRyaXAsCisjIEFMVEVSIGJlaGF2aW91ciwgYW5kIGFwcGx5 LXBhdGggZ2F0aW5nIHVuZGVyIGVhY2ggb2YgdGhlIHRocmVlIG1vZGVzLgordXNlIHN0cmlj dDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1v cmU7Cit1c2UgVGltZTo6SGlSZXMgcXcodXNsZWVwKTsKKworbXkgJHB1Ymxpc2hlciA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiskcHVibGlzaGVy LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRwdWJsaXNoZXItPnN0 YXJ0OworCitteSAkc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l dygnc3Vic2NyaWJlcicpOworJHN1YnNjcmliZXItPmluaXQ7Ciskc3Vic2NyaWJlci0+c3Rh cnQ7CisKK215ICRwdWJfY29ubmluZm8gPSAkcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5h bWU9cG9zdGdyZXMnOworCisjIC0tLSBTY2hlbWEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyB0YWJfZXh0cmEg aGFzIGFuIGV4dHJhIGJ0cmVlIGluZGV4IGJleW9uZCB0aGUgcHJpbWFyeSBrZXkgb24gdGhl CisjIHN1YnNjcmliZXIgc2lkZTsgdGhhdCBpcyB0aGUgc2NoZW1hIHNoYXBlIHRoYXQgc3Vi c2V0X29ubHkgbXVzdCBkZW1vdGUKKyMgdG8gbm9uLUhPVCBvbiBhcHBseSBidXQgYWx3YXlz IG11c3QgbGV0IHRocm91Z2guCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK Kwlxe0NSRUFURSBUQUJMRSB0YWJfZXh0cmEgKGlkIGludCBQUklNQVJZIEtFWSwgcGF5bG9h ZCBpbnQsIHRhZyB0ZXh0KX0pOworCisjIHRhYl9wayBoYXMgb25seSB0aGUgcHJpbWFyeSBr ZXk7IGluZGV4ZWQtYXR0ciBzZXQgaXMgYSBzdWJzZXQgb2YgdGhlIFBLCisjIGF0dHJzLCBz byBzdWJzZXRfb25seSBhbmQgYWx3YXlzIHNob3VsZCBib3RoIGFsbG93IEhPVC1pbmRleGVk IG9uIGFwcGx5LgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtDUkVB VEUgVEFCTEUgdGFiX3BrIChpZCBpbnQgUFJJTUFSWSBLRVksIHBheWxvYWQgaW50KX0pOwor CiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0NSRUFURSBQVUJMSUNB VElPTiBwdWIgRk9SIFRBQkxFIHRhYl9leHRyYSwgdGFiX3BrfSk7CisKKyMgU3Vic2NyaWJl ciBtaXJyb3JzIGJvdGggdGFibGVzLiAgdGFiX2V4dHJhIGhhcyB0aGUgZXh0cmEgc2Vjb25k YXJ5IGluZGV4CisjIG9ubHkgb24gdGhlIHN1YnNjcmliZXIsIHdoaWNoIGlzIHRoZSBzY2hl bWEtZGl2ZXJnZW5jZSBjYXNlIHRoZSBvcHRpb24KKyMgZ2F0ZXMuCiskc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgVEFCTEUgdGFiX2V4dHJhIChpZCBp bnQgUFJJTUFSWSBLRVksIHBheWxvYWQgaW50LCB0YWcgdGV4dCl9KTsKKyRzdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0NSRUFURSBJTkRFWCB0YWJfZXh0cmFfcGF5 bG9hZF9pZHggT04gdGFiX2V4dHJhKHBheWxvYWQpfSk7Ciskc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgVEFCTEUgdGFiX3BrIChpZCBpbnQgUFJJTUFS WSBLRVksIHBheWxvYWQgaW50KX0pOworCisjIC0tLSBQYXJzZXIgLyBjYXRhbG9nIGNoZWNr cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERl ZmF1bHQgb24gZnJlc2ggc3Vic2NyaXB0aW9uIGlzICdzJyAoc3Vic2V0X29ubHkpLgorJHN1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBU SU9OIHN1Yl9kZWZhdWx0CisJICBDT05ORUNUSU9OICckcHViX2Nvbm5pbmZvJworCSAgUFVC TElDQVRJT04gcHViCisJICBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHNsb3RfbmFtZSA9IE5P TkUsIGVuYWJsZWQgPSBmYWxzZSwKKwkgICAgICAgIGNyZWF0ZV9zbG90ID0gZmFsc2UpOwor fSk7CitpcyggJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NFTEVD VCBzdWJob3RpbmRleGVkb25hcHBseSBGUk9NIHBnX3N1YnNjcmlwdGlvbgorCQkgIFdIRVJF IHN1Ym5hbWUgPSAnc3ViX2RlZmF1bHQnfSksCisJJ3MnLAorCSdmcmVzaCBzdWJzY3JpcHRp b24gZGVmYXVsdHMgdG8gc3Vic2V0X29ubHknKTsKKworIyBFeHBsaWNpdCAnYWx3YXlzJyBp cyBzdG9yZWQgYXMgJ2EnLgorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx cXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9hbHdheXNfcAorCSAgQ09OTkVDVElPTiAn JHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1YgorCSAgV0lUSCAoY29ubmVjdCA9 IGZhbHNlLCBzbG90X25hbWUgPSBOT05FLCBlbmFibGVkID0gZmFsc2UsCisJICAgICAgICBj cmVhdGVfc2xvdCA9IGZhbHNlLCBob3RfaW5kZXhlZF9vbl9hcHBseSA9ICdhbHdheXMnKTsK K30pOworaXMoICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJcXtTRUxF Q1Qgc3ViaG90aW5kZXhlZG9uYXBwbHkgRlJPTSBwZ19zdWJzY3JpcHRpb24KKwkJICBXSEVS RSBzdWJuYW1lID0gJ3N1Yl9hbHdheXNfcCd9KSwKKwknYScsCisJJ0NSRUFURSB3aXRoIGhv dF9pbmRleGVkX29uX2FwcGx5ID0gYWx3YXlzIHN0b3JlcyBhJyk7CisKKyMgQUxURVIgU1VC U0NSSVBUSU9OIFNFVCB1cGRhdGVzIHRoZSBjb2x1bW4uCiskc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJcXtBTFRFUiBTVUJTQ1JJUFRJT04gc3ViX2RlZmF1bHQgU0VU IChob3RfaW5kZXhlZF9vbl9hcHBseSA9ICdvZmYnKX0pOworaXMoICRzdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1Qgc3ViaG90aW5kZXhlZG9uYXBwbHkg RlJPTSBwZ19zdWJzY3JpcHRpb24KKwkJICBXSEVSRSBzdWJuYW1lID0gJ3N1Yl9kZWZhdWx0 J30pLAorCSdvJywKKwknQUxURVIgU1VCU0NSSVBUSU9OIFNFVCBob3RfaW5kZXhlZF9vbl9h cHBseSA9IG9mZiBzdG9yZXMgbycpOworCisjIFVua25vd24gdmFsdWVzIGFyZSByZWplY3Rl ZC4KK215ICgkcmV0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRzdWJzY3JpYmVyLT5wc3FsKCdw b3N0Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViX2JvZ3VzCisJICBDT05O RUNUSU9OICckcHViX2Nvbm5pbmZvJworCSAgUFVCTElDQVRJT04gcHViCisJICBXSVRIIChj b25uZWN0ID0gZmFsc2UsIHNsb3RfbmFtZSA9IE5PTkUsIGVuYWJsZWQgPSBmYWxzZSwKKwkg ICAgICAgIGNyZWF0ZV9zbG90ID0gZmFsc2UsIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJ2Jv Z3VzJyk7Cit9KTsKK2lzbnQoJHJldCwgMCwgJ2JvZ3VzIGhvdF9pbmRleGVkX29uX2FwcGx5 IHZhbHVlIGlzIHJlamVjdGVkJyk7CitsaWtlKCRzdGRlcnIsCisJIHFyL3VucmVjb2duaXpl ZCB2YWx1ZSBmb3Igc3Vic2NyaXB0aW9uIHBhcmFtZXRlciAiaG90X2luZGV4ZWRfb25fYXBw bHkiLywKKwkgJ2JvZ3VzIGhvdF9pbmRleGVkX29uX2FwcGx5IHZhbHVlIHJlcG9ydHMgdGhl IGV4cGVjdGVkIGVycm9yJyk7CisKKyMgRHJvcCB0aGUgcGxhY2Vob2xkZXIgc3Vic2NyaXB0 aW9ucyBzbyB3ZSBjYW4gcmVidWlsZCB3aXRoIHJlYWwgc2xvdHMuCiskc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiBzdWJfZGVmYXVsdCcp OworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJ T04gc3ViX2Fsd2F5c19wJyk7CisKKyMgLS0tIEFwcGx5LXBhdGggYmVoYXZpb3VyIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHJlLXBv cHVsYXRlIGJvdGggc2lkZXMgaWRlbnRpY2FsbHkgc28gd2UgY2FuIHVzZSBjb3B5X2RhdGE9 ZmFsc2UgYW5kCisjIGF2b2lkIGR1cGxpY2F0ZS1rZXkgY29uZmxpY3RzIHdoZW4gd2UgcmVj cmVhdGUgc3Vic2NyaXB0aW9ucyBhY3Jvc3MgdGhlCisjIHRocmVlIHRlc3QgY2FzZXMuICBX ZSB1cGRhdGUgbm9uLW92ZXJsYXBwaW5nIGlkIHJhbmdlcyBwZXIgY2FzZSBzbyB0aGUKKyMg cGdfc3RhdCBjb3VudGVycyBzZWdtZW50IGNsZWFubHkuCiskcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwlxe0lOU0VSVCBJTlRPIHRhYl9leHRyYQorCSAgU0VMRUNUIGcs IDAsICd0JyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIGd9KTsKKyRwdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7SU5TRVJUIElOVE8gdGFiX3BrCisJICBTRUxF Q1QgZywgMCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIGd9KTsKKyRzdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0lOU0VSVCBJTlRPIHRhYl9leHRyYQorCSAg U0VMRUNUIGcsIDAsICd0JyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIGd9KTsKKyRz dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0lOU0VSVCBJTlRPIHRhYl9w aworCSAgU0VMRUNUIGcsIDAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnfSk7CisK KyMgSGVscGVyOiByZWFkIGNvdW50ZXJzIGFuZCBwb2xsIHVwIHRvIDEwIHMgZm9yIG5fdHVw X3VwZCB0byByZWFjaCBhCisjIG1pbmltdW0gdGFyZ2V0IHZhbHVlICh0aGUgYXBwbHkgd29y a2VyIGZsdXNoZXMgcGdzdGF0IGFzeW5jaHJvbm91c2x5KS4KK3N1YiBwb2xsX2NvdW50ZXJz Cit7CisJbXkgKCRub2RlLCAkdGFibGUsICR1cGRfdGFyZ2V0KSA9IEBfOworCisJbXkgJGRl YWRsaW5lID0gdGltZSgpICsgMTA7CisJbXkgJHJvdyA9ICcnOworCXdoaWxlICgxKQorCXsK KwkJJHJvdyA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJCXFxe1NFTEVDVCBj b2FsZXNjZShuX3R1cF91cGQsIDApLAorCQkJICAgICAgICAgIGNvYWxlc2NlKG5fdHVwX2hv dF91cGQsIDApLAorCQkJICAgICAgICAgIGNvYWxlc2NlKG5fdHVwX2hvdF9pbmRleGVkX3Vw ZCwgMCkKKwkJCSAgIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lID0g JyR0YWJsZSd9KTsKKwkJbXkgKCR1cGQpID0gc3BsaXQgL1x8LywgJHJvdzsKKwkJbGFzdCBp ZiAoJHVwZCArIDApID49ICR1cGRfdGFyZ2V0IHx8IHRpbWUoKSA+PSAkZGVhZGxpbmU7CisJ CXVzbGVlcCgxMDBfMDAwKTsKKwl9CisJbXkgKCR1cGQsICRob3QsICRob3RfaWR4KSA9IHNw bGl0IC9cfC8sICRyb3c7CisJcmV0dXJuICgkdXBkICsgMCwgJGhvdCArIDAsICRob3RfaWR4 ICsgMCk7Cit9CisKKyMgSGVscGVyOiBmaXJlIFVQREFURXMgdGhhdCB0b3VjaCB0aGUgaW5k ZXhlZCBwYXlsb2FkIGNvbHVtbiBvbiBhIGdpdmVuCisjIGlkIHJhbmdlIGFuZCByZXR1cm4g dGhlIGRlbHRhcyBpbiAobl90dXBfdXBkLCBuX3R1cF9ob3RfdXBkLAorIyBuX3R1cF9ob3Rf aW5kZXhlZF91cGQpIG9uIHRoZSBzdWJzY3JpYmVyLgorc3ViIGFwcGx5X3VwZGF0ZXNfYW5k X3JlYWQKK3sKKwlteSAoJHRhYmxlLCAkc3ViX25hbWUsICRpZF9sbywgJGlkX2hpKSA9IEBf OworCisJbXkgKCR1cGQwLCAkaG90MCwgJGhvdGlkeDApID0KKwkgIHBvbGxfY291bnRlcnMo JHN1YnNjcmliZXIsICR0YWJsZSwgMCk7CisKKwlmb3IgbXkgJGkgKCRpZF9sbyAuLiAkaWRf aGkpCisJeworCQkkcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJCSJVUERB VEUgJHRhYmxlIFNFVCBwYXlsb2FkID0gcGF5bG9hZCArIDEgV0hFUkUgaWQgPSAkaSIpOwor CX0KKwkkcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRzdWJfbmFtZSk7CisKKwlteSAk biA9ICRpZF9oaSAtICRpZF9sbyArIDE7CisJbXkgKCR1cGQxLCAkaG90MSwgJGhvdGlkeDEp ID0KKwkgIHBvbGxfY291bnRlcnMoJHN1YnNjcmliZXIsICR0YWJsZSwgJHVwZDAgKyAkbik7 CisJbm90ZSgiJHRhYmxlICRzdWJfbmFtZSAkaWRfbG8uLiRpZF9oaTogZG5fdXBkPSIKKwkJ IC4gKCR1cGQxIC0gJHVwZDApIC4gIiBkaG90PSIgLiAoJGhvdDEgLSAkaG90MCkKKwkJIC4g IiBkaG90aWR4PSIgLiAoJGhvdGlkeDEgLSAkaG90aWR4MCkpOworCXJldHVybiAoJHVwZDEg LSAkdXBkMCwgJGhvdDEgLSAkaG90MCwgJGhvdGlkeDEgLSAkaG90aWR4MCk7Cit9CisKKyMg Q2FzZSAxOiBvZmYsIHN1YnNjcmliZXItb25seSBzZWNvbmRhcnkgaW5kZXguICBIT1QtaW5k ZXhlZCBtdXN0IGJlCisjIHN1cHByZXNzZWQgb24gdGFiX2V4dHJhLiAgUGxhaW4gSE9UIHVw ZGF0ZXMgYWxzbyBzdGF5IHplcm8gYmVjYXVzZSBldmVyeQorIyBVUERBVEUgdG91Y2hlcyBg cGF5bG9hZGAgd2hpY2ggaXMgaW5kZXhlZCBvbiB0aGUgc3Vic2NyaWJlci4KKyRzdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJQ1JFQVRFIFNVQlNDUklQVElPTiBz dWJfb2ZmCisJICBDT05ORUNUSU9OICckcHViX2Nvbm5pbmZvJworCSAgUFVCTElDQVRJT04g cHViCisJICBXSVRIIChzbG90X25hbWUgPSAnc3ViX29mZl9zbG90JywgY3JlYXRlX3Nsb3Qg PSB0cnVlLAorCSAgICAgICAgaG90X2luZGV4ZWRfb25fYXBwbHkgPSAnb2ZmJywgY29weV9k YXRhID0gZmFsc2UpOworfSk7CiskcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWJf b2ZmJyk7CisKK215ICh1bmRlZiwgdW5kZWYsICRvZmZfZXh0cmFfaG90aWR4KSA9CisgIGFw cGx5X3VwZGF0ZXNfYW5kX3JlYWQoJ3RhYl9leHRyYScsICdzdWJfb2ZmJywgMSwgMjApOwor aXMoJG9mZl9leHRyYV9ob3RpZHgsIDAsCisgICAnaG90X2luZGV4ZWRfb25fYXBwbHkgPSBv ZmY6IG5vIEhPVC1pbmRleGVkIHVwZGF0ZXMgb24gdGFiX2V4dHJhJyk7CisKKyRzdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHN1Yl9vZmYn KTsKKworIyBDYXNlIDI6IHN1YnNldF9vbmx5LiAgT24gdGFiX3BrIChubyBzZWNvbmRhcnkg aW5kZXgsIGluZGV4ZWQtYXR0ciBzZXQgaXMKKyMgYSBzdWJzZXQgb2YgUEsgYXR0cnMpLCBj bGFzc2ljIEhPVCBtdXN0IGZpcmUgYmVjYXVzZSBgcGF5bG9hZGAgaXMgbm90CisjIGluZGV4 ZWQgdGhlcmUuICBPbiB0YWJfZXh0cmEgKHN1YnNjcmliZXIncyBgcGF5bG9hZGAgaW5kZXgg aXMgTk9UIGNvdmVyZWQKKyMgYnkgdGhlIFBLKSwgdGhlIGFwcGx5IHdvcmtlciBtdXN0IGRl bW90ZSB0byBub24tSE9UIGp1c3QgbGlrZSAnb2ZmJy4KKyRzdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcXF7CisJQ1JFQVRFIFNVQlNDUklQVElPTiBzdWJfc3Vic2V0CisJ ICBDT05ORUNUSU9OICckcHViX2Nvbm5pbmZvJworCSAgUFVCTElDQVRJT04gcHViCisJICBX SVRIIChzbG90X25hbWUgPSAnc3ViX3N1YnNldF9zbG90JywgY3JlYXRlX3Nsb3QgPSB0cnVl LAorCSAgICAgICAgaG90X2luZGV4ZWRfb25fYXBwbHkgPSAnc3Vic2V0X29ubHknLCBjb3B5 X2RhdGEgPSBmYWxzZSk7Cit9KTsKKyRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1 Yl9zdWJzZXQnKTsKKworbXkgKHVuZGVmLCAkc3NfcGtfaG90LCAkc3NfcGtfaG90aWR4KSA9 CisgIGFwcGx5X3VwZGF0ZXNfYW5kX3JlYWQoJ3RhYl9waycsICdzdWJfc3Vic2V0JywgMSwg MjApOworY21wX29rKCRzc19wa19ob3QsICc+JywgMCwKKwkgICAnaG90X2luZGV4ZWRfb25f YXBwbHkgPSBzdWJzZXRfb25seTogY2xhc3NpYyBIT1QgZmlyZXMgb24gdGFiX3BrJyk7CisK K215ICh1bmRlZiwgdW5kZWYsICRzc19leHRyYV9ob3RpZHgpID0KKyAgYXBwbHlfdXBkYXRl c19hbmRfcmVhZCgndGFiX2V4dHJhJywgJ3N1Yl9zdWJzZXQnLCAyMSwgNDApOworaXMoJHNz X2V4dHJhX2hvdGlkeCwgMCwKKyAgICdob3RfaW5kZXhlZF9vbl9hcHBseSA9IHN1YnNldF9v bmx5OiBubyBIT1QtaW5kZXhlZCBvbiB0YWJfZXh0cmEnKTsKKworJHN1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gc3ViX3N1YnNldCcpOwor CisjIENhc2UgMzogYWx3YXlzLiAgVW5jb25kaXRpb25hbCBIT1QtaW5kZXhlZCBlbGlnaWJp bGl0eS4gIE9uIHRhYl9leHRyYQorIyB1cGRhdGVzIHRvdWNoaW5nIHRoZSBpbmRleGVkIHBh eWxvYWQgY29sdW1uIHNob3VsZCBub3cgcnVuIG9uIHRoZQorIyBIT1QtaW5kZXhlZCBwYXRo OiBuX3R1cF9ob3RfaW5kZXhlZF91cGQgbXVzdCBpbmNyZWFzZS4KKyRzdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJQ1JFQVRFIFNVQlNDUklQVElPTiBzdWJfYWx3 YXlzCisJICBDT05ORUNUSU9OICckcHViX2Nvbm5pbmZvJworCSAgUFVCTElDQVRJT04gcHVi CisJICBXSVRIIChzbG90X25hbWUgPSAnc3ViX2Fsd2F5c19zbG90JywgY3JlYXRlX3Nsb3Qg PSB0cnVlLAorCSAgICAgICAgaG90X2luZGV4ZWRfb25fYXBwbHkgPSAnYWx3YXlzJywgY29w eV9kYXRhID0gZmFsc2UpOworfSk7CiskcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdz dWJfYWx3YXlzJyk7CisKK215ICh1bmRlZiwgdW5kZWYsICRhbF9leHRyYV9ob3RpZHgpID0K KyAgYXBwbHlfdXBkYXRlc19hbmRfcmVhZCgndGFiX2V4dHJhJywgJ3N1Yl9hbHdheXMnLCA0 MSwgODApOworY21wX29rKCRhbF9leHRyYV9ob3RpZHgsICc+JywgMCwKKwkgICAnaG90X2lu ZGV4ZWRfb25fYXBwbHkgPSBhbHdheXM6IEhPVC1pbmRleGVkIGZpcmVzIG9uIHRhYl9leHRy YScpOworCisjIEFMVEVSIGJhY2sgdG8gb2ZmIGFuZCB2ZXJpZnkgdGhlIGFwcGx5IHdvcmtl ciBwaWNrcyB1cCB0aGUgbmV3IG1vZGUuCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJcXtBTFRFUiBTVUJTQ1JJUFRJT04gc3ViX2Fsd2F5cyBTRVQgKGhvdF9pbmRl eGVkX29uX2FwcGx5ID0gJ29mZicpfSk7CitpcyggJHN1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQlxe1NFTEVDVCBzdWJob3RpbmRleGVkb25hcHBseSBGUk9NIHBnX3N1 YnNjcmlwdGlvbgorCQkgIFdIRVJFIHN1Ym5hbWUgPSAnc3ViX2Fsd2F5cyd9KSwKKwknbycs CisJJ0FMVEVSIHN1Yl9hbHdheXMgU0VUIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gb2ZmIHBl cnNpc3RzJyk7CisKKyMgRHJpdmUgYW5vdGhlciBiYXRjaCBvZiB1cGRhdGVzIGFuZCBjb25m aXJtIG5fdHVwX2hvdF9pbmRleGVkX3VwZCBkb2VzIE5PVAorIyBhZHZhbmNlIGFmdGVyIHRo ZSB3b3JrZXIgcmVyZWFkcyB0aGUgY2F0YWxvZy4KK215ICh1bmRlZiwgdW5kZWYsICRwb3N0 X2FsdGVyX2hvdGlkeCkgPQorICBhcHBseV91cGRhdGVzX2FuZF9yZWFkKCd0YWJfZXh0cmEn LCAnc3ViX2Fsd2F5cycsIDgxLCAxMDApOworaXMoJHBvc3RfYWx0ZXJfaG90aWR4LCAwLAor ICAgJ0FMVEVSIHRvIG9mZiBmcmVlemVzIG5fdHVwX2hvdF9pbmRleGVkX3VwZCBhZnRlciB3 b3JrZXIgcmVyZWFkJyk7CisKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg J0RST1AgU1VCU0NSSVBUSU9OIHN1Yl9hbHdheXMnKTsKKworIyAtLS0gU3Vic2NyaWJlciBJ TlNFUlQtYWZ0ZXItcmVwbGljYXRlZC1VUERBVEUgcGVyIG1vZGUgLS0tLS0tLS0tLS0tLS0t LS0tLQorIworIyBWZXJpZnkgdGhhdCBhIHN1YnNjcmliZXIgSU5TRVJUIHVzaW5nIHRoZSBP TEQgdmFsdWUgb2YgYSByZXBsaWNhdGVkCisjIFVQREFURSdzIGluZGV4ZWQgY29sdW1uIHN1 Y2NlZWRzIHdpdGhvdXQgYSBzcHVyaW91cyB1bmlxdWUtdmlvbGF0aW9uCisjIHVuZGVyIGVh Y2ggYXBwbHkgbW9kZS4gIFVzZSBhIGRlZGljYXRlZCB0YWJsZSAodGFiX3VrKSBzbyB0aGUg dW5pcXVlCisjIGNvbnN0cmFpbnQgY2FuIGJlIGRlZmluZWQgdXAtZnJvbnQgYW5kIHRoZSB0 ZXN0IGRvZXMgbm90IGNvbGxpZGUgd2l0aAorIyBwcmUtcG9wdWxhdGVkIHJvd3MgZnJvbSB0 aGUgYXBwbHktcGF0aCBzY2VuYXJpb3MgYWJvdmUuCisjCisjIFB1Ymxpc2hlciB1cGRhdGVz IHJvdyAkdXBkX2lkIGNoYW5naW5nIHBheWxvYWQgZnJvbSAwIHRvIDk5OS4gIFRoZQorIyBz dWJzY3JpYmVyIHRoZW4gaW5zZXJ0cyBhIGZyZXNoIHJvdyB3aXRoIHBheWxvYWQ9MCAodGhl IHByZS11cGRhdGUKKyMgdmFsdWUpLiAgVW5kZXIgYWxsIHRocmVlIG1vZGVzIF9idF9jaGVj a191bmlxdWUncyByZWNoZWNrIG9mIHRoZQorIyBjb25mbGljdGluZyB0dXBsZSdzIGxpdmUg a2V5IG11c3QgcmVjb2duaXplIHRoZSBzdGFsZSBsZWFmIGVudHJ5IHBvaW50aW5nCisjIGF0 IHRoZSBjaGFpbiByb290LCBzbyB0aGUgSU5TRVJUIHN1Y2NlZWRzLgorCiskcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0NSRUFURSBUQUJMRSB0YWJfdWsgKAorCSAg ICBpZCAgICAgIGludCBQUklNQVJZIEtFWSwKKwkgICAgcGF5bG9hZCBpbnQsCisJICAgIHRh ZyAgICAgdGV4dCwKKwkgICAgVU5JUVVFIChwYXlsb2FkLCB0YWcpKX0pOworJHN1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7Q1JFQVRFIFRBQkxFIHRhYl91ayAoCisJ ICAgIGlkICAgICAgaW50IFBSSU1BUlkgS0VZLAorCSAgICBwYXlsb2FkIGludCwKKwkgICAg dGFnICAgICB0ZXh0LAorCSAgICBVTklRVUUgKHBheWxvYWQsIHRhZykpfSk7CiskcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0FMVEVSIFBVQkxJQ0FUSU9OIHB1YiBB REQgVEFCTEUgdGFiX3VrfSk7CisKK2ZvciBteSAkbW9kZSAoJ29mZicsICdzdWJzZXRfb25s eScsICdhbHdheXMnKQoreworCW15ICRiYXNlX2lkID0gKCRtb2RlIGVxICdvZmYnKSA/IDEK KwkgICAgICAgICAgICAgIDogKCRtb2RlIGVxICdzdWJzZXRfb25seScpID8gMTAwIDogMjAw OworCW15ICR1cGRfaWQgID0gJGJhc2VfaWQgKyAxOworCW15ICRpbnNfaWQgID0gJGJhc2Vf aWQgKyAyOworCisJIyBTZWVkIGEgcm93IHRoYXQgd2Ugd2lsbCBVUERBVEUgb24gdGhlIHB1 Ymxpc2hlciAocGF5bG9hZCBzdGFydHMgYXQgMCksCisJIyBhbmQgZHJhaW4gdGhlIGFwcGx5 IGZvciBpdCBiZWZvcmUgY2hhbmdpbmcgcGF5bG9hZC4KKwkkcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRhYl91ayBWQUxVRVMgKCR1cGRfaWQs IDAsICdtb2RlXyRtb2RlJykiKTsKKworCSRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXF7CisJCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViX3VrXyRtb2RlCisJCSAgQ09O TkVDVElPTiAnJHB1Yl9jb25uaW5mbycKKwkJICBQVUJMSUNBVElPTiBwdWIKKwkJICBXSVRI IChzbG90X25hbWUgPSAnc3ViX3VrXyR7bW9kZX1fc2xvdCcsIGNyZWF0ZV9zbG90ID0gdHJ1 ZSwKKwkJICAgICAgICBob3RfaW5kZXhlZF9vbl9hcHBseSA9ICckbW9kZScsIGNvcHlfZGF0 YSA9IHRydWUpOworCX0pOworCSRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoInN1Yl91 a18kbW9kZSIpOworCisJIyBQdWJsaXNoZXIgVVBEQVRFOiBwYXlsb2FkIDAgLT4gOTk5Lgor CSRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIHRhYl91ayBT RVQgcGF5bG9hZCA9IDk5OSBXSEVSRSBpZCA9ICR1cGRfaWQiKTsKKwkkcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCJzdWJfdWtfJG1vZGUiKTsKKworCSMgU3Vic2NyaWJlciBJTlNF UlQgd2l0aCB0aGUgT0xEIHBheWxvYWQgdmFsdWUgYnV0IGEgdW5pcXVlIHRhZy4gIFRoZQor CSMgZXhpc3RpbmcgY2hhaW4gbGVhZiB3aXRoIGtleSAoMCwgJ21vZGVfJG1vZGUnKSBpcyBu b3cgc3RhbGU6IHRoZQorCSMgbGl2ZSB0dXBsZSBhdCB0aGUgY2hhaW4gcm9vdCBoYXMgcGF5 bG9hZD05OTkuICBfYnRfY2hlY2tfdW5pcXVlCisJIyByZWNoZWNrcyB0aGUgY29uZmxpY3Rp bmcgdHVwbGUncyBsaXZlIGtleSBhbmQgcmVjb2duaXplcyB0aGUgc3RhbGUKKwkjIGxlYWYs IGFsbG93aW5nIHRoaXMgSU5TRVJUIHRvIHN1Y2NlZWQuCisJbXkgKCRyLCAkb3V0LCAkZXJy KSA9ICRzdWJzY3JpYmVyLT5wc3FsKCdwb3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0YWJf dWsgVkFMVUVTICgkaW5zX2lkLCAwLCAnZnJlc2hfJG1vZGUnKSIpOworCWlzKCRyLCAwLAor CSAgICJob3RfaW5kZXhlZF9vbl9hcHBseSA9ICRtb2RlOiAiCisJICAgLiAic3Vic2NyaWJl ciBJTlNFUlQgd2l0aCBvbGQgcGF5bG9hZCB2YWx1ZSBzdWNjZWVkcyIpOworCWxpa2UoJGVy ciwgcXIvXiQvLAorCQkgImhvdF9pbmRleGVkX29uX2FwcGx5ID0gJG1vZGU6ICIKKwkJIC4g IklOU0VSVCBkaWQgbm90IHJhaXNlIGFuIGVycm9yIik7CisKKwkkc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJEUk9QIFNVQlNDUklQVElPTiBzdWJfdWtfJG1vZGUi KTsKK30KKworIyAtLS0gYWx3YXlzLW1vZGUgc2FmZXR5IHdpdGggaW5kZXhlZCBhdHRycyBi ZXlvbmQgdGhlIHJlcGxpY2EgaWRlbnRpdHkgLS0tLS0KKyMKKyMgQW1pdCdzIGNvcm5lcjog dW5kZXIgaG90X2luZGV4ZWRfb25fYXBwbHkgPSAnYWx3YXlzJyB0aGUgYXBwbHkgd29ya2Vy IG1heQorIyBydW4gYSBIT1QtaW5kZXhlZCB1cGRhdGUgZXZlbiB3aGVuIHRoZSB0YWJsZSBo YXMgYW4gaW5kZXhlZCBhdHRyaWJ1dGUgdGhhdAorIyBpcyBOT1QgY292ZXJlZCBieSB0aGUg cmVwbGljYSBpZGVudGl0eS4gIFRoZSByZWFkLXNpZGUgc3RhbGVuZXNzIG1lY2hhbmlzbQor IyBtdXN0IHN0aWxsIGxldCB0aGUgYXBwbHkgd29ya2VyJ3MgbGF0ZXIgcmVwbGljYS1pZGVu dGl0eSBsb29rdXBzIGZpbmQgdGhlCisjIHJvdywgYW5kIERFTEVURS9VUERBVEUgcmVwbGlj YXRpb24gbXVzdCBjb252ZXJnZSwgaW5jbHVkaW5nIHdoZW4gdGhlCisjIHJlcGxpY2EtaWRl bnRpdHkgY29sdW1uIGl0c2VsZiBpcyBjeWNsZWQgYXdheSBhbmQgYmFjayAoQUJBKS4KKyMK KyMgdGFiX3JpOiByZXBsaWNhIGlkZW50aXR5IGlzIGEgVU5JUVVFIGluZGV4IG9uIHJpZCAo bm90IHRoZSBQSyksIGFuZCB0aGVyZQorIyBpcyBhbiBleHRyYSBzZWNvbmRhcnkgaW5kZXgg b24gcGF5bG9hZCB0aGF0IGlzIE5PVCBwYXJ0IG9mIHRoZSByZXBsaWNhCisjIGlkZW50aXR5 LiAgU28gYSBwYXlsb2FkIGNoYW5nZSBtYWtlcyB0aGUgcGF5bG9hZCBsZWFmIHN0YWxlLCBh bmQgYW4gcmlkCisjIEFCQSBjeWNsZSBtYWtlcyB0aGUgcmlkIChyZXBsaWNhLWlkZW50aXR5 KSBsZWFmIHN0YWxlIC0tIGJvdGggd2hpbGUKKyMgJ2Fsd2F5cycga2VlcHMgdGhlIHVwZGF0 ZXMgb24gdGhlIEhPVCBjaGFpbi4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxeworCUNSRUFURSBUQUJMRSB0YWJfcmkgKGlkIGludCBQUklNQVJZIEtFWSwgcmlkIGlu dCBOT1QgTlVMTCwgcGF5bG9hZCBpbnQpOworCUNSRUFURSBVTklRVUUgSU5ERVggdGFiX3Jp X3JpZF91ayBPTiB0YWJfcmkocmlkKTsKKwlBTFRFUiBUQUJMRSB0YWJfcmkgUkVQTElDQSBJ REVOVElUWSBVU0lORyBJTkRFWCB0YWJfcmlfcmlkX3VrOworCUNSRUFURSBQVUJMSUNBVElP TiBwdWJfcmkgRk9SIFRBQkxFIHRhYl9yaTsKK30pOworJHN1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxeworCUNSRUFURSBUQUJMRSB0YWJfcmkgKGlkIGludCBQUklNQVJZ IEtFWSwgcmlkIGludCBOT1QgTlVMTCwgcGF5bG9hZCBpbnQpOworCUNSRUFURSBVTklRVUUg SU5ERVggdGFiX3JpX3JpZF91ayBPTiB0YWJfcmkocmlkKTsKKwlBTFRFUiBUQUJMRSB0YWJf cmkgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0YWJfcmlfcmlkX3VrOworCUNSRUFU RSBJTkRFWCB0YWJfcmlfcGF5bG9hZF9pZHggT04gdGFiX3JpKHBheWxvYWQpOworfSk7CisK KyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7SU5TRVJUIElOVE8gdGFi X3JpIFZBTFVFUyAoMSwgMTAsIDApLCAoMiwgMjAsIDApfSk7CisKKyRzdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJQ1JFQVRFIFNVQlNDUklQVElPTiBzdWJfcmkK KwkgIENPTk5FQ1RJT04gJyRwdWJfY29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWJfcmkK KwkgIFdJVEggKHNsb3RfbmFtZSA9ICdzdWJfcmlfc2xvdCcsIGNyZWF0ZV9zbG90ID0gdHJ1 ZSwKKwkgICAgICAgIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJ2Fsd2F5cycsIGNvcHlfZGF0 YSA9IHRydWUpOworfSk7CisjIFdhaXQgZm9yIHRoZSBpbml0aWFsIHRhYmxlIENPUFkgdG8g ZmluaXNoLCBub3QganVzdCBzdHJlYW1pbmcgY2F0Y2gtdXAsIHNvCisjIHRoZSBzZWVkZWQg cm93cyBhcmUgcHJlc2VudCBiZWZvcmUgd2Ugc3RhcnQgdXBkYXRpbmcgdGhlbS4KKyRzdWJz Y3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkcHVibGlzaGVyLCAnc3ViX3Jp Jyk7CisKKyMgQ3ljbGUgdGhlIHJlcGxpY2EtaWRlbnRpdHkgY29sdW1uIGF3YXkgYW5kIGJh Y2sgKEFCQSksIGFuZCBhbHNvIGNodXJuIHRoZQorIyBleHRyYSBwYXlsb2FkIGluZGV4LCBh bGwgcmVwbGljYXRlZCB1bmRlciAnYWx3YXlzJy4gIEVhY2ggc3RlcCBpcyBhCisjIEhPVC1p bmRleGVkIHVwZGF0ZSBvbiB0aGUgc3Vic2NyaWJlciB0aGF0IGxlYXZlcyBhIHN0YWxlIGxl YWYuCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwlVUERBVEUgdGFi X3JpIFNFVCByaWQgPSAxMSwgcGF5bG9hZCA9IHBheWxvYWQgKyAxIFdIRVJFIGlkID0gMTsK KwlVUERBVEUgdGFiX3JpIFNFVCByaWQgPSAxMCwgcGF5bG9hZCA9IHBheWxvYWQgKyAxIFdI RVJFIGlkID0gMTsgIC0tIHJpZCBBQkEKKwlVUERBVEUgdGFiX3JpIFNFVCBwYXlsb2FkID0g cGF5bG9hZCArIDEgV0hFUkUgaWQgPSAyOworfSk7CiskcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCdzdWJfcmknKTsKKworIyBDb25maXJtIHRoZSBhcHBseSB3b3JrZXIgYWN0dWFs bHkgdG9vayB0aGUgSE9ULWluZGV4ZWQgcGF0aCBvbiB0YWJfcmkgKHRoZQorIyB3aG9sZSBw b2ludCBvZiAnYWx3YXlzJyB3aXRoIGluZGV4ZWQgYXR0cnMgYmV5b25kIHRoZSByZXBsaWNh IGlkZW50aXR5KS4KKyMgV2l0aG91dCB0aGlzIHRoZSBjb252ZXJnZW5jZS92ZXJpZnlfaGVh cGFtIGFzc2VydHMgYmVsb3cgY291bGQgcGFzcworIyB2YWN1b3VzbHkgaWYgZWxpZ2liaWxp dHkgc2lsZW50bHkgcmVncmVzc2VkIHRvIHBsYWluIG5vbi1IT1QuCitteSAodW5kZWYsIHVu ZGVmLCAkcmlfaG90aWR4KSA9IHBvbGxfY291bnRlcnMoJHN1YnNjcmliZXIsICd0YWJfcmkn LCAzKTsKK2NtcF9vaygkcmlfaG90aWR4LCAnPicsIDAsCisJICAgJ2Fsd2F5cy1tb2RlOiBI T1QtaW5kZXhlZCBwYXRoIGZpcmVkIG9uIHRhYl9yaSAocmlkL3BheWxvYWQgY2h1cm4pJyk7 CisKKyMgQSBzdWJzZXF1ZW50IHJlcGxpY2F0ZWQgVVBEQVRFIGtleWVkIGJ5IHRoZSByZXBs aWNhIGlkZW50aXR5IChyaWQpIG11c3QKKyMgZmluZCB0aGUgcm93IGRlc3BpdGUgdGhlIHN0 YWxlIHJpZC9wYXlsb2FkIGxlYXZlcyB0aGUgQUJBIGxlZnQgYmVoaW5kLgorJHB1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtVUERBVEUgdGFiX3JpIFNFVCBwYXlsb2Fk ID0gMTAwIFdIRVJFIGlkID0gMX0pOworIyBBbmQgYSByZXBsaWNhdGVkIERFTEVURSByZXNv bHZlZCB0aHJvdWdoIHRoZSByZXBsaWNhLWlkZW50aXR5IGluZGV4IG11c3QKKyMgYWxzbyBm aW5kIGFuZCByZW1vdmUgdGhlIHJpZ2h0IHJvdy4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxe0RFTEVURSBGUk9NIHRhYl9yaSBXSEVSRSBpZCA9IDJ9KTsKKyRwdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1Yl9yaScpOworCitpcyggJHN1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NFTEVDVCByaWQgfHwgJzonIHx8IHBheWxv YWQgRlJPTSB0YWJfcmkgV0hFUkUgaWQgPSAxfSksCisJJzEwOjEwMCcsCisJJ2Fsd2F5cy1t b2RlOiByZXBsaWNhdGVkIFVQREFURSBmb3VuZCB0aGUgcm93IHZpYSBSSSBhZnRlciByaWQg QUJBJyk7CitpcyggJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NF TEVDVCBjb3VudCgqKSBGUk9NIHRhYl9yaSBXSEVSRSBpZCA9IDJ9KSwKKwknMCcsCisJJ2Fs d2F5cy1tb2RlOiByZXBsaWNhdGVkIERFTEVURSBmb3VuZCB0aGUgcm93IHZpYSBSSSB3aXRo IHN0YWxlIGxlYXZlcycpOworIyBGdWxsIGNvbnZlcmdlbmNlIGNyb3NzLWNoZWNrLgoraXMo ICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1Qgc3RyaW5n X2FnZyhpZCB8fCAnLCcgfHwgcmlkIHx8ICcsJyB8fCBwYXlsb2FkLCAnOycgT1JERVIgQlkg aWQpCisJCSAgRlJPTSB0YWJfcml9KSwKKwkkcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJcXtTRUxFQ1Qgc3RyaW5nX2FnZyhpZCB8fCAnLCcgfHwgcmlkIHx8ICcsJyB8 fCBwYXlsb2FkLCAnOycgT1JERVIgQlkgaWQpCisJCSAgRlJPTSB0YWJfcml9KSwKKwknYWx3 YXlzLW1vZGU6IHRhYl9yaSBjb252ZXJnZXMgYmV0d2VlbiBwdWJsaXNoZXIgYW5kIHN1YnNj cmliZXInKTsKKworIyB2ZXJpZnlfaGVhcGFtIGZpbmRzIG5vIGNvcnJ1cHRpb24gaW4gdGhl IEhPVC1pbmRleGVkIGNoYWlucyBsZWZ0IGJlaGluZC4KKyRzdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBhbWNoZWNr Jyk7CitpcyggJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NFTEVD VCBjb3VudCgqKSBGUk9NIHZlcmlmeV9oZWFwYW0oJ3RhYl9yaScpfSksCisJJzAnLAorCSdh bHdheXMtbW9kZTogdmVyaWZ5X2hlYXBhbSBjbGVhbiBvbiB0YWJfcmkgYWZ0ZXIgc3RhbGUt bGVhZiBjaHVybicpOworCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdE Uk9QIFNVQlNDUklQVElPTiBzdWJfcmknKTsKKworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNDBfaG90X2luZGV4ZWRfcmVwbGljYV9p ZGVudGl0eS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA0MF9ob3RfaW5kZXhlZF9y ZXBsaWNhX2lkZW50aXR5LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5mODAxNzg3YjRjMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzA0MF9ob3RfaW5kZXhlZF9yZXBsaWNhX2lkZW50aXR5LnBsCkBAIC0wLDAgKzEs MTEwIEBACisjIENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKKworIyBMaXZlIGxvZ2ljYWwgcmVwbGljYXRpb24gb2YgSE9ULWluZGV4 ZWQgdXBkYXRlcyB1bmRlciBub24tZGVmYXVsdCByZXBsaWNhCisjIGlkZW50aXRpZXMuICBU aGUgYXBwbHkgd29ya2VyIGxvY2F0ZXMgdGhlIHJvdyB0byB1cGRhdGUgb3IgZGVsZXRlIHZp YSB0aGUKKyMgcmVwbGljYSBpZGVudGl0eTogYSBzZXFzY2FuIGZvciBSRVBMSUNBIElERU5U SVRZIEZVTEwsIGFuZCB0aGUgbm9taW5hdGVkCisjIGluZGV4IGZvciBSRVBMSUNBIElERU5U SVRZIFVTSU5HIElOREVYLiAgT24gYSBzdWJzY3JpYmVyIHdob3NlIHRhYmxlcyBjYXJyeQor IyBleHRyYSBpbmRleGVzIChzbyBhcHBseSBwZXJmb3JtcyBIT1QtaW5kZXhlZCB1cGRhdGVz IGFuZCBsZWF2ZXMgc3RhbGUgaW5kZXgKKyMgbGVhdmVzKSwgdGhhdCBsb29rdXAgbXVzdCBz dGlsbCBmaW5kIHRoZSBjdXJyZW50IHJvdyAtLSBpbmNsdWRpbmcgYWZ0ZXIgdGhlCisjIGlk ZW50aXR5IGNvbHVtbidzIHZhbHVlIGlzIGN5Y2xlZCBhd2F5IGFuZCBiYWNrIChBQkEpLgor dXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNl IFRlc3Q6Ok1vcmU7CisKK215ICRwdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJHB1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFt aW5nID0+ICdsb2dpY2FsJyk7CiskcHVibGlzaGVyLT5zdGFydDsKKworbXkgJHN1YnNjcmli ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRz dWJzY3JpYmVyLT5pbml0OworJHN1YnNjcmliZXItPnN0YXJ0OworCitteSAkcHViX2Nvbm5p bmZvID0gJHB1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKworIyB0 YWJfZnVsbDogUkVQTElDQSBJREVOVElUWSBGVUxMIChhcHBseSB1c2VzIGEgc2VxdWVudGlh bCBzY2FuKS4KKyMgdGFiX2lkeDogIFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5ERVggb24g YSBub24tUEsgdW5pcXVlIGluZGV4IHdob3NlCisjICAgICAgICAgICBjb2x1bW4gaXMgaXRz ZWxmIHVwZGF0ZWQsIHNvIHRoZSBhcHBseS1zaWRlIGluZGV4IGxvb2t1cCBtdXN0CisjICAg ICAgICAgICB0b2xlcmF0ZSBzdGFsZSBsZWF2ZXMgbGVmdCBieSBlYXJsaWVyIEhPVC1pbmRl eGVkIHVwZGF0ZXMuCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwlD UkVBVEUgVEFCTEUgdGFiX2Z1bGwgKGEgaW50LCBiIGludCwgYyBpbnQpOworCUFMVEVSIFRB QkxFIHRhYl9mdWxsIFJFUExJQ0EgSURFTlRJVFkgRlVMTDsKKwlDUkVBVEUgVEFCTEUgdGFi X2lkeCAoayBpbnQgTk9UIE5VTEwsIHYgaW50LCB3IGludCk7CisJQ1JFQVRFIFVOSVFVRSBJ TkRFWCB0YWJfaWR4X2sgT04gdGFiX2lkeCAoayk7CisJQUxURVIgVEFCTEUgdGFiX2lkeCBS RVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRhYl9pZHhfazsKKwlDUkVBVEUgUFVCTElD QVRJT04gcHViIEZPUiBUQUJMRSB0YWJfZnVsbCwgdGFiX2lkeDsKK30pOworCisjIFRoZSBz dWJzY3JpYmVyIGFkZHMgZXh0cmEgc2Vjb25kYXJ5IGluZGV4ZXMgc28gdGhhdCBhbiBVUERB VEUgY2hhbmdpbmcgb25lCisjIGluZGV4ZWQgY29sdW1uIHN0YXlzIEhPVC1pbmRleGVkIG9u IGFwcGx5LgorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCUNSRUFU RSBUQUJMRSB0YWJfZnVsbCAoYSBpbnQsIGIgaW50LCBjIGludCkgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKKwlDUkVBVEUgSU5ERVggdGFiX2Z1bGxfYiBPTiB0YWJfZnVsbCAoYik7CisJ Q1JFQVRFIElOREVYIHRhYl9mdWxsX2MgT04gdGFiX2Z1bGwgKGMpOworCUFMVEVSIFRBQkxF IHRhYl9mdWxsIFJFUExJQ0EgSURFTlRJVFkgRlVMTDsKKwlDUkVBVEUgVEFCTEUgdGFiX2lk eCAoayBpbnQgTk9UIE5VTEwsIHYgaW50LCB3IGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKKwlDUkVBVEUgVU5JUVVFIElOREVYIHRhYl9pZHhfayBPTiB0YWJfaWR4IChrKTsKKwlD UkVBVEUgSU5ERVggdGFiX2lkeF92IE9OIHRhYl9pZHggKHYpOworCUNSRUFURSBJTkRFWCB0 YWJfaWR4X3cgT04gdGFiX2lkeCAodyk7CisJQUxURVIgVEFCTEUgdGFiX2lkeCBSRVBMSUNB IElERU5USVRZIFVTSU5HIElOREVYIHRhYl9pZHhfazsKK30pOworCisjIEFsbG93IEhPVC1p bmRleGVkIHVwZGF0ZXMgb24gdGhlIGFwcGx5IHBhdGguCiskc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViCisJICBDT05O RUNUSU9OICckcHViX2Nvbm5pbmZvJworCSAgUFVCTElDQVRJT04gcHViCisJICBXSVRIICho b3RfaW5kZXhlZF9vbl9hcHBseSA9IGFsd2F5cyk7Cit9KTsKKyRzdWJzY3JpYmVyLT53YWl0 X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkcHVibGlzaGVyLCAnc3ViJyk7CisKKyMgU2VlZCBi b3RoIHRhYmxlcy4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCUlO U0VSVCBJTlRPIHRhYl9mdWxsIFZBTFVFUyAoMSwgMTAsIDEwMCksICgyLCAyMCwgMjAwKTsK KwlJTlNFUlQgSU5UTyB0YWJfaWR4IFZBTFVFUyAoMSwgMTAsIDEwMDApLCAoMiwgMjAsIDIw MDApOworfSk7CiskcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWInKTsKKworIyBB IHJ1biBvZiBzaW5nbGUtY29sdW1uIHVwZGF0ZXM6IGVhY2ggc3RheXMgSE9ULWluZGV4ZWQg b24gdGhlIHN1YnNjcmliZXIgYW5kCisjIGxlYXZlcyBzdGFsZSBsZWF2ZXMsIHRoZW4gdGhl IGlkZW50aXR5L1BLIHJvdyBpcyBtYXRjaGVkIGFnYWluIGJ5IHRoZSBuZXh0CisjIGNoYW5n ZS4gIEluY2x1ZGUgYW4gQUJBIGN5Y2xlIG9uIHRoZSBVU0lORyBJTkRFWCBjb2x1bW4gayAo MSAtPiAzIC0+IDEpLgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJ VVBEQVRFIHRhYl9mdWxsIFNFVCBiID0gYiArIDEgV0hFUkUgYSA9IDE7CisJVVBEQVRFIHRh Yl9mdWxsIFNFVCBjID0gYyArIDEgV0hFUkUgYSA9IDE7CisJVVBEQVRFIHRhYl9mdWxsIFNF VCBiID0gYiArIDEgV0hFUkUgYSA9IDE7CisJVVBEQVRFIHRhYl9pZHggU0VUIHYgPSB2ICsg MSBXSEVSRSBrID0gMTsKKwlVUERBVEUgdGFiX2lkeCBTRVQgayA9IDMgV0hFUkUgayA9IDE7 CisJVVBEQVRFIHRhYl9pZHggU0VUIHcgPSB3ICsgMSBXSEVSRSBrID0gMzsKKwlVUERBVEUg dGFiX2lkeCBTRVQgayA9IDEgV0hFUkUgayA9IDM7CisJREVMRVRFIEZST00gdGFiX2Z1bGwg V0hFUkUgYSA9IDI7CisJREVMRVRFIEZST00gdGFiX2lkeCBXSEVSRSBrID0gMjsKK30pOwor JHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViJyk7CisKKyMgVGhlIHN1YnNjcmli ZXIgbXVzdCBtYXRjaCB0aGUgcHVibGlzaGVyIGV4YWN0bHk6IHRoZSBSSSBsb29rdXBzIGZv dW5kIHRoZQorIyByaWdodCByb3dzIGFjcm9zcyB0aGUgSE9ULWluZGV4ZWQgY2hhaW5zIGFu ZCB0aGUgQUJBIGN5Y2xlLgorbXkgJHB1Yl9mdWxsID0gJHB1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgYSwgYiwgYyBGUk9NIHRhYl9mdWxsIE9SREVSIEJZ IGF9KTsKK215ICRzdWJfZnVsbCA9ICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwlxe1NFTEVDVCBhLCBiLCBjIEZST00gdGFiX2Z1bGwgT1JERVIgQlkgYX0pOworaXMo JHN1Yl9mdWxsLCAkcHViX2Z1bGwsICdSRVBMSUNBIElERU5USVRZIEZVTEw6IHN1YnNjcmli ZXIgbWF0Y2hlcyBwdWJsaXNoZXInKTsKKworbXkgJHB1Yl9pZHggPSAkcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBrLCB2LCB3IEZST00gdGFiX2lkeCBP UkRFUiBCWSBrfSk7CitteSAkc3ViX2lkeCA9ICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwlxe1NFTEVDVCBrLCB2LCB3IEZST00gdGFiX2lkeCBPUkRFUiBCWSBrfSk7 Citpcygkc3ViX2lkeCwgJHB1Yl9pZHgsCisJJ1JFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5E RVg6IHN1YnNjcmliZXIgbWF0Y2hlcyBwdWJsaXNoZXIgYWNyb3NzIEFCQScpOworCisjIFRo ZSBzdWJzY3JpYmVyJ3MgdGFibGVzIG11c3QgYmUgc3RydWN0dXJhbGx5IGNvbnNpc3RlbnQg KHN0dWJzIHJlY29nbmlzZWQpLgorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxe0NSRUFURSBFWFRFTlNJT04gYW1jaGVja30pOworaXMoICRzdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1QgY291bnQoKikgRlJPTSB2ZXJpZnlfaGVh cGFtKCd0YWJfaWR4Jyl9KSwKKwknMCcsCisJJ3N1YnNjcmliZXIgdGFiX2lkeCBoYXMgbm8g aGVhcCBjb3JydXB0aW9uIGFmdGVyIEhPVC1pbmRleGVkIGFwcGx5Jyk7CisKKyRzdWJzY3Jp YmVyLT5zdG9wOworJHB1Ymxpc2hlci0+c3RvcDsKKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoy LjUwLjEKCg== --ffc971266f692fe98c1088dac35356ed85e7d5db Content-Disposition: attachment; filename*0="v63-0010-DO-NOT-MERGE-Add-a-HOT-SIU-benchmark-harness.patch" Content-Type: text/x-patch; name="=?UTF-8?Q?v63-0010-DO-NOT-MERGE-Add-a-HOT-SIU-benchmark-harness.patch?=" Content-Transfer-Encoding: base64 RnJvbSA3ZGE3N2Q2MjMwOWM5MGVkM2VlMGVkZTI1YTA1NjI4NWNiNGZmODdlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog TW9uLCAxNSBKdW4gMjAyNiAxNDoyMjo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjYzIDEw LzEwXSBbRE8gTk9UIE1FUkdFXSBBZGQgYSBIT1QvU0lVIGJlbmNobWFyayBoYXJuZXNzCgpB L0IgYW5kIHNpbmdsZS12YXJpYW50IGJlbmNobWFyayBzY3JpcHRzIGZvciBIT1QtaW5kZXhl ZCB1cGRhdGVzOiBidWlsZCB0d28KcG9zdGdyZXMgdmFyaWFudHMsIHJ1biBwZ2JlbmNoIHdv cmtsb2FkcyBleGVyY2lzaW5nIGNsYXNzaWMtSE9ULCBub24tSE9ULCBhbmQKSE9ULWluZGV4 ZWQgcGF0aHMsIGFuZCBhIHNlbGYtY29udGFpbmVkIGJsb2F0IHByb2JlIHRoYXQgcmVwb3J0 cyB0aGUgc2tpcCBjb3VudAooaW5kZXggd3JpdGVzIGF2b2lkZWQgb24gdW5jaGFuZ2VkIGlu ZGV4ZXMpIGFuZCBjaGFuZ2VkLWluZGV4IGJvdW5kaW5nLiAgTm90CmZvciBtZXJnZTsga2Vw dCBmb3IgZXZhbHVhdGluZyB0aGUgZmVhdHVyZS4KLS0tCiBzcmMvdGVzdC9iZW5jaG1hcmtz L3NpdS9SRUFETUUubWQgICAgICAgICAgICAgfCAgODIgKysrKwogc3JjL3Rlc3QvYmVuY2ht YXJrcy9zaXUvc2NyaXB0cy9iaXQxNF9hYi5zaCAgIHwgMTE4ICsrKysrKwogLi4uL3NpdS9z Y3JpcHRzL2JpdG1hcF9hbmRfbWl4ZWQuc3FsICAgICAgICAgIHwgIDI1ICsrCiBzcmMvdGVz dC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2Jsb2F0LnNoICAgICAgfCAgODQgKysrKwogc3Jj L3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9idWlsZC5zaCAgICAgIHwgIDU1ICsrKwog Li4uL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX21peGVkLnNxbCAgICAgICAgIHwgIDExICsK IC4uLi9zaXUvc2NyaXB0cy9ob3RfaW5kZXhlZF91cGRhdGUuc3FsICAgICAgICB8ICAgNiAr CiAuLi4vYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9yZWFkX2luZGV4c2Nhbi5zcWwgfCAgMTEg Kwogc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ydW4uc2ggICAgICAgIHwgMzc3 ICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9z b2FrLnNoICAgICAgIHwgMTI4ICsrKysrKwogLi4uL2JlbmNobWFya3Mvc2l1L3NjcmlwdHMv d2lkZV91cGRhdGUuc3FsICAgIHwgICA3ICsKIDExIGZpbGVzIGNoYW5nZWQsIDkwNCBpbnNl cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUv UkVBRE1FLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUv c2NyaXB0cy9iaXQxNF9hYi5zaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2JlbmNo bWFya3Mvc2l1L3NjcmlwdHMvYml0bWFwX2FuZF9taXhlZC5zcWwKIGNyZWF0ZSBtb2RlIDEw MDc1NSBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2Jsb2F0LnNoCiBjcmVhdGUg bW9kZSAxMDA3NTUgc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9idWlsZC5zaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvaG90 X2luZGV4ZWRfbWl4ZWQuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvYmVuY2ht YXJrcy9zaXUvc2NyaXB0cy9ob3RfaW5kZXhlZF91cGRhdGUuc3FsCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9yZWFkX2luZGV4c2Nhbi5z cWwKIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRz L3J1bi5zaAogY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3Nj cmlwdHMvc29hay5zaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2JlbmNobWFya3Mv c2l1L3NjcmlwdHMvd2lkZV91cGRhdGUuc3FsCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvYmVu Y2htYXJrcy9zaXUvUkVBRE1FLm1kIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvUkVBRE1F Lm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45YTYyZDI2OGFk NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L1JFQURNRS5t ZApAQCAtMCwwICsxLDgyIEBACisjIGhvdC1pbmRleGVkIChIT1QtaW5kZXhlZCkgQS9CIGJl bmNobWFyayBoYXJuZXNzCisKK1R3byBwb3N0Z3JlcyB2YXJpYW50cywgaWRlbnRpY2FsIHBn ZGF0YSBsYXlvdXRzLCBwZ2JlbmNoIHdvcmtsb2FkcworZXhlcmNpc2luZyBjbGFzc2ljIEhP VCwgbm9uLUhPVCwgYW5kIEhPVC1pbmRleGVkIHBhdGhzLgorCisjIyBDb250ZW50cworCist IGBzY3JpcHRzL2J1aWxkLnNoYCAtLSBidWlsZHMgdHdvIHBvc3RncmVzIHZhcmlhbnRzIChg bWFzdGVyYCA9IHRlcGlkJ3MKKyAgbWVyZ2UtYmFzZSB3aXRoIG9yaWdpbi9tYXN0ZXI7IGB0 ZXBpZGAgPSB0aGUgYnJhbmNoIHVuZGVyIHRlc3QpLiAgUmVxdWlyZXMKKyAgYSB3cml0YWJs ZSBiZW5jaG1hcmsgcm9vdCB2aWEgYEJFTkNIYCAoZGVmYXVsdCBgL3NjcmF0Y2gvdGVwaWQt YmVuY2hgKS4KKy0gYHNjcmlwdHMvcnVuLnNoYCAtLSBBL0IgZHJpdmVyLiAgUnVucyBgc2lt cGxlX3VwZGF0ZWAgKHBnYmVuY2ggLU4pLAorICBgaG90X2luZGV4ZWRfdXBkYXRlYCwgYGhv dF9pbmRleGVkX21peGVkYCwgYHJlYWRfaW5kZXhzY2FuYCwgYW5kIGB3aWRlX05gCisgIGZv ciBOIGluIGAkV0lERV9TVEVQU2AuCisgIENvbGxlY3RzIFRQUywgbGF0ZW5jeSwgV0FMIGJ5 dGVzLCBIT1QgdXBkYXRlIGNvdW50LCBwcmUvcG9zdCBoZWFwIGFuZAorICBpbmRleCBzaXpl LCBwZWFrIENQVSUgYW5kIFJTUy4gIFdyaXRlcyBhIENTViBwZXIgcnVuIHRvIGAkQkVOQ0gv cmVzdWx0cy9gLgorLSBgc2NyaXB0cy9zb2FrLnNoYCAtLSBsb25nLXJ1bm5pbmcgc2luZ2xl LXdvcmtsb2FkIGRyaXZlciB0aGF0IHNhbXBsZXMKKyAgVFBTL0hPVCUvV0FML2Jsb2F0IGV2 ZXJ5IGAkU0FNUExFYCBzZWNvbmRzIHVuZGVyIGAkRFVSQVRJT05gIHNlY29uZHMKKyAgb2Yg Y29uc3RhbnQgcHJlc3N1cmUsIHBlciB2YXJpYW50LgorLSBgc2NyaXB0cy9ibG9hdC5zaGAg LS0gc2luZ2xlLXZhcmlhbnQgYmxvYXQgcHJvYmUuICBSdW5zIHVwZGF0ZSt2YWN1dW0gY3lj bGVzCisgIG9uIGEgdGFibGUgd2hvc2UgY2hhbmdlZCBjb2x1bW4gYW5kIGFuIHVuY2hhbmdl ZCBjb2x1bW4gYXJlIGJvdGggaW5kZXhlZCwgYW5kCisgIHJlcG9ydHMgKHZpYSBwZ3N0YXR0 dXBsZSkgdGhhdCB0aGUgY2hhbmdlZCBpbmRleCBzdGF5cyBib3VuZGVkIHdpdGggcGVyaW9k aWMKKyAgVkFDVVVNIGJ1dCBncm93cyB1bmJvdW5kZWQgd2l0aG91dCBpdCwgcGx1cyB0aGUg c2tpcCBjb3VudCBzaG93aW5nCisgIEhPVC1pbmRleGVkIHVwZGF0ZXMgYXZvaWRpbmcgdGhl IHVuY2hhbmdlZCBpbmRleC4gIFNwaW5zIGl0cyBvd24gdGhyb3dhd2F5CisgIGNsdXN0ZXIs IHNvIGl0IGRvZXMgbm90IHRvdWNoIHRoZSBBL0IgcGdkYXRhLgorLSBgc2NyaXB0cy9ob3Rf aW5kZXhlZF91cGRhdGUuc3FsYCAtLSBgVVBEQVRFIHNpdV90YWJsZSBTRVQgYiA9IHJhbmQg V0hFUkUgYSA9IHJhbmRgLgorLSBgc2NyaXB0cy9ob3RfaW5kZXhlZF9taXhlZC5zcWxgICAt LSA4MCAlIFNFTEVDVCBieSBQSyArIDIwICUgaW5kZXhlZC1jb2wgVVBEQVRFLgorLSBgc2Ny aXB0cy9yZWFkX2luZGV4c2Nhbi5zcWxgIC0tIHJlYWQtb25seSBidHJlZSBpbmRleCBzY2Fu cyBvbiBhIGZyZXNobHkKKyAgcmVzZXQgYHNpdV90YWJsZWAgKG5vIHN0YWxlIGVudHJpZXMp OyBjb25maXJtcyB0aGUgSE9ULWluZGV4ZWQgcmVhZCBwYXRoCisgIGFkZHMgbm8gcGVyLXNj YW4gb3ZlcmhlYWQsIHNpbmNlIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgZGVjaWRl cworICBzdGFsZW5lc3Mgd2l0aG91dCBhIGtleSBjb21wYXJpc29uIGFuZCB0aGUgc2NhbiBy ZXF1ZXN0cyBubyBpbmRleCB0dXBsZS4KKy0gYHNjcmlwdHMvd2lkZV91cGRhdGUuc3FsYCAt LSBkcml2ZXIgc2NyaXB0IGZvciB0aGUgd2lkZS10YWJsZSB3b3JrbG9hZDsKKyAgdGhlIGBT RVRgIGNsYXVzZSBpcyBidWlsdCBhdCBydW4gdGltZSBmcm9tIGAkV0lERV9TVEVQU2AuCisK KyMjIFJ1bm5pbmcKKworYGBgCisjIEJ1aWxkIGJvdGggdmFyaWFudHMgKHJ1biBvbmNlIHBl ciBiZW5jaG1hcmsgaG9zdCkKK1JFUE89JEhPTUUvd3MvcG9zdGdyZXMvdGVwaWQgQkVOQ0g9 L3NjcmF0Y2gvdGVwaWQtYmVuY2ggXAorICAuL3NjcmlwdHMvYnVpbGQuc2gKKworIyBTdGFu ZGFyZCBBL0IKK1NDQUxFPTIwIENMSUVOVFM9MTYgVEhSRUFEUz04IERVUkFUSU9OPTEyMCBc CisgIFdJREVfQ09MUz0xNiBXSURFX1NURVBTPTAsMSwyLDQsOCwxNiBcCisgIC4vc2NyaXB0 cy9ydW4uc2gKKworIyBTb2FrCitTQ0FMRT01MCBDTElFTlRTPTE2IFRIUkVBRFM9OCBEVVJB VElPTj05MDAgU0FNUExFPTYwIFwKKyAgLi9zY3JpcHRzL3NvYWsuc2gKKworIyBCbG9hdCBw cm9iZSAoc2luZ2xlIHZhcmlhbnQ7IGRlZmF1bHRzIHRvIHRoZSB0ZXBpZCBidWlsZCkKK0JF TkNIPS9zY3JhdGNoL3RlcGlkLWJlbmNoIFJPV1M9NTAwMCBDWUNMRVM9OCBVUERBVEVTPTIw IFwKKyAgLi9zY3JpcHRzL2Jsb2F0LnNoCitgYGAKKworIyMgRW52IHZhcnMKKworYGBgCitS RVBPICAgICAgICAgcGF0aCB0byBwb3N0Z3JlcyBzb3VyY2UgKGhhcyAuZ2l0KQorQkVOQ0gg ICAgICAgIGJlbmNoIHJvb3QgKGluc3RhbGwgcHJlZml4ZXMsIGJ1aWxkIHRyZWVzLCByZXN1 bHRzKQorU0NBTEUgICAgICAgIHBnYmVuY2ggLXMgKGFsc28gZHJpdmVzIHNpdV90YWJsZSBy b3cgY291bnQgPSBTQ0FMRSoxMDBrKQorQ0xJRU5UUyAgICAgIHBnYmVuY2ggLWMKK1RIUkVB RFMgICAgICBwZ2JlbmNoIC1qCitEVVJBVElPTiAgICAgc2Vjb25kcyBwZXIgd29ya2xvYWQK K1dJREVfQ09MUyAgICBudW1iZXIgb2YgaW5kZXhlZCBpbnQgY29sdW1ucyBpbiB3aWRlX3Rh YmxlIChkZWZhdWx0IDE2KQorV0lERV9TVEVQUyAgIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9m IGNvbHVtbnMtbW9kaWZpZWQgdmFsdWVzIHRvIGV4ZXJjaXNlCisgICAgICAgICAgICAgKGRl ZmF1bHQgMCwxLDQsOCwxNikKK1BPUlQgICAgICAgICBwb3N0Z3JlcyBwb3J0IGZvciB0aGUg YmVuY2ggc2VydmVycworU0hBUkVEX0JVRkZFUlMgIHBvc3RncmVzcWwuY29uZiBzZXR0aW5n IChkZWZhdWx0IDUxMk1CKQorTUFTVEVSX1JFViAgIHJldmlzaW9uIGZvciB0aGUgbWFzdGVy IHZhcmlhbnQgKGRlZmF1bHQ6IHRlcGlkJ3MgbWVyZ2UtYmFzZQorICAgICAgICAgICAgIHdp dGggb3JpZ2luL21hc3RlcikKK1RFUElEX1JFViAgICByZXZpc2lvbiBmb3IgdGhlIHRlcGlk IHZhcmlhbnQgKGRlZmF1bHQ6IHRlcGlkKQorCitibG9hdC5zaCBvbmx5OgorQklORElSICAg ICAgIHBvc3RncmVzIGJpbiBkaXIgdG8gdGVzdCAoZGVmYXVsdDogdGVwaWQgdmFyaWFudCB1 bmRlciAkQkVOQ0gpCitST1dTICAgICAgICAgc2VlZGVkIHJvd3MgKGRlZmF1bHQgNTAwMCkK K0NZQ0xFUyAgICAgICB1cGRhdGUrdmFjdXVtIGN5Y2xlcyAoZGVmYXVsdCA4KQorVVBEQVRF UyAgICAgIHVwZGF0ZXMgcGVyIHJvdyBwZXIgY3ljbGUgKGRlZmF1bHQgMjApCitgYGAKKwor VGhlIHNjcmlwdHMgYXJlIHBvcnRhYmxlIGJldHdlZW4gTGludXggYW5kIEZyZWVCU0Q7IHRo ZSBDUFUvUlNTIHNhbXBsZXIKK3VzZXMgYHBzIC1vIHBjcHU9LHJzcz0gLS1wcGlkIExFQURF UiAtcCBMRUFERVJgIChMaW51eCkgb3IgYHBncmVwIC1QYCArCitwZXItcGlkIGBwc2AgKEZy ZWVCU0QpIC0tIHBlYWsgdmFsdWVzIGFyZSBhcHByb3hpbWF0ZS4KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvYml0MTRfYWIuc2ggYi9zcmMvdGVzdC9i ZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2JpdDE0X2FiLnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5iZjk3ZjkzYzVkZgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvYml0MTRfYWIuc2gKQEAgLTAsMCArMSwx MTggQEAKKyMhL3Vzci9iaW4vZW52IGJhc2gKKyMgYml0MTRfYWIuc2ggLS0gQS9CIHBnYmVu Y2ggaGFybmVzcyBmb3IgdGhlIEl0ZW1Qb2ludGVyU0lVTWF5YmVTdGFsZUZsYWcKKyMgKCJi aXQxNCIpIGZpeCBzcGVjaWZpY2FsbHkuICBVc2VzIHRoZSBzYW1lIHR3byB2YXJpYW50cyBi dWlsZC5zaCBhbHJlYWR5CisjIHByb2R1Y2VkIHVuZGVyICRCRU5DSC97bWFzdGVyLHRlcGlk fTogIm1hc3RlciIgPSBiaXQxNCBSRVZFUlRFRCAodGVwaWQtCisjIGJpdDE0LW9mZiksICJ0 ZXBpZCIgPSBiaXQxNCBwcmVzZW50ICh0ZXBpZC1iaXQxNC1vbikuICBCb3RoIG90aGVyd2lz ZQorIyBpZGVudGljYWwgLS0gdGhpcyBpc29sYXRlcyBleGFjdGx5IHRoZSBmaXgncyBjb3N0 L2JlbmVmaXQsIG5vdCB0aGUgU0lVCisjIGZlYXR1cmUncyBvd24gd2luICh0aGF0J3Mgd2hh dCBydW4uc2gncyBvdGhlciB3b3JrbG9hZHMgYWxyZWFkeSBjb3ZlcikuCisjCisjIFJ1bnMg Yml0bWFwX2FuZF9taXhlZC5zcWwgKDgwJSBCaXRtYXBBbmQgcmVhZHMgYWNyb3NzIHR3byB1 bnRvdWNoZWQKKyMgaW5kZXhlcywgMjAlIEhPVC1pbmRleGVkIHVwZGF0ZXMgb24gYSB0aGly ZCBpbmRleCBvbiB0aGUgc2FtZSB0YWJsZS9wYWdlcykKKyMgQS9CIGFsdGVybmF0aW5nLCBO IGl0ZXJhdGlvbnMgZWFjaCwgd3JpdGluZyByYXcgcGVyLWl0ZXJhdGlvbiBUUFMgKyBsYXRl bmN5CisjIHJvd3MgdG8gYSBDU1YgKGNvbXB1dGUgdGhlIG1lZGlhbiBkb3duc3RyZWFtIGZy b20gdGhlIGNvbGxlY3RlZCByb3dzKS4KK3NldCAtZXVvIHBpcGVmYWlsCisKK0JFTkNIPSR7 QkVOQ0g6LS9zY3JhdGNoL3NpdS1iZW5jaH0KK1NDQUxFPSR7U0NBTEU6LTEwfQorQ0xJRU5U Uz0ke0NMSUVOVFM6LTE2fQorVEhSRUFEUz0ke1RIUkVBRFM6LTh9CitEVVJBVElPTj0ke0RV UkFUSU9OOi02MH0KK0lURVJBVElPTlM9JHtJVEVSQVRJT05TOi01fQorUE9SVD0ke1BPUlQ6 LTU3NDgxfQorU0hBUkVEX0JVRkZFUlM9JHtTSEFSRURfQlVGRkVSUzotNEdCfQorCitUUz0k KGRhdGUgLXUgKyVZJW0lZFQlSCVNJVNaKQorT1VUPSRCRU5DSC9yZXN1bHRzL2JpdDE0XyRU Uy5jc3YKK0xPR0RJUj0kQkVOQ0gvbG9ncy9iaXQxNF8kVFMKK21rZGlyIC1wICIkTE9HRElS IiAiJEJFTkNIL3Jlc3VsdHMiCitlY2hvICJpdGVyYXRpb24sdmFyaWFudCx0cHMsbGF0ZW5j eV9hdmdfbXMiID4gIiRPVVQiCitlY2hvICI9PT0gYml0MTQgQS9CIHJ1biAkVFMgLT4gJE9V VCAoc2NhbGU9JFNDQUxFIGNsaWVudHM9JENMSUVOVFMgdGhyZWFkcz0kVEhSRUFEUyBkdXJh dGlvbj0ke0RVUkFUSU9OfXMgaXRlcmF0aW9ucz0kSVRFUkFUSU9OUykiCisKK2Jpbl9vZigp IHsgZWNobyAiJEJFTkNILyQxL3Vzci9sb2NhbC9wZ3NxbC9iaW4iOyB9CitMRF9vZigpIHsK KyAgbG9jYWwgYmFzZT0kQkVOQ0gvJDEvdXNyL2xvY2FsL3Bnc3FsCisgIGlmIFsgLWQgIiRi YXNlL2xpYjY0IiBdOyB0aGVuIGVjaG8gIiRiYXNlL2xpYjY0IjsgZWxzZSBlY2hvICIkYmFz ZS9saWIiOyBmaQorfQorcHNxbF9hcygpIHsKKyAgbG9jYWwgdj0kMTsgc2hpZnQKKyAgTERf TElCUkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcHNxbCIgLWgg L3RtcCAtcCAiJFBPUlQiIC1VIHBvc3RncmVzIC1YICIkQCIKK30KK3BnYmVuY2hfYXMoKSB7 CisgIGxvY2FsIHY9JDE7IHNoaWZ0CisgIExEX0xJQlJBUllfUEFUSD0iJChMRF9vZiAiJHYi KSIgIiQoYmluX29mICIkdiIpL3BnYmVuY2giIC1oIC90bXAgLXAgIiRQT1JUIiAtVSBwb3N0 Z3JlcyAiJEAiCit9CisKK3N0YXJ0X3BnKCkgeworICBsb2NhbCB2PSQxCisgIGxvY2FsIGRh dGFkaXI9JEJFTkNIL19kYXRhX2JpdDE0XyR2CisgIHJtIC1yZiAiJGRhdGFkaXIiCisgIG1r ZGlyIC1wICIkZGF0YWRpciIKKyAgTERfTElCUkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAi JChiaW5fb2YgIiR2IikvaW5pdGRiIiAtRCAiJGRhdGFkaXIiIC1VIHBvc3RncmVzID4iJExP R0RJUi9pbml0ZGJfJHYubG9nIiAyPiYxCisgIGNhdCA+PiAiJGRhdGFkaXIvcG9zdGdyZXNx bC5jb25mIiA8PEVPRgorc2hhcmVkX2J1ZmZlcnMgPSAkU0hBUkVEX0JVRkZFUlMKK3dvcmtf bWVtID0gMzJNQgorbWF4X3dhbF9zaXplID0gNEdCCitzeW5jaHJvbm91c19jb21taXQgPSBv bgorY2hlY2twb2ludF90aW1lb3V0ID0gMTBtaW4KK3dhbF9sZXZlbCA9IHJlcGxpY2EKK2xv Z2dpbmdfY29sbGVjdG9yID0gb2ZmCitwb3J0ID0gJFBPUlQKK0VPRgorICBMRF9MSUJSQVJZ X1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9wZ19jdGwiIC1EICIkZGF0 YWRpciIgXAorICAgIC1vICItcCAkUE9SVCIgLWwgIiRMT0dESVIvcGdfJHYubG9nIiBzdGFy dCA+L2Rldi9udWxsCisgIHNsZWVwIDIKK30KKworc3RvcF9wZygpIHsKKyAgbG9jYWwgdj0k MQorICBsb2NhbCBkYXRhZGlyPSRCRU5DSC9fZGF0YV9iaXQxNF8kdgorICBMRF9MSUJSQVJZ X1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9wZ19jdGwiIC1EICIkZGF0 YWRpciIgc3RvcCAtbSBmYXN0ID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCit9CisKK3NlZWQo KSB7CisgIGxvY2FsIHY9JDEKKyAgbG9jYWwgcm93cz0kKChTQ0FMRSAqIDEwMDAwMCkpCisg IHBzcWxfYXMgIiR2IiA8PFNRTAorRFJPUCBUQUJMRSBJRiBFWElTVFMgc2l1X3RhYmxlOwor Q1JFQVRFIFRBQkxFIHNpdV90YWJsZShhIGludCBQUklNQVJZIEtFWSwgYiBpbnQsIGMgaW50 LCBkIGludCwgZSB0ZXh0KTsKK0NSRUFURSBJTkRFWCBzaXVfYiBPTiBzaXVfdGFibGUoYik7 CitDUkVBVEUgSU5ERVggc2l1X2MgT04gc2l1X3RhYmxlKGMpOworQ1JFQVRFIElOREVYIHNp dV9kIE9OIHNpdV90YWJsZShkKTsKK0lOU0VSVCBJTlRPIHNpdV90YWJsZQorICBTRUxFQ1Qg aSwgaSwgaSwgaSwgcmVwZWF0KCd4JywgMjApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsICRy b3dzKSBBUyBpOworVkFDVVVNIChGVUxMLCBBTkFMWVpFKSBzaXVfdGFibGU7CitDSEVDS1BP SU5UOworU1FMCit9CisKK3J1bl9pdGVyKCkgeworICBsb2NhbCBpdGVyPSQxIHY9JDIKKyAg c3RvcF9wZyAiJHYiIHx8IHRydWUKKyAgc3RhcnRfcGcgIiR2IgorICBzZWVkICIkdiIKKyAg bG9jYWwgbG9nPSIkTE9HRElSL3BnYmVuY2hfJHt2fV9pdGVyJHtpdGVyfS5sb2ciCisgIHBn YmVuY2hfYXMgIiR2IiAtbiAtZiAiJEJFTkNIL3NjcmlwdHMvYml0bWFwX2FuZF9taXhlZC5z cWwiIFwKKyAgICAtYyAiJENMSUVOVFMiIC1qICIkVEhSRUFEUyIgLVQgIiREVVJBVElPTiIg LU0gcHJlcGFyZWQgXAorICAgIC1EIHNjYWxlPSIkU0NBTEUiIHBvc3RncmVzID4iJGxvZyIg Mj4mMSB8fCBlY2hvICIgIGl0ZXIgJGl0ZXIgJHY6IHBnYmVuY2ggZXhpdGVkIG5vbnplcm8s IHNlZSAkbG9nIiA+JjIKKyAgbG9jYWwgdHBzIGxhdAorICB0cHM9JChncmVwIC1vUCAndHBz ID0gXEtbMC05Ll0rJyAiJGxvZyIgfCB0YWlsIC0xKQorICBsYXQ9JChncmVwIC1vUCAnbGF0 ZW5jeSBhdmVyYWdlID0gXEtbMC05Ll0rJyAiJGxvZyIgfCB0YWlsIC0xKQorICBpZiBbIC16 ICIkdHBzIiBdIHx8IFsgLXogIiRsYXQiIF07IHRoZW4KKyAgICAjIERvIG5vdCB3cml0ZSBh IHBhcnRpYWwvZmFpbGVkIGl0ZXJhdGlvbiBpbnRvIHRoZSByZXN1bHQgc2V0OiBhbiBOQSBy b3cKKyAgICAjIHdvdWxkIHNpbGVudGx5IHBvbGx1dGUgdGhlIEEvQiBjb21wYXJpc29uLiAg Q291bnQgYW5kIHJlcG9ydCBpdCBpbnN0ZWFkLgorICAgIGVjaG8gIiAgaXRlciAkaXRlciAg JHYgIEZBSUxFRCAobm8gdHBzL2xhdCBpbiAkbG9nKTsgc2tpcHBpbmcgQ1NWIHJvdyIgPiYy CisgICAgc3RvcF9wZyAiJHYiCisgICAgcmV0dXJuCisgIGZpCisgIGVjaG8gIiRpdGVyLCR2 LCR0cHMsJGxhdCIgPj4gIiRPVVQiCisgIGVjaG8gIiAgaXRlciAkaXRlciAgJHYgIHRwcz0k dHBzICBsYXQ9JHtsYXR9bXMiCisgIHN0b3BfcGcgIiR2IgorfQorCisjIEEvQiBhbHRlcm5h dGUsIG5vdCBiYXRjaGVkLCB0byBjYW5jZWwgZHJpZnQuCitmb3IgaSBpbiAkKHNlcSAxICIk SVRFUkFUSU9OUyIpOyBkbworICBydW5faXRlciAiJGkiIG1hc3RlciAgICMgYml0MTQtb2Zm CisgIHJ1bl9pdGVyICIkaSIgdGVwaWQgICAgIyBiaXQxNC1vbgorZG9uZQorCitlY2hvICI9 PT0gZG9uZSAtPiAkT1VUIgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUv c2NyaXB0cy9iaXRtYXBfYW5kX21peGVkLnNxbCBiL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1 L3NjcmlwdHMvYml0bWFwX2FuZF9taXhlZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjkzYTBlOTI3NzI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9iaXRtYXBfYW5kX21peGVkLnNxbApAQCAtMCww ICsxLDI1IEBACistLSBiaXRtYXBfYW5kX21peGVkOiBxdWFudGlmaWVzIHRoZSBjb3N0IG9m IHRoZSBiaXQxNCBTSVUgbWF5LWJlLXN0YWxlIGZpeAorLS0gKHNlZSBzdG9yYWdlL2l0ZW1w dHIuaCkgc3BlY2lmaWNhbGx5IC0tIG5vdCB0aGUgU0lVIHdyaXRlLXBhdGggd2luIHRoZQor LS0gb3RoZXIgd29ya2xvYWRzIG1lYXN1cmUuCistLQorLS0gODAlIG9mIHRyYW5zYWN0aW9u cyBmb3JjZSBhIEJpdG1hcEFuZCBhY3Jvc3Mgc2l1X2IgYW5kIHNpdV9kIChib3RoIG5ldmVy CistLSB1cGRhdGVkIGJ5IHRoaXMgd29ya2xvYWQpIHdpdGggYSB3aWRlLWVub3VnaCBwcmVk aWNhdGUgcmFuZ2UgdG8gbWFrZSB0aGUKKy0tIHBsYW5uZXIgcGljayBhIGJpdG1hcCBwbGFu IG92ZXIgYSBwbGFpbiBpbmRleCBzY2FuLiAgMjAlIG9mIHRyYW5zYWN0aW9ucworLS0gSE9U LWluZGV4ZWQtdXBkYXRlIGNvbHVtbiBjIChhIHRoaXJkLCBzZXBhcmF0ZWx5LWluZGV4ZWQg Y29sdW1uKSwgd2hpY2ggaXMKKy0tIHdoYXQgcGxhbnRzIGEgbWF5LWJlLXN0YWxlLWZsYWdn ZWQgZnJlc2ggZW50cnkgaW4gc2l1X2MuICBzaXVfYyBpcyBub3QKKy0tIHBhcnQgb2YgdGhl IEJpdG1hcEFuZCBwcmVkaWNhdGUgaGVyZSBvbiBwdXJwb3NlOiB0aGUgYml0MTQgZml4J3Mg Y29zdAorLS0gc2hvd3MgdXAgaW4gd2hldGhlciBmbGFnZ2VkIHBhZ2VzIGVsc2V3aGVyZSBv biB0aGUgU0FNRSBoZWFwIHBhZ2UgYXMgYW4KKy0tIHVwZGF0ZSBhbHNvIGxvc2UgZXhhY3Qt bW9kZSBwcmVjaXNpb24gb24gT1RIRVIgaW5kZXhlcycgYml0bWFwCistLSBjb250cmlidXRp b25zIGZvciB1bnJlbGF0ZWQgcm93cyBzaGFyaW5nIHRoYXQgcGFnZSwgd2hpY2ggaXMgZXhh Y3RseSB3aGF0CistLSByZXNldF9zdGF0ZSdzIGZyZXNobHktY2x1c3RlcmVkIGxheW91dCAo YSBhbmQgYiBib3RoIGluY3JlYXNpbmcgd2l0aCByb3cKKy0tIG9yZGVyKSBwdXRzIG11bHRp cGxlIHJvd3MgcGVyIGhlYXAgcGFnZSB1bmRlci4KK1xzZXQgYWlkIHJhbmRvbSgxLCA6c2Nh bGUgKiAxMDAwMDApCitcc2V0IGNpZCByYW5kb20oMSwgOnNjYWxlICogMTAwMDAwKQorXHNl dCBsbyByYW5kb20oMSwgOnNjYWxlICogMTAwMDAwIC0gMTAwMCkKK1xzZXQgaGlfb2ZmIHJh bmRvbSgxLCAxMDAwKQorXHNldCB3aGljaCByYW5kb20oMSwgMTAwKQorXGlmIDp3aGljaCA+ IDgwCisgIFVQREFURSBzaXVfdGFibGUgU0VUIGMgPSA6Y2lkIFdIRVJFIGEgPSA6YWlkOwor XGVsc2UKKyAgU0VMRUNUIGNvdW50KCopIEZST00gc2l1X3RhYmxlIFdIRVJFIGIgQkVUV0VF TiA6bG86OmludCBBTkQgOmxvOjppbnQgKyA6aGlfb2ZmOjppbnQgQU5EIGQgQkVUV0VFTiA6 bG86OmludCBBTkQgOmxvOjppbnQgKyA6aGlfb2ZmOjppbnQ7CitcZW5kaWYKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvYmxvYXQuc2ggYi9zcmMvdGVz dC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2Jsb2F0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1 CmluZGV4IDAwMDAwMDAwMDAwLi4zNDE3MWM2OGY1YgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvYmxvYXQuc2gKQEAgLTAsMCArMSw4NCBA QAorIyEvdXNyL2Jpbi9lbnYgYmFzaAorIyBTaW5nbGUtdmFyaWFudCBibG9hdCBiZW5jaG1h cmsgZm9yIEhPVC1pbmRleGVkIChTSVUpIHVwZGF0ZXMuCisjCisjIFRoZSBBL0IgcnVuLnNo IG1lYXN1cmVzIFRQUy9XQUwvYWdncmVnYXRlIHNpemU7IGl0IGRvZXMgbm90IGlzb2xhdGUg dHdvCisjIGJsb2F0IHByb3BlcnRpZXMgb2YgdGhlIEhPVC1pbmRleGVkIHBhdGgsIHdoaWNo IHRoaXMgc2NyaXB0IGRlbW9uc3RyYXRlczoKKyMKKyMgICAxLiBTdGFsZSBpbmRleCBlbnRy aWVzIG9uIHRoZSBDSEFOR0VEIGluZGV4IGFjY3VtdWxhdGUgYmV0d2VlbiB2YWN1dW1zLAor IyAgICAgIGJ1dCBWQUNVVU0gcmVjbGFpbXMgdGhlbSwgc28gc2l6ZSBzdGF5cyBib3VuZGVk IGFjcm9zcyB1cGRhdGUrdmFjdXVtCisjICAgICAgY3ljbGVzLiAgU2tpcHBpbmcgdmFjdXVt IGxldHMgdGhlbSBncm93IHVuYm91bmRlZCAodGhlIGluaGVyZW50CisjICAgICAgaW50ZXIt dmFjdXVtIGJsb2F0OyByZWFkLWZpbHRlcmVkIGJ5IHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBi aXRtYXAgbWVhbndoaWxlKS4KKyMgICAyLiBBbiBpbmRleCBvbiBhbiBVTkNIQU5HRUQgY29s dW1uIGlzIHNraXBwZWQgYnkgSE9ULWluZGV4ZWQgdXBkYXRlcyAodGhlCisjICAgICAgc2Vs ZWN0aXZlLXVwZGF0ZSBiZW5lZml0KSAtLSB2aXNpYmxlIGFzIGEgc2tpcCBjb3VudC4gIFVw ZGF0ZXMgdGhhdCBmYWxsCisjICAgICAgYmFjayB0byBub24tSE9UIChlLmcuIHdoZW4gdGhl IHBhZ2UgaGFzIG5vIHJvb20gZm9yIHRoZSBjaGFpbikgc3RpbGwKKyMgICAgICBpbnNlcnQg aW50byBpdCwgc28gaXRzIHNpemUgcmVmbGVjdHMgb25seSB0aGUgbm9uLUhPVCByZW1haW5k ZXIuCisjCisjIFVzZXMgdGhlIHRlcGlkIHZhcmlhbnQgYnVpbHQgYnkgYnVpbGQuc2ggKG92 ZXJyaWRlIEJJTkRJUiBmb3IgYW55IGJ1aWxkKSBhbmQKKyMgYSB0aHJvd2F3YXkgY2x1c3Rl ciB1bmRlciAkQkVOQ0gsIHNvIGl0IG5ldmVyIHRvdWNoZXMgdGhlIEEvQiBwZ2RhdGEuCisj CisjIEVudjogQkVOQ0ggKGRlZmF1bHQgL3NjcmF0Y2gvc2l1LWJlbmNoKSwgQklORElSIChk ZWZhdWx0IHRlcGlkIHZhcmlhbnQgYmluKSwKKyMgICAgICBQT1JUIChkZWZhdWx0IDU3NDgx KSwgUk9XUyAoZGVmYXVsdCA1MDAwKSwgQ1lDTEVTIChkZWZhdWx0IDgpLAorIyAgICAgIFVQ REFURVMgKHVwZGF0ZXMgcGVyIHJvdyBwZXIgY3ljbGUsIGRlZmF1bHQgMjApLgorc2V0IC1l dW8gcGlwZWZhaWwKKworQkVOQ0g9JHtCRU5DSDotL3NjcmF0Y2gvc2l1LWJlbmNofQorQklO RElSPSR7QklORElSOi0kQkVOQ0gvdGVwaWQvdXNyL2xvY2FsL3Bnc3FsL2Jpbn0KK1BPUlQ9 JHtQT1JUOi01NzQ4MX0KK1JPV1M9JHtST1dTOi01MDAwfQorQ1lDTEVTPSR7Q1lDTEVTOi04 fQorVVBEQVRFUz0ke1VQREFURVM6LTIwfQorREFUQURJUj0kQkVOQ0gvX2RhdGFfYmxvYXQK KworYmFzZT0kKGRpcm5hbWUgIiRCSU5ESVIiKQoraWYgWyAtZCAiJGJhc2UvbGliNjQiIF07 IHRoZW4KKyAgZXhwb3J0IExEX0xJQlJBUllfUEFUSD0iJGJhc2UvbGliNjQke0xEX0xJQlJB UllfUEFUSDorOiRMRF9MSUJSQVJZX1BBVEh9IgorZWxzZQorICBleHBvcnQgTERfTElCUkFS WV9QQVRIPSIkYmFzZS9saWIke0xEX0xJQlJBUllfUEFUSDorOiRMRF9MSUJSQVJZX1BBVEh9 IgorZmkKKworUFNRTD0oIiRCSU5ESVIvcHNxbCIgLWggL3RtcCAtcCAiJFBPUlQiIC1VIHBv c3RncmVzIC1YIC1xKQorUCgpIHsgIiR7UFNRTFtAXX0iIC1BdCAiJEAiOyB9CisKKyIkQklO RElSL3BnX2N0bCIgLUQgIiREQVRBRElSIiBzdG9wIC1tIGZhc3QgPi9kZXYvbnVsbCAyPiYx IHx8IHRydWUKK3JtIC1yZiAiJERBVEFESVIiCisiJEJJTkRJUi9pbml0ZGIiIC1EICIkREFU QURJUiIgLVUgcG9zdGdyZXMgLS1uby1zeW5jID4vZGV2L251bGwKK2NhdCA+PiAiJERBVEFE SVIvcG9zdGdyZXNxbC5jb25mIiA8PEVPRgorcG9ydCA9ICRQT1JUCithdXRvdmFjdXVtID0g b2ZmCitmc3luYyA9IG9mZgorRU9GCisiJEJJTkRJUi9wZ19jdGwiIC1EICIkREFUQURJUiIg LW8gIi1wICRQT1JUIiAtbCAiJEJFTkNIL19ibG9hdC5sb2ciIC13IHN0YXJ0ID4vZGV2L251 bGwKK3RyYXAgJyIkQklORElSL3BnX2N0bCIgLUQgIiREQVRBRElSIiBzdG9wIC1tIGZhc3Qg Pi9kZXYvbnVsbCAyPiYxIHx8IHRydWUnIEVYSVQKKyIke1BTUUxbQF19IiAtYyAiQ1JFQVRF IEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHBnc3RhdHR1cGxlOyIgPi9kZXYvbnVsbAorCisj ICQxID0gdGFibGUgbmFtZSwgJDIgPSB2YWN1dW1fZWFjaCAoMS8wKS4gIFJldHVybnMgZmlu YWwgaWR4X2EgY29tcG9zaXRpb24uCitydW5fYXJtKCkgeworICBsb2NhbCB0Ymw9JDEgdmFj PSQyCisgICIke1BTUUxbQF19IiA8PFNRTCA+L2Rldi9udWxsCitEUk9QIFRBQkxFIElGIEVY SVNUUyAkdGJsOworQ1JFQVRFIFRBQkxFICR0YmwgKGlkIGludCBQUklNQVJZIEtFWSwgYSBp bnQsIGIgaW50LCBwYWQgdGV4dCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJ TkRFWCAke3RibH1fYSBPTiAkdGJsKGEpOyAgIC0tIGNoYW5nZWQgY29sdW1uCitDUkVBVEUg SU5ERVggJHt0Ymx9X2IgT04gJHRibChiKTsgICAtLSBuZXZlciBjaGFuZ2VkCitJTlNFUlQg SU5UTyAkdGJsIFNFTEVDVCBnLCBnLCBnLCByZXBlYXQoJ3gnLCA0MCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgJFJPV1MpIGc7CitWQUNVVU0gKEZSRUVaRSwgQU5BTFlaRSkgJHRibDsK K1NRTAorICBsb2NhbCBjeWMKKyAgZm9yICgoY3ljID0gMTsgY3ljIDw9IENZQ0xFUzsgY3lj KyspKTsgZG8KKyAgICAiJHtQU1FMW0BdfSIgLWMgIkRPIFwkXCQgQkVHSU4gRk9SIHUgSU4g MS4uJFVQREFURVMgTE9PUCBVUERBVEUgJHRibCBTRVQgYSA9IGEgKyAxOyBFTkQgTE9PUDsg RU5EIFwkXCQ7IiA+L2Rldi9udWxsCisgICAgWyAiJHZhYyIgPSAxIF0gJiYgIiR7UFNRTFtA XX0iIC1jICJWQUNVVU0gJHRibDsiID4vZGV2L251bGwKKyAgZG9uZQorICBQIC1jICJTRUxF Q1QgJyR0YmwodmFjdXVtX2VhY2g9JHZhYyk6JworICAgICAgICB8fCAnIGlkeF9hX2tiPScg fHwgcGdfcmVsYXRpb25fc2l6ZSgnJHt0Ymx9X2EnKS8xMDI0CisgICAgICAgIHx8ICcgaWR4 X2FfbGl2ZT0nIHx8IChTRUxFQ1QgdHVwbGVfY291bnQgRlJPTSBwZ3N0YXR0dXBsZSgnJHt0 Ymx9X2EnKSkKKyAgICAgICAgfHwgJyBpZHhfYV9mcmVlJT0nIHx8IHJvdW5kKChTRUxFQ1Qg ZnJlZV9wZXJjZW50IEZST00gcGdzdGF0dHVwbGUoJyR7dGJsfV9hJykpOjpudW1lcmljLDEp CisgICAgICAgIHx8ICcgaWR4X2Jfa2I9JyB8fCBwZ19yZWxhdGlvbl9zaXplKCcke3RibH1f YicpLzEwMjQKKyAgICAgICAgfHwgJyBpZHhfYl9za2lwcz0nIHx8IGNvYWxlc2NlKChTRUxF Q1Qgbl90dXBfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMgV0hFUkUgaW5k ZXhyZWxuYW1lPScke3RibH1fYicpLCAwKTsiCit9CisKK2VjaG8gIj09PSBIT1QtaW5kZXhl ZCBibG9hdDogJENZQ0xFUyBjeWNsZXMgeCAoJFVQREFURVMgdXBkYXRlcy9yb3cgeCAkUk9X UyByb3dzKSA9PT0iCitydW5fYXJtIHRfdmFjIDEKK3J1bl9hcm0gdF9ub3ZhYyAwCitlY2hv ICJpZHhfYTogYm91bmRlZCB3aXRoIHZhY3V1bV9lYWNoPTEsIHVuYm91bmRlZCB3aXRoID0w IChzdGFsZSBlbnRyaWVzIGFjY3VtdWxhdGUiCitlY2hvICJ1bnRpbCByZWNsYWltZWQpLiAg aWR4X2Jfc2tpcHMgY291bnRzIGVudHJpZXMgdGhlIEhPVC1pbmRleGVkIHBhdGggYXZvaWRl ZCBvbiIKK2VjaG8gInRoZSB1bmNoYW5nZWQgaW5kZXg7IGlkeF9iX2tiIGlzIG9ubHkgdGhl IG5vbi1IT1QtZmFsbGJhY2sgcmVtYWluZGVyLiIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2Jl bmNobWFya3Mvc2l1L3NjcmlwdHMvYnVpbGQuc2ggYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3Np dS9zY3JpcHRzL2J1aWxkLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw MDAwLi4yYmQwZTllYjYzZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2JlbmNobWFy a3Mvc2l1L3NjcmlwdHMvYnVpbGQuc2gKQEAgLTAsMCArMSw1NSBAQAorIyEvdXNyL2Jpbi9l bnYgYmFzaAorIyBCdWlsZCB0d28gcG9zdGdyZXMgdmFyaWFudHMgZm9yIHRlcGlkIChIT1Qt aW5kZXhlZCkgQS9CIGJlbmNobWFya3MuCisjCisjIEVudiB2YXJzIChhbGwgb3B0aW9uYWwp OgorIyAgIFJFUE8gICAgICAgICAgLS0gcGF0aCB0byBwb3N0Z3JlcyBzb3VyY2UgcmVwbyAo ZGVmYXVsdDogJEhPTUUvd3MvcG9zdGdyZXMvdGVwaWQsIG9yIC9zY3JhdGNoL3NpdS1iZW5j aC9yZXBvKQorIyAgIEJFTkNIICAgICAgICAgLS0gYmVuY2ggcm9vdCAoZGVmYXVsdDogL3Nj cmF0Y2gvc2l1LWJlbmNoKQorIyAgIE1BU1RFUl9SRVYgICAgLS0gcmV2aXNpb24gZm9yIHRo ZSAibWFzdGVyIiB2YXJpYW50IChkZWZhdWx0OiB0ZXBpZCdzIG1lcmdlLWJhc2Ugd2l0aCBv cmlnaW4vbWFzdGVyKQorIyAgIFRFUElEX1JFViAgICAgLS0gcmV2aXNpb24gZm9yIHRoZSAi dGVwaWQiICB2YXJpYW50IChkZWZhdWx0OiB0ZXBpZCkKKyMgICBKT0JTICAgICAgICAgIC0t IHBhcmFsbGVsIGNvbXBpbGUgam9icyAoZGVmYXVsdDogbnByb2Mgb3IgOCkKK3NldCAtZXVv IHBpcGVmYWlsCisKK0JFTkNIPSR7QkVOQ0g6LS9zY3JhdGNoL3NpdS1iZW5jaH0KK0pPQlM9 JHtKT0JTOi0kKCAoY29tbWFuZCAtdiBucHJvYyA+L2Rldi9udWxsICYmIG5wcm9jKSB8fCBz eXNjdGwgLW4gaHcubmNwdSAyPi9kZXYvbnVsbCB8fCBlY2hvIDggKX0KK2lmIFsgLXogIiR7 UkVQTzotfSIgXTsgdGhlbgorICBmb3IgY2FuZGlkYXRlIGluICIkSE9NRS93cy9wb3N0Z3Jl cy90ZXBpZCIgIiRCRU5DSC9yZXBvIiAvc2NyYXRjaC9wZzsgZG8KKyAgICBpZiBbIC1kICIk Y2FuZGlkYXRlLy5naXQiIF07IHRoZW4gUkVQTz0kY2FuZGlkYXRlOyBicmVhazsgZmkKKyAg ZG9uZQorZmkKKzogIiR7UkVQTzo/UkVQTyBub3Qgc2V0IGFuZCBubyBkZWZhdWx0IGZvdW5k fSIKK2NkICIkUkVQTyIKKworVEVQSURfUkVWPSR7VEVQSURfUkVWOi10ZXBpZH0KK01BU1RF Ul9SRVY9JHtNQVNURVJfUkVWOi0kKGdpdCBtZXJnZS1iYXNlICIkVEVQSURfUkVWIiBvcmln aW4vbWFzdGVyIDI+L2Rldi9udWxsIHx8IGdpdCBtZXJnZS1iYXNlICIkVEVQSURfUkVWIiBt YXN0ZXIpfQorCitlY2hvICJSRVBPPSRSRVBPICBNQVNURVI9JE1BU1RFUl9SRVYgIFRFUElE PSRURVBJRF9SRVYgIEpPQlM9JEpPQlMgIEJFTkNIPSRCRU5DSCIKKworZGllKCkgeyBwcmlu dGYgJ2J1aWxkOiAlc1xuJyAiJCoiID4mMjsgZXhpdCAxOyB9CitbIC1uICIkTUFTVEVSX1JF ViIgXSB8fCBkaWUgImNvdWxkIG5vdCByZXNvbHZlIE1BU1RFUl9SRVY7IHNldCBpdCBleHBs aWNpdGx5IG9yIGVuc3VyZSBvcmlnaW4vbWFzdGVyIGV4aXN0cyIKK2lmIGdpdCBzdGF0dXMg LS1wb3JjZWxhaW4gfCBncmVwIC12ICdePz8nIHwgZ3JlcCAtcSAuOyB0aGVuCisgIGRpZSAi cmVwbyBoYXMgdW5zdGFnZWQvdW5jb21taXR0ZWQgY2hhbmdlczsgc3Rhc2ggb3IgY29tbWl0 IGZpcnN0IgorZmkKKworYnVpbGRfdmFyaWFudCgpIHsKKyAgbG9jYWwgbmFtZT0kMQorICBs b2NhbCByZXY9JDIKKyAgbG9jYWwgcHJlZml4PSRCRU5DSC8kbmFtZQorICBlY2hvICI9PT0g YnVpbGRpbmcgJG5hbWUgKCRyZXYpIGludG8gJHByZWZpeCIKKyAgcm0gLXJmICIkcHJlZml4 IgorICBta2RpciAtcCAiJHByZWZpeCIKKyAgZ2l0IGNoZWNrb3V0IC0tcXVpZXQgLS1kZXRh Y2ggIiRyZXYiCisgIGxvY2FsIGJsZD0kQkVOQ0gvX2J1aWxkXyRuYW1lCisgIHJtIC1yZiAi JGJsZCIKKyAgbWVzb24gc2V0dXAgIiRibGQiIC0tcHJlZml4PSIkcHJlZml4L3Vzci9sb2Nh bC9wZ3NxbCIgXAorICAgIC1EYnVpbGR0eXBlPXJlbGVhc2UgLURjYXNzZXJ0PWZhbHNlIFwK KyAgICAiLURleHRyYV92ZXJzaW9uPS1zaXViZW5jaC0kbmFtZSIgPi9kZXYvbnVsbAorICBt ZXNvbiBjb21waWxlIC1DICIkYmxkIiAtaiAiJEpPQlMiCisgIG1lc29uIGluc3RhbGwgLUMg IiRibGQiIC0tZGVzdGRpcj0vID4vZGV2L251bGwKKyAgIiRwcmVmaXgvdXNyL2xvY2FsL3Bn c3FsL2Jpbi9wb3N0Z3JlcyIgLS12ZXJzaW9uCit9CisKK09SSUc9JChnaXQgc3ltYm9saWMt cmVmIC0tcXVpZXQgLS1zaG9ydCBIRUFEIHx8IGdpdCByZXYtcGFyc2UgSEVBRCkKK3RyYXAg J2dpdCBjaGVja291dCAtLXF1aWV0ICIkT1JJRyInIEVYSVQKKworYnVpbGRfdmFyaWFudCBt YXN0ZXIgIiRNQVNURVJfUkVWIgorYnVpbGRfdmFyaWFudCB0ZXBpZCAgIiRURVBJRF9SRVYi CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRl eGVkX21peGVkLnNxbCBiL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvaG90X2lu ZGV4ZWRfbWl4ZWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li4zYWIzMjg5ZGYyNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2JlbmNobWFya3Mv c2l1L3NjcmlwdHMvaG90X2luZGV4ZWRfbWl4ZWQuc3FsCkBAIC0wLDAgKzEsMTEgQEAKKy0t IE1peGVkIHdvcmtsb2FkOiA4MCUgc2VsZWN0cywgMjAlIGluZGV4ZWQtY29sdW1uIHVwZGF0 ZXMuCistLSBFeGVyY2lzZXMgYm90aCB0aGUgaG90LWluZGV4ZWQgd3JpdGVyIGFuZCB0aGUg Y3Jvc3NlZC1hdHRyaWJ1dGUtYml0bWFwIHJlYWRlci4KK1xzZXQgYWlkIHJhbmRvbSgxLCA6 c2NhbGUgKiAxMDAwMDApCitcc2V0IGJpZCByYW5kb20oMSwgMTAwMDAwMCkKK1xzZXQgd2hp Y2ggcmFuZG9tKDEsIDEwMCkKK0JFR0lOOworU0VMRUNUICogRlJPTSBzaXVfdGFibGUgV0hF UkUgYSA9IDphaWQ7CitcaWYgOndoaWNoID4gODAKKyAgVVBEQVRFIHNpdV90YWJsZSBTRVQg YiA9IDpiaWQgV0hFUkUgYSA9IDphaWQ7CitcZW5kaWYKK0NPTU1JVDsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvaG90X2luZGV4ZWRfdXBkYXRlLnNx bCBiL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvaG90X2luZGV4ZWRfdXBkYXRl LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjFiY2Y5NTlj NjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRz L2hvdF9pbmRleGVkX3VwZGF0ZS5zcWwKQEAgLTAsMCArMSw2IEBACistLSBob3QtaW5kZXhl ZC1mcmllbmRseSB3b3JrbG9hZDogbmFycm93IHRhYmxlIHdpdGggYSBmZXcgbm9uLVBLIGlu ZGV4ZXMuCistLSBFYWNoIFVQREFURSBjaGFuZ2VzIGEgbm9uLXN1bW1hcml6aW5nIGluZGV4 ZWQgY29sdW1uIG9uIGEgcmFuZG9tIHJvdy4KKy0tIFdpdGggaG90LWluZGV4ZWQgdGhpcyBp cyBIT1QtaW5kZXhlZDsgd2l0aG91dCBob3QtaW5kZXhlZCBpdCBpcyBub24tSE9ULgorXHNl dCBhaWQgcmFuZG9tKDEsIDpzY2FsZSAqIDEwMDAwMCkKK1xzZXQgbmV3X2IgcmFuZG9tKDEs IDEwMDAwMDApCitVUERBVEUgc2l1X3RhYmxlIFNFVCBiID0gOm5ld19iIFdIRVJFIGEgPSA6 YWlkOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9yZWFk X2luZGV4c2Nhbi5zcWwgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3JlYWRf aW5kZXhzY2FuLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u NDY1Njg5NzYzZWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3Np dS9zY3JpcHRzL3JlYWRfaW5kZXhzY2FuLnNxbApAQCAtMCwwICsxLDExIEBACistLSByZWFk X2luZGV4c2NhbjogcmVhZC1vbmx5IGJ0cmVlIGluZGV4LXNjYW4gd29ya2xvYWQgY29uZmly bWluZyB0aGUKKy0tIEhPVC1pbmRleGVkIHJlYWQgcGF0aCBhZGRzIG5vIHBlci1zY2FuIG92 ZXJoZWFkIG9uIHRhYmxlcyB3aXRoIG5vIHN0YWxlCistLSBlbnRyaWVzLgorLS0gVGhlIGNy b3NzZWQtYXR0cmlidXRlIGJpdG1hcCBkZWNpZGVzIHN0YWxlbmVzcyB3aXRob3V0IGEga2V5 IGNvbXBhcmlzb24gYW5kCistLSB0aGUgc2NhbiBkb2VzIG5vdCByZXF1ZXN0IHRoZSBpbmRl eCB0dXBsZSwgc28gb24gYSBmcmVzaGx5IHJlc2V0IHNpdV90YWJsZQorLS0gKG5vIHN0YWxl IEhPVC1pbmRleGVkIGVudHJpZXMpIHRoZXJlIHNob3VsZCBiZSBubyBtYXN0ZXItdnMtdGVw aWQKKy0tIGRpZmZlcmVuY2Ugb24gdGhpcyBjZWxsLiAgVGhlIHByZWRpY2F0ZSBpcyBhbiBl cXVhbGl0eSBvbiB0aGUKKy0tIGluZGV4ZWQgY29sdW1uIGIgYW5kIHRoZSB0YXJnZXQgbGlz dCBpbmNsdWRlcyB0aGUgbm9uLWluZGV4ZWQgY29sdW1uIGUsCistLSBmb3JjaW5nIGEgcGxh aW4gKGhlYXAtZmV0Y2hpbmcpIGluZGV4IHNjYW4gcmF0aGVyIHRoYW4gYW4gaW5kZXgtb25s eSBzY2FuLgorXHNldCBpZCByYW5kb20oMSwgOnJvd3MpCitTRUxFQ1QgYSwgYiwgYywgZCwg ZSBGUk9NIHNpdV90YWJsZSBXSEVSRSBiID0gOmlkOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv YmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ydW4uc2ggYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3Np dS9zY3JpcHRzL3J1bi5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAw MC4uZTEzMjE5MjZmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9iZW5jaG1hcmtz L3NpdS9zY3JpcHRzL3J1bi5zaApAQCAtMCwwICsxLDM3NyBAQAorIyEvdXNyL2Jpbi9lbnYg YmFzaAorIyBBL0IgcGdiZW5jaCBoYXJuZXNzIGZvciB0ZXBpZDogbWFzdGVyICh1cHN0cmVh bSkgdnMgdGVwaWQgKEhPVC1pbmRleGVkKS4KKyMKKyMgRW52IHZhcnM6CisjICAgU0NBTEUg ICAgICAgLS0gcGdiZW5jaCAtcyAoYWxzbyBtdWx0aXBsaWVyIGZvciBzaXVfdGFibGUgcm93 IGNvdW50ID0gU0NBTEUqMTAwaykKKyMgICBDTElFTlRTICAgICAtLSBwZ2JlbmNoIC1jCisj ICAgVEhSRUFEUyAgICAgLS0gcGdiZW5jaCAtagorIyAgIERVUkFUSU9OICAgIC0tIHBnYmVu Y2ggLVQgKHNlY29uZHMgcGVyIHdvcmtsb2FkKQorIyAgIFdJREVfQ09MUyAgIC0tICMgb2Yg aW5kZXhlZCBjb2x1bW5zIGluIHRoZSB3aWRlX3RhYmxlIChkZWZhdWx0IDE2KQorIyAgIFdJ REVfU1RFUFMgIC0tIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mICJ1cGRhdGVkIGNvbHVtbnMi IGNvdW50cyBmb3IKKyMgICAgICAgICAgICAgICAgIHRoZSB3aWRlIHdvcmtsb2FkIChkZWZh dWx0ICIwLDEsNCw4LFdJREVfQ09MUyIpCisjICAgUE9SVCAgICAgICAgLS0gcG9zdGdyZXMg cG9ydCAoZGVmYXVsdCA1NzQ4MCkKKyMKKyMgRm9yIGVhY2ggdmFyaWFudCBpbiB7bWFzdGVy LCB0ZXBpZH06CisjICAgaW5pdGRiIGZyZXNoIHBnZGF0YSwgc3RhcnQgcG9zdGdyZXMsIGNy ZWF0ZSB0ZXN0IG9iamVjdHMsCisjICAgcnVuIHdvcmtsb2FkcyAocGdiZW5jaCAtTiBzaW1w bGVfdXBkYXRlLCBob3RfaW5kZXhlZF91cGRhdGUsIGhvdF9pbmRleGVkX21peGVkLAorIyAg IHJlYWRfaW5kZXhzY2FuLCBhbmQgd2lkZV9OIGZvciBlYWNoIHZhbHVlIGluIFdJREVfU1RF UFMpLCBjb2xsZWN0IFRQUyArIEhPVAorIyAgIGNvdW50cyArIFdBTCBkZWx0YSArIHBlYWsg Q1BVL1JTUyBzYW1wbGVkIHZpYSBwaWRzdGF0LgorIyBFbWl0cyBDU1YgKyBNYXJrZG93biBz dW1tYXJ5IHVuZGVyIC9zY3JhdGNoL3NpdS1iZW5jaC9yZXN1bHRzLy4KK3NldCAtZXVvIHBp cGVmYWlsCisKK0JFTkNIPSR7QkVOQ0g6LS9zY3JhdGNoL3NpdS1iZW5jaH0KK1NDQUxFPSR7 U0NBTEU6LTIwfQorQ0xJRU5UUz0ke0NMSUVOVFM6LTE2fQorVEhSRUFEUz0ke1RIUkVBRFM6 LTh9CitEVVJBVElPTj0ke0RVUkFUSU9OOi0xMjB9CitXSURFX0NPTFM9JHtXSURFX0NPTFM6 LTE2fQorV0lERV9TVEVQUz0ke1dJREVfU1RFUFM6LTAsMSw0LDgsMTZ9CitQT1JUPSR7UE9S VDotNTc0ODB9CisKK1RTPSQoZGF0ZSAtdSArJVklbSVkVCVIJU0lU1opCitPVVQ9JEJFTkNI L3Jlc3VsdHMvJFRTLmNzdgorTE9HRElSPSRCRU5DSC9sb2dzLyRUUworbWtkaXIgLXAgIiRM T0dESVIiICIkQkVOQ0gvcmVzdWx0cyIKK2VjaG8gInZhcmlhbnQsd29ya2xvYWQsdHBzLGxh dGVuY3lfYXZnX21zLGNsYXNzaWNfaG90X3VwZGF0ZXMsaG90X2luZGV4ZWRfdXBkYXRlcyxu b25faG90X3VwZGF0ZXMsdG90YWxfdXBkYXRlcyx3YWxfYnl0ZXMsYmxvYXRfcGFnZXNfYmVm b3JlLGJsb2F0X3BhZ2VzX2FmdGVyLGluZGV4X3NpemVfYmVmb3JlLGluZGV4X3NpemVfYWZ0 ZXIsY3B1X3BjdF9wZWFrLHJzc19taWJfcGVhayxwZXJfaW5kZXhfYmVmb3JlLHBlcl9pbmRl eF9hZnRlciIgPiAiJE9VVCIKK2VjaG8gIj09PSBzaXUtYmVuY2ggQS9CIHJ1biAkVFMgLT4g JE9VVCAoc2NhbGU9JFNDQUxFIGNsaWVudHM9JENMSUVOVFMgdGhyZWFkcz0kVEhSRUFEUyBk dXJhdGlvbj0ke0RVUkFUSU9OfXMpIgorCitiaW5fb2YoKSB7CisgIGVjaG8gIiRCRU5DSC8k MS91c3IvbG9jYWwvcGdzcWwvYmluIgorfQorCitMRF9vZigpIHsKKyAgbG9jYWwgYmFzZT0k QkVOQ0gvJDEvdXNyL2xvY2FsL3Bnc3FsCisgICMgTGludXggZGlzdHJvcyB0aGF0IHNwbGl0 IDY0LWJpdCBsaWJzIHVzZSBsaWI2NDsgbW9zdCBvdGhlcnMgdXNlIGxpYi4KKyAgaWYgWyAt ZCAiJGJhc2UvbGliNjQiIF07IHRoZW4KKyAgICBlY2hvICIkYmFzZS9saWI2NCIKKyAgZWxz ZQorICAgIGVjaG8gIiRiYXNlL2xpYiIKKyAgZmkKK30KKworcHNxbF9hcygpIHsKKyAgbG9j YWwgdj0kMTsgc2hpZnQKKyAgTERfTElCUkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChi aW5fb2YgIiR2IikvcHNxbCIgLWggL3RtcCAtcCAiJFBPUlQiIC1VIHBvc3RncmVzIC1YICIk QCIKK30KKworcGdiZW5jaF9hcygpIHsKKyAgbG9jYWwgdj0kMTsgc2hpZnQKKyAgTERfTElC UkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcGdiZW5jaCIgLWgg L3RtcCAtcCAiJFBPUlQiIC1VIHBvc3RncmVzICIkQCIKK30KKworc3RhcnRfcGcoKSB7Cisg IGxvY2FsIHY9JDEKKyAgbG9jYWwgZGF0YWRpcj0kQkVOQ0gvX2RhdGFfJHYKKyAgWyAtZCAi JGRhdGFkaXIiIF0gJiYgZmluZCAiJGRhdGFkaXIiIC1taW5kZXB0aCAxIC1kZWxldGUgJiYg cm1kaXIgIiRkYXRhZGlyIgorICBta2RpciAtcCAiJGRhdGFkaXIiCisKKyAgTERfTElCUkFS WV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvaW5pdGRiIiAtRCAiJGRh dGFkaXIiIC1VIHBvc3RncmVzID4iJExPR0RJUi9pbml0ZGJfJHYubG9nIiAyPiYxCisgIGxv Y2FsIHNiPSR7U0hBUkVEX0JVRkZFUlM6LTUxMk1CfQorICBjYXQgPj4gIiRkYXRhZGlyL3Bv c3RncmVzcWwuY29uZiIgPDxFT0YKK3NoYXJlZF9idWZmZXJzID0gJHNiCit3b3JrX21lbSA9 IDMyTUIKK21heF93YWxfc2l6ZSA9IDRHQgorc3luY2hyb25vdXNfY29tbWl0ID0gb24KK2No ZWNrcG9pbnRfdGltZW91dCA9IDEwbWluCit3YWxfbGV2ZWwgPSByZXBsaWNhCitsb2dfZGVz dGluYXRpb24gPSAnc3RkZXJyJworbG9nZ2luZ19jb2xsZWN0b3IgPSBvZmYKK3BvcnQgPSAk UE9SVAorRU9GCisgIExEX0xJQlJBUllfUEFUSD0iJChMRF9vZiAiJHYiKSIgIiQoYmluX29m ICIkdiIpL3BnX2N0bCIgLUQgIiRkYXRhZGlyIiBcCisgICAgLW8gIi1wICRQT1JUIiAtbCAi JExPR0RJUi9wZ18kdi5sb2ciIHN0YXJ0ID4vZGV2L251bGwKKyAgc2xlZXAgMgorfQorCitz dG9wX3BnKCkgeworICBsb2NhbCB2PSQxCisgIGxvY2FsIGRhdGFkaXI9JEJFTkNIL19kYXRh XyR2CisgIExEX0xJQlJBUllfUEFUSD0iJChMRF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIp L3BnX2N0bCIgLUQgIiRkYXRhZGlyIiBzdG9wIC1tIGZhc3QgPi9kZXYvbnVsbCAyPiYxIHx8 IHRydWUKK30KKworcG9zdG1hc3Rlcl9waWQoKSB7CisgIGxvY2FsIHY9JDEKKyAgaGVhZCAt MSAiJEJFTkNIL19kYXRhXyR2L3Bvc3RtYXN0ZXIucGlkIiAyPi9kZXYvbnVsbAorfQorCitz ZXR1cF9zY2hlbWFzKCkgeworICBsb2NhbCB2PSQxCisgIHNlZWRfc2l1X3RhYmxlICIkdiIK KyAgc2VlZF93aWRlX3RhYmxlICIkdiIKKyAgIyBwZ2JlbmNoIHNjaGVtYSBmb3IgYnVpbHQt aW4gc2ltcGxlX3VwZGF0ZS4KKyAgTERfTElCUkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAi JChiaW5fb2YgIiR2IikvcGdiZW5jaCIgLWggL3RtcCAtcCAiJFBPUlQiIC1VIHBvc3RncmVz IFwKKyAgICAtaSAtcyAiJFNDQUxFIiAtcSBwb3N0Z3JlcyA+IiRMT0dESVIvcGdiZW5jaF9p bml0XyR2LmxvZyIgMj4mMQorfQorCisjIHNlZWRfc2l1X3RhYmxlOiAocmUpY3JlYXRlIHRo ZSBuYXJyb3cgdGFibGUgdXNlZCBieSB0aGUgc2l1Xyogd29ya2xvYWRzLgorc2VlZF9zaXVf dGFibGUoKSB7CisgIGxvY2FsIHY9JDEKKyAgbG9jYWwgcm93cz0kKChTQ0FMRSAqIDEwMDAw MCkpCisgIHBzcWxfYXMgIiR2IiA8PFNRTAorRFJPUCBUQUJMRSBJRiBFWElTVFMgc2l1X3Rh YmxlOworQ1JFQVRFIFRBQkxFIHNpdV90YWJsZShhIGludCBQUklNQVJZIEtFWSwgYiBpbnQs IGMgaW50LCBkIGludCwgZSB0ZXh0KTsKK0NSRUFURSBJTkRFWCBzaXVfYiBPTiBzaXVfdGFi bGUoYik7CitDUkVBVEUgSU5ERVggc2l1X2MgT04gc2l1X3RhYmxlKGMpOworQ1JFQVRFIElO REVYIHNpdV9kIE9OIHNpdV90YWJsZShkKTsKK0lOU0VSVCBJTlRPIHNpdV90YWJsZQorICBT RUxFQ1QgaSwgaSwgaSwgaSwgcmVwZWF0KCd4JywgMjApIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsICRyb3dzKSBBUyBpOworVkFDVVVNIChGVUxMLCBBTkFMWVpFKSBzaXVfdGFibGU7CitD SEVDS1BPSU5UOworU1FMCit9CisKKyMgc2VlZF93aWRlX3RhYmxlOiAocmUpY3JlYXRlIHRo ZSB3aWRlIHRhYmxlIHdpdGggV0lERV9DT0xTIGluZGV4ZWQgY29sdW1ucy4KK3NlZWRfd2lk ZV90YWJsZSgpIHsKKyAgbG9jYWwgdj0kMQorICBsb2NhbCBjb2xkZWZzPSIiIGluc2VydGNv bHM9IiIgaW5zZXJ0dmFscz0iIiBpZHhsaXN0PSIiCisgIGZvciBpIGluICQoc2VxIDEgIiRX SURFX0NPTFMiKTsgZG8KKyAgICBjb2xkZWZzKz0iLCBjJGkgaW50IgorICAgIGluc2VydGNv bHMrPSIsIGMkaSIKKyAgICBpbnNlcnR2YWxzKz0iLCBpIgorICAgIGlkeGxpc3QrPSJDUkVB VEUgSU5ERVggd2lkZV9jJGkgT04gd2lkZV90YWJsZShjJGkpOyAiCisgIGRvbmUKKyAgbG9j YWwgd2lkZV9yb3dzPSQoKFNDQUxFICogMTAwMCkpCisgIHBzcWxfYXMgIiR2IiA8PFNRTAor RFJPUCBUQUJMRSBJRiBFWElTVFMgd2lkZV90YWJsZTsKK0NSRUFURSBUQUJMRSB3aWRlX3Rh YmxlKGlkIGludCBQUklNQVJZIEtFWSAkY29sZGVmcyk7CiskaWR4bGlzdAorSU5TRVJUIElO VE8gd2lkZV90YWJsZShpZCAkaW5zZXJ0Y29scykgU0VMRUNUIGkgJGluc2VydHZhbHMgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgJHdpZGVfcm93cykgQVMgaTsKK1ZBQ1VVTSAoRlVMTCwg QU5BTFlaRSkgd2lkZV90YWJsZTsKK0NIRUNLUE9JTlQ7CitTUUwKK30KKworIyByZXNldF9z dGF0ZTogcmVzdG9yZSBhIHdvcmtsb2FkJ3MgdGFyZ2V0IHRhYmxlIHRvIGl0cyBzZWVkZWQg YmFzZWxpbmUuCisjIFVzZWQgYmV0d2VlbiB3b3JrbG9hZHMgc28gcGVyLXdvcmtsb2FkIGJs b2F0L2lkeF9zaXplIGRlbHRhcyBhcmUgbm90CisjIHBvbGx1dGVkIGJ5IGNhcnJ5b3ZlciBm cm9tIGVhcmxpZXIgd29ya2xvYWRzIGluIHRoZSBzYW1lIHZhcmlhbnQgcnVuLgorIyBGb3Ig cGdiZW5jaF9hY2NvdW50cyB3ZSByZS1pbml0aWFsaXNlIHZpYSBgcGdiZW5jaCAtaWA7IGZv ciBvdXIKKyMgaGFuZC1yb2xsZWQgdGFibGVzIHdlIGRyb3AgKyByZWNyZWF0ZSArIHJlc2Vl ZC4KK3Jlc2V0X3N0YXRlKCkgeworICBsb2NhbCB2PSQxIHRhYmxlPSQyCisgIGNhc2UgIiR0 YWJsZSIgaW4KKyAgICBwZ2JlbmNoX2FjY291bnRzKQorICAgICAgTERfTElCUkFSWV9QQVRI PSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcGdiZW5jaCIgLWggL3RtcCAtcCAi JFBPUlQiIC1VIHBvc3RncmVzIFwKKyAgICAgICAgLWkgLXMgIiRTQ0FMRSIgLXEgcG9zdGdy ZXMgPj4iJExPR0RJUi9wZ2JlbmNoX2luaXRfJHYubG9nIiAyPiYxCisgICAgICBwc3FsX2Fz ICIkdiIgLWMgIkNIRUNLUE9JTlQiID4vZGV2L251bGwKKyAgICAgIDs7CisgICAgc2l1X3Rh YmxlKQorICAgICAgc2VlZF9zaXVfdGFibGUgIiR2IgorICAgICAgOzsKKyAgICB3aWRlX3Rh YmxlKQorICAgICAgc2VlZF93aWRlX3RhYmxlICIkdiIKKyAgICAgIDs7CisgICAgKikKKyAg ICAgIGVjaG8gInJlc2V0X3N0YXRlOiB1bmtub3duIHRhYmxlICR0YWJsZSIgPiYyCisgICAg ICByZXR1cm4gMQorICAgICAgOzsKKyAgZXNhYworICBwc3FsX2FzICIkdiIgLWMgIlNFTEVD VCBwZ19zdGF0X3Jlc2V0X3NpbmdsZV90YWJsZV9jb3VudGVycygnJHRhYmxlJzo6cmVnY2xh c3M6Om9pZCkiID4vZGV2L251bGwKK30KKworYmxvYXRfc3RhdHMoKSB7CisgIGxvY2FsIHY9 JDEgdGFibGU9JDIKKyAgcHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBwZ190YWJsZV9zaXpl KCckdGFibGUnKS84MTkyIHx8ICcsJyB8fCBwZ19pbmRleGVzX3NpemUoJyR0YWJsZScpIgor fQorCisjIHNpdV9jb3VudDogbnVtYmVyIG9mIEhPVC1pbmRleGVkIHVwZGF0ZXMgb2JzZXJ2 ZWQgb24gJHRhYmxlIHNpbmNlIGl0cworIyBwZ3N0YXQgY291bnRlcnMgd2VyZSBsYXN0IHJl c2V0LiAgUmV0dXJucyAiMCIgb24gbWFzdGVyICh3aGVyZSB0aGUKKyMgY291bnRlciBjb2x1 bW4gZG9lcyBub3QgZXhpc3QpIHNvIHRoZSBDU1YgY29sdW1uIHN0YXlzIG51bWVyaWMuCitz aXVfY291bnQoKSB7CisgIGxvY2FsIHY9JDEgdGFibGU9JDIKKyAgbG9jYWwgdmFsCisgIHZh bD0kKHBzcWxfYXMgIiR2IiAtQXRjIFwKKyAgICAiU0VMRUNUIGNvYWxlc2NlKG5fdHVwX2hv dF9pbmRleGVkX3VwZCwgMCkgRlJPTSBwZ19zdGF0X3VzZXJfdGFibGVzIFdIRVJFIHJlbG5h bWU9JyR0YWJsZSciIDI+L2Rldi9udWxsKQorICBbWyAiJHZhbCIgPX4gXlswLTldKyQgXV0g fHwgdmFsPTAKKyAgZWNobyAiJHZhbCIKK30KKworIyBwZXJfaW5kZXhfc2l6ZXM6IGVtaXQg ImlkeDE9Ynl0ZXM7aWR4Mj1ieXRlczsuLi4iIGZvciB0aGUgaW5kZXhlcyBvbgorIyAkdGFi bGUsIHNvcnRlZCBieSBpbmRleHJlbGlkLiAgVXNlZCBieSB0aGUgd2lkZV8qIHdvcmtsb2Fk cyBzbyB3ZSBjYW4KKyMgc2VlIHBlci1jb2x1bW4gaW5kZXggZ3Jvd3RoIHJhdGhlciB0aGFu IGp1c3QgdGhlIGFnZ3JlZ2F0ZS4gIFJldHVybnMKKyMgdGhlIGxpdGVyYWwgIm5vbmUiIHdo ZW4gJHRhYmxlIGhhcyBubyBpbmRleGVzLgorcGVyX2luZGV4X3NpemVzKCkgeworICBsb2Nh bCB2PSQxIHRhYmxlPSQyCisgIGxvY2FsIG91dAorICBvdXQ9JChwc3FsX2FzICIkdiIgLUF0 YyAiU0VMRUNUIHN0cmluZ19hZ2coCisgICAgICAgICAgIGkucmVsbmFtZSB8fCAnPScgfHwg cGdfcmVsYXRpb25fc2l6ZShpLm9pZCk6OnRleHQsCisgICAgICAgICAgICc7JyBPUkRFUiBC WSBpLm9pZCkKKyAgICAgICAgIEZST00gcGdfY2xhc3MgdAorICAgICAgICAgSk9JTiBwZ19p bmRleCBpeCBPTiBpeC5pbmRyZWxpZCA9IHQub2lkCisgICAgICAgICBKT0lOIHBnX2NsYXNz IGkgIE9OIGkub2lkID0gaXguaW5kZXhyZWxpZAorICAgICAgICAgV0hFUkUgdC5yZWxuYW1l ID0gJyR0YWJsZSciKQorICBbIC1uICIkb3V0IiBdIHx8IG91dD0ibm9uZSIKKyAgZWNobyAi JG91dCIKK30KKworc2FtcGxlX3BlYWsoKSB7CisgICMgU2FtcGxlIENQVSAvIFJTUyBvZiB0 aGUgcG9zdG1hc3RlciB0cmVlIGZvciAkRFVSQVRJT04rNSBzZWNvbmRzLgorICAjIFdyaXRl cyAicGVha19jcHVfcGN0LHBlYWtfcnNzX21pYiIgdG8gdGhlIGdpdmVuIG91dGZpbGUuICBQ b3J0YWJsZSBhY3Jvc3MKKyAgIyBMaW51eCAvIEZyZWVCU0QgKGZhbGxzIGJhY2sgdG8gcGdy ZXAgKyBwZXItcGlkIHBzIHdoZXJlIC0tcHBpZCBpc24ndAorICAjIGF2YWlsYWJsZSkuICBS ZXR1cm5zICdOQSxOQScgaWYgdGhlIHNhbXBsZXIgY2FuJ3QgY29sbGVjdCB1c2VmdWwgZGF0 YS4KKyAgbG9jYWwgb3V0ZmlsZT0kMSB2PSQyCisgIGxvY2FsIGxlYWRlcgorICBsZWFkZXI9 JChwb3N0bWFzdGVyX3BpZCAiJHYiKQorICBbIC16ICIkbGVhZGVyIiBdICYmIHsgZWNobyAi TkEsTkEiID4gIiRvdXRmaWxlIjsgcmV0dXJuOyB9CisgIGxvY2FsIGR1cj0kKCggRFVSQVRJ T04gKyA1ICkpCisgICgKKyAgICBsb2NhbCBtYXhfY3B1PTAKKyAgICBsb2NhbCBtYXhfcnNz PTAKKyAgICBsb2NhbCB0MD0kKGRhdGUgKyVzKQorICAgIHdoaWxlIDo7IGRvCisgICAgICAj IENoaWxkcmVuIG9mIHRoZSBsZWFkZXIgKyB0aGUgbGVhZGVyIGl0c2VsZi4KKyAgICAgIGxv Y2FsIHBpZHMKKyAgICAgIHBpZHM9JCggKHBncmVwIC1QICIkbGVhZGVyIiAyPi9kZXYvbnVs bDsgZWNobyAiJGxlYWRlciIpIHwgdHIgJ1xuJyAnICcpCisgICAgICBsb2NhbCBzYW1wbGUK KyAgICAgIHNhbXBsZT0kKHBzIC1vIHBjcHU9LHJzcz0gLXAgJHBpZHMgMj4vZGV2L251bGwg fCBcCisgICAgICAgICAgICAgICBhd2sgJ3tjcHUrPSQxOyByc3MrPSQyfSBFTkR7cHJpbnRm ICIlLjFmICVkXG4iLCBjcHUrMCwgcnNzKzB9JykKKyAgICAgIGxvY2FsIGMgcgorICAgICAg cmVhZCAtciBjIHIgPDw8IiRzYW1wbGUiCisgICAgICBpZiBbIC1uICIke2M6LX0iIF0gJiYg WyAtbiAiJHtyOi19IiBdOyB0aGVuCisgICAgICAgIGF3ayAtdiBtPSIkbWF4X2NwdSIgLXYg Yz0iJGMiICdCRUdJTntleGl0ICEoYz5tKX0nICYmIG1heF9jcHU9JGMKKyAgICAgICAgWyAi JHIiIC1ndCAiJG1heF9yc3MiIF0gMj4vZGV2L251bGwgJiYgbWF4X3Jzcz0kcgorICAgICAg ZmkKKyAgICAgIGxvY2FsIG5vdz0kKGRhdGUgKyVzKQorICAgICAgWyAkKChub3cgLSB0MCkp IC1nZSAiJGR1ciIgXSAmJiBicmVhaworICAgICAgc2xlZXAgMQorICAgIGRvbmUKKyAgICBs b2NhbCByc3NfbWliPSQoKCBtYXhfcnNzIC8gMTAyNCApKQorICAgIGVjaG8gIiRtYXhfY3B1 LCRyc3NfbWliIiA+ICIkb3V0ZmlsZSIKKyAgKSAmCisgIGVjaG8gJCEKK30KKworcnVuX29u ZSgpIHsKKyAgbG9jYWwgdj0kMSB3b3JrbG9hZD0kMiBzY3JpcHQ9JDMgdGFibGU9JHs0Oi1z aXVfdGFibGV9IGV4dHJhX3NldD0kezU6LX0KKworICBsb2NhbCB3YWxfc3RhcnQgd2FsX2Vu ZCBob3Rfc3RhcnQgaG90X2VuZCB0b3RhbF9zdGFydCB0b3RhbF9lbmQgdHBzIGxhdAorICBs b2NhbCBzaXVfc3RhcnQgc2l1X2VuZAorICBsb2NhbCBibG9hdF9iZWZvcmUgYmxvYXRfYWZ0 ZXIgaWR4X2JlZm9yZSBpZHhfYWZ0ZXIKKyAgbG9jYWwgcGVyX2lkeF9iZWZvcmUgcGVyX2lk eF9hZnRlcgorICByZWFkIC1yIGJsb2F0X2JlZm9yZSBpZHhfYmVmb3JlIDw8PCIkKGJsb2F0 X3N0YXRzICIkdiIgIiR0YWJsZSIgfCB0ciAsICcgJykiCisgIHBlcl9pZHhfYmVmb3JlPSQo cGVyX2luZGV4X3NpemVzICIkdiIgIiR0YWJsZSIpCisKKyAgd2FsX3N0YXJ0PSQocHNxbF9h cyAiJHYiIC1BdGMgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKTo6dGV4dCIpCisgIGhv dF9zdGFydD0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1QgY29hbGVzY2Uobl90dXBfaG90 X3VwZCwwKSBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZT0nJHRhYmxl JyIpCisgIHNpdV9zdGFydD0kKHNpdV9jb3VudCAiJHYiICIkdGFibGUiKQorICB0b3RhbF9z dGFydD0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1QgY29hbGVzY2Uobl90dXBfdXBkLDAp IEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSckdGFibGUnIikKKwor ICBsb2NhbCBvdXQ9IiRMT0dESVIvJHt2fV8ke3dvcmtsb2FkfS5sb2ciCisgIGxvY2FsIGNw dV9yc3NfZmlsZT0kTE9HRElSLyR7dn1fJHt3b3JrbG9hZH0uY3B1CisgIGxvY2FsIHNhbXBs ZXJfcGlkCisgIHNhbXBsZXJfcGlkPSQoc2FtcGxlX3BlYWsgIiRjcHVfcnNzX2ZpbGUiICIk diIpCisKKyAgc2V0ICtlCisgIGNhc2UgIiR3b3JrbG9hZCIgaW4KKyAgICBzaW1wbGVfdXBk YXRlKQorICAgICAgcGdiZW5jaF9hcyAiJHYiIC1OIC1jICIkQ0xJRU5UUyIgLWogIiRUSFJF QURTIiAtVCAiJERVUkFUSU9OIiBcCisgICAgICAgIC1uIHBvc3RncmVzID4iJG91dCIgMj4m MQorICAgICAgOzsKKyAgICB3aWRlXyopCisgICAgICAjIGJ1aWxkIHRoZSBTRVQgY2xhdXNl IGZyb20gZXh0cmFfc2V0IHdoaWNoIGlzICJjMT06dixjMj06diwuLi4iCisgICAgICBwZ2Jl bmNoX2FzICIkdiIgLWYgPChzZWQgInMvOndpZGVfc2V0X2NsYXVzZS8kZXh0cmFfc2V0LyIg IiRzY3JpcHQiKSBcCisgICAgICAgIC1jICIkQ0xJRU5UUyIgLWogIiRUSFJFQURTIiAtVCAi JERVUkFUSU9OIiBcCisgICAgICAgIC1EICJzY2FsZT0kU0NBTEUiIC1uIHBvc3RncmVzID4i JG91dCIgMj4mMQorICAgICAgOzsKKyAgICByZWFkX2luZGV4c2NhbikKKyAgICAgICMgcmVh ZC1vbmx5OyBwYXNzIHRoZSByb3cgY291bnQgc28gdGhlIHNjcmlwdCBjYW4gcGljayByYW5k b20ga2V5cworICAgICAgcGdiZW5jaF9hcyAiJHYiIC1mICIkc2NyaXB0IiAtYyAiJENMSUVO VFMiIC1qICIkVEhSRUFEUyIgLVQgIiREVVJBVElPTiIgXAorICAgICAgICAtRCAicm93cz0k KChTQ0FMRSAqIDEwMDAwMCkpIiAtbiBwb3N0Z3JlcyA+IiRvdXQiIDI+JjEKKyAgICAgIDs7 CisgICAgKikKKyAgICAgIHBnYmVuY2hfYXMgIiR2IiAtZiAiJHNjcmlwdCIgLWMgIiRDTElF TlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVSQVRJT04iIFwKKyAgICAgICAgLW4gcG9zdGdy ZXMgPiIkb3V0IiAyPiYxCisgICAgICA7OworICBlc2FjCisgIHNldCAtZQorCisgIHdhaXQg IiRzYW1wbGVyX3BpZCIgMj4vZGV2L251bGwgfHwgdHJ1ZQorICBsb2NhbCBjcHVfcnNzCisg IGNwdV9yc3M9JChjYXQgIiRjcHVfcnNzX2ZpbGUiIDI+L2Rldi9udWxsIHx8IGVjaG8gIk5B LE5BIikKKworICB0cHM9JChhd2sgJy90cHMgPSAve3ByaW50ICQzOyBleGl0fScgIiRvdXQi KQorICBsYXQ9JChhd2sgJy9sYXRlbmN5IGF2ZXJhZ2UgPSAve3ByaW50ICQ0OyBleGl0fScg IiRvdXQiKQorICB0cHM9JHt0cHM6LU5BfQorICBsYXQ9JHtsYXQ6LU5BfQorCisgIHdhbF9l bmQ9JChwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpOjp0 ZXh0IikKKyAgaG90X2VuZD0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1QgY29hbGVzY2Uo bl90dXBfaG90X3VwZCwwKSBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFt ZT0nJHRhYmxlJyIpCisgIHNpdV9lbmQ9JChzaXVfY291bnQgIiR2IiAiJHRhYmxlIikKKyAg dG90YWxfZW5kPSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF91 cGQsMCkgRlJPTSBwZ19zdGF0X3VzZXJfdGFibGVzIFdIRVJFIHJlbG5hbWU9JyR0YWJsZSci KQorCisgIGxvY2FsIHdhbF9ieXRlcworICB3YWxfYnl0ZXM9JChwc3FsX2FzICIkdiIgLUF0 YyAiU0VMRUNUIHBnX3dhbF9sc25fZGlmZignJHdhbF9lbmQnOjpwZ19sc24sICckd2FsX3N0 YXJ0Jzo6cGdfbHNuKTo6YmlnaW50IikKKworICAjIENhcHR1cmUgYSBXQUwgcmVjb3JkLXR5 cGUgaGlzdG9ncmFtIGZvciB0aGlzIHdvcmtsb2FkLiAgcGdfd2FsZHVtcCdzCisgICMgLS1z dGF0cz1yZWNvcmQgb3V0cHV0IGlzIHJpY2ggKH42MCBsaW5lcykgc28gc3Rhc2ggaXQgaW4g TE9HRElSCisgICMgcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGZvbGQgaW50byB0aGUgQ1NWLiAg VG9sZXJhdGUgZmFpbHVyZXM6IGlmIHRoZQorICAjIHNlZ21lbnQgY29udGFpbmluZyB3YWxf c3RhcnQgaGFzIGJlZW4gcmVjeWNsZWQgKHJhcmUgd2l0aAorICAjIG1heF93YWxfc2l6ZT00 R0IgYnV0IHBvc3NpYmxlIHVuZGVyIGxvbmcgY2hhaW5lZCBydW5zKSwgd2UgZW1pdCBhCisg ICMgbm90ZSBhbmQgbW92ZSBvbiBpbnN0ZWFkIG9mIGFib3J0aW5nIHRoZSB3aG9sZSBydW4u CisgIGxvY2FsIHdhbF9zdGF0c19maWxlPSRMT0dESVIvJHt2fV8ke3dvcmtsb2FkfS53YWxz dGF0cworICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYi KS9wZ193YWxkdW1wIiBcCisgICAgLS1zdGF0cz1yZWNvcmQgLXAgIiRCRU5DSC9fZGF0YV8k di9wZ193YWwiIFwKKyAgICAtLXN0YXJ0PSIkd2FsX3N0YXJ0IiAtLWVuZD0iJHdhbF9lbmQi IFwKKyAgICA+ICIkd2FsX3N0YXRzX2ZpbGUiIDI+ICIke3dhbF9zdGF0c19maWxlfS5lcnIi IFwKKyAgICB8fCBlY2hvICJwZ193YWxkdW1wIHVuYXZhaWxhYmxlIGZvciB0aGlzIHJhbmdl OyBzZWUgJHt3YWxfc3RhdHNfZmlsZX0uZXJyIiA+ICIkd2FsX3N0YXRzX2ZpbGUiCisKKyAg cmVhZCAtciBibG9hdF9hZnRlciBpZHhfYWZ0ZXIgPDw8IiQoYmxvYXRfc3RhdHMgIiR2IiAi JHRhYmxlIiB8IHRyICwgJyAnKSIKKyAgcGVyX2lkeF9hZnRlcj0kKHBlcl9pbmRleF9zaXpl cyAiJHYiICIkdGFibGUiKQorCisgIGxvY2FsIGhvdD0kKChob3RfZW5kIC0gaG90X3N0YXJ0 KSkKKyAgbG9jYWwgc2l1PSQoKHNpdV9lbmQgLSBzaXVfc3RhcnQpKQorICBsb2NhbCB0b3Q9 JCgodG90YWxfZW5kIC0gdG90YWxfc3RhcnQpKQorICBsb2NhbCBjbGFzc2ljX2hvdD0kKCho b3QgLSBzaXUpKQorICBsb2NhbCBub25faG90PSQoKHRvdCAtIGhvdCkpCisKKyAgcHJpbnRm ICclcywlcywlcywlcywlZCwlZCwlZCwlZCwlcywlcywlcywlcywlcywlcywlcywlc1xuJyBc CisgICAgIiR2IiAiJHdvcmtsb2FkIiAiJHRwcyIgIiRsYXQiICIkY2xhc3NpY19ob3QiICIk c2l1IiAiJG5vbl9ob3QiICIkdG90IiBcCisgICAgIiR3YWxfYnl0ZXMiIFwKKyAgICAiJGJs b2F0X2JlZm9yZSIgIiRibG9hdF9hZnRlciIgXAorICAgICIkaWR4X2JlZm9yZSIgIiRpZHhf YWZ0ZXIiIFwKKyAgICAiJGNwdV9yc3MiICIkcGVyX2lkeF9iZWZvcmUiICIkcGVyX2lkeF9h ZnRlciIgPj4gIiRPVVQiCisgIHByaW50ZiAnICAlLThzICUtMTRzIHRwcz0lMTBzIGxhdD0l NnMgY2xhc3NpY19ob3Q9JTdkIGhpPSU3ZCBub25faG90PSU3ZCB0b3Q9JS03ZCB3YWw9JTEy cyBibG9hdD0lcy0+JXMgaWR4PSVzLT4lcyBjcHVfcnNzPSVzXG4nIFwKKyAgICAiJHYiICIk d29ya2xvYWQiICIkdHBzIiAiJGxhdCIgIiRjbGFzc2ljX2hvdCIgIiRzaXUiICIkbm9uX2hv dCIgIiR0b3QiICIkd2FsX2J5dGVzIiBcCisgICAgIiRibG9hdF9iZWZvcmUiICIkYmxvYXRf YWZ0ZXIiICIkaWR4X2JlZm9yZSIgIiRpZHhfYWZ0ZXIiICIkY3B1X3JzcyIKK30KKworYnVp bGRfd2lkZV9zZXRfY2xhdXNlKCkgeworICAjIGVtaXQgZS5nLiAiYzE9OnYsYzI9OnYsLi4u LGNOPTp2IiBmb3IgZmlyc3QgTiBjb2xzLgorICBsb2NhbCBuPSQxCisgIGlmIFsgIiRuIiAt ZXEgMCBdOyB0aGVuCisgICAgIyBObyBpbmRleGVkLWNvbCB1cGRhdGU7IHRvdWNoIGEgbm9u LWluZGV4ZWQgY29sdW1uIChpZCAlIDEgc28gaXQncyBhIG5vLW9wKQorICAgIGVjaG8gImlk PWlkIgorICAgIHJldHVybgorICBmaQorICBsb2NhbCBjbGF1c2VzPSIiCisgIGZvciBpIGlu ICQoc2VxIDEgIiRuIik7IGRvCisgICAgWyAtbiAiJGNsYXVzZXMiIF0gJiYgY2xhdXNlcys9 IiwiCisgICAgY2xhdXNlcys9ImMkaT06diIKKyAgZG9uZQorICBlY2hvICIkY2xhdXNlcyIK K30KKworZm9yIHYgaW4gbWFzdGVyIHRlcGlkOyBkbworICBlY2hvICItLS0gdmFyaWFudDog JHYiCisgIHN0b3BfcGcgIiR2IiB8fCB0cnVlCisgIHN0YXJ0X3BnICIkdiIKKyAgc2V0dXBf c2NoZW1hcyAiJHYiCisKKyAgcnVuX29uZSAiJHYiIHNpbXBsZV91cGRhdGUgJycgICAgICAg ICAgICAgICAgICAgIHBnYmVuY2hfYWNjb3VudHMKKyAgcmVzZXRfc3RhdGUgIiR2IiBzaXVf dGFibGUKKyAgcnVuX29uZSAiJHYiIGhvdF9pbmRleGVkX3VwZGF0ZSAgICAiJEJFTkNIL3Nj cmlwdHMvaG90X2luZGV4ZWRfdXBkYXRlLnNxbCIgIHNpdV90YWJsZQorICByZXNldF9zdGF0 ZSAiJHYiIHNpdV90YWJsZQorICBydW5fb25lICIkdiIgaG90X2luZGV4ZWRfbWl4ZWQgICAg ICIkQkVOQ0gvc2NyaXB0cy9ob3RfaW5kZXhlZF9taXhlZC5zcWwiICAgc2l1X3RhYmxlCisg IHJlc2V0X3N0YXRlICIkdiIgc2l1X3RhYmxlCisgIHJ1bl9vbmUgIiR2IiByZWFkX2luZGV4 c2NhbiAgICAgICAgIiRCRU5DSC9zY3JpcHRzL3JlYWRfaW5kZXhzY2FuLnNxbCIgICAgICBz aXVfdGFibGUKKworICBmb3IgbiBpbiAke1dJREVfU1RFUFMvLywvIH07IGRvCisgICAgcmVz ZXRfc3RhdGUgIiR2IiB3aWRlX3RhYmxlCisgICAgcnVuX29uZSAiJHYiICJ3aWRlXyR7bn0i ICIkQkVOQ0gvc2NyaXB0cy93aWRlX3VwZGF0ZS5zcWwiIHdpZGVfdGFibGUgXAorICAgICAg ICAgICAgIiQoYnVpbGRfd2lkZV9zZXRfY2xhdXNlICIkbiIpIgorICBkb25lCisKKyAgc3Rv cF9wZyAiJHYiCitkb25lCisKK2VjaG8gIj09PSByZXN1bHRzOiAkT1VUIgorY29sdW1uIC10 IC1zLCAiJE9VVCIgfCBoZWFkIC01MApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvYmVuY2htYXJr cy9zaXUvc2NyaXB0cy9zb2FrLnNoIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0 cy9zb2FrLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwLi45MzBm MTU5YTIyYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3Nj cmlwdHMvc29hay5zaApAQCAtMCwwICsxLDEyOCBAQAorIyEvdXNyL2Jpbi9lbnYgYmFzaAor IyB0ZXBpZCBzb2FrOiBydW4gaG90X2luZGV4ZWRfdXBkYXRlIGZvciAkRFVSQVRJT04gc2Vj b25kcyBvbiBlYWNoIHZhcmlhbnQsIHNhbXBsaW5nCisjIFRQUyAvIEhPVC1yYXRlIC8gV0FM IHZvbHVtZSAvIHRhYmxlK2luZGV4IGJsb2F0IGV2ZXJ5ICRTQU1QTEUgc2Vjb25kcy4KKyMg RW1pdHMgYSBDU1Ygd2l0aCBvbmUgc2FtcGxlIHJvdyBwZXIgdGljayBwZXIgdmFyaWFudC4K K3NldCAtZXVvIHBpcGVmYWlsCisKK0JFTkNIPSR7QkVOQ0g6LS9zY3JhdGNoL3NpdS1iZW5j aH0KK1NDQUxFPSR7U0NBTEU6LTUwfQorQ0xJRU5UUz0ke0NMSUVOVFM6LTE2fQorVEhSRUFE Uz0ke1RIUkVBRFM6LTh9CitEVVJBVElPTj0ke0RVUkFUSU9OOi05MDB9ICAgICAjIDE1IG1p bnV0ZXMKK1NBTVBMRT0ke1NBTVBMRTotNjB9ICAgICAgICAgICMgZXZlcnkgNjAgcworUE9S VD0ke1BPUlQ6LTU3NTAzfQorU0hBUkVEX0JVRkZFUlM9JHtTSEFSRURfQlVGRkVSUzotMkdC fQorCitUUz0kKGRhdGUgLXUgKyVZJW0lZFQlSCVNJVNaKQorT1VUPSRCRU5DSC9yZXN1bHRz L3NvYWtfJFRTLmNzdgorTE9HRElSPSRCRU5DSC9sb2dzL3NvYWtfJFRTCitta2RpciAtcCAi JExPR0RJUiIgIiRCRU5DSC9yZXN1bHRzIgorZWNobyAidmFyaWFudCx0X3NlY3MsdHBzX2lu c3RhbnQsaG90X3BjdF9pbnN0YW50LGhlYXBfcGFnZXMsaW5kZXhfYnl0ZXMsd2FsX2J5dGVz X3NpbmNlX3N0YXJ0LG5fZGVhZF90dXAiID4gIiRPVVQiCitlY2hvICI9PT0gc29hayAkVFMg LT4gJE9VVCIKKworYmluX29mKCkgIHsgZWNobyAiJEJFTkNILyQxL3Vzci9sb2NhbC9wZ3Nx bC9iaW4iOyB9CitMRF9vZigpICAgeyBsb2NhbCBiPSRCRU5DSC8kMS91c3IvbG9jYWwvcGdz cWw7IFsgLWQgIiRiL2xpYjY0IiBdICYmIGVjaG8gIiRiL2xpYjY0IiB8fCBlY2hvICIkYi9s aWIiOyB9CisKK3BzcWxfYXMoKSB7IGxvY2FsIHY9JDE7IHNoaWZ0OyBMRF9MSUJSQVJZX1BB VEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9wc3FsIiAtaCAvdG1wIC1wICIk UE9SVCIgLVUgcG9zdGdyZXMgLVggIiRAIjsgfQorcGdiZW5jaF9hcygpIHsgbG9jYWwgdj0k MTsgc2hpZnQ7IExEX0xJQlJBUllfUEFUSD0iJChMRF9vZiAiJHYiKSIgIiQoYmluX29mICIk diIpL3BnYmVuY2giIC1oIC90bXAgLXAgIiRQT1JUIiAtVSBwb3N0Z3JlcyAiJEAiOyB9CisK K3N0YXJ0X3BnKCkgeworICBsb2NhbCB2PSQxIGRhdGFkaXI9JEJFTkNIL19kYXRhXyR2Cisg IFsgLWQgIiRkYXRhZGlyIiBdICYmIGZpbmQgIiRkYXRhZGlyIiAtbWluZGVwdGggMSAtZGVs ZXRlICYmIHJtZGlyICIkZGF0YWRpciIKKyAgbWtkaXIgLXAgIiRkYXRhZGlyIgorICBMRF9M SUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9pbml0ZGIiIC1E ICIkZGF0YWRpciIgLVUgcG9zdGdyZXMgPiIkTE9HRElSL2luaXRkYl8kdi5sb2ciIDI+JjEK KyAgY2F0ID4+ICIkZGF0YWRpci9wb3N0Z3Jlc3FsLmNvbmYiIDw8RU9GCitzaGFyZWRfYnVm ZmVycyA9ICRTSEFSRURfQlVGRkVSUword29ya19tZW0gPSAzMk1CCittYXhfd2FsX3NpemUg PSA4R0IKK3N5bmNocm9ub3VzX2NvbW1pdCA9IG9uCitjaGVja3BvaW50X3RpbWVvdXQgPSAx MG1pbgord2FsX2xldmVsID0gcmVwbGljYQorYXV0b3ZhY3V1bSA9IG9uCithdXRvdmFjdXVt X25hcHRpbWUgPSAxMHMKK2F1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCA9IDUwCithdXRv dmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IgPSAwLjEKK3BvcnQgPSAkUE9SVAorRU9GCisg IExEX0xJQlJBUllfUEFUSD0iJChMRF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnX2N0 bCIgLUQgIiRkYXRhZGlyIiBcCisgICAgLW8gIi1wICRQT1JUIiAtbCAiJExPR0RJUi9wZ18k di5sb2ciIHN0YXJ0ID4vZGV2L251bGwKKyAgc2xlZXAgMgorfQorCitzdG9wX3BnKCkgewor ICBsb2NhbCB2PSQxCisgIExEX0xJQlJBUllfUEFUSD0iJChMRF9vZiAiJHYiKSIgIiQoYmlu X29mICIkdiIpL3BnX2N0bCIgLUQgIiRCRU5DSC9fZGF0YV8kdiIgc3RvcCAtbSBmYXN0ID4v ZGV2L251bGwgMj4mMSB8fCB0cnVlCit9CisKK3NldHVwKCkgeworICBsb2NhbCB2PSQxIHJv d3M9JCgoU0NBTEUgKiAxMDAwMDApKQorICBwc3FsX2FzICIkdiIgPDxTUUwKK0RST1AgVEFC TEUgSUYgRVhJU1RTIHNpdV90YWJsZTsKK0NSRUFURSBUQUJMRSBzaXVfdGFibGUoYSBpbnQg UFJJTUFSWSBLRVksIGIgaW50LCBjIGludCwgZCBpbnQsIGUgdGV4dCk7CitDUkVBVEUgSU5E RVggc2l1X2IgT04gc2l1X3RhYmxlKGIpOworQ1JFQVRFIElOREVYIHNpdV9jIE9OIHNpdV90 YWJsZShjKTsKK0NSRUFURSBJTkRFWCBzaXVfZCBPTiBzaXVfdGFibGUoZCk7CitJTlNFUlQg SU5UTyBzaXVfdGFibGUKKyAgU0VMRUNUIGksIGksIGksIGksIHJlcGVhdCgneCcsIDIwKSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAkcm93cykgQVMgaTsKK1ZBQ1VVTSAoQU5BTFlaRSkg c2l1X3RhYmxlOworU1FMCit9CisKK3J1bl9zb2FrKCkgeworICBsb2NhbCB2PSQxCisgIGVj aG8gIi0tLSBzb2FrICR2IGZvciAke0RVUkFUSU9OfXMsIHNhbXBsaW5nIGV2ZXJ5ICR7U0FN UExFfXMiCisgIHN0b3BfcGcgIiR2IiB8fCB0cnVlCisgIHN0YXJ0X3BnICIkdiIKKyAgc2V0 dXAgIiR2IgorICBsb2NhbCB3YWwwCisgIHdhbDA9JChwc3FsX2FzICIkdiIgLUF0YyAiU0VM RUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpOjp0ZXh0IikKKyAgbG9jYWwgaG90MCB0b3QwCisg IGhvdDA9JChwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIGNvYWxlc2NlKG5fdHVwX2hvdF91 cGQsMCkgRlJPTSBwZ19zdGF0X3VzZXJfdGFibGVzIFdIRVJFIHJlbG5hbWU9J3NpdV90YWJs ZSciKQorICB0b3QwPSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1 cF91cGQsMCkgICAgIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSdz aXVfdGFibGUnIikKKyAgbG9jYWwgcHJldl9ob3Q9JGhvdDAgcHJldl90b3Q9JHRvdDAKKwor ICAjIERyaXZlIHBnYmVuY2ggaW4gdGhlIGJhY2tncm91bmQ7IHNhbXBsZXIgaW4gZm9yZWdy b3VuZC4KKyAgcGdiZW5jaF9hcyAiJHYiIC1mICIkQkVOQ0gvc2NyaXB0cy9ob3RfaW5kZXhl ZF91cGRhdGUuc3FsIiBcCisgICAgLWMgIiRDTElFTlRTIiAtaiAiJFRIUkVBRFMiIC1UICIk RFVSQVRJT04iIFwKKyAgICAtUCAiJFNBTVBMRSIgLW4gcG9zdGdyZXMgPiIkTE9HRElSL3Bn YmVuY2hfJHYubG9nIiAyPiYxICYKKyAgbG9jYWwgcGdiPSQhCisKKyAgbG9jYWwgdD0wCisg IHdoaWxlIFsgIiR0IiAtbHQgIiREVVJBVElPTiIgXTsgZG8KKyAgICBzbGVlcCAiJFNBTVBM RSIKKyAgICB0PSQoKHQgKyBTQU1QTEUpKQorICAgIGxvY2FsIG5vd19ob3Qgbm93X3RvdCB3 YWxfbm93IHdhbF9ieXRlcyBoZWFwX3BhZ2VzIGlkeF9ieXRlcyBuX2RlYWQKKyAgICBub3df aG90PSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF9ob3RfdXBk LDApIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUn IikKKyAgICBub3dfdG90PSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShu X3R1cF91cGQsMCkgICAgIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1l PSdzaXVfdGFibGUnIikKKyAgICB3YWxfbm93PSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVD VCBwZ19jdXJyZW50X3dhbF9sc24oKTo6dGV4dCIpCisgICAgd2FsX2J5dGVzPSQocHNxbF9h cyAiJHYiIC1BdGMgIlNFTEVDVCBwZ193YWxfbHNuX2RpZmYoJyR3YWxfbm93Jzo6cGdfbHNu LCAnJHdhbDAnOjpwZ19sc24pOjpiaWdpbnQiKQorICAgIGhlYXBfcGFnZXM9JChwc3FsX2Fz ICIkdiIgLUF0YyAiU0VMRUNUIHBnX3RhYmxlX3NpemUoJ3NpdV90YWJsZScpLzgxOTIiKQor ICAgIGlkeF9ieXRlcz0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1QgcGdfaW5kZXhlc19z aXplKCdzaXVfdGFibGUnKSIpCisgICAgbl9kZWFkPSQocHNxbF9hcyAiJHYiIC1BdGMgIlNF TEVDVCBjb2FsZXNjZShuX2RlYWRfdHVwLDApIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBX SEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKworICAgIGxvY2FsIGRfaG90PSQoKG5vd19o b3QgLSBwcmV2X2hvdCkpCisgICAgbG9jYWwgZF90b3Q9JCgobm93X3RvdCAtIHByZXZfdG90 KSkKKyAgICBsb2NhbCB0cHNfaSBob3RfcGN0CisgICAgaWYgWyAiJGRfdG90IiAtZ3QgMCBd OyB0aGVuCisgICAgICB0cHNfaT0kKGF3ayAtdiBkPSIkZF90b3QiIC12IHM9IiRTQU1QTEUi ICdCRUdJTntwcmludGYgIiUuMWYiLCBkL3N9JykKKyAgICAgIGhvdF9wY3Q9JChhd2sgLXYg aD0iJGRfaG90IiAtdiB0PSIkZF90b3QiICdCRUdJTntwcmludGYgIiUuMWYiLCAxMDAqaC90 fScpCisgICAgZWxzZQorICAgICAgdHBzX2k9MDsgaG90X3BjdD0wCisgICAgZmkKKyAgICBw cmludGYgJyVzLCVkLCVzLCVzLCVzLCVzLCVzLCVzXG4nICIkdiIgIiR0IiAiJHRwc19pIiAi JGhvdF9wY3QiICIkaGVhcF9wYWdlcyIgIiRpZHhfYnl0ZXMiICIkd2FsX2J5dGVzIiAiJG5f ZGVhZCIgPj4gIiRPVVQiCisgICAgcHJpbnRmICcgICUtNnMgdD0lLTVkIHRwcz0lOHMgaG90 PSUtNXMlJSBoZWFwX3Bncz0lLTdzIGlkeD0lLTEycyB3YWw9JS0xMnMgZGVhZD0lc1xuJyBc CisgICAgICAiJHYiICIkdCIgIiR0cHNfaSIgIiRob3RfcGN0IiAiJGhlYXBfcGFnZXMiICIk aWR4X2J5dGVzIiAiJHdhbF9ieXRlcyIgIiRuX2RlYWQiCisgICAgcHJldl9ob3Q9JG5vd19o b3QKKyAgICBwcmV2X3RvdD0kbm93X3RvdAorICBkb25lCisKKyAgd2FpdCAiJHBnYiIgMj4v ZGV2L251bGwgfHwgdHJ1ZQorICBzdG9wX3BnICIkdiIKK30KKworZm9yIHYgaW4gbWFzdGVy IHRlcGlkOyBkbworICBydW5fc29hayAiJHYiCitkb25lCisKK2VjaG8gIj09PSBzb2FrIHJl c3VsdHM6ICRPVVQiCitjb2x1bW4gLXQgLXMsICIkT1VUIiB8IGhlYWQgLTgwCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3dpZGVfdXBkYXRlLnNxbCBi L3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvd2lkZV91cGRhdGUuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jMjUzZDU0OTNkYgotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvd2lkZV91cGRh dGUuc3FsCkBAIC0wLDAgKzEsNyBAQAorLS0gV2lkZS10YWJsZSB3b3JrbG9hZC4gIFRoZSBz ZXR1cCBzY3JpcHQgY3JlYXRlcyBhIHRhYmxlIHdpdGggV0lERV9DT0xTIGludGVnZXIKKy0t IGNvbHVtbnMsIGVhY2ggc2VwYXJhdGVseSBidHJlZS1pbmRleGVkLiAgVGhlIHdvcmtsb2Fk IFVQREFURXMgYQorLS0gY29uZmlndXJhYmxlIG51bWJlciBvZiB0aG9zZSBpbmRleGVkIGNv bHVtbnMgcGVyIHRyYW5zYWN0aW9uCistLSAoZHJpdmVuIGJ5IFdJREVfU1RFUFMgdmlhIHJ1 bi5zaCkgb24gYSByYW5kb20gcm93LgorXHNldCByaWQgcmFuZG9tKDEsIDpzY2FsZSAqIDEw MDApCitcc2V0IHYgcmFuZG9tKDEsIDEwMDAwMDAwMDApCitVUERBVEUgd2lkZV90YWJsZSBT RVQgOndpZGVfc2V0X2NsYXVzZSBXSEVSRSBpZCA9IDpyaWQ7Ci0tIAoyLjUwLjEKCg== --ffc971266f692fe98c1088dac35356ed85e7d5db--