<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>222382</bug_id>
          
          <creation_ts>2021-02-24 14:24:39 -0800</creation_ts>
          <short_desc>WebAssembly: SIMD support</short_desc>
          <delta_ts>2023-02-03 02:42:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>BrowserCompat, InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>233829</dependson>
    
    <dependson>245897</dependson>
    
    <dependson>246343</dependson>
    
    <dependson>246345</dependson>
    
    <dependson>246346</dependson>
    
    <dependson>246347</dependson>
    
    <dependson>246348</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergey Rubanov">chi187</reporter>
          <assigned_to name="Justin Michaud">justin_michaud</assigned_to>
          <cc>alex</cc>
    
    <cc>annulen</cc>
    
    <cc>cass</cc>
    
    <cc>cryze92</cc>
    
    <cc>daxpedda</cc>
    
    <cc>dev</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hypertree</cc>
    
    <cc>justin_michaud</cc>
    
    <cc>karlcow</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>maxgraey</cc>
    
    <cc>mrschmidt</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>robertknight</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>steven</cc>
    
    <cc>terrorjack</cc>
    
    <cc>torokati44</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vprelovac</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1733079</commentid>
    <comment_count>0</comment_count>
    <who name="Sergey Rubanov">chi187</who>
    <bug_when>2021-02-24 14:24:39 -0800</bug_when>
    <thetext>SIMD is on phase 4 now.

https://github.com/WebAssembly/simd/blob/master/proposals/simd/SIMD.md

Chrome is going to ship it in v91 (May 25)
Firefox is going to ship x86 SIMD in v89 (May 18) and ARM64 SIMD in Firefox 90 (June 15)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735521</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-03 14:25:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/75003618&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776952</commentid>
    <comment_count>2</comment_count>
    <who name="Sergey Rubanov">chi187</who>
    <bug_when>2021-07-14 09:51:59 -0700</bug_when>
    <thetext>SIMD was promoted to phase 5 today and it will be merged to spec soon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780008</commentid>
    <comment_count>3</comment_count>
    <who name="MaxGraey">maxgraey</who>
    <bug_when>2021-07-28 03:15:13 -0700</bug_when>
    <thetext>Fixed SIMD currently supports (or will soon come out from under the flag) by all runtimes except Safari:
https://webassembly.org/roadmap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814955</commentid>
    <comment_count>4</comment_count>
    <who name="Vladimir Prelovac">vprelovac</who>
    <bug_when>2021-11-14 23:05:02 -0800</bug_when>
    <thetext>Wanted to give a vote for SIMD support from a user perspective.

lichess.org which is the biggest, open-source, chess community on the web, has in-browser analysis for chess games using Stockfish NNUE (strongest chess engine) available only for WASM SIMD browsers, which sadly means not WebKit forcing me to use a Blink browser on a Mac to analyze chess games.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820212</commentid>
    <comment_count>5</comment_count>
    <who name="Vladimir Prelovac">vprelovac</who>
    <bug_when>2021-12-03 10:36:01 -0800</bug_when>
    <thetext>I see the card got updated.

Here is an example to check SIMD support.


https://lichess.org/study/7WCFYt0R/XVxUIL9r

In Chrome this uses StockFish NNUE for analysis, with a much detailed analysis. In Safari currently just StockFish.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827480</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-02 00:27:38 -0800</bug_when>
    <thetext>*** Bug 234790 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831005</commentid>
    <comment_count>7</comment_count>
      <attachid>449200</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-01-14 12:18:18 -0800</bug_when>
    <thetext>Created attachment 449200
SIMD Megapatch WIP 1

WIP patch supporting v128.const and i8x16.ExtractLane, but with many bugs. 

Spilling and filling is currently not even close to correct, and callee-save fp registers on arm are also completely wrong. There are also probably a bunch of places where even simple control flow will cause a crash.

I am working on fixing the long list of bugs next, but this patch should hopefully be in a somewhat hackable state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831008</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-01-14 12:19:38 -0800</bug_when>
    <thetext>This patch modifies one of the wasm.json files. Please ensure that any changes in one have been mirrored to the other. You can find the wasm.json files at &quot;Source/JavaScriptCore/wasm/wasm.json&quot; and &quot;JSTests/wasm/wasm.json&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831023</commentid>
    <comment_count>9</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-01-14 12:36:34 -0800</bug_when>
    <thetext>simdOpcodes.csv is exported from https://docs.google.com/spreadsheets/d/1mItAPDDyUD97QdtB9yp44utTP9vRRS9XMv0YZ_ePz9s/edit?usp=sharing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831078</commentid>
    <comment_count>10</comment_count>
      <attachid>449222</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-01-14 14:18:09 -0800</bug_when>
    <thetext>Created attachment 449222
Wasm SIMD Megapatch 1.1

Let&apos;s try this again EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831087</commentid>
    <comment_count>11</comment_count>
      <attachid>449226</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-01-14 14:31:34 -0800</bug_when>
    <thetext>Created attachment 449226
SIMD Megapatch 1.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831108</commentid>
    <comment_count>12</comment_count>
      <attachid>449230</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-01-14 15:04:42 -0800</bug_when>
    <thetext>Created attachment 449230
SIMD Megapatch WIP 1.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847998</commentid>
    <comment_count>13</comment_count>
      <attachid>453765</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-03-03 11:17:01 -0800</bug_when>
    <thetext>Created attachment 453765
SIMD Megapatch 1.4 (no imported tests)

I removed 38mb of imported v8 tests from the diff so that I could actually upload the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868538</commentid>
    <comment_count>14</comment_count>
    <who name="Sanjay Kumar">hypertree</who>
    <bug_when>2022-05-12 14:01:41 -0700</bug_when>
    <thetext>I hope this is done soon.

Safari is the only browser left that does not support SIMD and without it we can not release so many performance enhancements to our Pilot navigation App (AvNav).

We use SIMD to speed up Martini (Delauney) terrain mesh generation and it accelerates things by factor of 2-3 which is precious knowing how demanding terrain rendering can be.

We are using JPEG XL for our raster/image formats which cuts down image sizes by 60-70% (and helps us stay within Safari&apos;s 1 GB storage limit). libjxl the reference implementation of JPEG XL is 3x faster with SIMD - its only image format optimized for SIMD (reason we chose it) but there will be others (AVIF ?)

SIMD is very important (given hassles/limitations of SharedArrayBuffers).

Apple please add support for SIMD ASAP - no more delays please.
Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868539</commentid>
    <comment_count>15</comment_count>
    <who name="Vladimir Prelovac">vprelovac</who>
    <bug_when>2022-05-12 14:04:16 -0700</bug_when>
    <thetext>Came here to vote support for SIMD in WebKit. Go Justin!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872908</commentid>
    <comment_count>16</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2022-05-31 00:33:16 -0700</bug_when>
    <thetext>I am interested in testing this when available. https://robertknight.github.io/tesseract-wasm/ is a demo that uses a WebAssembly build of the Tesseract OCR engine. It runs approximately 2-2.5x faster in Chrome and Firefox than Safari due to use of SIMD.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1902453</commentid>
    <comment_count>17</comment_count>
    <who name="Vladimir Prelovac">vprelovac</who>
    <bug_when>2022-09-30 13:53:29 -0700</bug_when>
    <thetext>Looks like all blockers have been removed now, hoping to see this land soon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1903036</commentid>
    <comment_count>18</comment_count>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2022-10-03 22:10:22 -0700</bug_when>
    <thetext>This creates a WebCompat issue for a number of projects depending on 
https://github.com/Volcomix/virtual-background
used by projects like
https://github.com/bigbluebutton/bigbluebutton</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1921701</commentid>
    <comment_count>19</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-12-23 10:48:57 -0800</bug_when>
    <thetext>All features are landed in ToT, and we are now looking to fix as many bugs as possible.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449200</attachid>
            <date>2022-01-14 12:18:18 -0800</date>
            <delta_ts>2022-01-14 13:41:42 -0800</delta_ts>
            <desc>SIMD Megapatch WIP 1</desc>
            <filename>simd.patch</filename>
            <type>text/plain</type>
            <size>274480</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9zdHJlc3Mvc2ltZC1jb25zdC1zcGlsbC5qcyBiL0pT
VGVzdHMvd2FzbS9zdHJlc3Mvc2ltZC1jb25zdC1zcGlsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjMzIwYjIxNjdlYwotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvd2FzbS9zdHJlc3Mvc2ltZC1jb25zdC1zcGlsbC5qcwpAQCAtMCwwICsxLDc5IEBACitp
bXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gIi4uL3dhYnQtd3JhcHBlci5qcyIKK2ltcG9ydCAq
IGFzIGFzc2VydCBmcm9tICIuLi9hc3NlcnQuanMiCisKK2xldCB3YXQgPSBgCisobW9kdWxlCisg
ICAgKGZ1bmMgKGV4cG9ydCAidGVzdCIpIChwYXJhbSAkc3ogaTMyKSAocmVzdWx0IGkzMikKKyAg
ICAgICAgKGxvY2FsICRhIHYxMjgpCisgICAgICAgIChsb2NhbCAkYiB2MTI4KQorCisgICAgICAg
IChsb2NhbC5zZXQgJGEgKHYxMjguY29uc3QgaTh4MTYgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEg
MTIgMTMgMTQgMTUgMTYpKQorICAgICAgICAobG9jYWwuc2V0ICRiICh2MTI4LmNvbnN0IGk4eDE2
IDkgMCAyIDAgMCAwIDAgMCAwIDAgNSAwIDAgMCAwIDEpKQorCisgICAgICAgIChpOHgxNi5leHRy
YWN0X2xhbmVfdSAxNSAobG9jYWwuZ2V0ICRhKSkKKyAgICAgICAgKGk4eDE2LmV4dHJhY3RfbGFu
ZV91IDE1IChsb2NhbC5nZXQgJGIpKQorCisgICAgICAgIChpMzIuYWRkKQorICAgICAgICAKKyAg
ICAgICAgKHJldHVybikKKyAgICApCisKKyAgICAoZnVuYyAkZm4xIChwYXJhbSAkaSBpMzIpIChw
YXJhbSAkdiB2MTI4KSAocGFyYW0gJGkyIGkzMikgKHJlc3VsdCB2MTI4KQorICAgICAgICAocmV0
dXJuIChsb2NhbC5nZXQgJHYpKQorICAgICkKKworICAgIChmdW5jICRmbjIgKHBhcmFtICRpIGkz
MikgKHBhcmFtICR2IHYxMjgpIChwYXJhbSAkaTIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAg
KHJldHVybiAobG9jYWwuZ2V0ICRpMikpCisgICAgKQorCisgICAgOzsgKGZ1bmMgKGV4cG9ydCAi
d2FybXVwIikgKHBhcmFtICRzeiBpMzIpIChyZXN1bHQgaTMyKQorICAgIDs7ICAgICAoY2FsbCAk
Zm4xIAorICAgIDs7ICAgICAgICAgKGkzMi5jb25zdCAxMzM3KSAKKyAgICA7OyAgICAgICAgICh2
MTI4LmNvbnN0IGk4eDE2IDEwIDIwIDMwIDQwIDUwIDYwIDcwIDgwIDkwIDEwMCAxMTAgMTIwIDEz
MCAxNDAgMTUwIDE2MCkgCisgICAgOzsgICAgICAgICAoaTMyLmNvbnN0IDQyMDAwMDApKQorICAg
IDs7ICAgICAoY2FsbCAkZm4yIAorICAgIDs7ICAgICAgICAgKGkzMi5jb25zdCAxMzM3KSAKKyAg
ICA7OyAgICAgICAgICh2MTI4LmNvbnN0IGk4eDE2IDEwIDIwIDMwIDQwIDUwIDYwIDcwIDgwIDkw
IDEwMCAxMTAgMTIwIDEzMCAxNDAgMTUwIDE2MCkgCisgICAgOzsgICAgICAgICAoaTMyLmNvbnN0
IDQyMDAwMDApKQorICAgIDs7ICAgICAoZHJvcCkKKyAgICA7OyAgICAgKGRyb3ApCisgICAgOzsg
ICAgIChpMzIuY29uc3QgMCkKKyAgICA7OyApCisKKyAgICAoZnVuYyAoZXhwb3J0ICJ0ZXN0MiIp
IChwYXJhbSAkaSBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgICAobG9jYWwgJGEgdjEyOCkKKyAg
ICAgICAgKGxvY2FsLnNldCAkYSAodjEyOC5jb25zdCBpOHgxNiAxIDIgMyA0IDUgNiA3IDggOSAx
MCAxMSAxMiAxMyAxNCAxNSAxNikpCisKKyAgICAgICAgKGk4eDE2LmV4dHJhY3RfbGFuZV91IDEz
IAorICAgICAgICAgICAgKGNhbGwgJGZuMSAKKyAgICAgICAgICAgICAgICAoaTMyLmNvbnN0IDEz
MzcpIAorICAgICAgICAgICAgICAgICh2MTI4LmNvbnN0IGk4eDE2IDEwIDIwIDMwIDQwIDUwIDYw
IDcwIDgwIDkwIDEwMCAxMTAgMTIwIDEzMCAxNDAgMTUwIDE2MCkgCisgICAgICAgICAgICAgICAg
KGkzMi5jb25zdCA0MjAwMDAwKSkpCisgICAgICAgIChsb2NhbC5nZXQgJGkpCisgICAgICAgIChp
OHgxNi5leHRyYWN0X2xhbmVfdSAxNCAobG9jYWwuZ2V0ICRhKSkKKworICAgICAgICAoY2FsbCAk
Zm4yIAorICAgICAgICAgICAgKGkzMi5jb25zdCAxMzM3KSAKKyAgICAgICAgICAgICh2MTI4LmNv
bnN0IGk4eDE2IDEwIDIwIDMwIDQwIDUwIDYwIDcwIDgwIDkwIDEwMCAxMTAgMTIwIDEzMCAxNDAg
MTUwIDE2MCkgCisgICAgICAgICAgICAoaTMyLmNvbnN0IDQyMDAwMDApKQorCisgICAgICAgIChp
MzIuYWRkKQorICAgICAgICAoaTMyLmFkZCkKKyAgICAgICAgKGkzMi5hZGQpCisgICAgICAgIAor
ICAgICAgICAocmV0dXJuKQorICAgICkKKykKK2AKKworYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsK
KyAgICBjb25zdCBpbnN0YW5jZSA9IGF3YWl0IGluc3RhbnRpYXRlKHdhdCwge30sIHsgc2ltZDog
dHJ1ZSB9KQorICAgIGNvbnN0IHsgdGVzdCwgdGVzdDIgfSA9IGluc3RhbmNlLmV4cG9ydHMKKwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydC5lcSh0
ZXN0KDQyKSwgMTYrMSkKKyAgICAgICAgYXNzZXJ0LmVxKHRlc3QyKDUwMDApLCAxNDArNTAwMCsx
NSs0MjAwMDAwKQorICAgIH0KK30KKworYXNzZXJ0LmFzeW5jVGVzdCh0ZXN0KCkpCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3dhc20vc3RyZXNzL3NpbWQtY29uc3QuanMgYi9KU1Rlc3RzL3dhc20vc3Ry
ZXNzL3NpbWQtY29uc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li43YTA3ZWFjOTVkOGMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vc3RyZXNzL3Np
bWQtY29uc3QuanMKQEAgLTAsMCArMSwyOCBAQAoraW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9t
ICIuLi93YWJ0LXdyYXBwZXIuanMiCitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAiLi4vYXNzZXJ0
LmpzIgorCitsZXQgd2F0ID0gYAorKG1vZHVsZQorICAgIChmdW5jIChleHBvcnQgInRlc3QiKSAo
cGFyYW0gJHN6IGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIChpMzIuY29uc3QgOSkKKyAgICAg
ICAgKGRyb3ApCisgICAgICAgIChyZXR1cm4gKGk4eDE2LmV4dHJhY3RfbGFuZV91IDEgKHYxMjgu
Y29uc3QgaTh4MTYgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYpKSkKKyAg
ICApCisKKyAgICAoZnVuYyAoZXhwb3J0ICJ0ZXN0MiIpIChwYXJhbSAkc3ogaTMyKSAocmVzdWx0
IGkzMikKKyAgICAgICAgKHJldHVybiAoaTh4MTYuZXh0cmFjdF9sYW5lX3UgMTIgKHYxMjguY29u
c3QgaTh4MTYgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYpKSkKKyAgICAp
CispCitgCisKK2FzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgY29uc3QgaW5zdGFuY2UgPSBh
d2FpdCBpbnN0YW50aWF0ZSh3YXQsIHt9LCB7IHNpbWQ6IHRydWUgfSkKKyAgICBjb25zdCB7IHRl
c3QsIHRlc3QyIH0gPSBpbnN0YW5jZS5leHBvcnRzCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0LmVxKHRlc3QoNDIpLCAyKQorICAgICAgICBh
c3NlcnQuZXEodGVzdDIoNDgpLCAxMyk7CisgICAgfQorfQorCithc3NlcnQuYXN5bmNUZXN0KHRl
c3QoKSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24gYi9KU1Rlc3RzL3dhc20v
d2FzbS5qc29uCmluZGV4IDMyYzhhZjhiYmY1Ny4uNWNhZjcxYTlhOWVkIDEwMDY0NAotLS0gYS9K
U1Rlc3RzL3dhc20vd2FzbS5qc29uCisrKyBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KQEAgLTEx
LDYgKzExLDcgQEAKICAgICAgICAgImk2NCI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2
YWx1ZSI6ICAgLTIsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAiZjMyIjogICAg
ICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogICAtMywgImIzdHlwZSI6ICJCMzo6Rmxv
YXQiIH0sCiAgICAgICAgICJmNjQiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUi
OiAgIC00LCAiYjN0eXBlIjogIkIzOjpEb3VibGUiIH0sCisgICAgICAgICJ2MTI4IjogICAgICB7
ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgMTIzLCAiYjN0eXBlIjogIkIzOjpWMTI4IiB9
LAogICAgICAgICAiZnVuY3JlZiI6ICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0x
NiwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCiAgICAgICAgICJleHRlcm5yZWYiOiB7ICJ0eXBl
IjogInZhcmludDciLCAidmFsdWUiOiAgLTE3LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKICAg
ICAgICAgInJlZl9udWxsIjogIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMjAsICJi
M3R5cGUiOiAiQjM6OkludDY0IiB9LApAQCAtMTgsNyArMTksNyBAQAogICAgICAgICAiZnVuYyI6
ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zMiwgImIzdHlwZSI6ICJCMzo6
Vm9pZCIgfSwKICAgICAgICAgInZvaWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1
ZSI6ICAtNjQsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0KICAgICB9LAotICAgICJ2YWx1ZV90eXBl
IjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAiZXh0ZXJucmVmIiwgImZ1bmNyZWYiXSwK
KyAgICAidmFsdWVfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0IiwgImV4dGVybnJl
ZiIsICJmdW5jcmVmIiwgInYxMjgiXSwKICAgICAiYmxvY2tfdHlwZSI6IFsiaTMyIiwgImk2NCIs
ICJmMzIiLCAiZjY0IiwgInZvaWQiLCAiZXh0ZXJucmVmIiwgImZ1bmNyZWYiXSwKICAgICAicmVm
X3R5cGUiOiBbImZ1bmNyZWYiLCAiZXh0ZXJucmVmIiwgInJlZiIsICJyZWZfbnVsbCJdLAogICAg
ICJleHRlcm5hbF9raW5kIjogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NmJk
ZmUwNzUzODQuLmQ5MmI1ZWMxYTFlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTg3Myw3ICs4NzMsMTAgQEAKIAkJNDQ0M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8qIEZvdW5kYXRp
b24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICov
OyB9OwogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxNTM5QjgxMkRDOTk0NTAwRUY3QUM0
IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNjk5NDhF
REU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNEIxMTY3QTAyNzVFQUEz
NjAwOEI0RDA4IC8qIFNpbWRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QjExNjc5RjI3NUVBQTM2MDA4QjREMDggLyogU2ltZEluZm8uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0QjYyNUEyNjI3
M0MzOTRFMDAzQkY1MDMgLyogQjNDb25zdDEyOFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNjI1QTI1MjczQzM5NEUwMDNCRjUwMyAvKiBC
M0NvbnN0MTI4VmFsdWUuY3BwICovOyB9OwogCQk0QkFBMDdDRUI4MUY0OUEyOTZFMDIyMDMgLyog
V2FzbVNpZ25hdHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMwQTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtU2lnbmF0dXJlSW5s
aW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTRCRTg5QkZCMjc0ODUxMzMwMDc5MDk3NyAvKiBCM1NpbWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJFODlCRjgyNzQ4NTEzMzAwNzkwOTc3
IC8qIEIzU2ltZFZhbHVlLmggKi87IH07CiAJCTUyMEQ5OUYxMjM4OENDODEwMDA1MDlBMyAvKiBH
ZXRCeVZhbEhpc3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyMEQ5OUYwMjM4OENDNzgwMDA1MDlBMyAvKiBHZXRCeVZhbEhpc3RvcnkuaCAqLzsg
fTsKIAkJNTIxMTMxRjcxRjgyQkYxNDAwN0NDRUVFIC8qIFBvbHlQcm90b0FjY2Vzc0NoYWluLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjExMzFGNjFG
ODJCRjExMDA3Q0NFRUUgLyogUG9seVByb3RvQWNjZXNzQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MjEzMjI0NjFFQ0JDRTgyMDBGNjU2
MTUgLyogV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyMTMyMjQ0MUVDQkNFODIwMEY2NTYxNSAvKiBXZWJBc3Nl
bWJseUZ1bmN0aW9uQmFzZS5oICovOyB9OwpAQCAtMTc5NCw2ICsxNzk3LDcgQEAKIAkJQ0QxRjlC
NEIyNzBDRkUwRjAwNjE3RUI2IC8qIFN0cm9uZ0ZvcndhcmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5QjRBMjcwQ0ZFMEYwMDYxN0VCNiAvKiBT
dHJvbmdGb3J3YXJkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0UyMEJEMDUyMzdEM0UyMzAwNDZFNTIwIC8qIEZpbGVCYXNlZEZ1enplckFnZW50
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Uy
MEJEMDMyMzdEM0FENDAwNDZFNTIwIC8qIEZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5oICovOyB9
OwogCQlDRTIwQkQwNzIzN0QzRTQ4MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1
enplckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTIwQkQwMTIzN0QzQUQ0MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enpl
ckFnZW50LmggKi87IH07CisJCUNFNkVDMjFFMjczQjQ1QUUwMDE1OThFMyAvKiBCM0NvbnN0MTI4
VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
NkVDMjFEMjczQjQ1QUUwMDE1OThFMyAvKiBCM0NvbnN0MTI4VmFsdWUuaCAqLzsgfTsKIAkJQ0VB
RTdEN0I4ODlCNDc3QkE5M0FCQTZDIC8qIFNjcmlwdEZldGNoZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg4NTIxNTFBOUMzODQyMzg5QjMyMTVCNyAv
KiBTY3JpcHRGZXRjaGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQ0VDRkFEMzYyMzcyREFEMDAwMjkxNTk5IC8qIEZ1enplclByZWRpY3Rpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNGQUQz
NDIzNzJEQUE3MDAyOTE1OTkgLyogRnV6emVyUHJlZGljdGlvbnMuaCAqLzsgfTsKIAkJQ0VDRkFE
MzcyMzcyREFENDAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNGQUQzMjIzNzJEQUE3MDAyOTE1
OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCAqLzsgfTsKQEAgLTM3NDgsNiArMzc1MiwxMCBA
QAogCQk0NDJGQkQ4NTIxNDlEMUUwMDA3MzUxOUMgLyogaGFzaGVyLnB5ICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBu
YW1lID0gaGFzaGVyLnB5OyBwYXRoID0geWFyci9oYXNoZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ1MTUzOUI4MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnIuaDsgcGF0aCA9IHlhcnIvWWFyci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IGpzYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gNDsgfTsKKwkJ
NEIxMTY3OUYyNzVFQUEzNjAwOEI0RDA4IC8qIFNpbWRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNp
bWRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCNjI1QTI1MjczQzM5NEUw
MDNCRjUwMyAvKiBCM0NvbnN0MTI4VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNDb25z
dDEyOFZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzQ29uc3QxMjhWYWx1ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTRCRTg5QkY3Mjc0ODUxMzMwMDc5MDk3NyAvKiBCM1NpbWRWYWx1
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1NpbWRWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1Np
bWRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCRTg5QkY4Mjc0ODUx
MzMwMDc5MDk3NyAvKiBCM1NpbWRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1NpbWRWYWx1ZS5o
OyBwYXRoID0gYjMvQjNTaW1kVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NENFOTc4RTM4NUE4NDk4MTk5MDUyMTUzIC8qIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2Fz
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUYwRUI2MTA1Qzg2QzZCMDBFNkRG
MUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEZvdW5kYXRpb24u
ZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5m
cmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCTUxRjBFQzA3MDVDODZD
OUEwMEU2REYxQiAvKiBsaWJvYmpjLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJv
YmpjLmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGlib2JqYy5keWxpYjsgc291cmNlVHJlZSA9ICI8
YWJzb2x1dGU+IjsgfTsKQEAgLTUxNTgsNiArNTE2Niw3IEBACiAJCUNFMjdBM0Q4MjM3NTlCQUMw
MDg5NjA1RSAvKiBOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjdBM0Q5MjM3NUE2REMwMDg5NjA1RSAvKiBOdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTnVtYmVyUHJlZGlj
dGlvbkZ1enplckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyN0Ez
REEyMzc1QTZEQzAwODk2MDVFIC8qIE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0U2RUMyMUQyNzNCNDVBRTAwMTU5OEUzIC8qIEIzQ29uc3QxMjhWYWx1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM0NvbnN0MTI4VmFsdWUuaDsgcGF0aCA9IGIzL0IzQ29uc3Qx
MjhWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUNGQUQzMjIzNzJEQUE3
MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZUJh
c2VkRnV6emVyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VDRkFEMzMy
MzcyREFBNzAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZpbGVCYXNlZEZ1enplckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0VDRkFEMzQyMzcyREFBNzAwMjkxNTk5IC8qIEZ1enplclByZWRpY3Rpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZ1enplclByZWRpY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC02MTAzLDYgKzYxMTIsMTAgQEAKIAkJCQkwRkVDODRDNDFCREFDREFDMDA4MEZGNzQg
LyogQjNDb25zdDMyVmFsdWUuaCAqLywKIAkJCQkwRkVDODRDNTFCREFDREFDMDA4MEZGNzQgLyog
QjNDb25zdDY0VmFsdWUuY3BwICovLAogCQkJCTBGRUM4NEM2MUJEQUNEQUMwMDgwRkY3NCAvKiBC
M0NvbnN0NjRWYWx1ZS5oICovLAorCQkJCTRCNjI1QTI1MjczQzM5NEUwMDNCRjUwMyAvKiBCM0Nv
bnN0MTI4VmFsdWUuY3BwICovLAorCQkJCUNFNkVDMjFEMjczQjQ1QUUwMDE1OThFMyAvKiBCM0Nv
bnN0MTI4VmFsdWUuaCAqLywKKwkJCQk0QkU4OUJGNzI3NDg1MTMzMDA3OTA5NzcgLyogQjNTaW1k
VmFsdWUuY3BwICovLAorCQkJCTRCRTg5QkY4Mjc0ODUxMzMwMDc5MDk3NyAvKiBCM1NpbWRWYWx1
ZS5oICovLAogCQkJCTBGRUM4NEM3MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnN0RG91YmxlVmFs
dWUuY3BwICovLAogCQkJCTBGRUM4NEM4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnN0RG91Ymxl
VmFsdWUuaCAqLywKIAkJCQk0MzQyMkE2MDFDMTU4NzFCMDBFMkVCOTggLyogQjNDb25zdEZsb2F0
VmFsdWUuY3BwICovLApAQCAtNjYwNyw2ICs2NjIwLDcgQEAKIAkJCQlBNzM4NjU1MjExODY5N0I0
MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNwcCAqLywKIAkJCQlBNzM4NjU1MzExODY5N0I0
MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmggKi8sCiAJCQkJNjU5ODdGMkYxNjgyOEE3RTAw
M0MyRjhEIC8qIFVudXNlZFBvaW50ZXIuaCAqLywKKwkJCQk0QjExNjc5RjI3NUVBQTM2MDA4QjRE
MDggLyogU2ltZEluZm8uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaml0OwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTk2MjcsNiArOTY0MSw3IEBACiAJCQkJMEY2MTgzMzExQzQ1QkYw
NzAwNzI0NTBCIC8qIEFpckxvd2VyTWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVDRjk4
NDFFOUQ1Mzc3MDBDMTg2OTIgLyogQWlyTG93ZXJTdGFja0FyZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNDBFNEE3MUM0OTdGNzQwMEE1NzdGQSAvKiBBaXJPcGNvZGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTRCRTg5QkZCMjc0ODUxMzMwMDc5MDk3NyAvKiBCM1NpbWRWYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY0MEU0QTgxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9wY29kZUdlbmVyYXRl
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MEU0QTkxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZVV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIzODc5MDFCRkJDNDREMDBFM0FCMUUg
LyogQWlyT3B0aW1pemVCbG9ja09yZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNDA3LDYgKzEw
NDIyLDcgQEAKIAkJCQkwRkIzOTlCRjIwQUY2QjNGMDAxN0UyMTMgLyogSW5zdGFuY2VPZlN0YXR1
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMzk5QzAyMEFGNkI0MzAwMTdFMjEzIC8qIEluc3Rh
bmNlT2ZWYXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEE0NjgwQzIxNkZBNTY1MDAwRDJC
MUEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNFNkVDMjFFMjczQjQ1QUUw
MDE1OThFMyAvKiBCM0NvbnN0MTI4VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QzI1QjlF
MjE2RUEzNkEwMDEzNzc2NCAvKiBJbnN0cnVjdGlvblN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTdBOEFGM0IxN0FEQjVGMzAwNUFCMTc0IC8qIEludDE2QXJyYXkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3QThBRjNDMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggaW4gSGVhZGVy
cyAqLywKQEAgLTExMjUwLDYgKzExMjY2LDcgQEAKIAkJCQlBN0RDQjk3MzEyRTUxOTNGMDA5MTE5
NDAgLyogV3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkI2RDc1MzE4QTMzNzkz
MDA0QTkzMDEgLyogV3JpdGVCYXJyaWVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZD
ODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTRCMTE2N0EwMjc1RUFBMzYwMDhCNEQwOCAvKiBTaW1kSW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDkyIC8qIFg4Nl82NFJlZ2lzdGVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDkxIC8qIFg4
NlJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjAzNSw2ICsxMjA1Miw3IEBACiAJCQkJ
RTM5MkU2RjgyNEQyNUZBNjAwQjIwNzY3IC8qIEIzQm90dG9tVHVwbGVWYWx1ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MkU2NUExQzI3NjgyNzYwMDAyQjRDMEEgLyogQjNFc3RpbWF0ZVN0YXRp
Y0V4ZWN1dGlvbkNvdW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODVBRjFCREI1RDVF
MDA4MEZGNzQgLyogdGVzdGIzXzEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNEI2MjVBMjYyNzND
Mzk0RTAwM0JGNTAzIC8qIEIzQ29uc3QxMjhWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
QzNBNzdCQTIyRjI0ODBGMDAzODI3RkYgLyogdGVzdGIzXzIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUMzQTc3QjkyMkYyNDgwQjAwMzgyN0ZGIC8qIHRlc3RiM18zLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTVDM0E3N0I4MjJGMjQ4MDkwMDM4MjdGRiAvKiB0ZXN0YjNfNC5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA3YTBlYmZlNjk4MWQuLmZjNDI4
NmU5YmY3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTI0LDYgKzEyNCw3IEBA
IGIzL0IzQ29tbXV0YXRpdml0eS5jcHAKIGIzL0IzQ29tcGlsZS5jcHAKIGIzL0IzQ29uc3QzMlZh
bHVlLmNwcAogYjMvQjNDb25zdDY0VmFsdWUuY3BwCitiMy9CM0NvbnN0MTI4VmFsdWUuY3BwCiBi
My9CM0NvbnN0RG91YmxlVmFsdWUuY3BwCiBiMy9CM0NvbnN0RmxvYXRWYWx1ZS5jcHAKIGIzL0Iz
Q29uc3RyYWluZWRWYWx1ZS5jcHAKQEAgLTE2NCw2ICsxNjUsNyBAQCBiMy9CM1B1cmVDU0UuY3Bw
CiBiMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCiBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5j
cHAKIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwCitiMy9CM1NpbWRWYWx1ZS5jcHAKIGIzL0IzU1NB
Q2FsY3VsYXRvci5jcHAKIGIzL0IzU2xvdEJhc2VWYWx1ZS5jcHAKIGIzL0IzU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BUk02NEFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
Uk02NEFzc2VtYmxlci5oCmluZGV4IDZlOTFkOTIzMGEzOS4uMWJlMDc4ODQ2MWYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCkBAIC00
MSw5ICs0MSw5IEBACiAjaW5jbHVkZSA8emlyY29uL3N5c2NhbGxzLmg+CiAjZW5kaWYKIAotI2Rl
ZmluZSBDSEVDS19EQVRBU0laRV9PRihkYXRhc2l6ZSkgc3RhdGljX2Fzc2VydChkYXRhc2l6ZSA9
PSAzMiB8fCBkYXRhc2l6ZSA9PSA2NCkKKyNkZWZpbmUgQ0hFQ0tfREFUQVNJWkVfT0YoZGF0YXNp
emUpIHN0YXRpY19hc3NlcnQoZGF0YXNpemUgPT0gMzIgfHwgZGF0YXNpemUgPT0gNjQgfHwgZGF0
YXNpemUgPT0gMTI4KQogI2RlZmluZSBDSEVDS19NRU1PUFNJWkVfT0Yoc2l6ZSkgc3RhdGljX2Fz
c2VydChzaXplID09IDggfHwgc2l6ZSA9PSAxNiB8fCBzaXplID09IDMyIHx8IHNpemUgPT0gNjQg
fHwgc2l6ZSA9PSAxMjgpOwotI2RlZmluZSBEQVRBU0laRV9PRihkYXRhc2l6ZSkgKChkYXRhc2l6
ZSA9PSA2NCkgPyBEYXRhc2l6ZV82NCA6IERhdGFzaXplXzMyKQorI2RlZmluZSBEQVRBU0laRV9P
RihkYXRhc2l6ZSkgKChkYXRhc2l6ZSA9PSA2NCkgPyBEYXRhc2l6ZV82NCA6ICgoZGF0YXNpemUg
PT0gMTI4KSA/IERhdGFzaXplXzEyOCA6IERhdGFzaXplXzMyKSkKICNkZWZpbmUgTUVNT1BTSVpF
X09GKGRhdGFzaXplKSAoKGRhdGFzaXplID09IDggfHwgZGF0YXNpemUgPT0gMTI4KSA/IE1lbU9w
U2l6ZV84X29yXzEyOCA6IChkYXRhc2l6ZSA9PSAxNikgPyBNZW1PcFNpemVfMTYgOiAoZGF0YXNp
emUgPT0gMzIpID8gTWVtT3BTaXplXzMyIDogTWVtT3BTaXplXzY0KQogI2RlZmluZSBDSEVDS19E
QVRBU0laRSgpIENIRUNLX0RBVEFTSVpFX09GKGRhdGFzaXplKQogI2RlZmluZSBDSEVDS19NRU1P
UFNJWkUoKSBDSEVDS19NRU1PUFNJWkVfT0YoZGF0YXNpemUpCkBAIC0xODcsNyArMTg3LDYgQEAg
dHlwZWRlZiBlbnVtIDogaW50OF90IHsKIAogLy8gQVJNNjQgYWx3YXlzIGhhcyAzMiBGUFUgcmVn
aXN0ZXJzIDEyOC1iaXRzIGVhY2guIFNlZSBodHRwOi8vbGx2bS5vcmcvZGV2bXRnLzIwMTItMTEv
Tm9ydGhvdmVyLUFBcmNoNjQucGRmCiAvLyBhbmQgU2VjdGlvbiA1LjEuMiBpbiBodHRwOi8vaW5m
b2NlbnRlci5hcm0uY29tL2hlbHAvdG9waWMvY29tLmFybS5kb2MuaWhpMDA1NWIvSUhJMDA1NUJf
YWFwY3M2NC5wZGYuCi0vLyBIb3dldmVyLCB3ZSBvbmx5IHVzZSB0aGVtIGZvciA2NC1iaXQgZG91
Ymxlcy4KIHR5cGVkZWYgZW51bSA6IGludDhfdCB7CiAjZGVmaW5lIFJFR0lTVEVSX0lEKGlkLCBu
YW1lLCByLCBjcykgaWQsCiAgICAgRk9SX0VBQ0hfRlBfUkVHSVNURVIoUkVHSVNURVJfSUQpCkBA
IC01MjIsOCArNTIxLDggQEAgcHJvdGVjdGVkOgogICAgIGVudW0gRGF0YXNpemUgewogICAgICAg
ICBEYXRhc2l6ZV8zMiwKICAgICAgICAgRGF0YXNpemVfNjQsCi0gICAgICAgIERhdGFzaXplXzY0
X3RvcCwKLSAgICAgICAgRGF0YXNpemVfMTYKKyAgICAgICAgRGF0YXNpemVfMTI4LAorICAgICAg
ICBEYXRhc2l6ZV8xNiwKICAgICB9OwogCiAgICAgZW51bSBNZW1PcFNpemUgewpAQCAtMTQ3OCw2
ICsxNDc3LDQ0IEBAIHB1YmxpYzoKICAgICAgICAgbXN1YjxkYXRhc2l6ZT4ocmQsIHJuLCBybSwg
QVJNNjRSZWdpc3RlcnM6OnpyKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTxpbnQgbGFuZXNpemU+
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGlucyhGUFJlZ2lzdGVySUQgdmQsIHVpbnQzMl90IGxh
bmUsIFJlZ2lzdGVySUQgcm4pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKGxhbmVzaXpl
ID09IDY0KSB7CisgICAgICAgICAgICBBU1NFUlQobGFuZSA8IDIpOworICAgICAgICAgICAgaW50
IFRzID0gMGIwMTAwMDsKKyAgICAgICAgICAgIGludCBpbW01ID0gKGxhbmUgPDwgNCkgfCBUczsK
KyAgICAgICAgICAgIGludCBpbW00ID0gMGIwMDExOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBpbnNuKHNpbWRFbGVtZW50KDEsIGltbTUsIGltbTQsIHJuLCB2ZCkpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChsYW5lc2l6ZSB8fCAhbGFuZXNpemUsICJ0
aGlzIGxhbmVzaXplIGlzIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
KyAgICB0ZW1wbGF0ZTxpbnQgbGFuZXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHVtb3Yo
UmVnaXN0ZXJJRCByZCwgRlBSZWdpc3RlcklEIHZuLCB1aW50MzJfdCBsYW5lKQorICAgIHsKKyAg
ICAgICAgaWYgY29uc3RleHByIChsYW5lc2l6ZSA9PSA4KSB7CisgICAgICAgICAgICBBU1NFUlQo
bGFuZSA8IDE2KTsKKyAgICAgICAgICAgIGJvb2wgUSA9IDA7CisgICAgICAgICAgICBpbnQgVHMg
PSAwYjAwMDAxOworICAgICAgICAgICAgaW50IGltbTUgPSAobGFuZSA8PCAxKSB8IFRzOworICAg
ICAgICAgICAgaW50IGltbTQgPSAwYjAxMTE7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlu
c24oc2ltZEVsZW1lbnQoUSwgaW1tNSwgaW1tNCwgdm4sIHJkKSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KGxhbmVzaXplIHx8ICFsYW5lc2l6ZSwgInRoaXMg
bGFuZXNpemUgaXMgbm90IHN1cHBvcnRlZCIpOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IHRlbXBsYXRlPGludCBsYW5lc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW1vdihGUFJl
Z2lzdGVySUQgcmQsIHVpbnQzMl90IGxhbmUsIEZQUmVnaXN0ZXJJRCBydCkKKyAgICB7CisgICAg
ICAgICh2b2lkKSByZDsgKHZvaWQpIHJ0OyAgKHZvaWQpIGxhbmU7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKICAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIG1vdihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJtKQog
ICAgIHsKQEAgLTIzOTcsMTQgKzI0MzQsMTQgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCB2YW5kKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQg
dm0pCiAgICAgewogICAgICAgICBDSEVDS19WRUNUT1JfREFUQVNJWkUoKTsKLSAgICAgICAgaW5z
bih2ZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwoU0lNRF9Mb2dpY2FsT3BfQU5ELCB2bSwgdm4s
IHZkKSk7CisgICAgICAgIGluc24odmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsKGRhdGFzaXpl
LCBTSU1EX0xvZ2ljYWxPcF9BTkQsIHZtLCB2biwgdmQpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTxpbnQgZGF0YXNpemU+CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHZvcnIoRlBSZWdpc3RlcklE
IHZkLCBGUFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2bSkKICAgICB7CiAgICAgICAgIENI
RUNLX1ZFQ1RPUl9EQVRBU0laRSgpOwotICAgICAgICBpbnNuKHZlY3RvckRhdGFQcm9jZXNzaW5n
TG9naWNhbChTSU1EX0xvZ2ljYWxPcF9PUlIsIHZtLCB2biwgdmQpKTsKKyAgICAgICAgaW5zbih2
ZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwoZGF0YXNpemUsIFNJTURfTG9naWNhbE9wX09SUiwg
dm0sIHZuLCB2ZCkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KQEAgLTM1
ODAsOSArMzYxNyw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuICgweDFlMjAwODAwIHwg
TSA8PCAzMSB8IFMgPDwgMjkgfCB0eXBlIDw8IDIyIHwgcm0gPDwgMTYgfCBvcGNvZGUgPDwgMTIg
fCBybiA8PCA1IHwgcmQpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGludCB2
ZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwoU0lNRDNTYW1lTG9naWNhbCB1QW5kU2l6ZSwgRlBS
ZWdpc3RlcklEIHZtLCBGUFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2ZCkKKyAgICBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBpbnQgdmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsKGludCBkYXRh
c2l6ZSwgU0lNRDNTYW1lTG9naWNhbCB1QW5kU2l6ZSwgRlBSZWdpc3RlcklEIHZtLCBGUFJlZ2lz
dGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2ZCkKICAgICB7Ci0gICAgICAgIGNvbnN0IGludCBRID0g
MDsKKyAgICAgICAgaW50IFEgPSBkYXRhc2l6ZSAvIDEyODsKICAgICAgICAgcmV0dXJuICgweGUy
MDA0MDAgfCBRIDw8IDMwIHwgdUFuZFNpemUgPDwgMjIgfCB2bSA8PCAxNiB8IFNJTURfTG9naWNh
bE9wIDw8IDExIHwgdm4gPDwgNSB8IHZkKTsKICAgICB9CiAKQEAgLTM4NDQsNiArMzg4MSwxMSBA
QCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICByZXR1cm4gMHgxZTdlMDAwMCB8IChkbiA8PCA1
KSB8IHJkOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgaW50IHNpbWRFbGVtZW50KGJvb2wgUSwg
aW50IGltbTUsIGludCBpbW00LCBpbnQgcm4sIGludCByZCkKKyAgICB7CisgICAgICAgIHJldHVy
biAwYjAnMCcwJzAxMTEwMDAwJzAwMDAwJzAnMDAnMScxJzEnMDAwMDAnMDAwMDAgfCAoUSA8PCAz
MCkgfCAoaW1tNSA8PCAxNikgfCAoaW1tNCA8PCAxMSkgfCAocm4gPDwgNSkgfCByZDsKKyAgICB9
CiAKICAgICBWZWN0b3I8TGlua1JlY29yZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fanVt
cHNUb0xpbms7CiAgICAgaW50IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRl
eCAxYzE1ZjJmZTQwNjEuLmQ2NDA3M2MwYzBkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJBUk02NEFzc2VtYmxlci5oIgogI2luY2x1ZGUgIkFic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25WYWxpZGF0aW9uLmgiCisjaW5jbHVk
ZSAiU2ltZEluZm8uaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKQEAgLTI0NDMsNiArMjQ0NCwzNSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Fz
c2VtYmxlci5mZGl2PDMyPihkZXN0LCBvcDEsIG9wMik7CiAgICAgfQorICAgIAorICAgIHZvaWQg
bG9hZFZlY3RvcihBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgaWYgKHRyeUxvYWRXaXRoT2Zmc2V0PDEyOD4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLm9mZnNldCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc2lnbkV4dGVuZDMy
VG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5sZHI8MTI4Pihk
ZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgfQorCisgICAgdm9p
ZCBsb2FkVmVjdG9yKEJhc2VJbmRleCBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIGlmIChhZGRyZXNzLnNjYWxlID09IFRpbWVzT25lIHx8IGFkZHJlc3Muc2NhbGUg
PT0gVGltZXNFaWdodCkgeworICAgICAgICAgICAgaWYgKGF1dG8gYmFzZUdQUiA9IHRyeUZvbGRC
YXNlQW5kT2Zmc2V0UGFydChhZGRyZXNzKSkgeworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmxkcjwxMjg+KGRlc3QsIGJhc2VHUFIudmFsdWUoKSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRl
bmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihU
cnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDwxMjg+KG1lbW9yeVRl
bXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVu
ZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5sZHI8
MTI4PihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgfQorICAg
IAorICAgIHZvaWQgbG9hZFZlY3RvcihUcnVzdGVkSW1tUHRyIGFkZHJlc3MsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZVRvQ2FjaGVkUmVnKGFkZHJlc3MsIGNhY2hlZE1l
bW9yeVRlbXBSZWdpc3RlcigpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRyPDEyOD4oZGVzdCwg
bWVtb3J5VGVtcFJlZ2lzdGVyLCBBUk02NFJlZ2lzdGVyczo6enIpOworICAgIH0KIAogICAgIHZv
aWQgbG9hZERvdWJsZShBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
QEAgLTI1MDYsNiArMjUzNiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxl
ci5mbW92PDY0PihkZXN0LCBzcmMpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIG1vdmVWZWN0b3Io
RlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci52b3JyPDEyOD4oZGVzdCwgc3JjLCBzcmMpOworICAgIH0KIAogICAgIHZvaWQgbW92
ZVplcm9Ub0RvdWJsZShGUFJlZ2lzdGVySUQgcmVnKQogICAgIHsKQEAgLTI3OTcsNiArMjgzMiwz
NSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lz
dGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShh
ZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjwzMj4oc3Jj
LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQorICAgIAorICAgIHZv
aWQgc3RvcmVWZWN0b3IoRlBSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgaWYgKHRyeVN0b3JlV2l0aE9mZnNldDwxMjg+KHNyYywgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLm9mZnNldCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc2lnbkV4dGVu
ZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVt
cFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MTI4
PihzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICB2
b2lkIHN0b3JlVmVjdG9yKEZQUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW1QdHIgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1vdmVUb0NhY2hlZFJlZyhhZGRyZXNzLCBjYWNoZWRNZW1vcnlUZW1w
UmVnaXN0ZXIoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0cjwxMjg+KHNyYywgbWVtb3J5VGVt
cFJlZ2lzdGVyLCBBUk02NFJlZ2lzdGVyczo6enIpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVW
ZWN0b3IoRlBSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBpZiAoYWRkcmVzcy5zY2FsZSA9PSBUaW1lc09uZSB8fCBhZGRyZXNzLnNjYWxlID09IFRpbWVz
RWlnaHQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGJhc2VHUFIgPSB0cnlGb2xkQmFzZUFuZE9m
ZnNldFBhcnQoYWRkcmVzcykpIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MTI4
PihzcmMsIGJhc2VHUFIudmFsdWUoKSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFk
ZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1t
MzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDwxMjg+KG1lbW9yeVRlbXBSZWdpc3Rl
ciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRk
cmVzcyksIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MTI4PihzcmMs
IGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICB9CiAKICAgICB2b2lkIHN1
YkRvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC00
NTYxLDYgKzQ2MjUsMTYgQEAgcHVibGljOgogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoRkFTVF9U
TFNfSklUKQogICAgIAorICAgIHZvaWQgcmVwbGFjZUxhbmUoU2ltZExhbmVJbnRlcnByZXRhdGlv
biwgU2ltZFNpZ25FeHRlbmRNb2RlLCBUcnVzdGVkSW1tMzIgbGFuZSwgUmVnaXN0ZXJJRCBzcmMs
IEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuaW5zPDY0Pihk
ZXN0LCBsYW5lLm1fdmFsdWUsIHNyYyk7CisgICAgfQorICAgIAorICAgIHZvaWQgZXh0cmFjdExh
bmUoU2ltZExhbmVJbnRlcnByZXRhdGlvbiwgU2ltZFNpZ25FeHRlbmRNb2RlLCBUcnVzdGVkSW1t
MzIgbGFuZSwgRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIudW1vdjw4PihkZXN0LCBzcmMsIGxhbmUubV92YWx1ZSk7CisgICAgfQor
ICAgIAogICAgIC8vIE1pc2MgaGVscGVyIGZ1bmN0aW9ucy4KIAogICAgIC8vIEludmVydCBhIHJl
bGF0aW9uYWwgY29uZGl0aW9uLCBlLmcuID09IGJlY29tZXMgIT0sIDwgYmVjb21lcyA+PSwgZXRj
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oCmluZGV4IDA0NWRlZmVkYjE1NC4uOTRiZDQ2NzVkNjZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgQ1BVKFg4Nl82
NCkKIAogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgiCisjaW5jbHVkZSAiU2lt
ZEluZm8uaCIKIAogI2RlZmluZSBSRVBBVENIX09GRlNFVF9DQUxMX1IxMSAzCiAKQEAgLTEwNDcs
NiArMTA0OCwzNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX3Jy
KHNyYywgZGVzdCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgbW92ZVZlY3RvcihGUFJlZ2lzdGVy
SUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm1v
dmFwc19ycihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRWZWN0b3IoVHJ1
c3RlZEltbVB0ciBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1v
dmUoYWRkcmVzcywgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICBsb2FkVmVjdG9yKEFkZHJl
c3Moc2NyYXRjaFJlZ2lzdGVyKCkpLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRWZWN0
b3IoQWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLnZtb3Z1cHNfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7
CisgICAgfQorCisgICAgdm9pZCBsb2FkVmVjdG9yKEJhc2VJbmRleCBhZGRyZXNzLCBGUFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3Z1cHNfbXIoYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSwgZGVz
dCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVWZWN0b3IoRlBSZWdpc3RlcklEIHNyYywg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdnVwc19ybShz
cmMsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IHN0b3JlVmVjdG9yKEZQUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIudm1vdnVwc19ybShzcmMsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KIAogICAgIHZv
aWQgY29tcGFyZTY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBU
cnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC0xOTc0LDYgKzIw
MDYsMTYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hZGRzc19ycihkZXN0LCBkZXN0
KTsKICAgICAgICAgbV9hc3NlbWJsZXIubGlua0p1bXAoZG9uZSwgbV9hc3NlbWJsZXIubGFiZWwo
KSk7CiAgICAgfQorICAgIAorICAgIHZvaWQgcmVwbGFjZUxhbmUoU2ltZExhbmVJbnRlcnByZXRh
dGlvbiwgU2ltZFNpZ25FeHRlbmRNb2RlLCBUcnVzdGVkSW1tMzIgbGFuZSwgUmVnaXN0ZXJJRCBz
cmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIucGluc3I8
NjQ+KGRlc3QsIGxhbmUubV92YWx1ZSwgc3JjKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBleHRy
YWN0TGFuZShTaW1kTGFuZUludGVycHJldGF0aW9uLCBTaW1kU2lnbkV4dGVuZE1vZGUsIFRydXN0
ZWRJbW0zMiBsYW5lLCBGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5wZXh0cjw4PihkZXN0LCBzcmMsIGxhbmUubV92YWx1ZSk7Cisg
ICAgfQogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkg
eyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmgKaW5kZXggOTUwM2I5OWJhYTI5Li5jZDZkZmExYTRkN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtMzE5LDYgKzMx
OSwxMCBAQCBwcml2YXRlOgogICAgICAgICBPUDNfTEZFTkNFICAgICAgICAgICA9IDB4RTgsCiAg
ICAgICAgIE9QM19NRkVOQ0UgICAgICAgICAgID0gMHhGMCwKICAgICAgICAgT1AzX1NGRU5DRSAg
ICAgICAgICAgPSAweEY4LAorICAgICAgICBPUDNfUEVYVFJCICAgICAgICAgICA9IDB4MTQsCisg
ICAgICAgIE9QM19QRVhUUkQgICAgICAgICAgID0gMHgxNiwKKyAgICAgICAgT1AzX1BJTlNSQiAg
ICAgICAgICAgPSAweDIwLAorICAgICAgICBPUDNfUElOU1JEICAgICAgICAgICA9IDB4MjIsCiAg
ICAgfSBUaHJlZUJ5dGVPcGNvZGVJRDsKIAogICAgIHN0cnVjdCBWZXhQcmVmaXggewpAQCAtMjM2
MCw2ICsyMzY0LDMyIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CiAj
ZW5kaWYKKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgbGFuZXNpemU+CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHBpbnNyKFhNTVJlZ2lzdGVySUQgdmQsIHVpbnQzMl90IGxhbmUsIFJlZ2lzdGVySUQg
cm4pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKGxhbmVzaXplID09IDY0KSB7CisgICAg
ICAgICAgICBBU1NFUlQobGFuZSA8IDIpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4
KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIudGhyZWVCeXRlT3A2
NChPUDJfM0JZVEVfRVNDQVBFXzNBLCBPUDNfUElOU1JELCAoUmVnaXN0ZXJJRCkgdmQsIHJuKTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoKHVpbnQ4X3QpIGxhbmUpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChsYW5lc2l6ZSB8fCAhbGFu
ZXNpemUsICJ0aGlzIGxhbmVzaXplIGlzIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgbGFuZXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHBleHRyKFJlZ2lzdGVySUQgcmQsIFhNTVJlZ2lzdGVySUQgdm4sIHVpbnQzMl90IGxhbmUp
CisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKGxhbmVzaXplID09IDgpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChsYW5lIDwgMTYpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBS
RV9PUEVSQU5EX1NJWkUpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIudGhyZWVCeXRlT3A2NChP
UDJfM0JZVEVfRVNDQVBFXzNBLCBPUDNfUEVYVFJCLCAoUmVnaXN0ZXJJRCkgdm4sIHJkKTsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoKHVpbnQ4X3QpIGxhbmUpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChsYW5lc2l6ZSB8fCAhbGFuZXNp
emUsICJ0aGlzIGxhbmVzaXplIGlzIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgfQorICAgIH0K
IAogICAgIHZvaWQgbW92bF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAg
ewpAQCAtMzE4MSw2ICszMjExLDI2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0
dGVyLnR3b0J5dGVPcChPUDJfTU9WQVBTX1ZwZFdwZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0
ZXJJRClzcmMpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIHZtb3Z1cHNfbXIoaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBYTU1SZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnZleFdpZ1R3b0J5dGVPcChPUF8yQllURV9FU0NBUEUsIE9QMl9NT1ZTRF9Wc2RXc2Qs
IChSZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB2
bW92dXBzX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlLCBYTU1SZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnZleFdpZ1R3b0J5dGVPcChPUF8yQllURV9FU0NBUEUsIE9QMl9NT1ZTRF9Wc2RXc2QsIChSZWdp
c3RlcklEKWRzdCwgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHZtb3Z1cHNfcm0oWE1NUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnZleFdpZ1R3b0J5dGVPcChPUF8y
QllURV9FU0NBUEUsIE9QMl9NT1ZTRF9Xc2RWc2QsIChSZWdpc3RlcklEKXNyYywgYmFzZSwgb2Zm
c2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB2bW92dXBzX3JtKFhNTVJlZ2lzdGVySUQgc3Jj
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnZleFdpZ1R3b0J5dGVPcChPUF8yQllURV9F
U0NBUEUsIE9QMl9NT1ZTRF9Xc2RWc2QsIChSZWdpc3RlcklEKXNyYywgb2Zmc2V0LCBiYXNlLCBp
bmRleCwgc2NhbGUpOworICAgIH0KIAogICAgIHZvaWQgbW92c2RfcnIoWE1NUmVnaXN0ZXJJRCBz
cmMsIFhNTVJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTQzMjgsOSArNDM3OCw4IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgY2FzZSAweEYyOgogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gMzsKICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgfTsKQEAgLTQ0NTgsNiArNDUwNywyMiBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKICAgICAgICAgICAgIHdyaXRl
ci5tZW1vcnlNb2RSTUFkZHIocmVnLCBhZGRyZXNzKTsKICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIAorICAgICAgICB2b2lkIHZleFdpZ1R3b0J5dGVPcChPbmVCeXRlT3Bjb2RlSUQgc2ltZFBy
ZWZpeCwgVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklE
IGJhc2UsIGludCBvZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0
aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIudGhy
ZWVCeXRlc1ZleE5kcyhzaW1kUHJlZml4LCBWZXhJbXBsaWVkQnl0ZXM6OlR3b0J5dGVzT3AsIGRl
c3QsIChSZWdpc3RlcklEKSAwLCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5j
aGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0oZGVzdCwgYmFz
ZSwgb2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICB2b2lkIHZl
eFdpZ1R3b0J5dGVPcChPbmVCeXRlT3Bjb2RlSUQgc2ltZFByZWZpeCwgVHdvQnl0ZU9wY29kZUlE
IG9wY29kZSwgUmVnaXN0ZXJJRCBkZXN0LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICAgICAgeworICAgICAgICAgICAgU2luZ2xl
SW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdy
aXRlci50aHJlZUJ5dGVzVmV4TmRzKHNpbWRQcmVmaXgsIFZleEltcGxpZWRCeXRlczo6VHdvQnl0
ZXNPcCwgZGVzdCwgKFJlZ2lzdGVySUQpIDAsIGluZGV4LCBiYXNlKTsKKyAgICAgICAgICAgIHdy
aXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5
TW9kUk0oZGVzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCB2ZXhOZHNMaWdXaWdUd29CeXRlT3AoT25lQnl0ZU9wY29kZUlEIHNpbWRQcmVm
aXgsIFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBh
LCBSZWdpc3RlcklEIGIpCiAgICAgICAgIHsKQEAgLTQ2MzEsNiArNDY5NiwxNiBAQCBwcml2YXRl
OgogICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKICAgICAgICAg
ICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICB2b2lkIHRocmVlQnl0ZU9wNjQo
VHdvQnl0ZU9wY29kZUlEIHR3b0J5dGVQcmVmaXgsIFRocmVlQnl0ZU9wY29kZUlEIG9wY29kZSwg
aW50IHJlZywgUmVnaXN0ZXJJRCBybSkKKyAgICAgICAgeworICAgICAgICAgICAgU2luZ2xlSW5z
dHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRl
ci5lbWl0UmV4KHRydWUsIHJlZywgMCwgcm0pOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVV
bmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5j
aGVja2VkKHR3b0J5dGVQcmVmaXgpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNr
ZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKHJlZywgcm0pOwor
ICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICAvLyBCeXRlLW9wZXJhbmRzOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1lbnRSZWdWYWx1ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1lbnRSZWdWYWx1ZS5oCmluZGV4IDFkZTViNWRmZDJk
NS4uMjMzNzllN2FjMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNB
cmd1bWVudFJlZ1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1l
bnRSZWdWYWx1ZS5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIE9wY29k
ZSBvcGNvZGVGcm9tQ29uc3RydWN0b3IoT3JpZ2luLCBSZWcpIHsgcmV0dXJuIEFyZ3VtZW50UmVn
OyB9CiAKICAgICBBcmd1bWVudFJlZ1ZhbHVlKE9yaWdpbiBvcmlnaW4sIFJlZyByZWcpCi0gICAg
ICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwgQXJndW1lbnRSZWcsIHJlZy5pc0dQUigpID8gcG9p
bnRlclR5cGUoKSA6IERvdWJsZSwgWmVybywgb3JpZ2luKQorICAgICAgICA6IFZhbHVlKENoZWNr
ZWRPcGNvZGUsIEFyZ3VtZW50UmVnLCByZWcuaXNHUFIoKSA/IHBvaW50ZXJUeXBlKCkgOiBWMTI4
LCBaZXJvLCBvcmlnaW4pCiAgICAgICAgICwgbV9yZWcocmVnKQogICAgIHsKICAgICAgICAgQVNT
RVJUKHJlZy5pc1NldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0JhbmsuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0JhbmsuaAppbmRleCA1YmViZjI2
YWM0YzcuLmIxZGJiMjMzZjIwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQmFuay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0JhbmsuaApAQCAtNTgs
NiArNTgsNyBAQCBpbmxpbmUgQmFuayBiYW5rRm9yVHlwZShUeXBlIHR5cGUpCiAgICAgICAgIHJl
dHVybiBHUDsKICAgICBjYXNlIEZsb2F0OgogICAgIGNhc2UgRG91YmxlOgorICAgIGNhc2UgVjEy
ODoKICAgICAgICAgcmV0dXJuIEZQOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MTI4VmFsdWUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QxMjhWYWx1ZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hMGU2Y2ZmMzYxNDgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDEyOFZhbHVlLmNwcApAQCAt
MCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIzQ29uc3QxMjhWYWx1ZS5oIgorCisj
aWYgRU5BQkxFKEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK0Nv
bnN0MTI4VmFsdWU6On5Db25zdDEyOFZhbHVlKCkKK3sKK30KKwordm9pZCBDb25zdDEyOFZhbHVl
OjpkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAor
eworICAgIG91dC5wcmludChjb21tYSwgbV92YWx1ZS51NjR4MlswXSwgY29tbWEsIG1fdmFsdWUu
dTY0eDJbMV0pOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVO
QUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25z
dDEyOFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDEyOFZhbHVlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jYmVlZWY4OWYzNzgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDEyOFZhbHVl
LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUg
IkIzVmFsdWUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEpT
X0VYUE9SVF9QUklWQVRFIENvbnN0MTI4VmFsdWUgOiBwdWJsaWMgVmFsdWUgeworcHVibGljOgor
ICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKSB7IHJldHVybiBraW5kID09IENvbnN0
MTI4OyB9CisgICAgCisgICAgfkNvbnN0MTI4VmFsdWUoKSBvdmVycmlkZTsKKyAgICAKKyAgICB2
MTI4X3QgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICBCM19TUEVDSUFM
SVpFX1ZBTFVFX0ZPUl9OT19DSElMRFJFTgorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBkdW1wTWV0
YShDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgQ29u
c3QxMjhWYWx1ZShPcmlnaW4gb3JpZ2luLCB2MTI4X3QgdmFsdWUpCisgICAgICAgIDogVmFsdWUo
Q2hlY2tlZE9wY29kZSwgQ29uc3QxMjgsIFYxMjgsIFplcm8sIG9yaWdpbikKKyAgICAgICAgLCBt
X3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIE9wY29k
ZSBvcGNvZGVGcm9tQ29uc3RydWN0b3IoT3JpZ2luLCB2MTI4X3QpIHsgcmV0dXJuIENvbnN0MTI4
OyB9CisgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKKyAgICBmcmllbmQgY2xhc3MgVmFsdWU7
CisKKyAgICB2MTI4X3QgbV92YWx1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwor
CisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJUb0Fpci5jcHAKaW5kZXggZDQyMmMzODAyZmE2Li4yOTUyOWE4ZDViMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0xMTg5LDYgKzExODksOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiBNb3ZlRG91YmxlOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2lkdGgxMjg6CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KQEAgLTE4NTUsNiArMTg1Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGVmdC5jb25zdW1lKCp0aGlzKSwgcmlnaHQuY29uc3VtZSgqdGhpcykpKTsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5zdCgp
OworICAgICAgICAgICAgICAgIGNhc2UgV2lkdGgxMjg6CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgIH0sCkBAIC0xODg1LDYgKzE4ODksOCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQuY29uc3VtZSgqdGhpcyksIHJpZ2h0LmNvbnN1
bWUoKnRoaXMpKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEluc3QoKTsKKyAgICAgICAgICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9LApAQCAtMTkzMyw2ICsxOTM5LDggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0LmNvbnN1bWUoKnRoaXMp
LCByaWdodC5jb25zdW1lKCp0aGlzKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEluc3QoKTsKKyAgICAgICAgICAgICAg
ICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICB9LApAQCAtMTk1Nyw2ICsxOTY1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsZWZ0LmNvbnN1bWUoKnRoaXMpLCByaWdodC5jb25zdW1lKCp0aGlzKSwgdG1wKG1f
dmFsdWUpKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEluc3QoKTsKKyAgICAgICAgICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9LApAQCAtMjAyNCw2ICsyMDM0LDggQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVNlbGVjdEluc3RydWN0aW9u
KGNvbmZpZy5tb3ZlQ29uZGl0aW9uYWxseTMyLCByZWxDb25kLCBsZWZ0LCByaWdodCk7CiAgICAg
ICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlU2VsZWN0SW5zdHJ1Y3Rpb24oY29uZmlnLm1vdmVDb25kaXRpb25hbGx5NjQsIHJlbENvbmQs
IGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9LApAQCAtMjAzOSw2ICsyMDUxLDggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVNlbGVjdEluc3RydWN0
aW9uKGNvbmZpZy5tb3ZlQ29uZGl0aW9uYWxseVRlc3QzMiwgcmVzQ29uZCwgbGVmdCwgcmlnaHQp
OwogICAgICAgICAgICAgICAgIGNhc2UgV2lkdGg2NDoKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGNyZWF0ZVNlbGVjdEluc3RydWN0aW9uKGNvbmZpZy5tb3ZlQ29uZGl0aW9uYWxseVRlc3Q2
NCwgcmVzQ29uZCwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgICAgIGNhc2UgV2lkdGgxMjg6
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIH0sCkBAIC0yMzE0LDYg
KzIzMjgsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgV2lkdGgzMjoKICAgICAg
ICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgV2lkdGgxMjg6CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92
ZUZvclR5cGUoYXRvbWljLT5hY2Nlc3NUeXBlKCkpLCBleHBlY3RlZFZhbHVlVG1wLCB2YWx1ZVJl
c3VsdFRtcCk7CkBAIC0yMzMwLDYgKzIzNDcsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGNhc2UgV2lkdGg2NDoKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVHJhcHBpbmcoQWlyOjpC
cmFuY2g2NCwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCksIHZhbHVlUmVzdWx0
VG1wLCBleHBlY3RlZFZhbHVlVG1wKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdLT5zZXRT
dWNjZXNzb3JzKHN1Y2Nlc3MsIGZhaWx1cmUpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTI0ODgsNiArMjUwOCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CiAg
ICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IE1vdmU7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0
KCkpOwpAQCAtMzU4Myw2ICszNjA2LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBhcHBlbmQo
QWRkNjQsIEFyZyhhZGRyZXNzLT5waW5uZWRHUFIoKSksIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSks
IHRtcChhZGRyZXNzKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBCMzo6RXh0cmFjdExhbmU6IHsKKyAgICAgICAgICAgIFNp
bWRWYWx1ZSogc2ltZCA9IG1fdmFsdWUtPmFzPFNpbWRWYWx1ZT4oKTsKKyAgICAgICAgICAgIGF1
dG8gbGFuZUluZm8gPSBBcmc6OnNpbWRJbmZvKHNpbWQtPmxhbmVJbnRlcnByZXRhdGlvbigpLCBz
aW1kLT5zaWduRXh0ZW5kTW9kZSgpKTsKKyAgICAgICAgICAgIGFwcGVuZChBaXI6OkV4dHJhY3RM
YW5lLCBsYW5lSW5mbywgQXJnOjppbW0oc2ltZC0+aW1tZWRpYXRlKDApKSwgdG1wKHNpbWQtPmNo
aWxkKDApKSwgdG1wKHNpbWQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAg
ICAgICAgIGNhc2UgRmVuY2U6IHsKICAgICAgICAgICAgIEZlbmNlVmFsdWUqIGZlbmNlID0gbV92
YWx1ZS0+YXM8RmVuY2VWYWx1ZT4oKTsKQEAgLTM2NjYsMTIgKzM2OTYsMjUgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGFwcGVuZChNb3ZlWmVyb1RvRG91YmxlLCB0bXAobV92YWx1ZSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgIGNh
c2UgQ29uc3QxMjg6IHsKKyAgICAgICAgICAgIGF1dG8gbGFuZUluZm8gPSBBcmc6OnNpbWRJbmZv
KFNpbWRMYW5lSW50ZXJwcmV0YXRpb246Omk2NHgyLCBTaW1kU2lnbkV4dGVuZE1vZGU6Ok5BKTsK
KyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBtX3ZhbHVlLT5hczxDb25zdDEyOFZhbHVlPigpLT52
YWx1ZSgpOworICAgICAgICAgICAgYXV0byBhID0gdG1wRm9yVHlwZShJbnQ2NCk7CisgICAgICAg
ICAgICBhdXRvIHJlc3VsdCA9IHRtcChtX3ZhbHVlKTsKKyAgICAgICAgICAgIGFwcGVuZChNb3Zl
LCBBcmc6OmJpZ0ltbSh2YWx1ZS51NjR4MlswXSksIGEpOworICAgICAgICAgICAgYXBwZW5kKFJl
cGxhY2VMYW5lLCBsYW5lSW5mbywgQXJnOjppbW0oMCksIGEsIHJlc3VsdCk7CisgICAgICAgICAg
ICBhcHBlbmQoTW92ZSwgQXJnOjpiaWdJbW0odmFsdWUudTY0eDJbMV0pLCBhKTsKKyAgICAgICAg
ICAgIGFwcGVuZChSZXBsYWNlTGFuZSwgbGFuZUluZm8sIEFyZzo6aW1tKDEpLCBhLCByZXN1bHQp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBCb3R0b21U
dXBsZTogewogICAgICAgICAgICAgZm9yRWFjaEltbU9yVG1wKG1fdmFsdWUsIFsmXSAoQXJnIHRt
cCwgVHlwZSB0eXBlLCB1bnNpZ25lZCkgewogICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZS5r
aW5kKCkpIHsKICAgICAgICAgICAgICAgICBjYXNlIFZvaWQ6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBUdXBsZToKKyAgICAgICAgICAgICAgICBjYXNlIFYxMjg6CiAgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIGNhc2UgSW50MzI6CkBAIC00MjU1LDYgKzQyOTgsMTEgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBhcHBlbmQoTW92ZURvdWJsZSwgdG1wKHZhbHVlKSwgcmV0
dXJuVmFsdWVGUFIpOwogICAgICAgICAgICAgICAgIGFwcGVuZChSZXREb3VibGUsIHJldHVyblZh
bHVlRlBSKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVjEyODog
Ly8gVE9ETworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kKE1vdmVEb3VibGUsIHRtcCh2YWx1ZSksIHJldHVyblZhbHVl
RlBSKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoUmV0RG91YmxlLCByZXR1cm5WYWx1ZUZQUik7
CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09w
Y29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCmluZGV4IDEz
MTk1NmU1MGI3OS4uMzQwMWJjNjYwZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNPcGNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29k
ZS5jcHAKQEAgLTEyMCw2ICsxMjAsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgT3Bjb2RlIG9wY29kZSkKICAgICBjYXNlIENvbnN0RmxvYXQ6CiAgICAgICAgIG91dC5w
cmludCgiQ29uc3RGbG9hdCIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBDb25zdDEyODoK
KyAgICAgICAgb3V0LnByaW50KCJDb25zdDEyOCIpOworICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBCb3R0b21UdXBsZToKICAgICAgICAgb3V0LnByaW50KCJCb3R0b21UdXBsZSIpOwogICAgICAg
ICByZXR1cm47CkBAIC0zNjMsNiArMzY2LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIE9wY29kZSBvcGNvZGUpCiAgICAgY2FzZSBKdW1wOgogICAgICAgICBvdXQucHJp
bnQoIkp1bXAiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRXh0cmFjdExhbmU6CisgICAg
ICAgIG91dC5wcmludCgiRXh0cmFjdExhbmUiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
QnJhbmNoOgogICAgICAgICBvdXQucHJpbnQoIkJyYW5jaCIpOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCmluZGV4IDY1YTdkYTNiMGFhMi4uZTBlODQyM2Y3
NDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaApAQCAtNTQsNiArNTQsNyBAQCBl
bnVtIE9wY29kZSA6IHVpbnQ4X3QgewogICAgIENvbnN0NjQsCiAgICAgQ29uc3REb3VibGUsCiAg
ICAgQ29uc3RGbG9hdCwKKyAgICBDb25zdDEyOCwKIAogICAgIC8vIFR1cGxlIGZpbGxlZCB3aXRo
IHplcm9zLiBUaGlzIGFwcGVhcnMgd2hlbiBUdXBsZSBQYXRjaHBvaW50cyBhcmUgcmVwbGFjZWQg
d2l0aCBCb3R0b20gdmFsdWVzLgogICAgIEJvdHRvbVR1cGxlLApAQCAtMzQyLDYgKzM0Myw5IEBA
IGVudW0gT3Bjb2RlIDogdWludDhfdCB7CiAgICAgLy8gV2l0aG91dCBzb21lIHN1Y2ggbm9kZSBC
MyB3b3VsZCBub3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgdGhlIGlubmVyIHdvcmtp
bmdzIG9mIHdhc20KICAgICAvLyB0byBiZSBhYmxlIHRvIHBlcmZvcm0gc3VjaCBvcHRpbWl6YXRp
b25zLgogICAgIFdhc21Cb3VuZHNDaGVjaywKKyAgICAKKyAgICAvLyBTaW1kIGluc3RydWN0aW9u
cworICAgIEV4dHJhY3RMYW5lLAogCiAgICAgLy8gU1NBIHN1cHBvcnQsIGluIHRoZSBzdHlsZSBv
ZiBERkcgU1NBLgogICAgIFVwc2lsb24sIC8vIFRoaXMgdXNlcyB0aGUgVXBzaWxvblZhbHVlIGNs
YXNzLgpAQCAtMzk4LDYgKzQwMiw3IEBAIGlubGluZSBib29sIGlzQ29uc3RhbnQoT3Bjb2RlIG9w
Y29kZSkKICAgICBjYXNlIENvbnN0NjQ6CiAgICAgY2FzZSBDb25zdERvdWJsZToKICAgICBjYXNl
IENvbnN0RmxvYXQ6CisgICAgY2FzZSBDb25zdDEyODoKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDExLDYgKzQxNiw3IEBAIGlu
bGluZSBPcGNvZGUgb3Bjb2RlRm9yQ29uc3RhbnQoVHlwZSB0eXBlKQogICAgIGNhc2UgSW50NjQ6
IHJldHVybiBDb25zdDY0OwogICAgIGNhc2UgRmxvYXQ6IHJldHVybiBDb25zdEZsb2F0OwogICAg
IGNhc2UgRG91YmxlOiByZXR1cm4gQ29uc3REb3VibGU7CisgICAgY2FzZSBWMTI4OiByZXR1cm4g
Q29uc3QxMjg7CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9j
ZWR1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAppbmRl
eCAxZTE0YWU4M2UzMGIuLjc4ZDc0YjM2NDFlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNQcm9jZWR1cmUuY3BwCkBAIC0xNDQsNiArMTQ0LDEyIEBAIFZhbHVlKiBQcm9jZWR1cmU6OmFk
ZENvbnN0YW50KE9yaWdpbiBvcmlnaW4sIFR5cGUgdHlwZSwgdWludDY0X3QgYml0cykKICAgICAg
ICAgcmV0dXJuIGFkZDxDb25zdEZsb2F0VmFsdWU+KG9yaWdpbiwgYml0d2lzZV9jYXN0PGZsb2F0
PihzdGF0aWNfY2FzdDxpbnQzMl90PihiaXRzKSkpOwogICAgIGNhc2UgRG91YmxlOgogICAgICAg
ICByZXR1cm4gYWRkPENvbnN0RG91YmxlVmFsdWU+KG9yaWdpbiwgYml0d2lzZV9jYXN0PGRvdWJs
ZT4oYml0cykpOworICAgIGNhc2UgVjEyODogeworICAgICAgICB2MTI4X3QgY29uc3RhbnQ7Cisg
ICAgICAgIGNvbnN0YW50LnU2NHgyWzBdID0gYml0czsKKyAgICAgICAgY29uc3RhbnQudTY0eDJb
MV0gPSBiaXRzOworICAgICAgICByZXR1cm4gYWRkPENvbnN0MTI4VmFsdWU+KG9yaWdpbiwgY29u
c3RhbnQpOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1NpbWRWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNTaW1kVmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uYTBlOGRkNTc2NjViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzU2ltZFZhbHVlLmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkIzU2ltZFZhbHVlLmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEIzIHsKKworU2ltZFZhbHVlOjp+U2ltZFZhbHVlKCkKK3sKK30KKwordm9pZCBT
aW1kVmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3QKK3sK
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklU
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU2ltZFZhbHVlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTaW1kVmFsdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmM4OTIxNTNlYmI4NAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NpbWRWYWx1ZS5oCkBAIC0wLDAgKzEsODkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM1ZhbHVlLmgiCisjaW5jbHVkZSAi
U2ltZEluZm8uaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEpT
X0VYUE9SVF9QUklWQVRFIFNpbWRWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAg
c3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGtp
bmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBFeHRyYWN0TGFuZToKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIH5TaW1kVmFsdWUoKSBvdmVycmlkZTsKKyAgICAK
KyAgICBTaW1kTGFuZUludGVycHJldGF0aW9uIGxhbmVJbnRlcnByZXRhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fbGFuZUludGVycHJldGF0aW9uOyB9CisgICAgU2ltZFNpZ25FeHRlbmRNb2RlIHNp
Z25FeHRlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduTW9kZTsgfQorICAgIHVpbnQ4X3Qg
aW1tZWRpYXRlKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBpbW1zW2ldOyB9CisKKyAgICBCM19T
UEVDSUFMSVpFX1ZBTFVFX0ZPUl9GSU5BTF9TSVpFX0ZJWEVEX0NISUxEUkVOCisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qg
b3ZlcnJpZGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgU2lt
ZFZhbHVlKE9yaWdpbiBvcmlnaW4sIEtpbmQga2luZCwgVHlwZSB0eXBlLCB1aW50OF90IG51bUNo
aWxkcmVuLCBTaW1kTGFuZUludGVycHJldGF0aW9uIGxhbmVJbnRlcnByZXRhdGlvbiwgU2ltZFNp
Z25FeHRlbmRNb2RlIHNpZ25Nb2RlLCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAgICAgICA6
IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIChOdW1DaGlsZHJlbikobnVtQ2hpbGRy
ZW4pLCBvcmlnaW4sIGFyZ3VtZW50cy4uLikKKyAgICAgICAgLCBtX2xhbmVJbnRlcnByZXRhdGlv
bihsYW5lSW50ZXJwcmV0YXRpb24pCisgICAgICAgICwgbV9zaWduTW9kZShzaWduTW9kZSkKKyAg
ICB7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAg
ICBTaW1kVmFsdWUoT3JpZ2luIG9yaWdpbiwgS2luZCBraW5kLCBUeXBlIHR5cGUsIHVpbnQ4X3Qg
bnVtQ2hpbGRyZW4sIFNpbWRMYW5lSW50ZXJwcmV0YXRpb24gbGFuZUludGVycHJldGF0aW9uLCBT
aW1kU2lnbkV4dGVuZE1vZGUgc2lnbk1vZGUsIHVpbnQ4X3QgaW1tMSwgQXJndW1lbnRzLi4uIGFy
Z3VtZW50cykKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCAoTnVt
Q2hpbGRyZW4pKG51bUNoaWxkcmVuKSwgb3JpZ2luLCBhcmd1bWVudHMuLi4pCisgICAgICAgICwg
bV9sYW5lSW50ZXJwcmV0YXRpb24obGFuZUludGVycHJldGF0aW9uKQorICAgICAgICAsIG1fc2ln
bk1vZGUoc2lnbk1vZGUpCisgICAgeworICAgICAgICBpbW1zWzBdID0gaW1tMTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIHN0YXRp
YyBPcGNvZGUgb3Bjb2RlRnJvbUNvbnN0cnVjdG9yKE9yaWdpbiwgS2luZCBraW5kLCBUeXBlLCB1
aW50OF90LCBTaW1kTGFuZUludGVycHJldGF0aW9uLCBTaW1kU2lnbkV4dGVuZE1vZGUsIEFyZ3Vt
ZW50cy4uLikgeyByZXR1cm4ga2luZC5vcGNvZGUoKTsgfQorICAgIGZyaWVuZCBjbGFzcyBQcm9j
ZWR1cmU7CisgICAgZnJpZW5kIGNsYXNzIFZhbHVlOworCisgICAgU2ltZExhbmVJbnRlcnByZXRh
dGlvbiBtX2xhbmVJbnRlcnByZXRhdGlvbjsKKyAgICBTaW1kU2lnbkV4dGVuZE1vZGUgbV9zaWdu
TW9kZTsKKyAgICAKKyAgICB1aW50OF90IGltbXNbMl0geyAwIH07Cit9OworCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1R5cGUuY3BwCmluZGV4IDY3ODQxYmRkYzJiNi4uNDUzYzIzNzVkMWI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNUeXBlLmNwcApAQCAtNTIsNiArNTIsOSBAQCB2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVHlwZSB0eXBlKQogICAgIGNhc2UgRG91YmxlOgogICAg
ICAgICBvdXQucHJpbnQoIkRvdWJsZSIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBWMTI4
OgorICAgICAgICBvdXQucHJpbnQoIlYxMjgiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
VHVwbGU6CiAgICAgICAgIG91dC5wcmludCgiVHVwbGUiKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVHlwZS5oCmluZGV4IDkzMjJmODhlZDliOS4uNjYyMThmOGNiN2FkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxF
KEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzQ29tbW9uLmgiCisjaW5jbHVkZSAiU2ltZEluZm8uaCIK
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiAhQVNTRVJUX0VOQUJMRUQKQEAg
LTQ1LDYgKzQ2LDcgQEAgZW51bSBUeXBlS2luZCA6IHVpbnQzMl90IHsKICAgICBJbnQ2NCwKICAg
ICBGbG9hdCwKICAgICBEb3VibGUsCisgICAgVjEyOCwKIAogICAgIC8vIFR1cGxlcyBhcmUgcmVw
cmVzZW50ZWQgYXMgdGhlIHR1cGxlRmxhZyB8IHdpdGggdGhlIHR1cGxlJ3MgaW5kZXggaW50byBQ
cm9jZWR1cmUncyBtX3R1cGxlcyB0YWJsZS4KICAgICBUdXBsZSA9IHR1cGxlRmxhZywKQEAgLTcw
LDYgKzcyLDcgQEAgcHVibGljOgogICAgIGlubGluZSBib29sIGlzRmxvYXQoKSBjb25zdDsKICAg
ICBpbmxpbmUgYm9vbCBpc051bWVyaWMoKSBjb25zdDsKICAgICBpbmxpbmUgYm9vbCBpc1R1cGxl
KCkgY29uc3Q7CisgICAgaW5saW5lIGJvb2wgaXNWZWN0b3IoKSBjb25zdDsKIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBUeXBlS2luZCYgb3RoZXJLaW5kKSBjb25zdCB7IHJldHVybiBraW5k
KCkgPT0gb3RoZXJLaW5kOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFR5cGUmIHR5cGUp
IGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSB0eXBlLm1fa2luZDsgfQpAQCAtODAsNiArODMsNDIg
QEAgcHJpdmF0ZToKICAgICBUeXBlS2luZCBtX2tpbmQgeyBWb2lkIH07CiB9OwogCitpbmxpbmUg
VHlwZUtpbmQgc2ltZFNjYWxhclR5cGUoU2ltZExhbmVJbnRlcnByZXRhdGlvbiBpKSB7CisgICAg
c3dpdGNoIChpKSB7CisgICAgY2FzZSBTaW1kTGFuZUludGVycHJldGF0aW9uOjppOHgxNjoKKyAg
ICBjYXNlIFNpbWRMYW5lSW50ZXJwcmV0YXRpb246OmkxNng4OgorICAgIGNhc2UgU2ltZExhbmVJ
bnRlcnByZXRhdGlvbjo6aTMyeDQ6CisgICAgICAgIHJldHVybiBJbnQzMjsKKyAgICBjYXNlIFNp
bWRMYW5lSW50ZXJwcmV0YXRpb246Omk2NHgyOgorICAgICAgICByZXR1cm4gSW50NjQ7CisgICAg
Y2FzZSBTaW1kTGFuZUludGVycHJldGF0aW9uOjpmMzJ4NDoKKyAgICAgICAgcmV0dXJuIEZsb2F0
OworICAgIGNhc2UgU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6ZjY0eDI6CisgICAgICAgIHJldHVy
biBEb3VibGU7CisgICAgY2FzZSBTaW1kTGFuZUludGVycHJldGF0aW9uOjp2MTI4OgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gSW50NjQ7Cisg
ICAgfQorfQorCitpbmxpbmUgdWludDhfdCBzaW1kTGFuZUNvdW50KFNpbWRMYW5lSW50ZXJwcmV0
YXRpb24gaSkgeworICAgIHN3aXRjaCAoaSkgeworICAgIGNhc2UgU2ltZExhbmVJbnRlcnByZXRh
dGlvbjo6aTh4MTY6CisgICAgICAgIHJldHVybiAxNjsKKyAgICBjYXNlIFNpbWRMYW5lSW50ZXJw
cmV0YXRpb246OmkxNng4OgorICAgICAgICByZXR1cm4gODsKKyAgICBjYXNlIFNpbWRMYW5lSW50
ZXJwcmV0YXRpb246OmYzMng0OgorICAgIGNhc2UgU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6aTMy
eDQ6CisgICAgICAgIHJldHVybiA0OworICAgIGNhc2UgU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6
ZjY0eDI6CisgICAgY2FzZSBTaW1kTGFuZUludGVycHJldGF0aW9uOjppNjR4MjoKKyAgICAgICAg
cmV0dXJuIDI7CisgICAgY2FzZSBTaW1kTGFuZUludGVycHJldGF0aW9uOjp2MTI4OgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
Cit9CisKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFR5cGVLaW5kKSA9PSBzaXplb2YoVHlwZSkpOwog
CiBpbmxpbmUgYm9vbCBUeXBlOjppc0ludCgpIGNvbnN0CkBAIC05NCw3ICsxMzMsNyBAQCBpbmxp
bmUgYm9vbCBUeXBlOjppc0Zsb2F0KCkgY29uc3QKIAogaW5saW5lIGJvb2wgVHlwZTo6aXNOdW1l
cmljKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNJbnQoKSB8fCBpc0Zsb2F0KCk7CisgICAgcmV0
dXJuIGlzSW50KCkgfHwgaXNGbG9hdCgpIHx8IGlzVmVjdG9yKCk7CiB9CiAKIGlubGluZSBib29s
IFR5cGU6OmlzVHVwbGUoKSBjb25zdApAQCAtMTAyLDYgKzE0MSwxMSBAQCBpbmxpbmUgYm9vbCBU
eXBlOjppc1R1cGxlKCkgY29uc3QKICAgICByZXR1cm4ga2luZCgpID09IFR1cGxlOwogfQogCitp
bmxpbmUgYm9vbCBUeXBlOjppc1ZlY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGtpbmQoKSA9
PSBWMTI4OworfQorCiBpbmxpbmUgVHlwZSBwb2ludGVyVHlwZSgpCiB7CiAgICAgaWYgKGlzMzJC
aXQoKSkKQEAgLTEyMSw2ICsxNjUsOCBAQCBpbmxpbmUgc2l6ZV90IHNpemVvZlR5cGUoVHlwZSB0
eXBlKQogICAgIGNhc2UgSW50NjQ6CiAgICAgY2FzZSBEb3VibGU6CiAgICAgICAgIHJldHVybiA4
OworICAgIGNhc2UgVjEyODoKKyAgICAgICAgcmV0dXJuIDE2OwogICAgIH0KICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1R5cGVNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGVNYXAuaAppbmRleCBm
NTMyOWM0NjczYjAuLjg0N2VkOGNjZmM2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVHlwZU1hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGVN
YXAuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbV9kb3Vi
bGU7CiAgICAgICAgIGNhc2UgVHVwbGU6CiAgICAgICAgICAgICByZXR1cm4gbV90dXBsZTsKKyAg
ICAgICAgY2FzZSBWMTI4OgorICAgICAgICAgICAgcmV0dXJuIG1fdmVjdG9yOwogICAgICAgICB9
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTgyLDcgKzg0LDkgQEAg
cHVibGljOgogICAgICAgICAgICAgIiwgaW50MzIgPSAiLCBtX2ludDMyLAogICAgICAgICAgICAg
IiwgaW50NjQgPSAiLCBtX2ludDY0LAogICAgICAgICAgICAgIiwgZmxvYXQgPSAiLCBtX2Zsb2F0
LAotICAgICAgICAgICAgIiwgZG91YmxlID0gIiwgbV9kb3VibGUsICJ9Iik7CisgICAgICAgICAg
ICAiLCBkb3VibGUgPSAiLCBtX2RvdWJsZSwKKyAgICAgICAgICAgICIsIHZlY3RvciA9ICIsIG1f
dmVjdG9yLAorICAgICAgICAgICAgIiwgdHVwbGUgPSAiLCBtX3R1cGxlLCAifSIpOwogICAgIH0K
ICAgICAKIHByaXZhdGU6CkBAIC05MSw2ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgVCBtX2ludDY0
IHsgfTsKICAgICBUIG1fZmxvYXQgeyB9OwogICAgIFQgbV9kb3VibGUgeyB9OworICAgIFQgbV92
ZWN0b3IgeyB9OwogICAgIFQgbV90dXBsZSB7IH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWxpZGF0ZS5jcHAKaW5kZXggYWVmY2QzNDFkNjM2Li40NTM5ODkzNjA0MWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKQEAgLTE3MSw2ICsxNzEsMTEgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+bnVtQ2hpbGRyZW4oKSwg
KCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgp
ID09IEZsb2F0LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBDb25zdDEyODoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUt
PmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWMTI4LCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBCb3R0b21UdXBs
ZToKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMo
KSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPm51
bUNoaWxkcmVuKCksICgiQXQgIiwgKnZhbHVlKSk7CkBAIC0xOTYsNyArMjAxLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygp
LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+bnVt
Q2hpbGRyZW4oKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgK
LSAgICAgICAgICAgICAgICAgICAgKHZhbHVlLT5hczxBcmd1bWVudFJlZ1ZhbHVlPigpLT5hcmd1
bWVudFJlZygpLmlzR1BSKCkgPyBwb2ludGVyVHlwZSgpIDogRG91YmxlKQorICAgICAgICAgICAg
ICAgICAgICAodmFsdWUtPmFzPEFyZ3VtZW50UmVnVmFsdWU+KCktPmFyZ3VtZW50UmVnKCkuaXNH
UFIoKSA/IHBvaW50ZXJUeXBlKCkgOiBWMTI4KQogICAgICAgICAgICAgICAgICAgICA9PSB2YWx1
ZS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBBZGQ6CkBAIC00NDEsNiArNDQ2LDEyIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgp
LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBl
KCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgRXh0cmFjdExhbmU6CisgICAgICAgICAgICAgICAgVkFM
SURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHNp
bWRTY2FsYXJUeXBlKHZhbHVlLT5hc1NpbWRWYWx1ZSgpLT5sYW5lSW50ZXJwcmV0YXRpb24oKSks
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxk
KDApLT50eXBlKCkgPT0gVjEyOCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgQ0NhbGw6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
IXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPj0gMSwgKCJBdCAiLCAqdmFs
dWUpKTsKQEAgLTYyOSw3ICs2NDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmICh2
YWx1ZS52YWx1ZSgpLT50eXBlKCkuaXNUdXBsZSgpKQogICAgICAgICAgICAgICAgICAgICBWQUxJ
REFURShtX3Byb2NlZHVyZS5leHRyYWN0RnJvbVR1cGxlKHZhbHVlLnZhbHVlKCktPnR5cGUoKSwg
dHVwbGVJbmRleCkuaXNGbG9hdCgpLCAoIkF0ICIsICpjb250ZXh0LCAiOiAiLCB2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUu
dmFsdWUoKS0+dHlwZSgpLmlzRmxvYXQoKSwgKCJBdCAiLCAqY29udGV4dCwgIjogIiwgdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUudmFsdWUoKS0+dHlwZSgpLmlz
RmxvYXQoKSB8fCB2YWx1ZS52YWx1ZSgpLT50eXBlKCkuaXNWZWN0b3IoKSwgKCJBdCAiLCAqY29u
dGV4dCwgIjogIiwgdmFsdWUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCmluZGV4IGUz
ZWVmZmM3N2M3Ny4uZTE1MDgwNzZjMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUu
Y3BwCkBAIC0xNzMsNiArMTczLDEwIEBAIHZvaWQgVmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKICAgICAgICAgb3V0LnByaW50KCIkIiwgYXNEb3VibGUoKSwgIigiKTsKICAgICAg
ICAgaXNDb25zdGFudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29uc3QxMjg6
CisgICAgICAgIG91dC5wcmludCgiJFsiLCBhc1YxMjgoKS51NjR4MlswXSwgIjo6IiwgYXNWMTI4
KCkudTY0eDJbMV0sICJdKCIpOworICAgICAgICBpc0NvbnN0YW50ID0gdHJ1ZTsKKyAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTQwLDYgKzU0
NCw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgT3BhcXVlOgog
ICAgIGNhc2UgQ29uc3QzMjoKICAgICBjYXNlIENvbnN0NjQ6CisgICAgY2FzZSBDb25zdDEyODoK
ICAgICBjYXNlIENvbnN0RG91YmxlOgogICAgIGNhc2UgQ29uc3RGbG9hdDoKICAgICBjYXNlIEJv
dHRvbVR1cGxlOgpAQCAtNTg5LDYgKzU5NCw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBj
b25zdAogICAgIGNhc2UgRXh0cmFjdDoKICAgICBjYXNlIEZNaW46CiAgICAgY2FzZSBGTWF4Ogor
ICAgIGNhc2UgRXh0cmFjdExhbmU6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGl2OgogICAg
IGNhc2UgVURpdjoKQEAgLTg4OSw2ICs4OTUsNyBAQCBUeXBlIFZhbHVlOjp0eXBlRm9yKEtpbmQg
a2luZCwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZhbHVlKiBzZWNvbmRDaGlsZCkKICAgICAgICAgICAg
IHJldHVybiBJbnQzMjsKICAgICAgICAgY2FzZSBWb2lkOgogICAgICAgICBjYXNlIFR1cGxlOgor
ICAgICAgICBjYXNlIFYxMjg6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gVm9pZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5o
CmluZGV4IDI1MGEwMmRmZjIxOC4uMDhjYzg2ZjNjM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
CiBjbGFzcyBCYXNpY0Jsb2NrOwogY2xhc3MgQ2hlY2tWYWx1ZTsKIGNsYXNzIEluc2VydGlvblNl
dDsKK2NsYXNzIFNpbWRWYWx1ZTsKIGNsYXNzIFBoaUNoaWxkcmVuOwogY2xhc3MgUHJvY2VkdXJl
OwogCkBAIC0yNjMsNiArMjY0LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzSW50NjQoKSBjb25z
dDsKICAgICBpbnQ2NF90IGFzSW50NjQoKSBjb25zdDsKICAgICBib29sIGlzSW50NjQoaW50NjRf
dCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBoYXNWMTI4KCkgY29uc3Q7CisgICAgdjEyOF90IGFz
VjEyOCgpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNJbnQoKSBjb25zdDsKICAgICBpbnQ2NF90IGFz
SW50KCkgY29uc3Q7CkBAIC0yOTQsNiArMjk4LDkgQEAgcHVibGljOgogICAgIFRyaVN0YXRlIGFz
VHJpU3RhdGUoKSBjb25zdDsKICAgICBib29sIGlzTGlrZVplcm8oKSBjb25zdCB7IHJldHVybiBh
c1RyaVN0YXRlKCkgPT0gVHJpU3RhdGU6OkZhbHNlOyB9CiAgICAgYm9vbCBpc0xpa2VOb25aZXJv
KCkgY29uc3QgeyByZXR1cm4gYXNUcmlTdGF0ZSgpID09IFRyaVN0YXRlOjpUcnVlOyB9CisgICAg
CisgICAgYm9vbCBpc1NpbWRWYWx1ZSgpIGNvbnN0OworICAgIFNpbWRWYWx1ZSogYXNTaW1kVmFs
dWUoKTsKIAogICAgIEVmZmVjdHMgZWZmZWN0cygpIGNvbnN0OwogCkBAIC0zOTEsNiArMzk4LDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICBjYXNlIEFyZ3VtZW50UmVnOgogICAgICAgICBjYXNlIENv
bnN0MzI6CiAgICAgICAgIGNhc2UgQ29uc3Q2NDoKKyAgICAgICAgY2FzZSBDb25zdDEyODoKICAg
ICAgICAgY2FzZSBDb25zdEZsb2F0OgogICAgICAgICBjYXNlIENvbnN0RG91YmxlOgogICAgICAg
ICBjYXNlIEJvdHRvbVR1cGxlOgpAQCAtNDMwLDYgKzQzOCw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgY2FzZSBTZXQ6CiAgICAgICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgIGNhc2UgV2Fz
bUJvdW5kc0NoZWNrOgorICAgICAgICBjYXNlIEV4dHJhY3RMYW5lOgogICAgICAgICAgICAgcmV0
dXJuIHNpemVvZihWYWx1ZSopOwogICAgICAgICBjYXNlIEFkZDoKICAgICAgICAgY2FzZSBTdWI6
CkBAIC01OTUsNiArNjA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCaXR3aXNlQ2FzdDoK
ICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2UgRGVwZW5kOgorICAgICAgICBjYXNl
IEV4dHJhY3RMYW5lOgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG51bUFyZ3MgIT0gMSkpCiAg
ICAgICAgICAgICAgICAgYmFkS2luZChraW5kLCBudW1BcmdzKTsKICAgICAgICAgICAgIHJldHVy
biBPbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlSW5saW5lcy5oCmluZGV4IDkz
OWEyNjQ3ZWM2YS4uYjViYjExYTBkYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZUlubGluZXMuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkIzQ2hlY2tWYWx1ZS5o
IgogI2luY2x1ZGUgIkIzQ29uc3QzMlZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDb25zdDY0VmFsdWUu
aCIKKyNpbmNsdWRlICJCM0NvbnN0MTI4VmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbnN0RG91Ymxl
VmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbnN0RmxvYXRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzRXh0
cmFjdFZhbHVlLmgiCkBAIC00Miw2ICs0Myw3IEBACiAjaW5jbHVkZSAiQjNQYXRjaHBvaW50VmFs
dWUuaCIKICNpbmNsdWRlICJCM1BoaUNoaWxkcmVuLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUu
aCIKKyNpbmNsdWRlICJCM1NpbWRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzU2xvdEJhc2VWYWx1ZS5o
IgogI2luY2x1ZGUgIkIzU3dpdGNoVmFsdWUuaCIKICNpbmNsdWRlICJCM1Vwc2lsb25WYWx1ZS5o
IgpAQCAtMTE4LDYgKzEyMCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogICAg
ICAgICByZXR1cm4gTUFDUk8oQ29uc3QzMlZhbHVlKTsgXAogICAgIGNhc2UgQ29uc3Q2NDogXAog
ICAgICAgICByZXR1cm4gTUFDUk8oQ29uc3Q2NFZhbHVlKTsgXAorICAgIGNhc2UgQ29uc3QxMjg6
IFwKKyAgICAgICAgcmV0dXJuIE1BQ1JPKENvbnN0MTI4VmFsdWUpOyBcCiAgICAgY2FzZSBDb25z
dEZsb2F0OiBcCiAgICAgICAgIHJldHVybiBNQUNSTyhDb25zdEZsb2F0VmFsdWUpOyBcCiAgICAg
Y2FzZSBDb25zdERvdWJsZTogXApAQCAtMTUwLDYgKzE1NCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgewogICAgICAgICByZXR1cm4gTUFDUk8oV2FzbUFkZHJlc3NWYWx1ZSk7IFwK
ICAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazogXAogICAgICAgICByZXR1cm4gTUFDUk8oV2FzbUJv
dW5kc0NoZWNrVmFsdWUpOyBcCisgICAgY2FzZSBFeHRyYWN0TGFuZTogXAorICAgICAgICByZXR1
cm4gTUFDUk8oU2ltZFZhbHVlKTsgXAogICAgIGNhc2UgQXRvbWljWGNoZ0FkZDogXAogICAgIGNh
c2UgQXRvbWljWGNoZ0FuZDogXAogICAgIGNhc2UgQXRvbWljWGNoZ09yOiBcCkBAIC0yOTgsNiAr
MzA0LDE2IEBAIGlubGluZSBkb3VibGUgVmFsdWU6OmFzRG91YmxlKCkgY29uc3QKICAgICByZXR1
cm4gYXM8Q29uc3REb3VibGVWYWx1ZT4oKS0+dmFsdWUoKTsKIH0KIAoraW5saW5lIGJvb2wgVmFs
dWU6Omhhc1YxMjgoKSBjb25zdAoreworICAgIHJldHVybiAhIWFzPENvbnN0MTI4VmFsdWU+KCk7
Cit9CisKK2lubGluZSB2MTI4X3QgVmFsdWU6OmFzVjEyOCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGFzPENvbnN0MTI4VmFsdWU+KCktPnZhbHVlKCk7Cit9CisKIGlubGluZSBib29sIFZhbHVlOjpp
c0VxdWFsVG9Eb3VibGUoZG91YmxlIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBoYXNEb3Vi
bGUoKSAmJiBhc0RvdWJsZSgpID09IHZhbHVlOwpAQCAtMzg4LDYgKzQwNCwxNiBAQCB2b2lkIFZh
bHVlOjp3YWxrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IsIFBoaUNoaWxkcmVuKiBwaGlDaGlsZHJl
bikKICAgICB9CiB9CiAKK2lubGluZSBib29sIFZhbHVlOjppc1NpbWRWYWx1ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICEhYXM8U2ltZFZhbHVlPigpOworfQorCitpbmxpbmUgU2ltZFZhbHVlKiBW
YWx1ZTo6YXNTaW1kVmFsdWUoKQoreworICAgIHJldHVybiBhczxTaW1kVmFsdWU+KCk7Cit9CisK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAppbmRleCBlMzUzNTZlYTMzZjAuLjExZmQ3YmMy
MzczYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcApAQCAtNTUsNiArNTUsOCBA
QCBUeXBlIGJlc3RUeXBlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpCiAgICAgICAgIH0KICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIFZvaWQ7Cisg
ICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFZvaWQ7CkBAIC03OSw2ICs4MSw5IEBAIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkIzOjpXaWR0aCB3aWR0aCkK
ICAgICBjYXNlIEpTQzo6QjM6OldpZHRoNjQ6CiAgICAgICAgIG91dC5wcmludCgiNjQiKTsKICAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpCMzo6V2lkdGgxMjg6CisgICAgICAgIG91dC5w
cmludCgiMTI4Iik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
V2lkdGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgKaW5kZXggNDA0MTJm
OWZmNmM2Li5lZjRmYmMyNDFjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1dpZHRoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaApAQCAt
MzcsMTAgKzM3LDExIEBAIElHTk9SRV9SRVRVUk5fVFlQRV9XQVJOSU5HU19CRUdJTgogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIGVudW0gV2lkdGggOiBpbnQ4X3QgewotICAgIFdp
ZHRoOCA9IDAsCisgICAgV2lkdGg4ID0gMiwKICAgICBXaWR0aDE2LAogICAgIFdpZHRoMzIsCi0g
ICAgV2lkdGg2NAorICAgIFdpZHRoNjQsCisgICAgV2lkdGgxMjgKIH07CiAKIGNvbnN0ZXhwciBX
aWR0aCBwb2ludGVyV2lkdGgoKQpAQCAtNjMsNiArNjQsOCBAQCBpbmxpbmUgV2lkdGggd2lkdGhG
b3JUeXBlKFR5cGUgdHlwZSkKICAgICBjYXNlIEludDY0OgogICAgIGNhc2UgRG91YmxlOgogICAg
ICAgICByZXR1cm4gV2lkdGg2NDsKKyAgICBjYXNlIFYxMjg6CisgICAgICAgIHJldHVybiBXaWR0
aDEyODsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFdpZHRo
ODsKQEAgLTgyLDcgKzg1LDcgQEAgVHlwZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRo
KTsKIAogaW5saW5lIFdpZHRoIGNvbnNlcnZhdGl2ZVdpZHRoKEJhbmsgYmFuaykKIHsKLSAgICBy
ZXR1cm4gYmFuayA9PSBHUCA/IHBvaW50ZXJXaWR0aCgpIDogV2lkdGg2NDsKKyAgICByZXR1cm4g
YmFuayA9PSBHUCA/IHBvaW50ZXJXaWR0aCgpIDogV2lkdGgxMjg7CiB9CiAKIGlubGluZSBXaWR0
aCBtaW5pbXVtV2lkdGgoQmFuayBiYW5rKQpAQCAtOTIsNyArOTUsNyBAQCBpbmxpbmUgV2lkdGgg
bWluaW11bVdpZHRoKEJhbmsgYmFuaykKIAogaW5saW5lIHVuc2lnbmVkIGJ5dGVzKFdpZHRoIHdp
ZHRoKQogewotICAgIHJldHVybiAxIDw8IHdpZHRoOworICAgIHJldHVybiAxIDw8ICh3aWR0aC0y
KTsKIH0KIAogaW5saW5lIFdpZHRoIHdpZHRoRm9yQnl0ZXModW5zaWduZWQgYnl0ZXMpCkBAIC0x
MDYsNiArMTA5LDggQEAgaW5saW5lIFdpZHRoIHdpZHRoRm9yQnl0ZXModW5zaWduZWQgYnl0ZXMp
CiAgICAgY2FzZSAzOgogICAgIGNhc2UgNDoKICAgICAgICAgcmV0dXJuIFdpZHRoMzI7CisgICAg
Y2FzZSAxNjoKKyAgICAgICAgcmV0dXJuIFdpZHRoMTI4OwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBXaWR0aDY0OwogICAgIH0KQEAgLTEyMiw2ICsxMjcsOCBAQCBpbmxpbmUgdW5zaWdu
ZWQgYnl0ZXNGb3JXaWR0aChXaWR0aCB3aWR0aCkKICAgICAgICAgcmV0dXJuIDQ7CiAgICAgY2Fz
ZSBXaWR0aDY0OgogICAgICAgICByZXR1cm4gODsKKyAgICBjYXNlIFdpZHRoMTI4OgorICAgICAg
ICByZXR1cm4gMTY7CiAgICAgfQogICAgIHJldHVybiAxOwogfQpAQCAtMTM3LDYgKzE0NCw5IEBA
IGlubGluZSB1aW50NjRfdCBtYXNrKFdpZHRoIHdpZHRoKQogICAgICAgICByZXR1cm4gMHgwMDAw
MDAwMGZmZmZmZmZmbGx1OwogICAgIGNhc2UgV2lkdGg2NDoKICAgICAgICAgcmV0dXJuIDB4ZmZm
ZmZmZmZmZmZmZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5k
R2VuZXJhdGVDb2RlLmNwcAppbmRleCAyNjc3Mjc2M2I0OTUuLjFhNTEwNTU2NzhjZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0Fu
ZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwCkBAIC00
MCw2ICs0MCwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNl
IEFpciB7CiAKK25hbWVzcGFjZSBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzSW50ZXJuYWwg
eworc3RhdGljIGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQorCiBHZW5lcmF0ZUFuZEFsbG9jYXRl
UmVnaXN0ZXJzOjpHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzKENvZGUmIGNvZGUpCiAgICAg
OiBtX2NvZGUoY29kZSkKICAgICAsIG1fbWFwKGNvZGUpCkBAIC0xNzMsNyArMTc3LDcgQEAgQUxX
QVlTX0lOTElORSB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmZsdXNoKFRtcCB0
bXAsIFJlZyByZWcpCiAgICAgaWYgKHRtcC5pc0dQKCkpCiAgICAgICAgIG1faml0LT5zdG9yZTY0
KHJlZy5ncHIoKSwgY2FsbEZyYW1lQWRkcigqbV9qaXQsIG9mZnNldCkpOwogICAgIGVsc2UKLSAg
ICAgICAgbV9qaXQtPnN0b3JlRG91YmxlKHJlZy5mcHIoKSwgY2FsbEZyYW1lQWRkcigqbV9qaXQs
IG9mZnNldCkpOworICAgICAgICBtX2ppdC0+c3RvcmVWZWN0b3IocmVnLmZwcigpLCBjYWxsRnJh
bWVBZGRyKCptX2ppdCwgb2Zmc2V0KSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBHZW5lcmF0
ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpzcGlsbChUbXAgdG1wLCBSZWcgcmVnKQpAQCAtMjAyLDcg
KzIwNiw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJz
OjphbGxvYyhUbXAgdG1wLCBSZWcgcmVnLCBib29sIGlzCiAgICAgICAgIGlmICh0bXAuYmFuaygp
ID09IEdQKQogICAgICAgICAgICAgbV9qaXQtPmxvYWQ2NChjYWxsRnJhbWVBZGRyKCptX2ppdCwg
b2Zmc2V0KSwgcmVnLmdwcigpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9qaXQtPmxv
YWREb3VibGUoY2FsbEZyYW1lQWRkcigqbV9qaXQsIG9mZnNldCksIHJlZy5mcHIoKSk7CisgICAg
ICAgICAgICBtX2ppdC0+bG9hZFZlY3RvcihjYWxsRnJhbWVBZGRyKCptX2ppdCwgb2Zmc2V0KSwg
cmVnLmZwcigpKTsKICAgICB9CiB9CiAKQEAgLTMxMCwxMSArMzE0LDEzIEBAIHZvaWQgR2VuZXJh
dGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6cHJlcGFyZUZvckdlbmVyYXRpb24oKQogICAgICAgICAg
ICAgICAgICAgICAgICAgdG9GcmVlLmFwcGVuZChkYXRhLnNwaWxsU2xvdCk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoZnJlZVNsb3RzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBp
ZiAoZnJlZVNsb3RzLnNpemUoKSAmJiBmcmVlU2xvdHMubGFzdCgpLT5ieXRlU2l6ZSgpID49IGJ5
dGVzKGNvbnNlcnZhdGl2ZVdpZHRoKHRtcC5iYW5rKCkpKSkKICAgICAgICAgICAgICAgICAgICAg
ZGF0YS5zcGlsbFNsb3QgPSBmcmVlU2xvdHMudGFrZUxhc3QoKTsKICAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIGRhdGEuc3BpbGxTbG90ID0gbV9jb2RlLmFkZFN0YWNr
U2xvdCg4LCBTdGFja1Nsb3RLaW5kOjpTcGlsbCk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEu
c3BpbGxTbG90ID0gbV9jb2RlLmFkZFN0YWNrU2xvdChieXRlcyhjb25zZXJ2YXRpdmVXaWR0aCh0
bXAuYmFuaygpKSksIFN0YWNrU2xvdEtpbmQ6OlNwaWxsKTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBkYXRhTG9nTG5JZihHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzSW50
ZXJuYWw6OnZlcmJvc2UsICJhc3NpZ25TdGFja1Nsb3RUb1RtcCBibG9jazogIiwgKmJsb2NrLCAi
LCB0bXA6ICIsIHRtcCwgIiAtPiBzbG90ICIsIGRhdGEuc3BpbGxTbG90KTsKICAgICAgICAgICAg
ICAgICBkYXRhLnJlZyA9IFJlZygpOwogICAgICAgICAgICAgfTsKIApAQCAtMzU5LDcgKzM2NSw4
IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6cHJlcGFyZUZvckdlbmVyYXRp
b24oKQogICAgICAgICBmb3IgKFJlZyByZWcgOiBtX3JlZ2lzdGVyc1tiYW5rXSkgewogICAgICAg
ICAgICAgbV9hbGxvd2VkUmVnaXN0ZXJzLnNldChyZWcpOwogICAgICAgICAgICAgVG1wRGF0YSYg
ZGF0YSA9IG1fbWFwW1RtcChyZWcpXTsKLSAgICAgICAgICAgIGRhdGEuc3BpbGxTbG90ID0gbV9j
b2RlLmFkZFN0YWNrU2xvdCg4LCBTdGFja1Nsb3RLaW5kOjpTcGlsbCk7CisgICAgICAgICAgICBk
YXRhLnNwaWxsU2xvdCA9IG1fY29kZS5hZGRTdGFja1Nsb3QoYnl0ZXMoY29uc2VydmF0aXZlV2lk
dGgoYmFua0ZvclJlZyhyZWcpKSksIFN0YWNrU2xvdEtpbmQ6OlNwaWxsKTsKKyAgICAgICAgICAg
IGRhdGFMb2dMbklmKEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnNJbnRlcm5hbDo6dmVyYm9z
ZSwgImFsbG93ZWRSZWdpc3RlcnM6IHJlZzogIiwgcmVnLCAiIC0+IHNsb3QgIiwgZGF0YS5zcGls
bFNsb3QpOwogICAgICAgICAgICAgZGF0YS5yZWcgPSBSZWcoKTsKICAgICAgICAgfQogICAgIH0p
OwpAQCAtMzY5LDggKzM3Niw4IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6
cHJlcGFyZUZvckdlbmVyYXRpb24oKQogICAgICAgICBmb3IgKFN0YWNrU2xvdCogc2xvdCA6IG1f
Y29kZS5zdGFja1Nsb3RzKCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LT5pc0xvY2tlZCgpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0g
LXN0YXRpY19jYXN0PGludHB0cl90PihtX2NvZGUuZnJhbWVTaXplKCkpIC0gc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KG5leHRJbmRleCkgKiA4IC0gODsKLSAgICAgICAgICAgICsrbmV4dEluZGV4Owor
ICAgICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludHB0cl90PihtX2Nv
ZGUuZnJhbWVTaXplKCkpIC0gc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG5leHRJbmRleCkgKiA4IC0g
KHNsb3QtPmJ5dGVTaXplKCkgLSA4KSAtIDg7CisgICAgICAgICAgICBuZXh0SW5kZXggKz0gc2xv
dC0+Ynl0ZVNpemUoKSAvIDg7CiAgICAgICAgICAgICBzbG90LT5zZXRPZmZzZXRGcm9tRlAob2Zm
c2V0KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0J5TGluZWFyU2Nhbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tC
eUxpbmVhclNjYW4uY3BwCmluZGV4IGY3OTc5YWFmMzQ4OS4uN2I3OWU5M2JhN2Q4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5k
U3RhY2tCeUxpbmVhclNjYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0J5TGluZWFyU2Nhbi5jcHAKQEAgLTExMiw3ICsx
MTIsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9zdGFydEluZGV4KGNvZGUuc2l6ZSgpKQogICAg
ICAgICAsIG1fbWFwKGNvZGUpCiAgICAgICAgICwgbV9pbnNlcnRpb25TZXRzKGNvZGUuc2l6ZSgp
KQotICAgIHsKKyAgICB7IGlmICghT3B0aW9uczo6dmFsaWRhdGVHcmFwaCgpIHx8IE9wdGlvbnM6
OnZhbGlkYXRlR3JhcGhBdEVhY2hQaGFzZSgpKSBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAgICAgCiAgICAgdm9pZCBydW4oKQpAQCAtNTc3LDcgKzU3Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBTdGFja1Nsb3QqIHNwaWxsZWQgPSBtX21hcFt0bXBdLnNwaWxs
ZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNwaWxsZWQpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgT3Bjb2RlIG1v
dmUgPSBiYW5rID09IEdQID8gTW92ZSA6IE1vdmVEb3VibGU7CisgICAgICAgICAgICAgICAgICAg
ICAgICBPcGNvZGUgbW92ZSA9IGJhbmsgPT0gR1AgPyBNb3ZlIDogTW92ZVZlY3RvcjsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHRtcCA9IGFkZFNwaWxsVG1wV2l0aEludGVydmFsKGJhbmssIGlu
dGVydmFsRm9yU3BpbGwoaW5kZXhPZkVhcmx5LCByb2xlKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAocm9sZSA9PSBBcmc6OlNjcmF0Y2gpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
bGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNwcAppbmRleCBi
MGQyNWQxNmFlNmEuLmRmYzA5MDI2ZmVmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhD
b2xvcmluZy5jcHAKQEAgLTE3MTAsNiArMTcxMCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAg
IHN3aXRjaCAoaW5zdC5raW5kLm9wY29kZSkgewogICAgICAgICAgICAgY2FzZSBNb3ZlRmxvYXQ6
CiAgICAgICAgICAgICBjYXNlIE1vdmVEb3VibGU6CisgICAgICAgICAgICBjYXNlIE1vdmVWZWN0
b3I6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5NzUsNyArMTk3Niw4IEBAIHByaXZhdGU6CiAK
ICAgICBzdGF0aWMgdW5zaWduZWQgc3RhY2tTbG90TWluaW11bVdpZHRoKFdpZHRoIHdpZHRoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHdpZHRoIDw9IFdpZHRoMzIgPyA0IDogODsKKyAgICAgICAg
dW5zaWduZWQgYnl0ZXMgPSBieXRlc0ZvcldpZHRoKHdpZHRoKTsKKyAgICAgICAgcmV0dXJuIGJ5
dGVzIDwgNCA/IDQgOiBieXRlczsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxCYW5rIGJhbmssIHR5
cGVuYW1lIEFsbG9jYXRvclR5cGU+CkBAIC0yMDM0LDYgKzIwMzYsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYXZlIGFuIGluc3QgdGhhdCB3
b24ndCBhZG1pdCBzdGFjazogIiwgaW5zdCwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChpbnN0LmtpbmQub3Bjb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBNb3ZlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTW92ZVZl
Y3RvcjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE1vdmVEb3VibGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBNb3ZlRmxvYXQ6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBNb3ZlMzI6IHsKQEAgLTIxMDAsNiArMjEwMyw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBNb3ZlRG91YmxlOgogICAgICAgICAgICAgICAgICAgICBjYXNlIE1vdmVGbG9hdDoKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBNb3ZlVmVjdG9yOgogICAgICAgICAgICAgICAgICAgICAgICAg
aW5zdEJhbmsgPSBGUDsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgpAQCAtMjE1MCw2ICsyMTU0LDEwIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUgPSBi
YW5rID09IEdQID8gTW92ZSA6IE1vdmVEb3VibGU7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxNjoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gRlApOworICAgICAgICAgICAgICAgICAgICAgICAg
bW92ZSA9IE1vdmVWZWN0b3I7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAppbmRleCA3N2VlODQyNTEyNGIuLjEw
NGEwNzYzZGZjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
cmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcApAQCAt
OTYsNiArOTYsNyBAQCB1bnNpZ25lZCBBcmc6OmpzSGFzaCgpIGNvbnN0CiAgICAgc3dpdGNoICht
X2tpbmQpIHsKICAgICBjYXNlIEludmFsaWQ6CiAgICAgY2FzZSBTcGVjaWFsOgorICAgIGNhc2Ug
U2ltZEluZm86CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVG1wOgogICAgICAgICByZXN1bHQg
Kz0gbV9iYXNlLmludGVybmFsVmFsdWUoKTsKQEAgLTIxOSw2ICsyMjAsOSBAQCB2b2lkIEFyZzo6
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAg
IG91dC5wcmludCh3aWR0aCgpKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2ltZEluZm86
CisgICAgICAgIG91dC5wcmludCgiU0lNRCA9IHsgc2lnbkV4dGVuZDogIiwgKHVpbnQ4X3QpIG1f
c2lnbkV4dGVuZE1vZGUsICIsIGxhbmVJbnRlcnByZXRhdGlvbjogIiwgKHVpbnQ4X3QpIG1fbGFu
ZUludGVycHJldGF0aW9uLCAiIH0iKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yOTYsNiArMzAwLDkgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZzo6S2luZCBraW5kKQogICAgIGNhc2UgQXJn
OjpXaWR0aEFyZzoKICAgICAgICAgb3V0LnByaW50KCJXaWR0aEFyZyIpOwogICAgICAgICByZXR1
cm47CisgICAgY2FzZSBBcmc6OlNpbWRJbmZvOgorICAgICAgICBvdXQucHJpbnQoIlNpbWRJbmZv
Iik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKaW5kZXggZmJmNjYzN2Iy
ODYwLi4yZWU1ZDc1ZWYxNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQXJnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaApA
QCAtOTAsNyArOTAsOSBAQCBwdWJsaWM6CiAgICAgICAgIFdpZHRoQXJnLAogCiAgICAgICAgIC8v
IFplcm9SZWcgaXMgaW50ZXJwcmV0ZWQgYXMgYSB6ZXJvIHJlZ2lzdGVyIGluIEFSTTY0Ci0gICAg
ICAgIFplcm9SZWcKKyAgICAgICAgWmVyb1JlZywKKyAgICAgICAgCisgICAgICAgIFNpbWRJbmZv
CiAgICAgfTsKICAgICAKICAgICBlbnVtIFRlbXBlcmF0dXJlIDogaW50OF90IHsKQEAgLTQ5Miw2
ICs0OTQsMTUgQEAgcHVibGljOgogICAgICAgICA6IEFyZyhBaXI6OlRtcChyZWcpKQogICAgIHsK
ICAgICB9CisgICAgCisgICAgc3RhdGljIEFyZyBzaW1kSW5mbyhTaW1kTGFuZUludGVycHJldGF0
aW9uIGxhbmVJbnRlcnByZXRhdGlvbiwgU2ltZFNpZ25FeHRlbmRNb2RlIHNpZ25FeHRlbmRNb2Rl
KQorICAgIHsKKyAgICAgICAgQXJnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fa2luZCA9IFNp
bWRJbmZvOworICAgICAgICByZXN1bHQubV9sYW5lSW50ZXJwcmV0YXRpb24gPSBsYW5lSW50ZXJw
cmV0YXRpb247CisgICAgICAgIHJlc3VsdC5tX3NpZ25FeHRlbmRNb2RlID0gc2lnbkV4dGVuZE1v
ZGU7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCiAgICAgc3RhdGljIEFyZyBpbW0o
aW50NjRfdCB2YWx1ZSkKICAgICB7CkBAIC05MDksNiArOTIwLDExIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBpc1RtcCgpIHx8IGlzU3RhY2soKTsKICAgICB9CisgICAgCisgICAg
Ym9vbCBpc1NpbWRJbmZvKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBraW5kKCkgPT0g
U2ltZEluZm87CisgICAgfQogCiAgICAgQWlyOjpUbXAgdG1wKCkgY29uc3QKICAgICB7CkBAIC05
NDEsNiArOTU3LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiBCMzo6aXNSZXBy
ZXNlbnRhYmxlQXM8aW50MzJfdD4odmFsdWUpOwogICAgICAgICAgICAgY2FzZSBXaWR0aDY0Ogog
ICAgICAgICAgICAgICAgIHJldHVybiBCMzo6aXNSZXByZXNlbnRhYmxlQXM8aW50NjRfdD4odmFs
dWUpOworICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBjYXNlIFVuc2lnbmVkOgpAQCAtOTUzLDYgKzk3MSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICByZXR1cm4gQjM6OmlzUmVwcmVzZW50YWJsZUFzPHVpbnQzMl90
Pih2YWx1ZSk7CiAgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CiAgICAgICAgICAgICAgICAgcmV0
dXJuIEIzOjppc1JlcHJlc2VudGFibGVBczx1aW50NjRfdD4odmFsdWUpOworICAgICAgICAgICAg
Y2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAg
LTk3Myw2ICs5OTMsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludDMyX3Q+KHZhbHVlKTsKICAgICAgICAgICAgIGNhc2UgV2lkdGg2NDoKICAgICAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpOworICAgICAgICAgICAg
Y2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGNhc2UgVW5z
aWduZWQ6CkBAIC05ODUsNiArMTAwNyw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKTsKICAgICAgICAgICAgIGNhc2UgV2lkdGg2
NDoKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKTsK
KyAgICAgICAgICAgIGNhc2UgV2lkdGgxMjg6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTEwOTUsNiArMTExOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIFRtcDoKICAgICAgICAgICAgIHJldHVybiBpc0dQVG1wKCk7CisgICAg
ICAgIGNhc2UgU2ltZEluZm86CiAgICAgICAgIGNhc2UgSW52YWxpZDoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTExNiw2ICsxMTQxLDcgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICBjYXNlIEludmFsaWQ6CiAgICAgICAgIGNhc2Ug
WmVyb1JlZzoKKyAgICAgICAgY2FzZSBTaW1kSW5mbzoKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAgICBjYXNlIEFkZHI6CkBAIC0xMjYy
LDYgKzEyODgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRTY2Fs
ZWRVSW1tMTI8MzI+KG9mZnNldCk7CiAgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGlzVmFsaWRTY2FsZWRVSW1tMTI8NjQ+KG9mZnNldCk7CisgICAgICAg
ICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzA4LDYgKzEz
MzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWmVyb1JlZzoKICAgICAgICAgY2FzZSBTaW1w
bGVBZGRyOgogICAgICAgICBjYXNlIEV4dGVuZGVkT2Zmc2V0QWRkcjoKKyAgICAgICAgY2FzZSBT
aW1kSW5mbzoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIEFkZHI6CiAg
ICAgICAgIGNhc2UgU3RhY2s6CkBAIC0xNDc4LDYgKzE1MDcsMTggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbj4obV9v
ZmZzZXQpOwogICAgIH0KICAgICAKKyAgICBTaW1kTGFuZUludGVycHJldGF0aW9uIGxhbmVJbnRl
cnByZXRhdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNTaW1kSW5mbygpKTsK
KyAgICAgICAgcmV0dXJuIG1fbGFuZUludGVycHJldGF0aW9uOworICAgIH0KKyAgICAKKyAgICBT
aW1kU2lnbkV4dGVuZE1vZGUgc2lnbkV4dGVuZE1vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
QVNTRVJUKGlzU2ltZEluZm8oKSk7CisgICAgICAgIHJldHVybiBtX3NpZ25FeHRlbmRNb2RlOwor
ICAgIH0KKyAgICAKICAgICAvLyBUZWxscyB5b3UgaWYgdGhlIEFyZyBpcyBpbnZlcnRpYmxlLiBP
bmx5IGNvbmRpdGlvbiBhcmd1bWVudHMgYXJlIGludmVydGlibGUsIGFuZCBldmVuIGZvciB0aG9z
ZSwgdGhlcmUKICAgICAvLyBhcmUgYSBmZXcgZXhjZXB0aW9ucyAtIG5vdGFibHkgT3ZlcmZsb3cg
YW5kIFNpZ25lZC4KICAgICBib29sIGlzSW52ZXJ0aWJsZSgpIGNvbnN0CkBAIC0xNTYwLDYgKzE2
MDEsOCBAQCBwcml2YXRlOgogICAgIGludDMyX3QgbV9zY2FsZSB7IDEgfTsKICAgICBBaXI6OlRt
cCBtX2Jhc2U7CiAgICAgQWlyOjpUbXAgbV9pbmRleDsKKyAgICBTaW1kTGFuZUludGVycHJldGF0
aW9uIG1fbGFuZUludGVycHJldGF0aW9uOworICAgIFNpbWRTaWduRXh0ZW5kTW9kZSBtX3NpZ25F
eHRlbmRNb2RlOwogfTsKIAogc3RydWN0IEFyZ0hhc2ggewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwCmluZGV4IDhmZTBhYWU5N2I0NS4uNGRj
ZmZhZTAzMzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckND
YWxsU3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2Fs
bFNwZWNpYWwuY3BwCkBAIC0zNyw3ICszNyw3IEBAIENDYWxsU3BlY2lhbDo6Q0NhbGxTcGVjaWFs
KCkKICAgICBtX2Nsb2JiZXJlZFJlZ3MgPSBSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCk7CiAg
ICAgbV9jbG9iYmVyZWRSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkp
OwogICAgIG1fY2xvYmJlcmVkUmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3
YXJlUmVnaXN0ZXJzKCkpOwotICAgIG1fY2xvYmJlcmVkUmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0
OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIG1fY2xvYmJlcmVkUmVncy5zZXQoUmVnaXN0
ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7IC8vIFRPRE8KICAgICBtX2Nsb2JiZXJlZFJl
Z3MuY2xlYXIoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgIG1fY2xvYmJlcmVkUmVncy5j
bGVhcihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwogICAgIG1fY2xvYmJlcmVkUmVncy5jbGVh
cihGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckNDYWxsaW5nQ29udmVudGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckNDYWxsaW5nQ29udmVudGlvbi5jcHAKaW5kZXggZDIzZWExYjRlZjMy
Li40NjY1M2RhNjA4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckNDYWxsaW5nQ29udmVudGlvbi5jcHAKQEAgLTk5LDYgKzk5LDcgQEAgVG1wIGNDYWxs
UmVzdWx0KFR5cGUgdHlwZSkKICAgICBjYXNlIEZsb2F0OgogICAgIGNhc2UgRG91YmxlOgogICAg
ICAgICByZXR1cm4gVG1wKEZQUkluZm86OnJldHVyblZhbHVlRlBSKTsKKyAgICBjYXNlIFYxMjg6
CiAgICAgY2FzZSBUdXBsZToKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmNwcAppbmRleCA1YzI3YjRlYmY5N2Iu
LmY4MzAxYWRiMTYzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJFbWl0U2h1ZmZsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJF
bWl0U2h1ZmZsZS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogbmFtZXNwYWNlIHsKIAogbmFtZXNwYWNlIEFpckVtaXRT
aHVmZmxlSW50ZXJuYWwgewotc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsK
K3N0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRm9ybVRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZvcm1UYWJs
ZS5oCmluZGV4IDZhNDJkMmVlYmQ1ZS4uMDE3ZmM2N2ZiNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZvcm1UYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyRm9ybVRhYmxlLmgKQEAgLTM2LDEyICszNiwxMiBAQCBzdGF0aWMg
Y29uc3RleHByIHVpbnQ4X3QgZm9ybVJvbGVNYXNrID0gMTU7CiBzdGF0aWMgY29uc3RleHByIHVp
bnQ4X3QgZm9ybUJhbmtTaGlmdCA9IDQ7CiBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgZm9ybUJh
bmtNYXNrID0gMTsKIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBmb3JtV2lkdGhTaGlmdCA9IDU7
Ci1zdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgZm9ybVdpZHRoTWFzayA9IDM7Ci1zdGF0aWMgY29u
c3RleHByIHVpbnQ4X3QgZm9ybUludmFsaWRTaGlmdCA9IDc7CitzdGF0aWMgY29uc3RleHByIHVp
bnQ4X3QgZm9ybVdpZHRoTWFzayA9IDQ7CitzdGF0aWMgY29uc3RleHByIHVpbnQxNl90IGZvcm1J
bnZhbGlkU2hpZnQgPSA4OwogCiAjZGVmaW5lIEVOQ09ERV9JTlNUX0ZPUk0ocm9sZSwgYmFuaywg
d2lkdGgpIChzdGF0aWNfY2FzdDx1aW50OF90Pihyb2xlKSA8PCBmb3JtUm9sZVNoaWZ0IHwgc3Rh
dGljX2Nhc3Q8dWludDhfdD4oYmFuaykgPDwgZm9ybUJhbmtTaGlmdCB8IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHdpZHRoKSA8PCBmb3JtV2lkdGhTaGlmdCkKIAotI2RlZmluZSBJTlZBTElEX0lOU1Rf
Rk9STSAoMSA8PCBmb3JtSW52YWxpZFNoaWZ0KQorI2RlZmluZSBJTlZBTElEX0lOU1RfRk9STSAo
MCkKIAogSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIGNvbnN0IHVpbnQ4X3QgZ19mb3JtVGFibGVb
XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIZWxwZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckhlbHBlcnMuaAppbmRleCA5MDcw
NDEzY2JlZGUuLmFiZDdmMDU2NTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJIZWxwZXJzLmgKQEAgLTQzLDYgKzQzLDggQEAgaW5saW5lIEFpcjo6T3Bjb2RlIG1vdmVGb3JU
eXBlKFR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIE1vdmVGbG9hdDsKICAgICBjYXNlIERvdWJs
ZToKICAgICAgICAgcmV0dXJuIE1vdmVEb3VibGU7CisgICAgY2FzZSBWMTI4OgorICAgICAgICBy
ZXR1cm4gTW92ZVZlY3RvcjsKICAgICBjYXNlIFZvaWQ6CiAgICAgY2FzZSBUdXBsZToKICAgICAg
ICAgYnJlYWs7CkBAIC03Nyw2ICs3OSw4IEBAIGlubGluZSBBaXI6Ok9wY29kZSByZWxheGVkTW92
ZUZvclR5cGUoVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gTW92ZUZsb2F0OwogICAgIGNhc2Ug
RG91YmxlOgogICAgICAgICByZXR1cm4gTW92ZURvdWJsZTsKKyAgICBjYXNlIFYxMjg6CisgICAg
ICAgIHJldHVybiBNb3ZlVmVjdG9yOwogICAgIGNhc2UgVm9pZDoKICAgICBjYXNlIFR1cGxlOgog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcAppbmRleCAyMjFhZTczYTFjYjUuLjBhNTAxMTVjNzMw
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVy
UmVnQWxsb2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJB
ZnRlclJlZ0FsbG9jLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0Fs
bG9jKENvZGUmIGNvZGUpCiAKICAgICAgICAgICAgICAgICBSZWdpc3RlclNldCBsaXZlUmVncyA9
IHVzZWRSZWdpc3RlcnMuZ2V0KCZpbnN0KTsKICAgICAgICAgICAgICAgICBSZWdpc3RlclNldCBy
ZWdzVG9TYXZlID0gbGl2ZVJlZ3M7Ci0gICAgICAgICAgICAgICAgcmVnc1RvU2F2ZS5leGNsdWRl
KFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworLy8gICAgICAgICAgICAgICAg
cmVnc1RvU2F2ZS5leGNsdWRlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOyAv
LyBUT0RPCiAgICAgICAgICAgICAgICAgcmVnc1RvU2F2ZS5leGNsdWRlKFJlZ2lzdGVyU2V0Ojpz
dGFja1JlZ2lzdGVycygpKTsKICAgICAgICAgICAgICAgICByZWdzVG9TYXZlLmV4Y2x1ZGUoUmVn
aXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJNYWNyb3MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlck1hY3Jvcy5jcHAKaW5kZXggODUxODBlMzI1NjUy
Li5hN2I2YmJiOGIxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyTG93ZXJNYWNyb3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
TG93ZXJNYWNyb3MuY3BwCkBAIC0xMTQsNiArMTE0LDkgQEAgdm9pZCBsb3dlck1hY3JvcyhDb2Rl
JiBjb2RlKQogICAgICAgICAgICAgICAgIGNhc2UgSW50NjQ6CiAgICAgICAgICAgICAgICAgICAg
IGluc2VydGlvblNldC5pbnNlcnQoaW5zdEluZGV4ICsgMSwgTW92ZSwgdmFsdWUsIHJlc3VsdCwg
cmVzdWx0RHN0KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSBWMTI4OgorICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJ
bmRleCArIDEsIE1vdmVWZWN0b3IsIHZhbHVlLCByZXN1bHQsIHJlc3VsdERzdCk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29k
ZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4
IDg0ZmJlMTI4OWYzNC4uMTA5NTBmMTBkY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTEwNyw2ICsxMDcsOCBAQAogCiBOb3AKIAor
QnJlYWtwb2ludCAvZWZmZWN0cworCiBBZGQzMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAg
IEltbSwgVG1wLCBUbXAKICAgICBUbXAsIFRtcCwgVG1wCkBAIC03NDAsNiArNzQyLDEzIEBAIE1v
dmVEb3VibGUgVTpGOjY0LCBEOkY6NjQKIAogTW92ZURvdWJsZSBVOkY6NjQsIEQ6Rjo2NCwgUzpG
OjY0CiAgICAgQWRkciwgQWRkciwgVG1wCisgICAgCitNb3ZlVmVjdG9yIFU6Rjo2NCwgRDpGOjY0
CisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAgYXMgbG9hZERvdWJsZQorICAgIEluZGV4LCBU
bXAgYXMgbG9hZERvdWJsZQorICAgIFRtcCwgQWRkciBhcyBzdG9yZURvdWJsZQorICAgIFRtcCwg
SW5kZXggYXMgc3RvcmVEb3VibGUKIAogTW92ZVplcm9Ub0RvdWJsZSBEOkY6NjQKICAgICBUbXAK
QEAgLTE2MTUsNiArMTYyNCwxMiBAQCBSZXRGbG9hdCBVOkY6MzIgL3JldHVybgogUmV0RG91Ymxl
IFU6Rjo2NCAvcmV0dXJuCiAgICAgVG1wCiAKK1JlcGxhY2VMYW5lIFU6RzpQdHIsIFU6Rzo4LCBV
Okc6NjQsIFVEOkY6MTI4CisgICAgU2ltZEluZm8sIEltbSwgVG1wLCBUbXAKKyAgICAKK0V4dHJh
Y3RMYW5lIFU6RzpQdHIsIFU6Rzo4LCBVOkY6MTI4LCBEOkc6NjQKKyAgICBTaW1kSW5mbywgSW1t
LCBUbXAsIFRtcAorCiBPb3BzIC90ZXJtaW5hbAogCiAjIFRoaXMgaXMgYSB0ZXJtaW5hbCBidXQg
d2UgZXhwcmVzcyBpdCBhcyBhIEN1c3RvbSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgaXQgdG8gaGF2
ZSBhIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2Rl
X2dlbmVyYXRvci5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVy
YXRvci5yYgppbmRleCAwNTVjMDVhMGEzYzguLmY4MDc5NTNiZjMyZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgpAQCAtMjI5LDcgKzIy
OSw3IEBAIGRlZiBpc0dGKHRva2VuKQogZW5kCiAKIGRlZiBpc0tpbmQodG9rZW4pCi0gICAgdG9r
ZW4gPX4gL1xBKChUbXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02NCl8KFplcm9S
ZWcpfChTaW1wbGVBZGRyKXwoQWRkcil8KEV4dGVuZGVkT2Zmc2V0QWRkcil8KEluZGV4KXwoUHJl
SW5kZXgpfChQb3N0SW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERvdWJsZUNvbmQpfChTdGF0
dXNDb25kKSlcWi8KKyAgICB0b2tlbiA9fiAvXEEoKFRtcCl8KEltbSl8KEJpZ0ltbSl8KEJpdElt
bSl8KEJpdEltbTY0KXwoWmVyb1JlZyl8KFNpbXBsZUFkZHIpfChBZGRyKXwoRXh0ZW5kZWRPZmZz
ZXRBZGRyKXwoSW5kZXgpfChQcmVJbmRleCl8KFBvc3RJbmRleCl8KFJlbENvbmQpfChSZXNDb25k
KXwoRG91YmxlQ29uZCl8KFN0YXR1c0NvbmQpfChTaW1kSW5mbykpXFovCiBlbmQKIAogZGVmIGlz
QXJjaCh0b2tlbikKQEAgLTIzNyw3ICsyMzcsNyBAQCBkZWYgaXNBcmNoKHRva2VuKQogZW5kCiAK
IGRlZiBpc1dpZHRoKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgoOCl8KDE2KXwoMzIpfCg2NCl8
KFB0cikpXFovCisgICAgdG9rZW4gPX4gL1xBKCg4KXwoMTYpfCgzMil8KDY0KXwoUHRyKXwoMTI4
KSlcWi8KIGVuZAogCiBkZWYgaXNLZXl3b3JkKHRva2VuKQpAQCAtMzEwLDcgKzMxMCw3IEBAIGNs
YXNzIFBhcnNlcgogCiAgICAgZGVmIGNvbnN1bWVXaWR0aAogICAgICAgICByZXN1bHQgPSB0b2tl
bi5zdHJpbmcKLSAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQgd2lkdGggKDgsIDE2LCAzMiwg
b3IgNjQpIikgdW5sZXNzIGlzV2lkdGgocmVzdWx0KQorICAgICAgICBwYXJzZUVycm9yKCJFeHBl
Y3RlZCB3aWR0aCAoOCwgMTYsIDMyLCA2NCwgb3IgMTI4KSIpIHVubGVzcyBpc1dpZHRoKHJlc3Vs
dCkKICAgICAgICAgYWR2YW5jZQogICAgICAgICByZXN1bHQKICAgICBlbmQKQEAgLTk0MSw2ICs5
NDEsNyBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICB3aGVu
ICJEb3VibGVDb25kIgogICAgICAgICAgICAgICAgIHdoZW4gIlN0YXR1c0NvbmQiCiAgICAgICAg
ICAgICAgICAgd2hlbiAiWmVyb1JlZyIKKyAgICAgICAgICAgICAgICB3aGVuICJTaW1kSW5mbyIK
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlICJVbmV4cGVj
dGVkIGtpbmQ6ICN7a2luZC5uYW1lfSIKICAgICAgICAgICAgICAgICBlbmQKQEAgLTEyNTMsNiAr
MTI1NCw4IEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgICAg
ICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc0RvdWJsZUNvbmRpdGlvbigpIgogICAgICAg
ICAgICAgICAgIHdoZW4gIlN0YXR1c0NvbmQiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJp
bnQgImFyZ3NbI3tpbmRleH1dLmFzU3RhdHVzQ29uZGl0aW9uKCkiCisgICAgICAgICAgICAgICAg
d2hlbiAiU2ltZEluZm8iCisgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tp
bmRleH1dLmxhbmVJbnRlcnByZXRhdGlvbigpLCBhcmdzWyN7aW5kZXh9XS5zaWduRXh0ZW5kTW9k
ZSgpIgogICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAppbmRleCA1YmY2N2I2
MWI2MmIuLmRiM2NjZDQ0NjdjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBAIC04Niw2ICs4Niw4IEBAIGludCBCeXRlY29kZUR1
bXBlcjxCbG9jaz46Om91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCBvZmZzZXQpCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KIENTdHJpbmcgQnl0ZWNvZGVEdW1wZXI8
QmxvY2s+Ojpjb25zdGFudE5hbWUoVmlydHVhbFJlZ2lzdGVyIHJlZykgY29uc3QKIHsKKyAgICBp
ZiAocmVnLnRvQ29uc3RhbnRJbmRleCgpID49IChpbnQpIGJsb2NrKCktPmNvbnN0YW50UmVnaXN0
ZXJzKCkuc2l6ZSgpKQorICAgICAgICByZXR1cm4gdG9DU3RyaW5nKCJJTlZBTElEX0NPTlNUQU5U
KCIsIHJlZywgIikiKTsKICAgICBhdXRvIHZhbHVlID0gYmxvY2soKS0+Z2V0Q29uc3RhbnQocmVn
KTsKICAgICByZXR1cm4gdG9DU3RyaW5nKHZhbHVlLCAiKCIsIHJlZywgIikiKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGI5NjJi
MjhjZTYyZi4uZmQ0NjUwOTY3ZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTE1MjIsNiArMTUyMiw3IEBAIG9wIDp3aWRlMzIKIAog
b3AgOmVudGVyCiBvcCA6bm9wCitvcCA6YnJlYWsKIG9wIDpsb29wX2hpbnQKIAogb3AgOm1vdiwK
QEAgLTE2NzYsMTQgKzE2NzcsMTQgQEAgb3AgOmNhbGwsCiAgICAgYXJnczogewogICAgICAgICBm
dW5jdGlvbkluZGV4OiB1bnNpZ25lZCwKICAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAot
ICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCisgICAgICAgIHNpemVPZlN0YWNr
QXJnczogdW5zaWduZWQsCiAgICAgfQogCiBvcCA6Y2FsbF9ub190bHMsCiAgICAgYXJnczogewog
ICAgICAgICBmdW5jdGlvbkluZGV4OiB1bnNpZ25lZCwKICAgICAgICAgc3RhY2tPZmZzZXQ6IHVu
c2lnbmVkLAotICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCisgICAgICAgIHNp
emVPZlN0YWNrQXJnczogdW5zaWduZWQsCiAgICAgfQogCiBvcCA6Y2FsbF9pbmRpcmVjdCwKQEAg
LTE2OTEsNyArMTY5Miw3IEBAIG9wIDpjYWxsX2luZGlyZWN0LAogICAgICAgICBmdW5jdGlvbklu
ZGV4OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHNpZ25hdHVyZUluZGV4OiB1bnNpZ25lZCwK
ICAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAotICAgICAgICBudW1iZXJPZlN0YWNrQXJn
czogdW5zaWduZWQsCisgICAgICAgIHNpemVPZlN0YWNrQXJnczogdW5zaWduZWQsCiAgICAgICAg
IHRhYmxlSW5kZXg6IHVuc2lnbmVkLAogICAgIH0KIApAQCAtMTcwMCw3ICsxNzAxLDcgQEAgb3Ag
OmNhbGxfaW5kaXJlY3Rfbm9fdGxzLAogICAgICAgICBmdW5jdGlvbkluZGV4OiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgICAgIHNpZ25hdHVyZUluZGV4OiB1bnNpZ25lZCwKICAgICAgICAgc3RhY2tP
ZmZzZXQ6IHVuc2lnbmVkLAotICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCisg
ICAgICAgIHNpemVPZlN0YWNrQXJnczogdW5zaWduZWQsCiAgICAgICAgIHRhYmxlSW5kZXg6IHVu
c2lnbmVkLAogICAgIH0KIApAQCAtMTcwOSw3ICsxNzEwLDcgQEAgb3AgOmNhbGxfcmVmLAogICAg
ICAgICBmdW5jdGlvblJlZmVyZW5jZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBzaWduYXR1
cmVJbmRleDogdW5zaWduZWQsCiAgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKLSAgICAg
ICAgbnVtYmVyT2ZTdGFja0FyZ3M6IHVuc2lnbmVkLAorICAgICAgICBzaXplT2ZTdGFja0FyZ3M6
IHVuc2lnbmVkLAogICAgIH0KIAogb3AgOmNhbGxfcmVmX25vX3RscywKQEAgLTE3MTcsNyArMTcx
OCw3IEBAIG9wIDpjYWxsX3JlZl9ub190bHMsCiAgICAgICAgIGZ1bmN0aW9uUmVmZXJlbmNlOiBW
aXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHNpZ25hdHVyZUluZGV4OiB1bnNpZ25lZCwKICAgICAg
ICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAotICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5z
aWduZWQsCisgICAgICAgIHNpemVPZlN0YWNrQXJnczogdW5zaWduZWQsCiAgICAgfQogCiBvcCA6
Y3VycmVudF9tZW1vcnksCkBAIC0xODkxLDUgKzE4OTIsMTYgQEAgb3BfZ3JvdXAgOkNhdGNoQWxs
LAogICAgIGFyZ3M6IHsKICAgICAgICAgZXhjZXB0aW9uOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAg
fQorICAgIAorc2ltZF9vcF9ncm91cCA6U2ltZExhbmUsCisgICAgWworICAgICAgICA6c2ltZF9l
eHRyYWN0X2xhbmUsCisgICAgXSwKKyAgICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJl
Z2lzdGVyLAorICAgICAgICBsYW5lOiB1bnNpZ25lZCwKKyAgICAgICAgdjogVmlydHVhbFJlZ2lz
dGVyLAorICAgIH0sCisgICAgbWFrZVNpZ25lZFZhcmlhbnRzOiB0cnVlCiAKIGVuZF9zZWN0aW9u
IDpXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlckNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXJDb21tb24uaAppbmRleCBkYmEwZmUzMjJiZjguLjk2OGI1NjgxOTcxMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5o
CkBAIC01NSw2ICs1NSw3IEBAIHZvaWQgYWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBp
bGVyVGh1bmsoTWFjcm9Bc3NlbWJsZXImIGppdCwgVk0mIHZtLCBKSVRUCiAgICAgICAgIHJlZ2lz
dGVyc1RvUHJlc2VydmUubWVyZ2UoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygp
KTsKICAgICB9CiAKKyAgICBBU1NFUlQoIXJlZ2lzdGVyc1RvUHJlc2VydmUubnVtYmVyT2ZTZXRG
UFJzKCkpOwogICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZih2b2lkKikgKiByZWdpc3Rl
cnNUb1ByZXNlcnZlLm51bWJlck9mU2V0R1BScygpOwogICAgIGlmIChpc0ZUTE9TUkV4aXQpCiAg
ICAgICAgIHNjcmF0Y2hTaXplICs9IHNpemVvZih2b2lkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1RodW5rcy5jcHAKaW5kZXggMGM0ZDE5NWQ5MTQ4Li5iYWFkNDcwN2EyOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgi
CisjaW5jbHVkZSAiQjNXaWR0aC5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1
ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCkBAIC00Nyw3ICs0OCw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdEdlbmVyYXRp
b25UaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYmVm
b3JlIHdlIHVzZSB0aGUgc2NyYXRjaCBidWZmZXIgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGFsc28g
dXNlcyB0aGUgc2NyYXRjaCBidWZmZXIuCiAgICAgYWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhp
dENvbXBpbGVyVGh1bms8REZHOjpKSVRDb2RlPihqaXQsIHZtLCBKSVRUeXBlOjpERkdKSVQpOwog
ICAgIAotICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAo
R1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7
CisgICAgc2l6ZV90IHNjcmF0Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIEdQUklu
Zm86Om51bWJlck9mUmVnaXN0ZXJzICsgQjM6OmJ5dGVzKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChC
Mzo6RlApKSAqIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOwogICAgIFNjcmF0Y2hCdWZmZXIq
IHNjcmF0Y2hCdWZmZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7CiAg
ICAgRW5jb2RlZEpTVmFsdWUqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4o
c2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKIApAQCAtODQsOCArODUsOCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5l
cmF0b3IoVk0mIHZtKQogICAgIHN0b3JlU3Bvb2xlci5maW5hbGl6ZUdQUigpOwogCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsK
LSAgICAgICAgcHRyZGlmZl90IG9mZnNldCA9IChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyAr
IGkpICogc2l6ZW9mKGRvdWJsZSk7Ci0gICAgICAgIHN0b3JlU3Bvb2xlci5zdG9yZUZQUih7IEZQ
UkluZm86OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9KTsKKyAgICAgICAgcHRyZGlmZl90IG9mZnNl
dCA9IChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkgKiBCMzo6Ynl0ZXMoQjM6OmNvbnNl
cnZhdGl2ZVdpZHRoKEIzOjpGUCkpIC8gOCkgKiBzaXplb2YoZG91YmxlKTsKKyAgICAgICAgc3Rv
cmVTcG9vbGVyLnN0b3JlRlBSKHsgRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgb2Zmc2V0IH0sIEIz
OjpieXRlcyhCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOwogICAgIH0KICAgICBzdG9y
ZVNwb29sZXIuZmluYWxpemVGUFIoKTsKIApAQCAtMTA1LDggKzEwNiw4IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRv
cihWTSYgdm0pCiAgICAgbG9hZFNwb29sZXIuZmluYWxpemVHUFIoKTsKIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0gICAg
ICAgIHB0cmRpZmZfdCBvZmZzZXQgPSAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSAq
IHNpemVvZihkb3VibGUpOwotICAgICAgICBsb2FkU3Bvb2xlci5sb2FkRlBSKHsgRlBSSW5mbzo6
dG9SZWdpc3RlcihpKSwgb2Zmc2V0IH0pOworICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gKEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSAqIEIzOjpieXRlcyhCMzo6Y29uc2VydmF0aXZl
V2lkdGgoQjM6OkZQKSkgLyA4KSAqIHNpemVvZihkb3VibGUpOworICAgICAgICBsb2FkU3Bvb2xl
ci5sb2FkRlBSKHsgRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgb2Zmc2V0IH0sIEIzOjpieXRlcyhC
Mzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOwogICAgIH0KICAgICBsb2FkU3Bvb2xlci5m
aW5hbGl6ZUZQUigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNz
ZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fz
c2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcAppbmRleCA4ZDRkMTI5NTE1ZDYuLmJhYzJmMThi
NzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02
NC9BNjRET3Bjb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVy
L0FSTTY0L0E2NERPcGNvZGUuY3BwCkBAIC03NCw2ICs3NCw4IEBAIHN0YXRpYyBjb25zdCBPcGNv
ZGVHcm91cEluaXRpYWxpemVyIG9wY29kZUdyb3VwTGlzdFtdID0gewogICAgIE9QQ09ERV9HUk9V
UF9FTlRSWSgweDBiLCBBNjRET3Bjb2RlQWRkU3VidHJhY3RTaGlmdGVkUmVnaXN0ZXIpLAogICAg
IE9QQ09ERV9HUk9VUF9FTlRSWSgweDBjLCBBNjRET3Bjb2RlTG9hZFN0b3JlUmVnaXN0ZXJQYWly
KSwKICAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgwZCwgQTY0RE9wY29kZUxvYWRTdG9yZVJlZ2lz
dGVyUGFpciksCisgICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MGUsIEE2NERPcGNvZGVWZWN0b3JE
YXRhUHJvY2Vzc2luZ0xvZ2ljYWwxU291cmNlKSwKKyAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgw
ZSwgQTY0RE9wY29kZVZlY3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbDJTb3VyY2UpLAogICAgIE9Q
Q09ERV9HUk9VUF9FTlRSWSgweDExLCBBNjRET3Bjb2RlQWRkU3VidHJhY3RJbW1lZGlhdGUpLAog
ICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDEyLCBBNjRET3Bjb2RlTW92ZVdpZGUpLAogICAgIE9Q
Q09ERV9HUk9VUF9FTlRSWSgweDEyLCBBNjRET3Bjb2RlTG9naWNhbEltbWVkaWF0ZSksCkBAIC0x
NjQzLDYgKzE2NDUsNTYgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZVVuY29uZGl0aW9uYWxCcmFu
Y2hSZWdpc3Rlcjo6Zm9ybWF0KCkKICAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7CiB9CiAKK2Nv
bnN0IGNoYXIqIEE2NERPcGNvZGVWZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwxU291cmNlOjpm
b3JtYXQoKQoreworICAgIGFwcGVuZEluc3RydWN0aW9uTmFtZShvcE5hbWUoKSk7CisgICAgYXBw
ZW5kU2ltZExhbmVJbmRleEFuZFR5cGUoKHEoKSA8PCA2KSB8IGltbTUoKSk7CisgICAgYXBwZW5k
U2VwYXJhdG9yKCk7CisgICAgYXBwZW5kUmVnaXN0ZXJOYW1lKHJkKCkpOworICAgIGFwcGVuZFNl
cGFyYXRvcigpOworICAgIGFwcGVuZFJlZ2lzdGVyTmFtZShydCgpKTsKKyAgICBhcHBlbmRTZXBh
cmF0b3IoKTsKKyAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7Cit9CisKK2NvbnN0IGNoYXIqIEE2
NERPcGNvZGVWZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwxU291cmNlOjpvcE5hbWUoKQorewor
ICAgIHN3aXRjaCAob3AxMF8xNSgpKSB7CisgICAgY2FzZSAwYjAwMDExMToKKyAgICAgICAgcmV0
dXJuICJpbnMiOworICAgIGNhc2UgMGIwMDExMTE6CisgICAgICAgIHJldHVybiAidW1vdiI7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgZGF0YUxvZ0xuKCJEaXNzYXNzZW1ibGVyIHNhdyB1bmtub3du
IHNpbWQgb25lIHNvdXJjZSBpbnN0cnVjdGlvbiBvcGNvZGUgIiwgb3AxMF8xNSgpKTsKKyAgICAg
ICAgcmV0dXJuICJTSU1EVUsiOworICAgIH0KK30KKworY29uc3QgY2hhciogQTY0RE9wY29kZVZl
Y3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbDJTb3VyY2U6OmZvcm1hdCgpCit7CisgICAgYXBwZW5k
SW5zdHJ1Y3Rpb25OYW1lKG9wTmFtZSgpKTsKKyAgICBhcHBlbmRTaW1kTGFuZVR5cGUocSgpKTsK
KyAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICBhcHBlbmRSZWdpc3Rlck5hbWUocmQoKSk7Cisg
ICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgYXBwZW5kUmVnaXN0ZXJOYW1lKHJuKCkpOworICAg
IGFwcGVuZFNlcGFyYXRvcigpOworICAgIGFwcGVuZFJlZ2lzdGVyTmFtZShybSgpKTsKKyAgICBh
cHBlbmRTZXBhcmF0b3IoKTsKKyAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7Cit9CisKK2NvbnN0
IGNoYXIqIEE2NERPcGNvZGVWZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwyU291cmNlOjpvcE5h
bWUoKQoreworICAgIHN3aXRjaCAob3AxMF8xNSgpKSB7CisgICAgY2FzZSAwYjAwMTExOgorICAg
ICAgICByZXR1cm4gIm9yciI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZGF0YUxvZ0xuKCJEaXNz
YXNzZW1ibGVyIHNhdyB1bmtub3duIHNpbWQgMiBzb3VyY2UgaW5zdHJ1Y3Rpb24gb3Bjb2RlICIs
IG9wMTBfMTUoKSk7CisgICAgICAgIHJldHVybiAiU0lNRFVLIjsKKyAgICB9Cit9CisKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpBUk02NERpc2Fzc2VtYmxlcgogCiAjZW5kaWYgLy8gRU5BQkxFKEFS
TTY0X0RJU0FTU0VNQkxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNh
c3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fz
c2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmgKaW5kZXggZmFmZWJlYTY3MTg2Li4xZmJhZDkxZmE1
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQv
QTY0RE9wY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJN
NjQvQTY0RE9wY29kZS5oCkBAIC0xOTQsNiArMTk0LDQxIEBAIHByb3RlY3RlZDoKICAgICB7CiAg
ICAgICAgIGJ1ZmZlclByaW50ZigibHNsICMldSIsIDE2ICogYW1vdW50KTsKICAgICB9CisgICAg
CisgICAgdm9pZCBhcHBlbmRTaW1kTGFuZUluZGV4QW5kVHlwZSh1bnNpZ25lZCBpbW02KQorICAg
IHsKKyAgICAgICAgdW5zaWduZWQgbGFuZSA9IDA7CisgICAgICAgIGlmICgoaW1tNiAmIDBiMTAw
MDAxKSA9PSAwYjAwMDAwMSkgeworICAgICAgICAgICAgYnVmZmVyUHJpbnRmKCIuOEIiKTsKKyAg
ICAgICAgICAgIGxhbmUgPSAoKGltbTYgJiAwYjAxMTExMCkgPj4gMSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoKGltbTYgJiAwYjEwMDAwMSkgPT0gMGIwMDAwMDEpIHsKKyAgICAgICAgICAgIGJ1ZmZl
clByaW50ZigiLjE2QiIpOworICAgICAgICAgICAgbGFuZSA9ICgoaW1tNiAmIDBiMDExMTEwKSA+
PiAxKTsKKyAgICAgICAgfSBlbHNlIGlmICgoaW1tNiAmIDBiMTAwMDExKSA9PSAwYjAwMDAxMCkg
eworICAgICAgICAgICAgYnVmZmVyUHJpbnRmKCIuSCIpOworICAgICAgICAgICAgbGFuZSA9ICgo
aW1tNiAmIDBiMDExMTAwKSA+PiAyKTsKKyAgICAgICAgfSBlbHNlIGlmICgoaW1tNiAmIDBiMTAw
MTExKSA9PSAwYjAwMDEwMCkgeworICAgICAgICAgICAgYnVmZmVyUHJpbnRmKCIuUyIpOworICAg
ICAgICAgICAgbGFuZSA9ICgoaW1tNiAmIDBiMDExMDAwKSA+PiAzKTsKKyAgICAgICAgICAgIC8v
IFRoaXMgaXMgb3Zlcmx5IHBlcm1pc3NpdmU7IGZvciBzb21lIGluc3RydWN0aW9ucyAobGlrZSB1
bW92KSwgYml0IDYgbXVzdCBiZSAxLgorICAgICAgICB9IGVsc2UgaWYgKChpbW02ICYgMGIwMDEx
MTEpID09IDBiMDAxMDAwKSB7CisgICAgICAgICAgICBidWZmZXJQcmludGYoIi5EIik7CisgICAg
ICAgICAgICBsYW5lID0gKChpbW02ICYgMGIwMTAwMDApID4+IDQpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgZGF0YUxvZ0xuKCJEaXNzYXNzZW1ibGVyIHNhdyBpbnZhbGlkIHNpbWQg
bGFuZSB0eXBlICIsIGltbTYpOworICAgICAgICAgICAgYnVmZmVyUHJpbnRmKCIuSU5WQUxJRF9M
QU5FX1RZUEUiKTsKKyAgICAgICAgfQorICAgICAgICBidWZmZXJQcmludGYoIlsjJXVdIiwgbGFu
ZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kU2ltZExhbmVUeXBlKHVuc2lnbmVkIHEp
CisgICAgeworICAgICAgICBpZiAocSA9PSAwKSB7CisgICAgICAgICAgICBidWZmZXJQcmludGYo
Ii44QiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYnVmZmVyUHJpbnRmKCIuMTZC
Iik7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIGludCBidWZmZXJT
aXplID0gODE7CiAKQEAgLTkyOSw2ICs5NjQsNDIgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHJt
KCkgeyByZXR1cm4gcmQoKTsgfQogfTsKIAorY2xhc3MgQTY0RE9wY29kZVZlY3RvckRhdGFQcm9j
ZXNzaW5nTG9naWNhbDFTb3VyY2UgOiBwdWJsaWMgQTY0RE9wY29kZSB7CitwdWJsaWM6CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXNrICAgID0gMGIxMDEnMTExMTEnMTEnMScwMDAw
MDAwMDAwMDAwMDAwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJu
ID0gMGIwMDAnMDExMTAnMDAnMCcwMDAwMDAwMDAwMDAwMDAwMDAwMDA7CisKKyAgICBERUZJTkVf
U1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlVmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsMVNvdXJj
ZSwgdGhpc09iaik7CisKKyAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKyAgICBjb25zdCBjaGFy
KiBvcE5hbWUoKTsKKyAgICAKKyAgICB1bnNpZ25lZCByZCgpIHsgcmV0dXJuIChtX29wY29kZSA+
PiAwKSAmIDBiMTExMTE7IH0KKyAgICB1bnNpZ25lZCBydCgpIHsgcmV0dXJuIChtX29wY29kZSA+
PiA1KSAmIDBiMTExMTE7IH0KKyAgICB1bnNpZ25lZCBvcDEwXzE1KCkgeyByZXR1cm4gKG1fb3Bj
b2RlID4+IDEwKSAmIDBiMTExMTE7IH0KKyAgICB1bnNpZ25lZCBpbW01KCkgeyByZXR1cm4gKG1f
b3Bjb2RlID4+IDE2KSAmIDBiMTExMTE7IH0KKyAgICB1bnNpZ25lZCBxKCkgeyByZXR1cm4gKG1f
b3Bjb2RlID4+IDMwKSAmIDBiMTsgfQorfTsKKworY2xhc3MgQTY0RE9wY29kZVZlY3RvckRhdGFQ
cm9jZXNzaW5nTG9naWNhbDJTb3VyY2UgOiBwdWJsaWMgQTY0RE9wY29kZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXNrICAgID0gMGIxMDEnMTExMTEnMTEnMScw
MDAwMDAwMDAwMDAwMDAwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0
ZXJuID0gMGIwMDAnMDExMTAnMTAnMScwMDAwMDAwMDAwMDAwMDAwMDAwMDA7CisKKyAgICBERUZJ
TkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlVmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsMlNv
dXJjZSwgdGhpc09iaik7CisKKyAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKyAgICBjb25zdCBj
aGFyKiBvcE5hbWUoKTsKKyAgICAKKyAgICB1bnNpZ25lZCByZCgpIHsgcmV0dXJuIChtX29wY29k
ZSA+PiAwKSAmIDBiMTExMTE7IH0KKyAgICB1bnNpZ25lZCBybigpIHsgcmV0dXJuIChtX29wY29k
ZSA+PiA1KSAmIDBiMTExMTE7IH0KKyAgICB1bnNpZ25lZCBvcDEwXzE1KCkgeyByZXR1cm4gKG1f
b3Bjb2RlID4+IDEwKSAmIDBiMTExMTE7IH0KKyAgICB1bnNpZ25lZCBybSgpIHsgcmV0dXJuICht
X29wY29kZSA+PiAxNikgJiAwYjExMTExOyB9CisgICAgdW5zaWduZWQgcSgpIHsgcmV0dXJuICht
X29wY29kZSA+PiAzMCkgJiAwYjE7IH0KK307CisKKworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QVJNNjREaXNhc3NlbWJsZXIKIAogdXNpbmcgSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9w
Y29kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3Rv
cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTYXZlUmVzdG9yZS5jcHAKaW5k
ZXggMGYyYzA1ZTU2YjdjLi40ZWFjN2Y2NDcxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCkBAIC00MSw2ICs0MSwxNCBAQCBzdGF0aWMgc2l6ZV90
IGJ5dGVzRm9yR1BScygpCiAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lz
dGVycygpICogc2l6ZW9mKGludDY0X3QpOwogfQogCitzdGF0aWMgc2l6ZV90IGJ5dGVzRm9yRlBS
KCkKK3sKKyAgICAvLyBGSVhNRTogSXQgbWlnaHQgYmUgd29ydGh3aGlsZSBzYXZpbmcgdGhlIGZ1
bGwgc3RhdGUgb2YgdGhlIEZQIHJlZ2lzdGVycywgYXQgc29tZSBwb2ludC4KKyAgICAvLyBSaWdo
dCBub3cgd2UgZG9uJ3QgbmVlZCB0aGlzIHNpbmNlIHdlIG9ubHkgZG8gdGhlIHNhdmUvcmVzdG9y
ZSBqdXN0IHByaW9yIHRvIE9TUiBleGl0LCBhbmQKKyAgICAvLyBPU1IgZXhpdCB3aWxsIGJlIGd1
YXJhbnRlZWQgdG8gb25seSBuZWVkIHRoZSBkb3VibGUgcG9ydGlvbiBvZiB0aGUgRlAgcmVnaXN0
ZXJzLgorICAgIHJldHVybiBzaXplb2YoZG91YmxlKTsKK30KKwogc3RhdGljIHNpemVfdCBieXRl
c0ZvckZQUnMoKQogewogICAgIC8vIEZJWE1FOiBJdCBtaWdodCBiZSB3b3J0aHdoaWxlIHNhdmlu
ZyB0aGUgZnVsbCBzdGF0ZSBvZiB0aGUgRlAgcmVnaXN0ZXJzLCBhdCBzb21lIHBvaW50LgpAQCAt
NjEsNyArNjksNyBAQCBzaXplX3Qgb2Zmc2V0T2ZHUFIoR1BSUmVnIHJlZykKIAogc2l6ZV90IG9m
ZnNldE9mRlBSKEZQUlJlZyByZWcpCiB7Ci0gICAgcmV0dXJuIGJ5dGVzRm9yR1BScygpICsgTWFj
cm9Bc3NlbWJsZXI6OmZwUmVnaXN0ZXJJbmRleChyZWcpICogc2l6ZW9mKGRvdWJsZSk7CisgICAg
cmV0dXJuIGJ5dGVzRm9yR1BScygpICsgTWFjcm9Bc3NlbWJsZXI6OmZwUmVnaXN0ZXJJbmRleChy
ZWcpICogYnl0ZXNGb3JGUFIoKTsKIH0KIAogc2l6ZV90IG9mZnNldE9mUmVnKFJlZyByZWcpCkBA
IC0xMzksNyArMTQ3LDcgQEAgdm9pZCBzYXZlQWxsUmVnaXN0ZXJzKEFzc2VtYmx5SGVscGVycyYg
aml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQogICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVn
aXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBN
YWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5l
eHRGUFJlZ2lzdGVyKHJlZykpIHsKICAgICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5nZXQocmVnKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKHsgcmVnLCBz
dGF0aWNfY2FzdDxwdHJkaWZmX3Q+KG9mZnNldE9mRlBSKHJlZykpIH0pOworICAgICAgICBzcG9v
bGVyLnN0b3JlRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KG9mZnNldE9mRlBSKHJl
ZykpIH0sIGJ5dGVzRm9yRlBSKCkpOwogICAgIH0KICAgICBzcG9vbGVyLmZpbmFsaXplRlBSKCk7
CiB9CkBAIC0xNTgsNyArMTY2LDcgQEAgdm9pZCByZXN0b3JlQWxsUmVnaXN0ZXJzKEFzc2VtYmx5
SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQogICAgIGZvciAoTWFjcm9Bc3NlbWJs
ZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7
IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3Nl
bWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJlZykpIHsKICAgICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5n
ZXQocmVnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzcG9vbGVyLmxvYWRGUFIo
eyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ob2Zmc2V0T2ZGUFIocmVnKSkgfSk7CisgICAg
ICAgIHNwb29sZXIubG9hZEZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRP
ZkZQUihyZWcpKSB9LCBieXRlc0ZvckZQUigpKTsKICAgICB9CiAgICAgc3Bvb2xlci5maW5hbGl6
ZUZQUigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
bG93UGF0aENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENh
bGwuY3BwCmluZGV4IGI0ZTQ3NThlNThmYi4uMmUyMzU1YjQxMzQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFNs
b3dQYXRoQ2FsbENvbnRleHQ6OlNsb3dQYXRoQ2FsbENvbnRleHQoCiAgICAgLy8gV2UgZG9uJ3Qg
Y2FyZSB0aGF0IHlvdSdyZSB1c2luZyBjYWxsZWUtc2F2ZSwgc3RhY2ssIG9yIGhhcmR3YXJlIHJl
Z2lzdGVycy4KICAgICB1c2VkUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCkpOwogICAgIHVzZWRSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2
ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKLSAgICB1c2VkUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0
ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgdXNlZFJlZ2lzdGVycy5zZXQoUmVn
aXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7IC8vIFRPRE8KICAgICAgICAgCiAgICAg
Ly8gVGhlIHJldHVybiByZWdpc3RlciBkb2Vzbid0IG5lZWQgdG8gYmUgc2F2ZWQuCiAgICAgaWYg
KG1fcmV0dXJuUmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMVGh1bmtzLmNwcAppbmRleCBkZTgyMTM4NTEwZjEuLmEzOTVhODZhMjQ4NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lm
IEVOQUJMRShGVExfSklUKQogCiAjaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIK
KyNpbmNsdWRlICJCM1dpZHRoLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmgiCiAjaW5jbHVkZSAiRlRMT1NSRXhpdENvbXBpbGVyLmgiCiAjaW5jbHVkZSAiRlRMT3BlcmF0
aW9ucy5oIgpAQCAtMTQ1LDcgKzE0Niw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQ2xvYmJlckNo
ZWNrKEFzc2VtYmx5SGVscGVycyYgaml0LCBSZWdpc3RlclNldCBkb250Q2xvYmJlcikKICAgICBS
ZWdpc3RlclNldCBjbG9iYmVyID0gUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lzdGVycygpOwogICAgIGNs
b2JiZXIuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsK
ICAgICBjbG9iYmVyLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOwotICAg
IGNsb2JiZXIuZXhjbHVkZShSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAg
ICBjbG9iYmVyLnNldChSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsgLy8gVE9E
TwogICAgIGNsb2JiZXIuZXhjbHVkZShkb250Q2xvYmJlcik7CiAgICAgCiAgICAgR1BSUmVnIHNv
bWVHUFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMTkzLDggKzE5NCw4IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IoVk0mIHZt
LCBjb25zdCBTCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1h
Y3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjps
YXN0RlBSZWdpc3RlcigpOyByZWcgPSBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RlBSZWdp
c3RlcklEPihyZWcgKyAxKSkgewogICAgICAgICBpZiAoIWtleS51c2VkUmVnaXN0ZXJzKCkuZ2V0
KHJlZykpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3Jl
RlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0pOwotICAg
ICAgICBjdXJyZW50T2Zmc2V0ICs9IHNpemVvZihkb3VibGUpOworICAgICAgICBzdG9yZVNwb29s
ZXIuc3RvcmVGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oY3VycmVudE9mZnNldCkg
fSwgQjM6OmJ5dGVzKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CisgICAgICAgIGN1
cnJlbnRPZmZzZXQgKz0gQjM6OmJ5dGVzKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKTsK
ICAgICB9CiAgICAgc3RvcmVTcG9vbGVyLmZpbmFsaXplRlBSKCk7CiAKQEAgLTIyMCw4ICsyMjEs
OCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dQYXRoQ2FsbFRo
dW5rR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgUwogCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6
RlBSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyA7IHJl
ZyA9IHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQ+KHJlZyAtIDEpKSB7
CiAgICAgICAgIGlmIChrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKSB7Ci0gICAgICAgICAg
ICBjdXJyZW50T2Zmc2V0IC09IHNpemVvZihkb3VibGUpOwotICAgICAgICAgICAgbG9hZFNwb29s
ZXIubG9hZEZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihjdXJyZW50T2Zmc2V0KSB9
KTsKKyAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQgLT0gQjM6OmJ5dGVzKEIzOjpjb25zZXJ2YXRp
dmVXaWR0aChCMzo6RlApKTsKKyAgICAgICAgICAgIGxvYWRTcG9vbGVyLmxvYWRGUFIoeyByZWcs
IHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oY3VycmVudE9mZnNldCkgfSwgQjM6OmJ5dGVzKEIzOjpj
b25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlZyA9
PSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCkpCiAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKaW5kZXggNmYwYThmMWE4MDNlLi5i
ZTBmZTM2YmQyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
RFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC02
MCw3ICs2MCwyNiBAQCBtb2R1bGUgRFNMCiAgICAgICAgIGFzc2VydCgiYG9wX2dyb3VwYCBjYW4g
b25seSBiZSBjYWxsZWQgaW4gYmV0d2VlbiBgYmVnaW5fc2VjdGlvbmAgYW5kIGBlbmRfc2VjdGlv
bmAiKSB7IG5vdCBAY3VycmVudF9zZWN0aW9uLm5pbD8gfQogICAgICAgICBAY3VycmVudF9zZWN0
aW9uLmFkZF9vcGNvZGVfZ3JvdXAoZGVzYywgb3BzLCBjb25maWcpCiAgICAgZW5kCi0KKyAgICAK
KyAgICBkZWYgc2VsZi5zaW1kX29wX2dyb3VwKGRlc2MsIG9wcywgY29uZmlnKQorICAgICAgICBh
c3NlcnQoImBzaW1kX29wX2dyb3VwYCBjYW4gb25seSBiZSBjYWxsZWQgaW4gYmV0d2VlbiBgYmVn
aW5fc2VjdGlvbmAgYW5kIGBlbmRfc2VjdGlvbmAiKSB7IG5vdCBAY3VycmVudF9zZWN0aW9uLm5p
bD8gfQorCisgICAgICAgIGZvciBvcCBpbiBvcHMgZG8KKyAgICAgICAgICAgIHZhcmlhbnRzID0g
WyJpMzJ4NCIsICJpNjR4MiIsICJmMzJ4NCIsICJmNjR4MiJdCisgICAgICAgICAgICBpZiBjb25m
aWdbOm1ha2VTaWduZWRWYXJpYW50c10gdGhlbgorICAgICAgICAgICAgICAgIHZhcmlhbnRzICs9
IFsiaTh4MTZfdSIsICJpOHgxNl9zIiwgImkxNng4X3UiLCAiaTE2eDhfcyJdCisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdmFyaWFudHMgKz0gWyJpOHgxNiIsICJpMTZ4OCJdCisg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIHZhcmlhbnRzID0gWyJpOHgxNl91Il0gIyBUT0RP
CisgICAgICAgICAgICBvcExpc3QgPSBbXQorICAgICAgICAgICAgZm9yIHYgaW4gdmFyaWFudHMg
ZG8KKyAgICAgICAgICAgICAgICBvcExpc3QgPDwgKChvcC50b19zICsgIl8iICsgdikudG9fc3lt
KQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBAY3VycmVudF9zZWN0aW9uLmFkZF9vcGNv
ZGVfZ3JvdXAoKGRlc2MudG9fcyArIG9wLnRvX3MpLnRvX3N5bSwgb3BMaXN0LCBjb25maWcpCisg
ICAgICAgIGVuZAorICAgIGVuZAorICAgIAogICAgIGRlZiBzZWxmLnR5cGVzKHR5cGVzKQogICAg
ICAgICB0eXBlcy5tYXAgZG8gfHR5cGV8CiAgICAgICAgICAgICB0eXBlID0gKEBuYW1lc3BhY2Vz
ICsgW3R5cGVdKS5qb2luICI6OiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0b3IvV2FzbS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvV2FzbS5y
YgppbmRleCAyYzExYmFmMjBkMmYuLjY5NzQyNGUwOTVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9XYXNtLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0b3IvV2FzbS5yYgpAQCAtNTYsNyArNTYsMjMgQEAgbW9kdWxlIFdhc20KICAgICAg
ICAgICAgICAgICBhc3NlcnQoIkludmFsaWQgYXJndW1lbnQgY291bnQgI3tvcC5hcmdzLnNpemV9
IGZvciBvcCAje29wLm5hbWV9IikgeyBmYWxzZSB9CiAgICAgICAgICAgICBlbmQKICAgICAgICAg
ZW5kCi0gICAgICAgIG1ldGhvZHMuam9pbigiXG4iKQorICAgICAgICBtZXRob2RzLmpvaW4oIlxu
IikgKyBnZW5lcmF0ZV9sbGludF9nZW5lcmF0b3Jfc2ltZChzZWN0aW9uKQorICAgIGVuZAorCisg
ICAgZGVmIHNlbGYuZ2VuZXJhdGVfbGxpbnRfZ2VuZXJhdG9yX3NpbWQoc2VjdGlvbikKKyAgICAg
ICAgPDwtRU9GCisjZGVmaW5lIENSRUFURV9TSU1EX0NBU0UobmFtZSwgaWQsIGIzb3AsIGluYywg
d2FzbU9wLCByZXR1cm5UeXBlLCBudW1JbW1lZGlhdGVzLCBpbW1lZGlhdGVTaXplcywgbnVtQXJn
dW1lbnRzLCBhcmd1bWVudFR5cGVzLCAuLi4pIFwKK3RlbXBsYXRlPD4gXAorYXV0byBMTEludEdl
bmVyYXRvcjo6YWRkU2ltZE9wPEV4dFNpbWRPcFR5cGU6Om5hbWUsIG51bUltbWVkaWF0ZXMsIG51
bUFyZ3VtZW50cz4oc3RkOjphcnJheTx1aW50OF90LCBudW1JbW1lZGlhdGVzPiBpbW1lZGlhdGVz
LCBzdGQ6OmFycmF5PEV4cHJlc3Npb25UeXBlLCBudW1Bcmd1bWVudHM+IGFyZ3VtZW50cywgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdCBcCit7IFwKKyAgICByZXN1bHQg
PSBwdXNoKHJldHVyblR5cGUpOyBcCisgICAgc3RkOjphcHBseSgmd2FzbU9wOjplbWl0PExMSW50
R2VuZXJhdG9yPiwgc3RkOjp0dXBsZV9jYXQoc3RkOjptYWtlX3R1cGxlKHRoaXMsIHJlc3VsdCks
IGltbWVkaWF0ZXMsIGFyZ3VtZW50cykpOyBcCisgICAgcmV0dXJuIHsgfTsgXAorfQorCitGT1Jf
RUFDSF9XQVNNX0VYVF9TSU1EX09QKENSRUFURV9TSU1EX0NBU0UpCisjdW5kZWYgQ1JFQVRFX1NJ
TURfQ0FTRQorICAgICAgICBFT0YKICAgICBlbmQKIAogICAgIGRlZiBzZWxmLmdlbmVyYXRlX2Jp
bmFyeV9vcChvcCkKQEAgLTY0LDcgKzgwLDcgQEAgbW9kdWxlIFdhc20KIHRlbXBsYXRlPD4KIGF1
dG8gTExJbnRHZW5lcmF0b3I6OmFkZE9wPCN7b3BfdHlwZShvcCl9PihFeHByZXNzaW9uVHlwZSBs
aHMsIEV4cHJlc3Npb25UeXBlIHJocywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlh
bFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICByZXN1bHQgPSBwdXNoKCN7b3Bf
cmV0dXJuKG9wKX0pOwogICAgICN7b3AuY2FwaXRhbGl6ZWRfbmFtZX06OmVtaXQodGhpcywgcmVz
dWx0LCBsaHMsIHJocyk7CiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTc2LDcgKzkyLDcgQEAgYXV0
byBMTEludEdlbmVyYXRvcjo6YWRkT3A8I3tvcF90eXBlKG9wKX0+KEV4cHJlc3Npb25UeXBlIGxo
cywgRXhwcmVzc2lvblR5cGUgcmgKIHRlbXBsYXRlPD4KIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFk
ZE9wPCN7b3BfdHlwZShvcCl9PihFeHByZXNzaW9uVHlwZSBvcGVyYW5kLCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAg
IHJlc3VsdCA9IHB1c2goI3tvcF9yZXR1cm4ob3ApfSk7CiAgICAgI3tvcC5jYXBpdGFsaXplZF9u
YW1lfTo6ZW1pdCh0aGlzLCByZXN1bHQsIG9wZXJhbmQpOwogICAgIHJldHVybiB7IH07CiB9CkBA
IC04Niw0ICsxMDIsMTIgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkT3A8I3tvcF90eXBlKG9w
KX0+KEV4cHJlc3Npb25UeXBlIG9wZXJhbmQsIEV4cHJlc3Npb25UeXAKICAgICBkZWYgc2VsZi5v
cF90eXBlKG9wKQogICAgICAgICAiT3BUeXBlOjoje29wLnVucHJlZml4ZWRfbmFtZS5nc3ViKC9e
LnxbXmEtejAtOV0uLykgeyB8Y3wgY1stMV0udXBjYXNlIH19IgogICAgIGVuZAorCisgICAgZGVm
IHNlbGYub3BfcmV0dXJuKG9wKQorICAgICAgICB0ID0gb3AuZXh0cmFzWyJyZXR1cm4iXVswXQor
ICAgICAgICBpZiB0ID09ICJib29sIiB0aGVuCisgICAgICAgICAgICB0ID0gImkzMiIKKyAgICAg
ICAgZW5kCisgICAgICAgICJUeXBlczo6I3t0LnVwY2FzZX0iCisgICAgZW5kCiBlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUVudHJ5UmVjb3JkLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5oCmluZGV4
IGJlN2JmODg5ODc5ZC4uOTk1YWNlMzk5M2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9WTUVudHJ5UmVjb3JkLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RydWN0
IFZNRW50cnlSZWNvcmQgewogICAgIEpTT2JqZWN0KiBjYWxsZWUoKSBjb25zdCB7IHJldHVybiBt
X2NhbGxlZTsgfQogCiAjaWYgIUVOQUJMRShDX0xPT1ApICYmIE5VTUJFUl9PRl9DQUxMRUVfU0FW
RVNfUkVHSVNURVJTID4gMAotICAgIENQVVJlZ2lzdGVyIGNhbGxlZVNhdmVSZWdpc3RlcnNCdWZm
ZXJbTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlNdOworICAgIENQVVJlZ2lzdGVyIGNh
bGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJbU0laRV9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTXTsK
ICNlbGlmIEVOQUJMRShDX0xPT1ApCiAgICAgQ1BVUmVnaXN0ZXIgY2FsbGVlU2F2ZVJlZ2lzdGVy
c0J1ZmZlclsxXTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwCmluZGV4IGRlOGQ2NTNkZDgyYi4uMDA2NDQzODJjMDQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAKICNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJz
U3Bvb2xlcnMuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKQEAgLTczMiw3ICs3MzMsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6cmVz
dG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVySW1wbChHUAog
ICAgICAgICBpZiAoc2tpcExpc3QuY29udGFpbnMoZW50cnkucmVnKCkpKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIEFTU0VSVCghZW50cnkucmVnKCkuaXNHUFIoKSk7Ci0gICAgICAg
IHNwb29sZXIubG9hZEZQUihlbnRyeSk7CisgICAgICAgIHNwb29sZXIubG9hZEZQUihlbnRyeSwg
QjM6OmJ5dGVzKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CiAgICAgfQogICAgIHNw
b29sZXIuZmluYWxpemVGUFIoKTsKIApAQCAtMTExOSw3ICsxMTIwLDcgQEAgdm9pZCBBc3NlbWJs
eUhlbHBlcnM6OmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVySW1w
bChHUFJSZWcgY2EKICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNh
dmVzLT5hdChpKTsKICAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmNvbnRhaW5zKGVudHJ5
LnJlZygpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzcG9vbGVyLnN0b3JlRlBS
KGVudHJ5KTsKKyAgICAgICAgc3Bvb2xlci5zdG9yZUZQUihlbnRyeSwgQjM6OmJ5dGVzKEIzOjpj
b25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CiAgICAgfQogICAgIHNwb29sZXIuZmluYWxpemVG
UFIoKTsKIApAQCAtMTIzNSw3ICsxMjM2LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRT
YXZlKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiBsaXN0KQogICAgIHNwb29sZXIuZmluYWxp
emVHUFIoKTsKIAogICAgIGZvciAoOyBpIDwgbGlzdFNpemU7IGkrKykKLSAgICAgICAgc3Bvb2xl
ci5zdG9yZUZQUihsaXN0LmF0KGkpKTsKKyAgICAgICAgc3Bvb2xlci5zdG9yZUZQUihsaXN0LmF0
KGkpLCBCMzo6Ynl0ZXMoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpKTsKICAgICBzcG9v
bGVyLmZpbmFsaXplRlBSKCk7CiB9CiAKQEAgLTEyNTQsNyArMTI1NSw3IEBAIHZvaWQgQXNzZW1i
bHlIZWxwZXJzOjplbWl0UmVzdG9yZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgbGlzdCkK
ICAgICBzcG9vbGVyLmZpbmFsaXplR1BSKCk7CiAKICAgICBmb3IgKDsgaSA8IGxpc3RTaXplOyBp
KyspCi0gICAgICAgIHNwb29sZXIubG9hZEZQUihsaXN0LmF0KGkpKTsKKyAgICAgICAgc3Bvb2xl
ci5sb2FkRlBSKGxpc3QuYXQoaSksIEIzOjpieXRlcyhCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6
OkZQKSkpOwogICAgIHNwb29sZXIuZmluYWxpemVGUFIoKTsKIH0KIApAQCAtMTI3OSw3ICsxMjgw
LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVMKICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBl
bnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKICAgICAgICAgaWYgKGRvbnRTYXZlUmVnaXN0ZXJz
LmNvbnRhaW5zKGVudHJ5LnJlZygpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBz
cG9vbGVyLnN0b3JlRlBSKGVudHJ5KTsKKyAgICAgICAgc3Bvb2xlci5zdG9yZUZQUihlbnRyeSwg
QjM6OmJ5dGVzKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CiAgICAgfQogICAgIHNw
b29sZXIuZmluYWxpemVGUFIoKTsKIH0KQEAgLTEzMDUsNyArMTMwNiw3IEBAIHZvaWQgQXNzZW1i
bHlIZWxwZXJzOjplbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0KiBjYWxsCiAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZl
cy0+YXQoaSk7CiAgICAgICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVn
KCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHNwb29sZXIubG9hZEZQUihlbnRy
eSk7CisgICAgICAgIHNwb29sZXIubG9hZEZQUihlbnRyeSwgQjM6OmJ5dGVzKEIzOjpjb25zZXJ2
YXRpdmVXaWR0aChCMzo6RlApKSk7CiAgICAgfQogICAgIHNwb29sZXIuZmluYWxpemVGUFIoKTsK
IH0KQEAgLTEzNTUsMTAgKzEzNTYsMTAgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNvcHlMTElu
dEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZyYW0KIAogICAg
ICAgICBSRUxFQVNFX0FTU0VSVChlbnRyeS5yZWcoKS5pc0ZQUigpKTsKICAgICAgICAgaWYgKGN1
cnJlbnRGcmFtZUVudHJ5KQotICAgICAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGN1cnJlbnRGcmFt
ZUVudHJ5LT5vZmZzZXQoKSk7CisgICAgICAgICAgICBzcG9vbGVyLmxvYWRGUFIoY3VycmVudEZy
YW1lRW50cnktPm9mZnNldCgpLCBCMzo6Ynl0ZXMoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpG
UCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3Bvb2xlci5jb3B5RlBSKGVudHJ5LnJl
ZygpLmZwcigpKTsKLSAgICAgICAgc3Bvb2xlci5zdG9yZUZQUihlbnRyeS5vZmZzZXQoKSk7Cisg
ICAgICAgICAgICBzcG9vbGVyLmNvcHlGUFIoZW50cnkucmVnKCkuZnByKCksIEIzOjpieXRlcyhC
Mzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBS
KGVudHJ5Lm9mZnNldCgpLCBCMzo6Ynl0ZXMoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkp
KTsKICAgICB9CiAgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgKaW5kZXggNzgzMWVm
MzY2OTBkLi4wYzljZjk1NDNjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgKQEAgLTcwLDcgKzcwLDcgQEAgc3RydWN0IFJl
Z0Rpc3BhdGNoPEZQUlJlZz4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRp
YyBGUFJSZWcgdGVtcDIoY29uc3QgU3Bvb2xlciogc3Bvb2xlcikgeyByZXR1cm4gc3Bvb2xlci0+
bV90ZW1wMkZQUjsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBGUFJS
ZWcmIHJlZ1RvU3RvcmUoU3Bvb2xlciogc3Bvb2xlcikgeyByZXR1cm4gc3Bvb2xlci0+bV9mcHJU
b1N0b3JlOyB9CiAgICAgc3RhdGljIGNvbnN0ZXhwciBGUFJSZWcgaW52YWxpZCgpIHsgcmV0dXJu
IEludmFsaWRGUFJSZWc7IH0KLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCByZWdTaXplKCkg
eyByZXR1cm4gc2l6ZW9mKGRvdWJsZSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBy
ZWdTaXplKCkgeyByZXR1cm4gMTY7IH0KICNpZiBDUFUoQVJNNjQpCiAgICAgc3RhdGljIGJvb2wg
aXNWYWxpZExvYWRQYWlySW1tKGludCBvZmZzZXQpIHsgcmV0dXJuIEFSTTY0QXNzZW1ibGVyOjpp
c1ZhbGlkTERQRlBJbW08NjQ+KG9mZnNldCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkU3Rv
cmVQYWlySW1tKGludCBvZmZzZXQpIHsgcmV0dXJuIEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkU1RQ
RlBJbW08NjQ+KG9mZnNldCk7IH0KQEAgLTkxLDI5ICs5MSwzNSBAQCBwdWJsaWM6CiAgICAgeyB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgotICAgIHZvaWQgZXhlY3V0ZShjb25z
dCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkKKyAgICB2b2lkIGV4ZWN1dGUoY29uc3QgUmVnaXN0
ZXJBdE9mZnNldCYgZW50cnksIHVuc2lnbmVkIGJ5dGVzV2lkdGgpCiAgICAgewogICAgICAgICBS
RUxFQVNFX0FTU0VSVChSZWdEaXNwYXRjaDxSZWdUeXBlPjo6aGFzU2FtZVR5cGUoZW50cnkucmVn
KCkpKTsKICAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKQotICAgICAgICAgICAgcmV0
dXJuIG9wKCkuZXhlY3V0ZVNpbmdsZShlbnRyeS5vZmZzZXQoKSwgUmVnRGlzcGF0Y2g8UmVnVHlw
ZT46OmdldChlbnRyeS5yZWcoKSkpOworICAgICAgICAgICAgcmV0dXJuIG9wKCkuZXhlY3V0ZVNp
bmdsZShlbnRyeS5vZmZzZXQoKSwgUmVnRGlzcGF0Y2g8UmVnVHlwZT46OmdldChlbnRyeS5yZWco
KSksIGJ5dGVzV2lkdGgpOworICAgICAgICBpZiAoYnl0ZXNXaWR0aCA+IDgpCisgICAgICAgICAg
ICByZXR1cm4gb3AoKS5leGVjdXRlU2luZ2xlKGVudHJ5Lm9mZnNldCgpLCBSZWdEaXNwYXRjaDxS
ZWdUeXBlPjo6Z2V0KGVudHJ5LnJlZygpKSwgYnl0ZXNXaWR0aCk7CiAKICAgICAgICAgaWYgKCFt
X2J1ZmZlcmVkRW50cnkucmVnKCkuaXNTZXQoKSkgewogICAgICAgICAgICAgbV9idWZmZXJlZEVu
dHJ5ID0gZW50cnk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkQnl0ZXNXaWR0aCA9IGJ5dGVzV2lk
dGg7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICBjb25zdGV4cHIg
cHRyZGlmZl90IHJlZ1NpemUgPSBSZWdEaXNwYXRjaDxSZWdUeXBlPjo6cmVnU2l6ZSgpOworICAg
ICAgICAKKyAgICAgICAgcHRyZGlmZl90IHJlZ1NpemUgPSBieXRlc1dpZHRoOworICAgICAgICBB
U1NFUlQoYnl0ZXNXaWR0aCA8PSBSZWdEaXNwYXRjaDxSZWdUeXBlPjo6cmVnU2l6ZSgpKTsKICAg
ICAgICAgUmVnVHlwZSBidWZmZXJlZEVudHJ5UmVnID0gUmVnRGlzcGF0Y2g8UmVnVHlwZT46Omdl
dChtX2J1ZmZlcmVkRW50cnkucmVnKCkpOwogICAgICAgICBSZWdUeXBlIGVudHJ5UmVnID0gUmVn
RGlzcGF0Y2g8UmVnVHlwZT46OmdldChlbnRyeS5yZWcoKSk7CiAKICAgICAgICAgaWYgKGVudHJ5
Lm9mZnNldCgpID09IG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQoKSArIHJlZ1NpemUpIHsKICAgICAg
ICAgICAgIG9wKCkuZXhlY3V0ZVBhaXIobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpLCBidWZmZXJl
ZEVudHJ5UmVnLCBlbnRyeVJlZyk7CiAgICAgICAgICAgICBtX2J1ZmZlcmVkRW50cnkgPSB7IH07
CisgICAgICAgICAgICBtX2J1ZmZlcmVkQnl0ZXNXaWR0aCA9IDA7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQoKSA9PSBl
bnRyeS5vZmZzZXQoKSArIHJlZ1NpemUpIHsKICAgICAgICAgICAgIG9wKCkuZXhlY3V0ZVBhaXIo
ZW50cnkub2Zmc2V0KCksIGVudHJ5UmVnLCBidWZmZXJlZEVudHJ5UmVnKTsKICAgICAgICAgICAg
IG1fYnVmZmVyZWRFbnRyeSA9IHsgfTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRCeXRlc1dpZHRo
ID0gMDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMjEsNyArMTI3LDcg
QEAgcHVibGljOgogICAgICAgICAvLyBFeGVjdXRlIHRoZSBwcmV2aW91cyBvbmUgYXMgYSBzaW5n
bGUgKGZpbmFsaXplIHdpbGwgZG8gdGhhdCksIGFuZCB0aGVuCiAgICAgICAgIC8vIGJ1ZmZlciB0
aGUgY3VycmVudCBlbnRyeSB0byBwb3RlbnRpYWxseSBiZSBwYWlyZWQgd2l0aCB0aGUgbmV4dCBl
bnRyeS4KICAgICAgICAgZmluYWxpemU8UmVnVHlwZT4oKTsKLSAgICAgICAgZXhlY3V0ZTxSZWdU
eXBlPihlbnRyeSk7CisgICAgICAgIGV4ZWN1dGU8UmVnVHlwZT4oZW50cnksIGJ5dGVzV2lkdGgp
OwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CkBAIC0xMjksOCArMTM1
LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoaGFzUGFpck9wKSB7
CiAgICAgICAgICAgICBpZiAobV9idWZmZXJlZEVudHJ5LnJlZygpLmlzU2V0KCkpIHsKLSAgICAg
ICAgICAgICAgICBvcCgpLmV4ZWN1dGVTaW5nbGUobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpLCBS
ZWdEaXNwYXRjaDxSZWdUeXBlPjo6Z2V0KG1fYnVmZmVyZWRFbnRyeS5yZWcoKSkpOworICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2J1ZmZlcmVkQnl0ZXNXaWR0aCk7CisgICAgICAgICAgICAgICAg
b3AoKS5leGVjdXRlU2luZ2xlKG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQoKSwgUmVnRGlzcGF0Y2g8
UmVnVHlwZT46OmdldChtX2J1ZmZlcmVkRW50cnkucmVnKCkpLCBtX2J1ZmZlcmVkQnl0ZXNXaWR0
aCk7CiAgICAgICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0geyB9OworICAgICAgICAgICAg
ICAgIG1fYnVmZmVyZWRCeXRlc1dpZHRoID0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KQEAgLTE0OCw2ICsxNTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSklUJiBtX2ppdDsKICAg
ICBHUFJSZWcgbV9iYXNlR1BSOwogICAgIFJlZ2lzdGVyQXRPZmZzZXQgbV9idWZmZXJlZEVudHJ5
OworICAgIHVuc2lnbmVkIG1fYnVmZmVyZWRCeXRlc1dpZHRoOwogfTsKIAogY2xhc3MgQXNzZW1i
bHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlciA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnM6OlNwb29s
ZXI8TG9hZFJlZ1Nwb29sZXI+IHsKQEAgLTE1OCw5ICsxNjcsOSBAQCBwdWJsaWM6CiAgICAgICAg
IDogQmFzZShqaXQsIGJhc2VHUFIpCiAgICAgeyB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
bG9hZEdQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkgeyBleGVjdXRlPEdQUlJlZz4o
ZW50cnkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRHUFIoY29uc3QgUmVnaXN0ZXJB
dE9mZnNldCYgZW50cnkpIHsgZXhlY3V0ZTxHUFJSZWc+KGVudHJ5LCA4KTsgfQogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBmaW5hbGl6ZUdQUigpIHsgZmluYWxpemU8R1BSUmVnPigpOyB9Ci0gICAg
QUxXQVlTX0lOTElORSB2b2lkIGxvYWRGUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkp
IHsgZXhlY3V0ZTxGUFJSZWc+KGVudHJ5KTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2Fk
RlBSKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5LCB1bnNpZ25lZCBieXRlc1dpZHRoKSB7
IGV4ZWN1dGU8RlBSUmVnPihlbnRyeSwgYnl0ZXNXaWR0aCk7IH0KICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgZmluYWxpemVGUFIoKSB7IGZpbmFsaXplPEZQUlJlZz4oKTsgfQogCiBwcml2YXRlOgpA
QCAtMTc1LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1
dGVQYWlyKHB0cmRpZmZfdCwgUmVnVHlwZSwgUmVnVHlwZSkgeyB9CiAjZW5kaWYKIAotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBleGVjdXRlU2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEdQUlJlZyBy
ZWcpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVTaW5nbGUocHRyZGlmZl90IG9mZnNl
dCwgR1BSUmVnIHJlZywgc2l6ZV90KQogICAgIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICBtX2ppdC5sb2FkNjQoQWRkcmVzcyhtX2Jhc2VHUFIsIG9mZnNldCksIHJlZyk7CkBAIC0xODQs
OSArMTkzLDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgZXhlY3V0ZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0LCBGUFJSZWcgcmVnKQorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBleGVjdXRlU2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEZQUlJlZyBy
ZWcsIHNpemVfdCBieXRlc1dpZHRoKQogICAgIHsKLSAgICAgICAgbV9qaXQubG9hZERvdWJsZShB
ZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSwgcmVnKTsKKyAgICAgICAgaWYgKGJ5dGVzV2lkdGgg
PiA4KQorICAgICAgICAgICAgbV9qaXQubG9hZFZlY3RvcihBZGRyZXNzKG1fYmFzZUdQUiwgb2Zm
c2V0KSwgcmVnKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShB
ZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSwgcmVnKTsKICAgICB9CiAKICAgICBmcmllbmQgY2xh
c3MgQXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyPExvYWRSZWdTcG9vbGVyPjsKQEAgLTIwMCw5ICsy
MTIsOSBAQCBwdWJsaWM6CiAgICAgICAgIDogQmFzZShqaXQsIGJhc2VHUFIpCiAgICAgeyB9CiAK
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVHUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYg
ZW50cnkpIHsgZXhlY3V0ZTxHUFJSZWc+KGVudHJ5KTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzdG9yZUdQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkgeyBleGVjdXRlPEdQUlJl
Zz4oZW50cnksIDgpOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGZpbmFsaXplR1BSKCkgeyBm
aW5hbGl6ZTxHUFJSZWc+KCk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVGUFIoY29u
c3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgZXhlY3V0ZTxGUFJSZWc+KGVudHJ5KTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZUZQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBl
bnRyeSwgdW5zaWduZWQgYnl0ZXNXaWR0aCkgeyBleGVjdXRlPEZQUlJlZz4oZW50cnksIGJ5dGVz
V2lkdGgpOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGZpbmFsaXplRlBSKCkgeyBmaW5hbGl6
ZTxGUFJSZWc+KCk7IH0KIAogcHJpdmF0ZToKQEAgLTIxNyw3ICsyMjksNyBAQCBwcml2YXRlOgog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlUGFpcihwdHJkaWZmX3QsIFJlZ1R5cGUsIFJl
Z1R5cGUpIHsgfQogI2VuZGlmCiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0ZVNpbmds
ZShwdHJkaWZmX3Qgb2Zmc2V0LCBHUFJSZWcgcmVnKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBl
eGVjdXRlU2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEdQUlJlZyByZWcsIHNpemVfdCkKICAgICB7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgbV9qaXQuc3RvcmU2NChyZWcsIEFkZHJlc3Mo
bV9iYXNlR1BSLCBvZmZzZXQpKTsKQEAgLTIyNiw5ICsyMzgsMTIgQEAgcHJpdmF0ZToKICNlbmRp
ZgogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlU2luZ2xlKHB0cmRpZmZf
dCBvZmZzZXQsIEZQUlJlZyByZWcpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVTaW5n
bGUocHRyZGlmZl90IG9mZnNldCwgRlBSUmVnIHJlZywgc2l6ZV90IGJ5dGVzV2lkdGgpCiAgICAg
ewotICAgICAgICBtX2ppdC5zdG9yZURvdWJsZShyZWcsIEFkZHJlc3MobV9iYXNlR1BSLCBvZmZz
ZXQpKTsKKyAgICAgICAgaWYgKGJ5dGVzV2lkdGggPiA4KQorICAgICAgICAgICAgbV9qaXQuc3Rv
cmVWZWN0b3IocmVnLCBBZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKHJlZywgQWRkcmVzcyhtX2Jhc2VHUFIsIG9m
ZnNldCkpOwogICAgIH0KIAogICAgIGZyaWVuZCBjbGFzcyBBc3NlbWJseUhlbHBlcnM6OlNwb29s
ZXI8U3RvcmVSZWdTcG9vbGVyPjsKQEAgLTI4NCwxMiArMjk5LDE5IEBAIHByaXZhdGU6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gc3RhdGljIGJvb2wgaXNWYWxpZFN0b3JlUGFpcklt
bShpbnQgb2Zmc2V0KSB7IHJldHVybiBSZWdEaXNwYXRjaDxSZWdUeXBlPjo6aXNWYWxpZFN0b3Jl
UGFpckltbShvZmZzZXQpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgotICAg
IHZvaWQgbG9hZChpbnQgb2Zmc2V0KQorICAgIHZvaWQgbG9hZChpbnQgb2Zmc2V0LCB1bnNpZ25l
ZCBieXRlc1dpZHRoKQogICAgIHsKICAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKSB7
CiAgICAgICAgICAgICBhdXRvJiByZWdUb1N0b3JlID0gdGhpcy0+cmVnVG9TdG9yZTxSZWdUeXBl
PigpOwogICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHRlbXAxPFJlZ1R5cGU+KCk7Ci0gICAgICAg
ICAgICBsb2FkKG9mZnNldCwgcmVnVG9TdG9yZSk7CisgICAgICAgICAgICBsb2FkKG9mZnNldCwg
cmVnVG9TdG9yZSwgYnl0ZXNXaWR0aCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGlmIChieXRlc1dpZHRoID4gOCkgeworICAgICAgICAgICAgYXV0
byYgcmVnVG9TdG9yZSA9IHRoaXMtPnJlZ1RvU3RvcmU8UmVnVHlwZT4oKTsKKyAgICAgICAgICAg
IHJlZ1RvU3RvcmUgPSB0ZW1wMTxSZWdUeXBlPigpOworICAgICAgICAgICAgbG9hZChvZmZzZXQs
IHJlZ1RvU3RvcmUsIGJ5dGVzV2lkdGgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTI5OCw3ICszMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBzb3VyY2Uub2Zmc2V0ID0g
b2Zmc2V0OwogICAgIH0KIAotICAgIHZvaWQgbW92ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKKyAg
ICB2b2lkIG1vdmUoRW5jb2RlZEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGJ5dGVzV2lkdGgpCiAg
ICAgewogICAgICAgICBpZiBjb25zdGV4cHIgKCFoYXNQYWlyT3ApIHsKICAgICAgICAgICAgIGF1
dG8mIHJlZ1RvU3RvcmUgPSB0aGlzLT5yZWdUb1N0b3JlPEdQUlJlZz4oKTsKQEAgLTMwNiw2ICsz
MjgsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1vdmUodmFsdWUsIHJlZ1RvU3RvcmUpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYnl0
ZXNXaWR0aCA+IDgpIHsKKyAgICAgICAgICAgIGF1dG8mIHJlZ1RvU3RvcmUgPSB0aGlzLT5yZWdU
b1N0b3JlPEdQUlJlZz4oKTsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMTxHUFJSZWc+
KCk7CisgICAgICAgICAgICBtb3ZlKHZhbHVlLCByZWdUb1N0b3JlKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGF1dG8mIHNvdXJjZSA9IG1fc291cmNlc1ttX2N1
cnJlbnRTb3VyY2UrK107CiAgICAgICAgIHNvdXJjZS50eXBlID0gU291cmNlOjpUeXBlOjpFbmNv
ZGVkSlNWYWx1ZTsKQEAgLTMxMywxMyArMzQyLDE5IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KLSAgICB2b2lkIGNvcHkoUmVnVHlwZSByZWcpCisg
ICAgdm9pZCBjb3B5KFJlZ1R5cGUgcmVnLCB1bnNpZ25lZCBieXRlc1dpZHRoKQogICAgIHsKICAg
ICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKSB7CiAgICAgICAgICAgICBhdXRvJiByZWdU
b1N0b3JlID0gdGhpcy0+cmVnVG9TdG9yZTxSZWdUeXBlPigpOwogICAgICAgICAgICAgcmVnVG9T
dG9yZSA9IHJlZzsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgaWYgKGJ5dGVzV2lkdGggPiA4KSB7CisgICAgICAgICAgICBhdXRvJiByZWdUb1N0b3Jl
ID0gdGhpcy0+cmVnVG9TdG9yZTxSZWdUeXBlPigpOworICAgICAgICAgICAgcmVnVG9TdG9yZSA9
IHJlZzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGF1dG8mIHNv
dXJjZSA9IG1fc291cmNlc1ttX2N1cnJlbnRTb3VyY2UrK107CiAgICAgICAgIHNvdXJjZS50eXBl
ID0gU291cmNlOjpUeXBlOjpSZWc7CkBAIC0zMjcsMTEgKzM2MiwxNyBAQCBwcml2YXRlOgogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+Ci0gICAgdm9pZCBzdG9yZShpbnQg
c3RvcmVPZmZzZXQpCisgICAgdm9pZCBzdG9yZShpbnQgc3RvcmVPZmZzZXQsIHVuc2lnbmVkIGJ5
dGVzV2lkdGgpCiAgICAgewogICAgICAgICBpZiBjb25zdGV4cHIgKCFoYXNQYWlyT3ApIHsKICAg
ICAgICAgICAgIGF1dG8gcmVnVG9TdG9yZSA9IHRoaXMtPnJlZ1RvU3RvcmU8UmVnVHlwZT4oKTsK
LSAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUsIHN0b3JlT2Zmc2V0KTsKKyAgICAgICAgICAg
IHN0b3JlKHJlZ1RvU3RvcmUsIHN0b3JlT2Zmc2V0LCBieXRlc1dpZHRoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGJ5dGVzV2lkdGggPiA4
KSB7CisgICAgICAgICAgICBhdXRvIHJlZ1RvU3RvcmUgPSB0aGlzLT5yZWdUb1N0b3JlPFJlZ1R5
cGU+KCk7CisgICAgICAgICAgICBzdG9yZShyZWdUb1N0b3JlLCBzdG9yZU9mZnNldCwgYnl0ZXNX
aWR0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzU5LDggKzQwMCw4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBib29sIGlzVmFsaWRPZmZzZXQgPSBpc1ZhbGlkTG9h
ZFBhaXJJbW08UmVnVHlwZT4obWluT2Zmc2V0KTsKIAogICAgICAgICAgICAgaWYgKG9mZnNldERl
bHRhICE9IHJlZ2lzdGVyU2l6ZSB8fCAoIWlzVmFsaWRPZmZzZXQgJiYgbV9idWZmZXJSZWdzQXR0
ciAhPSBCdWZmZXJSZWdzOjpBbGxvd01vZGlmaWNhdGlvbikpIHsKLSAgICAgICAgICAgICAgICBs
b2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUxKTsKLSAgICAgICAgICAgICAgICBsb2FkKHNyY09m
ZnNldDIsIHJlZ1RvU3RvcmUyKTsKKyAgICAgICAgICAgICAgICBsb2FkKHNyY09mZnNldDEsIHJl
Z1RvU3RvcmUxLCBieXRlc1dpZHRoKTsKKyAgICAgICAgICAgICAgICBsb2FkKHNyY09mZnNldDIs
IHJlZ1RvU3RvcmUyLCBieXRlc1dpZHRoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChtX2J1ZmZlclJlZ3NBdHRyID09IEJ1ZmZlclJlZ3M6OkFsbG93TW9kaWZpY2F0aW9uKTsKQEAg
LTM3OCw3ICs0MTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
aWYgKHNvdXJjZTEudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkJ1ZmZlck9mZnNldCkgewogICAgICAg
ICAgICAgcmVnVG9TdG9yZTEgPSB0ZW1wMTxSZWdUeXBlPigpOwotICAgICAgICAgICAgbG9hZChz
cmNPZmZzZXQxLCByZWdUb1N0b3JlMSk7CisgICAgICAgICAgICBsb2FkKHNyY09mZnNldDEsIHJl
Z1RvU3RvcmUxLCBieXRlc1dpZHRoKTsKICAgICAgICAgICAgIGlmIChzb3VyY2UyLnR5cGUgPT0g
U291cmNlOjpUeXBlOjpFbmNvZGVkSlNWYWx1ZSkgewogICAgICAgICAgICAgICAgIGlmIGNvbnN0
ZXhwciAocmVnVHlwZUlzR1BSKSB7CiAgICAgICAgICAgICAgICAgICAgIHJlZ1RvU3RvcmUyID0g
dGVtcDI8UmVnVHlwZT4oKTsKQEAgLTM5OCw3ICs0MzksNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTEgPSBzb3VyY2UxLmdldFJlZzxS
ZWdUeXBlPigpOwogICAgICAgICAgICAgcmVnVG9TdG9yZTIgPSB0ZW1wMjxSZWdUeXBlPigpOwot
ICAgICAgICAgICAgbG9hZChzcmNPZmZzZXQyLCByZWdUb1N0b3JlMik7CisgICAgICAgICAgICBs
b2FkKHNyY09mZnNldDIsIHJlZ1RvU3RvcmUyLCBieXRlc1dpZHRoKTsKIAogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgaWYgKHNvdXJjZTEudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkVuY29k
ZWRKU1ZhbHVlKSB7CkBAIC00MjgsOCArNDY5LDggQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBp
c1ZhbGlkT2Zmc2V0ID0gaXNWYWxpZFN0b3JlUGFpckltbTxSZWdUeXBlPihtaW5PZmZzZXQpOwog
CiAgICAgICAgIGlmIChvZmZzZXREZWx0YSAhPSByZWdpc3RlclNpemUgfHwgKCFpc1ZhbGlkT2Zm
c2V0ICYmIG1fYnVmZmVyUmVnc0F0dHIgIT0gQnVmZmVyUmVnczo6QWxsb3dNb2RpZmljYXRpb24p
KSB7Ci0gICAgICAgICAgICBzdG9yZShyZWdUb1N0b3JlMSwgZHN0T2Zmc2V0MSk7Ci0gICAgICAg
ICAgICBzdG9yZShyZWdUb1N0b3JlMiwgZHN0T2Zmc2V0Mik7CisgICAgICAgICAgICBzdG9yZShy
ZWdUb1N0b3JlMSwgZHN0T2Zmc2V0MSwgYnl0ZXNXaWR0aCk7CisgICAgICAgICAgICBzdG9yZShy
ZWdUb1N0b3JlMiwgZHN0T2Zmc2V0MiwgYnl0ZXNXaWR0aCk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQo
bV9idWZmZXJSZWdzQXR0ciA9PSBCdWZmZXJSZWdzOjpBbGxvd01vZGlmaWNhdGlvbik7CkBAIC00
NjcsNyArNTA4LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBpZiAoc291cmNlLnR5cGUgPT0gU291
cmNlOjpUeXBlOjpCdWZmZXJPZmZzZXQpIHsKICAgICAgICAgICAgIHJlZ1RvU3RvcmUgPSB0ZW1w
MTxSZWdUeXBlPigpOwotICAgICAgICAgICAgbG9hZChzcmNPZmZzZXQgLSBtX3NyY09mZnNldEFk
anVzdG1lbnQsIHJlZ1RvU3RvcmUpOworICAgICAgICAgICAgbG9hZChzcmNPZmZzZXQgLSBtX3Ny
Y09mZnNldEFkanVzdG1lbnQsIHJlZ1RvU3RvcmUsIHNpemVvZih2b2lkKikpOwogICAgICAgICB9
IGVsc2UgaWYgKHNvdXJjZS50eXBlID09IFNvdXJjZTo6VHlwZTo6UmVnKQogICAgICAgICAgICAg
cmVnVG9TdG9yZSA9IHNvdXJjZS5nZXRSZWc8UmVnVHlwZT4oKTsKICAgICAgICAgZWxzZSBpZiBj
b25zdGV4cHIgKHJlZ1R5cGVJc0dQUikgewpAQCAtNDc2LDIwICs1MTcsMjAgQEAgcHJpdmF0ZToK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogCi0gICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUsIG1fZGVmZXJyZWRTdG9yZU9mZnNldCAtIG1f
ZHN0T2Zmc2V0QWRqdXN0bWVudCk7CisgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUsIG1fZGVmZXJy
ZWRTdG9yZU9mZnNldCAtIG1fZHN0T2Zmc2V0QWRqdXN0bWVudCwgc2l6ZW9mKHZvaWQqKSk7CiAg
ICAgICAgIG1fY3VycmVudFNvdXJjZSA9IDA7CiAgICAgfQogCiBwdWJsaWM6Ci0gICAgQUxXQVlT
X0lOTElORSB2b2lkIGxvYWRHUFIoaW50IHNyY09mZnNldCkgeyBsb2FkPEdQUlJlZz4oc3JjT2Zm
c2V0KTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb3B5R1BSKEdQUlJlZyBncHIpIHsgY29w
eTxHUFJSZWc+KGdwcik7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbW92ZUNvbnN0YW50KEVu
Y29kZWRKU1ZhbHVlIHZhbHVlKSB7IG1vdmUodmFsdWUpOyB9Ci0gICAgQUxXQVlTX0lOTElORSB2
b2lkIHN0b3JlR1BSKGludCBkc3RPZmZzZXQpIHsgc3RvcmU8R1BSUmVnPihkc3RPZmZzZXQpOyB9
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRHUFIoaW50IHNyY09mZnNldCkgeyBsb2FkPEdQ
UlJlZz4oc3JjT2Zmc2V0LCBzaXplb2Yodm9pZCopKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBjb3B5R1BSKEdQUlJlZyBncHIpIHsgY29weTxHUFJSZWc+KGdwciwgc2l6ZW9mKHZvaWQqKSk7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbW92ZUNvbnN0YW50KEVuY29kZWRKU1ZhbHVlIHZh
bHVlKSB7IG1vdmUodmFsdWUsIHNpemVvZih2b2lkKikpOyB9CisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHN0b3JlR1BSKGludCBkc3RPZmZzZXQpIHsgc3RvcmU8R1BSUmVnPihkc3RPZmZzZXQsIHNp
emVvZih2b2lkKikpOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGZpbmFsaXplR1BSKCkgeyBm
aW5hbGl6ZTxHUFJSZWc+KCk7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkRlBSKGlu
dCBzcmNPZmZzZXQpIHsgbG9hZDxGUFJSZWc+KHNyY09mZnNldCk7IH0KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgY29weUZQUihGUFJSZWcgZ3ByKSB7IGNvcHk8RlBSUmVnPihncHIpOyB9Ci0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHN0b3JlRlBSKGludCBkc3RPZmZzZXQpIHsgc3RvcmU8RlBSUmVn
Pihkc3RPZmZzZXQpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRGUFIoaW50IHNyY09m
ZnNldCwgdW5zaWduZWQgYnl0ZXNXaWR0aCkgeyBsb2FkPEZQUlJlZz4oc3JjT2Zmc2V0LCBieXRl
c1dpZHRoKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb3B5RlBSKEZQUlJlZyBncHIsIHVu
c2lnbmVkIGJ5dGVzV2lkdGgpIHsgY29weTxGUFJSZWc+KGdwciwgYnl0ZXNXaWR0aCk7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVGUFIoaW50IGRzdE9mZnNldCwgdW5zaWduZWQgYnl0
ZXNXaWR0aCkgeyBzdG9yZTxGUFJSZWc+KGRzdE9mZnNldCwgYnl0ZXNXaWR0aCk7IH0KICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgZmluYWxpemVGUFIoKSB7IGZpbmFsaXplPEZQUlJlZz4oKTsgfQog
CiBwcm90ZWN0ZWQ6CkBAIC01MDIsMjQgKzU0MywzMiBAQCBwcm90ZWN0ZWQ6CiAgICAgTk9fUkVU
VVJOX0RVRV9UT19DUkFTSCB2b2lkIG1vdmUoRW5jb2RlZEpTVmFsdWUsIEdQUlJlZykgeyBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAjZW5kaWYKIAotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBsb2FkKGludCBvZmZzZXQsIEdQUlJlZyBkZXN0KQorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBsb2FkKGludCBvZmZzZXQsIEdQUlJlZyBkZXN0LCB1bnNpZ25lZCBieXRlc1dpZHRoKQogICAg
IHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dpZHRoLCBieXRlc1dpZHRoID09IHNpemVv
Zih2b2lkKikpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEFkZHJlc3MobV9zcmNCdWZmZXJHUFIs
IG9mZnNldCksIGRlc3QpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZShH
UFJSZWcgc3JjLCBpbnQgb2Zmc2V0KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZShHUFJS
ZWcgc3JjLCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBieXRlc1dpZHRoKQogICAgIHsKKyAgICAgICAg
QVNTRVJUX1VOVVNFRChieXRlc1dpZHRoLCBieXRlc1dpZHRoID09IHNpemVvZih2b2lkKikpOwog
ICAgICAgICBtX2ppdC5zdG9yZVB0cihzcmMsIEFkZHJlc3MobV9kc3RCdWZmZXJHUFIsIG9mZnNl
dCkpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkKGludCBvZmZzZXQsIEZQ
UlJlZyBkZXN0KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkKGludCBvZmZzZXQsIEZQUlJl
ZyBkZXN0LCB1bnNpZ25lZCBieXRlc1dpZHRoKQogICAgIHsKLSAgICAgICAgbV9qaXQubG9hZERv
dWJsZShBZGRyZXNzKG1fc3JjQnVmZmVyR1BSLCBvZmZzZXQpLCBkZXN0KTsKKyAgICAgICAgaWYg
KGJ5dGVzV2lkdGggPiA4KQorICAgICAgICAgICAgbV9qaXQubG9hZFZlY3RvcihBZGRyZXNzKG1f
c3JjQnVmZmVyR1BSLCBvZmZzZXQpLCBkZXN0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fc3JjQnVmZmVyR1BSLCBvZmZzZXQpLCBkZXN0KTsK
ICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmUoRlBSUmVnIHNyYywgaW50IG9m
ZnNldCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmUoRlBSUmVnIHNyYywgaW50IG9mZnNl
dCwgdW5zaWduZWQgYnl0ZXNXaWR0aCkKICAgICB7Ci0gICAgICAgIG1faml0LnN0b3JlRG91Ymxl
KHNyYywgQWRkcmVzcyhtX2RzdEJ1ZmZlckdQUiwgb2Zmc2V0KSk7CisgICAgICAgIGlmIChieXRl
c1dpZHRoID4gOCkKKyAgICAgICAgICAgIG1faml0LnN0b3JlVmVjdG9yKHNyYywgQWRkcmVzcyht
X2RzdEJ1ZmZlckdQUiwgb2Zmc2V0KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1faml0
LnN0b3JlRG91YmxlKHNyYywgQWRkcmVzcyhtX2RzdEJ1ZmZlckdQUiwgb2Zmc2V0KSk7CiAgICAg
fQogCiAjaWYgQ1BVKEFSTTY0KQpAQCAtNTUzLDkgKzYwMiw2IEBAIHByb3RlY3RlZDoKICAgICBG
UFJSZWcgbV90ZW1wMkZQUjsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBn
cHJTaXplID0gc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoQ1BVUmVnaXN0ZXIpKTsKLSAgICBzdGF0
aWMgY29uc3RleHByIGludCBmcHJTaXplID0gc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoZG91Ymxl
KSk7Ci0KICAgICAvLyBUaGVzZSBwb2ludCB0byB3aGljaCByZWdpc3RlciB0byB1c2UuCiAgICAg
R1BSUmVnIG1fZ3ByVG9TdG9yZSB7IEludmFsaWRHUFJSZWcgfTsgLy8gT25seSB1c2VkIHdoZW4g
IWhhc1BhaXJPcC4KICAgICBGUFJSZWcgbV9mcHJUb1N0b3JlIHsgSW52YWxpZEZQUlJlZyB9OyAv
LyBPbmx5IHVzZWQgd2hlbiAhaGFzUGFpck9wLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8u
aAppbmRleCA1MmExM2FhYWZiNzcuLjE3YmVkMzViMDczNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HUFJJbmZvLmgKQEAgLTQxMCw5ICs0MTAsMTEgQEAgcHVibGljOgogI2lmICFPUyhXSU5ET1dT
KQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDZ1CiAjZGVmaW5lIE5VTUJF
Ul9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDV1CisjZGVmaW5lIFNJWkVfT0ZfQ0FMTEVFX1NB
VkVTX1JFR0lTVEVSUyA1dQogI2Vsc2UKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lT
VEVSUyA0dQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA3dQorI2Rl
ZmluZSBTSVpFX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgN3UKICNlbmRpZgogCiBjbGFzcyBH
UFJJbmZvIHsKQEAgLTU1Miw2ICs1NTQsNyBAQCBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJldHVy
blZhbHVlR1BSMiA9PSBYODZSZWdpc3RlcnM6OmVkeCk7CiAjaWYgQ1BVKEFSTV9USFVNQjIpCiAj
ZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKICNkZWZpbmUgTlVNQkVSX09G
X0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMnUKKyNkZWZpbmUgU0laRV9PRl9DQUxMRUVfU0FWRVNf
UkVHSVNURVJTIDJ1CiAKIGNsYXNzIEdQUkluZm8gewogcHVibGljOgpAQCAtNjIwLDcgKzYyMyw4
IEBAIHB1YmxpYzoKICNpZiBDUFUoQVJNNjQpCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9S
RUdJU1RFUlMgOHUKIC8vIENhbGxlZSBTYXZlcyBpbmNsdWRlcyB4MTkuLngyOCBhbmQgRlAgcmVn
aXN0ZXJzIHE4Li5xMTUKLSNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMg
MTh1CisjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTICgxMHUrOHUpCisj
ZGVmaW5lIFNJWkVfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAoMTB1Kzh1KjIpCiAKIGNsYXNz
IEdQUkluZm8gewogcHVibGljOgpAQCAtNzQxLDYgKzc0NSw3IEBAIHB1YmxpYzoKICNpZiBDUFUo
TUlQUykKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0dQogI2RlZmluZSBO
VU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAydQorI2RlZmluZSBTSVpFX09GX0NBTExF
RV9TQVZFU19SRUdJU1RFUlMgMnUKIAogY2xhc3MgR1BSSW5mbyB7CiBwdWJsaWM6CkBAIC04MjAs
NiArODI1LDcgQEAgcHVibGljOgogCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RF
UlMgOHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMjN1CisjZGVm
aW5lIFNJWkVfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAyM3UKIAogY2xhc3MgR1BSSW5mbyB7
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
QXRPZmZzZXRMaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9m
ZnNldExpc3QuY3BwCmluZGV4IGVkODMwM2RlNDFiNS4uOWRlZjhlMmVjNzhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcApAQCAt
MjQsNiArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCM1dp
ZHRoLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3QuaCIKIAogI2lmIEVOQUJMRShB
U1NFTUJMRVIpCkBAIC0zOSwxNiArNDAsMTcgQEAgUmVnaXN0ZXJBdE9mZnNldExpc3Q6OlJlZ2lz
dGVyQXRPZmZzZXRMaXN0KCkgeyB9CiBSZWdpc3RlckF0T2Zmc2V0TGlzdDo6UmVnaXN0ZXJBdE9m
ZnNldExpc3QoUmVnaXN0ZXJTZXQgcmVnaXN0ZXJTZXQsIE9mZnNldEJhc2VUeXBlIG9mZnNldEJh
c2VUeXBlKQogICAgIDogbV9yZWdpc3RlcnMocmVnaXN0ZXJTZXQubnVtYmVyT2ZTZXRSZWdpc3Rl
cnMoKSkKIHsKLSAgICBzaXplX3QgbnVtYmVyT2ZSZWdpc3RlcnMgPSByZWdpc3RlclNldC5udW1i
ZXJPZlNldFJlZ2lzdGVycygpOworICAgIHNpemVfdCBudW1iZXJPZkZQUnMgPSByZWdpc3RlclNl
dC5udW1iZXJPZlNldEZQUnMoKTsKKyAgICBzaXplX3QgbnVtYmVyT2ZHUFJzID0gcmVnaXN0ZXJT
ZXQubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSAtIG51bWJlck9mRlBSczsKICAgICBwdHJkaWZmX3Qg
b2Zmc2V0ID0gMDsKICAgICAKICAgICBpZiAob2Zmc2V0QmFzZVR5cGUgPT0gRnJhbWVQb2ludGVy
QmFzZWQpCi0gICAgICAgIG9mZnNldCA9IC0oc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihudW1iZXJP
ZlJlZ2lzdGVycykgKiBzaXplb2YoQ1BVUmVnaXN0ZXIpKTsKKyAgICAgICAgb2Zmc2V0ID0gLShz
dGF0aWNfY2FzdDxwdHJkaWZmX3Q+KG51bWJlck9mR1BScykgKiBCMzo6Ynl0ZXMoQjM6OmNvbnNl
cnZhdGl2ZVdpZHRoKEIzOjpHUCkpICsgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihudW1iZXJPZkZQ
UnMpICogQjM6OmJ5dGVzKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CiAKICAgICB1
bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgcmVnaXN0ZXJTZXQuZm9yRWFjaChbJl0gKFJlZyByZWcp
IHsKICAgICAgICAgbV9yZWdpc3RlcnNbaW5kZXhdID0gUmVnaXN0ZXJBdE9mZnNldChyZWcsIG9m
ZnNldCk7Ci0gICAgICAgIG9mZnNldCArPSBzaXplb2YoQ1BVUmVnaXN0ZXIpOworICAgICAgICBv
ZmZzZXQgKz0gQjM6OmJ5dGVzKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6YmFua0ZvclJlZyhy
ZWcpKSk7CiAgICAgICAgICsraW5kZXg7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAKaW5kZXggMjI0
ZTI1MzQ5MzRiLi5jNjcyNDYwMTcyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBA
QCB1bnNpZ25lZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9T
dGFja0ZvckNhbGwoQXNzZW1ibHlIZWxwZQogICAgIGlmICghdXNlZFJlZ2lzdGVycy5udW1iZXJP
ZlNldFJlZ2lzdGVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICB1bnNpZ25lZCBz
dGFja09mZnNldCA9ICh1c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkpICogc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKyAgICB1bnNpZ25lZCBzdGFja09mZnNldCA9ICh1c2VkUmVn
aXN0ZXJzLm51bWJlck9mU2V0R1BScygpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgKyAodXNl
ZFJlZ2lzdGVycy5udW1iZXJPZlNldEZQUnMoKSAqIEIzOjpieXRlcyhCMzo6Y29uc2VydmF0aXZl
V2lkdGgoQjM6OkZQKSkpOwogICAgIHN0YWNrT2Zmc2V0ICs9IGV4dHJhQnl0ZXNBdFRvcE9mU3Rh
Y2s7CiAgICAgc3RhY2tPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGln
bm1lbnRCeXRlcygpLCBzdGFja09mZnNldCk7CiAgICAgaml0LnN1YlB0cigKQEAgLTE4NiwxMiAr
MTg2LDE0IEBAIHVuc2lnbmVkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdp
c3RlcnNUb1N0YWNrRm9yQ2FsbChBc3NlbWJseUhlbHBlCiAgICAgfQogICAgIHNwb29sZXIuZmlu
YWxpemVHUFIoKTsKIAorICAgIHVuc2lnbmVkIGZwckNvdW50ID0gMDsKICAgICBmb3IgKEZQUlJl
ZyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fz
c2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJl
Z2lzdGVyKHJlZykpIHsKICAgICAgICAgaWYgKHVzZWRSZWdpc3RlcnMuZ2V0KHJlZykpIHsKLSAg
ICAgICAgICAgIHNwb29sZXIuc3RvcmVGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4o
ZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChjb3VudCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkp
KSB9KTsKLSAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgICAgICBzcG9vbGVyLnN0b3JlRlBS
KHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAo
Y291bnQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSArIChmcHJDb3VudCAqIEIzOjpieXRlcyhC
Mzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpKSB9LCBCMzo6Ynl0ZXMoQjM6OmNvbnNlcnZh
dGl2ZVdpZHRoKEIzOjpGUCkpKTsKKyAgICAgICAgICAgIGZwckNvdW50Kys7CiAgICAgICAgIH0K
ICAgICB9CisgICAgY291bnQgKz0gZnByQ291bnQ7CiAgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigp
OwogCiAgICAgUkVMRUFTRV9BU1NFUlQoY291bnQgPT0gdXNlZFJlZ2lzdGVycy5udW1iZXJPZlNl
dFJlZ2lzdGVycygpKTsKQEAgLTIxOSwxNiArMjIxLDE4IEBAIHZvaWQgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpyZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChBc3NlbWJseUhlbHBl
cnMmCiAgICAgfQogICAgIHNwb29sZXIuZmluYWxpemVHUFIoKTsKIAorICAgIHVuc2lnbmVkIGZw
ckNvdW50ID0gMDsKICAgICBmb3IgKEZQUlJlZyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RG
UFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVn
ID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJlZykpIHsKICAgICAgICAgaWYgKHVz
ZWRSZWdpc3RlcnMuZ2V0KHJlZykpIHsKICAgICAgICAgICAgIGlmICghaWdub3JlLmdldChyZWcp
KQotICAgICAgICAgICAgICAgIHNwb29sZXIubG9hZEZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRy
ZGlmZl90PihleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKHNpemVvZihFbmNvZGVkSlNWYWx1ZSkg
KiBjb3VudCkpIH0pOwotICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgICAgICAgICBzcG9v
bGVyLmxvYWRGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZXh0cmFCeXRlc0F0VG9w
T2ZTdGFjayArIChjb3VudCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpICsgKGZwckNvdW50ICog
QjM6OmJ5dGVzKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSkpIH0sIEIzOjpieXRlcyhC
Mzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOworICAgICAgICAgICAgZnByQ291bnQrKzsK
ICAgICAgICAgfQogICAgIH0KKyAgICBjb3VudCArPSBmcHJDb3VudDsKICAgICBzcG9vbGVyLmZp
bmFsaXplRlBSKCk7CiAKLSAgICB1bnNpZ25lZCBzdGFja09mZnNldCA9ICh1c2VkUmVnaXN0ZXJz
Lm51bWJlck9mU2V0UmVnaXN0ZXJzKCkpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKyAgICB1
bnNpZ25lZCBzdGFja09mZnNldCA9ICh1c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0R1BScygpICog
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgKyAodXNlZFJlZ2lzdGVycy5udW1iZXJPZlNldEZQUnMo
KSAqIEIzOjpieXRlcyhCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOwogICAgIHN0YWNr
T2Zmc2V0ICs9IGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2s7CiAgICAgc3RhY2tPZmZzZXQgPSBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBzdGFja09mZnNldCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2ltZEluZm8uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2ltZEluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjk1NGU4MzIxMmQ0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2ltZEluZm8uaApAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBKU0MgeworCit0eXBlZGVmIHVuaW9uIHYxMjhfdSB7CisgICAgdWludDhfdCB1OHgx
NlsxNl07CisgICAgdWludDE2X3QgdTE2eDhbOF07CisgICAgdWludDMyX3QgdTMyeDRbNF07Cisg
ICAgdWludDY0X3QgdTY0eDJbMl0gPSB7IDAsIDAgfTsKK30gdjEyOF90OworCitlbnVtIGNsYXNz
IFNpbWRMYW5lSW50ZXJwcmV0YXRpb24gOiB1aW50OF90IHsKKyAgICB2MTI4LCBpOHgxNiwgaTE2
eDgsIGkzMng0LCBpNjR4MiwgZjMyeDQsIGY2NHgyCit9OworCitlbnVtIGNsYXNzIFNpbWRTaWdu
RXh0ZW5kTW9kZSA6IHVpbnQ4X3QgeworICAgIE5BLCBTLCBVCit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJs
eS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4
IDNlNTM3OTA1MjI3MS4uY2EzZThkMGU5MTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9XZWJBc3NlbWJseS5hc20KQEAgLTM5LDYgKzM5LDcgQEAgZWxzZQogZW5kCiBjb25zdCBO
dW1iZXJPZldhc21Bcmd1bWVudEZQUnMgPSA4CiBjb25zdCBOdW1iZXJPZldhc21Bcmd1bWVudHMg
PSBOdW1iZXJPZldhc21Bcmd1bWVudEdQUnMgKyBOdW1iZXJPZldhc21Bcmd1bWVudEZQUnMKK2Nv
bnN0IFdhc21Bcmd1bWVudHNTaXplSW5SZWdpc3RlcnMgPSBOdW1iZXJPZldhc21Bcmd1bWVudEdQ
UnMgKyAyKk51bWJlck9mV2FzbUFyZ3VtZW50RlBScwogCiAjIEFsbCBjYWxsZWUgc2F2ZXMgbXVz
dCBtYXRjaCB0aGUgZGVmaW5pdGlvbiBpbiBXYXNtQ2FsbGVlLmNwcAogCkBAIC03MCwxNCArNzEs
MTQgQEAgbWFjcm8gZm9yRWFjaEFyZ3VtZW50R1BSKGZuKQogZW5kCiAKIG1hY3JvIGZvckVhY2hB
cmd1bWVudEZQUihmbikKLSAgICBmbigoTnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICsgMCkgKiA4
LCB3ZmEwKQotICAgIGZuKChOdW1iZXJPZldhc21Bcmd1bWVudEdQUnMgKyAxKSAqIDgsIHdmYTEp
Ci0gICAgZm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDIpICogOCwgd2ZhMikKLSAgICBm
bigoTnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICsgMykgKiA4LCB3ZmEzKQotICAgIGZuKChOdW1i
ZXJPZldhc21Bcmd1bWVudEdQUnMgKyA0KSAqIDgsIHdmYTQpCi0gICAgZm4oKE51bWJlck9mV2Fz
bUFyZ3VtZW50R1BScyArIDUpICogOCwgd2ZhNSkKLSAgICBmbigoTnVtYmVyT2ZXYXNtQXJndW1l
bnRHUFJzICsgNikgKiA4LCB3ZmE2KQotICAgIGZuKChOdW1iZXJPZldhc21Bcmd1bWVudEdQUnMg
KyA3KSAqIDgsIHdmYTcpCisgICAgZm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDAgKiAy
KSAqIDgsIHdmYTApCisgICAgZm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDEgKiAyKSAq
IDgsIHdmYTEpCisgICAgZm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDIgKiAyKSAqIDgs
IHdmYTIpCisgICAgZm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDMgKiAyKSAqIDgsIHdm
YTMpCisgICAgZm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDQgKiAyKSAqIDgsIHdmYTQp
CisgICAgZm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDUgKiAyKSAqIDgsIHdmYTUpCisg
ICAgZm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDYgKiAyKSAqIDgsIHdmYTYpCisgICAg
Zm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDcgKiAyKSAqIDgsIHdmYTcpCiBlbmQKIAog
IyBIZWxwZXIgbWFjcm9zCkBAIC0xMzUsNyArMTM2LDcgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJ
VEZvclByb2xvZ3VlKGNvZGVCbG9ja1JlZ2lzdGVyKQogICAgICAgICAgICAgZW5kKQogCiAgICAg
ICAgICAgICBmb3JFYWNoQXJndW1lbnRGUFIobWFjcm8gKG9mZnNldCwgZnByKQotICAgICAgICAg
ICAgICAgIGxvYWRkIC1vZmZzZXQgLSA4IC0gQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0
ZXJzICogOFtjZnJdLCBmcHIKKyAgICAgICAgICAgICAgICBsb2FkdiAtb2Zmc2V0IC0gOCAtIENh
bGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyAqIDhbY2ZyXSwgZnByCiAgICAgICAgICAg
ICBlbmQpCiAKICAgICAgICAgICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQpAQCAt
MzE2LDcgKzMxNyw3IEBAIG1hY3JvIHdhc21Qcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVC
bG9ja1NldHRlciwgbG9hZFdhc21JbnN0YW5jZSkKICAgICBlbmQpCiAKICAgICBmb3JFYWNoQXJn
dW1lbnRGUFIobWFjcm8gKG9mZnNldCwgZnByKQotICAgICAgICBzdG9yZWQgZnByLCAtb2Zmc2V0
IC0gOCAtIENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyAqIDhbY2ZyXQorICAgICAg
ICBzdG9yZXYgZnByLCAtb2Zmc2V0IC0gOCAtIENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lz
dGVycyAqIDhbY2ZyXQogICAgIGVuZCkKIAogICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JQcm9sb2d1
ZSh3czApCkBAIC0zMjYsMTEgKzMyNywxMSBAQCBtYWNybyB3YXNtUHJvbG9ndWUoY29kZUJsb2Nr
R2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRXYXNtSW5zdGFuY2UpCiAgICAgbW92ZSAwLCBQ
QwogCiAgICAgbG9hZGkgV2FzbTo6TExJbnRDYWxsZWU6Om1fbnVtVmFyc1t3czBdLCB3czEKLSAg
ICBzdWJpIE51bWJlck9mV2FzbUFyZ3VtZW50cyArIENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJl
Z2lzdGVycywgd3MxCisgICAgc3ViaSBXYXNtQXJndW1lbnRzU2l6ZUluUmVnaXN0ZXJzICsgQ2Fs
bGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzLCB3czEKICAgICBidGl6IHdzMSwgLnplcm9J
bml0aWFsaXplTG9jYWxzRG9uZQogICAgIG5lZ2kgd3MxCiAgICAgc3hpMnEgd3MxLCB3czEKLSAg
ICBsZWFwIChOdW1iZXJPZldhc21Bcmd1bWVudHMgKyBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxS
ZWdpc3RlcnMgKyAxKSAqIC04W2Nmcl0sIHdzMAorICAgIGxlYXAgKFdhc21Bcmd1bWVudHNTaXpl
SW5SZWdpc3RlcnMgKyBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKyAxKSAqIC04
W2Nmcl0sIHdzMAogLnplcm9Jbml0aWFsaXplTG9jYWxzTG9vcDoKICAgICBhZGRxIDEsIHdzMQog
ICAgIHN0b3JlcSAwLCBbd3MwLCB3czEsIDhdCkBAIC00MzEsNiArNDMyLDEzIEBAIG1hY3JvIG1s
b2FkZChjdHgsIGZpZWxkLCBkc3QpCiAgICAgZW5kKQogZW5kCiAKK21hY3JvIG1sb2FkdihjdHgs
IGZpZWxkLCBkc3QpCisgICAgd2dldHMoY3R4LCBmaWVsZCwgdDUpCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZShjdHgsIHQ1LCBtYWNybyAoZnJvbSkKKyAgICAgICAgbG9hZHYgZnJvbSwgZHN0
CisgICAgZW5kKQorZW5kCisKICMgVHlwZWQgcmV0dXJucwogCiBtYWNybyByZXR1cm5xKGN0eCwg
dmFsdWUpCkBAIC00NTcsNiArNDY1LDEyIEBAIG1hY3JvIHJldHVybmQoY3R4LCB2YWx1ZSkKICAg
ICBkaXNwYXRjaChjdHgpCiBlbmQKIAorbWFjcm8gcmV0dXJudihjdHgsIHZhbHVlKQorICAgIHdn
ZXRzKGN0eCwgbV9kc3QsIHQ1KQorICAgIHN0b3JldiB2YWx1ZSwgW2NmciwgdDUsIDhdCisgICAg
ZGlzcGF0Y2goY3R4KQorZW5kCisKICMgV2FzbSB3cmFwcGVyIG9mIGdldC9nZXR1IHRoYXQgb3Bl
cmF0ZSBvbiBjdHgKIG1hY3JvIHdnZXRzKGN0eCwgZmllbGQsIGRzdCkKICAgICBjdHgobWFjcm8o
b3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBzaXplKQpAQCAtNjIxLDEwICs2MzUsMTAgQEAgX3dh
c21fZW50ZXI6CiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDIsIDB4ZGVhZDAwZTEp
CiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyICAgICAgICAgICAgICAgIC8vIHQyPENvZGVC
bG9jaz4gPSBjZnIuQ29kZUJsb2NrCiAgICAgbG9hZGkgV2FzbTo6TExJbnRDYWxsZWU6Om1fbnVt
VmFyc1t0Ml0sIHQyICAgICAgLy8gdDI8c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4ubV9udW1WYXJz
Ci0gICAgc3VicSBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKyBOdW1iZXJPZldh
c21Bcmd1bWVudHMsIHQyCisgICAgc3VicSBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3Rl
cnMgKyBXYXNtQXJndW1lbnRzU2l6ZUluUmVnaXN0ZXJzLCB0MgogICAgIGJ0aXogdDIsIC5vcEVu
dGVyRG9uZQogICAgIG1vdmUgY2ZyLCB0MQotICAgIHN1YnEgQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0
dWFsUmVnaXN0ZXJzICogOCArIE51bWJlck9mV2FzbUFyZ3VtZW50cyAqIDgsIHQxCisgICAgc3Vi
cSBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKiA4ICsgV2FzbUFyZ3VtZW50c1Np
emVJblJlZ2lzdGVycyAqIDgsIHQxCiAgICAgbmVnaSB0MgogICAgIHN4aTJxIHQyLCB0MgogLm9w
RW50ZXJMb29wOgpAQCAtNjM4LDYgKzY1MiwxMSBAQCB1bnByZWZpeGVkV2FzbU9wKHdhc21fbm9w
LCBXYXNtTm9wLCBtYWNybyhjdHgpCiAgICAgZGlzcGF0Y2goY3R4KQogZW5kKQogCit1bnByZWZp
eGVkV2FzbU9wKHdhc21fYnJlYWssIFdhc21CcmVhaywgbWFjcm8oY3R4KQorICAgIGJyZWFrCisg
ICAgZGlzcGF0Y2goY3R4KQorZW5kKQorCiB3YXNtT3AobG9vcF9oaW50LCBXYXNtTG9vcEhpbnQs
IG1hY3JvKGN0eCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgZGlzcGF0Y2go
Y3R4KQpAQCAtNzAzLDcgKzcyMiw3IEBAIHVucHJlZml4ZWRXYXNtT3Aod2FzbV9yZXQsIFdhc21S
ZXQsIG1hY3JvKGN0eCkKICAgICAgICAgbG9hZHEgLW9mZnNldCAtIDggLSBDYWxsZWVTYXZlU3Bh
Y2VBc1ZpcnR1YWxSZWdpc3RlcnMgKiA4W2Nmcl0sIGdwcgogICAgIGVuZCkKICAgICBmb3JFYWNo
QXJndW1lbnRGUFIobWFjcm8gKG9mZnNldCwgZnByKQotICAgICAgICBsb2FkZCAtb2Zmc2V0IC0g
OCAtIENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyAqIDhbY2ZyXSwgZnByCisgICAg
ICAgIGxvYWR2IC1vZmZzZXQgLSA4IC0gQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJz
ICogOFtjZnJdLCBmcHIKICAgICBlbmQpCiAgICAgZG9SZXR1cm4oKQogZW5kKQpAQCAtNzczLDcg
Kzc5Miw3IEBAIG1hY3JvIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBzbG93UGF0aCwgc3RvcmVX
YXNtSW5zdGFuY2UpCiAgICAgICAgICAgICBsc2hpZnRpIDMsIHdzMQogICAgICAgICAgICAgc3Vi
cCBjZnIsIHdzMSwgc3AKIAotICAgICAgICAgICAgd2dldHUoY3R4LCBtX251bWJlck9mU3RhY2tB
cmdzLCB3czEpCisgICAgICAgICAgICB3Z2V0dShjdHgsIG1fc2l6ZU9mU3RhY2tBcmdzLCB3czEp
CiAKICAgICAgICAgICAgICMgUHJlc2VydmUgdGhlIGN1cnJlbnQgaW5zdGFuY2UKICAgICAgICAg
ICAgIG1vdmUgd2FzbUluc3RhbmNlLCBQQgpAQCAtNzg3LDcgKzgwNiw3IEBAIG1hY3JvIHNsb3dQ
YXRoRm9yV2FzbUNhbGwoY3R4LCBzbG93UGF0aCwgc3RvcmVXYXNtSW5zdGFuY2UpCiAgICAgICAg
ICAgICBlbmQpCiAKICAgICAgICAgICAgIGZvckVhY2hBcmd1bWVudEZQUihtYWNybyAob2Zmc2V0
LCBmcHIpCi0gICAgICAgICAgICAgICAgbG9hZGQgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBv
ZmZzZXRbc3AsIHdzMSwgOF0sIGZwcgorICAgICAgICAgICAgICAgIGxvYWR2IENhbGxGcmFtZUhl
YWRlclNpemUgKyA4ICsgb2Zmc2V0W3NwLCB3czEsIDhdLCBmcHIKICAgICAgICAgICAgIGVuZCkK
IAogICAgICAgICAgICAgYWRkcCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKQEAgLTg0MiwxNCAr
ODYxLDE0IEBAIG1hY3JvIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBzbG93UGF0aCwgc3RvcmVX
YXNtSW5zdGFuY2UpCiAKICAgICAgICAgICAgICMgQXJndW1lbnQgcmVnaXN0ZXJzIGFyZSBhbHNv
IHJldHVybiByZWdpc3RlcnMsIHNvIHRoZXkgbXVzdCBiZSBzdG9yZWQgdG8gdGhlIHN0YWNrCiAg
ICAgICAgICAgICAjIGluIGNhc2UgdGhleSBjb250YWluIHJldHVybiB2YWx1ZXMuCi0gICAgICAg
ICAgICB3Z2V0dShjdHgsIG1fbnVtYmVyT2ZTdGFja0FyZ3MsIHdzMCkKKyAgICAgICAgICAgIHdn
ZXR1KGN0eCwgbV9zaXplT2ZTdGFja0FyZ3MsIHdzMCkKICAgICAgICAgICAgIG1vdmUgbWVtb3J5
QmFzZSwgUEMKICAgICAgICAgICAgIGZvckVhY2hBcmd1bWVudEdQUihtYWNybyAob2Zmc2V0LCBn
cHIpCiAgICAgICAgICAgICAgICAgc3RvcmVxIGdwciwgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDgg
KyBvZmZzZXRbd3MxLCB3czAsIDhdCiAgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgICAgIGZv
ckVhY2hBcmd1bWVudEZQUihtYWNybyAob2Zmc2V0LCBmcHIpCi0gICAgICAgICAgICAgICAgc3Rv
cmVkIGZwciwgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBvZmZzZXRbd3MxLCB3czAsIDhdCisg
ICAgICAgICAgICAgICAgc3RvcmV2IGZwciwgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBvZmZz
ZXRbd3MxLCB3czAsIDhdCiAgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgICAgIGxvYWRpIEFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCkBAIC0yOTE1LDMg
KzI5MzQsMTIgQEAgZW5kKQogY29tbW9uV2FzbU9wKHdhc21fY2F0Y2hfYWxsX25vX3RscywgV2Fz
bUNhdGNoQWxsLCBtYWNybygpIGVuZCwgbWFjcm8oY3R4KQogICAgIGNhdGNoQWxsSW1wbChjdHgs
IG1hY3JvKGluc3RhbmNlKSBlbmQpCiBlbmQpCisKK3dhc21PcChzaW1kX2V4dHJhY3RfbGFuZV9p
OHgxNl91LCBXYXNtU2ltZEV4dHJhY3RMYW5lSTh4MTZVLCBtYWNybyhjdHgpCisgICAgbWxvYWR2
KGN0eCwgbV92LCBmdDApCisgICAgd2dldHUoY3R4LCBtX2xhbmUsIHQwKQorICAgIHNwbGF0X2xh
bmVfYnl0ZSB0MCwgZnQxCisgICAgc3dpenpsZV9ieXRlIGZ0MSwgZnQwCisgICAgZXh0cmFjdF9s
YW5lX2J5dGUgMCwgZnQwLCB0MAorICAgIHJldHVybmkoY3R4LCB0MCkKK2VuZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIKaW5kZXggMWFkZDU0MGQ4MzVjLi5jMWZi
N2M0MGFhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fy
bTY0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCkBA
IC0xMDIsNiArMTAyLDggQEAgZGVmIGFybTY0RlBSTmFtZShuYW1lLCBraW5kKQogICAgIHdoZW4g
OmZsb2F0CiAgICAgICAgICJzIiArIG5hbWVbMS4uLTFdCiAgICAgd2hlbiA6dmVjdG9yCisgICAg
ICAgICJxIiArIG5hbWVbMS4uLTFdCisgICAgd2hlbiA6dmVjdG9yX3N1ZmZpeGVkCiAgICAgICAg
ICJ2IiArIG5hbWVbMS4uLTFdCiAgICAgZWxzZQogICAgICAgICByYWlzZSAiYmFkIEZQUiBraW5k
ICN7a2luZH0iCkBAIC0xNzcsNiArMTc5LDE3IEBAIGNsYXNzIFJlZ2lzdGVySUQKICAgICAgICAg
ICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIgbmFtZSAje0BuYW1lfSBhdCAje2NvZGVPcmlnaW5TdHJp
bmd9IgogICAgICAgICBlbmQKICAgICBlbmQKKyAgICAKKyAgICBkZWYgYXJtNjRPcGVyYW5kU3Vm
Zml4ZWQoKQorICAgICAgICBiYXNlID0gc2VsZi5hcm02NE9wZXJhbmQoQHN1ZmZpeF9raW5kKQor
ICAgICAgICBiYXNlICsgQHN1ZmZpeAorICAgIGVuZAorICAgIAorICAgIGRlZiB3aXRoU3VmZml4
KHN1ZmZpeF9raW5kLCBzdWZmaXgpCisgICAgICAgIEBzdWZmaXhfa2luZCA9IHN1ZmZpeF9raW5k
CisgICAgICAgIEBzdWZmaXggPSBzdWZmaXguZW1wdHk/ID8gIiIgOiAiLiN7c3VmZml4fSIKKyAg
ICAgICAgc2VsZgorICAgIGVuZAogZW5kCiAKIGNsYXNzIEZQUmVnaXN0ZXJJRApAQCAtMjE3LDEy
ICsyMzAsNDMgQEAgY2xhc3MgRlBSZWdpc3RlcklECiAgICAgICAgIGVsc2UgIkJhZCByZWdpc3Rl
ciBuYW1lICN7QG5hbWV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCiAgICAgICAgIGVuZAogICAg
IGVuZAorICAgIAorICAgIGRlZiBhcm02NE9wZXJhbmRTdWZmaXhlZCgpCisgICAgICAgIGJhc2Ug
PSBzZWxmLmFybTY0T3BlcmFuZChAc3VmZml4X2tpbmQpCisgICAgICAgIGluZGV4ID0gQGluZGV4
ID09IDpub25lID8gIiIgOiAiIFsgI3tAaW5kZXguYXJtNjRJbmRleCgpfSBdIgorICAgICAgICBi
YXNlICsgQHN1ZmZpeCArIGluZGV4CisgICAgZW5kCisgICAgCisgICAgZGVmIHdpdGhTdWZmaXgo
c3VmZml4X2tpbmQsIHN1ZmZpeCkKKyAgICAgICAgQHN1ZmZpeF9raW5kID0gc3VmZml4X2tpbmQK
KyAgICAgICAgQHN1ZmZpeCA9IHN1ZmZpeC5lbXB0eT8gPyAiIiA6ICIuI3tzdWZmaXh9IgorICAg
ICAgICBAaW5kZXggPSA6bm9uZQorICAgICAgICBzZWxmCisgICAgZW5kCisgICAgCisgICAgZGVm
IHdpdGhJbmRleChpbmRleCkKKyAgICAgICAgcmFpc2UgdW5sZXNzIGluZGV4LmlzX2E/IEltbWVk
aWF0ZQorICAgICAgICBAaW5kZXggPSBpbmRleAorICAgICAgICBzZWxmCisgICAgZW5kCiBlbmQK
IAogY2xhc3MgSW1tZWRpYXRlCiAgICAgZGVmIGFybTY0T3BlcmFuZChraW5kKQogICAgICAgICAi
XCMje3ZhbHVlfSIKICAgICBlbmQKKyAgICAKKyAgICBkZWYgYXJtNjRPcGVyYW5kU3VmZml4ZWQo
KQorICAgICAgICAiXCMje3ZhbHVlfSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYXJtNjRJbmRl
eCgpCisgICAgICAgICIje3ZhbHVlfSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgd2l0aFN1ZmZp
eChfLCBfKQorICAgICAgICBzZWxmCisgICAgZW5kCiBlbmQKIAogY2xhc3MgQWRkcmVzcwpAQCAt
MzA3LDcgKzM1MSw3IEBAIGRlZiBhcm02NExvd2VyTGFiZWxSZWZlcmVuY2VzKGxpc3QpCiAgICAg
ICAgIHwgbm9kZSB8CiAgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KICAgICAgICAg
ICAgIGNhc2Ugbm9kZS5vcGNvZGUKLSAgICAgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRpcyIs
ICJsb2FkcCIsICJsb2FkcSIsICJsb2FkYiIsICJsb2FkYnNpIiwgImxvYWRic3EiLCAibG9hZGgi
LCAibG9hZGhzaSIsICJsb2FkaHNxIiwgImxlYXAiCisgICAgICAgICAgICB3aGVuICJsb2FkaSIs
ICJsb2FkaXMiLCAibG9hZHAiLCAibG9hZHEiLCAibG9hZGIiLCAibG9hZGJzaSIsICJsb2FkYnNx
IiwgImxvYWRoIiwgImxvYWRoc2kiLCAibG9hZGhzcSIsICJsZWFwIiwgImxvYWR2IgogICAgICAg
ICAgICAgICAgIGxhYmVsUmVmID0gbm9kZS5vcGVyYW5kc1swXQogICAgICAgICAgICAgICAgIGlm
IGxhYmVsUmVmLmlzX2E/IExhYmVsUmVmZXJlbmNlCiAgICAgICAgICAgICAgICAgICAgIGRlc3Qg
PSBub2RlLm9wZXJhbmRzWzFdCkBAIC0zODksNyArNDMzLDcgQEAgY2xhc3MgU2VxdWVuY2UKICAg
ICAgICAgICAgIHdoZW4gImxvYWRwIiwgInN0b3JlcCIsICJsb2FkcSIsICJzdG9yZXEiLCAibG9h
ZGQiLCAic3RvcmVkIiwgImxzaGlmdHAiLCAibHNoaWZ0cSIsICJuZWdwIiwgIm5lZ3EiLCAicnNo
aWZ0cCIsICJyc2hpZnRxIiwKICAgICAgICAgICAgICAgICAidXJzaGlmdHAiLCAidXJzaGlmdHEi
LCAiYWRkcCIsICJhZGRxIiwgIm11bHAiLCAibXVscSIsICJhbmRwIiwgImFuZHEiLCAib3JwIiwg
Im9ycSIsICJzdWJwIiwgInN1YnEiLCAieG9ycCIsICJ4b3JxIiwgImFkZGQiLAogICAgICAgICAg
ICAgICAgICJkaXZkIiwgInN1YmQiLCAibXVsZCIsICJzcXJ0ZCIsIC9eYnAvLCAvXmJxLywgL15i
dHAvLCAvXmJ0cS8sIC9eY3AvLCAvXmNxLywgL150cC8sIC9edHEvLCAvXmJkLywKLSAgICAgICAg
ICAgICAgICAiam1wIiwgImNhbGwiLCAibGVhcCIsICJsZWFxIiwgImxvYWRsaW5rYWNxcSIsICJz
dG9yZWNvbmRyZWxxIiwgL15hdG9taWNbYS16XStxJC8KKyAgICAgICAgICAgICAgICAiam1wIiwg
ImNhbGwiLCAibGVhcCIsICJsZWFxIiwgImxvYWRsaW5rYWNxcSIsICJzdG9yZWNvbmRyZWxxIiwg
L15hdG9taWNbYS16XStxJC8sICJsb2FkdiIsICJzdG9yZXYiCiAgICAgICAgICAgICAgICAgc2l6
ZSA9ICRjdXJyZW50U2V0dGluZ3NbIkFERFJFU1M2NCJdID8gOCA6IDQKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICByYWlzZSAiQmFkIGluc3RydWN0aW9uICN7bm9kZS5vcGNvZGV9
IGZvciBoZWFwIGFjY2VzcyBhdCAje25vZGUuY29kZU9yaWdpblN0cmluZ306ICN7bm9kZS5kdW1w
fSIKQEAgLTU4Myw3ICs2MjcsNyBAQCBkZWYgZW1pdEFSTTY0VEFDV2l0aE9wZXJhbmRTdWZmaXgo
b3Bjb2RlLCBvcGVyYW5kcywga2luZCkKICAgICBzaXplID0ga2luZCA9PSA6ZmxvYXQgPyA4IDog
MTYKICAgICBvcGVyYW5kcyA9IG9wZXJhbmRzLm1hcCB7IHxvcGVyYW5kfAogICAgICAgICByYWlz
ZSB1bmxlc3Mgb3BlcmFuZC5pc19hPyBGUFJlZ2lzdGVySUQKLSAgICAgICAgIiN7b3BlcmFuZC5h
cm02NE9wZXJhbmQoOnZlY3Rvcil9LiN7c2l6ZX1iIgorICAgICAgICAiI3tvcGVyYW5kLmFybTY0
T3BlcmFuZCg6dmVjdG9yX3N1ZmZpeGVkKX0uI3tzaXplfWIiCiAgICAgfQogICAgIGlmIG9wZXJh
bmRzLmxlbmd0aCA9PSAyCiAgICAgICBvcGVyYW5kcyA9IFtvcGVyYW5kc1sxXSwgb3BlcmFuZHNb
MV0sIG9wZXJhbmRzWzBdXQpAQCAtNTk0LDYgKzYzOCwyMyBAQCBkZWYgZW1pdEFSTTY0VEFDV2l0
aE9wZXJhbmRTdWZmaXgob3Bjb2RlLCBvcGVyYW5kcywga2luZCkKICAgICAkYXNtLnB1dHMgIiN7
b3Bjb2RlfSAje29wZXJhbmRzLmpvaW4oIiwgIil9IgogZW5kCiAKK2RlZiBlbWl0QVJNNjRXaXRo
T3BlcmFuZFN1ZmZpeGVzKG9wY29kZSwgKm9wZXJhbmRzKQorICAgIG9wZXJhbmRzID0gb3BlcmFu
ZHMubWFwIHsgfG9wZXJhbmR8CisgICAgICAgIGlmIG9wZXJhbmQua2luZF9vZj8gQXJyYXkKKyAg
ICAgICAgICAgICJ7ICIgKyAob3BlcmFuZC5tYXAgeyB8IG8gfCBvLmFybTY0T3BlcmFuZFN1ZmZp
eGVkKCkgfSkuam9pbigiLCIpICsgIiB9IgorICAgICAgICBlbHNlCisgICAgICAgICAgICBvcGVy
YW5kLmFybTY0T3BlcmFuZFN1ZmZpeGVkKCkKKyAgICAgICAgZW5kCisgICAgfQorICAgIGlmIG9w
ZXJhbmRzLmxlbmd0aCA9PSAyCisgICAgICBvcGVyYW5kcyA9IFtvcGVyYW5kc1sxXSwgb3BlcmFu
ZHNbMF1dCisgICAgZWxzZQorICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzLmxlbmd0aCA9PSAz
CisgICAgICBvcGVyYW5kcyA9IFtvcGVyYW5kc1syXSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFd
XQorICAgIGVuZAorICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHMuam9pbigiLCAi
KX0iCitlbmQKKwogZGVmIGVtaXRBUk02NChvcGNvZGUsIG9wZXJhbmRzLCBraW5kKQogICAgICRh
c20ucHV0cyAiI3tvcGNvZGV9ICN7YXJtNjRGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMsIGtpbmQp
fSIKIGVuZApAQCAtNzg5LDYgKzg1MCw4IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAg
ICBlbWl0QVJNNjRVbmZsaXBwZWQoInN0ciIsIG9wZXJhbmRzLCA6cHRyKQogICAgICAgICB3aGVu
ICJzdG9yZXEiCiAgICAgICAgICAgICBlbWl0QVJNNjRVbmZsaXBwZWQoInN0ciIsIG9wZXJhbmRz
LCA6cXVhZCkKKyAgICAgICAgd2hlbiAic3RvcmV2IgorICAgICAgICAgICAgZW1pdEFSTTY0VW5m
bGlwcGVkKCJzdHIiLCBvcGVyYW5kcywgOnZlY3RvcikKICAgICAgICAgd2hlbiAibG9hZGIiCiAg
ICAgICAgICAgICBlbWl0QVJNNjRBY2Nlc3MoImxkcmIiLCAibGR1cmIiLCBvcGVyYW5kc1sxXSwg
b3BlcmFuZHNbMF0sIDp3b3JkKQogICAgICAgICB3aGVuICJsb2FkYnNpIgpAQCAtODE5LDYgKzg4
MiwxNCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJmbXVs
Iiwgb3BlcmFuZHMsIDpkb3VibGUpCiAgICAgICAgIHdoZW4gInNxcnRkIgogICAgICAgICAgICAg
ZW1pdEFSTTY0KCJmc3FydCIsIG9wZXJhbmRzLCA6ZG91YmxlKQorICAgICAgICB3aGVuICJsb2Fk
diIKKyAgICAgICAgICAgIGVtaXRBUk02NEFjY2VzcygibGRyIiwgImxkdXIiLCBvcGVyYW5kc1sx
XSwgb3BlcmFuZHNbMF0sIDp2ZWN0b3IpCisgICAgICAgIHdoZW4gInNwbGF0X2xhbmVfYnl0ZSIK
KyAgICAgICAgICAgIGVtaXRBUk02NFdpdGhPcGVyYW5kU3VmZml4ZXMoImR1cCIsIG9wZXJhbmRz
WzBdLndpdGhTdWZmaXgoOndvcmQsICIiKSwgb3BlcmFuZHNbMV0ud2l0aFN1ZmZpeCg6dmVjdG9y
X3N1ZmZpeGVkLCAiMTZiIikpCisgICAgICAgIHdoZW4gInN3aXp6bGVfYnl0ZSIKKyAgICAgICAg
ICAgIGVtaXRBUk02NFdpdGhPcGVyYW5kU3VmZml4ZXMoInRibCIsIFsgb3BlcmFuZHNbMV0ud2l0
aFN1ZmZpeCg6dmVjdG9yX3N1ZmZpeGVkLCAiMTZiIikgXSwgb3BlcmFuZHNbMF0ud2l0aFN1ZmZp
eCg6dmVjdG9yX3N1ZmZpeGVkLCAiMTZiIiksIG9wZXJhbmRzWzFdLndpdGhTdWZmaXgoOnZlY3Rv
cl9zdWZmaXhlZCwgIjE2YiIpKQorICAgICAgICB3aGVuICJleHRyYWN0X2xhbmVfYnl0ZSIKKyAg
ICAgICAgICAgIGVtaXRBUk02NFdpdGhPcGVyYW5kU3VmZml4ZXMoInVtb3YiLCBvcGVyYW5kc1sx
XS53aXRoU3VmZml4KDp2ZWN0b3Jfc3VmZml4ZWQsICJCIikud2l0aEluZGV4KG9wZXJhbmRzWzBd
KSwgb3BlcmFuZHNbMl0ud2l0aFN1ZmZpeCg6d29yZCwgIiIpKQogICAgICAgICB3aGVuICJiZGVx
IgogICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJmY21wIiwgb3BlcmFuZHMsIDpkb3VibGUs
ICJiLmVxIikKICAgICAgICAgd2hlbiAiYmRuZXEiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKaW5kZXggNDgxNDNhOTBiMDgwLi43ZTAzN2Vj
ZTliMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3Ry
dWN0aW9ucy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVj
dGlvbnMucmIKQEAgLTcyLDYgKzcyLDExIEBAIE1BQ1JPX0lOU1RSVUNUSU9OUyA9CiAgICAgICJz
dG9yZWIiLAogICAgICAibG9hZGYiLAogICAgICAibG9hZGQiLAorICAgICAibG9hZHYiLAorICAg
ICAiZXh0cmFjdF9sYW5lX2J5dGUiLAorICAgICAic3dpenpsZV9ieXRlIiwKKyAgICAgInJlcGxh
Y2VfbGFuZV9ieXRlIiwKKyAgICAgInNwbGF0X2xhbmVfYnl0ZSIsCiAgICAgICJtb3ZlZCIsCiAg
ICAgICJzdG9yZWYiLAogICAgICAic3RvcmVkIiwKQEAgLTI4OSw2ICsyOTQsNyBAQCBNQUNST19J
TlNUUlVDVElPTlMgPQogICAgICAiY3FsdCIsCiAgICAgICJjcWx0ZXEiLAogICAgICAic3RvcmVx
IiwKKyAgICAgInN0b3JldiIsCiAgICAgICJidHFzIiwKICAgICAgImJ0cXoiLAogICAgICAiYnRx
bnoiLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5y
YiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIKaW5kZXggMGYwNzJl
OWZkMTFlLi4xYTI3M2NhYjMyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3Jpc2MucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
cmlzYy5yYgpAQCAtMjU5LDggKzI1OSwxMiBAQCBkZWYgcmlzY0xvd2VyTWFsZm9ybWVkQWRkcmVz
c2VzRG91YmxlKGxpc3QpCiAgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCiAgICAgICAgICAg
ICB3aGVuICJsb2FkZCIKICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sICJsb2FkZCIsIFtub2RlLm9wZXJhbmRzWzBdLnJpc2NEb3VibGVB
ZGRyZXNzKG5ld0xpc3QpLCBub2RlLm9wZXJhbmRzWzFdXSwgbm9kZS5hbm5vdGF0aW9uKQorICAg
ICAgICAgICAgd2hlbiAibG9hZHYiCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibG9hZHYiLCBbbm9kZS5vcGVyYW5kc1swXS5yaXNj
RG91YmxlQWRkcmVzcyhuZXdMaXN0KSwgbm9kZS5vcGVyYW5kc1sxXV0sIG5vZGUuYW5ub3RhdGlv
bikKICAgICAgICAgICAgIHdoZW4gInN0b3JlZCIKICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJzdG9yZWQiLCBbbm9kZS5vcGVyYW5k
c1swXSwgbm9kZS5vcGVyYW5kc1sxXS5yaXNjRG91YmxlQWRkcmVzcyhuZXdMaXN0KV0sIG5vZGUu
YW5ub3RhdGlvbikKKyAgICAgICAgICAgIHdoZW4gInN0b3JldiIKKyAgICAgICAgICAgICAgICBu
ZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJzdG9yZXYiLCBbbm9k
ZS5vcGVyYW5kc1swXSwgbm9kZS5vcGVyYW5kc1sxXS5yaXNjRG91YmxlQWRkcmVzcyhuZXdMaXN0
KV0sIG5vZGUuYW5ub3RhdGlvbikKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBu
ZXdMaXN0IDw8IG5vZGUKICAgICAgICAgICAgIGVuZApAQCAtNDMyLDcgKzQzNiw3IEBAIGRlZiBy
aXNjTG93ZXJPcGVyYW5kVG9SZWdpc3RlcihpbnNuLCBwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFu
ZEluZGV4LCBzdWZmaXgsIG5lCiAgICAgb3BlcmFuZCA9IGluc24ub3BlcmFuZHNbb3BlcmFuZElu
ZGV4XQogICAgIHJldHVybiBvcGVyYW5kIHVubGVzcyBvcGVyYW5kLmFkZHJlc3M/CiAKLSAgICB0
bXAgPSBUbXAubmV3KGluc24uY29kZU9yaWdpbiwgaWYgc3VmZml4ID09ICJkIiB0aGVuIDpmcHIg
ZWxzZSA6Z3ByIGVuZCkKKyAgICB0bXAgPSBUbXAubmV3KGluc24uY29kZU9yaWdpbiwgaWYgc3Vm
Zml4ID09ICJkIiBvciBzdWZmaXggPT0gInYiIHRoZW4gOmZwciBlbHNlIDpncHIgZW5kKQogICAg
IHByZUxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGluc24uY29kZU9yaWdpbiwgImxvYWQiICsgc3Vm
Zml4LCBbb3BlcmFuZCwgdG1wXSkKICAgICBpZiBuZWVkU3RvcmUKICAgICAgICAgcG9zdExpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KGluc24uY29kZU9yaWdpbiwgInN0b3JlIiArIHN1ZmZpeCwgW3Rt
cCwgb3BlcmFuZF0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS94ODYucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKaW5kZXgg
OTVlNGM5YzJmYzczLi45ZDI4ZGM1OTNlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS94ODYucmIKQEAgLTMzMSw3ICszMzEsNyBAQCBlbmQKIAogY2xhc3MgRlBSZWdpc3RlcklE
CiAgICAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKLSAgICAgICAgcmFpc2UgdW5sZXNzIFs6ZmxvYXQs
IDpkb3VibGVdLmluY2x1ZGU/IGtpbmQKKyAgICAgICAgcmFpc2UgdW5sZXNzIFs6ZmxvYXQsIDpk
b3VibGUsIDp2ZWN0b3JdLmluY2x1ZGU/IGtpbmQKICAgICAgICAgY2FzZSBuYW1lCiAgICAgICAg
IHdoZW4gImZ0MCIsICJmYTAiLCAiZnIiLCAid2ZhMCIKICAgICAgICAgICAgIHJlZ2lzdGVyKCJ4
bW0wIikKQEAgLTEyMzAsMTIgKzEyMzAsMjYgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAg
ICAgICRhc20ucHV0cyAibW92c3MgI3t4ODZPcGVyYW5kcyg6ZmxvYXQsIDpmbG9hdCl9IgogICAg
ICAgICB3aGVuICJsb2FkZCIKICAgICAgICAgICAgICRhc20ucHV0cyAibW92c2QgI3t4ODZPcGVy
YW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgICAgIHdoZW4gImxvYWR2IgorICAgICAgICAg
ICAgJGFzbS5wdXRzICJtb3ZkcXUgI3t4ODZPcGVyYW5kcyg6aW50LCA6ZG91YmxlKX0iCisgICAg
ICAgIHdoZW4gImV4dHJhY3RfbGFuZV9ieXRlIgorICAgICAgICAgICAgJGFzbS5wdXRzICJwZXh0
cmIgI3t4ODZPcGVyYW5kcyg6Ynl0ZSwgOmRvdWJsZSwgOmludCl9IgorICAgICAgICB3aGVuICJz
d2l6emxlX2J5dGUiCisgICAgICAgICAgICAkYXNtLnB1dHMgInBzaHVmYiAje3g4Nk9wZXJhbmRz
KDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICAgICAgd2hlbiAicmVwbGFjZV9sYW5lX2J5dGUiCisg
ICAgICAgICAgICAkYXNtLnB1dHMgInBpbnNyYiAje3g4Nk9wZXJhbmRzKDpieXRlLCA6aW50LCA6
ZG91YmxlKX0iCisgICAgICAgIHdoZW4gInNwbGF0X2xhbmVfYnl0ZSIKKyAgICAgICAgICAgICRh
c20ucHV0cyAicHhvciAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOnZlY3Rvcil9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOnZlY3Rvcil9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJwaW5z
cmIgI3tjb25zdCgwKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6dmVjdG9yKX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgInZwYnJv
YWRjYXN0YiAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmZsb2F0KX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6dmVjdG9yKX0iCiAgICAgICAgIHdoZW4gIm1vdmVkIgogICAgICAgICAgICAg
JGFzbS5wdXRzICJtb3ZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKICAgICAg
ICAgd2hlbiAic3RvcmVmIgogICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZzcyAje3g4Nk9wZXJh
bmRzKDpmbG9hdCwgOmZsb2F0KX0iCiAgICAgICAgIHdoZW4gInN0b3JlZCIKICAgICAgICAgICAg
ICRhc20ucHV0cyAibW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAg
ICAgIHdoZW4gInN0b3JldiIKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92dXBzICN7eDg2T3Bl
cmFuZHMoOnZlY3RvciwgOnZlY3Rvcil9IgogICAgICAgICB3aGVuICJhZGRmIgogICAgICAgICAg
ICAgaGFuZGxlWDg2QWRkRlAoOmZsb2F0KQogICAgICAgICB3aGVuICJhZGRkIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYmY5ZDhhMzgzZjczLi5m
ZTk1NTI1ZmY4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xp
c3QuaApAQCAtNTQ5LDYgKzU0OSw3IEBAIGJvb2wgY2FuVXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5
KCk7CiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVRocmVhZGluZywgdHJ1ZSwgTm9ybWFsLCAi
QWxsb3cgaW5zdHJ1Y3Rpb25zIGZyb20gdGhlIHdhc20gdGhyZWFkaW5nIHNwZWMuIikgXAogICAg
IHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcywgZmFsc2UsIE5v
cm1hbCwgIkFsbG93IGZ1bmN0aW9uIHR5cGVzIGZyb20gdGhlIHdhc20gdHlwZWQgZnVuY3Rpb24g
cmVmZXJlbmNlcyBzcGVjLiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5RXhjZXB0aW9u
cywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdGhlIG5ldyBzZWN0aW9uIGFuZCBpbnN0cnVjdGlvbnMg
ZnJvbSB0aGUgd2FzbSBleGNlcHRpb24gaGFuZGxpbmcgc3BlYy4iKSBcCisgICAgdihCb29sLCB1
c2VXZWJBc3NlbWJseVNJTUQsIHRydWUsIE5vcm1hbCwgIkFsbG93IHRoZSBuZXcgc2ltZCBpbnN0
cnVjdGlvbnMgYW5kIHR5cGVzIGZyb20gdGhlIHdhc20gc2ltZCBzcGVjLiIpIFwKIAogCiBlbnVt
IE9wdGlvbkVxdWl2YWxlbmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDViYzQyNjA5MmI5MS4uYTAwNDNiYzE4NTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5j
cHAKQEAgLTMyNyw4ICszMjcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaW5hbGl6ZUVudHJ5cG9p
bnRzKCk7CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRBcmd1bWVu
dHMoY29uc3QgU2lnbmF0dXJlJik7Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkTG9jYWwoVHlwZSwgdWludDMyX3QpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIGFkZExvY2FsKFR5cGUsIHVpbnQzMl90LCB1aW50MzJfdCk7CiAgICAgRXhwcmVz
c2lvblR5cGUgYWRkQ29uc3RhbnQoVHlwZSwgdWludDY0X3QpOworICAgIEV4cHJlc3Npb25UeXBl
IGFkZENvbnN0YW50KHYxMjhfdCk7CiAgICAgRXhwcmVzc2lvblR5cGUgYWRkQ29uc3RhbnQoQmFz
aWNCbG9jayosIFR5cGUsIHVpbnQ2NF90KTsKICAgICBFeHByZXNzaW9uVHlwZSBhZGRCb3R0b20o
QmFzaWNCbG9jayosIFR5cGUpOwogCkBAIC0zNDcsOCArMzQ4LDggQEAgcHVibGljOgogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlQ29weSh1bnNpZ25lZCwgdW5z
aWduZWQsIEV4cHJlc3Npb25UeXBlIGRzdE9mZnNldCwgRXhwcmVzc2lvblR5cGUgc3JjT2Zmc2V0
LCBFeHByZXNzaW9uVHlwZSBsZW5ndGgpOwogCiAgICAgLy8gTG9jYWxzCi0gICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpOwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHNl
dExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSk7CisgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIFdhc206
OlR5cGUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIHNldExvY2FsKHVpbnQzMl90IGluZGV4LCBXYXNtOjpUeXBlLCBFeHByZXNz
aW9uVHlwZSB2YWx1ZSk7CiAKICAgICAvLyBHbG9iYWxzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gZ2V0R2xvYmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KTsKQEAgLTM5OCw3ICszOTksNyBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2F0Y2hBbGxUb1VucmVhY2hhYmxlKENvbnRyb2xUeXBlJik7
CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkRGVsZWdhdGUoQ29udHJv
bFR5cGUmLCBDb250cm9sVHlwZSYpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZERlbGVnYXRlVG9VbnJlYWNoYWJsZShDb250cm9sVHlwZSYsIENvbnRyb2xUeXBlJik7
Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGhyb3codW5zaWduZWQg
ZXhjZXB0aW9uSW5kZXgsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFN0YWNrJik7Cisg
ICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGhyb3codW5zaWduZWQgZXhj
ZXB0aW9uSW5kZXgsIFN0YWNrJiBhcmdzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRSZXRocm93KHVuc2lnbmVkLCBDb250cm9sVHlwZSYpOwogCiAgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0dXJuKGNvbnN0IENvbnRyb2xEYXRhJiwg
Y29uc3QgU3RhY2smIHJldHVyblZhbHVlcyk7CkBAIC00MjEsMTEgKzQyMiwxNSBAQCBwdWJsaWM6
CiAgICAgUGFydGlhbFJlc3VsdCBhZGRJbnRlZ2VyU3ViKEIzOjpBaXI6Ok9wY29kZSwgRXhwcmVz
c2lvblR5cGUgbGhzLCBFeHByZXNzaW9uVHlwZSByaHMsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQp
OwogICAgIFBhcnRpYWxSZXN1bHQgYWRkRmxvYXRpbmdQb2ludEFicyhCMzo6QWlyOjpPcGNvZGUs
IEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKICAgICBQYXJ0
aWFsUmVzdWx0IGFkZEZsb2F0aW5nUG9pbnRCaW5PcChUeXBlLCBCMzo6QWlyOjpPcGNvZGUsIEV4
cHJlc3Npb25UeXBlIGxocywgRXhwcmVzc2lvblR5cGUgcmhzLCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KTsKKyAgICAKKyAgICAvLyBTaW1kCisgICAgdGVtcGxhdGU8RXh0U2ltZE9wVHlwZSwgc2l6
ZV90IG51bUltbWVkaWF0ZXMsIHNpemVfdCBudW1Bcmd1bWVudHM+CisgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU2ltZE9wKHN0ZDo6YXJyYXk8dWludDhfdCwgbnVtSW1t
ZWRpYXRlcz4gaW1tZWRpYXRlcywgc3RkOjphcnJheTxFeHByZXNzaW9uVHlwZSwgbnVtQXJndW1l
bnRzPiBhcmd1bWVudHMsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgdm9pZCBkdW1w
KGNvbnN0IENvbnRyb2xTdGFjayYsIGNvbnN0IFN0YWNrKiBleHByZXNzaW9uU3RhY2spOwogICAg
IHZvaWQgc2V0UGFyc2VyKEZ1bmN0aW9uUGFyc2VyPEFpcklSR2VuZXJhdG9yPiogcGFyc2VyKSB7
IG1fcGFyc2VyID0gcGFyc2VyOyB9OwogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZ0xvY2Fscygp
IHsgfQotICAgIHZvaWQgZGlkUG9wVmFsdWVGcm9tU3RhY2soKSB7IH0KKyAgICB2b2lkIGRpZFBv
cFZhbHVlRnJvbVN0YWNrKFdhc206OlR5cGUpIHsgfQogCiAgICAgVG1wIGVtaXRDYXRjaEltcGwo
Q2F0Y2hLaW5kLCBDb250cm9sVHlwZSYsIHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4ID0gMCk7CiAg
ICAgdGVtcGxhdGUgPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KQEAgLTUxMiw2ICs1MTcsNyBAQCBw
cml2YXRlOgogICAgIFR5cGVkVG1wIGdSZWYoVHlwZSB0eXBlKSB7IHJldHVybiB7IG5ld1RtcChC
Mzo6R1ApLCB0eXBlIH07IH0KICAgICBUeXBlZFRtcCBmMzIoKSB7IHJldHVybiB7IG5ld1RtcChC
Mzo6RlApLCBUeXBlczo6RjMyIH07IH0KICAgICBUeXBlZFRtcCBmNjQoKSB7IHJldHVybiB7IG5l
d1RtcChCMzo6RlApLCBUeXBlczo6RjY0IH07IH0KKyAgICBUeXBlZFRtcCB2MTI4KCkgeyByZXR1
cm4geyBuZXdUbXAoQjM6OkZQKSwgVHlwZXM6OlYxMjggfTsgfQogCiAgICAgVHlwZWRUbXAgdG1w
Rm9yVHlwZShUeXBlIHR5cGUpCiAgICAgewpAQCAtNTMxLDYgKzUzNyw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICByZXR1cm4gZjMyKCk7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkY2NDoKICAg
ICAgICAgICAgIHJldHVybiBmNjQoKTsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VjEyODoKKyAg
ICAgICAgICAgIHJldHVybiB2MTI4KCk7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICBkZWZhdWx0OgpAQCAtNjI3LDcgKzYzNSw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyB2YWxpZGF0aW9uLiBXZSBzaG91bGQgYWJzdHJj
YXQgUGF0Y2ggZW5vdWdoIHNvIFZhbHVlUmVwJ3MgZG9uJ3QgbmVlZCB0byBiZQogICAgICAgICAg
ICAgLy8gYmFja2VkIGJ5IFZhbHVlcy4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQwNDAKLSAgICAgICAgICAgIEIzOjpWYWx1ZSogZHVt
bXlWYWx1ZSA9IG1fcHJvYy5hZGRDb25zdGFudChCMzo6T3JpZ2luKCksIHRtcC50bXAuaXNHUCgp
ID8gQjM6OkludDY0IDogQjM6OkRvdWJsZSwgMCk7CisgICAgICAgICAgICBCMzo6VmFsdWUqIGR1
bW15VmFsdWUgPSBtX3Byb2MuYWRkQ29uc3RhbnQoQjM6Ok9yaWdpbigpLCB0bXAudG1wLmlzR1Ao
KSA/IEIzOjpJbnQ2NCA6IEIzOjpWMTI4LCAwKTsKICAgICAgICAgICAgIHBhdGNoLT5hcHBlbmQo
ZHVtbXlWYWx1ZSwgdG1wLnJlcCk7CiAgICAgICAgICAgICBzd2l0Y2ggKHRtcC5yZXAua2luZCgp
KSB7CiAgICAgICAgICAgICAvLyBCMzo6VmFsdWUgcHJvcGFnYXRlcyAoTGF0ZSlDb2xkQW55IGlu
Zm9ybWF0aW9uIGFuZCBsYXRlciBBaXIgd2lsbCBhbGxvY2F0ZSBhcHByb3ByaWF0ZSBzdGFjay4K
QEAgLTYzOCwxMiArNjQ2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIEIzOjpWYWx1ZVJlcDo6UmVnaXN0ZXI6CiAgICAgICAgICAgICAgICAg
cGF0Y2gtPmVhcmx5Q2xvYmJlcmVkKCkuY2xlYXIodG1wLnJlcC5yZWcoKSk7Ci0gICAgICAgICAg
ICAgICAgYXBwZW5kKGJhc2ljQmxvY2ssIHRtcC50bXAuaXNHUCgpID8gTW92ZSA6IE1vdmVEb3Vi
bGUsIHRtcC50bXAsIHRtcC5yZXAucmVnKCkpOworICAgICAgICAgICAgICAgIGFwcGVuZChiYXNp
Y0Jsb2NrLCB0bXAudG1wLmlzR1AoKSA/IE1vdmUgOiBNb3ZlVmVjdG9yLCB0bXAudG1wLCB0bXAu
cmVwLnJlZygpKTsKICAgICAgICAgICAgICAgICBpbnN0LmFyZ3MuYXBwZW5kKFRtcCh0bXAucmVw
LnJlZygpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEIzOjpW
YWx1ZVJlcDo6U3RhY2tBcmd1bWVudDogewogICAgICAgICAgICAgICAgIEFyZyBhcmcgPSBBcmc6
OmNhbGxBcmcodG1wLnJlcC5vZmZzZXRGcm9tU1AoKSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5k
KGJhc2ljQmxvY2ssIHRtcC50bXAuaXNHUCgpID8gTW92ZSA6IE1vdmVEb3VibGUsIHRtcC50bXAs
IGFyZyk7CisgICAgICAgICAgICAgICAgYXBwZW5kKGJhc2ljQmxvY2ssIHRtcC50bXAuaXNHUCgp
ID8gTW92ZSA6IE1vdmVWZWN0b3IsIHRtcC50bXAsIGFyZyk7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKGFyZy5jYW5SZXByZXNlbnQocGF0Y2gtPmNoaWxkKGkpLT50eXBlKCkpKTsKICAgICAgICAg
ICAgICAgICBpbnN0LmFyZ3MuYXBwZW5kKGFyZyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC03NjYsNiArNzc0LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBNb3ZlRmxvYXQ7
CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkY2NDoKICAgICAgICAgICAgIHJldHVybiBNb3ZlRG91
YmxlOworICAgICAgICBjYXNlIFR5cGVLaW5kOjpWMTI4OgorICAgICAgICAgICAgcmV0dXJuIE1v
dmVWZWN0b3I7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICB9CkBAIC0xMDY2LDYgKzEwNzYsOSBAQCBBaXJJUkdlbmVy
YXRvcjo6QWlySVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIEIzOjpQ
cm9jZWR1cmUmIHBybwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6CiAgICAgICAgICAgICBh
cHBlbmQoTW92ZURvdWJsZSwgYXJnLCBtX2xvY2Fsc1tpXSk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBUeXBlS2luZDo6VjEyODoKKyAgICAgICAgICAgIGFwcGVuZChNb3ZlVmVj
dG9yLCBhcmcsIG1fbG9jYWxzW2ldKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
fQpAQCAtMTIxMiw3ICsxMjI1LDcgQEAgdm9pZCBBaXJJUkdlbmVyYXRvcjo6Zm9yRWFjaExpdmVW
YWx1ZShGdW5jdGlvbiBmdW5jdGlvbikKICAgICB9CiB9CiAKLWF1dG8gQWlySVJHZW5lcmF0b3I6
OmFkZExvY2FsKFR5cGUgdHlwZSwgdWludDMyX3QgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1
dG8gQWlySVJHZW5lcmF0b3I6OmFkZExvY2FsKFR5cGUgdHlwZSwgdWludDMyX3QsIHVpbnQzMl90
IGNvdW50KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgc2l6ZV90IG5ld1NpemUgPSBtX2xvY2Fs
cy5zaXplKCkgKyBjb3VudDsKICAgICBBU1NFUlQoIShDaGVja2VkVWludDMyKGNvdW50KSArIG1f
bG9jYWxzLnNpemUoKSkuaGFzT3ZlcmZsb3dlZCgpKTsKQEAgLTEyNDIsNiArMTI1NSwxNCBAQCBh
dXRvIEFpcklSR2VuZXJhdG9yOjphZGRMb2NhbChUeXBlIHR5cGUsIHVpbnQzMl90IGNvdW50KSAt
PiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgICAgICBhcHBlbmQodHlwZS5pc0YzMigpID8gTW92ZTMy
VG9GbG9hdCA6IE1vdmU2NFRvRG91YmxlLCB0ZW1wLCBsb2NhbCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGVLaW5kOjpWMTI4OiB7CisgICAgICAgICAg
ICBhdXRvIGxhbmVJbmZvID0gQXJnOjpzaW1kSW5mbyhTaW1kTGFuZUludGVycHJldGF0aW9uOjpp
NjR4MiwgU2ltZFNpZ25FeHRlbmRNb2RlOjpOQSk7CisgICAgICAgICAgICBhdXRvIHRlbXAgPSBn
NjQoKTsKKyAgICAgICAgICAgIGFwcGVuZChYb3I2NCwgdGVtcCwgdGVtcCk7CisgICAgICAgICAg
ICBhcHBlbmQoUmVwbGFjZUxhbmUsIGxhbmVJbmZvLCBBcmc6OmltbSgwKSwgdGVtcCwgbG9jYWwp
OworICAgICAgICAgICAgYXBwZW5kKFJlcGxhY2VMYW5lLCBsYW5lSW5mbywgQXJnOjppbW0oMSks
IHRlbXAsIGxvY2FsKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICB9CkBAIC0xMjU0LDYgKzEyNzUsMTggQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ29uc3Rh
bnQoVHlwZSB0eXBlLCB1aW50NjRfdCB2YWx1ZSkgLT4gRXhwcmVzc2lvblR5cGUKICAgICByZXR1
cm4gYWRkQ29uc3RhbnQobV9jdXJyZW50QmxvY2ssIHR5cGUsIHZhbHVlKTsKIH0KIAorYXV0byBB
aXJJUkdlbmVyYXRvcjo6YWRkQ29uc3RhbnQodjEyOF90IHZhbHVlKSAtPiBFeHByZXNzaW9uVHlw
ZQoreworICAgIGF1dG8gbGFuZUluZm8gPSBBcmc6OnNpbWRJbmZvKFNpbWRMYW5lSW50ZXJwcmV0
YXRpb246Omk2NHgyLCBTaW1kU2lnbkV4dGVuZE1vZGU6Ok5BKTsKKyAgICBhdXRvIGEgPSBnNjQo
KTsKKyAgICBhdXRvIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZXM6OlYxMjgpOworICAgIGFwcGVu
ZChNb3ZlLCBBcmc6OmJpZ0ltbSh2YWx1ZS51NjR4MlswXSksIGEpOworICAgIGFwcGVuZChSZXBs
YWNlTGFuZSwgbGFuZUluZm8sIEFyZzo6aW1tKDApLCBhLCByZXN1bHQpOworICAgIGFwcGVuZChN
b3ZlLCBBcmc6OmJpZ0ltbSh2YWx1ZS51NjR4MlsxXSksIGEpOworICAgIGFwcGVuZChSZXBsYWNl
TGFuZSwgbGFuZUluZm8sIEFyZzo6aW1tKDEpLCBhLCByZXN1bHQpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENvbnN0YW50KEJhc2ljQmxvY2sqIGJs
b2NrLCBUeXBlIHR5cGUsIHVpbnQ2NF90IHZhbHVlKSAtPiBFeHByZXNzaW9uVHlwZQogewogICAg
IGF1dG8gcmVzdWx0ID0gdG1wRm9yVHlwZSh0eXBlKTsKQEAgLTE0NTksNyArMTQ5Miw3IEBAIGF1
dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlQ29weSh1bnNpZ25lZCBkc3RUYWJsZUluZGV4LCB1
bnNpZ25lZCBzcmNUYWJsZUluZGV4CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBBaXJJUkdl
bmVyYXRvcjo6Z2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQp
IC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmdldExvY2FsKHVpbnQzMl90
IGluZGV4LCBXYXNtOjpUeXBlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVz
dWx0CiB7CiAgICAgQVNTRVJUKG1fbG9jYWxzW2luZGV4XS50bXAoKSk7CiAgICAgcmVzdWx0ID0g
dG1wRm9yVHlwZShtX2xvY2Fsc1tpbmRleF0udHlwZSgpKTsKQEAgLTE1OTEsNyArMTYyNCw3IEBA
IGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZERhdGFEcm9wKHVuc2lnbmVkIGRhdGFTZWdtZW50SW5k
ZXgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIEFpcklSR2Vu
ZXJhdG9yOjpzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+
IFBhcnRpYWxSZXN1bHQKK2F1dG8gQWlySVJHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGlu
ZGV4LCBXYXNtOjpUeXBlLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAog
ewogICAgIEFTU0VSVChtX2xvY2Fsc1tpbmRleF0udG1wKCkpOwogICAgIGFwcGVuZChtb3ZlT3BG
b3JWYWx1ZVR5cGUobV9sb2NhbHNbaW5kZXhdLnR5cGUoKSksIHZhbHVlLCBtX2xvY2Fsc1tpbmRl
eF0udG1wKCkpOwpAQCAtMjE0NCw2ICsyMTc3LDkgQEAgdm9pZCBBaXJJUkdlbmVyYXRvcjo6c2Fu
aXRpemVBdG9taWNSZXN1bHQoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHVlVHlwZSwgVG0K
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgc291cmNl
LCBkZXN0KTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBCMzo6V2lkdGgxMjg6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTYxLDYgKzIx
OTcsOSBAQCB2b2lkIEFpcklSR2VuZXJhdG9yOjpzYW5pdGl6ZUF0b21pY1Jlc3VsdChFeHRBdG9t
aWNPcFR5cGUgb3AsIFR5cGUgdmFsdWVUeXBlLCBUbQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBzb3VyY2UsIGRlc3QpOwogICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBjYXNlIEIzOjpXaWR0aDEyODoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CkBAIC0yMjM5LDYgKzIyNzgsOSBAQCBUeXBlZFRtcCBB
aXJJUkdlbmVyYXRvcjo6YXBwZW5kR2VuZXJhbEF0b21pYyhFeHRBdG9taWNPcFR5cGUgb3AsIEIz
OjpBaXI6Ok9wY29kZQogICAgICAgICBjYXNlIEIzOjpXaWR0aDY0OgogICAgICAgICAgICAgcHJl
cGFyZU9wY29kZSA9IE1vdmU7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCMzo6
V2lkdGgxMjg6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBSRUxFQVNF
X0FTU0VSVChpc0FSTTY0KCkpOwpAQCAtMzMyMyw3ICszMzY1LDcgQEAgYXV0byBBaXJJUkdlbmVy
YXRvcjo6YWRkRGVsZWdhdGVUb1VucmVhY2hhYmxlKENvbnRyb2xUeXBlJiB0YXJnZXQsIENvbnRy
b2xUeXBlJgogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRo
cm93KHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdz
LCBTdGFjayYpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRocm93
KHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBTdGFjayYgYXJncykgLT4gUGFydGlhbFJlc3VsdAog
ewogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNoID0gYWRkUGF0Y2hwb2ludChCMzo6Vm9p
ZCk7CiAgICAgcGF0Y2gtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOwpAQCAtMzMzMyw3ICszMzc1
LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5k
ZXgsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGEKICAgICBwYXRjaEFyZ3MuYXBwZW5kKENvbnN0
cmFpbmVkVG1wKGluc3RhbmNlVmFsdWUoKSwgQjM6OlZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSkpOwogICAgIHBhdGNoQXJncy5hcHBlbmQoQ29uc3RyYWluZWRUbXAoVG1wKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKSwgQjM6OlZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsg
KytpKQotICAgICAgICBwYXRjaEFyZ3MuYXBwZW5kKENvbnN0cmFpbmVkVG1wKGFyZ3NbaV0sIEIz
OjpWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudChpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpKTsK
KyAgICAgICAgcGF0Y2hBcmdzLmFwcGVuZChDb25zdHJhaW5lZFRtcChhcmdzW2ldLnZhbHVlKCks
IEIzOjpWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudChpICogYXJnc1tpXS50eXBlKCkuc2l6ZSgpKSkp
OwogCiAgICAgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZSBoYW5kbGUgPSBwcmVwYXJlUGF0Y2hw
b2ludEZvckV4Y2VwdGlvbnMocGF0Y2gsIHBhdGNoQXJncyk7CiAKQEAgLTU1MTksNiArNTU2MSwy
MyBAQCBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlIEFpcklSR2VuZXJhdG9yOjpwcmVwYXJlUGF0
Y2hwb2ludEZvckV4Y2VwdGlvbnMoQjM6OlBhdAogICAgIHJldHVybiBQYXRjaHBvaW50RXhjZXB0
aW9uSGFuZGxlIHsgbV9jYWxsU2l0ZUluZGV4LCBudW1MaXZlVmFsdWVzIH07CiB9CiAKKyNkZWZp
bmUgQ1JFQVRFX1NJTURfQ0FTRShuYW1lLCBpZCwgYjNvcCwgaW5jLCB3YXNtT3AsIHJldHVyblR5
cGUsIG51bUltbWVkaWF0ZXMsIGltbWVkaWF0ZVNpemVzLCBudW1Bcmd1bWVudHMsIGFyZ3VtZW50
VHlwZXMsIGxhbmVJbnRlcnByZXRhdGlvbiwgc2lnbkV4dGVuZE1vZGUpIFwKK3RlbXBsYXRlPD4g
XAorYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkU2ltZE9wPEV4dFNpbWRPcFR5cGU6Om5hbWUsIG51
bUltbWVkaWF0ZXMsIG51bUFyZ3VtZW50cz4oc3RkOjphcnJheTx1aW50OF90LCBudW1JbW1lZGlh
dGVzPiBpbW1lZGlhdGVzLCBzdGQ6OmFycmF5PEV4cHJlc3Npb25UeXBlLCBudW1Bcmd1bWVudHM+
IGFyZ3VtZW50cywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdCBcCit7
IFwKKyAgICByZXN1bHQgPSB0bXBGb3JUeXBlKHJldHVyblR5cGUpOyBcCisgICAgc3RkOjphcnJh
eTxBcmcsIG51bUltbWVkaWF0ZXM+IHRydXN0ZWRJbW1zOyBcCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBudW1JbW1lZGlhdGVzOyArK2kpIHsgXAorICAgICAgICB0cnVzdGVkSW1tc1tpXSA9
IEFyZzo6aW1tKGltbWVkaWF0ZXNbaV0pOyBcCisgICAgfSBcCisgICAgYXV0byBhcmdzVG9BcHBs
eSA9IHN0ZDo6dHVwbGVfY2F0KHN0ZDo6Zm9yd2FyZF9hc190dXBsZShiM29wLCBBcmc6OnNpbWRJ
bmZvKGxhbmVJbnRlcnByZXRhdGlvbiwgc2lnbkV4dGVuZE1vZGUpKSwgdHJ1c3RlZEltbXMsIGFy
Z3VtZW50cywgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKHJlc3VsdCkpOyBcCisgICAgc3RkOjphcHBs
eShbPV0oYXV0byAmJi4uLiBhcmdzKSB7IGFwcGVuZChhcmdzLi4uKTsgfSwgYXJnc1RvQXBwbHkp
OyBcCisgICAgcmV0dXJuIHsgfTsgXAorfQorCitGT1JfRUFDSF9XQVNNX0VYVF9TSU1EX09QKENS
RUFURV9TSU1EX0NBU0UpCisjdW5kZWYgQ1JFQVRFX1NJTURfQ0FTRQorCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6V2FzbQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZX0IzSklUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4
IDNkYThjNzliZGUzOS4uMWYyNzRiNzI3Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0zMiwxMSArMzIsMTMgQEAKICNpbmNs
dWRlICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oIgogI2luY2x1ZGUgIkIzQmFz
aWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKKyNpbmNsdWRlICJC
M0NvbnN0MTI4VmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKICNpbmNsdWRl
ICJCM0VzdGltYXRlU3RhdGljRXhlY3V0aW9uQ291bnRzLmgiCiAjaW5jbHVkZSAiQjNGaXhTU0Eu
aCIKICNpbmNsdWRlICJCM0dlbmVyYXRlLmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXQuaCIK
KyNpbmNsdWRlICJCM1NpbWRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zLmgiCiAjaW5jbHVkZSAiQjNTd2l0Y2hWYWx1ZS5oIgogI2luY2x1ZGUgIkIzVXBzaWxv
blZhbHVlLmgiCkBAIC02Myw2ICs2NSw3IEBACiAjaW5jbHVkZSAiV2FzbU9TUkVudHJ5RGF0YS5o
IgogI2luY2x1ZGUgIldhc21PcGNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJXYXNtT3BlcmF0aW9u
cy5oIgorI2luY2x1ZGUgIldhc21PcHMuaCIKICNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5l
cy5oIgogI2luY2x1ZGUgIldhc21UaHVua3MuaCIKICNpbmNsdWRlIDxsaW1pdHM+CkBAIC0zMDYs
OCArMzA5LDkgQEAgcHVibGljOgogICAgIEIzSVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3Jt
YXRpb24mLCBQcm9jZWR1cmUmLCBJbnRlcm5hbEZ1bmN0aW9uKiwgVmVjdG9yPFVubGlua2VkV2Fz
bVRvV2FzbUNhbGw+JiwgdW5zaWduZWQmIG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUsIE1lbW9y
eU1vZGUsIENvbXBpbGF0aW9uTW9kZSwgdW5zaWduZWQgZnVuY3Rpb25JbmRleCwgdW5zaWduZWQg
bG9vcEluZGV4Rm9yT1NSRW50cnksIFRpZXJVcENvdW50Kik7CiAKICAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJik7Ci0gICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkTG9jYWwoVHlwZSwgdWludDMyX3Qp
OworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZExvY2FsKFR5cGUsIHVp
bnQzMl90LCB1aW50MzJfdCk7CiAgICAgRXhwcmVzc2lvblR5cGUgYWRkQ29uc3RhbnQoVHlwZSwg
dWludDY0X3QpOworICAgIEV4cHJlc3Npb25UeXBlIGFkZENvbnN0YW50KHYxMjhfdCk7CiAKICAg
ICAvLyBSZWZlcmVuY2VzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRk
UmVmSXNOdWxsKEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
QEAgLTMyNCw4ICszMjgsOCBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkVGFibGVDb3B5KHVuc2lnbmVkLCB1bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUg
ZHN0T2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBzcmNPZmZzZXQsIEV4cHJlc3Npb25UeXBlIGxlbmd0
aCk7CiAKICAgICAvLyBMb2NhbHMKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBnZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gc2V0TG9jYWwodWludDMyX3QgaW5kZXgs
IEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBnZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgV2FzbTo6VHlwZSwgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gc2V0TG9jYWwo
dWludDMyX3QgaW5kZXgsIFdhc206OlR5cGUsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKIAogICAg
IC8vIEdsb2JhbHMKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRHbG9i
YWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwpAQCAtMzc3LDcgKzM4
MSw3IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRD
YXRjaEFsbFRvVW5yZWFjaGFibGUoQ29udHJvbFR5cGUmKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBhZGREZWxlZ2F0ZShDb250cm9sVHlwZSYsIENvbnRyb2xUeXBlJik7
CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkRGVsZWdhdGVUb1VucmVh
Y2hhYmxlKENvbnRyb2xUeXBlJiwgQ29udHJvbFR5cGUmKTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBhZGRUaHJvdyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgVmVjdG9y
PEV4cHJlc3Npb25UeXBlPiYgYXJncywgU3RhY2smKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRUaHJvdyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgU3RhY2smIGFy
Z3MpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJldGhyb3codW5z
aWduZWQsIENvbnRyb2xUeXBlJik7CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZGRSZXR1cm4oY29uc3QgQ29udHJvbERhdGEmLCBjb25zdCBTdGFjayYgcmV0dXJuVmFs
dWVzKTsKQEAgLTM5NSwxMSArMzk5LDE1IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBhZGRVbnJlYWNoYWJsZSgpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIGVtaXRJbmRpcmVjdENhbGwoVmFsdWUqIGNhbGxlZUluc3RhbmNlLCBW
YWx1ZSogY2FsbGVlQ29kZSwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBl
PiYgYXJncywgUmVzdWx0TGlzdCYpOwogICAgIEIzOjpWYWx1ZSogY3JlYXRlQ2FsbFBhdGNocG9p
bnQoQmFzaWNCbG9jayosIE9yaWdpbiwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Np
b25UeXBlPiYgYXJncywgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoUGF0Y2hwb2ludFZhbHVlKiwg
Qm94PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+KT4mIHBhdGNocG9pbnRGdW5jdG9yKTsKKyAg
ICAKKyAgICAvLyBTaW1kCisgICAgdGVtcGxhdGU8RXh0U2ltZE9wVHlwZSwgc2l6ZV90IG51bUlt
bWVkaWF0ZXMsIHNpemVfdCBudW1Bcmd1bWVudHM+CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkU2ltZE9wKHN0ZDo6YXJyYXk8dWludDhfdCwgbnVtSW1tZWRpYXRlcz4g
aW1tZWRpYXRlcywgc3RkOjphcnJheTxFeHByZXNzaW9uVHlwZSwgbnVtQXJndW1lbnRzPiBhcmd1
bWVudHMsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgdm9pZCBkdW1wKGNvbnN0IENv
bnRyb2xTdGFjayYsIGNvbnN0IFN0YWNrKiBleHByZXNzaW9uU3RhY2spOwogICAgIHZvaWQgc2V0
UGFyc2VyKEZ1bmN0aW9uUGFyc2VyPEIzSVJHZW5lcmF0b3I+KiBwYXJzZXIpIHsgbV9wYXJzZXIg
PSBwYXJzZXI7IH07CiAgICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nTG9jYWxzKCkgeyB9Ci0gICAg
dm9pZCBkaWRQb3BWYWx1ZUZyb21TdGFjaygpIHsgLS1tX3N0YWNrU2l6ZTsgfQorICAgIHZvaWQg
ZGlkUG9wVmFsdWVGcm9tU3RhY2soV2FzbTo6VHlwZSkgeyAtLW1fc3RhY2tTaXplOyB9CiAKICAg
ICBWYWx1ZSogY29uc3RhbnQoQjM6OlR5cGUsIHVpbnQ2NF90IGJpdHMsIHN0ZDo6b3B0aW9uYWw8
T3JpZ2luPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgVmFsdWUqIGZyYW1lUG9pbnRlcigpOwpAQCAt
ODg0LDcgKzg5Miw3IEBAIEIzOjpUeXBlIEIzSVJHZW5lcmF0b3I6OnRvQjNSZXN1bHRUeXBlKEJs
b2NrU2lnbmF0dXJlIHJldHVyblR5cGUpCiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CiB9CiAKLWF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1aW50MzJf
dCBjb3VudCkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBCM0lSR2VuZXJhdG9yOjphZGRMb2NhbChU
eXBlIHR5cGUsIHVpbnQzMl90LCB1aW50MzJfdCBjb3VudCkgLT4gUGFydGlhbFJlc3VsdAogewog
ICAgIHNpemVfdCBuZXdTaXplID0gbV9sb2NhbHMuc2l6ZSgpICsgY291bnQ7CiAgICAgQVNTRVJU
KCEoQ2hlY2tlZFVpbnQzMihjb3VudCkgKyBtX2xvY2Fscy5zaXplKCkpLmhhc092ZXJmbG93ZWQo
KSk7CkBAIC0xMDc5LDcgKzEwODcsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlQ29w
eSh1bnNpZ25lZCBkc3RUYWJsZUluZGV4LCB1bnNpZ25lZCBzcmNUYWJsZUluZGV4LAogICAgIHJl
dHVybiB7IH07CiB9CiAKLWF1dG8gQjNJUkdlbmVyYXRvcjo6Z2V0TG9jYWwodWludDMyX3QgaW5k
ZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQjNJUkdl
bmVyYXRvcjo6Z2V0TG9jYWwodWludDMyX3QgaW5kZXgsIFdhc206OlR5cGUsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBBU1NFUlQobV9sb2NhbHNbaW5k
ZXhdKTsKICAgICByZXN1bHQgPSBwdXNoKG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFyaWFi
bGVWYWx1ZT4obV9wcm9jLCBCMzo6R2V0LCBvcmlnaW4oKSwgbV9sb2NhbHNbaW5kZXhdKSk7CkBA
IC0xMjg3LDcgKzEyOTUsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZERhdGFEcm9wKHVuc2ln
bmVkIGRhdGFTZWdtZW50SW5kZXgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICByZXR1cm4geyB9Owog
fQogCi1hdXRvIEIzSVJHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNz
aW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBCM0lSR2VuZXJhdG9yOjpzZXRM
b2NhbCh1aW50MzJfdCBpbmRleCwgV2FzbTo6VHlwZSwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+
IFBhcnRpYWxSZXN1bHQKIHsKICAgICBBU1NFUlQobV9sb2NhbHNbaW5kZXhdKTsKICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgQjM6OlNldCwgb3Jp
Z2luKCksIG1fbG9jYWxzW2luZGV4XSwgZ2V0KHZhbHVlKSk7CkBAIC0xNzUxLDYgKzE3NTksOSBA
QCBpbmxpbmUgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmVtaXRBdG9taWNMb2FkT3AoRXh0QXRvbWlj
T3BUeXBlIG9wLCBUeXBlIHZhbHVlVHlwZQogICAgIGNhc2UgQjM6OldpZHRoNjQ6CiAgICAgICAg
IHZhbHVlID0gY29uc3RhbnQoSW50NjQsIDApOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEIz
OjpXaWR0aDEyODoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIHNhbml0aXplQXRvbWljUmVzdWx0KG9wLCB2
YWx1ZVR5cGUsIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KG1fcHJvYywg
bWVtb3J5S2luZChBdG9taWNYY2hnQWRkKSwgb3JpZ2luKCksIGFjY2Vzc1dpZHRoKG9wKSwgdmFs
dWUsIHBvaW50ZXIpKTsKQEAgLTE5MzQsNiArMTk0NSw3IEBAIFZhbHVlKiBCM0lSR2VuZXJhdG9y
OjplbWl0QXRvbWljQ29tcGFyZUV4Y2hhbmdlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1
ZVR5CiAgICAgICAgICAgICBtYXhpbXVtID0gY29uc3RhbnQoSW50NjQsIFVJTlQzMl9NQVgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQjM6OldpZHRoNjQ6CisgICAgICAgIGNh
c2UgQjM6OldpZHRoMTI4OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTE5NDgsNiArMTk2MCw3IEBAIFZhbHVl
KiBCM0lSR2VuZXJhdG9yOjplbWl0QXRvbWljQ29tcGFyZUV4Y2hhbmdlKEV4dEF0b21pY09wVHlw
ZSBvcCwgVHlwZSB2YWx1ZVR5CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCMzo6
V2lkdGgzMjoKICAgICAgICAgY2FzZSBCMzo6V2lkdGg2NDoKKyAgICAgICAgY2FzZSBCMzo6V2lk
dGgxMjg6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMTk5Myw2ICsyMDA2LDkgQEAgVmFsdWUqIEIzSVJHZW5l
cmF0b3I6OmVtaXRBdG9taWNDb21wYXJlRXhjaGFuZ2UoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBl
IHZhbHVlVHkKICAgICAgICAgY2FzZSBCMzo6V2lkdGg2NDoKICAgICAgICAgICAgIGFkZGluZ1Zh
bHVlID0gY29uc3RhbnQoSW50NjQsIDApOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQjM6OldpZHRoMTI4OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGF1dG8gcmVzdWx0ID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4obV9wcm9jLCBtZW1vcnlLaW5k
KEF0b21pY1hjaGdBZGQpLCBvcmlnaW4oKSwgYWNjZXNzV2lkdGgsIGFkZGluZ1ZhbHVlLCBwb2lu
dGVyKTsKICAgICAgICAgZmFpbHVyZVZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxC
Mzo6VXBzaWxvblZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCByZXN1bHQpOwpAQCAtMjI1OSwxMCAr
MjI3NSwxNCBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFNlbGVjdChFeHByZXNzaW9uVHlwZSBj
b25kaXRpb24sIEV4cHJlc3Npb25UeXBlIG5vblplcm8sCiAKIEIzSVJHZW5lcmF0b3I6OkV4cHJl
c3Npb25UeXBlIEIzSVJHZW5lcmF0b3I6OmFkZENvbnN0YW50KFR5cGUgdHlwZSwgdWludDY0X3Qg
dmFsdWUpCiB7Ci0KICAgICByZXR1cm4gcHVzaChjb25zdGFudCh0b0IzVHlwZSh0eXBlKSwgdmFs
dWUpKTsKIH0KIAorQjNJUkdlbmVyYXRvcjo6RXhwcmVzc2lvblR5cGUgQjNJUkdlbmVyYXRvcjo6
YWRkQ29uc3RhbnQodjEyOF90IHZhbHVlKQoreworICAgIHJldHVybiBwdXNoKG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8Q29uc3QxMjhWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdmFsdWUpKTsK
K30KKwogdm9pZCBCM0lSR2VuZXJhdG9yOjplbWl0RW50cnlUaWVyVXBDaGVjaygpCiB7CiAgICAg
aWYgKCFtX3RpZXJVcCkKQEAgLTI2NDcsMTQgKzI2NjcsMTQgQEAgYXV0byBCM0lSR2VuZXJhdG9y
OjphZGREZWxlZ2F0ZVRvVW5yZWFjaGFibGUoQ29udHJvbFR5cGUmIHRhcmdldCwgQ29udHJvbFR5
cGUmIGQKICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRocm93
KHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBT
dGFjayYpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGhyb3codW5z
aWduZWQgZXhjZXB0aW9uSW5kZXgsIFN0YWNrJiBhcmdzKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAg
ICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaCA9IG1fcHJvYy5hZGQ8UGF0Y2hwb2ludFZhbHVlPihC
Mzo6Vm9pZCwgb3JpZ2luKCkpOwogICAgIHBhdGNoLT5lZmZlY3RzLnRlcm1pbmFsID0gdHJ1ZTsK
ICAgICBwYXRjaC0+YXBwZW5kKGluc3RhbmNlVmFsdWUoKSwgVmFsdWVSZXA6OnJlZyhHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKICAgICBwYXRjaC0+YXBwZW5kKGZyYW1lUG9pbnRlcigpLCBWYWx1
ZVJlcDo6cmVnKEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQotICAgICAgICBwYXRjaC0+YXBwZW5kKGdldChhcmdz
W2ldKSwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQoaSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkp
KTsKKyAgICAgICAgcGF0Y2gtPmFwcGVuZChnZXQoYXJnc1tpXS52YWx1ZSgpKSwgVmFsdWVSZXA6
OnN0YWNrQXJndW1lbnQoaSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKICAgICBwYXRjaC0+
Y2xvYmJlcihSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7CiAgICAg
UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZSBoYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4
Y2VwdGlvbnMobV9jdXJyZW50QmxvY2ssIHBhdGNoKTsKICAgICBwYXRjaC0+c2V0R2VuZXJhdG9y
KFt0aGlzLCBleGNlcHRpb25JbmRleCwgaGFuZGxlXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtMzczNyw2ICszNzU3
LDIyIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRUcnVuY1VGMzI+KEV4
cHJlc3Npb25UeXBlIGFyZ1ZhciwgRXhwcmVzc2lvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAorI2Rl
ZmluZSBDUkVBVEVfU0lNRF9DQVNFKG5hbWUsIGlkLCBiM29wLCBpbmMsIHdhc21PcCwgcmV0dXJu
VHlwZSwgbnVtSW1tZWRpYXRlcywgaW1tZWRpYXRlU2l6ZXMsIG51bUFyZ3VtZW50cywgYXJndW1l
bnRUeXBlcywgbGFuZUludGVycHJldGF0aW9uLCBzaWduRXh0ZW5kTW9kZSkgXAordGVtcGxhdGU8
PiBcCithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFNpbWRPcDxFeHRTaW1kT3BUeXBlOjpuYW1lLCBu
dW1JbW1lZGlhdGVzLCBudW1Bcmd1bWVudHM+KHN0ZDo6YXJyYXk8dWludDhfdCwgbnVtSW1tZWRp
YXRlcz4gaW1tZWRpYXRlcywgc3RkOjphcnJheTxFeHByZXNzaW9uVHlwZSwgbnVtQXJndW1lbnRz
PiBhcmd1bWVudHMsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQgXAor
eyBcCisgICAgc3RkOjphcnJheTxWYWx1ZSosIG51bUFyZ3VtZW50cz4gYXJndW1lbnRWYWx1ZXM7
IFwKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUFyZ3VtZW50czsgKytpKSB7IFwKKyAg
ICAgICAgYXJndW1lbnRWYWx1ZXNbaV0gPSBnZXQoYXJndW1lbnRzW2ldKTsgXAorICAgIH1cCisg
ICAgYXV0byBhcmdzVG9BcHBseSA9IHN0ZDo6dHVwbGVfY2F0KHN0ZDo6Zm9yd2FyZF9hc190dXBs
ZShtX3Byb2MsIG9yaWdpbigpLCBiM29wLCB0b0IzVHlwZShyZXR1cm5UeXBlKSwgbnVtQXJndW1l
bnRzLCBsYW5lSW50ZXJwcmV0YXRpb24sIHNpZ25FeHRlbmRNb2RlKSwgaW1tZWRpYXRlcywgYXJn
dW1lbnRWYWx1ZXMpOyBcCisgICAgcmVzdWx0ID0gcHVzaChzdGQ6OmFwcGx5KFs9XShhdXRvICYm
Li4uIGFyZ3MpIHsgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8U2ltZFZhbHVlPihh
cmdzLi4uKTsgfSwgYXJnc1RvQXBwbHkpKTsgXAorICAgIHJldHVybiB7IH07IFwKK30KKworRk9S
X0VBQ0hfV0FTTV9FWFRfU0lNRF9PUChDUkVBVEVfU0lNRF9DQVNFKQorI3VuZGVmIENSRUFURV9T
SU1EX0NBU0UKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2luY2x1ZGUgIldhc21C
M0lSR2VuZXJhdG9ySW5saW5lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5jcHAKaW5kZXggMjAzYzg0M2FlOGU2Li5iYzFlMTU3
OGU2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5n
Q29udmVudGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxp
bmdDb252ZW50aW9uLmNwcApAQCAtMzgsNyArMzgsNyBAQCBjb25zdCBKU0NhbGxpbmdDb252ZW50
aW9uJiBqc0NhbGxpbmdDb252ZW50aW9uKCkKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgc3Rh
dGljSlNDQ2FsbGluZ0NvbnZlbnRpb25GbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKHN0YXRpY0pT
Q0NhbGxpbmdDb252ZW50aW9uRmxhZywgW10gKCkgewogICAgICAgICBSZWdpc3RlclNldCBjYWxs
ZXJTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lzdGVycygpOwotICAgICAgICBj
YWxsZXJTYXZlUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3Rl
cnMoKSk7CisvLyAgICAgICAgY2FsbGVyU2F2ZVJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0
OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOyAvLyBUT0RPCiAKICAgICAgICAgc3RhdGljSlNDYWxs
aW5nQ29udmVudGlvbi5jb25zdHJ1Y3QoVmVjdG9yPFJlZz4oKSwgVmVjdG9yPFJlZz4oKSwgUmVn
aXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSwgV1RGTW92ZShjYWxsZXJTYXZlUmVnaXN0
ZXJzKSk7CiAgICAgfSk7CkBAIC03Myw3ICs3Myw3IEBAIGNvbnN0IFdhc21DYWxsaW5nQ29udmVu
dGlvbiYgd2FzbUNhbGxpbmdDb252ZW50aW9uKCkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2Ny
YXRjaEdQUnMuc2l6ZSgpID49IDIpOwogCiAgICAgICAgIFJlZ2lzdGVyU2V0IGNhbGxlclNhdmVS
ZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxlclNh
dmVSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsK
Ky8vICAgICAgICBjYWxsZXJTYXZlUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKSk7IC8vVE9ETwogCiAgICAgICAgIHN0YXRpY1dhc21DYWxsaW5nQ29u
dmVudGlvbi5jb25zdHJ1Y3QoV1RGTW92ZShncHJBcmd1bWVudFJlZ2lzdGVycyksIFdURk1vdmUo
ZnByQXJndW1lbnRSZWdpc3RlcnMpLCBXVEZNb3ZlKHNjcmF0Y2hHUFJzKSwgUmVnaXN0ZXJTZXQ6
OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSwgV1RGTW92ZShjYWxsZXJTYXZlUmVnaXN0ZXJzKSk7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGlu
Z0NvbnZlbnRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29u
dmVudGlvbi5oCmluZGV4IDU5MWVlYjI3YjAxNi4uZjhmNmUwNGRkNzY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaApAQCAtODgs
MTQgKzg4LDE0IEBAIHB1YmxpYzoKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXYXNtQ2FsbGlu
Z0NvbnZlbnRpb24pOwogCiBwcml2YXRlOgotICAgIEFyZ3VtZW50TG9jYXRpb24gbWFyc2hhbGxM
b2NhdGlvbkltcGwoQ2FsbFJvbGUgcm9sZSwgY29uc3QgVmVjdG9yPFJlZz4mIHJlZ0FyZ3MsIHNp
emVfdCYgY291bnQsIHNpemVfdCYgc3RhY2tPZmZzZXQpIGNvbnN0CisgICAgQXJndW1lbnRMb2Nh
dGlvbiBtYXJzaGFsbExvY2F0aW9uSW1wbChDYWxsUm9sZSByb2xlLCBjb25zdCBWZWN0b3I8UmVn
PiYgcmVnQXJncywgc2l6ZV90JiBjb3VudCwgc2l6ZV90JiBzdGFja09mZnNldCwgc2l6ZV90IGFy
Z1NpemUpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoY291bnQgPCByZWdBcmdzLnNpemUoKSkK
ICAgICAgICAgICAgIHJldHVybiBBcmd1bWVudExvY2F0aW9uOjpyZWcocmVnQXJnc1tjb3VudCsr
XSk7CiAKICAgICAgICAgY291bnQrKzsKICAgICAgICAgQXJndW1lbnRMb2NhdGlvbiByZXN1bHQg
PSByb2xlID09IENhbGxSb2xlOjpDYWxsZXIgPyBBcmd1bWVudExvY2F0aW9uOjpzdGFja0FyZ3Vt
ZW50KHN0YWNrT2Zmc2V0KSA6IEFyZ3VtZW50TG9jYXRpb246OnN0YWNrKHN0YWNrT2Zmc2V0KTsK
LSAgICAgICAgc3RhY2tPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAgICAgc3RhY2tP
ZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKSAqIGFyZ1NpemU7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCkBAIC0xMDksMTAgKzEwOSwxMSBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IFR5cGVLaW5kOjpFeHRlcm5yZWY6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAg
ICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKLSAgICAgICAgICAgIHJldHVybiBtYXJzaGFsbExv
Y2F0aW9uSW1wbChyb2xlLCBncHJBcmdzLCBncEFyZ3VtZW50Q291bnQsIHN0YWNrT2Zmc2V0KTsK
KyAgICAgICAgICAgIHJldHVybiBtYXJzaGFsbExvY2F0aW9uSW1wbChyb2xlLCBncHJBcmdzLCBn
cEFyZ3VtZW50Q291bnQsIHN0YWNrT2Zmc2V0LCB2YWx1ZVR5cGUuc2l6ZSgpIC8gOCk7CiAgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgotICAg
ICAgICAgICAgcmV0dXJuIG1hcnNoYWxsTG9jYXRpb25JbXBsKHJvbGUsIGZwckFyZ3MsIGZwQXJn
dW1lbnRDb3VudCwgc3RhY2tPZmZzZXQpOworICAgICAgICBjYXNlIFR5cGVLaW5kOjpWMTI4Ogor
ICAgICAgICAgICAgcmV0dXJuIG1hcnNoYWxsTG9jYXRpb25JbXBsKHJvbGUsIGZwckFyZ3MsIGZw
QXJndW1lbnRDb3VudCwgc3RhY2tPZmZzZXQsIHZhbHVlVHlwZS5zaXplKCkgLyA4KTsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggYzc5ZTMzN2M3YTdhLi5mZTUzODM1YzE5NGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTY4LDYgKzY4LDcg
QEAgaW5saW5lIGJvb2wgaXNWYWx1ZVR5cGUoVHlwZSB0eXBlKQogICAgIGNhc2UgVHlwZUtpbmQ6
Okk2NDoKICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CiAgICAgY2FzZSBUeXBlS2luZDo6RjY0Ogor
ICAgIGNhc2UgVHlwZUtpbmQ6OlYxMjg6CiAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgog
ICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODIs
NyArODMsNyBAQCBpbmxpbmUgYm9vbCBpc1ZhbHVlVHlwZShUeXBlIHR5cGUpCiAKIGlubGluZSBK
U1N0cmluZyogdHlwZVRvU3RyaW5nKFZNJiB2bSwgVHlwZUtpbmQgdHlwZSkKIHsKLSNkZWZpbmUg
VFlQRV9DQVNFKG1hY3JvTmFtZSwgdmFsdWUsIGIzLCBpbmMsIHdhc21OYW1lKSBcCisjZGVmaW5l
IFRZUEVfQ0FTRShtYWNyb05hbWUsIHZhbHVlLCBiMywgaW5jLCB3YXNtTmFtZSwgLi4uKSBcCiAg
ICAgY2FzZSBUeXBlS2luZDo6bWFjcm9OYW1lOiBcCiAgICAgICAgIHJldHVybiBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICN3YXNtTmFtZSk7IFwKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaAppbmRleCA3
ZTRhNDBiZjQ1MDguLmEwODk5OTk5OGU0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmgKQEAgLTgx
LDYgKzgxLDcgQEAgcHVibGljOgogICAgIHVpbnQzMl90IG51bUFyZ3VtZW50cygpIGNvbnN0IHsg
cmV0dXJuIG1fbnVtQXJndW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPFR5cGU+JiBjb25zdGFu
dFR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFR5cGVzOyB9CiAgICAgY29uc3QgVmVj
dG9yPHVpbnQ2NF90PiYgY29uc3RhbnRzKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHM7IH0K
KyAgICBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBjb25zdGFudFJlZ2lzdGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fY29uc3RhbnRzOyB9CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3Ry
dWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuICptX2luc3RydWN0aW9uczsgfQogCiAgICAgdm9pZCBz
ZXROdW1WYXJzKHVuc2lnbmVkIG51bVZhcnMpIHsgbV9udW1WYXJzID0gbnVtVmFyczsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCBk
OTdlN2U3NTlhNGYuLjE4Mzg1YTQyNjYxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJX
YXNtUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNpbmNsdWRl
IDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIFdhc20gewogCkBAIC04NSw2ICs4NiwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIG9wZXJhdG9yIEV4cHJlc3Npb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQog
CiAgICAgICAgIEV4cHJlc3Npb25UeXBlIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlOyB9CisgICAgICAgIAorICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgb3V0LnByaW50KG1fdmFsdWUsICI6ICIsIG1fdHlw
ZSk7CisgICAgICAgIH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIFR5cGUgbV90eXBlOwpAQCAt
MTI1LDcgKzEzMSw3IEBAIHByaXZhdGU6CiAjZGVmaW5lIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9O
X1NUQUNLX0lOVE8ocmVzdWx0LCB3aGF0KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2V4cHJlc3Npb25TdGFjay5pc0Vt
cHR5KCksICJjYW4ndCBwb3AgZW1wdHkgc3RhY2sgaW4gIiB3aGF0KTsgXAogICAgICAgICByZXN1
bHQgPSBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZy
b21TdGFjaygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgbV9jb250ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKHJlc3VsdC50eXBl
KCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUg
KDApCiAKICAgICB0ZW1wbGF0ZTxPcFR5cGU+CkBAIC0xNDcsNiArMTUzLDExIEBAIHByaXZhdGU6
CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYXRvbWljTm90aWZ5KEV4dEF0
b21pY09wVHlwZSk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYXRvbWlj
RmVuY2UoRXh0QXRvbWljT3BUeXBlKTsKIAorICAgIHRlbXBsYXRlPEV4dFNpbWRPcFR5cGUsIHNp
emVfdCBudW1JbW1lZGlhdGVzLCBzaXplX3QgbnVtQXJndW1lbnRzPgorICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIHNpbWRDYXNlKGJvb2wgcmVhY2hhYmxlLCBUeXBlIHJldHVy
blR5cGUsIGNvbnN0IHN0ZDo6YXJyYXk8aW50LCBudW1JbW1lZGlhdGVzPiYgaW1tZWRpYXRlU2l6
ZXMsIGNvbnN0IHN0ZDo6YXJyYXk8Y29uc3QgVHlwZSosIG51bUFyZ3VtZW50cz4mIGFyZ3VtZW50
VHlwZXMpOworICAgIHRlbXBsYXRlPFNpbWRMYW5lT3BlcmF0aW9uLCBTaW1kTGFuZUludGVycHJl
dGF0aW9uLCBTaW1kU2lnbkV4dGVuZE1vZGU+CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gc2ltZFNwZWNpYWxDYXNlKGJvb2wgcmVhY2hhYmxlID0gdHJ1ZSk7CisKICAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVRhYmxlSW5kZXgodW5zaWduZWQm
KTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUVsZW1lbnRJbmRl
eCh1bnNpZ25lZCYpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNl
RGF0YVNlZ21lbnRJbmRleCh1bnNpZ25lZCYpOwpAQCAtMjY0LDcgKzI3NSw3IEBAIGF1dG8gRnVu
Y3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlKCkgLT4gUmVzdWx0CiAgICAgICAgIGZvciAodWlu
dDMyX3QgaSA9IDA7IGkgPCBudW1iZXJPZkxvY2FsczsgKytpKQogICAgICAgICAgICAgbV9sb2Nh
bHMudW5jaGVja2VkQXBwZW5kKHR5cGVPZkxvY2FsKTsKIAotICAgICAgICBXQVNNX1RSWV9BRERf
VE9fQ09OVEVYVChhZGRMb2NhbCh0eXBlT2ZMb2NhbCwgbnVtYmVyT2ZMb2NhbHMpKTsKKyAgICAg
ICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkTG9jYWwodHlwZU9mTG9jYWwsIG1fbG9jYWxz
LnNpemUoKSAtIG51bWJlck9mTG9jYWxzLCBudW1iZXJPZkxvY2FscykpOwogICAgIH0KIAogICAg
IG1fY29udGV4dC5kaWRGaW5pc2hQYXJzaW5nTG9jYWxzKCk7CkBAIC01NDksNiArNTYwLDY2IEBA
IGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OmF0b21pY0ZlbmNlKEV4dEF0b21pY09wVHlw
ZSBvcCkgLT4gUGFydGlhbFJlc3VsdAogICAgIHJldHVybiB7IH07CiB9CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIENvbnRleHQ+Cit0ZW1wbGF0ZTxTaW1kTGFuZU9wZXJhdGlvbiBvcCwgU2ltZExhbmVJ
bnRlcnByZXRhdGlvbiBsYW5lSW50ZXJwcmV0YXRpb24sIFNpbWRTaWduRXh0ZW5kTW9kZSBzaWdu
TW9kZT4KK2F1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnNpbWRTcGVjaWFsQ2FzZShib29s
IHJlYWNoYWJsZSkgLT4gUGFydGlhbFJlc3VsdAoreworICAgIHN3aXRjaCAob3ApIHsKKyAgICBj
YXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpDb25zdDogeworICAgICAgICB2MTI4X3QgY29uc3RhbnQ7
CisgICAgICAgIEFTU0VSVChsYW5lSW50ZXJwcmV0YXRpb24gPT0gU2ltZExhbmVJbnRlcnByZXRh
dGlvbjo6djEyOCk7CisgICAgICAgIEFTU0VSVChzaWduTW9kZSA9PSBTaW1kU2lnbkV4dGVuZE1v
ZGU6Ok5BKTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VJbW1CeXRlQXJyYXkx
Nihjb25zdGFudCksICJjYW4ndCBwYXJzZSAxMjgtYml0IHZlY3RvciBjb25zdGFudCIpOworICAg
ICAgICBpZiAoIXJlYWNoYWJsZSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAg
bV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKFR5cGVzOjpWMTI4LCBtX2NvbnRl
eHQuYWRkQ29uc3RhbnQoY29uc3RhbnQpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYodHJ1ZSwgImludmFsaWQgc2ltZCBvcCAiLCBTaW1kTGFuZU9wZXJhdGlv
bkR1bXAob3ApKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB7IH07Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+Cit0ZW1wbGF0ZTxFeHRTaW1kT3BUeXBlIG9wLCBz
aXplX3QgbnVtSW1tZWRpYXRlcywgc2l6ZV90IG51bUFyZ3VtZW50cz4KK2F1dG8gRnVuY3Rpb25Q
YXJzZXI8Q29udGV4dD46OnNpbWRDYXNlKGJvb2wgcmVhY2hhYmxlLCBUeXBlIHJlc3VsdFR5cGUs
IGNvbnN0IHN0ZDo6YXJyYXk8aW50LCBudW1JbW1lZGlhdGVzPiYgaW1tZWRpYXRlU2l6ZXMsIGNv
bnN0IHN0ZDo6YXJyYXk8Y29uc3QgVHlwZSosIG51bUFyZ3VtZW50cz4mIGFyZ3VtZW50VHlwZXMp
IC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIG51bUltbWVkaWF0
ZXM+IGltbXM7CisgICAgc3RkOjphcnJheTxFeHByZXNzaW9uVHlwZSwgbnVtQXJndW1lbnRzPiBh
cmdzOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtSW1tZWRpYXRlczsgKytp
KSB7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlSW1tTGFuZUlkeChpbW1lZGlh
dGVTaXplc1tpXSwgaW1tc1tpXSksICJjYW4ndCBwYXJzZSBsYW5lIGluZGV4IGltbWVkaWF0ZSIp
OworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQXJndW1lbnRzOyArK2kp
IHsKKyAgICAgICAgVHlwZWRFeHByZXNzaW9uIGU7CisgICAgICAgIAorICAgICAgICBXQVNNX1RS
WV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKGUsICJzaW1kIGFyZ3VtZW50Iik7CisgICAgICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoZS50eXBlKCkgIT0gKmFyZ3VtZW50VHlwZXNbaV0sICJ0
eXBlIG1pc21hdGNoIGZvciBhcmd1bWVudCAiLCBpKTsKKyAgICAgICAgYXJnc1tpXSA9IGUudmFs
dWUoKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFyZWFjaGFibGUpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICBpZiAocmVzdWx0VHlwZS5pc1ZvaWQoKSkgeworICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIEV4
cHJlc3Npb25UeXBlIHJlc3VsdDsKKyAgICBQYXJ0aWFsUmVzdWx0IG9wUmVzdWx0ID0gbV9jb250
ZXh0LnRlbXBsYXRlIGFkZFNpbWRPcDxvcD4oaW1tcywgYXJncywgcmVzdWx0KTsKKyAgICBpZiAo
VU5MSUtFTFkoIW9wUmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1v
dmUob3BSZXN1bHQuZXJyb3IoKSkpOworICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFu
ZEFwcGVuZChyZXN1bHRUeXBlLCByZXN1bHQpOworICAgIAorICAgIHJldHVybiB7IH07Cit9CisK
IHRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+CiBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+
OjpwYXJzZVRhYmxlSW5kZXgodW5zaWduZWQmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewpA
QCAtMTEyNyw3ICsxMTk4LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRF
X0NBU0UpCiAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbmRleEZvckxv
Y2FsKGluZGV4KSk7CiAKICAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OwotICAgICAgICBX
QVNNX1RSWV9BRERfVE9fQ09OVEVYVChnZXRMb2NhbChpbmRleCwgcmVzdWx0KSk7CisgICAgICAg
IFdBU01fVFJZX0FERF9UT19DT05URVhUKGdldExvY2FsKGluZGV4LCBtX2xvY2Fsc1tpbmRleF0s
IHJlc3VsdCkpOwogICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQo
bV9sb2NhbHNbaW5kZXhdLCByZXN1bHQpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KQEAg
LTExNDAsNyArMTIxMSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9D
QVNFKQogICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKHZhbHVlLCAi
c2V0X2xvY2FsIik7CiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoaW5kZXggPj0gbV9s
b2NhbHMuc2l6ZSgpLCAiYXR0ZW1wdCB0byBzZXQgdW5rbm93biBsb2NhbCAiLCBpbmRleCwgIiBs
YXN0IG9uZSBpcyAiLCBtX2xvY2Fscy5zaXplKCkpOwogICAgICAgICBXQVNNX1ZBTElEQVRPUl9G
QUlMX0lGKCFpc1N1YnR5cGUodmFsdWUudHlwZSgpLCBtX2xvY2Fsc1tpbmRleF0pLCAic2V0X2xv
Y2FsIHRvIHR5cGUgIiwgdmFsdWUudHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQgIiwgbV9sb2NhbHNb
aW5kZXhdLmtpbmQpOwotICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChzZXRMb2NhbChp
bmRleCwgdmFsdWUpKTsKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoc2V0TG9jYWwo
aW5kZXgsIG1fbG9jYWxzW2luZGV4XSwgdmFsdWUpKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAKQEAgLTExNTIsNyArMTIyMyw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09Q
KENSRUFURV9DQVNFKQogICAgICAgICBUeXBlZEV4cHJlc3Npb24gdmFsdWUgPSBtX2V4cHJlc3Np
b25TdGFjay5sYXN0KCk7CiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoaW5kZXggPj0g
bV9sb2NhbHMuc2l6ZSgpLCAiYXR0ZW1wdCB0byB0ZWUgdW5rbm93biBsb2NhbCAiLCBpbmRleCwg
IiBsYXN0IG9uZSBpcyAiLCBtX2xvY2Fscy5zaXplKCkpOwogICAgICAgICBXQVNNX1ZBTElEQVRP
Ul9GQUlMX0lGKCFpc1N1YnR5cGUodmFsdWUudHlwZSgpLCBtX2xvY2Fsc1tpbmRleF0pLCAic2V0
X2xvY2FsIHRvIHR5cGUgIiwgdmFsdWUudHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQgIiwgbV9sb2Nh
bHNbaW5kZXhdLmtpbmQpOwotICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChzZXRMb2Nh
bChpbmRleCwgdmFsdWUpKTsKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoc2V0TG9j
YWwoaW5kZXgsIG1fbG9jYWxzW2luZGV4XSwgdmFsdWUpKTsKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAKQEAgLTEyMDAsNyArMTI3MSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JF
X09QKENSRUFURV9DQVNFKQogICAgICAgICAgICAgVHlwZWRFeHByZXNzaW9uIGFyZyA9IG1fZXhw
cmVzc2lvblN0YWNrLmF0KGkpOwogICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRigh
aXNTdWJ0eXBlKGFyZy50eXBlKCksIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RB
cmd1bWVudEluZGV4KSksICJhcmd1bWVudCB0eXBlIG1pc21hdGNoIGluIGNhbGwsIGdvdCAiLCBh
cmcudHlwZSgpLmtpbmQsICIsIGV4cGVjdGVkICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChp
IC0gZmlyc3RBcmd1bWVudEluZGV4KS5raW5kKTsKICAgICAgICAgICAgIGFyZ3MudW5jaGVja2Vk
QXBwZW5kKGFyZyk7Ci0gICAgICAgICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2so
KTsKKyAgICAgICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjayhhcmcudHlwZSgp
KTsKICAgICAgICAgfQogICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1
bWVudEluZGV4KTsKIApAQCAtMTI0MSw3ICsxMzEyLDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllf
U1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgICAgICBpZiAoaSA8IG1fZXhwcmVzc2lvblN0
YWNrLnNpemUoKSAtIDEpCiAgICAgICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRigh
aXNTdWJ0eXBlKGFyZy50eXBlKCksIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RB
cmd1bWVudEluZGV4KSksICJhcmd1bWVudCB0eXBlIG1pc21hdGNoIGluIGNhbGxfaW5kaXJlY3Qs
IGdvdCAiLCBhcmcudHlwZSgpLmtpbmQsICIsIGV4cGVjdGVkICIsIGNhbGxlZVNpZ25hdHVyZS5h
cmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4KS5raW5kKTsKICAgICAgICAgICAgIGFyZ3Mu
dW5jaGVja2VkQXBwZW5kKGFyZyk7Ci0gICAgICAgICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVG
cm9tU3RhY2soKTsKKyAgICAgICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjayhh
cmcudHlwZSgpKTsKICAgICAgICAgfQogICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmso
Zmlyc3RBcmd1bWVudEluZGV4KTsKIApAQCAtMTI3MSw3ICsxMzQyLDcgQEAgRk9SX0VBQ0hfV0FT
TV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgICAgICBpZiAoaSA8IG1fZXhw
cmVzc2lvblN0YWNrLnNpemUoKSAtIDEpCiAgICAgICAgICAgICAgICAgV0FTTV9WQUxJREFUT1Jf
RkFJTF9JRihhcmcudHlwZSgpICE9IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RB
cmd1bWVudEluZGV4KSwgImFyZ3VtZW50IHR5cGUgbWlzbWF0Y2ggaW4gY2FsbF9pbmRpcmVjdCwg
Z290ICIsIGFyZy50eXBlKCkua2luZCwgIiwgZXhwZWN0ZWQgIiwgY2FsbGVlU2lnbmF0dXJlLmFy
Z3VtZW50KGkgLSBmaXJzdEFyZ3VtZW50SW5kZXgpLmtpbmQpOwogICAgICAgICAgICAgYXJncy51
bmNoZWNrZWRBcHBlbmQoYXJnKTsKLSAgICAgICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZy
b21TdGFjaygpOworICAgICAgICAgICAgbV9jb250ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKGFy
Zy50eXBlKCkpOwogICAgICAgICB9CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLnNocmluayhm
aXJzdEFyZ3VtZW50SW5kZXgpOwogCkBAIC0xNDYyLDE3ICsxNTMzLDE3IEBAIEZPUl9FQUNIX1dB
U01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogCiAgICAgICAgIFdBU01fVkFMSURBVE9S
X0ZBSUxfSUYobV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIDwgZXhjZXB0aW9uU2lnbmF0dXJlLmFy
Z3VtZW50Q291bnQoKSwgIlRvbyBmZXcgYXJndW1lbnRzIG9uIHN0YWNrIGZvciB0aGUgZXhjZXB0
aW9uIGJlaW5nIHRocm93bi4gVGhlIGV4Y2VwdGlvbiBleHBlY3RzICIsIGV4Y2VwdGlvblNpZ25h
dHVyZS5hcmd1bWVudENvdW50KCksICIsIGJ1dCBvbmx5ICIsIG1fZXhwcmVzc2lvblN0YWNrLnNp
emUoKSwgIiB3ZXJlIHByZXNlbnQuIEV4Y2VwdGlvbiBoYXMgc2lnbmF0dXJlOiAiLCBleGNlcHRp
b25TaWduYXR1cmUudG9TdHJpbmcoKSk7CiAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fZXhw
cmVzc2lvblN0YWNrLnNpemUoKSAtIGV4Y2VwdGlvblNpZ25hdHVyZS5hcmd1bWVudENvdW50KCk7
Ci0gICAgICAgIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4gYXJnczsKKyAgICAgICAgU3RhY2sgYXJn
cyhleGNlcHRpb25TaWduYXR1cmUuYXJndW1lbnRDb3VudCgpKTsKICAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighYXJncy50cnlSZXNlcnZlQ2FwYWNpdHkoZXhjZXB0aW9uU2lnbmF0dXJlLmFy
Z3VtZW50Q291bnQoKSksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciB0aHJvdydz
ICIsIGV4Y2VwdGlvblNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksICIgYXJndW1lbnRzIik7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGNlcHRpb25TaWduYXR1cmUuYXJndW1l
bnRDb3VudCgpOyArK2kpIHsKICAgICAgICAgICAgIFR5cGVkRXhwcmVzc2lvbiBhcmcgPSBtX2V4
cHJlc3Npb25TdGFjay5hdChvZmZzZXQgKyBpKTsKICAgICAgICAgICAgIFdBU01fVkFMSURBVE9S
X0ZBSUxfSUYoYXJnLnR5cGUoKSAhPSBleGNlcHRpb25TaWduYXR1cmUuYXJndW1lbnQoaSksICJU
aGUgZXhjZXB0aW9uIGJlaW5nIHRocm93biBleHBlY3RzIHRoZSBhcmd1bWVudCBhdCBpbmRleCAi
LCBpLCAiIHRvIGJlICIsIGV4Y2VwdGlvblNpZ25hdHVyZS5hcmd1bWVudChpKS5raW5kLCAiIGJ1
dCBhcmd1bWVudCBoYXMgdHlwZSAiLCBhcmcudHlwZSgpLmtpbmQpOwogICAgICAgICAgICAgYXJn
cy51bmNoZWNrZWRBcHBlbmQoYXJnKTsKLSAgICAgICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1
ZUZyb21TdGFjaygpOworICAgICAgICAgICAgbV9jb250ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNr
KGFyZy50eXBlKCkpOwogICAgICAgICB9CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLnNocmlu
ayhvZmZzZXQpOwogCi0gICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFRocm93KGV4
Y2VwdGlvbkluZGV4LCBhcmdzLCBtX2V4cHJlc3Npb25TdGFjaykpOworICAgICAgICBXQVNNX1RS
WV9BRERfVE9fQ09OVEVYVChhZGRUaHJvdyhleGNlcHRpb25JbmRleCwgYXJncykpOwogICAgICAg
ICBtX3VucmVhY2hhYmxlQmxvY2tzID0gMTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CkBA
IC0xNTgwLDggKzE2NTEsMTAgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRF
X0NBU0UpCiAKICAgICBjYXNlIERyb3A6IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
bV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiY2FuJ3QgZHJvcCBvbiBlbXB0eSBzdGFjayIpOwot
ICAgICAgICBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgpOwotICAgICAgICBtX2NvbnRleHQu
ZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsKKyAgICAgICAgCisgICAgICAgIFR5cGVkRXhwcmVzc2lv
biB1bnVzZWQ7CisgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8odW51
c2VkLCAiZXhwZWN0IGFuIGFyZ3VtZW50IHRvIGRyb3Agb24gdGhlIHN0YWNrIik7CisgICAgICAg
IAogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTYyMCw2ICsxNjkzLDI3IEBAIEZP
Ul9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogCiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQorCisgICAgY2FzZSBFeHRTaW1kOiB7CisgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5U0lNRCgpLCAid2FzbS1zaW1kIGlzIG5v
dCBlbmFibGVkIik7CisgICAgICAgIHVpbnQ4X3Qgc2ltZE9wOworICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFwYXJzZVVJbnQ4KHNpbWRPcCksICJjYW4ndCBwYXJzZSB3YXNtIGV4dGVuZGVk
IG9wY29kZSIpOworCisgICAgICAgIEV4dFNpbWRPcFR5cGUgb3AgPSBzdGF0aWNfY2FzdDxFeHRT
aW1kT3BUeXBlPihzaW1kT3ApOworICAgICAgICBzd2l0Y2ggKG9wKSB7CisjZGVmaW5lIENSRUFU
RV9TSU1EX0NBU0UobmFtZSwgaWQsIGIzb3AsIGluYywgd2FzbU9wLCByZXR1cm5UeXBlLCBudW1J
bW1lZGlhdGVzLCBpbW1lZGlhdGVTaXplcywgbnVtQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzLCBs
YW5lSW50ZXJwcmV0YXRpb24sIHNpZ25FeHRlbmRNb2RlKSBcCisgICAgICAgIGNhc2UgRXh0U2lt
ZE9wVHlwZTo6bmFtZTogcmV0dXJuIHNpbWRDYXNlPEV4dFNpbWRPcFR5cGU6Om5hbWUsIG51bUlt
bWVkaWF0ZXMsIG51bUFyZ3VtZW50cz4odHJ1ZSwgcmV0dXJuVHlwZSwgaW1tZWRpYXRlU2l6ZXMs
IGFyZ3VtZW50VHlwZXMpOworICAgICAgICBGT1JfRUFDSF9XQVNNX0VYVF9TSU1EX09QKENSRUFU
RV9TSU1EX0NBU0UpCisjdW5kZWYgQ1JFQVRFX1NJTURfQ0FTRQorI2RlZmluZSBDUkVBVEVfU0lN
RF9DQVNFKG5hbWUsIGlkLCBiM29wLCBpbmMsIGxhbmVPcCwgbGFuZUludGVycHJldGF0aW9uLCBz
aWduTW9kZSkgY2FzZSBFeHRTaW1kT3BUeXBlOjpuYW1lOiByZXR1cm4gc2ltZFNwZWNpYWxDYXNl
PGxhbmVPcCwgbGFuZUludGVycHJldGF0aW9uLCBzaWduTW9kZT4odHJ1ZSk7CisgICAgICAgIEZP
Ul9FQUNIX1dBU01fRVhUX1NJTURfU1BFQ0lBTF9PUChDUkVBVEVfU0lNRF9DQVNFKQorI3VuZGVm
IENSRUFURV9TSU1EX0NBU0UKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYodHJ1ZSwgImludmFsaWQgZXh0ZW5kZWQgc2ltZCBvcCAiLCBzaW1kT3ApOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xOTcwLDYgKzIwNjQsMjcg
QEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Np
b24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgfQogI3VuZGVmIENSRUFURV9BVE9NSUNfQ0FTRQog
CisgICAgY2FzZSBFeHRTaW1kOiB7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlv
bnM6OnVzZVdlYkFzc2VtYmx5U0lNRCgpLCAid2FzbS1zaW1kIGlzIG5vdCBlbmFibGVkIik7Cisg
ICAgICAgIHVpbnQ4X3Qgc2ltZE9wOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVVJbnQ4KHNpbWRPcCksICJjYW4ndCBwYXJzZSB3YXNtIGV4dGVuZGVkIG9wY29kZSIpOworCisg
ICAgICAgIEV4dFNpbWRPcFR5cGUgb3AgPSBzdGF0aWNfY2FzdDxFeHRTaW1kT3BUeXBlPihzaW1k
T3ApOworICAgICAgICBzd2l0Y2ggKG9wKSB7CisjZGVmaW5lIENSRUFURV9TSU1EX0NBU0UobmFt
ZSwgaWQsIGIzb3AsIGluYywgd2FzbU9wLCByZXR1cm5UeXBlLCBudW1JbW1lZGlhdGVzLCBpbW1l
ZGlhdGVTaXplcywgbnVtQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzLCBsYW5lSW50ZXJwcmV0YXRp
b24sIHNpZ25FeHRlbmRNb2RlKSBcCisgICAgICAgIGNhc2UgRXh0U2ltZE9wVHlwZTo6bmFtZTog
cmV0dXJuIHNpbWRDYXNlPEV4dFNpbWRPcFR5cGU6Om5hbWUsIG51bUltbWVkaWF0ZXMsIG51bUFy
Z3VtZW50cz4oZmFsc2UsIHJldHVyblR5cGUsIGltbWVkaWF0ZVNpemVzLCBhcmd1bWVudFR5cGVz
KTsKKyAgICAgICAgRk9SX0VBQ0hfV0FTTV9FWFRfU0lNRF9PUChDUkVBVEVfU0lNRF9DQVNFKQor
I3VuZGVmIENSRUFURV9TSU1EX0NBU0UKKyNkZWZpbmUgQ1JFQVRFX1NJTURfQ0FTRShuYW1lLCBp
ZCwgYjNvcCwgaW5jLCBsYW5lT3AsIGxhbmVJbnRlcnByZXRhdGlvbiwgc2lnbk1vZGUpIGNhc2Ug
RXh0U2ltZE9wVHlwZTo6bmFtZTogcmV0dXJuIHNpbWRTcGVjaWFsQ2FzZTxsYW5lT3AsIGxhbmVJ
bnRlcnByZXRhdGlvbiwgc2lnbk1vZGU+KGZhbHNlKTsKKyAgICAgICAgRk9SX0VBQ0hfV0FTTV9F
WFRfU0lNRF9TUEVDSUFMX09QKENSRUFURV9TSU1EX0NBU0UpCisjdW5kZWYgQ1JFQVRFX1NJTURf
Q0FTRQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0
cnVlLCAiaW52YWxpZCBleHRlbmRlZCBzaW1kIG9wICIsIHNpbWRPcCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAgIH0KKwogICAgIC8vIG5v
IGltbWVkaWF0ZSBjYXNlcwogICAgIEZPUl9FQUNIX1dBU01fQklOQVJZX09QKENSRUFURV9DQVNF
KQogICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1AoQ1JFQVRFX0NBU0UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAppbmRleCAzMjg5MzJl
YTMwMTguLjY3OTlhZGExN2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCkBAIC00NCw5ICs0NCwxNiBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIFdhc20gewogCituYW1lc3BhY2UgTExJbnRHZW5lcmF0b3JJbnRlcm5h
bCB7CitzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQorCiBjbGFzcyBM
TEludEdlbmVyYXRvciA6IHB1YmxpYyBCeXRlY29kZUdlbmVyYXRvckJhc2U8R2VuZXJhdG9yVHJh
aXRzPiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgRXhwcmVzc2lvblR5cGUgPSBWaXJ0dWFsUmVnaXN0
ZXI7CisgICAgdXNpbmcgRXJyb3JUeXBlID0gU3RyaW5nOworICAgIHVzaW5nIFBhcnRpYWxSZXN1
bHQgPSBFeHBlY3RlZDx2b2lkLCBFcnJvclR5cGU+OworICAgIHVzaW5nIFVuZXhwZWN0ZWRSZXN1
bHQgPSBVbmV4cGVjdGVkPEVycm9yVHlwZT47CiAKICAgICBzdHJ1Y3QgQ29udHJvbExvb3AgIHsK
ICAgICAgICAgUmVmPExhYmVsPiBtX2JvZHk7CkBAIC03OSw2ICs4NiwxNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHVuc2lnbmVkIG1faW5zdHJ1Y3Rpb25PZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIG1f
dHJ5RGVwdGg7CiAgICAgfTsKKyAgICAKKyAgICBzdHJ1Y3QgV2FzbUV4cHJlc3Npb25TbG90IHsK
KyAgICAgICAgV2FzbTo6VHlwZSB0eXBlOworICAgICAgICBDaGVja2VkPHVuc2lnbmVkPiBzbG90
SW5kZXg7CisgICAgICAgIAorICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgb3V0LnByaW50KCIoIiwgc2xvdEluZGV4LnZhbHVl
KCksICI6ICIsIHR5cGUsICIpIik7CisgICAgICAgIH0KKyAgICB9OworICAgIHVzaW5nIFdhc21F
eHByZXNzaW9uU2xvdFN0YWNrID0gVmVjdG9yPFdhc21FeHByZXNzaW9uU2xvdCwgMTY+OwogCiAg
ICAgc3RydWN0IENvbnRyb2xUeXBlIDogcHVibGljIHN0ZDo6dmFyaWFudDxDb250cm9sTG9vcCwg
Q29udHJvbFRvcExldmVsLCBDb250cm9sQmxvY2ssIENvbnRyb2xJZiwgQ29udHJvbFRyeSwgQ29u
dHJvbENhdGNoPiB7CiAgICAgICAgIHVzaW5nIEJhc2UgPSBzdGQ6OnZhcmlhbnQ8Q29udHJvbExv
b3AsIENvbnRyb2xUb3BMZXZlbCwgQ29udHJvbEJsb2NrLCBDb250cm9sSWYsIENvbnRyb2xUcnks
IENvbnRyb2xDYXRjaD47CkBAIC04OCwzNCArMTA2LDQ0IEBAIHB1YmxpYzoKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIENvbnRyb2xUeXBlIHRvcExldmVsKEJsb2NrU2ln
bmF0dXJlIHNpZ25hdHVyZSwgdW5zaWduZWQgc3RhY2tTaXplLCBSZWZQdHI8TGFiZWw+JiYgY29u
dGludWF0aW9uKQorICAgICAgICBzdGF0aWMgQ29udHJvbFR5cGUgdG9wTGV2ZWwoQmxvY2tTaWdu
YXR1cmUgc2lnbmF0dXJlLCBjb25zdCBXYXNtRXhwcmVzc2lvblNsb3RTdGFjayYgc3RhY2tTbG90
cywgUmVmUHRyPExhYmVsPiYmIGNvbnRpbnVhdGlvbikKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIENvbnRyb2xUeXBlKHNpZ25hdHVyZSwgc3RhY2tTaXplLCBXVEZNb3ZlKGNvbnRpbnVh
dGlvbiksIENvbnRyb2xUb3BMZXZlbCB7IH0pOworICAgICAgICAgICAgcmV0dXJuIENvbnRyb2xU
eXBlKHNpZ25hdHVyZSwgc3RhY2tTbG90cywgV1RGTW92ZShjb250aW51YXRpb24pLCBDb250cm9s
VG9wTGV2ZWwgeyB9KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBDb250cm9sVHlwZSBs
b29wKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgdW5zaWduZWQgc3RhY2tTaXplLCBSZWY8TGFi
ZWw+JiYgYm9keSwgUmVmUHRyPExhYmVsPiYmIGNvbnRpbnVhdGlvbikKKyAgICAgICAgc3RhdGlj
IENvbnRyb2xUeXBlIGxvb3AoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBjb25zdCBXYXNtRXhw
cmVzc2lvblNsb3RTdGFjayYgc3RhY2tTbG90cywgUmVmPExhYmVsPiYmIGJvZHksIFJlZlB0cjxM
YWJlbD4mJiBjb250aW51YXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBDb250
cm9sVHlwZShzaWduYXR1cmUsIHN0YWNrU2l6ZSAtIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgp
LCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xMb29wIHsgV1RGTW92ZShib2R5KSB9KTsK
KyAgICAgICAgICAgIFdhc21FeHByZXNzaW9uU2xvdFN0YWNrIG5ld1N0YWNrIHsgc3RhY2tTbG90
cyB9OworICAgICAgICAgICAgbmV3U3RhY2sucmVtb3ZlKDAsIHNpZ25hdHVyZS0+YXJndW1lbnRD
b3VudCgpKTsKKyAgICAgICAgICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIG5ld1N0
YWNrLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xMb29wIHsgV1RGTW92ZShib2R5KSB9
KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBDb250cm9sVHlwZSBibG9jayhCbG9ja1Np
Z25hdHVyZSBzaWduYXR1cmUsIHVuc2lnbmVkIHN0YWNrU2l6ZSwgUmVmUHRyPExhYmVsPiYmIGNv
bnRpbnVhdGlvbikKKyAgICAgICAgc3RhdGljIENvbnRyb2xUeXBlIGJsb2NrKEJsb2NrU2lnbmF0
dXJlIHNpZ25hdHVyZSwgY29uc3QgV2FzbUV4cHJlc3Npb25TbG90U3RhY2smIHN0YWNrU2xvdHMs
IFJlZlB0cjxMYWJlbD4mJiBjb250aW51YXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIHN0YWNrU2l6ZSAtIHNpZ25hdHVyZS0+YXJndW1l
bnRDb3VudCgpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xCbG9jayB7IH0pOworICAg
ICAgICAgICAgV2FzbUV4cHJlc3Npb25TbG90U3RhY2sgbmV3U3RhY2sgeyBzdGFja1Nsb3RzIH07
CisgICAgICAgICAgICBuZXdTdGFjay5yZW1vdmUoMCwgc2lnbmF0dXJlLT5hcmd1bWVudENvdW50
KCkpOworICAgICAgICAgICAgcmV0dXJuIENvbnRyb2xUeXBlKHNpZ25hdHVyZSwgbmV3U3RhY2ss
IFdURk1vdmUoY29udGludWF0aW9uKSwgQ29udHJvbEJsb2NrIHsgfSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBzdGF0aWMgQ29udHJvbFR5cGUgaWZfKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwg
dW5zaWduZWQgc3RhY2tTaXplLCBSZWY8TGFiZWw+JiYgYWx0ZXJuYXRlLCBSZWZQdHI8TGFiZWw+
JiYgY29udGludWF0aW9uKQorICAgICAgICBzdGF0aWMgQ29udHJvbFR5cGUgaWZfKEJsb2NrU2ln
bmF0dXJlIHNpZ25hdHVyZSwgY29uc3QgV2FzbUV4cHJlc3Npb25TbG90U3RhY2smIHN0YWNrU2xv
dHMsIFJlZjxMYWJlbD4mJiBhbHRlcm5hdGUsIFJlZlB0cjxMYWJlbD4mJiBjb250aW51YXRpb24p
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIHN0
YWNrU2l6ZSAtIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCBXVEZNb3ZlKGNvbnRpbnVhdGlv
biksIENvbnRyb2xJZiB7IFdURk1vdmUoYWx0ZXJuYXRlKSB9KTsKKyAgICAgICAgICAgIFdhc21F
eHByZXNzaW9uU2xvdFN0YWNrIG5ld1N0YWNrIHsgc3RhY2tTbG90cyB9OworICAgICAgICAgICAg
bmV3U3RhY2sucmVtb3ZlKDAsIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIG5ld1N0YWNrLCBXVEZNb3ZlKGNvbnRp
bnVhdGlvbiksIENvbnRyb2xJZiB7IFdURk1vdmUoYWx0ZXJuYXRlKSB9KTsKICAgICAgICAgfQog
Ci0gICAgICAgIHN0YXRpYyBDb250cm9sVHlwZSBjcmVhdGVUcnkoQmxvY2tTaWduYXR1cmUgc2ln
bmF0dXJlLCB1bnNpZ25lZCBzdGFja1NpemUsIFJlZjxMYWJlbD4mJiB0cnlMYWJlbCwgUmVmUHRy
PExhYmVsPiYmIGNvbnRpbnVhdGlvbiwgdW5zaWduZWQgdHJ5RGVwdGgpCisgICAgICAgIHN0YXRp
YyBDb250cm9sVHlwZSBjcmVhdGVUcnkoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBjb25zdCBX
YXNtRXhwcmVzc2lvblNsb3RTdGFjayYgc3RhY2tTbG90cywgUmVmPExhYmVsPiYmIHRyeUxhYmVs
LCBSZWZQdHI8TGFiZWw+JiYgY29udGludWF0aW9uLCB1bnNpZ25lZCB0cnlEZXB0aCkKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIENvbnRyb2xUeXBlKHNpZ25hdHVyZSwgc3RhY2tTaXpl
IC0gc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCksIFdURk1vdmUoY29udGludWF0aW9uKSwgQ29u
dHJvbFRyeSB7IFdURk1vdmUodHJ5TGFiZWwpLCB0cnlEZXB0aCB9KTsKKyAgICAgICAgICAgIFdh
c21FeHByZXNzaW9uU2xvdFN0YWNrIG5ld1N0YWNrIHsgc3RhY2tTbG90cyB9OworICAgICAgICAg
ICAgbmV3U3RhY2sucmVtb3ZlKDAsIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIG5ld1N0YWNrLCBXVEZNb3ZlKGNv
bnRpbnVhdGlvbiksIENvbnRyb2xUcnkgeyBXVEZNb3ZlKHRyeUxhYmVsKSwgdHJ5RGVwdGggfSk7
CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgQ29udHJvbFR5cGUgY3JlYXRlQ2F0Y2goQmxv
Y2tTaWduYXR1cmUgc2lnbmF0dXJlLCB1bnNpZ25lZCBzdGFja1NpemUsIFJlZjxMYWJlbD4mJiB0
cnlTdGFydCwgUmVmUHRyPExhYmVsPiYmIGNvbnRpbnVhdGlvbiwgUmVmPExhYmVsPiB0cnlFbmQs
IHVuc2lnbmVkIHRyeURlcHRoLCBWaXJ0dWFsUmVnaXN0ZXIgZXhjZXB0aW9uKQorICAgICAgICBz
dGF0aWMgQ29udHJvbFR5cGUgY3JlYXRlQ2F0Y2goQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBj
b25zdCBXYXNtRXhwcmVzc2lvblNsb3RTdGFjayYgc3RhY2tTbG90cywgUmVmPExhYmVsPiYmIHRy
eVN0YXJ0LCBSZWZQdHI8TGFiZWw+JiYgY29udGludWF0aW9uLCBSZWY8TGFiZWw+IHRyeUVuZCwg
dW5zaWduZWQgdHJ5RGVwdGgsIFZpcnR1YWxSZWdpc3RlciBleGNlcHRpb24pCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIHN0YWNrU2l6ZSAtIHNp
Z25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xD
YXRjaCB7IENhdGNoS2luZDo6Q2F0Y2gsIFdURk1vdmUodHJ5U3RhcnQpLCBXVEZNb3ZlKHRyeUVu
ZCksIHRyeURlcHRoLCBleGNlcHRpb24gfSk7CisgICAgICAgICAgICBXYXNtRXhwcmVzc2lvblNs
b3RTdGFjayBuZXdTdGFjayB7IHN0YWNrU2xvdHMgfTsKKyAgICAgICAgICAgIG5ld1N0YWNrLnJl
bW92ZSgwLCBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSk7CisgICAgICAgICAgICByZXR1cm4g
Q29udHJvbFR5cGUoc2lnbmF0dXJlLCBuZXdTdGFjaywgV1RGTW92ZShjb250aW51YXRpb24pLCBD
b250cm9sQ2F0Y2ggeyBDYXRjaEtpbmQ6OkNhdGNoLCBXVEZNb3ZlKHRyeVN0YXJ0KSwgV1RGTW92
ZSh0cnlFbmQpLCB0cnlEZXB0aCwgZXhjZXB0aW9uIH0pOwogICAgICAgICB9CiAKICAgICAgICAg
c3RhdGljIGJvb2wgaXNMb29wKGNvbnN0IENvbnRyb2xUeXBlJiBjb250cm9sKSB7IHJldHVybiBz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPENvbnRyb2xMb29wPihjb250cm9sKTsgfQpAQCAtMTMyLDcg
KzE2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBjYXRjaERhdGEubV9raW5kID09
IENhdGNoS2luZDo6Q2F0Y2g7CiAgICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBzdGFja1Np
emUoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrU2l6ZTsgfQorICAgICAgICB1bnNpZ25lZCBzdGFj
a0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uU3RhY2tTbG90cy5zaXplKCk7IH0K
ICAgICAgICAgQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWdu
YXR1cmU7IH0KIAogICAgICAgICBSZWZQdHI8TGFiZWw+IHRhcmdldExhYmVsRm9yQnJhbmNoKCkg
Y29uc3QKQEAgLTE1OCwyNCArMTg2LDIwIEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAg
IEJsb2NrU2lnbmF0dXJlIG1fc2lnbmF0dXJlOwotICAgICAgICB1bnNpZ25lZCBtX3N0YWNrU2l6
ZTsKKyAgICAgICAgV2FzbUV4cHJlc3Npb25TbG90U3RhY2sgbV9leHByZXNzaW9uU3RhY2tTbG90
czsKICAgICAgICAgUmVmUHRyPExhYmVsPiBtX2NvbnRpbnVhdGlvbjsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIENvbnRyb2xUeXBlKEJsb2Nr
U2lnbmF0dXJlIHNpZ25hdHVyZSwgdW5zaWduZWQgc3RhY2tTaXplLCBSZWZQdHI8TGFiZWw+JiYg
Y29udGludWF0aW9uLCBUJiYgdCkKKyAgICAgICAgQ29udHJvbFR5cGUoQmxvY2tTaWduYXR1cmUg
c2lnbmF0dXJlLCBjb25zdCBXYXNtRXhwcmVzc2lvblNsb3RTdGFjayYgc3RhY2tTbG90cywgUmVm
UHRyPExhYmVsPiYmIGNvbnRpbnVhdGlvbiwgVCYmIHQpCiAgICAgICAgICAgICA6IEJhc2UoV1RG
TW92ZSh0KSkKICAgICAgICAgICAgICwgbV9zaWduYXR1cmUoc2lnbmF0dXJlKQotICAgICAgICAg
ICAgLCBtX3N0YWNrU2l6ZShzdGFja1NpemUpCisgICAgICAgICAgICAsIG1fZXhwcmVzc2lvblN0
YWNrU2xvdHMoc3RhY2tTbG90cykKICAgICAgICAgICAgICwgbV9jb250aW51YXRpb24oV1RGTW92
ZShjb250aW51YXRpb24pKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICB9OwotCi0gICAgdXNp
bmcgRXJyb3JUeXBlID0gU3RyaW5nOwotICAgIHVzaW5nIFBhcnRpYWxSZXN1bHQgPSBFeHBlY3Rl
ZDx2b2lkLCBFcnJvclR5cGU+OwotICAgIHVzaW5nIFVuZXhwZWN0ZWRSZXN1bHQgPSBVbmV4cGVj
dGVkPEVycm9yVHlwZT47Ci0KKyAgICAKICAgICB1c2luZyBDb250cm9sRW50cnkgPSBGdW5jdGlv
blBhcnNlcjxMTEludEdlbmVyYXRvcj46OkNvbnRyb2xFbnRyeTsKICAgICB1c2luZyBDb250cm9s
U3RhY2sgPSBGdW5jdGlvblBhcnNlcjxMTEludEdlbmVyYXRvcj46OkNvbnRyb2xTdGFjazsKICAg
ICB1c2luZyBSZXN1bHRMaXN0ID0gRnVuY3Rpb25QYXJzZXI8TExJbnRHZW5lcmF0b3I+OjpSZXN1
bHRMaXN0OwpAQCAtMTgzLDYgKzIwNywzMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgVHlwZWRFeHBy
ZXNzaW9uID0gRnVuY3Rpb25QYXJzZXI8TExJbnRHZW5lcmF0b3I+OjpUeXBlZEV4cHJlc3Npb247
CiAKICAgICBzdGF0aWMgRXhwcmVzc2lvblR5cGUgZW1wdHlFeHByZXNzaW9uKCkgeyByZXR1cm4g
eyB9OyB9OworICAgIHN0YXRpYyBWaXJ0dWFsUmVnaXN0ZXIgbmV4dFNsb3RGb3JVcHBlckJpdHMo
VmlydHVhbFJlZ2lzdGVyIGxvdykKKyAgICB7CisgICAgICAgIHJldHVybiBsb3cgKyAxOworICAg
IH0KKyAgICAKKyAgICB2b2lkIHR5cGVkTW92ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBUeXBlZEV4
cHJlc3Npb24gc3JjKQorICAgIHsKKyAgICAgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5lcmF0b3JJ
bnRlcm5hbDo6dmVyYm9zZSwgIlsiLCBtX2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAgICAgICAg
ICJNb3ZlIHR5cGUgIiwgc3JjLnR5cGUoKSwgIiBhdCBpbmRleCAiLCBzcmMudmFsdWUoKSwgIiwg
IiwgbmV4dFNsb3RGb3JVcHBlckJpdHMoc3JjLnZhbHVlKCkpLCAiIHRvICIsIGRzdCwgIiwgIiwg
bmV4dFNsb3RGb3JVcHBlckJpdHMoZHN0KSk7CisgICAgICAgIAorICAgICAgICBXYXNtTW92Ojpl
bWl0KHRoaXMsIGRzdCwgc3JjKTsKKyAgICAgICAgaWYgKHNyYy50eXBlKCkuc2l6ZSgpID09IDE2
KQorICAgICAgICAgICAgV2FzbU1vdjo6ZW1pdCh0aGlzLCBuZXh0U2xvdEZvclVwcGVyQml0cyhk
c3QpLCBuZXh0U2xvdEZvclVwcGVyQml0cyhzcmMudmFsdWUoKSkpOworICAgIH0KKyAgICAKKyAg
ICBDaGVja2VkPHVuc2lnbmVkPiBuZXh0U2xvdEluZGV4KFR5cGUgdHlwZSkgY29uc3QKKyAgICB7
CisgICAgICAgIEFTU0VSVCh0eXBlLnNpemUoKSA9PSA4IHx8IHR5cGUuc2l6ZSgpID09IDE2KTsK
KyAgICAgICAgQ2hlY2tlZDx1bnNpZ25lZD4gc2xvdEluZGV4ID0gbV9maXJzdFN0YWNrU2xvdElu
ZGV4OworICAgICAgICBpZiAobV9leHByZXNzaW9uU3RhY2tTbG90cy5zaXplKCkpCisgICAgICAg
ICAgICBzbG90SW5kZXggPSBtX2V4cHJlc3Npb25TdGFja1Nsb3RzLmxhc3QoKS5zbG90SW5kZXgg
KyAxOworICAgICAgICBzbG90SW5kZXggKz0gdHlwZS5zaXplKCkgLyA4IC0gMTsKKyAgICAgICAg
cmV0dXJuIHNsb3RJbmRleDsKKyAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgLi4uQXJn
cz4KICAgICBORVZFUl9JTkxJTkUgVW5leHBlY3RlZFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
ZmFpbChBcmdzLi4uIGFyZ3MpIGNvbnN0CkBAIC0xOTgsMzQgKzI0Niw1NyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhwcmVzc2lvbkxpc3RBLCB0eXBlbmFtZSBFeHByZXNzaW9u
TGlzdEI+CiAgICAgdm9pZCB1bmlmeVZhbHVlc1dpdGhCbG9jayhjb25zdCBFeHByZXNzaW9uTGlz
dEEmIGRlc3RpbmF0aW9ucywgY29uc3QgRXhwcmVzc2lvbkxpc3RCJiB2YWx1ZXMpCiAgICAgewor
ICAgICAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVybmFsOjp2ZXJib3NlLCAiWyIs
IG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAgICAgIlVuaWZ5ICIsIGxpc3REdW1wKGRl
c3RpbmF0aW9ucyksICIgPC0gIiwgbGlzdER1bXAodmFsdWVzKSk7CiAgICAgICAgIEFTU0VSVChk
ZXN0aW5hdGlvbnMuc2l6ZSgpIDw9IHZhbHVlcy5zaXplKCkpOwogICAgICAgICBhdXRvIG9mZnNl
dCA9IHZhbHVlcy5zaXplKCkgLSBkZXN0aW5hdGlvbnMuc2l6ZSgpOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGRlc3RpbmF0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAg
YXV0byYgc3JjID0gdmFsdWVzW29mZnNldCArIGldOwogICAgICAgICAgICAgYXV0byYgZHN0ID0g
ZGVzdGluYXRpb25zW2ldOwotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdp
c3Rlcj4oc3JjKSAhPSBzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KGRzdCkpCi0gICAgICAg
ICAgICAgICAgV2FzbU1vdjo6ZW1pdCh0aGlzLCBkc3QsIHNyYyk7CisgICAgICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihzcmMudmFsdWUoKSkgIT0gc3RhdGljX2Nhc3Q8
VmlydHVhbFJlZ2lzdGVyPihkc3QudmFsdWUoKSkpCisgICAgICAgICAgICAgICAgdHlwZWRNb3Zl
KGRzdCwgc3JjKTsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBzdGFja0Nv
dW50KCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uU3RhY2tTbG90cy5zaXplKCk7IH0KKyAg
ICB1bnNpZ25lZCBzdGFja1Nsb3RTaXplKCkgY29uc3QgeyByZXR1cm4gbmV4dFNsb3RJbmRleChU
eXBlczo6STY0KTsgfQogCiAgICAgZW51bSBOb0NvbnNpc3RlbmN5Q2hlY2tUYWcgeyBOb0NvbnNp
c3RlbmN5Q2hlY2sgfTsKLSAgICBFeHByZXNzaW9uVHlwZSBwdXNoKE5vQ29uc2lzdGVuY3lDaGVj
a1RhZykKKyAgICBFeHByZXNzaW9uVHlwZSBwdXNoKFdhc206OlR5cGUgdHlwZSwgTm9Db25zaXN0
ZW5jeUNoZWNrVGFnKQogICAgIHsKLSAgICAgICAgbV9tYXhTdGFja1NpemUgPSBzdGQ6Om1heCht
X21heFN0YWNrU2l6ZSwgKyttX3N0YWNrU2l6ZSk7Ci0gICAgICAgIHJldHVybiB2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChtX3N0YWNrU2l6ZSAtIDEpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKG5leHRTbG90SW5kZXgodHlwZSkpOworICAgICAgICBtX2V4
cHJlc3Npb25TdGFja1Nsb3RzLmFwcGVuZCggeyB0eXBlLCBuZXh0U2xvdEluZGV4KHR5cGUpIH0g
KTsKKyAgICAgICAgCisgICAgICAgIGRhdGFMb2dMbklmKExMSW50R2VuZXJhdG9ySW50ZXJuYWw6
OnZlcmJvc2UsICJbIiwgbV9mdW5jdGlvbkluZGV4LCAiXSIsCisgICAgICAgICAgICAiUHVzaCB0
eXBlICIsIHR5cGUsICIgYXQgaW5kZXggIiwgbV9leHByZXNzaW9uU3RhY2tTbG90cy5zaXplKCkg
LSAxLCAiIGdvZXMgaW4gIiwKKyAgICAgICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1f
ZXhwcmVzc2lvblN0YWNrU2xvdHMubGFzdCgpLnNsb3RJbmRleCksICIsICIsCisgICAgICAgICAg
ICBuZXh0U2xvdEZvclVwcGVyQml0cyh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2V4cHJlc3Np
b25TdGFja1Nsb3RzLmxhc3QoKS5zbG90SW5kZXgpKSk7CisgICAgICAgIAorICAgICAgICBtX21h
eFN0YWNrU2xvdFNpemUgPSBzdGQ6Om1heChzdGFja1Nsb3RTaXplKCksIG1fbWF4U3RhY2tTbG90
U2l6ZS52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBFeHBy
ZXNzaW9uVHlwZSBwdXNoKCkKKyAgICBFeHByZXNzaW9uVHlwZSBwdXNoKFdhc206OlR5cGUgdHlw
ZSkKICAgICB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKLSAgICAgICAgcmV0dXJuIHB1
c2goTm9Db25zaXN0ZW5jeUNoZWNrKTsKKyAgICAgICAgcmV0dXJuIHB1c2godHlwZSwgTm9Db25z
aXN0ZW5jeUNoZWNrKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFBvcFZhbHVlRnJvbVN0YWNrKCkg
eyAtLW1fc3RhY2tTaXplOyB9CisgICAgdm9pZCBkaWRQb3BWYWx1ZUZyb21TdGFjayhXYXNtOjpU
eXBlIHR5cGUpCisgICAgeworICAgICAgICBhdXRvIHBvcHBlZFNsb3QgPSBtX2V4cHJlc3Npb25T
dGFja1Nsb3RzLnRha2VMYXN0KCk7CisgICAgICAgIAorICAgICAgICBkYXRhTG9nTG5JZihMTElu
dEdlbmVyYXRvckludGVybmFsOjp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAor
ICAgICAgICAgICAgIlBvcHBlZCAiLCBwb3BwZWRTbG90LnR5cGUsICIgaW5kZXggIiwgbV9leHBy
ZXNzaW9uU3RhY2tTbG90cy5zaXplKCksICIgc2xvdCBpbmRleCAiLCBwb3BwZWRTbG90LnNsb3RJ
bmRleC52YWx1ZSgpLCAiIC0gZXhwZWN0aW5nICIsIHR5cGUpOworICAgICAgICAKKyAgICAgICAg
QVNTRVJUX1VOVVNFRChwb3BwZWRTbG90LCBwb3BwZWRTbG90LnR5cGUgPT0gdHlwZSk7CisgICAg
ICAgIEFTU0VSVChwb3BwZWRTbG90LnNsb3RJbmRleCA9PSBuZXh0U2xvdEluZGV4KHR5cGUpKTsK
KyAgICB9CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRBcmd1bWVu
dHMoY29uc3QgU2lnbmF0dXJlJik7Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkTG9jYWwoVHlwZSwgdWludDMyX3QpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIGFkZExvY2FsKFR5cGUsIHVpbnQzMl90LCB1aW50MzJfdCk7CiAgICAgRXhwcmVz
c2lvblR5cGUgYWRkQ29uc3RhbnQoVHlwZSwgaW50NjRfdCk7CisgICAgRXhwcmVzc2lvblR5cGUg
YWRkQ29uc3RhbnQodjEyOF90KTsKIAogICAgIC8vIFJlZmVyZW5jZXMKICAgICBQYXJ0aWFsUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUgdmFsdWUs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwpAQCAtMjQyLDggKzMxMyw4IEBAIHB1YmxpYzoKICAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZUNvcHkodW5zaWduZWQs
IHVuc2lnbmVkLCBFeHByZXNzaW9uVHlwZSBkc3RPZmZzZXQsIEV4cHJlc3Npb25UeXBlIHNyY09m
ZnNldCwgRXhwcmVzc2lvblR5cGUgbGVuZ3RoKTsKIAogICAgIC8vIExvY2FscwotICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpOworICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBX
YXNtOjpUeXBlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgV2FzbTo6VHlwZSwgRXhw
cmVzc2lvblR5cGUgdmFsdWUpOwogCiAgICAgLy8gR2xvYmFscwogICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGdldEdsb2JhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5
cGUmIHJlc3VsdCk7CkBAIC0yOTMsNyArMzY0LDcgQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhdGNoQWxsVG9VbnJlYWNoYWJsZShDb250cm9sVHlw
ZSYpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZERlbGVnYXRlKENv
bnRyb2xUeXBlJiwgQ29udHJvbFR5cGUmKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGREZWxlZ2F0ZVRvVW5yZWFjaGFibGUoQ29udHJvbFR5cGUmLCBDb250cm9sVHlw
ZSYpOwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRocm93KHVuc2ln
bmVkIGV4Y2VwdGlvbkluZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBTdGFjayYp
OworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRocm93KHVuc2lnbmVk
IGV4Y2VwdGlvbkluZGV4LCBTdGFjayYgYXJncyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkUmV0aHJvdyh1bnNpZ25lZCwgQ29udHJvbFR5cGUmKTsKIAogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJldHVybihjb25zdCBDb250cm9sVHlw
ZSYsIFN0YWNrJiByZXR1cm5WYWx1ZXMpOwpAQCAtMzA4LDYgKzM3OSwxMCBAQCBwdWJsaWM6CiAg
ICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbEluZGlyZWN0KHVuc2ln
bmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4m
IGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIGFkZENhbGxSZWYoY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25U
eXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkVW5yZWFjaGFibGUoKTsKKyAgICAKKyAgICAvLyBTaW1kCisgICAg
dGVtcGxhdGU8RXh0U2ltZE9wVHlwZSwgc2l6ZV90IG51bUltbWVkaWF0ZXMsIHNpemVfdCBudW1B
cmd1bWVudHM+CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU2ltZE9w
KHN0ZDo6YXJyYXk8dWludDhfdCwgbnVtSW1tZWRpYXRlcz4gaW1tZWRpYXRlcywgc3RkOjphcnJh
eTxFeHByZXNzaW9uVHlwZSwgbnVtQXJndW1lbnRzPiBhcmd1bWVudHMsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nTG9jYWxzKCk7CiAKQEAgLTMy
MywxMyArMzk4LDEzIEBAIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgTExJbnRDYWxsSW5mb3JtYXRp
b24gewogICAgICAgICB1bnNpZ25lZCBzdGFja09mZnNldDsKLSAgICAgICAgdW5zaWduZWQgbnVt
YmVyT2ZTdGFja0FyZ3VtZW50czsKLSAgICAgICAgUmVzdWx0TGlzdCBhcmd1bWVudHM7CisgICAg
ICAgIHVuc2lnbmVkIHNpemVPZlN0YWNrQXJndW1lbnRzOworICAgICAgICBWZWN0b3I8VHlwZWRF
eHByZXNzaW9uLCAyPiBhcmd1bWVudHM7CiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzdWx0TGlzdCYpPiBjb21taXRSZXN1bHRzOwogICAgIH07CiAKICAgICBMTEludENhbGxJbmZv
cm1hdGlvbiBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0dXJlJik7Ci0gICAg
VmVjdG9yPFZpcnR1YWxSZWdpc3RlciwgMj4gY2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVlKGNvbnN0
IFNpZ25hdHVyZSYpOworICAgIFZlY3RvcjxUeXBlZEV4cHJlc3Npb24sIDI+IGNhbGxJbmZvcm1h
dGlvbkZvckNhbGxlZShjb25zdCBTaWduYXR1cmUmKTsKICAgICB2b2lkIGxpbmtTd2l0Y2hUYXJn
ZXRzKExhYmVsJiwgdW5zaWduZWQgbG9jYXRpb24pOwogCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZp
cnR1YWxSZWdpc3RlckZvcldhc21Mb2NhbCh1aW50MzJfdCBpbmRleCkKQEAgLTMzNywxMCArNDEy
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGluZGV4IDwgbV9jb2RlQmxvY2stPm1fbnVtQXJn
dW1lbnRzKQogICAgICAgICAgICAgcmV0dXJuIG1fbm9ybWFsaXplZEFyZ3VtZW50c1tpbmRleF07
CiAKLSAgICAgICAgY29uc3QgYXV0byYgY2FsbGluZ0NvbnZlbnRpb24gPSB3YXNtQ2FsbGluZ0Nv
bnZlbnRpb24oKTsKLSAgICAgICAgY29uc3QgdWludDMyX3QgZ3ByQ291bnQgPSBjYWxsaW5nQ29u
dmVudGlvbi5ncHJBcmdzLnNpemUoKTsKLSAgICAgICAgY29uc3QgdWludDMyX3QgZnByQ291bnQg
PSBjYWxsaW5nQ29udmVudGlvbi5mcHJBcmdzLnNpemUoKTsKLSAgICAgICAgcmV0dXJuIHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGluZGV4IC0gbV9jb2RlQmxvY2stPm1fbnVtQXJndW1lbnRzICsg
Z3ByQ291bnQgKyBmcHJDb3VudCArIG51bWJlck9mTExJbnRDYWxsZWVTYXZlUmVnaXN0ZXJzKTsK
KyAgICAgICAgcmV0dXJuIG1fbG9jYWxzW2luZGV4IC0gbV9jb2RlQmxvY2stPm1fbnVtQXJndW1l
bnRzXTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uVHlwZSBqc051bGxDb25zdGFudCgpCkBAIC0z
NjcsOSArNDM5LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZ2V0RHJvcEtlZXBDb3VudChjb25z
dCBDb250cm9sVHlwZSYgdGFyZ2V0LCB1bnNpZ25lZCYgc3RhcnRPZmZzZXQsIHVuc2lnbmVkJiBk
cm9wLCB1bnNpZ25lZCYga2VlcCkKICAgICB7Ci0gICAgICAgIHN0YXJ0T2Zmc2V0ID0gdGFyZ2V0
LnN0YWNrU2l6ZSgpICsgMTsKKyAgICAgICAgc3RhcnRPZmZzZXQgPSB0YXJnZXQuc3RhY2tDb3Vu
dCgpICsgMTsKICAgICAgICAga2VlcCA9IHRhcmdldC5icmFuY2hUYXJnZXRBcml0eSgpOwotICAg
ICAgICBkcm9wID0gbV9zdGFja1NpemUgLSB0YXJnZXQuc3RhY2tTaXplKCkgLSB0YXJnZXQuYnJh
bmNoVGFyZ2V0QXJpdHkoKTsKKyAgICAgICAgZHJvcCA9IHN0YWNrQ291bnQoKSAtIHRhcmdldC5z
dGFja0NvdW50KCkgLSB0YXJnZXQuYnJhbmNoVGFyZ2V0QXJpdHkoKTsKICAgICB9CiAKICAgICB2
b2lkIGRyb3BLZWVwKFN0YWNrJiB2YWx1ZXMsIGNvbnN0IENvbnRyb2xUeXBlJiB0YXJnZXQsIGJv
b2wgZHJvcFZhbHVlcykKQEAgLTM4OSwzMCArNDYxLDY1IEBAIHByaXZhdGU6CiAgICAgICAgIGlm
IChrZWVwKQogICAgICAgICAgICAgV2FzbURyb3BLZWVwOjplbWl0KHRoaXMsIHN0YXJ0T2Zmc2V0
LCBkcm9wLCBrZWVwKTsKICAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdGFjaywgdHlw
ZW5hbWUgRnVuY3Rvcj4KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAg
IHZvaWQgd2Fsa0V4cHJlc3Npb25TdGFjayhTdGFjayYgZXhwcmVzc2lvblN0YWNrLCB1bnNpZ25l
ZCBzdGFja1NpemUsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBleHByZXNzaW9uU3RhY2suc2l6ZSgpOyBpID4gMDsgLS1pKSB7Ci0gICAg
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKHN0
YWNrU2l6ZSAtIGkpOwotICAgICAgICAgICAgZnVuY3RvcihleHByZXNzaW9uU3RhY2tbZXhwcmVz
c2lvblN0YWNrLnNpemUoKSAtIGldLCBzbG90KTsKKyAgICAgICAgdW5zaWduZWQgc2xvdEluZGV4
ID0gbV9maXJzdFN0YWNrU2xvdEluZGV4OworICAgICAgICB1bnNpZ25lZCB3YXNtU2xvdEluZGV4
ID0gMDsKKyAgICAgICAgCisgICAgICAgIHdoaWxlICh3YXNtU2xvdEluZGV4IDwgc3RhY2tTaXpl
KSB7CisgICAgICAgICAgICBhdXRvJiBleHByZXNzaW9uID0gZXhwcmVzc2lvblN0YWNrW3dhc21T
bG90SW5kZXhdOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbi50eXBl
KCkuc2l6ZSgpID09IDE2KQorICAgICAgICAgICAgICAgICsrc2xvdEluZGV4OworICAgICAgICAg
ICAgCisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCA9IHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKHNsb3RJbmRleCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVChleHBy
ZXNzaW9uLnZhbHVlKCkgPT0gc2xvdCB8fCBleHByZXNzaW9uLnZhbHVlKCkuaXNDb25zdGFudCgp
IHx8IGV4cHJlc3Npb24udmFsdWUoKS5pc0FyZ3VtZW50KCkKKyAgICAgICAgICAgICAgICAgICB8
fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZXhwcmVzc2lvbi52YWx1ZSgpLnRvTG9jYWwoKSkgPCBt
X2NvZGVCbG9jay0+bV9udW1WYXJzKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGV4
cHJlc3Npb24udHlwZSgpLnNpemUoKSA9PSAxNikgeworICAgICAgICAgICAgICAgIEFTU0VSVChu
ZXh0U2xvdEZvclVwcGVyQml0cyhzbG90KSA9PSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzbG90
SW5kZXggLSAxKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5leHRTbG90Rm9yVXBwZXJCaXRz
KGV4cHJlc3Npb24udmFsdWUoKSkgPT0gbmV4dFNsb3RGb3JVcHBlckJpdHMoc2xvdCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgfHwgbmV4dFNsb3RGb3JVcHBlckJpdHMoZXhwcmVzc2lvbi52YWx1
ZSgpKS5pc0NvbnN0YW50KCkKKyAgICAgICAgICAgICAgICAgICAgICAgfHwgbmV4dFNsb3RGb3JV
cHBlckJpdHMoZXhwcmVzc2lvbi52YWx1ZSgpKS5pc0FyZ3VtZW50KCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5leHRTbG90Rm9yVXBwZXJCaXRzKGV4
cHJlc3Npb24udmFsdWUoKSkudG9Mb2NhbCgpKSA8IG1fY29kZUJsb2NrLT5tX251bVZhcnMpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoJmV4cHJlc3Npb25T
dGFjayA9PSAmbV9wYXJzZXItPmV4cHJlc3Npb25TdGFjaygpKSB7CisgICAgICAgICAgICAgICAg
YXV0byBzbG90RGF0YSA9IG1fZXhwcmVzc2lvblN0YWNrU2xvdHNbd2FzbVNsb3RJbmRleF07Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24udHlwZSgpID09IHNsb3REYXRhLnR5cGUp
OworICAgICAgICAgICAgICAgIEFTU0VSVChzbG90RGF0YS5zbG90SW5kZXggPT0gc2xvdEluZGV4
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3RvcihleHBy
ZXNzaW9uLCBzbG90KTsKKyAgICAgICAgICAgICsrc2xvdEluZGV4OworICAgICAgICAgICAgKyt3
YXNtU2xvdEluZGV4OwogICAgICAgICB9CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
U3RhY2ssIHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
ICAgICB2b2lkIHdhbGtFeHByZXNzaW9uU3RhY2soU3RhY2smIGV4cHJlc3Npb25TdGFjaywgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7Ci0gICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2so
ZXhwcmVzc2lvblN0YWNrLCBtX3N0YWNrU2l6ZSwgZnVuY3Rvcik7CisgICAgICAgIHdhbGtFeHBy
ZXNzaW9uU3RhY2soZXhwcmVzc2lvblN0YWNrLCBleHByZXNzaW9uU3RhY2suc2l6ZSgpLCBmdW5j
dG9yKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2
b2lkIHdhbGtFeHByZXNzaW9uU3RhY2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7Cisg
ICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2sobV9wYXJzZXItPmV4cHJlc3Npb25TdGFjaygpLCBm
dW5jdG9yKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZv
aWQgd2Fsa0V4cHJlc3Npb25TdGFjayhDb250cm9sRW50cnkmIGVudHJ5LCBjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgc3RhY2tTaXplID0gZW50cnkuY29u
dHJvbERhdGEuc3RhY2tTaXplKCk7CisgICAgICAgIHVuc2lnbmVkIHN0YWNrU2l6ZSA9IGVudHJ5
LmNvbnRyb2xEYXRhLnN0YWNrQ291bnQoKTsKKyAgICAgICAgQVNTRVJUKGVudHJ5LmVuY2xvc2Vk
RXhwcmVzc2lvblN0YWNrLnNpemUoKSA9PSBzdGFja1NpemUpOwogICAgICAgICB3YWxrRXhwcmVz
c2lvblN0YWNrKGVudHJ5LmVuY2xvc2VkRXhwcmVzc2lvblN0YWNrLCBzdGFja1NpemUsIGZ1bmN0
b3IpOwogICAgIH0KIAotICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpCisgICAgdm9pZCBjaGVj
a0NvbnNpc3RlbmN5KHVuc2lnbmVkIHN0YWNrQ291bnQpCiAgICAgewogI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgICAgIC8vIFRoZSBydWxlcyBmb3IgbG9jYWxzIGFuZCBjb25zdGFudHMgaW4gdGhl
IHN0YWNrIGFyZToKQEAgLTQyNyw0OCArNTM0LDU0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGV4cHJlc3Npb24gPT0gc2xvdCB8fCBleHByZXNzaW9uLmlzQ29uc3RhbnQoKSk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQotICAgICAgICB3YWxrRXhwcmVzc2lvblN0YWNr
KG1fcGFyc2VyLT5leHByZXNzaW9uU3RhY2soKSwgWyZdKFZpcnR1YWxSZWdpc3RlciBleHByZXNz
aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkgewotICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Np
b24gPT0gc2xvdCB8fCBleHByZXNzaW9uLmlzQ29uc3RhbnQoKSB8fCBleHByZXNzaW9uLmlzQXJn
dW1lbnQoKSB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZXhwcmVzc2lvbi50b0xvY2FsKCkpIDwg
bV9jb2RlQmxvY2stPm1fbnVtVmFycyk7CisgICAgICAgIAorICAgICAgICAvLyBXZSBtaWdodCBi
ZSBpbiB0aGUgcHJvY2VzcyBvZiBhZGRpbmcgc3RhY2sgc2xvdHMgZnJvbSB0aGUgcGFyc2VyLgor
ICAgICAgICBBU1NFUlQoc3RhY2tDb3VudCA8PSBtX3BhcnNlci0+ZXhwcmVzc2lvblN0YWNrKCku
c2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKHN0YWNrQ291bnQgPD0gdGhpcy0+c3RhY2tDb3VudCgp
KTsKKyAgICAgICAgQVNTRVJUKHRoaXMtPnN0YWNrQ291bnQoKSA+PSBtX3BhcnNlci0+ZXhwcmVz
c2lvblN0YWNrKCkuc2l6ZSgpKTsKKyAgICAgICAgCisgICAgICAgIHdhbGtFeHByZXNzaW9uU3Rh
Y2sobV9wYXJzZXItPmV4cHJlc3Npb25TdGFjaygpLCBzdGFja0NvdW50LCBbJl0oY29uc3QgVHlw
ZWRFeHByZXNzaW9uJiBleHByZXNzaW9uLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkgeworICAgICAg
ICAgICAgQVNTRVJUKGV4cHJlc3Npb24udmFsdWUoKSA9PSBzbG90IHx8IGV4cHJlc3Npb24udmFs
dWUoKS5pc0NvbnN0YW50KCkgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQXJndW1lbnQoKQorICAg
ICAgICAgICAgICAgICAgIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihleHByZXNzaW9uLnZhbHVl
KCkudG9Mb2NhbCgpKSA8IG1fY29kZUJsb2NrLT5tX251bVZhcnMpOwogICAgICAgICB9KTsKICNl
bmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogICAgIH0KKyAgICAKKyAgICB2b2lkIGNoZWNrQ29uc2lz
dGVuY3koKQorICAgIHsKKyAgICAgICAgY2hlY2tDb25zaXN0ZW5jeShtX3BhcnNlci0+ZXhwcmVz
c2lvblN0YWNrKCkuc2l6ZSgpKTsKKyAgICB9CiAKLSAgICB2b2lkIG1hdGVyaWFsaXplQ29uc3Rh
bnRzQW5kTG9jYWxzKFN0YWNrJiBleHByZXNzaW9uU3RhY2ssIE5vQ29uc2lzdGVuY3lDaGVja1Rh
ZykKKyAgICB2b2lkIG1hdGVyaWFsaXplQ29uc3RhbnRzQW5kTG9jYWxzKFN0YWNrJiBleHByZXNz
aW9uU3RhY2ssIGJvb2wgbWF0ZXJpYWxpemVDb25zdGFudHMsIE5vQ29uc2lzdGVuY3lDaGVja1Rh
ZykKICAgICB7Ci0gICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2soZXhwcmVzc2lvblN0YWNrLCBb
Jl0oYXV0byYgZXhwcmVzc2lvbiwgVmlydHVhbFJlZ2lzdGVyIHNsb3QpIHsKLSAgICAgICAgICAg
IEFTU0VSVChleHByZXNzaW9uLnZhbHVlKCkgPT0gc2xvdCB8fCBleHByZXNzaW9uLnZhbHVlKCku
aXNDb25zdGFudCgpIHx8IGV4cHJlc3Npb24udmFsdWUoKS5pc0FyZ3VtZW50KCkgfHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGV4cHJlc3Npb24udmFsdWUoKS50b0xvY2FsKCkpIDwgbV9jb2RlQmxv
Y2stPm1fbnVtVmFycyk7CisgICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2soZXhwcmVzc2lvblN0
YWNrLCBbJl0oVHlwZWRFeHByZXNzaW9uJiBleHByZXNzaW9uLCBWaXJ0dWFsUmVnaXN0ZXIgc2xv
dCkgeworICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24udmFsdWUoKSA9PSBzbG90IHx8IGV4
cHJlc3Npb24udmFsdWUoKS5pc0NvbnN0YW50KCkgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQXJn
dW1lbnQoKQorICAgICAgICAgICAgICAgICAgIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihleHBy
ZXNzaW9uLnZhbHVlKCkudG9Mb2NhbCgpKSA8IG1fY29kZUJsb2NrLT5tX251bVZhcnMpOwogICAg
ICAgICAgICAgaWYgKGV4cHJlc3Npb24udmFsdWUoKSA9PSBzbG90KQogICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIFdhc21Nb3Y6OmVtaXQodGhpcywgc2xvdCwgZXhwcmVzc2lv
bik7CisgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbi52YWx1ZSgpLmlzQ29uc3RhbnQoKSAmJiAh
bWF0ZXJpYWxpemVDb25zdGFudHMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgdHlwZWRNb3ZlKHNsb3QsIGV4cHJlc3Npb24pOwogICAgICAgICAgICAgZXhwcmVzc2lvbiA9
IFR5cGVkRXhwcmVzc2lvbiB7IGV4cHJlc3Npb24udHlwZSgpLCBzbG90IH07CiAgICAgICAgIH0p
OwogICAgIH0KIAotICAgIHZvaWQgbWF0ZXJpYWxpemVDb25zdGFudHNBbmRMb2NhbHMoU3RhY2sm
IGV4cHJlc3Npb25TdGFjaykKKyAgICB2b2lkIG1hdGVyaWFsaXplQ29uc3RhbnRzQW5kTG9jYWxz
KFN0YWNrJiBleHByZXNzaW9uU3RhY2ssIGJvb2wgbWF0ZXJpYWxpemVDb25zdGF0YW50cyA9IHRy
dWUpCiAgICAgewogICAgICAgICBpZiAoZXhwcmVzc2lvblN0YWNrLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7Ci0gICAgICAgIG1h
dGVyaWFsaXplQ29uc3RhbnRzQW5kTG9jYWxzKGV4cHJlc3Npb25TdGFjaywgTm9Db25zaXN0ZW5j
eUNoZWNrKTsKKyAgICAgICAgbWF0ZXJpYWxpemVDb25zdGFudHNBbmRMb2NhbHMoZXhwcmVzc2lv
blN0YWNrLCBtYXRlcmlhbGl6ZUNvbnN0YXRhbnRzLCBOb0NvbnNpc3RlbmN5Q2hlY2spOwogICAg
ICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogCiAgICAgdm9pZCBzcGxpdFN0YWNrKEJs
b2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgU3RhY2smIGVuY2xvc2luZ1N0YWNrLCBTdGFjayYgbmV3
U3RhY2spCiAgICAgewogICAgICAgICBKU0M6Oldhc206OnNwbGl0U3RhY2soc2lnbmF0dXJlLCBl
bmNsb3NpbmdTdGFjaywgbmV3U3RhY2spOwotCi0gICAgICAgIG1fc3RhY2tTaXplIC09IG5ld1N0
YWNrLnNpemUoKTsKKyAgICAgICAgY2hlY2tDb25zaXN0ZW5jeShlbmNsb3NpbmdTdGFjay5zaXpl
KCkgLSBuZXdTdGFjay5zaXplKCkpOworICAgICAgICBtYXRlcmlhbGl6ZUNvbnN0YW50c0FuZExv
Y2FscyhlbmNsb3NpbmdTdGFjaywgLyogbWF0ZXJpYWxpemVDb25zdGFudHMgPSAqLyBmYWxzZSk7
CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKLSAgICAgICAgd2Fsa0V4cHJlc3Npb25TdGFj
ayhlbmNsb3NpbmdTdGFjaywgWyZdKFR5cGVkRXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgVmlydHVh
bFJlZ2lzdGVyIHNsb3QpIHsKLSAgICAgICAgICAgIEFTU0VSVChleHByZXNzaW9uLnZhbHVlKCkg
PT0gc2xvdCB8fCBleHByZXNzaW9uLnZhbHVlKCkuaXNDb25zdGFudCgpIHx8IGV4cHJlc3Npb24u
dmFsdWUoKS5pc0FyZ3VtZW50KCkgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV4cHJlc3Npb24u
dmFsdWUoKS50b0xvY2FsKCkpIDwgbV9jb2RlQmxvY2stPm1fbnVtVmFycyk7Ci0gICAgICAgICAg
ICBpZiAoZXhwcmVzc2lvbi52YWx1ZSgpID09IHNsb3QgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlz
Q29uc3RhbnQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBXYXNtTW92
OjplbWl0KHRoaXMsIHNsb3QsIGV4cHJlc3Npb24pOwotICAgICAgICAgICAgZXhwcmVzc2lvbiA9
IFR5cGVkRXhwcmVzc2lvbiB7IGV4cHJlc3Npb24udHlwZSgpLCBzbG90IH07Ci0gICAgICAgIH0p
OwotICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7Ci0gICAgICAgIG1fc3RhY2tTaXplICs9IG5l
d1N0YWNrLnNpemUoKTsKICAgICB9CiAKICAgICB2b2lkIGZpbmFsaXplUHJldmlvdXNCbG9ja0Zv
ckNhdGNoKENvbnRyb2xUeXBlJiwgU3RhY2smKTsKQEAgLTQ5MiwxMCArNjA1LDEyIEBAIHByaXZh
dGU6CiAgICAgRXhwcmVzc2lvblR5cGUgbV9qc051bGxDb25zdGFudDsKICAgICBFeHByZXNzaW9u
VHlwZSBtX3plcm9Db25zdGFudDsKICAgICBSZXN1bHRMaXN0IG1fdW5pdGlhbGl6ZWRMb2NhbHM7
CisgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3RlciwgMj4gbV9sb2NhbHM7CiAgICAgSGFzaE1hcDxF
bmNvZGVkSlNWYWx1ZSwgVmlydHVhbFJlZ2lzdGVyLCBXVEY6OkludEhhc2g8RW5jb2RlZEpTVmFs
dWU+LCBDb25zdGFudE1hcEhhc2hUcmFpdHM+IG1fY29uc3RhbnRNYXA7Ci0gICAgVmVjdG9yPFZp
cnR1YWxSZWdpc3RlciwgMj4gbV9yZXN1bHRzOwotICAgIENoZWNrZWQ8dW5zaWduZWQ+IG1fc3Rh
Y2tTaXplIHsgMCB9OwotICAgIENoZWNrZWQ8dW5zaWduZWQ+IG1fbWF4U3RhY2tTaXplIHsgMCB9
OworICAgIFZlY3RvcjxUeXBlZEV4cHJlc3Npb24sIDI+IG1fcmVzdWx0czsKKyAgICBXYXNtRXhw
cmVzc2lvblNsb3RTdGFjayBtX2V4cHJlc3Npb25TdGFja1Nsb3RzOworICAgIENoZWNrZWQ8dW5z
aWduZWQ+IG1fbWF4U3RhY2tTbG90U2l6ZSB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2ZpcnN0U3Rh
Y2tTbG90SW5kZXggPSAwOwogICAgIENoZWNrZWQ8dW5zaWduZWQ+IG1fdHJ5RGVwdGggeyAwIH07
CiAgICAgYm9vbCBtX3VzZXNFeGNlcHRpb25zIHsgZmFsc2UgfTsKIH07CkBAIC01MzUsMTkgKzY1
MCwxNiBAQCBMTEludEdlbmVyYXRvcjo6TExJbnRHZW5lcmF0b3IoTW9kdWxlSW5mb3JtYXRpb24m
IGluZm8sIHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXgsCiAgICAgICAgICp0aHJlYWRTcGVjaWZpYyA9
IEJ1ZmZlcigpOwogICAgICAgICBtX3dyaXRlci5zZXRJbnN0cnVjdGlvbkJ1ZmZlcihXVEZNb3Zl
KGJ1ZmZlcikpOwogICAgIH0KLQotICAgIG1fY29kZUJsb2NrLT5tX251bVZhcnMgPSBudW1iZXJP
ZkxMSW50Q2FsbGVlU2F2ZVJlZ2lzdGVyczsKLSAgICBtX3N0YWNrU2l6ZSA9IG51bWJlck9mTExJ
bnRDYWxsZWVTYXZlUmVnaXN0ZXJzOwotICAgIG1fbWF4U3RhY2tTaXplID0gbnVtYmVyT2ZMTElu
dENhbGxlZVNhdmVSZWdpc3RlcnM7Ci0KKyAgICBtX2NvZGVCbG9jay0+bV9udW1WYXJzID0gMDsK
ICAgICBXYXNtRW50ZXI6OmVtaXQodGhpcyk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlv
bkNvZGVCbG9ja0dlbmVyYXRvcj4gTExJbnRHZW5lcmF0b3I6OmZpbmFsaXplKCkKIHsKKyAgICBj
aGVja0NvbnNpc3RlbmN5KCk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb2RlQmxvY2spOwogCi0g
ICAgc2l6ZV90IG51bUNhbGxlZUxvY2FscyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudFJlZ2lzdGVycygpLCBtX21heFN0YWNrU2l6ZSk7CisgICAgc2l6ZV90IG51bUNh
bGxlZUxvY2FscyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lz
dGVycygpLCBtX21heFN0YWNrU2xvdFNpemUgKyBudW1iZXJPZkxMSW50Q2FsbGVlU2F2ZVJlZ2lz
dGVycyk7CiAgICAgbV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzID0gbnVtQ2FsbGVlTG9j
YWxzOwogICAgIFJFTEVBU0VfQVNTRVJUKG51bUNhbGxlZUxvY2FscyA9PSBtX2NvZGVCbG9jay0+
bV9udW1DYWxsZWVMb2NhbHMpOwogCkBAIC01ODksMTMgKzcwMSwxMSBAQCBhdXRvIExMSW50R2Vu
ZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUpIC0+IExMSQogICAgIC8vIFdlIG5lZWQgdG8gYWxsb2NhdGUgYXQgbGVhc3Qgc3BhY2UgZm9y
IGFsbCBHUFJzIGFuZCBGUFJzLgogICAgIC8vIFJldHVybiB2YWx1ZXMgdXNlIHRoZSBzYW1lIGFs
bG9jYXRpb24gbGF5b3V0LgogCi0gICAgY29uc3QgYXV0byBpbml0aWFsU3RhY2tTaXplID0gbV9z
dGFja1NpemU7Ci0KICAgICBjb25zdCBhdXRvJiBjYWxsaW5nQ29udmVudGlvbiA9IHdhc21DYWxs
aW5nQ29udmVudGlvbigpOwogICAgIGNvbnN0IHVpbnQzMl90IGdwckNvdW50ID0gY2FsbGluZ0Nv
bnZlbnRpb24uZ3ByQXJncy5zaXplKCk7CiAgICAgY29uc3QgdWludDMyX3QgZnByQ291bnQgPSBj
YWxsaW5nQ29udmVudGlvbi5mcHJBcmdzLnNpemUoKTsKIAotICAgIHVpbnQzMl90IHN0YWNrQ291
bnQgPSAwOworICAgIHVpbnQzMl90IG1heFN0YWNrSW5kZXggPSAwOwogICAgIHVpbnQzMl90IGdw
ckluZGV4ID0gMDsKICAgICB1aW50MzJfdCBmcHJJbmRleCA9IDA7CiAgICAgdWludDMyX3Qgc3Rh
Y2tJbmRleCA9IDA7CkBAIC02MTAsMjMgKzcyMCwyNSBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpj
YWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IExM
SQogICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWY6CiAgICAgICAgICAgICBpZiAoZ3BySW5kZXgg
PCBncHJDb3VudCkKICAgICAgICAgICAgICAgICArK2dwckluZGV4OwotICAgICAgICAgICAgZWxz
ZSBpZiAoc3RhY2tJbmRleCsrID49IHN0YWNrQ291bnQpCi0gICAgICAgICAgICAgICAgKytzdGFj
a0NvdW50OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICsrc3RhY2tJbmRleDsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CiAgICAgICAg
IGNhc2UgVHlwZUtpbmQ6OkY2NDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VjEyODoKICAgICAg
ICAgICAgIGlmIChmcHJJbmRleCA8IGZwckNvdW50KQogICAgICAgICAgICAgICAgICsrZnBySW5k
ZXg7Ci0gICAgICAgICAgICBlbHNlIGlmIChzdGFja0luZGV4KysgPj0gc3RhY2tDb3VudCkKLSAg
ICAgICAgICAgICAgICArK3N0YWNrQ291bnQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgc3RhY2tJbmRleCArPSB0eXBlLnNpemUoKSAvIDg7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVu
YzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIG1heFN0YWNrSW5kZXggPSBzdGQ6Om1heChtYXhTdGFja0luZGV4
LCBzdGFja0luZGV4KTsKICAgICB9OwogCi0KICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwg
c2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKTsgaSsrKQogICAgICAgICBhbGxvY2F0ZVN0YWNrUmVn
aXN0ZXIoc2lnbmF0dXJlLmFyZ3VtZW50KGkpKTsKIApAQCAtNjM1LDMwICs3NDcsNDAgQEAgYXV0
byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IFNpZ25hdHVy
ZSYgc2lnbmF0dXJlKSAtPiBMTEkKICAgICBzdGFja0luZGV4ID0gMDsKICAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNvdW50KCk7IGkrKykKICAgICAgICAgYWxs
b2NhdGVTdGFja1JlZ2lzdGVyKHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpKTsKKyAgICAKKyAgICBj
b25zdCB1aW50MzJfdCBzdGFja0FyZ3NTaXplID0gbWF4U3RhY2tJbmRleDsKIAogICAgIC8vIEZJ
WE1FOiB3ZSBhcmUgYWxsb2NhdGluZyB0aGUgZXh0cmEgc3BhY2UgZm9yIHRoZSBhcmd1bWVudC9y
ZXR1cm4gY291bnQgaW4gb3JkZXIgdG8gYXZvaWQgaW50ZXJmZXJlbmNlLCBidXQgd2UgY291bGQg
ZG8gYmV0dGVyCiAgICAgLy8gTk9URTogV2UgaW5jcmVhc2UgYXJnIGNvdW50IGJ5IDEgZm9yIHRo
ZSBjYXNlIG9mIGluZGlyZWN0IGNhbGxzCi0gICAgbV9zdGFja1NpemUgKz0gc3RkOjptYXgoc2ln
bmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDEsIHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpKSArIGdw
ckNvdW50ICsgZnByQ291bnQgKyBzdGFja0NvdW50ICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5S
ZWdpc3RlcnMgKyAxOwotICAgIGlmIChtX3N0YWNrU2l6ZS52YWx1ZSgpICUgc3RhY2tBbGlnbm1l
bnRSZWdpc3RlcnMoKSkKLSAgICAgICAgKyttX3N0YWNrU2l6ZTsKLSAgICBpZiAobV9tYXhTdGFj
a1NpemUgPCBtX3N0YWNrU2l6ZSkKLSAgICAgICAgbV9tYXhTdGFja1NpemUgPSBtX3N0YWNrU2l6
ZTsKKyAgICBDaGVja2VkPHVuc2lnbmVkPiBuZXdTdGFja1NpemUgPSBzdGFja1Nsb3RTaXplKCkg
KyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyArIDEKKyAgICAgICAgKyAoQjM6OmJ5
dGVzKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6R1ApKSAvIDggKiBncHJDb3VudCkKKyAgICAg
ICAgKyAoQjM6OmJ5dGVzKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSAvIDggKiBmcHJD
b3VudCkKKyAgICAgICAgKyBzdGFja0FyZ3NTaXplOworICAgIGlmIChuZXdTdGFja1NpemUgJSBz
dGFja0FsaWdubWVudFJlZ2lzdGVycygpKQorICAgICAgICArK25ld1N0YWNrU2l6ZTsKKyAgICBp
ZiAobV9tYXhTdGFja1Nsb3RTaXplIDwgbmV3U3RhY2tTaXplKQorICAgICAgICBtX21heFN0YWNr
U2xvdFNpemUgPSBuZXdTdGFja1NpemU7CiAKIAotICAgIFJlc3VsdExpc3QgYXJndW1lbnRzKHNp
Z25hdHVyZS5hcmd1bWVudENvdW50KCkpOwotICAgIFJlc3VsdExpc3QgdGVtcG9yYXJ5UmVzdWx0
cyhzaWduYXR1cmUucmV0dXJuQ291bnQoKSk7CisgICAgVmVjdG9yPFR5cGVkRXhwcmVzc2lvbiwg
Mj4gYXJndW1lbnRzKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkpOworICAgIFZlY3RvcjxUeXBl
ZEV4cHJlc3Npb24sIDI+IHRlbXBvcmFyeVJlc3VsdHMoc2lnbmF0dXJlLnJldHVybkNvdW50KCkp
OwogCi0gICAgY29uc3QgdW5zaWduZWQgc3RhY2tPZmZzZXQgPSBtX3N0YWNrU2l6ZTsKKyAgICBj
b25zdCB1bnNpZ25lZCBzdGFja09mZnNldCA9IG5ld1N0YWNrU2l6ZTsKICAgICBjb25zdCB1bnNp
Z25lZCBiYXNlID0gc3RhY2tPZmZzZXQgLSBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVy
cyAtIDE7CiAKLSAgICBjb25zdCB1aW50MzJfdCBncHJMaW1pdCA9IGJhc2UgLSBzdGFja0NvdW50
IC0gZ3ByQ291bnQ7Ci0gICAgY29uc3QgdWludDMyX3QgZnByTGltaXQgPSBncHJMaW1pdCAtIGZw
ckNvdW50OwotCisgICAgY29uc3QgdWludDMyX3QgZ3ByTGltaXQgPSBiYXNlIC0gc3RhY2tBcmdz
U2l6ZSAtIGdwckNvdW50OworICAgIGNvbnN0IHVpbnQzMl90IGZwckxpbWl0ID0gZ3ByTGltaXQg
LSBmcHJDb3VudCAqIDI7CisgICAgCiAgICAgc3RhY2tJbmRleCA9IGJhc2U7Ci0gICAgZ3BySW5k
ZXggPSBiYXNlIC0gc3RhY2tDb3VudDsKKyAgICBncHJJbmRleCA9IGJhc2UgLSBzdGFja0FyZ3NT
aXplOwogICAgIGZwckluZGV4ID0gZ3BySW5kZXggLSBncHJDb3VudDsKLSAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKTsgaSsrKSB7Ci0gICAgICAg
IHN3aXRjaCAoc2lnbmF0dXJlLmFyZ3VtZW50KGkpLmtpbmQpIHsKKyAgICAKKyAgICBkYXRhTG9n
TG5JZihMTEludEdlbmVyYXRvckludGVybmFsOjp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRl
eCwgIl0iLAorICAgICAgICAiQ2FsbCBpbmZvOiBhbGxvY2F0aW5nIHN0YWNrIGZyYW1lIGZvciBh
cmd1bWVudHM6IHN0YWNrT2Zmc2V0OiAiLCBzdGFja09mZnNldCwgIiBiYXNlOiAiLCBiYXNlLCAi
IGdwcnM6IFsiLCBncHJJbmRleCwgIiwgIiwgZ3ByTGltaXQsICIpLCBmcHJzOiBbIiwgZnBySW5k
ZXgsICIsICIsIGZwckxpbWl0LCAiKSwgY3VycmVudCBzdGFjayBzbG90IHNpemU6ICIsIHN0YWNr
U2xvdFNpemUoKSk7CisgICAgCisgICAgYXV0byBhbGxvY2F0ZUNhbGxlZUNvcHlSZWdpc3RlciA9
IFsmXShUeXBlIHR5cGUpIHsKKyAgICAgICAgdWludDMyX3QgcmVzdWx0ID0gMDsKKyAgICAgICAg
c3dpdGNoICh0eXBlLmtpbmQpIHsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6STMyOgogICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpJNjQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoK
QEAgLTY2Niw2NyArNzg4LDU3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlv
bkZvckNhbGxlcihjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gTExJCiAgICAgICAgIGNh
c2UgVHlwZUtpbmQ6OlJlZk51bGw6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAg
ICAgICAgIGlmIChncHJJbmRleCA+IGdwckxpbWl0KQotICAgICAgICAgICAgICAgIGFyZ3VtZW50
c1tpXSA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKC0tZ3BySW5kZXgpOworICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IC0tZ3BySW5kZXg7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgYXJndW1lbnRzW2ldID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoLS1zdGFja0luZGV4KTsK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSAtLXN0YWNrSW5kZXg7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjMyOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpG
NjQ6Ci0gICAgICAgICAgICBpZiAoZnBySW5kZXggPiBmcHJMaW1pdCkKLSAgICAgICAgICAgICAg
ICBhcmd1bWVudHNbaV0gPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgtLWZwckluZGV4KTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNbaV0gPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbCgtLXN0YWNrSW5kZXgpOworICAgICAgICBjYXNlIFR5cGVLaW5kOjpWMTI4
OgorICAgICAgICAgICAgaWYgKGZwckluZGV4ID49IGZwckxpbWl0ICsgdHlwZS5zaXplKCkgLyA4
KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZnBySW5kZXggLSB0eXBlLnNpemUoKSAvIDgg
KyAxOworICAgICAgICAgICAgICAgIGZwckluZGV4IC09IHR5cGUuc2l6ZSgpIC8gODsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RhY2tJbmRleCAtIHR5
cGUuc2l6ZSgpIC8gOCArIDE7CisgICAgICAgICAgICAgICAgc3RhY2tJbmRleCAtPSB0eXBlLnNp
emUoKSAvIDg7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICB9CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfTsKKworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkg
PCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyBpKyspCisgICAgICAgIGFyZ3VtZW50c1tpXSA9
IHsgc2lnbmF0dXJlLmFyZ3VtZW50KGkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChhbGxvY2F0
ZUNhbGxlZUNvcHlSZWdpc3RlcihzaWduYXR1cmUuYXJndW1lbnQoaSkpKSB9OwogCiAgICAgc3Rh
Y2tJbmRleCA9IGJhc2U7Ci0gICAgZ3BySW5kZXggPSBiYXNlIC0gc3RhY2tDb3VudDsKKyAgICBn
cHJJbmRleCA9IGJhc2UgLSBzdGFja0FyZ3NTaXplOwogICAgIGZwckluZGV4ID0gZ3BySW5kZXgg
LSBncHJDb3VudDsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVy
bkNvdW50KCk7IGkrKykgewotICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkp
LmtpbmQpIHsKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6STMyOgotICAgICAgICBjYXNlIFR5cGVL
aW5kOjpJNjQ6Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKLSAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RnVuY3JlZjoKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKLSAg
ICAgICAgY2FzZSBUeXBlS2luZDo6UmVmOgotICAgICAgICAgICAgaWYgKGdwckluZGV4ID4gZ3By
TGltaXQpCi0gICAgICAgICAgICAgICAgdGVtcG9yYXJ5UmVzdWx0c1tpXSA9IHZpcnR1YWxSZWdp
c3RlckZvckxvY2FsKC0tZ3BySW5kZXgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHRlbXBvcmFyeVJlc3VsdHNbaV0gPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgtLXN0YWNr
SW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoK
LSAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgotICAgICAgICAgICAgaWYgKGZwckluZGV4ID4g
ZnByTGltaXQpCi0gICAgICAgICAgICAgICAgdGVtcG9yYXJ5UmVzdWx0c1tpXSA9IHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKC0tZnBySW5kZXgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHRlbXBvcmFyeVJlc3VsdHNbaV0gPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgtLXN0
YWNrSW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZv
aWQ6Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6Ci0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV9zdGFja1NpemUg
PSBpbml0aWFsU3RhY2tTaXplOworICAgIAorICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBz
aWduYXR1cmUucmV0dXJuQ291bnQoKTsgaSsrKQorICAgICAgICB0ZW1wb3JhcnlSZXN1bHRzW2ld
ID0geyBzaWduYXR1cmUucmV0dXJuVHlwZShpKSwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoYWxs
b2NhdGVDYWxsZWVDb3B5UmVnaXN0ZXIoc2lnbmF0dXJlLnJldHVyblR5cGUoaSkpKSB9OworICAg
IAorICAgIGRhdGFMb2dMbklmKExMSW50R2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJbIiwg
bV9mdW5jdGlvbkluZGV4LCAiXSIsCisgICAgICAgICJDYWxsIGluZm86IGFyZ3M6ICIsIGxpc3RE
dW1wKGFyZ3VtZW50cyksICIgdGVtcG9yYXJ5UmVzdWx0czogIiwgbGlzdER1bXAodGVtcG9yYXJ5
UmVzdWx0cykpOwogCiAgICAgYXV0byBjb21taXRSZXN1bHRzID0gW3RoaXMsIHRlbXBvcmFyeVJl
c3VsdHMgPSBXVEZNb3ZlKHRlbXBvcmFyeVJlc3VsdHMpXShSZXN1bHRMaXN0JiByZXN1bHRzKSB7
CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgZm9yIChhdXRvIHRlbXBvcmFy
eVJlc3VsdCA6IHRlbXBvcmFyeVJlc3VsdHMpIHsKLSAgICAgICAgICAgIEV4cHJlc3Npb25UeXBl
IHJlc3VsdCA9IHB1c2goTm9Db25zaXN0ZW5jeUNoZWNrKTsKLSAgICAgICAgICAgIFdhc21Nb3Y6
OmVtaXQodGhpcywgcmVzdWx0LCB0ZW1wb3JhcnlSZXN1bHQpOworICAgICAgICAgICAgRXhwcmVz
c2lvblR5cGUgcmVzdWx0ID0gcHVzaCh0ZW1wb3JhcnlSZXN1bHQudHlwZSgpLCBOb0NvbnNpc3Rl
bmN5Q2hlY2spOworICAgICAgICAgICAgdHlwZWRNb3ZlKHJlc3VsdCwgdGVtcG9yYXJ5UmVzdWx0
KTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGRhdGFMb2dMbklmKExMSW50R2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2Us
ICJbIiwgbV9mdW5jdGlvbkluZGV4LCAiXSIsCisgICAgICAgICAgICAiQ2FsbCBpbmZvIHJlc3Vs
dHMgKGNvbW1pdGVkKTogIiwgbGlzdER1bXAocmVzdWx0cykpOwogICAgIH07CiAKLSAgICByZXR1
cm4gTExJbnRDYWxsSW5mb3JtYXRpb24geyBzdGFja09mZnNldCwgc3RhY2tDb3VudCwgV1RGTW92
ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGNvbW1pdFJlc3VsdHMpIH07CisgICAgcmV0dXJuIExMSW50
Q2FsbEluZm9ybWF0aW9uIHsgc3RhY2tPZmZzZXQsIHN0YWNrQXJnc1NpemUsIFdURk1vdmUoYXJn
dW1lbnRzKSwgV1RGTW92ZShjb21taXRSZXN1bHRzKSB9OwogfQogCi1hdXRvIExMSW50R2VuZXJh
dG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUp
IC0+IFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXIsIDI+CithdXRvIExMSW50R2VuZXJhdG9yOjpjYWxs
SW5mb3JtYXRpb25Gb3JDYWxsZWUoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IFZlY3Rv
cjxUeXBlZEV4cHJlc3Npb24sIDI+CiB7CiAgICAgaWYgKG1fcmVzdWx0cy5zaXplKCkpCiAgICAg
ICAgIHJldHVybiBtX3Jlc3VsdHM7CkBAIC03NDEsNyArODUzLDcgQEAgYXV0byBMTEludEdlbmVy
YXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVlKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJl
KSAtPiBWZWMKICAgICB1aW50MzJfdCBmcHJJbmRleCA9IGdwckNvdW50OwogICAgIHVpbnQzMl90
IHN0YWNrSW5kZXggPSAxOwogICAgIGNvbnN0IHVpbnQzMl90IG1heEdQUkluZGV4ID0gZ3ByQ291
bnQ7Ci0gICAgY29uc3QgdWludDMyX3QgbWF4RlBSSW5kZXggPSBtYXhHUFJJbmRleCArIGZwckNv
dW50OworICAgIGNvbnN0IHVpbnQzMl90IG1heEZQUkluZGV4ID0gbWF4R1BSSW5kZXggKyBmcHJD
b3VudCAqIDI7CiAKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVy
bkNvdW50KCk7IGkrKykgewogICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkp
LmtpbmQpIHsKQEAgLTc1MiwyMiArODY0LDI5IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJ
bmZvcm1hdGlvbkZvckNhbGxlZShjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gVmVjCiAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJl
ZjoKICAgICAgICAgICAgIGlmIChncHJJbmRleCA8IG1heEdQUkluZGV4KQotICAgICAgICAgICAg
ICAgIG1fcmVzdWx0cy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobnVtYmVyT2ZMTElu
dENhbGxlZVNhdmVSZWdpc3RlcnMgKyBncHJJbmRleCsrKSk7CisgICAgICAgICAgICAgICAgbV9y
ZXN1bHRzLmFwcGVuZCh7IHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCB2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChudW1iZXJPZkxMSW50Q2FsbGVlU2F2ZVJlZ2lzdGVycyArIGdwckluZGV4KyspIH0p
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fcmVzdWx0cy5hcHBlbmQodmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKHN0YWNrSW5kZXgrKykpOworICAg
ICAgICAgICAgICAgIG1fcmVzdWx0cy5hcHBlbmQoeyBzaWduYXR1cmUucmV0dXJuVHlwZShpKSwg
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKHN0YWNrSW5kZXgrKykgfSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjMyOgogICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpGNjQ6Ci0gICAgICAgICAgICBpZiAoZnBySW5kZXggPCBtYXhGUFJJ
bmRleCkKLSAgICAgICAgICAgICAgICBtX3Jlc3VsdHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKG51bWJlck9mTExJbnRDYWxsZWVTYXZlUmVnaXN0ZXJzICsgZnBySW5kZXgrKykpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fcmVzdWx0cy5hcHBlbmQodmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKHN0YWNrSW5kZXgrKykpOworICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpWMTI4OgorICAgICAgICAgICAgaWYgKGZwckluZGV4ICsgc2lnbmF0
dXJlLnJldHVyblR5cGUoaSkuc2l6ZSgpIC8gOCA8PSBtYXhGUFJJbmRleCkgeworICAgICAgICAg
ICAgICAgIG1fcmVzdWx0cy5hcHBlbmQoeyBzaWduYXR1cmUucmV0dXJuVHlwZShpKSwgdmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwobnVtYmVyT2ZMTEludENhbGxlZVNhdmVSZWdpc3RlcnMgKyBmcHJJ
bmRleCArIHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLnNpemUoKSAvIDggLSAxKSB9KTsKKyAgICAg
ICAgICAgICAgICBmcHJJbmRleCArPSBzaWduYXR1cmUucmV0dXJuVHlwZShpKS5zaXplKCkgLyA4
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX3Jlc3VsdHMuYXBwZW5k
KHsgc2lnbmF0dXJlLnJldHVyblR5cGUoaSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5j
bHVkaW5nVGhpcyhzdGFja0luZGV4KSB9KTsKKyAgICAgICAgICAgICAgICBzdGFja0luZGV4ICs9
IHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLnNpemUoKSAvIDg7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RnVuYzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5lcmF0
b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlsiLCBtX2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAgICAg
IkNhbGxlZSBpbmZvOiByZXN1bHRzOiAiLCBsaXN0RHVtcChtX3Jlc3VsdHMpKTsKIAogICAgIHJl
dHVybiBtX3Jlc3VsdHM7CiB9CkBAIC03ODcsMTggKzkwNiwzMiBAQCBhdXRvIExMSW50R2VuZXJh
dG9yOjphZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IFBhcnRpYWxS
ZXN1bHQKICAgICB1aW50MzJfdCBncHJJbmRleCA9IDA7CiAgICAgdWludDMyX3QgZnBySW5kZXgg
PSBtYXhHUFJJbmRleDsKICAgICB1aW50MzJfdCBzdGFja0luZGV4ID0gMTsKKyAgICAKKyAgICBB
U1NFUlQoc3RhY2tDb3VudCgpID09IDApOworICAgIEFTU0VSVChtX2ZpcnN0U3RhY2tTbG90SW5k
ZXggPT0gMCk7CisgICAgbV9maXJzdFN0YWNrU2xvdEluZGV4ICs9IG51bWJlck9mTExJbnRDYWxs
ZWVTYXZlUmVnaXN0ZXJzOwogCiAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gcmVnaXN0ZXJB
cmd1bWVudHMoZ3ByQ291bnQgKyBmcHJDb3VudCk7Ci0gICAgZm9yICh1aW50MzJfdCBpID0gMDsg
aSA8IGdwckNvdW50ICsgZnByQ291bnQ7IGkrKykKLSAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNb
aV0gPSBwdXNoKE5vQ29uc2lzdGVuY3lDaGVjayk7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsg
aSA8IGdwckNvdW50OyBpKyspCisgICAgICAgIHJlZ2lzdGVyQXJndW1lbnRzW2ldID0gdmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwobV9maXJzdFN0YWNrU2xvdEluZGV4KyspOworICAgIGZvciAodWlu
dDMyX3QgaSA9IDA7IGkgPCBmcHJDb3VudDsgaSsrKSB7CisgICAgICAgIHJlZ2lzdGVyQXJndW1l
bnRzW2dwckNvdW50ICsgaV0gPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2ZpcnN0U3RhY2tT
bG90SW5kZXggKyAxKTsKKyAgICAgICAgQVNTRVJUKG5leHRTbG90Rm9yVXBwZXJCaXRzKHJlZ2lz
dGVyQXJndW1lbnRzW2dwckNvdW50ICsgaV0pID09IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1f
Zmlyc3RTdGFja1Nsb3RJbmRleCkpOworICAgICAgICBtX2ZpcnN0U3RhY2tTbG90SW5kZXggKz0g
MjsKKyAgICB9CisgICAgCisgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5lcmF0b3JJbnRlcm5hbDo6
dmVyYm9zZSwgIlsiLCBtX2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAgICAgIlJlZ2lzdGVyIGFy
Z3VtZW50cyBhbGxvY2F0ZWQgYXM6ICIsIGxpc3REdW1wKHJlZ2lzdGVyQXJndW1lbnRzKSwgIiA6
IHRoZXJlIGFyZSAiLCBncHJDb3VudCwgIiBncHJzIGFuZCAiLCBmcHJDb3VudCwgIiAxMjgtYml0
IGZwcnMiKTsKIAotICAgIGNvbnN0IGF1dG8gYWRkQXJndW1lbnQgPSBbJl0odWludDMyX3QgaW5k
ZXgsIHVpbnQzMl90JiBjb3VudCwgdWludDMyX3QgbWF4KSB7Ci0gICAgICAgIGlmIChjb3VudCA8
IG1heCkKKyAgICBjb25zdCBhdXRvIGFkZEFyZ3VtZW50ID0gWyZdKHVpbnQzMl90IGluZGV4LCB1
aW50MzJfdCBzaXplLCB1aW50MzJfdCYgY291bnQsIHVpbnQzMl90IG1heCkgeworICAgICAgICBp
ZiAoY291bnQgPCBtYXgpIHsKICAgICAgICAgICAgIG1fbm9ybWFsaXplZEFyZ3VtZW50c1tpbmRl
eF0gPSByZWdpc3RlckFyZ3VtZW50c1tjb3VudCsrXTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbV9ub3JtYWxpemVkQXJndW1lbnRzW2luZGV4XSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50SW5jbHVkaW5nVGhpcyhzdGFja0luZGV4KyspOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgbV9ub3JtYWxpemVkQXJndW1lbnRzW2luZGV4XSA9IHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50SW5jbHVkaW5nVGhpcyhzdGFja0luZGV4KTsKKyAgICAgICAgICAgIHN0YWNrSW5kZXgg
Kz0gc2l6ZTsKKyAgICAgICAgfQogICAgIH07Ci0KKyAgICAKICAgICBmb3IgKHVpbnQzMl90IGkg
PSAwOyBpIDwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKTsgaSsrKSB7CiAgICAgICAgIHN3aXRj
aCAoc2lnbmF0dXJlLmFyZ3VtZW50KGkpLmtpbmQpIHsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6
STMyOgpAQCAtODA3LDExICs5NDAsMTIgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQXJndW1l
bnRzKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAg
IGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6
CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKLSAgICAgICAgICAgIGFkZEFyZ3VtZW50KGks
IGdwckluZGV4LCBtYXhHUFJJbmRleCk7CisgICAgICAgICAgICBhZGRBcmd1bWVudChpLCAxLCBn
cHJJbmRleCwgbWF4R1BSSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
VHlwZUtpbmQ6OkYzMjoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgotICAgICAgICAgICAg
YWRkQXJndW1lbnQoaSwgZnBySW5kZXgsIG1heEZQUkluZGV4KTsKKyAgICAgICAgY2FzZSBUeXBl
S2luZDo6VjEyODoKKyAgICAgICAgICAgIGFkZEFyZ3VtZW50KGksIHNpZ25hdHVyZS5hcmd1bWVu
dChpKS5zaXplKCkgLyA4LCBmcHJJbmRleCwgbWF4RlBSSW5kZXgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkZ1bmM6CkBAIC04MTksMjYgKzk1Myw1MyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRBcmd1
bWVudHMoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAg
ICAgfQogICAgIH0KIAotICAgIG1fY29kZUJsb2NrLT5tX251bVZhcnMgKz0gZ3ByQ291bnQgKyBm
cHJDb3VudDsKKyAgICBtX2NvZGVCbG9jay0+bV9udW1WYXJzICs9IGdwckNvdW50ICsgZnByQ291
bnQgKiAyICsgbnVtYmVyT2ZMTEludENhbGxlZVNhdmVSZWdpc3RlcnM7CisgICAgCisgICAgZGF0
YUxvZ0xuSWYoTExJbnRHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlsiLCBtX2Z1bmN0aW9u
SW5kZXgsICJdIiwKKyAgICAgICAgIk5vcm1hbGl6ZWQgYXJndW1lbnRzOiAiLCBsaXN0RHVtcCht
X25vcm1hbGl6ZWRBcmd1bWVudHMpKTsKKyAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvcklu
dGVybmFsOjp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAiTmV4
dCBhdmFpbGFibGUgc2xvdCBhZnRlciBhZGRpbmcgYXJndW1lbnRzIGlzICIsIG1fZmlyc3RTdGFj
a1Nsb3RJbmRleCwgIiBhdCAiLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2ZpcnN0U3RhY2tT
bG90SW5kZXgpKTsKIAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gTExJbnRHZW5lcmF0b3I6
OmFkZExvY2FsKFR5cGUgdHlwZSwgdWludDMyX3QgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1
dG8gTExJbnRHZW5lcmF0b3I6OmFkZExvY2FsKFR5cGUgdHlwZSwgdWludDMyX3QgbG9jYWxJbmRl
eCwgdWludDMyX3QgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBjaGVja0NvbnNpc3Rl
bmN5KCk7CisgICAgQVNTRVJUX1VOVVNFRChsb2NhbEluZGV4LCBsb2NhbEluZGV4ID09IG1fbG9j
YWxzLnNpemUoKSArIG1fbm9ybWFsaXplZEFyZ3VtZW50cy5zaXplKCkpOworICAgIEFTU0VSVCht
X2V4cHJlc3Npb25TdGFja1Nsb3RzLnNpemUoKSA9PSAwKTsKKyAgICBzaXplX3Qgc2xvdENvdW50
ID0gKChzaXplX3QpIGNvdW50KSAqICh0eXBlLnNpemUoKS84KTsKIAotICAgIG1fY29kZUJsb2Nr
LT5tX251bVZhcnMgKz0gY291bnQ7CisgICAgbV9jb2RlQmxvY2stPm1fbnVtVmFycyArPSBzbG90
Q291bnQ7CiAgICAgaWYgKGlzRnVuY3JlZih0eXBlKSB8fCBpc0V4dGVybnJlZih0eXBlKSkgewot
ICAgICAgICB3aGlsZSAoY291bnQtLSkKLSAgICAgICAgICAgIG1fdW5pdGlhbGl6ZWRMb2NhbHMu
YXBwZW5kKHB1c2goTm9Db25zaXN0ZW5jeUNoZWNrKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1f
c3RhY2tTaXplICs9IGNvdW50OworICAgICAgICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICAg
ICAgYXV0byBzbG90ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9maXJzdFN0YWNrU2xvdElu
ZGV4KyspOworICAgICAgICAgICAgbV9sb2NhbHMuYXBwZW5kKHNsb3QpOworICAgICAgICAgICAg
bV91bml0aWFsaXplZExvY2Fscy5hcHBlbmQoc2xvdCk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICAgICAgaWYgKHR5cGUuc2l6ZSgp
ID09IDE2KQorICAgICAgICAgICAgICAgICsrbV9maXJzdFN0YWNrU2xvdEluZGV4OworICAgICAg
ICAgICAgbV9sb2NhbHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fZmlyc3RTdGFj
a1Nsb3RJbmRleCsrKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKExM
SW50R2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJbIiwgbV9mdW5jdGlvbkluZGV4LCAiXSIs
CisgICAgICAgICAgICAgICAgIkxvY2FsICIsIGxvY2FsSW5kZXgsICIgZ29lcyBpbiAiLCBtX2xv
Y2Fscy5sYXN0KCksICIsICIsIG5leHRTbG90Rm9yVXBwZXJCaXRzKG1fbG9jYWxzLmxhc3QoKSks
ICJ0YWtpbmcgc2xvdHMgIiwgbV9maXJzdFN0YWNrU2xvdEluZGV4LTEsICIgYW5kICIsIG1fZmly
c3RTdGFja1Nsb3RJbmRleC0yKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBkYXRhTG9n
TG5JZihMTEludEdlbmVyYXRvckludGVybmFsOjp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRl
eCwgIl0iLAorICAgICAgICAiTmV4dCBhdmFpbGFibGUgc2xvdCBhZnRlciBhZGRpbmcgbG9jYWwo
cykgaXMgIiwgbV9maXJzdFN0YWNrU2xvdEluZGV4LCAiIGF0ICIsIHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKG1fZmlyc3RTdGFja1Nsb3RJbmRleCkpOworICAgIAorICAgIEFTU0VSVChuZXh0U2xv
dEluZGV4KFR5cGVzOjpJNjQpID09IG1fZmlyc3RTdGFja1Nsb3RJbmRleCk7CisgICAgQVNTRVJU
KG5leHRTbG90SW5kZXgoVHlwZXM6OlYxMjgpID09IG1fZmlyc3RTdGFja1Nsb3RJbmRleCArIDEp
OworICAgIAogICAgIHJldHVybiB7IH07CiB9CiAKIHZvaWQgTExJbnRHZW5lcmF0b3I6OmRpZEZp
bmlzaFBhcnNpbmdMb2NhbHMoKQogeworICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICBpZiAo
bV91bml0aWFsaXplZExvY2Fscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtODUw
LDQ4ICsxMDExLDYwIEBAIHZvaWQgTExJbnRHZW5lcmF0b3I6OmRpZEZpbmlzaFBhcnNpbmdMb2Nh
bHMoKQogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRDb25zdGFudChUeXBlIHR5cGUsIGludDY0
X3QgdmFsdWUpIC0+IEV4cHJlc3Npb25UeXBlCiB7Ci0gICAgYXV0byBjb25zdGFudCA9IFsmXSB7
Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gemVyb0NvbnN0YW50KCk7
Ci0KLSAgICAgICAgaWYgKHZhbHVlID09IEpTVmFsdWU6OmVuY29kZShqc051bGwoKSkpCi0gICAg
ICAgICAgICByZXR1cm4ganNOdWxsQ29uc3RhbnQoKTsKLQotICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgc291cmNlKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ICsgbV9jb2RlQmxvY2stPm1fY29u
c3RhbnRzLnNpemUoKSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9jb25zdGFudE1hcC5hZGQo
dmFsdWUsIHNvdXJjZSk7Ci0gICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgbV9jb2RlQmxvY2st
Pm1fY29uc3RhbnRzLmFwcGVuZCh2YWx1ZSk7Ci0gICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25z
OjpkdW1wR2VuZXJhdGVkV2FzbUJ5dGVjb2RlcygpKSkKLSAgICAgICAgICAgIG1fY29kZUJsb2Nr
LT5tX2NvbnN0YW50VHlwZXMuYXBwZW5kKHR5cGUpOwotICAgICAgICByZXR1cm4gc291cmNlOwot
ICAgIH07CiAgICAgLy8gbGVhdmUgYSBob2xlIGlmIHdlIG5lZWQgdG8gbWF0ZXJpYWxpemUgdGhl
IGNvbnN0YW50Ci0gICAgcHVzaCgpOwotICAgIHJldHVybiBjb25zdGFudCgpOworICAgIHB1c2go
dHlwZSk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHplcm9Db25zdGFudCgpOwor
CisgICAgaWYgKHZhbHVlID09IEpTVmFsdWU6OmVuY29kZShqc051bGwoKSkpCisgICAgICAgIHJl
dHVybiBqc051bGxDb25zdGFudCgpOworCisgICAgVmlydHVhbFJlZ2lzdGVyIHNvdXJjZShGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCArIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50cy5zaXplKCkp
OworICAgIGF1dG8gcmVzdWx0ID0gbV9jb25zdGFudE1hcC5hZGQodmFsdWUsIHNvdXJjZSk7Cisg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7CisgICAgbV9jb2RlQmxvY2stPm1fY29uc3RhbnRzLmFwcGVuZCh2YWx1ZSk7Cisg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBHZW5lcmF0ZWRXYXNtQnl0ZWNvZGVzKCkpKQor
ICAgICAgICBtX2NvZGVCbG9jay0+bV9jb25zdGFudFR5cGVzLmFwcGVuZCh0eXBlKTsKKyAgICBy
ZXR1cm4gc291cmNlOworfQorCithdXRvIExMSW50R2VuZXJhdG9yOjphZGRDb25zdGFudCh2MTI4
X3QgdmFsdWUpIC0+IEV4cHJlc3Npb25UeXBlCit7CisgICAgLy8gbGVhdmUgYSBob2xlIGlmIHdl
IG5lZWQgdG8gbWF0ZXJpYWxpemUgdGhlIGNvbnN0YW50CisgICAgcHVzaChUeXBlczo6VjEyOCk7
CisgICAgVmlydHVhbFJlZ2lzdGVyIHNvdXJjZShGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCAr
IG1fY29kZUJsb2NrLT5tX2NvbnN0YW50cy5zaXplKCkpOworICAgIG1fY29kZUJsb2NrLT5tX2Nv
bnN0YW50cy5hcHBlbmQodmFsdWUudTY0eDJbMF0pOworICAgIG1fY29kZUJsb2NrLT5tX2NvbnN0
YW50cy5hcHBlbmQodmFsdWUudTY0eDJbMV0pOworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpk
dW1wR2VuZXJhdGVkV2FzbUJ5dGVjb2RlcygpKSkgeworICAgICAgICBtX2NvZGVCbG9jay0+bV9j
b25zdGFudFR5cGVzLmFwcGVuZChUeXBlczo6VjEyOCk7CisgICAgICAgIG1fY29kZUJsb2NrLT5t
X2NvbnN0YW50VHlwZXMuYXBwZW5kKFR5cGVzOjpWMTI4KTsKKyAgICB9CisgICAgcmV0dXJuIHNv
dXJjZTsKIH0KIAotYXV0byBMTEludEdlbmVyYXRvcjo6Z2V0TG9jYWwodWludDMyX3QgaW5kZXgs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gTExJbnRHZW5l
cmF0b3I6OmdldExvY2FsKHVpbnQzMl90IGluZGV4LCBXYXNtOjpUeXBlIHR5cGUsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBsZWF2ZSBhIGhvbGUg
aWYgd2UgbmVlZCB0byBtYXRlcmlhbGl6ZSB0aGUgbG9jYWwKLSAgICBwdXNoKCk7CisgICAgcHVz
aCh0eXBlKTsKICAgICByZXN1bHQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JXYXNtTG9jYWwoaW5kZXgp
OwogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gTExJbnRHZW5lcmF0b3I6OnNldExvY2FsKHVp
bnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAorYXV0
byBMTEludEdlbmVyYXRvcjo6c2V0TG9jYWwodWludDMyX3QgaW5kZXgsIFdhc206OlR5cGUgdHlw
ZSwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgdGFyZ2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yV2FzbUxvY2FsKGluZGV4KTsKLQor
ICAgIAogICAgIC8vIElmIHRoaXMgbG9jYWwgaXMgY3VycmVudGx5IG9uIHRoZSBzdGFjayB3ZSBu
ZWVkIHRvIG1hdGVyaWFsaXplIGl0LCBvdGhlcndpc2UgaXQnbGwgc2VlIHRoZSBuZXcgdmFsdWUg
aW5zdGVhZCBvZiB0aGUgb2xkIG9uZQotICAgIHdhbGtFeHByZXNzaW9uU3RhY2sobV9wYXJzZXIt
PmV4cHJlc3Npb25TdGFjaygpLCBbJl0oVHlwZWRFeHByZXNzaW9uJiBleHByZXNzaW9uLCBWaXJ0
dWFsUmVnaXN0ZXIgc2xvdCkgeworICAgIHdhbGtFeHByZXNzaW9uU3RhY2soWyZdKFR5cGVkRXhw
cmVzc2lvbiYgZXhwcmVzc2lvbiwgVmlydHVhbFJlZ2lzdGVyIHNsb3QpIHsKICAgICAgICAgaWYg
KGV4cHJlc3Npb24udmFsdWUoKSAhPSB0YXJnZXQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIFdhc21Nb3Y6OmVtaXQodGhpcywgc2xvdCwgZXhwcmVzc2lvbik7CisgICAgICAgIHR5cGVk
TW92ZShzbG90LCBleHByZXNzaW9uKTsKKyAgICAgICAgQVNTRVJUKHR5cGUgPT0gZXhwcmVzc2lv
bi50eXBlKCkpOwogICAgICAgICBleHByZXNzaW9uID0gVHlwZWRFeHByZXNzaW9uIHsgZXhwcmVz
c2lvbi50eXBlKCksIHNsb3QgfTsKICAgICB9KTsKIAotICAgIFdhc21Nb3Y6OmVtaXQodGhpcywg
dGFyZ2V0LCB2YWx1ZSk7CisgICAgdHlwZWRNb3ZlKHRhcmdldCwgeyB0eXBlLCB2YWx1ZSB9KTsK
IAogICAgIHJldHVybiB7IH07CiB9CkBAIC04OTksNyArMTA3Miw3IEBAIGF1dG8gTExJbnRHZW5l
cmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4g
UGFydGlhbFJlCiBhdXRvIExMSW50R2VuZXJhdG9yOjpnZXRHbG9iYWwodWludDMyX3QgaW5kZXgs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBjb25zdCBX
YXNtOjpHbG9iYWxJbmZvcm1hdGlvbiYgZ2xvYmFsID0gbV9pbmZvLmdsb2JhbHNbaW5kZXhdOwot
ICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICByZXN1bHQgPSBwdXNoKGdsb2JhbC50eXBlKTsKICAg
ICBzd2l0Y2ggKGdsb2JhbC5iaW5kaW5nTW9kZSkgewogICAgIGNhc2UgV2FzbTo6R2xvYmFsSW5m
b3JtYXRpb246OkJpbmRpbmdNb2RlOjpFbWJlZGRlZEluSW5zdGFuY2U6CiAgICAgICAgIFdhc21H
ZXRHbG9iYWw6OmVtaXQodGhpcywgcmVzdWx0LCBpbmRleCk7CkBAIC05NTMsNyArMTEyNiw3IEBA
IGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZExvb3AoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBT
dGFjayYgZW5jbG9zaW5nU3RhY2ssIENvCiAgICAgUmVmPExhYmVsPiBib2R5ID0gbmV3RW1pdHRl
ZExhYmVsKCk7CiAgICAgUmVmPExhYmVsPiBjb250aW51YXRpb24gPSBuZXdMYWJlbCgpOwogCi0g
ICAgYmxvY2sgPSBDb250cm9sVHlwZTo6bG9vcChzaWduYXR1cmUsIG1fc3RhY2tTaXplLCBXVEZN
b3ZlKGJvZHkpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOworICAgIGJsb2NrID0gQ29udHJvbFR5
cGU6Omxvb3Aoc2lnbmF0dXJlLCBtX2V4cHJlc3Npb25TdGFja1Nsb3RzLCBXVEZNb3ZlKGJvZHkp
LCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwogCiAgICAgVmVjdG9yPHVuc2lnbmVkPiB1bnJlc29s
dmVkT2Zmc2V0czsKICAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyPiBvc3JFbnRyeURhdGE7CkBA
IC05ODcsMTMgKzExNjAsMTMgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkTG9vcChCbG9ja1Np
Z25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ28KIAogYXV0byBMTElu
dEdlbmVyYXRvcjo6YWRkVG9wTGV2ZWwoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlKSAtPiBDb250
cm9sVHlwZQogewotICAgIHJldHVybiBDb250cm9sVHlwZTo6dG9wTGV2ZWwoc2lnbmF0dXJlLCBt
X3N0YWNrU2l6ZSwgbmV3TGFiZWwoKSk7CisgICAgcmV0dXJuIENvbnRyb2xUeXBlOjp0b3BMZXZl
bChzaWduYXR1cmUsIG1fZXhwcmVzc2lvblN0YWNrU2xvdHMsIG5ld0xhYmVsKCkpOwogfQogCiBh
dXRvIExMSW50R2VuZXJhdG9yOjphZGRCbG9jayhCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0
YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29udHJvbFR5cGUmIG5ld0Jsb2NrLCBTdGFjayYgbmV3U3Rh
Y2spIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBzcGxpdFN0YWNrKHNpZ25hdHVyZSwgZW5jbG9z
aW5nU3RhY2ssIG5ld1N0YWNrKTsKLSAgICBuZXdCbG9jayA9IENvbnRyb2xUeXBlOjpibG9jayhz
aWduYXR1cmUsIG1fc3RhY2tTaXplLCBuZXdMYWJlbCgpKTsKKyAgICBuZXdCbG9jayA9IENvbnRy
b2xUeXBlOjpibG9jayhzaWduYXR1cmUsIG1fZXhwcmVzc2lvblN0YWNrU2xvdHMsIG5ld0xhYmVs
KCkpOwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTEwMDYsNyArMTE3OSw3IEBAIGF1dG8gTExJ
bnRHZW5lcmF0b3I6OmFkZElmKEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwgQmxvY2tTaWduYXR1
cmUgc2lnbmF0dXJlLCBTCiAKICAgICBXYXNtSmZhbHNlOjplbWl0KHRoaXMsIGNvbmRpdGlvbiwg
YWx0ZXJuYXRlLT5iaW5kKHRoaXMpKTsKIAotICAgIHJlc3VsdCA9IENvbnRyb2xUeXBlOjppZl8o
c2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwgV1RGTW92ZShhbHRlcm5hdGUpLCBXVEZNb3ZlKGNvbnRp
bnVhdGlvbikpOworICAgIHJlc3VsdCA9IENvbnRyb2xUeXBlOjppZl8oc2lnbmF0dXJlLCBtX2V4
cHJlc3Npb25TdGFja1Nsb3RzLCBXVEZNb3ZlKGFsdGVybmF0ZSksIFdURk1vdmUoY29udGludWF0
aW9uKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMTAyMCwxMSArMTE5MywxMiBAQCBhdXRv
IExMSW50R2VuZXJhdG9yOjphZGRFbHNlKENvbnRyb2xUeXBlJiBkYXRhLCBTdGFjayYgZXhwcmVz
c2lvblN0YWNrKSAtPiBQYXJ0aQogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRFbHNlVG9VbnJl
YWNoYWJsZShDb250cm9sVHlwZSYgZGF0YSkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIG1fc3Rh
Y2tTaXplID0gZGF0YS5zdGFja1NpemUoKSArIGRhdGEubV9zaWduYXR1cmUtPmFyZ3VtZW50Q291
bnQoKTsKKyAgICBtX2V4cHJlc3Npb25TdGFja1Nsb3RzID0gZGF0YS5tX2V4cHJlc3Npb25TdGFj
a1Nsb3RzOworLy8gICAgYWRkQXJndW1lbnRzVG9TbG90U3RhY2soZGF0YS5tX3NpZ25hdHVyZSk7
CiAKICAgICBDb250cm9sSWYmIGNvbnRyb2wgPSBzdGQ6OmdldDxDb250cm9sSWY+KGRhdGEpOwog
ICAgIGVtaXRMYWJlbChjb250cm9sLm1fYWx0ZXJuYXRlLmdldCgpKTsKLSAgICBkYXRhID0gQ29u
dHJvbFR5cGU6OmJsb2NrKGRhdGEubV9zaWduYXR1cmUsIG1fc3RhY2tTaXplLCBXVEZNb3ZlKGRh
dGEubV9jb250aW51YXRpb24pKTsKKyAgICBkYXRhID0gQ29udHJvbFR5cGU6OmJsb2NrKGRhdGEu
bV9zaWduYXR1cmUsIG1fZXhwcmVzc2lvblN0YWNrU2xvdHMsIFdURk1vdmUoZGF0YS5tX2NvbnRp
bnVhdGlvbikpOwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTEwMzYsNyArMTIxMCw3IEBAIGF1
dG8gTExJbnRHZW5lcmF0b3I6OmFkZFRyeShCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNr
JiBlbmNsb3NpbmdTdGFjaywgQ29uCiAgICAgc3BsaXRTdGFjayhzaWduYXR1cmUsIGVuY2xvc2lu
Z1N0YWNrLCBuZXdTdGFjayk7CiAgICAgUmVmPExhYmVsPiB0cnlMYWJlbCA9IG5ld0VtaXR0ZWRM
YWJlbCgpOwogICAgIFJlZjxMYWJlbD4gY29udGludWF0aW9uID0gbmV3TGFiZWwoKTsKLSAgICBy
ZXN1bHQgPSBDb250cm9sVHlwZTo6Y3JlYXRlVHJ5KHNpZ25hdHVyZSwgbV9zdGFja1NpemUsIFdU
Rk1vdmUodHJ5TGFiZWwpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIG1fdHJ5RGVwdGgpOworICAg
IHJlc3VsdCA9IENvbnRyb2xUeXBlOjpjcmVhdGVUcnkoc2lnbmF0dXJlLCBtX2V4cHJlc3Npb25T
dGFja1Nsb3RzLCBXVEZNb3ZlKHRyeUxhYmVsKSwgV1RGTW92ZShjb250aW51YXRpb24pLCBtX3Ry
eURlcHRoKTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0xMDQ2LDkgKzEyMjAsMTMgQEAgdm9p
ZCBMTEludEdlbmVyYXRvcjo6ZmluYWxpemVQcmV2aW91c0Jsb2NrRm9yQ2F0Y2goQ29udHJvbFR5
cGUmIGRhdGEsIFN0YWNrJiBleHAKICAgICAgICAgbWF0ZXJpYWxpemVDb25zdGFudHNBbmRMb2Nh
bHMoZXhwcmVzc2lvblN0YWNrKTsKICAgICBlbHNlIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5j
eSgpOwotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwoZGF0YS5zdGFja1NpemUoKSk7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChkYXRhLnN0YWNrQ291bnQoKSk7CiAgICAgICAgIGZvciAoVHlw
ZWRFeHByZXNzaW9uJiB2YWx1ZSA6IGV4cHJlc3Npb25TdGFjaykgewotICAgICAgICAgICAgV2Fz
bU1vdjo6ZW1pdCh0aGlzLCBkc3QsIHZhbHVlKTsKKyAgICAgICAgICAgIHR5cGVkTW92ZShkc3Qs
IHZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZS50eXBlKCkuc2l6ZSgpID09IDE2KSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGRzdCAtIDEgPT0gbmV4dFNsb3RGb3JVcHBlckJpdHMoZHN0
KSk7CisgICAgICAgICAgICAgICAgZHN0IC09IDE7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB2YWx1ZSA9IFR5cGVkRXhwcmVzc2lvbiB7IHZhbHVlLnR5cGUoKSwgZHN0IH07CiAgICAgICAg
ICAgICBkc3QgLT0gMTsKICAgICAgICAgfQpAQCAtMTA2NywxNCArMTI0NSwxNiBAQCBhdXRvIExM
SW50R2VuZXJhdG9yOjphZGRDYXRjaFRvVW5yZWFjaGFibGUodW5zaWduZWQgZXhjZXB0aW9uSW5k
ZXgsIGNvbnN0IFNpZ25hdAogICAgIG1fdXNlc0V4Y2VwdGlvbnMgPSB0cnVlOwogICAgIFJlZjxM
YWJlbD4gY2F0Y2hMYWJlbCA9IG5ld0VtaXR0ZWRMYWJlbCgpOwogCi0gICAgbV9zdGFja1NpemUg
PSBkYXRhLnN0YWNrU2l6ZSgpOwotICAgIFZpcnR1YWxSZWdpc3RlciBleGNlcHRpb24gPSBwdXNo
KCk7CisgICAgbV9leHByZXNzaW9uU3RhY2tTbG90cyA9IGRhdGEubV9leHByZXNzaW9uU3RhY2tT
bG90czsKKyAgICAKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZXhjZXB0aW9uID0gcHVzaChUeXBlczo6
Vm9pZCwgTm9Db25zaXN0ZW5jeUNoZWNrKTsKKyAgICBBU1NFUlQoZXhjZXB0aW9uU2lnbmF0dXJl
LnJldHVybnNWb2lkKCkpOwogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPENvbnRyb2xU
cnk+KGRhdGEpKSB7CiAgICAgICAgIENvbnRyb2xUcnkmIHRyeURhdGEgPSBzdGQ6OmdldDxDb250
cm9sVHJ5PihkYXRhKTsKLSAgICAgICAgZGF0YSA9IENvbnRyb2xUeXBlOjpjcmVhdGVDYXRjaChk
YXRhLm1fc2lnbmF0dXJlLCBkYXRhLnN0YWNrU2l6ZSgpLCBXVEZNb3ZlKHRyeURhdGEubV90cnkp
LCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRpb24pLCBjYXRjaExhYmVsLCB0cnlEYXRhLm1fdHJ5
RGVwdGgsIGV4Y2VwdGlvbik7CisgICAgICAgIGRhdGEgPSBDb250cm9sVHlwZTo6Y3JlYXRlQ2F0
Y2goZGF0YS5tX3NpZ25hdHVyZSwgZGF0YS5tX2V4cHJlc3Npb25TdGFja1Nsb3RzLCBXVEZNb3Zl
KHRyeURhdGEubV90cnkpLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRpb24pLCBjYXRjaExhYmVs
LCB0cnlEYXRhLm1fdHJ5RGVwdGgsIGV4Y2VwdGlvbik7CiAgICAgfQogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBleGNlcHRpb25TaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyArK2kpCi0g
ICAgICAgIHJlc3VsdHMuYXBwZW5kKHB1c2goKSk7CisgICAgICAgIHJlc3VsdHMuYXBwZW5kKHB1
c2goZXhjZXB0aW9uU2lnbmF0dXJlLmFyZ3VtZW50KGkpKSk7CiAKICAgICBpZiAoQ29udGV4dDo6
dXNlRmFzdFRMUygpKQogICAgICAgICBXYXNtQ2F0Y2g6OmVtaXQodGhpcywgZXhjZXB0aW9uSW5k
ZXgsIGV4Y2VwdGlvbiwgZXhjZXB0aW9uU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwgcmVzdWx0
cy5pc0VtcHR5KCkgPyAwIDogLXJlc3VsdHNbMF0ub2Zmc2V0KCkpOwpAQCAtMTEyMCwxMSArMTMw
MCwxMSBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRDYXRjaEFsbFRvVW5yZWFjaGFibGUoQ29u
dHJvbFR5cGUmIGRhdGEpIC0+IFBhcnRpYWxSZXN1bAogewogICAgIG1fdXNlc0V4Y2VwdGlvbnMg
PSB0cnVlOwogICAgIFJlZjxMYWJlbD4gY2F0Y2hMYWJlbCA9IG5ld0VtaXR0ZWRMYWJlbCgpOwot
ICAgIG1fc3RhY2tTaXplID0gZGF0YS5zdGFja1NpemUoKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZXhjZXB0aW9uID0gcHVzaCgpOworICAgIG1fZXhwcmVzc2lvblN0YWNrU2xvdHMgPSBkYXRhLm1f
ZXhwcmVzc2lvblN0YWNrU2xvdHM7CisgICAgVmlydHVhbFJlZ2lzdGVyIGV4Y2VwdGlvbiA9IHB1
c2goVHlwZXM6OlZvaWQsIE5vQ29uc2lzdGVuY3lDaGVjayk7CiAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8Q29udHJvbFRyeT4oZGF0YSkpIHsKICAgICAgICAgQ29udHJvbFRyeSYgdHJ5
RGF0YSA9IHN0ZDo6Z2V0PENvbnRyb2xUcnk+KGRhdGEpOwotICAgICAgICBkYXRhID0gQ29udHJv
bFR5cGU6OmNyZWF0ZUNhdGNoKGRhdGEubV9zaWduYXR1cmUsIGRhdGEuc3RhY2tTaXplKCksIFdU
Rk1vdmUodHJ5RGF0YS5tX3RyeSksIFdURk1vdmUoZGF0YS5tX2NvbnRpbnVhdGlvbiksIGNhdGNo
TGFiZWwsIHRyeURhdGEubV90cnlEZXB0aCwgZXhjZXB0aW9uKTsKKyAgICAgICAgZGF0YSA9IENv
bnRyb2xUeXBlOjpjcmVhdGVDYXRjaChkYXRhLm1fc2lnbmF0dXJlLCBkYXRhLm1fZXhwcmVzc2lv
blN0YWNrU2xvdHMsIFdURk1vdmUodHJ5RGF0YS5tX3RyeSksIFdURk1vdmUoZGF0YS5tX2NvbnRp
bnVhdGlvbiksIGNhdGNoTGFiZWwsIHRyeURhdGEubV90cnlEZXB0aCwgZXhjZXB0aW9uKTsKICAg
ICB9CiAgICAgQ29udHJvbENhdGNoJiBjYXRjaERhdGEgPSBzdGQ6OmdldDxDb250cm9sQ2F0Y2g+
KGRhdGEpOwogICAgIGNhdGNoRGF0YS5tX2tpbmQgPSBDYXRjaEtpbmQ6OkNhdGNoQWxsOwpAQCAt
MTE1NywxOCArMTMzNywxOCBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGREZWxlZ2F0ZVRvVW5y
ZWFjaGFibGUoQ29udHJvbFR5cGUmIHRhcmdldCwgQ29udHJvbFR5cGUmCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotYXV0byBMTEludEdlbmVyYXRvcjo6YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9u
SW5kZXgsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFN0YWNrJikgLT4gUGFydGlhbFJl
c3VsdAorYXV0byBMTEludEdlbmVyYXRvcjo6YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5k
ZXgsIFN0YWNrJiBhcmdzKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgbV91c2VzRXhjZXB0aW9u
cyA9IHRydWU7CiAgICAgLy8gV2UgaGF2ZSB0byBtYXRlcmlhbGl6ZSB0aGUgYXJndW1lbnRzIGhl
cmUgc2luY2UgaXQgbWlnaHQgaW5jbHVkZSBjb25zdGFudHMgb3IKICAgICAvLyBkZWxheWVkIG1v
dmVzLCBidXQgdGhlIHdhc21fdGhyb3cgb3Bjb2RlIGV4cGVjdHMgYWxsIHRoZSBhcmd1bWVudHMg
dG8gYmUgY29udGlndW91cwogICAgIC8vIGluIHRoZSBzdGFjay4gVGhlIHJlYXNvbiB3ZSBkb24n
dCBjYWxsIG1hdGVyaWFsaXplQ29uc3RhbnRzQW5kTG9jYWxzIGhlcmUgaXMgdGhhdAogICAgIC8v
IGl0IGV4cGVjdHMgYSBzdGFjaywgbm90IGEgdmVjdG9yIG9mIEV4cHJlc3Npb25UeXBlIGFyZ3Vt
ZW50cy4KLSAgICB3YWxrRXhwcmVzc2lvblN0YWNrKGFyZ3MsIFsmXShWaXJ0dWFsUmVnaXN0ZXIm
IGFyZywgVmlydHVhbFJlZ2lzdGVyIHNsb3QpIHsKLSAgICAgICAgaWYgKGFyZyA9PSBzbG90KQor
ICAgIHdhbGtFeHByZXNzaW9uU3RhY2soYXJncywgWyZdKFR5cGVkRXhwcmVzc2lvbiYgYXJnLCBW
aXJ0dWFsUmVnaXN0ZXIgc2xvdCkgeworICAgICAgICBpZiAoYXJnLnZhbHVlKCkgPT0gc2xvdCkK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgV2FzbU1vdjo6ZW1pdCh0aGlzLCBzbG90LCBh
cmcpOwotICAgICAgICBhcmcgPSBzbG90OworICAgICAgICB0eXBlZE1vdmUoc2xvdCwgYXJnKTsK
KyAgICAgICAgYXJnID0gVHlwZWRFeHByZXNzaW9uIHsgYXJnLnR5cGUoKSwgc2xvdCB9OwogICAg
IH0pOwogICAgIFdhc21UaHJvdzo6ZW1pdCh0aGlzLCBleGNlcHRpb25JbmRleCwgYXJncy5pc0Vt
cHR5KCkgPyB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgwKSA6IGFyZ3NbMF0pOwogICAgIHJldHVy
biB7IH07CkBAIC0xMjY2LDE1ICsxNDQ2LDE4IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEVu
ZFRvVW5yZWFjaGFibGUoQ29udHJvbEVudHJ5JiBlbnRyeSwgU3RhY2smIGV4cHJlc3Npb25TCiB7
CiAgICAgQ29udHJvbFR5cGUmIGRhdGEgPSBlbnRyeS5jb250cm9sRGF0YTsKIAotICAgIHVuc2ln
bmVkIHN0YWNrU2l6ZSA9IGRhdGEuc3RhY2tTaXplKCk7CisgICAgdW5zaWduZWQgc3RhY2tTaXpl
ID0gZGF0YS5zdGFja0NvdW50KCk7CiAgICAgaWYgKENvbnRyb2xUeXBlOjppc0FueUNhdGNoKGVu
dHJ5LmNvbnRyb2xEYXRhKSkKICAgICAgICAgKytzdGFja1NpemU7IC8vIEFjY291bnQgZm9yIHRo
ZSBjYXVnaHQgZXhjZXB0aW9uCi0gICAgUkVMRUFTRV9BU1NFUlQodW5yZWFjaGFibGUgfHwgbV9z
dGFja1NpemUgPT0gIHN0YWNrU2l6ZSArIGRhdGEubV9zaWduYXR1cmUtPnJldHVybkNvdW50KCkp
OworICAgIFJFTEVBU0VfQVNTRVJUKHVucmVhY2hhYmxlIHx8IHRoaXMtPnN0YWNrQ291bnQoKSA9
PSAgc3RhY2tTaXplICsgZGF0YS5tX3NpZ25hdHVyZS0+cmV0dXJuQ291bnQoKSk7CiAKLSAgICBt
X3N0YWNrU2l6ZSA9IGRhdGEuc3RhY2tTaXplKCk7CisgICAgbV9leHByZXNzaW9uU3RhY2tTbG90
cyA9IGRhdGEubV9leHByZXNzaW9uU3RhY2tTbG90czsKIAogICAgIGlmIChDb250cm9sVHlwZTo6
aXNUcnkoZGF0YSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxDb250cm9sQ2F0Y2g+KGRhdGEp
KQogICAgICAgICAtLW1fdHJ5RGVwdGg7CisgICAgCisgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5l
cmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlsiLCBtX2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAg
ICAgIkFkZCBlbmQsIG5ldyBzdGFjayBzbG90czogIiwgbGlzdER1bXAobV9leHByZXNzaW9uU3Rh
Y2tTbG90cyksICJyZWFjaGFibGU6ICIsICF1bnJlYWNoYWJsZSk7CiAKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZGF0YS5tX3NpZ25hdHVyZS0+cmV0dXJuQ291bnQoKTsgKytpKSB7CiAg
ICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZG8gYSBjb25zaXN0ZW5jeSBjaGVjayBoZXJlIGJl
Y2F1c2Ugd2UganVzdCByZXNldCB0aGUgc3RhY2sgc2l6ZQpAQCAtMTI4Miw3ICsxNDY1LDcgQEAg
YXV0byBMTEludEdlbmVyYXRvcjo6YWRkRW5kVG9VbnJlYWNoYWJsZShDb250cm9sRW50cnkmIGVu
dHJ5LCBTdGFjayYgZXhwcmVzc2lvblMKICAgICAgICAgLy8gVGhlIG9ubHkgcmVhc29uIHdlIGRv
IHRoaW5ncyB0aGlzIHdheSBpcyBzbyB0aGF0IGl0IGFsc28gd29ya3MgZm9yIHVucmVhY2hhYmxl
IGJsb2NrcywKICAgICAgICAgLy8gc2luY2UgdGhleSBtaWdodCBub3QgaGF2ZSB0aGUgcmlnaHQg
bnVtYmVyIG9mIHZhbHVlcyBpbiB0aGUgZXhwcmVzc2lvbiBzdGFjay4KICAgICAgICAgLy8gSW5z
dGVhZCwgd2UgZG8gYSBzdHJpY3RlciBjb25zaXN0ZW5jeSBjaGVjayBiZWxvdy4KLSAgICAgICAg
YXV0byB0bXAgPSBwdXNoKE5vQ29uc2lzdGVuY3lDaGVjayk7CisgICAgICAgIGF1dG8gdG1wID0g
cHVzaChkYXRhLm1fc2lnbmF0dXJlLT5yZXR1cm5UeXBlKGkpLCBOb0NvbnNpc3RlbmN5Q2hlY2sp
OwogICAgICAgICBBU1NFUlQodW5yZWFjaGFibGUgfHwgdG1wID09IGV4cHJlc3Npb25TdGFja1tp
XS52YWx1ZSgpKTsKICAgICAgICAgaWYgKHVucmVhY2hhYmxlKQogICAgICAgICAgICAgZW50cnku
ZW5jbG9zZWRFeHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKGRhdGEubV9zaWduYXR1
cmUtPnJldHVyblR5cGUoaSksIHRtcCk7CkBAIC0xMzIwLDExICsxNTAzLDE1IEBAIGF1dG8gTExJ
bnRHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0
dXJlJiBzaWduYXR1cmUsCiB7CiAgICAgQVNTRVJUKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkg
PT0gYXJncy5zaXplKCkpOwogICAgIExMSW50Q2FsbEluZm9ybWF0aW9uIGluZm8gPSBjYWxsSW5m
b3JtYXRpb25Gb3JDYWxsZXIoc2lnbmF0dXJlKTsKLSAgICB1bmlmeVZhbHVlc1dpdGhCbG9jayhp
bmZvLmFyZ3VtZW50cywgYXJncyk7CisgICAgVmVjdG9yPFR5cGVkRXhwcmVzc2lvbj4gdHlwZWRB
cmdzIChhcmdzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdzLnNpemUo
KTsgKytpKQorICAgICAgICB0eXBlZEFyZ3NbaV0gPSB7IHNpZ25hdHVyZS5hcmd1bWVudChpKSwg
YXJnc1tpXSB9OworICAgIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGluZm8uYXJndW1lbnRzLCB0eXBl
ZEFyZ3MpOworICAgIAogICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0VExTKCkpCi0gICAgICAgIFdh
c21DYWxsOjplbWl0KHRoaXMsIGZ1bmN0aW9uSW5kZXgsIGluZm8uc3RhY2tPZmZzZXQsIGluZm8u
bnVtYmVyT2ZTdGFja0FyZ3VtZW50cyk7CisgICAgICAgIFdhc21DYWxsOjplbWl0KHRoaXMsIGZ1
bmN0aW9uSW5kZXgsIGluZm8uc3RhY2tPZmZzZXQsIGluZm8uc2l6ZU9mU3RhY2tBcmd1bWVudHMp
OwogICAgIGVsc2UKLSAgICAgICAgV2FzbUNhbGxOb1Rsczo6ZW1pdCh0aGlzLCBmdW5jdGlvbklu
ZGV4LCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMpOworICAg
ICAgICBXYXNtQ2FsbE5vVGxzOjplbWl0KHRoaXMsIGZ1bmN0aW9uSW5kZXgsIGluZm8uc3RhY2tP
ZmZzZXQsIGluZm8uc2l6ZU9mU3RhY2tBcmd1bWVudHMpOwogICAgIGluZm8uY29tbWl0UmVzdWx0
cyhyZXN1bHRzKTsKIAogICAgIHJldHVybiB7IH07CkBAIC0xMzM5LDExICsxNTI2LDE1IEBAIGF1
dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBj
b25zdCBTaWduYXR1cmUmIHNpZ25hCiAgICAgQVNTRVJUKG1faW5mby50YWJsZXNbdGFibGVJbmRl
eF0udHlwZSgpID09IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpOwogCiAgICAgTExJbnRDYWxs
SW5mb3JtYXRpb24gaW5mbyA9IGNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihzaWduYXR1cmUpOwot
ICAgIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGluZm8uYXJndW1lbnRzLCBhcmdzKTsKKyAgICBWZWN0
b3I8VHlwZWRFeHByZXNzaW9uPiB0eXBlZEFyZ3MgKGFyZ3Muc2l6ZSgpKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFyZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgIHR5cGVkQXJnc1tpXSA9
IHsgc2lnbmF0dXJlLmFyZ3VtZW50KGkpLCBhcmdzW2ldIH07CisgICAgdW5pZnlWYWx1ZXNXaXRo
QmxvY2soaW5mby5hcmd1bWVudHMsIHR5cGVkQXJncyk7CisgICAgCiAgICAgaWYgKENvbnRleHQ6
OnVzZUZhc3RUTFMoKSkKLSAgICAgICAgV2FzbUNhbGxJbmRpcmVjdDo6ZW1pdCh0aGlzLCBjYWxs
ZWVJbmRleCwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNr
T2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMsIHRhYmxlSW5kZXgpOworICAgICAg
ICBXYXNtQ2FsbEluZGlyZWN0OjplbWl0KHRoaXMsIGNhbGxlZUluZGV4LCBtX2NvZGVCbG9jay0+
YWRkU2lnbmF0dXJlKHNpZ25hdHVyZSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8uc2l6ZU9mU3Rh
Y2tBcmd1bWVudHMsIHRhYmxlSW5kZXgpOwogICAgIGVsc2UKLSAgICAgICAgV2FzbUNhbGxJbmRp
cmVjdE5vVGxzOjplbWl0KHRoaXMsIGNhbGxlZUluZGV4LCBtX2NvZGVCbG9jay0+YWRkU2lnbmF0
dXJlKHNpZ25hdHVyZSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3Vt
ZW50cywgdGFibGVJbmRleCk7CisgICAgICAgIFdhc21DYWxsSW5kaXJlY3ROb1Rsczo6ZW1pdCh0
aGlzLCBjYWxsZWVJbmRleCwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBp
bmZvLnN0YWNrT2Zmc2V0LCBpbmZvLnNpemVPZlN0YWNrQXJndW1lbnRzLCB0YWJsZUluZGV4KTsK
ICAgICBpbmZvLmNvbW1pdFJlc3VsdHMocmVzdWx0cyk7CiAKICAgICByZXR1cm4geyB9OwpAQCAt
MTM1NCwxMSArMTU0NSwxNCBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRDYWxsUmVmKGNvbnN0
IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cAogICAgIEV4cHJlc3Np
b25UeXBlIGNhbGxlZSA9IGFyZ3MudGFrZUxhc3QoKTsKIAogICAgIExMSW50Q2FsbEluZm9ybWF0
aW9uIGluZm8gPSBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoc2lnbmF0dXJlKTsKLSAgICB1bmlm
eVZhbHVlc1dpdGhCbG9jayhpbmZvLmFyZ3VtZW50cywgYXJncyk7CisgICAgVmVjdG9yPFR5cGVk
RXhwcmVzc2lvbj4gdHlwZWRBcmdzIChhcmdzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQorICAgICAgICB0eXBlZEFyZ3NbaV0gPSB7IHNpZ25h
dHVyZS5hcmd1bWVudChpKSwgYXJnc1tpXSB9OworICAgIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGlu
Zm8uYXJndW1lbnRzLCB0eXBlZEFyZ3MpOwogICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0VExTKCkp
Ci0gICAgICAgIFdhc21DYWxsUmVmOjplbWl0KHRoaXMsIGNhbGxlZSwgbV9jb2RlQmxvY2stPmFk
ZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9mU3Rh
Y2tBcmd1bWVudHMpOworICAgICAgICBXYXNtQ2FsbFJlZjo6ZW1pdCh0aGlzLCBjYWxsZWUsIG1f
Y29kZUJsb2NrLT5hZGRTaWduYXR1cmUoc2lnbmF0dXJlKSwgaW5mby5zdGFja09mZnNldCwgaW5m
by5zaXplT2ZTdGFja0FyZ3VtZW50cyk7CiAgICAgZWxzZQotICAgICAgICBXYXNtQ2FsbFJlZk5v
VGxzOjplbWl0KHRoaXMsIGNhbGxlZSwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1
cmUpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMpOworICAg
ICAgICBXYXNtQ2FsbFJlZk5vVGxzOjplbWl0KHRoaXMsIGNhbGxlZSwgbV9jb2RlQmxvY2stPmFk
ZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLnNpemVPZlN0YWNr
QXJndW1lbnRzKTsKICAgICBpbmZvLmNvbW1pdFJlc3VsdHMocmVzdWx0cyk7CiAKICAgICByZXR1
cm4geyB9OwpAQCAtMTM2Niw3ICsxNTYwLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQ2Fs
bFJlZihjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXAKIAog
YXV0byBMTEludEdlbmVyYXRvcjo6YWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBlIHZhbHVlLCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0g
cHVzaCgpOworICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6OkkzMik7CiAgICAgV2FzbVJlZklzTnVs
bDo6ZW1pdCh0aGlzLCByZXN1bHQsIHZhbHVlKTsKIAogICAgIHJldHVybiB7IH07CkBAIC0xMzc0
LDcgKzE1NjgsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRSZWZJc051bGwoRXhwcmVzc2lv
blR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiAKIGF1dG8gTExJbnRHZW5lcmF0
b3I6OmFkZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+
IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBwdXNoKCk7CisgICAgcmVzdWx0ID0gcHVz
aChUeXBlczo6RnVuY3JlZik7CiAgICAgV2FzbVJlZkZ1bmM6OmVtaXQodGhpcywgcmVzdWx0LCBp
bmRleCk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTM4Miw3ICsxNTc2LDcgQEAgYXV0byBMTElu
dEdlbmVyYXRvcjo6YWRkUmVmRnVuYyh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCkgLT4gUGFydGkKIAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkVGFibGVHZXQodW5zaWdu
ZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBwdXNoKCk7CisgICAgcmVzdWx0
ID0gcHVzaChUeXBlczo6Vm9pZCk7IC8vIFRPRE8KICAgICBXYXNtVGFibGVHZXQ6OmVtaXQodGhp
cywgcmVzdWx0LCBpbmRleCwgdGFibGVJbmRleCk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTQx
MSw3ICsxNjA1LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkRWxlbURyb3AodW5zaWduZWQg
ZWxlbWVudEluZGV4KSAtPiBQYXJ0aWFsUmVzdWx0CiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFk
ZFRhYmxlU2l6ZSh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAt
PiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHB1c2goVHlwZXM6
OkkzMik7CiAgICAgV2FzbVRhYmxlU2l6ZTo6ZW1pdCh0aGlzLCByZXN1bHQsIHRhYmxlSW5kZXgp
OwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTE0MTksNyArMTYxMyw3IEBAIGF1dG8gTExJbnRHZW5l
cmF0b3I6OmFkZFRhYmxlU2l6ZSh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KSAtCiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFRhYmxlR3Jvdyh1bnNpZ25lZCB0
YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSBmaWxsLCBFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1
c2goKTsKKyAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpJMzIpOwogICAgIFdhc21UYWJsZUdyb3c6
OmVtaXQodGhpcywgcmVzdWx0LCBmaWxsLCBkZWx0YSwgdGFibGVJbmRleCk7CiAKICAgICByZXR1
cm4geyB9OwpAQCAtMTQ0Nyw3ICsxNjQxLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkVW5y
ZWFjaGFibGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEN1
cnJlbnRNZW1vcnkoRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewot
ICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpJMzIpOwogICAg
IFdhc21DdXJyZW50TWVtb3J5OjplbWl0KHRoaXMsIHJlc3VsdCk7CiAKICAgICByZXR1cm4geyB9
OwpAQCAtMTQ2OSw3ICsxNjYzLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkRGF0YURyb3Ao
dW5zaWduZWQgZGF0YVNlZ21lbnRJbmRleCkgLT4gUGFydGlhbFJlc3VsdAogCiBhdXRvIExMSW50
R2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOwor
ICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6OkkzMik7CiAgICAgV2FzbUdyb3dNZW1vcnk6OmVtaXQo
dGhpcywgcmVzdWx0LCBkZWx0YSk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTQ4OSw3ICsxNjgz
LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkTWVtb3J5Q29weShFeHByZXNzaW9uVHlwZSBk
c3RBZGRyZXNzLCBFeHByZXNzaW9uVHlwZSBzcmMKIAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRk
U2VsZWN0KEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwgRXhwcmVzc2lvblR5cGUgbm9uWmVybywg
RXhwcmVzc2lvblR5cGUgemVybywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJl
c3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpW
b2lkKTsgLy8gVE9ETwogICAgIFdhc21TZWxlY3Q6OmVtaXQodGhpcywgcmVzdWx0LCBjb25kaXRp
b24sIG5vblplcm8sIHplcm8pOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTE0OTcsNyArMTY5MSwz
NCBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRTZWxlY3QoRXhwcmVzc2lvblR5cGUgY29uZGl0
aW9uLCBFeHByZXNzaW9uVHlwZSBub25aZXJvLAogCiBhdXRvIExMSW50R2VuZXJhdG9yOjpsb2Fk
KExvYWRPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQsIHVpbnQzMl90IG9mZnNldCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9
IHB1c2goKTsKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2Fk
OFM6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkOFU6CisgICAgY2FzZSBMb2FkT3BUeXBl
OjpJMzJMb2FkMTZTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDE2VToKKyAgICBjYXNl
IExvYWRPcFR5cGU6OkkzMkxvYWQ6CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6OkkzMik7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkOFM6CisgICAg
Y2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkOFU6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2Fk
MTZTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDE2VToKKyAgICBjYXNlIExvYWRPcFR5
cGU6Okk2NExvYWQzMlU6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMzJTOgorICAgIGNh
c2UgTG9hZE9wVHlwZTo6STY0TG9hZDoKKyAgICAgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6STY0
KTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICBjYXNlIExvYWRPcFR5cGU6OkYz
MkxvYWQ6CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6OkYzMik7CisgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgCisgICAgY2FzZSBMb2FkT3BUeXBlOjpGNjRMb2FkOgorICAgICAgICBy
ZXN1bHQgPSBwdXNoKFR5cGVzOjpGNjQpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBz
d2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkOFM6CiAgICAgICAgIFdh
c21JMzJMb2FkOFM6OmVtaXQodGhpcywgcmVzdWx0LCBwb2ludGVyLCBvZmZzZXQpOwpAQCAtMTU3
NCw3ICsxNzk1LDIyIEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OnN0b3JlKFN0b3JlT3BUeXBlIG9w
LCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwCiAKIGF1dG8gTExJbnRHZW5l
cmF0b3I6OmF0b21pY0xvYWQoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlLCBFeHByZXNzaW9uVHlw
ZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0LCB1aW50MzJfdCBvZmZzZXQpIC0+IFBh
cnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBwdXNoKCk7CisgICAgc3dpdGNoIChvcCkgewor
ICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNMb2FkOFU6CisgICAgY2FzZSBFeHRB
dG9taWNPcFR5cGU6OkkzMkF0b21pY0xvYWQxNlU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6
OkkzMkF0b21pY0xvYWQ6CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6OkkzMik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNMb2FkOFU6Cisg
ICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY0xvYWQxNlU6CisgICAgY2FzZSBFeHRB
dG9taWNPcFR5cGU6Okk2NEF0b21pY0xvYWQzMlU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6
Okk2NEF0b21pY0xvYWQ6CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6Okk2NCk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQorICAgIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIEV4dEF0b21p
Y09wVHlwZTo6STMyQXRvbWljTG9hZDhVOgogICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRB
dG9taWNMb2FkOFU6CkBAIC0xNjAwLDcgKzE4MzYsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjph
dG9taWNMb2FkKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSwgRXhwcmVzc2lvblR5cGUgcG9pbnRl
cgogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphdG9taWNTdG9yZShFeHRBdG9taWNPcFR5cGUgb3As
IFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50
MzJfdCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHB1c2go
KTsKKyAgICBhdXRvIHJlc3VsdCA9IHB1c2goVHlwZXM6Okk2NCk7CiAgICAgc3dpdGNoIChvcCkg
ewogICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNTdG9yZThVOgogICAgIGNhc2Ug
RXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNTdG9yZThVOgpAQCAtMTYyMSwxMyArMTg1Nyw2NiBA
QCBhdXRvIExMSW50R2VuZXJhdG9yOjphdG9taWNTdG9yZShFeHRBdG9taWNPcFR5cGUgb3AsIFR5
cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50ZQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KIAotICAgIGRpZFBvcFZhbHVlRnJvbVN0YWNrKCk7IC8vIElnbm9yZSB0
aGUgcmVzdWx0LgorICAgIGRpZFBvcFZhbHVlRnJvbVN0YWNrKFR5cGVzOjpJNjQpOyAvLyBJZ25v
cmUgdGhlIHJlc3VsdC4KICAgICByZXR1cm4geyB9OwogfQogCiBhdXRvIExMSW50R2VuZXJhdG9y
OjphdG9taWNCaW5hcnlSTVcoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlLCBFeHByZXNzaW9uVHlw
ZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwg
dWludDMyX3Qgb2Zmc2V0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgp
OworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWlj
Um13OEFkZFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1JtdzE2QWRkVToK
KyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13QWRkOgorICAgIGNhc2UgRXh0
QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXc4U3ViVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlw
ZTo6STMyQXRvbWljUm13MTZTdWJVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9t
aWNSbXdTdWI6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1JtdzhBbmRVOgor
ICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXcxNkFuZFU6CisgICAgY2FzZSBF
eHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1Jtd0FuZDoKKyAgICBjYXNlIEV4dEF0b21pY09wVHlw
ZTo6STMyQXRvbWljUm13OE9yVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWlj
Um13MTZPclU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1Jtd09yOgorICAg
IGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXc4WG9yVToKKyAgICBjYXNlIEV4dEF0
b21pY09wVHlwZTo6STMyQXRvbWljUm13MTZYb3JVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBl
OjpJMzJBdG9taWNSbXdYb3I6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1Jt
dzhYY2hnVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13MTZYY2hnVToK
KyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13WGNoZzoKKyAgICAgICAgcmVz
dWx0ID0gcHVzaChUeXBlczo6STMyKTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAg
ICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13OEFkZFU6CisgICAgY2FzZSBFeHRB
dG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzE2QWRkVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlw
ZTo6STY0QXRvbWljUm13MzJBZGRVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9t
aWNSbXdBZGQ6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzhTdWJVOgor
ICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXcxNlN1YlU6CisgICAgY2FzZSBF
eHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzMyU3ViVToKKyAgICBjYXNlIEV4dEF0b21pY09w
VHlwZTo6STY0QXRvbWljUm13U3ViOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9t
aWNSbXc4QW5kVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13MTZBbmRV
OgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXczMkFuZFU6CisgICAgY2Fz
ZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1Jtd0FuZDoKKyAgICBjYXNlIEV4dEF0b21pY09w
VHlwZTo6STY0QXRvbWljUm13OE9yVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRv
bWljUm13MTZPclU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzMyT3JV
OgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXdPcjoKKyAgICBjYXNlIEV4
dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13OFhvclU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5
cGU6Okk2NEF0b21pY1JtdzE2WG9yVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRv
bWljUm13MzJYb3JVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXdYb3I6
CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzhYY2hnVToKKyAgICBjYXNl
IEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13MTZYY2hnVToKKyAgICBjYXNlIEV4dEF0b21p
Y09wVHlwZTo6STY0QXRvbWljUm13MzJYY2hnVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6
STY0QXRvbWljUm13WGNoZzoKKyAgICAgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6STY0KTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgCiAgICAg
c3dpdGNoIChvcCkgewogICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXc4QWRk
VToKICAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13OEFkZFU6CkBAIC0xNzI5
LDcgKzIwMTgsMjMgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWljQmluYXJ5Uk1XKEV4dEF0
b21pY09wVHlwZSBvcCwgVHlwZSwgRXhwcmVzc2lvblR5cGUgcG8KIAogYXV0byBMTEludEdlbmVy
YXRvcjo6YXRvbWljQ29tcGFyZUV4Y2hhbmdlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSwgRXhw
cmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUgZXhwZWN0ZWQsIEV4cHJlc3Npb25U
eXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0LCB1aW50MzJfdCBvZmZzZXQpIC0+IFBh
cnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBwdXNoKCk7CisgICAgc3dpdGNoIChvcCkgewor
ICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXc4Q21weGNoZ1U6CisgICAgY2Fz
ZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1JtdzE2Q21weGNoZ1U6CisgICAgY2FzZSBFeHRB
dG9taWNPcFR5cGU6OkkzMkF0b21pY1Jtd0NtcHhjaGc6CisgICAgICAgIHJlc3VsdCA9IHB1c2go
VHlwZXM6OkkzMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJ
NjRBdG9taWNSbXc4Q21weGNoZ1U6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21p
Y1JtdzE2Q21weGNoZ1U6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzMy
Q21weGNoZ1U6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1Jtd0NtcHhjaGc6
CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6Okk2NCk7CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICAKICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBFeHRBdG9t
aWNPcFR5cGU6OkkzMkF0b21pY1JtdzhDbXB4Y2hnVToKICAgICBjYXNlIEV4dEF0b21pY09wVHlw
ZTo6STY0QXRvbWljUm13OENtcHhjaGdVOgpAQCAtMTc1Niw3ICsyMDYxLDcgQEAgYXV0byBMTElu
dEdlbmVyYXRvcjo6YXRvbWljQ29tcGFyZUV4Y2hhbmdlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlw
ZSwgRXhwcmVzc2lvblQKIAogYXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWljV2FpdChFeHRBdG9t
aWNPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVl
LCBFeHByZXNzaW9uVHlwZSB0aW1lb3V0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0LCB1aW50MzJf
dCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBwdXNoKCk7CisgICAg
cmVzdWx0ID0gcHVzaChUeXBlczo6STMyKTsKICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBF
eHRBdG9taWNPcFR5cGU6Ok1lbW9yeUF0b21pY1dhaXQzMjoKICAgICAgICAgV2FzbU1lbW9yeUF0
b21pY1dhaXQzMjo6ZW1pdCh0aGlzLCByZXN1bHQsIHBvaW50ZXIsIG9mZnNldCwgdmFsdWUsIHRp
bWVvdXQpOwpAQCAtMTc3Myw3ICsyMDc4LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWlj
V2FpdChFeHRBdG9taWNPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHIKIAog
YXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWljTm90aWZ5KEV4dEF0b21pY09wVHlwZSBvcCwgRXhw
cmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUgY291bnQsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQsIHVpbnQzMl90IG9mZnNldCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIHJlc3Vs
dCA9IHB1c2goKTsKKyAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpJMzIpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKG9wID09IEV4dEF0b21pY09wVHlwZTo6TWVtb3J5QXRvbWljTm90aWZ5KTsKICAgICBX
YXNtTWVtb3J5QXRvbWljTm90aWZ5OjplbWl0KHRoaXMsIHJlc3VsdCwgcG9pbnRlciwgb2Zmc2V0
LCBjb3VudCk7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTE3ODcsNyArMjA5MiwyNCBAQCBhdXRvIExM
SW50R2VuZXJhdG9yOjphdG9taWNGZW5jZShFeHRBdG9taWNPcFR5cGUsIHVpbnQ4X3QpIC0+IFBh
cnRpYWxSZXN1bHQKIAogYXV0byBMTEludEdlbmVyYXRvcjo6dHJ1bmNTYXR1cmF0ZWQoRXh0MU9w
VHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgb3BlcmFuZCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwg
VHlwZSwgVHlwZSkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAg
ICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBFeHQxT3BUeXBlOjpJMzJUcnVuY1NhdEYzMlM6Cisg
ICAgY2FzZSBFeHQxT3BUeXBlOjpJMzJUcnVuY1NhdEYzMlU6CisgICAgY2FzZSBFeHQxT3BUeXBl
OjpJMzJUcnVuY1NhdEY2NFM6CisgICAgY2FzZSBFeHQxT3BUeXBlOjpJMzJUcnVuY1NhdEY2NFU6
CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6OkkzMik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRXh0MU9wVHlwZTo6STY0VHJ1bmNTYXRGMzJTOgorICAgIGNhc2UgRXh0MU9wVHlwZTo6
STY0VHJ1bmNTYXRGMzJVOgorICAgIGNhc2UgRXh0MU9wVHlwZTo6STY0VHJ1bmNTYXRGNjRTOgor
ICAgIGNhc2UgRXh0MU9wVHlwZTo6STY0VHJ1bmNTYXRGNjRVOgorICAgICAgICByZXN1bHQgPSBw
dXNoKFR5cGVzOjpJNjQpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
CiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgRXh0MU9wVHlwZTo6STMyVHJ1bmNTYXRGMzJT
OgogICAgICAgICBXYXNtSTMyVHJ1bmNTYXRGMzJTOjplbWl0KHRoaXMsIHJlc3VsdCwgb3BlcmFu
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT1NSRW50cnlE
YXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT1NSRW50cnlEYXRhLmgKaW5k
ZXggODM0MjdkMjA3MzJlLi42ZGZjYWFmMTIxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21PU1JFbnRyeURhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtT1NSRW50cnlEYXRhLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAg
ICAgICA6IG1fZnVuY3Rpb25JbmRleChmdW5jdGlvbkluZGV4KQogICAgICAgICAsIG1fbG9vcElu
ZGV4KGxvb3BJbmRleCkKICAgICAgICAgLCBtX3ZhbHVlcyhXVEZNb3ZlKHN0YWNrTWFwKSkKLSAg
ICB7CisgICAgeyBpZiAoIU9wdGlvbnM6OnZhbGlkYXRlR3JhcGgoKSB8fCBPcHRpb25zOjp2YWxp
ZGF0ZUdyYXBoQXRFYWNoUGhhc2UoKSkgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCiAg
ICAgdWludDMyX3QgZnVuY3Rpb25JbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25JbmRl
eDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oCmluZGV4IGVkMDBkOWEw
YTQyYi4uODBjMWM4NjJlZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNl
ci5oCkBAIC00NSw2ICs0NSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7
CiAKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IE1BWF9TSU1EX0FSR1VNRU5UUyA9IDI7CitzdGF0
aWMgY29uc3RleHByIHNpemVfdCBNQVhfU0lNRF9JTU1FRElBVEVTID0gMjsKKwogbmFtZXNwYWNl
IEZhaWx1cmVIZWxwZXIgewogLy8gRklYTUUgV2Ugc2hvdWxkIG1vdmUgdGhpcyB0byBtYWtlU3Ry
aW5nLiBJdCdzIGluIGl0cyBvd24gbmFtZXNwYWNlIHRvIGVuYWJsZSBDKysgQXJndW1lbnQgRGVw
ZW5kZW50IExvb2t1cCDDoCBsYSBzdGQ6OnN3YXA6IHVzZXIgY29kZSBjYW4gZGVibGFyZSBpdHMg
b3duICJib3hGYWlsdXJlIiBhbmQgdGhlIGZhaWwoKSBoZWxwZXIgd2lsbCBmaW5kIGl0LgogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KQEAgLTc3LDYgKzgwLDggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
V0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVUludDgodWludDhfdCYpOwogICAgIGJvb2wgV0FSTl9V
TlVTRURfUkVUVVJOIHBhcnNlVUludDMyKHVpbnQzMl90Jik7CiAgICAgYm9vbCBXQVJOX1VOVVNF
RF9SRVRVUk4gcGFyc2VVSW50NjQodWludDY0X3QmKTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JF
VFVSTiBwYXJzZUltbUJ5dGVBcnJheTE2KHYxMjhfdCYpOworICAgIFBhcnRpYWxSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIHBhcnNlSW1tTGFuZUlkeCh1aW50OF90IGxhbmVDb3VudCwgdWludDhf
dCYpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVmFyVUludDMyKHVpbnQzMl90
Jik7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VWYXJVSW50NjQodWludDY0X3Qm
KTsKIApAQCAtMjIzLDYgKzIyOCwyNSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nl
c3NUeXBlPjo6cGFyc2VVSW50NjQodWludDY0X3QmIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgU3VjY2Vzc1R5cGU+CitBTFdBWVNfSU5MSU5FIGJvb2wg
UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VJbW1CeXRlQXJyYXkxNih2MTI4X3QmIHJlc3VsdCkK
K3sKKyAgICBpZiAobGVuZ3RoKCkgPCAxNiB8fCBtX29mZnNldCA+IGxlbmd0aCgpIC0gMTYpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzdGQ6OmNvcHkoc291cmNlKCkgKyBtX29mZnNldCwg
c291cmNlKCkgKyBtX29mZnNldCArIDE2LCByZXN1bHQudTh4MTYpOworICAgIG1fb2Zmc2V0ICs9
IDE2OworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdWNjZXNzVHlw
ZT4KK0FMV0FZU19JTkxJTkUgdHlwZW5hbWUgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6UGFydGlhbFJl
c3VsdCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZUltbUxhbmVJZHgodWludDhfdCBsYW5lQ291
bnQsIHVpbnQ4X3QmIHJlc3VsdCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChsYW5lQ291bnQgPT0g
MiB8fCBsYW5lQ291bnQgPT0gNCB8fCBsYW5lQ291bnQgPT0gOCB8fCBsYW5lQ291bnQgPT0gMTYg
fHwgbGFuZUNvdW50ID09IDMyKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4
KHJlc3VsdCksICJDb3VsZCBub3QgcGFyc2UgdGhlIGxhbmUgaW5kZXggaW1tZWRpYXRlIGJ5dGUu
Iik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihyZXN1bHQgPj0gbGFuZUNvdW50LCAiTGFuZSBp
bmRleCBpbW1lZGlhdGUgaXMgdG9vIGxhcmdlLCBzYXcgIiwgbGFuZUNvdW50LCAiLCBleHBlY3Rl
ZCBhbiBJbW1MYW5lSWR4IiwgbGFuZUNvdW50KTsKKyAgICByZXR1cm4geyB9OworfQorCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBTdWNjZXNzVHlwZT4KIEFMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3Vj
Y2Vzc1R5cGU+OjpwYXJzZVVJbnQ4KHVpbnQ4X3QmIHJlc3VsdCkKIHsKQEAgLTI3NCw3ICsyOTgs
NyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYXJVSW50
MSh1aW50OF90JiByZXN1bHQpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN1Y2Nlc3NUeXBlPgot
QUxXQVlTX0lOTElORSB0eXBlbmFtZSBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpQYXJ0aWFsUmVzdWx0
IFBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlQmxvY2tTaWduYXR1cmUoY29uc3QgTW9kdWxlSW5m
b3JtYXRpb24mIGluZm8sIEJsb2NrU2lnbmF0dXJlJiByZXN1bHQpCitBTFdBWVNfSU5MSU5FIGF1
dG8gUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VCbG9ja1NpZ25hdHVyZShjb25zdCBNb2R1bGVJ
bmZvcm1hdGlvbiYgaW5mbywgQmxvY2tTaWduYXR1cmUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3Vs
dAogewogICAgIGludDhfdCB0eXBlS2luZDsKICAgICBpZiAocGVla0ludDcodHlwZUtpbmQpICYm
IGlzVmFsaWRUeXBlS2luZCh0eXBlS2luZCkpIHsKQEAgLTMzMSw3ICszNTUsNyBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYWx1ZVR5cGUoY29uc3QgTW9k
dWxlSW5mb3JtYXRpb24mCiAgICAgVHlwZUtpbmQgdHlwZUtpbmQgPSBzdGF0aWNfY2FzdDxUeXBl
S2luZD4oa2luZCk7CiAgICAgYm9vbCBpc051bGxhYmxlID0gdHJ1ZTsKICAgICBTaWduYXR1cmVJ
bmRleCBzaWdJbmRleCA9IDA7Ci0KKyAgICAKICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1i
bHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpICYmICh0eXBlS2luZCA9PSBUeXBlS2luZDo6RnVu
Y3JlZiB8fCB0eXBlS2luZCA9PSBUeXBlS2luZDo6RXh0ZXJucmVmKSkgewogICAgICAgICBzaWdJ
bmRleCA9IHN0YXRpY19jYXN0PFNpZ25hdHVyZUluZGV4Pih0eXBlS2luZCk7CiAgICAgICAgIHR5
cGVLaW5kID0gVHlwZUtpbmQ6OlJlZk51bGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TaWduYXR1cmUuY3BwCmluZGV4IGY5YTU2MWI4NTBmYy4uMDgxM2Q0NjAzYThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtOTYsNyAr
OTYsNyBAQCBSZWZQdHI8U2lnbmF0dXJlPiBTaWduYXR1cmU6OnRyeUNyZWF0ZShTaWduYXR1cmVB
cmdDb3VudCByZXR1cm5Db3VudCwgU2lnbmF0dXJlQQogCiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6
U2lnbmF0dXJlSW5mb3JtYXRpb24oKQogewotI2RlZmluZSBNQUtFX1RIVU5LX1NJR05BVFVSRSh0
eXBlLCBlbmMsIHN0ciwgdmFsLCBfKSAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBN
QUtFX1RIVU5LX1NJR05BVFVSRSh0eXBlLCBlbmMsIHN0ciwgdmFsLCAuLi4pICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChUeXBlS2luZDo6
dHlwZSAhPSBUeXBlS2luZDo6Vm9pZCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgICAgICAgICBSZWZQdHI8U2lnbmF0dXJlPiBzaWcgPSBTaWduYXR1cmU6OnRyeUNyZWF0ZSgx
LCAwKTsgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9nZW5lcmF0ZVNpbWRPcGNvZGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2Vu
ZXJhdGVTaW1kT3Bjb2Rlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmFhYTQ3MTQ5Nzk1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2dlbmVyYXRlU2ltZE9wY29kZXMucHkKQEAgLTAsMCArMSwxMTggQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbjMKKworIyBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMg
VGhpcyBzY3JpcHQgZ2VuZXJhdGVzIHRoZSBvcGNvZGUgZGF0YSBmb3Igc2ltZCBvcGNvZGVzCisj
IGNzdiBzb3VyY2U6IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzFtSXRB
UEREeVVEOTdRZHRCOXlwNDR1dFRQOXZSUlM5WE12MFlaX2VQejlzL2VkaXQ/dXNwPXNoYXJpbmcK
KworaW1wb3J0IGNzdgoraW1wb3J0IGpzb24KKwordmVyYm9zZSA9IEZhbHNlCisKK2RlZiBjcHBU
eXBlKHR5cGUpOgorICAgIGlmIHR5cGUgPT0gImJvb2wiOgorICAgICAgICByZXR1cm4gIkkzMiIK
KyAgICByZXR1cm4gIiIuam9pbihtYXAobGFtYmRhIHg6IHguY2FwaXRhbGl6ZSgpLCB0eXBlLnNw
bGl0KCdfJykpKQorCitkZWYgc2ltZE9wY29kZXMoY3N2RGlyZWN0b3J5KToKKyAgICBvcHMgPSB7
fQorCisgICAgd2l0aCBvcGVuKGNzdkRpcmVjdG9yeSArICIvc2ltZE9wY29kZXMuY3N2IiwgJ3In
KSBhcyBjc3ZmaWxlOgorICAgICAgICByZWFkZXIgPSBjc3YuRGljdFJlYWRlcihjc3ZmaWxlKQor
ICAgICAgICBmb3Igcm93IGluIHJlYWRlcjoKKyAgICAgICAgICAgIG9wc1tyb3dbIkluc3RydWN0
aW9uIl1dID0gY29udmVydFJvdyhyb3cpCisKKyAgICBpZiB2ZXJib3NlOgorICAgICAgICBwcmlu
dChqc29uLmR1bXBzKG9wcywgc29ydF9rZXlzPVRydWUsIGluZGVudD00KSkKKworICAgIHJldHVy
biBvcHMKKworZGVmIGNvbnZlcnRSb3cocm93KTogCisgICAgcmVzID0ge30KKworICAgIHJlc1si
Y2F0ZWdvcnkiXSA9IHJvd1siY2F0ZWdvcnkiXQorICAgIHJlc1sidmFsdWUiXSA9IGludChyb3db
InZhbHVlIl0sMCkKKyAgICByZXNbImV4dGVuZGVkT3AiXSA9IGludChyb3dbImV4dGVuZGVkT3Ai
XSwwKQorICAgIHNjYWxhclR5cGUgPSByb3dbInNjYWxhclR5cGUiXQorICAgIHJlc1sic2ltZF9z
Y2FsYXJfdHlwZSJdID0gc2NhbGFyVHlwZQorICAgIGlmIHNjYWxhclR5cGUgbm90IGluIFsndm9p
ZCcsICJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiXToKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KGYiaW52YWxpZCBzY2FsYXIgdHlwZToge3NjYWxhclR5cGV9IikKKyAgICByZXNbJ3NpbWRfb3Bl
cmF0aW9uJ10gPSByb3dbIm9wIl0KKyAgICByZXNbJ3NpbWRfc2lnbl9leHRlbmRfbW9kZSddID0g
cm93WyJzaWduRXh0ZW5kIl0KKyAgICByZXNbJ3NpbWRfbGFuZV9pbnRlcnByZXRhdGlvbiddID0g
cm93WyJpbnRlcnByZXRhdGlvbiJdCisgICAgcmVzWyJpc19zaW1kX3NwZWNpYWxfb3AiXSA9IChy
b3dbInNwZWNpYWwiXSA9PSAneScpCisKKyAgICBkZWYgZml4UGFyYW1zKHApOgorICAgICAgICBw
ID0gcC5zdHJpcCgpCisgICAgICAgIHAgPSBwLnNwbGl0KCIsIikKKyAgICAgICAgcCA9IFt0LnN0
cmlwKCkgZm9yIHQgaW4gcCBpZiB0ICE9ICcnXQorICAgICAgICByZXR1cm4gW2ZpeFR5cGUodCkg
Zm9yIHQgaW4gcF0KKworICAgIGRlZiBmaXhUeXBlKHQpOgorICAgICAgICB0ID0gdC5zcGxpdCgi
OiIpCisgICAgICAgIHQgPSB0Wy0xXS5zdHJpcCgpCisKKyAgICAgICAgaWYgdCA9PSAidiI6Cisg
ICAgICAgICAgICByZXR1cm4gInYxMjgiCisgICAgICAgIGlmIHQgPT0gInMiOgorICAgICAgICAg
ICAgaWYgc2NhbGFyVHlwZSA9PSAndm9pZCc6CisgICAgICAgICAgICAgICAgcmFpc2UgRXJyb3Io
ZiJpbnN0cnVjdGlvbiB7cmVzfSBkb2VzIG5vdCBoYXZlIGEgc2NhbGFyIHR5cGUiKQorICAgICAg
ICAgICAgcmV0dXJuIHNjYWxhclR5cGUKKworICAgICAgICByYWlzZSBFeGNlcHRpb24oZiJlcnJv
cjogdHlwZSB7dH0gbm90IGZvdW5kLCB1cGRhdGUgZ2VuZXJhdGVTaW1kT3Bjb2Rlcy5weSIpCisg
ICAgCisgICAgZGVmIGZpeEltbXMocCk6CisgICAgICAgIHAgPSBwLnN0cmlwKCkKKyAgICAgICAg
cCA9IHAuc3BsaXQoIiwiKQorICAgICAgICBwID0gW3Quc3RyaXAoKSBmb3IgdCBpbiBwIGlmIHQg
IT0gJyddCisgICAgICAgIHAgPSBbZml4SW1tKHQpIGZvciB0IGluIHBdCisgICAgICAgIHJldHVy
biBbaiBmb3IgaSBpbiBwIGZvciBqIGluIGldCisgICAgCisgICAgZGVmIGZpeEltbSh0KToKKyAg
ICAgICAgdCA9IHQuc3BsaXQoIjoiKQorICAgICAgICB0ID0gdFstMV0uc3RyaXAoKQorCisgICAg
ICAgIGlmIHQgPT0gIm1lbWFyZyI6CisgICAgICAgICAgICByZXR1cm4gW3sibmFtZSI6ICJvZmZz
ZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogImFsZ2luIiwgInR5cGUiOiAidmFy
dWludDMyIn1dCisgICAgICAgIGlmIHQgPT0gIkltbUJ5dGVbMTZdIjoKKyAgICAgICAgICAgIHJl
dHVybiBbeyJuYW1lIjogImltbWJ5dGVbMDo4XSIsICJ0eXBlIjogInZhcnVpbnQ2NCJ9LCB7Im5h
bWUiOiAiaW1tYnl0ZVs4OjE2XSIsICJ0eXBlIjogInZhcnVpbnQ2NCJ9XQorICAgICAgICBpZiB0
IGluIFsiSW1tTGFuZUlkeDIiLCAiSW1tTGFuZUlkeDQiLCAiSW1tTGFuZUlkeDgiLCAiSW1tTGFu
ZUlkeDE2IiwgIkltbUxhbmVJZHgiXToKKyAgICAgICAgICAgIHJldHVybiBbeyJuYW1lIjogImxh
bmVpZHgiLCAidHlwZSI6ICJ2YXJ1aW50OCIsICJsYW5lU2l6ZSI6IHRbbGVuKCJJbW1MYW5lSWR4
Iik6XX1dCisKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKGYiZXJyb3I6IHR5cGUge3R9IG5vdCBm
b3VuZCwgdXBkYXRlIGdlbmVyYXRlU2ltZE9wY29kZXMucHkiKQorCisgICAgcmVzWyJpbW1lZGlh
dGUiXSA9IGZpeEltbXMocm93WyJJbW0iXSkKKyAgICByZXNbInBhcmFtZXRlciJdID0gZml4UGFy
YW1zKHJvd1sicGFyYW1zIl0pCisgICAgcmVzWyJyZXR1cm4iXSA9IFtmaXhUeXBlKHJvd1sicmV0
dXJuIl0pXSBpZiByb3dbInJldHVybiJdICE9ICcnIGVsc2UgW10KKworICAgIHdhc21PcCA9IGNw
cFR5cGUocmVzWyJzaW1kX29wZXJhdGlvbiJdKSArIGNwcFR5cGUocmVzWyJzaW1kX2xhbmVfaW50
ZXJwcmV0YXRpb24iXSkKKyAgICBpZiByZXNbInNpbWRfc2lnbl9leHRlbmRfbW9kZSJdID09ICJV
IjoKKyAgICAgICAgd2FzbU9wICs9ICJVIgorICAgIGVsaWYgcmVzWyJzaW1kX3NpZ25fZXh0ZW5k
X21vZGUiXSA9PSAiUyI6CisgICAgICAgIHdhc21PcCArPSAiUyIKKyAgICByZXNbImIzb3AiXSA9
IGNwcFR5cGUocmVzWyJzaW1kX29wZXJhdGlvbiJdKQorICAgIHJlc1sid2FzbU9wIl0gPSAiV2Fz
bVNpbWQiICsgd2FzbU9wCisKKyAgICByZXR1cm4gcmVzClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNt
LnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtLnB5CmluZGV4IGQ0
ZTYxMGUxZjIxNy4uNTc4ZjM2YTA1MzU2IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9nZW5lcmF0ZVdhc20ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
Z2VuZXJhdGVXYXNtLnB5CkBAIC0yNywxOSArMjcsMjMgQEAKIAogaW1wb3J0IGpzb24KIGltcG9y
dCBtYXRoCitpbXBvcnQgb3MKIGltcG9ydCByZQorZnJvbSBnZW5lcmF0ZVNpbWRPcGNvZGVzIGlt
cG9ydCAqCiAKIGNsYXNzIFdhc206CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNjcmlwdE5hbWUs
IGpzb25QYXRoKToKICAgICAgICAgd2FzbUZpbGUgPSBvcGVuKGpzb25QYXRoLCAiciIpCiAgICAg
ICAgIHdhc20gPSBqc29uLmxvYWQob3Blbihqc29uUGF0aCwgInIiKSkKICAgICAgICAgd2FzbUZp
bGUuY2xvc2UoKQorICAgICAgICBqc29uRGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKG9zLnBh
dGguYWJzcGF0aChqc29uUGF0aCkpCiAgICAgICAgIGZvciBwcmUgaW4gd2FzbVsicHJlYW1ibGUi
XToKICAgICAgICAgICAgIGlmIHByZVsibmFtZSJdID09ICJ2ZXJzaW9uIjoKICAgICAgICAgICAg
ICAgICBzZWxmLmV4cGVjdGVkVmVyc2lvbk51bWJlciA9IHN0cihwcmVbInZhbHVlIl0pCiAgICAg
ICAgIHNlbGYucHJlYW1ibGUgPSB3YXNtWyJwcmVhbWJsZSJdCiAgICAgICAgIHNlbGYudHlwZXMg
PSB3YXNtWyJ0eXBlIl0KICAgICAgICAgc2VsZi5vcGNvZGVzID0gd2FzbVsib3Bjb2RlIl0KKyAg
ICAgICAgc2VsZi5vcGNvZGVzLnVwZGF0ZShzaW1kT3Bjb2Rlcyhqc29uRGlyZWN0b3J5KSkKICAg
ICAgICAgc2VsZi5oZWFkZXIgPSAiIiIvKgogICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTExMCw2ICsxMTQsOCBAQCBkZWYg
aXNBdG9taWNTdG9yZShvcCk6CiBkZWYgaXNBdG9taWNCaW5hcnlSTVcob3ApOgogICAgIHJldHVy
biBvcFsiY2F0ZWdvcnkiXSA9PSAiYXRvbWljLnJtdy5iaW5hcnkiCiAKK2RlZiBpc1NpbWQob3Ap
OgorICAgIHJldHVybiBvcFsiY2F0ZWdvcnkiXS5zdGFydHN3aXRoKCJzaW1kIikKIAogZGVmIGlz
U2ltcGxlKG9wKToKICAgICByZXR1cm4gImIzb3AiIGluIG9wCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkKaW5kZXggNjU3NmE2OWM1
NjgzLi5lZDgyYjdkNDkxYTcgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkKQEAgLTQzLDcgKzQzLDcgQEAgd2FzbU9wc0hGaWxl
ID0gb3BlbihhcmdzWzJdLCAidyIpCiBkZWYgY3BwVHlwZSh0eXBlKToKICAgICBpZiB0eXBlID09
ICJib29sIjoKICAgICAgICAgcmV0dXJuICJJMzIiCi0gICAgcmV0dXJuIHR5cGUuY2FwaXRhbGl6
ZSgpCisgICAgcmV0dXJuICIiLmpvaW4obWFwKGxhbWJkYSB4OiB4LmNhcGl0YWxpemUoKSwgdHlw
ZS5zcGxpdCgnXycpKSkKIAogCiBkZWYgY3BwTWFjcm8od2FzbU9wY29kZSwgdmFsdWUsIGIzLCBp
bmMsICpleHRyYUFyZ3MpOgpAQCAtNTMsMTMgKzUzLDI1IEBAIGRlZiBjcHBNYWNybyh3YXNtT3Bj
b2RlLCB2YWx1ZSwgYjMsIGluYywgKmV4dHJhQXJncyk6CiBkZWYgdHlwZU1hY3JvaXplcigpOgog
ICAgIGluYyA9IDAKICAgICBmb3IgdHkgaW4gd2FzbS50eXBlczoKLSAgICAgICAgeWllbGQgY3Bw
TWFjcm8odHksIHdhc20udHlwZXNbdHldWyJ2YWx1ZSJdLCB3YXNtLnR5cGVzW3R5XVsiYjN0eXBl
Il0sIGluYywgdHkpCisgICAgICAgIHlpZWxkIGNwcE1hY3JvKHR5LCB3YXNtLnR5cGVzW3R5XVsi
dmFsdWUiXSwgd2FzbS50eXBlc1t0eV1bImIzdHlwZSJdLCBpbmMsIHR5LCBzdHIod2FzbS50eXBl
c1t0eV1bInNpemUiXSkpCiAgICAgICAgIGluYyArPSAxCiAKIHR5cGVfZGVmaW5pdGlvbnMgPSBb
IiNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9UWVBFKG1hY3JvKSJdCiB0eXBlX2RlZmluaXRpb25zLmV4
dGVuZChbdCBmb3IgdCBpbiB0eXBlTWFjcm9pemVyKCldKQogdHlwZV9kZWZpbml0aW9ucyA9ICIi
LmpvaW4odHlwZV9kZWZpbml0aW9ucykKIAorc2ltZExhbmVPcGVyYXRpb25zID0gc2V0KFtjcHBU
eXBlKG9wWydvcGNvZGUnXVsnc2ltZF9vcGVyYXRpb24nXSkgZm9yIG9wIGluIHdhc20ub3Bjb2Rl
SXRlcmF0b3IoaXNTaW1kKV0pCitzaW1kTGFuZU9wZXJhdGlvbnNQcmludGVyID0gIiIiCisgICAg
c3RhdGljIHZvaWQgZHVtcFNpbWRMYW5lT3BlcmF0aW9uKFByaW50U3RyZWFtJiBvdXQsIFNpbWRM
YW5lT3BlcmF0aW9uIG9wKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCkgeworICAgICAgICAi
IiIgKyAiXG4gICAgICAgICIuam9pbihbIGYnY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6eyB4IH06
IG91dC5wcmludCgieyB4IH0iKTsgYnJlYWs7JyBmb3IgeCBpbiBzaW1kTGFuZU9wZXJhdGlvbnNd
KSArICIiIgorICAgICAgICB9CisgICAgfQorICAgIE1BS0VfUFJJTlRfQURBUFRPUihTaW1kTGFu
ZU9wZXJhdGlvbkR1bXAsIFNpbWRMYW5lT3BlcmF0aW9uLCBkdW1wU2ltZExhbmVPcGVyYXRpb24p
OworIiIiCitzaW1kTGFuZU9wZXJhdGlvbnMgPSAiLFxuICAgICIuam9pbihzaW1kTGFuZU9wZXJh
dGlvbnMpCisKIAogZGVmIG9wY29kZU1hY3JvaXplcihmaWx0ZXIsIG9wY29kZUZpZWxkPSJ2YWx1
ZSIsIG1vZGlmaWVyPU5vbmUpOgogICAgIGluYyA9IDAKQEAgLTExNSw4ICsxMjcsMzEgQEAgZGVm
IGF0b21pY0JpbmFyeVJNV01hY3JvaXplcigpOgogICAgIHJldHVybiBvcGNvZGVNYWNyb2l6ZXIo
bGFtYmRhIG9wOiBpc0F0b21pY0JpbmFyeVJNVyhvcCksIG1vZGlmaWVyPW1vZGlmaWVyLCBvcGNv
ZGVGaWVsZD0iZXh0ZW5kZWRPcCIpCiAKIAorZGVmIHNpbWRNYWNyb2xpemVyKCk6CisgICAgZGVm
IG1vZGlmaWVyKG9wKToKKyAgICAgICAgcmV0dXJuVHlwZSA9IGYiVHlwZXM6OnsgY3BwVHlwZShv
cFsncmV0dXJuJ11bMF0pIH0iIGlmIGxlbihvcFsicmV0dXJuIl0pID09IDEgZWxzZSAiVHlwZXM6
OlZvaWQiCisgICAgICAgIGltbWVkaWF0ZXMgPSBsaXN0KG1hcChsYW1iZGEgeDogeFsibGFuZVNp
emUiXSwgb3BbImltbWVkaWF0ZSJdKSkKKyAgICAgICAgaW1tZWRpYXRlc0FyciA9ICJ7IiArICcs
Jy5qb2luKGltbWVkaWF0ZXMpICsgIn0iCisgICAgICAgIGFyZ3VtZW50cyA9IGxpc3QobWFwKGxh
bWJkYSB4OiBmIiZUeXBlczo6e2NwcFR5cGUoeCl9Iiwgb3BbInBhcmFtZXRlciJdKSkKKyAgICAg
ICAgYXJndW1lbnRzQXJyID0gInsiICsgJywnLmpvaW4oYXJndW1lbnRzKSArICJ9IgorICAgICAg
ICByZXR1cm4gW29wWyJ3YXNtT3AiXSwgcmV0dXJuVHlwZSwgCisgICAgICAgICAgICBzdHIobGVu
KGltbWVkaWF0ZXMpKSwgaW1tZWRpYXRlc0Fyciwgc3RyKGxlbihhcmd1bWVudHMpKSwgYXJndW1l
bnRzQXJyLCAKKyAgICAgICAgICAgIGYiU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6eyBvcFsnc2lt
ZF9sYW5lX2ludGVycHJldGF0aW9uJ10gfSIsIAorICAgICAgICAgICAgZiJTaW1kU2lnbkV4dGVu
ZE1vZGU6Onsgb3BbJ3NpbWRfc2lnbl9leHRlbmRfbW9kZSddIH0iXQorICAgIHJldHVybiBvcGNv
ZGVNYWNyb2l6ZXIobGFtYmRhIG9wOiBpc1NpbWQob3ApIGFuZCBub3Qgb3BbImlzX3NpbWRfc3Bl
Y2lhbF9vcCJdLCBtb2RpZmllcj1tb2RpZmllciwgb3Bjb2RlRmllbGQ9ImV4dGVuZGVkT3AiKQor
CisKK2RlZiBzaW1kU3BlY2lhbE1hY3JvbGl6ZXIoKToKKyAgICBkZWYgbW9kaWZpZXIob3ApOgor
ICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgZiJTaW1kTGFuZU9wZXJhdGlvbjo6e2NwcFR5
cGUob3BbJ3NpbWRfb3BlcmF0aW9uJ10pfSIsIAorICAgICAgICAgICAgZiJTaW1kTGFuZUludGVy
cHJldGF0aW9uOjp7IG9wWydzaW1kX2xhbmVfaW50ZXJwcmV0YXRpb24nXSB9IiwgCisgICAgICAg
ICAgICBmIlNpbWRTaWduRXh0ZW5kTW9kZTo6eyBvcFsnc2ltZF9zaWduX2V4dGVuZF9tb2RlJ10g
fSJdCisgICAgcmV0dXJuIG9wY29kZU1hY3JvaXplcihsYW1iZGEgb3A6IGlzU2ltZChvcCkgYW5k
IG9wWyJpc19zaW1kX3NwZWNpYWxfb3AiXSwgbW9kaWZpZXI9bW9kaWZpZXIsIG9wY29kZUZpZWxk
PSJleHRlbmRlZE9wIikKKworCiBkZWZpbmVzID0gWyIjZGVmaW5lIEZPUl9FQUNIX1dBU01fU1BF
Q0lBTF9PUChtYWNybykiXQotZGVmaW5lcy5leHRlbmQoW29wIGZvciBvcCBpbiBvcGNvZGVNYWNy
b2l6ZXIobGFtYmRhIG9wOiBub3QgKGlzVW5hcnkob3ApIG9yIGlzQmluYXJ5KG9wKSBvciBvcFsi
Y2F0ZWdvcnkiXSA9PSAiY29udHJvbCIgb3Igb3BbImNhdGVnb3J5Il0gPT0gIm1lbW9yeSIgb3Ig
b3BbInZhbHVlIl0gPT0gMHhmYyBvciBpc0F0b21pYyhvcCkpKV0pCitkZWZpbmVzLmV4dGVuZChb
b3AgZm9yIG9wIGluIG9wY29kZU1hY3JvaXplcihsYW1iZGEgb3A6IG5vdCAoaXNVbmFyeShvcCkg
b3IgaXNCaW5hcnkob3ApIG9yIG9wWyJjYXRlZ29yeSJdID09ICJjb250cm9sIiBvciBvcFsiY2F0
ZWdvcnkiXSA9PSAibWVtb3J5IiBvciBvcFsidmFsdWUiXSA9PSAweGZjIG9yIGlzQXRvbWljKG9w
KSBvciBpc1NpbWQob3ApKSldKQogZGVmaW5lcy5hcHBlbmQoIlxuXG4jZGVmaW5lIEZPUl9FQUNI
X1dBU01fQ09OVFJPTF9GTE9XX09QKG1hY3JvKSIpCiBkZWZpbmVzLmV4dGVuZChbb3AgZm9yIG9w
IGluIG9wY29kZU1hY3JvaXplcihsYW1iZGEgb3A6IG9wWyJjYXRlZ29yeSJdID09ICJjb250cm9s
IildKQogZGVmaW5lcy5hcHBlbmQoIlxuXG4jZGVmaW5lIEZPUl9FQUNIX1dBU01fU0lNUExFX1VO
QVJZX09QKG1hY3JvKSIpCkBAIC0xNDMsNiArMTc4LDEwIEBAIGRlZmluZXMuYXBwZW5kKCJcblxu
I2RlZmluZSBGT1JfRUFDSF9XQVNNX0VYVF9BVE9NSUNfQklOQVJZX1JNV19PUChtYWNybykiKQog
ZGVmaW5lcy5leHRlbmQoW29wIGZvciBvcCBpbiBhdG9taWNCaW5hcnlSTVdNYWNyb2l6ZXIoKV0p
CiBkZWZpbmVzLmFwcGVuZCgiXG5cbiNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9FWFRfQVRPTUlDX09U
SEVSX09QKG1hY3JvKSIpCiBkZWZpbmVzLmV4dGVuZChbb3AgZm9yIG9wIGluIG9wY29kZU1hY3Jv
aXplcihsYW1iZGEgb3A6IGlzQXRvbWljKG9wKSBhbmQgKG5vdCBpc0F0b21pY0xvYWQob3ApIGFu
ZCBub3QgaXNBdG9taWNTdG9yZShvcCkgYW5kIG5vdCBpc0F0b21pY0JpbmFyeVJNVyhvcCkpLCBv
cGNvZGVGaWVsZD0iZXh0ZW5kZWRPcCIpXSkKK2RlZmluZXMuYXBwZW5kKCJcblxuI2RlZmluZSBG
T1JfRUFDSF9XQVNNX0VYVF9TSU1EX09QKG1hY3JvKSIpCitkZWZpbmVzLmV4dGVuZChbb3AgZm9y
IG9wIGluIHNpbWRNYWNyb2xpemVyKCldKQorZGVmaW5lcy5hcHBlbmQoIlxuXG4jZGVmaW5lIEZP
Ul9FQUNIX1dBU01fRVhUX1NJTURfU1BFQ0lBTF9PUChtYWNybykiKQorZGVmaW5lcy5leHRlbmQo
W29wIGZvciBvcCBpbiBzaW1kU3BlY2lhbE1hY3JvbGl6ZXIoKV0pCiBkZWZpbmVzLmFwcGVuZCgi
XG5cbiIpCiAKIGRlZmluZXMgPSAiIi5qb2luKGRlZmluZXMpCkBAIC0yNDAsNiArMjc5LDIyIEBA
IHN0cnVjdCBUeXBlIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG51bGxhYmxl
KTsKICAgICB9CiAKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsKKyAgICAgICAgc3dpdGNoIChr
aW5kKSB7CisgICAgI2RlZmluZSBDUkVBVEVfQ0FTRShuYW1lLCBpZCwgYjN0eXBlLCBpbmMsIHdh
c21OYW1lLCBzaXplLCAuLi4pIGNhc2UgVHlwZUtpbmQ6Om5hbWU6IHJldHVybiBzaXplOworICAg
IEZPUl9FQUNIX1dBU01fVFlQRShDUkVBVEVfQ0FTRSkKKyAgICAjdW5kZWYgQ1JFQVRFX0NBU0UK
KyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dCB7CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICNkZWZpbmUgQ1JFQVRFX0NBU0UobmFt
ZSwgaWQsIGIzdHlwZSwgaW5jLCB3YXNtTmFtZSwgc2l6ZSwgLi4uKSBjYXNlIFR5cGVLaW5kOjpu
YW1lOiBvdXQucHJpbnQoI25hbWUpOyBicmVhazsKKyAgICBGT1JfRUFDSF9XQVNNX1RZUEUoQ1JF
QVRFX0NBU0UpCisgICAgI3VuZGVmIENSRUFURV9DQVNFCisgICAgICAgIH0KKyAgICB9CisKICAg
ICAjZGVmaW5lIENSRUFURV9QUkVESUNBVEUobmFtZSwgLi4uKSBib29sIGlzICMjIG5hbWUoKSBj
b25zdCB7IHJldHVybiBraW5kID09IFR5cGVLaW5kOjpuYW1lOyB9CiAgICAgRk9SX0VBQ0hfV0FT
TV9UWVBFKENSRUFURV9QUkVESUNBVEUpCiAgICAgI3VuZGVmIENSRUFURV9QUkVESUNBVEUKQEAg
LTMyMSw3ICszNzYsOCBAQCBpbmxpbmUgVHlwZUtpbmQgbGluZWFyaXplZFRvVHlwZShpbnQgaSkK
ICAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9MT0FEX09QKG1hY3JvKSBcXAogICAgIEZPUl9FQUNI
X1dBU01fTUVNT1JZX1NUT1JFX09QKG1hY3JvKSBcXAogICAgIG1hY3JvKEV4dDEsICAweEZDLCBP
b3BzLCAwKSBcXAotICAgIG1hY3JvKEV4dEF0b21pYywgMHhGRSwgT29wcywgMCkKKyAgICBtYWNy
byhFeHRBdG9taWMsIDB4RkUsIE9vcHMsIDApIFxcCisgICAgbWFjcm8oRXh0U2ltZCwgMHhGRCwg
T29wcywgMCkKIAogI2RlZmluZSBDUkVBVEVfRU5VTV9WQUxVRShuYW1lLCBpZCwgLi4uKSBuYW1l
ID0gaWQsCiAKQEAgLTM2NSw4ICs0MjEsMjIgQEAgZW51bSBjbGFzcyBFeHRBdG9taWNPcFR5cGUg
OiB1aW50OF90IHsKICAgICBGT1JfRUFDSF9XQVNNX0VYVF9BVE9NSUNfT1RIRVJfT1AoQ1JFQVRF
X0VOVU1fVkFMVUUpCiB9OwogCitlbnVtIGNsYXNzIEV4dFNpbWRPcFR5cGUgOiB1aW50OF90IHsK
KyAgICBGT1JfRUFDSF9XQVNNX0VYVF9TSU1EX09QKENSRUFURV9FTlVNX1ZBTFVFKQorICAgIEZP
Ul9FQUNIX1dBU01fRVhUX1NJTURfU1BFQ0lBTF9PUChDUkVBVEVfRU5VTV9WQUxVRSkKK307CisK
K2VudW0gY2xhc3MgRXh0V2FzbU9wVHlwZSA6IHVpbnQ4X3QgeworICAgIEZPUl9FQUNIX1dBU01f
RVhUX1NJTURfT1AoQ1JFQVRFX0VOVU1fVkFMVUUpCit9OworCiAjdW5kZWYgQ1JFQVRFX0VOVU1f
VkFMVUUKIAorZW51bSBjbGFzcyBTaW1kTGFuZU9wZXJhdGlvbiA6IHVpbnQ4X3QgeworICAgICIi
IiArIHNpbWRMYW5lT3BlcmF0aW9ucyArICIiIgorfTsKKyIiIiArIHNpbWRMYW5lT3BlcmF0aW9u
c1ByaW50ZXIgKyAiIiIKKwogaW5saW5lIGJvb2wgaXNDb250cm9sT3AoT3BUeXBlIG9wKQogewog
ICAgIHN3aXRjaCAob3ApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dhc21Ub0pTLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pT
LmNwcAppbmRleCAwOGZlMWE3ODcxMzIuLjk2MzgwNDgwMDVlMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcApAQCAtMTA2LDYgKzEwNiw3IEBAIEV4cGVjdGVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4g
d2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgogICAgICAg
ICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OlJlZjoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlYxMjg6CiAgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gSGFuZGxlZCBhYm92ZS4KICAgICAgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkZ1bmNyZWY6CkBAIC0xODAsNiArMTgxLDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KICAg
ICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5k
OjpSZWZOdWxsOgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmOgorICAgICAgICAgICAg
Y2FzZSBUeXBlS2luZDo6VjEyODoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyAvLyBIYW5kbGVkIGFib3ZlLgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6
RXh0ZXJucmVmOgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3NpbWRPcGNvZGVzLmNzdiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL3NpbWRPcGNvZGVzLmNzdgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjVjYjgxMWQyYTJiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL3NpbWRPcGNvZGVzLmNzdgpAQCAtMCwwICsxLDMgQEAKK0lu
c3RydWN0aW9uLGNhdGVnb3J5LG9wLHJldHVybixJbW0scGFyYW1zLGludGVycHJldGF0aW9uLHNp
Z25FeHRlbmQsdmFsdWUsZXh0ZW5kZWRPcCxzY2FsYXJUeXBlQmFzZSxzY2FsYXJUeXBlLHNwZWNp
YWwNCit2MTI4LmNvbnN0LHNpbWQuc3BlY2lhbCxjb25zdCx2LGk6SW1tQnl0ZVsxNl0sLHYxMjgs
TkEsMHhGRCwweDBjLHZvaWQsdm9pZCx5DQoraTh4MTYuZXh0cmFjdF9sYW5lX3Usc2ltZC5sYW5l
LGV4dHJhY3RfbGFuZSxzLGk6SW1tTGFuZUlkeDE2LGE6dixpOHgxNixVLDB4RkQsMHgxNixpOCxp
MzIsbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL3dhc20uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dh
c20uanNvbgppbmRleCBjYWJkZTIwYWVjZWEuLmIyMGEyNTRlMjA5NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL3dhc20uanNvbgpAQCAtNywxOCArNywxOSBAQAogICAgICAgICB7ICJuYW1lIjog
InZlcnNpb24iLCAgICAgICJ0eXBlIjogInVpbnQzMiIsICJ2YWx1ZSI6ICAgICAgICAgIDEsICJk
ZXNjcmlwdGlvbiI6ICJWZXJzaW9uIG51bWJlciIgfQogICAgIF0sCiAgICAgInR5cGUiIDogewot
ICAgICAgICAiaTMyIjogICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogICAtMSwg
ImIzdHlwZSI6ICJCMzo6SW50MzIiIH0sCi0gICAgICAgICJpNjQiOiAgICAgICB7ICJ0eXBlIjog
InZhcmludDciLCAidmFsdWUiOiAgIC0yLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKLSAgICAg
ICAgImYzMiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAgLTMsICJiM3R5
cGUiOiAiQjM6OkZsb2F0IiB9LAotICAgICAgICAiZjY0IjogICAgICAgeyAidHlwZSI6ICJ2YXJp
bnQ3IiwgInZhbHVlIjogICAtNCwgImIzdHlwZSI6ICJCMzo6RG91YmxlIiB9LAotICAgICAgICAi
ZnVuY3JlZiI6ICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0xNiwgImIzdHlwZSI6
ICJCMzo6SW50NjQiIH0sCi0gICAgICAgICJleHRlcm5yZWYiOiB7ICJ0eXBlIjogInZhcmludDci
LCAidmFsdWUiOiAgLTE3LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKLSAgICAgICAgInJlZl9u
dWxsIjogIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMjAsICJiM3R5cGUiOiAiQjM6
OkludDY0IiB9LAotICAgICAgICAicmVmIjogICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZh
bHVlIjogIC0yMSwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCi0gICAgICAgICJmdW5jIjogICAg
ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTMyLCAiYjN0eXBlIjogIkIzOjpWb2lk
IiB9LAotICAgICAgICAidm9pZCI6ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjog
IC02NCwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfQorICAgICAgICAiaTMyIjogICAgICAgeyAidHlw
ZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogICAtMSwgImIzdHlwZSI6ICJCMzo6SW50MzIiLCAic2l6
ZSI6IDggfSwKKyAgICAgICAgImk2NCI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1
ZSI6ICAgLTIsICJiM3R5cGUiOiAiQjM6OkludDY0IiwgInNpemUiOiA4IH0sCisgICAgICAgICJm
MzIiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgIC0zLCAiYjN0eXBlIjog
IkIzOjpGbG9hdCIsICJzaXplIjogOCB9LAorICAgICAgICAiZjY0IjogICAgICAgeyAidHlwZSI6
ICJ2YXJpbnQ3IiwgInZhbHVlIjogICAtNCwgImIzdHlwZSI6ICJCMzo6RG91YmxlIiwgInNpemUi
OiA4IH0sCisgICAgICAgICJ2MTI4IjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUi
OiAgLTUsICAiYjN0eXBlIjogIkIzOjpWMTI4IiwgICJzaXplIjogMTYgfSwKKyAgICAgICAgImZ1
bmNyZWYiOiAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMTYsICJiM3R5cGUiOiAi
QjM6OkludDY0IiwgInNpemUiOiA4IH0sCisgICAgICAgICJleHRlcm5yZWYiOiB7ICJ0eXBlIjog
InZhcmludDciLCAidmFsdWUiOiAgLTE3LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIsICJzaXplIjog
OCB9LAorICAgICAgICAicmVmX251bGwiOiAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjog
IC0yMCwgImIzdHlwZSI6ICJCMzo6SW50NjQiLCAic2l6ZSI6IDggfSwKKyAgICAgICAgInJlZiI6
ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMjEsICJiM3R5cGUiOiAiQjM6
OkludDY0IiwgInNpemUiOiA4IH0sCisgICAgICAgICJmdW5jIjogICAgICB7ICJ0eXBlIjogInZh
cmludDciLCAidmFsdWUiOiAgLTMyLCAiYjN0eXBlIjogIkIzOjpWb2lkIiwgICJzaXplIjogMCB9
LAorICAgICAgICAidm9pZCI6ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC02
NCwgImIzdHlwZSI6ICJCMzo6Vm9pZCIsICAic2l6ZSI6IDAgfQogICAgIH0sCi0gICAgInZhbHVl
X3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJleHRlcm5yZWYiLCAiZnVuY3Jl
ZiJdLAorICAgICJ2YWx1ZV90eXBlIjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAiZXh0
ZXJucmVmIiwgImZ1bmNyZWYiLCAidjEyOCJdLAogICAgICJibG9ja190eXBlIjogWyJpMzIiLCAi
aTY0IiwgImYzMiIsICJmNjQiLCAidm9pZCIsICJleHRlcm5yZWYiLCAiZnVuY3JlZiJdLAogICAg
ICJyZWZfdHlwZSI6IFsiZnVuY3JlZiIsICJleHRlcm5yZWYiLCAicmVmIiwgInJlZl9udWxsIl0s
CiAgICAgImV4dGVybmFsX2tpbmQiOiB7Cg==
</data>
<flag name="commit-queue"
          id="475211"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449222</attachid>
            <date>2022-01-14 14:18:09 -0800</date>
            <delta_ts>2022-01-14 14:30:33 -0800</delta_ts>
            <desc>Wasm SIMD Megapatch 1.1</desc>
            <filename>simd.diff</filename>
            <type>text/plain</type>
            <size>283700</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9hc3NlcnQuanMgYi9KU1Rlc3RzL3dhc20vYXNzZXJ0
LmpzCmluZGV4IGNjMGFmODA0ZDUzYy4uZWU4YTJkNTQyMzExIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L3dhc20vYXNzZXJ0LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9hc3NlcnQuanMKQEAgLTE4MCwxMSAr
MTgwLDExIEBAIGNvbnN0IHByaW50RXhuID0gKGUpID0+IHsKICAgICBwcmludChlLnN0YWNrKTsK
IH07CiAKLWV4cG9ydCBjb25zdCBhc3luY1Rlc3QgPSAocHJvbWlzZSkgPT4gYXN5bmNUZXN0SW1w
bChwcm9taXNlLCBoYXJuZXNzQ2FsbChhc3luY1Rlc3RQYXNzZWQpLCBwcmludEV4bik7CitleHBv
cnQgY29uc3QgYXN5bmNUZXN0ID0gKHByb21pc2UpID0+IGFzeW5jVGVzdEltcGwocHJvbWlzZSwg
aGFybmVzc0NhbGwoKCkgPT4gYXN5bmNUZXN0UGFzc2VkKCkpLCBwcmludEV4bik7CiBleHBvcnQg
Y29uc3QgYXN5bmNUZXN0RXEgPSAocHJvbWlzZSwgZXhwZWN0ZWQpID0+IHsKICAgICBjb25zdCB0
aGVuQ2hlY2sgPSAodmFsdWUpID0+IHsKICAgICAgICAgaWYgKHZhbHVlID09PSBleHBlY3RlZCkK
LSAgICAgICAgICAgIHJldHVybiBoYXJuZXNzQ2FsbChhc3luY1Rlc3RQYXNzZWQpOworICAgICAg
ICAgICAgcmV0dXJuIGhhcm5lc3NDYWxsKCgpID0+IGFzeW5jVGVzdFBhc3NlZCgpKTsKICAgICAg
ICAgcHJpbnQoIkZhaWxlZDogZ290ICIsIHZhbHVlLCAiIGJ1dCBleHBlY3RlZCAiLCBleHBlY3Rl
ZCk7CiAKICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vc3RyZXNzL3NpbWQtY29uc3Qt
c3BpbGwuanMgYi9KU1Rlc3RzL3dhc20vc3RyZXNzL3NpbWQtY29uc3Qtc3BpbGwuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NjUxZjYxOWY2NTYKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3dhc20vc3RyZXNzL3NpbWQtY29uc3Qtc3BpbGwuanMKQEAgLTAs
MCArMSwxNTAgQEAKK2ltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSAiLi4vd2FidC13cmFwcGVy
LmpzIgoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gIi4uL2Fzc2VydC5qcyIKKworbGV0IHdhdCA9
IGAKKyhtb2R1bGUKKyAgICAoZnVuYyAkanNfaWRlbnQgKGltcG9ydCAiaW1wb3J0cyIgImlkZW50
IikgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKQorCisgICAgKGZ1bmMgKGV4cG9ydCAidGVzdCIp
IChwYXJhbSAkc3ogaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgKGxvY2FsICRhIHYxMjgpCisg
ICAgICAgIChsb2NhbCAkYiB2MTI4KQorCisgICAgICAgIChsb2NhbC5zZXQgJGEgKHYxMjguY29u
c3QgaTh4MTYgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYpKQorICAgICAg
ICAobG9jYWwuc2V0ICRiICh2MTI4LmNvbnN0IGk4eDE2IDkgMCAyIDAgMCAwIDAgMCAwIDAgNSAw
IDAgMCAwIDEpKQorCisgICAgICAgIChpOHgxNi5leHRyYWN0X2xhbmVfdSAxNSAobG9jYWwuZ2V0
ICRhKSkKKyAgICAgICAgKGk4eDE2LmV4dHJhY3RfbGFuZV91IDE1IChsb2NhbC5nZXQgJGIpKQor
CisgICAgICAgIChpMzIuYWRkKQorICAgICAgICAKKyAgICAgICAgKHJldHVybikKKyAgICApCisK
KyAgICAoZnVuYyAkaWRlbnQxMjggKHBhcmFtICRpIGkzMikgKHBhcmFtICR2IHYxMjgpIChwYXJh
bSAkaTIgaTMyKSAocmVzdWx0IHYxMjgpCisgICAgICAgIChyZXR1cm4gKGxvY2FsLmdldCAkdikp
CisgICAgKQorCisgICAgKGZ1bmMgJGlkZW50MzIgKHBhcmFtICRpIGkzMikgKHBhcmFtICR2IHYx
MjgpIChwYXJhbSAkaTIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgKHJldHVybiAobG9jYWwu
Z2V0ICRpMikpCisgICAgKQorCisgICAgKGZ1bmMgKGV4cG9ydCAidGVzdF9zcGlsbCIpIChwYXJh
bSAkaSBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgICAobG9jYWwgJGEgdjEyOCkKKyAgICAgICAg
KGxvY2FsLnNldCAkYSAodjEyOC5jb25zdCBpOHgxNiAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAx
MiAxMyAxNCAxNSAxNikpCisKKyAgICAgICAgKGk4eDE2LmV4dHJhY3RfbGFuZV91IDEzIAorICAg
ICAgICAgICAgKGNhbGwgJGlkZW50MTI4CisgICAgICAgICAgICAgICAgKGkzMi5jb25zdCAxMzM3
KSAKKyAgICAgICAgICAgICAgICAodjEyOC5jb25zdCBpOHgxNiAxMCAyMCAzMCA0MCA1MCA2MCA3
MCA4MCA5MCAxMDAgMTEwIDEyMCAxMzAgMTQwIDE1MCAxNjApIAorICAgICAgICAgICAgICAgIChp
MzIuY29uc3QgNDIwMDAwMCkpKQorICAgICAgICAobG9jYWwuZ2V0ICRpKQorICAgICAgICAoaTh4
MTYuZXh0cmFjdF9sYW5lX3UgMTQgKGxvY2FsLmdldCAkYSkpCisKKyAgICAgICAgKGNhbGwgJGlk
ZW50MzIgCisgICAgICAgICAgICAoaTMyLmNvbnN0IDEzMzcpIAorICAgICAgICAgICAgKHYxMjgu
Y29uc3QgaTh4MTYgMTAgMjAgMzAgNDAgNTAgNjAgNzAgODAgOTAgMTAwIDExMCAxMjAgMTMwIDE0
MCAxNTAgMTYwKSAKKyAgICAgICAgICAgIChpMzIuY29uc3QgNDIwMDAwMCkpCisKKyAgICAgICAg
KGkzMi5hZGQpCisgICAgICAgIChpMzIuYWRkKQorICAgICAgICAoaTMyLmFkZCkKKyAgICAgICAg
CisgICAgICAgIChyZXR1cm4pCisgICAgKQorCisgICAgKGZ1bmMgKGV4cG9ydCAidGVzdF9zcGls
bF9qc2NhbGwiKSAocGFyYW0gJGkgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgKGxvY2FsICRh
IHYxMjgpCisgICAgICAgIChsb2NhbC5zZXQgJGEgKHYxMjguY29uc3QgaTh4MTYgMSAyIDMgNCA1
IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYpKQorCisgICAgICAgIChpOHgxNi5leHRyYWN0
X2xhbmVfdSAxMyAKKyAgICAgICAgICAgIChjYWxsICRpZGVudDEyOCAKKyAgICAgICAgICAgICAg
ICAoaTMyLmNvbnN0IDEzMzcpIAorICAgICAgICAgICAgICAgICh2MTI4LmNvbnN0IGk4eDE2IDEw
IDIwIDMwIDQwIDUwIDYwIDcwIDgwIDkwIDEwMCAxMTAgMTIwIDEzMCAxNDAgMTUwIDE2MCkgCisg
ICAgICAgICAgICAgICAgKGkzMi5jb25zdCA0MjAwMDAwKSkpCisgICAgICAgIChsb2NhbC5nZXQg
JGkpCisKKyAgICAgICAgKGxvY2FsLmdldCAkYSkKKyAgICAgICAgKGNhbGwgJGpzX2lkZW50IChp
MzIuY29uc3QgMCkpCisgICAgICAgIChkcm9wKQorICAgICAgICAoaTh4MTYuZXh0cmFjdF9sYW5l
X3UgMTQpCisKKyAgICAgICAgKGNhbGwgJGlkZW50MzIgCisgICAgICAgICAgICAoaTMyLmNvbnN0
IDEzMzcpIAorICAgICAgICAgICAgKHYxMjguY29uc3QgaTh4MTYgMTAgMjAgMzAgNDAgNTAgNjAg
NzAgODAgOTAgMTAwIDExMCAxMjAgMTMwIDE0MCAxNTAgMTYwKSAKKyAgICAgICAgICAgIChpMzIu
Y29uc3QgNDIwMDAwMCkpCisKKyAgICAgICAgKGkzMi5hZGQpCisgICAgICAgIChpMzIuYWRkKQor
ICAgICAgICAoaTMyLmFkZCkKKyAgICAgICAgCisgICAgICAgIChyZXR1cm4pCisgICAgKQorCisg
ICAgKGZ1bmMgKGV4cG9ydCAidGVzdF9pZl9pMzIiKSAocGFyYW0gJGkgaTMyKSAocmVzdWx0IGkz
MikKKyAgICAgICAgKGxvY2FsICRhIHYxMjgpCisgICAgICAgIChsb2NhbC5zZXQgJGEgKHYxMjgu
Y29uc3QgaTh4MTYgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYpKQorCisg
ICAgICAgIChsb2NhbC5nZXQgJGkpCisgICAgICAgIChpZiAocmVzdWx0IGkzMikKKyAgICAgICAg
ICAgICh0aGVuIAorICAgICAgICAgICAgICAgIChpOHgxNi5leHRyYWN0X2xhbmVfdSAxMyAKKyAg
ICAgICAgICAgICAgICAgICAgKGNhbGwgJGlkZW50MTI4IAorICAgICAgICAgICAgICAgICAgICAg
ICAgKGkzMi5jb25zdCAxMzM3KSAKKyAgICAgICAgICAgICAgICAgICAgICAgICh2MTI4LmNvbnN0
IGk4eDE2IDEwIDIwIDMwIDQwIDUwIDYwIDcwIDgwIDkwIDEwMCAxMTAgMTIwIDEzMCAxNDAgMTUw
IDE2MCkgCisgICAgICAgICAgICAgICAgICAgICAgICAoaTMyLmNvbnN0IDQyMDAwMDApKSkpCisg
ICAgICAgICAgICAoZWxzZSAKKyAgICAgICAgICAgICAgICAoaTh4MTYuZXh0cmFjdF9sYW5lX3Ug
MTQgKGxvY2FsLmdldCAkYSkpKSkKKworICAgICAgICAoY2FsbCAkaWRlbnQzMiAKKyAgICAgICAg
ICAgIChpMzIuY29uc3QgMTMzNykgCisgICAgICAgICAgICAodjEyOC5jb25zdCBpOHgxNiAxMCAy
MCAzMCA0MCA1MCA2MCA3MCA4MCA5MCAxMDAgMTEwIDEyMCAxMzAgMTQwIDE1MCAxNjApIAorICAg
ICAgICAgICAgKGkzMi5jb25zdCA0MjAwMDAwKSkKKworICAgICAgICAoaTMyLmFkZCkKKyAgICAg
ICAgCisgICAgICAgIChyZXR1cm4pCisgICAgKQorCisgICAgKGZ1bmMgKGV4cG9ydCAidGVzdF9p
Zl92MTI4IikgKHBhcmFtICRpIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIChsb2NhbCAkYSB2
MTI4KQorICAgICAgICAobG9jYWwuc2V0ICRhICh2MTI4LmNvbnN0IGk4eDE2IDEgMiAzIDQgNSA2
IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2KSkKKworICAgICAgICAobG9jYWwuZ2V0ICRpKQor
ICAgICAgICAoaWYgKHJlc3VsdCB2MTI4KQorICAgICAgICAgICAgKHRoZW4KKyAgICAgICAgICAg
ICAgICAoY2FsbCAkaWRlbnQxMjggCisgICAgICAgICAgICAgICAgICAgIChpMzIuY29uc3QgMTMz
NykgCisgICAgICAgICAgICAgICAgICAgICh2MTI4LmNvbnN0IGk4eDE2IDEwIDIwIDMwIDQwIDUw
IDYwIDcwIDgwIDkwIDEwMCAxMTAgMTIwIDEzMCAxNDAgMTUwIDE2MCkgCisgICAgICAgICAgICAg
ICAgICAgIChpMzIuY29uc3QgNDIwMDAwMCkpKQorICAgICAgICAgICAgKGVsc2UgCisgICAgICAg
ICAgICAgICAgKGxvY2FsLmdldCAkYSkpKQorICAgICAgICAoaTh4MTYuZXh0cmFjdF9sYW5lX3Ug
MTQpCisKKyAgICAgICAgKGNhbGwgJGlkZW50MzIgCisgICAgICAgICAgICAoaTMyLmNvbnN0IDEz
MzcpIAorICAgICAgICAgICAgKHYxMjguY29uc3QgaTh4MTYgMTAgMjAgMzAgNDAgNTAgNjAgNzAg
ODAgOTAgMTAwIDExMCAxMjAgMTMwIDE0MCAxNTAgMTYwKSAKKyAgICAgICAgICAgIChpMzIuY29u
c3QgNDIwMDAwMCkpCisKKyAgICAgICAgKGkzMi5hZGQpCisgICAgICAgIAorICAgICAgICAocmV0
dXJuKQorICAgICkKKykKK2AKKworYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBjb25zdCBp
bnN0YW5jZSA9IGF3YWl0IGluc3RhbnRpYXRlKHdhdCwgeyBpbXBvcnRzOiB7IGlkZW50OiAoeCkg
PT4geCB9IH0sIHsgc2ltZDogdHJ1ZSB9KQorICAgIGNvbnN0IHsgdGVzdCwgdGVzdF9zcGlsbCwg
dGVzdF9zcGlsbF9qc2NhbGwsIHRlc3RfaWZfaTMyLCB0ZXN0X2lmX3YxMjggfSA9IGluc3RhbmNl
LmV4cG9ydHMKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDsgKytpKSB7CisgICAgICAg
IGFzc2VydC5lcSh0ZXN0KDQyKSwgMTYrMSkKKyAgICAgICAgYXNzZXJ0LmVxKHRlc3Rfc3BpbGwo
NTAwMCksIDE0MCs1MDAwKzE1KzQyMDAwMDApCisgICAgICAgIGFzc2VydC5lcSh0ZXN0X3NwaWxs
X2pzY2FsbCg1MDAwKSwgMTQwKzUwMDArMTUrNDIwMDAwMCkKKyAgICAgICAgYXNzZXJ0LmVxKHRl
c3RfaWZfaTMyKDApLCAxNSs0MjAwMDAwKQorICAgICAgICBhc3NlcnQuZXEodGVzdF9pZl9pMzIo
MSksIDE0MCs0MjAwMDAwKQorICAgICAgICBhc3NlcnQuZXEodGVzdF9pZl92MTI4KDApLCAxNSs0
MjAwMDAwKQorICAgICAgICBhc3NlcnQuZXEodGVzdF9pZl92MTI4KDEpLCAxNTArNDIwMDAwMCkK
KyAgICB9Cit9CisKK2Fzc2VydC5hc3luY1Rlc3QodGVzdCgpKQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy93YXNtL3N0cmVzcy9zaW1kLWNvbnN0LmpzIGIvSlNUZXN0cy93YXNtL3N0cmVzcy9zaW1kLWNv
bnN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2EwN2VhYzk1
ZDhjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL3N0cmVzcy9zaW1kLWNvbnN0Lmpz
CkBAIC0wLDAgKzEsMjggQEAKK2ltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSAiLi4vd2FidC13
cmFwcGVyLmpzIgoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gIi4uL2Fzc2VydC5qcyIKKworbGV0
IHdhdCA9IGAKKyhtb2R1bGUKKyAgICAoZnVuYyAoZXhwb3J0ICJ0ZXN0IikgKHBhcmFtICRzeiBp
MzIpIChyZXN1bHQgaTMyKQorICAgICAgICAoaTMyLmNvbnN0IDkpCisgICAgICAgIChkcm9wKQor
ICAgICAgICAocmV0dXJuIChpOHgxNi5leHRyYWN0X2xhbmVfdSAxICh2MTI4LmNvbnN0IGk4eDE2
IDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2KSkpCisgICAgKQorCisgICAg
KGZ1bmMgKGV4cG9ydCAidGVzdDIiKSAocGFyYW0gJHN6IGkzMikgKHJlc3VsdCBpMzIpCisgICAg
ICAgIChyZXR1cm4gKGk4eDE2LmV4dHJhY3RfbGFuZV91IDEyICh2MTI4LmNvbnN0IGk4eDE2IDEg
MiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2KSkpCisgICAgKQorKQorYAorCith
c3luYyBmdW5jdGlvbiB0ZXN0KCkgeworICAgIGNvbnN0IGluc3RhbmNlID0gYXdhaXQgaW5zdGFu
dGlhdGUod2F0LCB7fSwgeyBzaW1kOiB0cnVlIH0pCisgICAgY29uc3QgeyB0ZXN0LCB0ZXN0MiB9
ID0gaW5zdGFuY2UuZXhwb3J0cworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KSB7CisgICAgICAgIGFzc2VydC5lcSh0ZXN0KDQyKSwgMikKKyAgICAgICAgYXNzZXJ0LmVxKHRl
c3QyKDQ4KSwgMTMpOworICAgIH0KK30KKworYXNzZXJ0LmFzeW5jVGVzdCh0ZXN0KCkpCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgpp
bmRleCAzMmM4YWY4YmJmNTcuLjVjYWY3MWE5YTllZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
L3dhc20uanNvbgorKysgYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCkBAIC0xMSw2ICsxMSw3IEBA
CiAgICAgICAgICJpNjQiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgIC0y
LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKICAgICAgICAgImYzMiI6ICAgICAgIHsgInR5cGUi
OiAidmFyaW50NyIsICJ2YWx1ZSI6ICAgLTMsICJiM3R5cGUiOiAiQjM6OkZsb2F0IiB9LAogICAg
ICAgICAiZjY0IjogICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogICAtNCwgImIz
dHlwZSI6ICJCMzo6RG91YmxlIiB9LAorICAgICAgICAidjEyOCI6ICAgICAgeyAidHlwZSI6ICJ2
YXJpbnQ3IiwgInZhbHVlIjogIDEyMywgImIzdHlwZSI6ICJCMzo6VjEyOCIgfSwKICAgICAgICAg
ImZ1bmNyZWYiOiAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMTYsICJiM3R5cGUi
OiAiQjM6OkludDY0IiB9LAogICAgICAgICAiZXh0ZXJucmVmIjogeyAidHlwZSI6ICJ2YXJpbnQ3
IiwgInZhbHVlIjogIC0xNywgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCiAgICAgICAgICJyZWZf
bnVsbCI6ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIwLCAiYjN0eXBlIjogIkIz
OjpJbnQ2NCIgfSwKQEAgLTE4LDcgKzE5LDcgQEAKICAgICAgICAgImZ1bmMiOiAgICAgIHsgInR5
cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMzIsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAg
ICAgICAgICJ2b2lkIjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTY0LCAi
YjN0eXBlIjogIkIzOjpWb2lkIiB9CiAgICAgfSwKLSAgICAidmFsdWVfdHlwZSI6IFsiaTMyIiwg
Imk2NCIsICJmMzIiLCAiZjY0IiwgImV4dGVybnJlZiIsICJmdW5jcmVmIl0sCisgICAgInZhbHVl
X3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJleHRlcm5yZWYiLCAiZnVuY3Jl
ZiIsICJ2MTI4Il0sCiAgICAgImJsb2NrX3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2
NCIsICJ2b2lkIiwgImV4dGVybnJlZiIsICJmdW5jcmVmIl0sCiAgICAgInJlZl90eXBlIjogWyJm
dW5jcmVmIiwgImV4dGVybnJlZiIsICJyZWYiLCAicmVmX251bGwiXSwKICAgICAiZXh0ZXJuYWxf
a2luZCI6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTZiZGZlMDc1Mzg0Li5k
OTJiNWVjMWExZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NzMsNyArODcz
LDEwIEBACiAJCTQ0NDNBRTMzMTZFMTg4RDkwMDc2RjExMCAvKiBGb3VuZGF0aW9uLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBF
QjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKIAkJNDUx
NTM5QjkxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MTUzOUI4MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDczREE0
QTQ3NjRDNDVGRTg3MUIwNDg1IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTY5OTQ4RURFNjhENDA1NEIw
MUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTRCMTE2N0EwMjc1RUFBMzYwMDhCNEQwOCAv
KiBTaW1kSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEIxMTY3OUYyNzVFQUEzNjAwOEI0RDA4IC8qIFNpbWRJbmZvLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNEI2MjVBMjYyNzNDMzk0RTAwM0JG
NTAzIC8qIEIzQ29uc3QxMjhWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QjYyNUEyNTI3M0MzOTRFMDAzQkY1MDMgLyogQjNDb25zdDEyOFZh
bHVlLmNwcCAqLzsgfTsKIAkJNEJBQTA3Q0VCODFGNDlBMjk2RTAyMjAzIC8qIFdhc21TaWduYXR1
cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVyZUlubGluZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0QkU4OUJGQjI3
NDg1MTMzMDA3OTA5NzcgLyogQjNTaW1kVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRTg5QkY4Mjc0ODUxMzMwMDc5MDk3NyAvKiBCM1NpbWRW
YWx1ZS5oICovOyB9OwogCQk1MjBEOTlGMTIzODhDQzgxMDAwNTA5QTMgLyogR2V0QnlWYWxIaXN0
b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjBE
OTlGMDIzODhDQzc4MDAwNTA5QTMgLyogR2V0QnlWYWxIaXN0b3J5LmggKi87IH07CiAJCTUyMTEz
MUY3MUY4MkJGMTQwMDdDQ0VFRSAvKiBQb2x5UHJvdG9BY2Nlc3NDaGFpbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTIxMTMxRjYxRjgyQkYxMTAwN0ND
RUVFIC8qIFBvbHlQcm90b0FjY2Vzc0NoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTIxMzIyNDYxRUNCQ0U4MjAwRjY1NjE1IC8qIFdlYkFz
c2VtYmx5RnVuY3Rpb25CYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MjEzMjI0NDFFQ0JDRTgyMDBGNjU2MTUgLyogV2ViQXNzZW1ibHlGdW5jdGlv
bkJhc2UuaCAqLzsgfTsKQEAgLTE3OTQsNiArMTc5Nyw3IEBACiAJCUNEMUY5QjRCMjcwQ0ZFMEYw
MDYxN0VCNiAvKiBTdHJvbmdGb3J3YXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDFGOUI0QTI3MENGRTBGMDA2MTdFQjYgLyogU3Ryb25nRm9yd2Fy
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNF
MjBCRDA1MjM3RDNFMjMwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjBCRDAzMjM3RDNB
RDQwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuaCAqLzsgfTsKIAkJQ0UyMEJE
MDcyMzdEM0U0ODAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyMEJEMDEy
MzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5oICov
OyB9OworCQlDRTZFQzIxRTI3M0I0NUFFMDAxNTk4RTMgLyogQjNDb25zdDEyOFZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZFQzIxRDI3M0I0
NUFFMDAxNTk4RTMgLyogQjNDb25zdDEyOFZhbHVlLmggKi87IH07CiAJCUNFQUU3RDdCODg5QjQ3
N0JBOTNBQkE2QyAvKiBTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4ODUyMTUxQTlDMzg0MjM4OUIzMjE1QjcgLyogU2NyaXB0RmV0
Y2hlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUNFQ0ZBRDM2MjM3MkRBRDAwMDI5MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDRkFEMzQyMzcyREFBNzAw
MjkxNTk5IC8qIEZ1enplclByZWRpY3Rpb25zLmggKi87IH07CiAJCUNFQ0ZBRDM3MjM3MkRBRDQw
MDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDRkFEMzIyMzcyREFBNzAwMjkxNTk5IC8qIEZpbGVC
YXNlZEZ1enplckFnZW50LmggKi87IH07CkBAIC0zNzQ4LDYgKzM3NTIsMTAgQEAKIAkJNDQyRkJE
ODUyMTQ5RDFFMDAwNzM1MTlDIC8qIGhhc2hlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgbmFtZSA9IGhhc2hl
ci5weTsgcGF0aCA9IHlhcnIvaGFzaGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NTE1MzlCODEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBZYXJyLmg7IHBhdGggPSB5YXJyL1lhcnIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBqc2MuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IH07CisJCTRCMTE2NzlGMjc1
RUFBMzYwMDhCNEQwOCAvKiBTaW1kSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1kSW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjYyNUEyNTI3M0MzOTRFMDAzQkY1MDMgLyog
QjNDb25zdDEyOFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQ29uc3QxMjhWYWx1ZS5j
cHA7IHBhdGggPSBiMy9CM0NvbnN0MTI4VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0QkU4OUJGNzI3NDg1MTMzMDA3OTA5NzcgLyogQjNTaW1kVmFsdWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQjNTaW1kVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNTaW1kVmFsdWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QkU4OUJGODI3NDg1MTMzMDA3OTA5Nzcg
LyogQjNTaW1kVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNTaW1kVmFsdWUuaDsgcGF0aCA9IGIz
L0IzU2ltZFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRDRTk3OEUzODVB
ODQ5ODE5OTA1MjE1MyAvKiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5k
YXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBGb3VuZGF0aW9uLmZyYW1ld29yazsg
cGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrOyBz
b3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQk1MUYwRUMwNzA1Qzg2QzlBMDBFNkRGMUIg
LyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGlib2JqYy5keWxpYjsg
cGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7
IH07CkBAIC01MTU4LDYgKzUxNjYsNyBAQAogCQlDRTI3QTNEODIzNzU5QkFDMDA4OTYwNUUgLyog
TmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5h
cnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRTI3QTNEOTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE51bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjdBM0RBMjM3NUE2REMw
MDg5NjA1RSAvKiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNFNkVDMjFEMjczQjQ1QUUwMDE1OThFMyAvKiBCM0NvbnN0MTI4VmFsdWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNDb25zdDEyOFZhbHVlLmg7IHBhdGggPSBiMy9CM0NvbnN0MTI4VmFsdWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VDRkFEMzIyMzcyREFBNzAwMjkxNTk5IC8q
IEZpbGVCYXNlZEZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVCYXNlZEZ1enplckFn
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQ0ZBRDMzMjM3MkRBQTcwMDI5
MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxl
QmFzZWRGdXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQ0ZB
RDM0MjM3MkRBQTcwMDI5MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGdXp6ZXJQcmVkaWN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjEw
Myw2ICs2MTEyLDEwIEBACiAJCQkJMEZFQzg0QzQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29uc3Qz
MlZhbHVlLmggKi8sCiAJCQkJMEZFQzg0QzUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29uc3Q2NFZh
bHVlLmNwcCAqLywKIAkJCQkwRkVDODRDNjFCREFDREFDMDA4MEZGNzQgLyogQjNDb25zdDY0VmFs
dWUuaCAqLywKKwkJCQk0QjYyNUEyNTI3M0MzOTRFMDAzQkY1MDMgLyogQjNDb25zdDEyOFZhbHVl
LmNwcCAqLywKKwkJCQlDRTZFQzIxRDI3M0I0NUFFMDAxNTk4RTMgLyogQjNDb25zdDEyOFZhbHVl
LmggKi8sCisJCQkJNEJFODlCRjcyNzQ4NTEzMzAwNzkwOTc3IC8qIEIzU2ltZFZhbHVlLmNwcCAq
LywKKwkJCQk0QkU4OUJGODI3NDg1MTMzMDA3OTA5NzcgLyogQjNTaW1kVmFsdWUuaCAqLywKIAkJ
CQkwRkVDODRDNzFCREFDREFDMDA4MEZGNzQgLyogQjNDb25zdERvdWJsZVZhbHVlLmNwcCAqLywK
IAkJCQkwRkVDODRDODFCREFDREFDMDA4MEZGNzQgLyogQjNDb25zdERvdWJsZVZhbHVlLmggKi8s
CiAJCQkJNDM0MjJBNjAxQzE1ODcxQjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmNwcCAq
LywKQEAgLTY2MDcsNiArNjYyMCw3IEBACiAJCQkJQTczODY1NTIxMTg2OTdCNDAwNTQwMjc5IC8q
IFRodW5rR2VuZXJhdG9ycy5jcHAgKi8sCiAJCQkJQTczODY1NTMxMTg2OTdCNDAwNTQwMjc5IC8q
IFRodW5rR2VuZXJhdG9ycy5oICovLAogCQkJCTY1OTg3RjJGMTY4MjhBN0UwMDNDMkY4RCAvKiBV
bnVzZWRQb2ludGVyLmggKi8sCisJCQkJNEIxMTY3OUYyNzVFQUEzNjAwOEI0RDA4IC8qIFNpbWRJ
bmZvLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGppdDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC05NjI3LDYgKzk2NDEsNyBAQAogCQkJCTBGNjE4MzMxMUM0NUJGMDcwMDcyNDUwQiAv
KiBBaXJMb3dlck1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1Q0Y5ODQxRTlENTM3NzAw
QzE4NjkyIC8qIEFpckxvd2VyU3RhY2tBcmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQwRTRB
NzFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0QkU4
OUJGQjI3NDg1MTMzMDA3OTA5NzcgLyogQjNTaW1kVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAvKiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNDBFNEE5MUM0OTdGNzQwMEE1NzdGQSAvKiBBaXJPcGNvZGVVdGlscy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMzg3OTAxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpck9wdGlt
aXplQmxvY2tPcmRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDQwNyw2ICsxMDQyMiw3IEBACiAJ
CQkJMEZCMzk5QkYyMEFGNkIzRjAwMTdFMjEzIC8qIEluc3RhbmNlT2ZTdGF0dXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjM5OUMwMjBBRjZCNDMwMDE3RTIxMyAvKiBJbnN0YW5jZU9mVmFyaWFu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBNDY4MEMyMTZGQTU2NTAwMEQyQjFBIC8qIEluc3Ry
dWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRTZFQzIxRTI3M0I0NUFFMDAxNTk4RTMgLyog
QjNDb25zdDEyOFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEMyNUI5RTIxNkVBMzZBMDAx
Mzc3NjQgLyogSW5zdHJ1Y3Rpb25TdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNC
MTdBREI1RjMwMDVBQjE3NCAvKiBJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4
QUYzQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MTI1MCw2ICsxMTI2Niw3IEBACiAJCQkJQTdEQ0I5NzMxMkU1MTkzRjAwOTExOTQwIC8qIFdyaXRl
QmFycmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJCNkQ3NTMxOEEzMzc5MzAwNEE5MzAxIC8q
IFdyaXRlQmFycmllcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzgxNTBBMTQwNDNC
RjUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0
QjExNjdBMDI3NUVBQTM2MDA4QjREMDggLyogU2ltZEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5MiAvKiBYODZfNjRSZWdpc3RlcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5MSAvKiBYODZSZWdpc3RlcnMu
aCBpbiBIZWFkZXJzICovLApAQCAtMTIwMzUsNiArMTIwNTIsNyBAQAogCQkJCUUzOTJFNkY4MjRE
MjVGQTYwMEIyMDc2NyAvKiBCM0JvdHRvbVR1cGxlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTJFNjVBMUMyNzY4Mjc2MDAwMkI0QzBBIC8qIEIzRXN0aW1hdGVTdGF0aWNFeGVjdXRpb25D
b3VudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1QUYxQkRCNUQ1RTAwODBGRjc0IC8q
IHRlc3RiM18xLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRCNjI1QTI2MjczQzM5NEUwMDNCRjUw
MyAvKiBCM0NvbnN0MTI4VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMzQTc3QkEyMkYy
NDgwRjAwMzgyN0ZGIC8qIHRlc3RiM18yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDM0E3N0I5
MjJGMjQ4MEIwMDM4MjdGRiAvKiB0ZXN0YjNfMy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzNB
NzdCODIyRjI0ODA5MDAzODI3RkYgLyogdGVzdGIzXzQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggN2EwZWJmZTY5ODFkLi5mYzQyODZlOWJmNzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTEyNCw2ICsxMjQsNyBAQCBiMy9CM0NvbW11
dGF0aXZpdHkuY3BwCiBiMy9CM0NvbXBpbGUuY3BwCiBiMy9CM0NvbnN0MzJWYWx1ZS5jcHAKIGIz
L0IzQ29uc3Q2NFZhbHVlLmNwcAorYjMvQjNDb25zdDEyOFZhbHVlLmNwcAogYjMvQjNDb25zdERv
dWJsZVZhbHVlLmNwcAogYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwCiBiMy9CM0NvbnN0cmFpbmVk
VmFsdWUuY3BwCkBAIC0xNjQsNiArMTY1LDcgQEAgYjMvQjNQdXJlQ1NFLmNwcAogYjMvQjNSZWR1
Y2VEb3VibGVUb0Zsb2F0LmNwcAogYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwCiBiMy9CM1Jl
ZHVjZVN0cmVuZ3RoLmNwcAorYjMvQjNTaW1kVmFsdWUuY3BwCiBiMy9CM1NTQUNhbGN1bGF0b3Iu
Y3BwCiBiMy9CM1Nsb3RCYXNlVmFsdWUuY3BwCiBiMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRB
c3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaAppbmRleCA2ZTkxZDkyMzBhMzkuLjFiZTA3ODg0NjFmMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaApAQCAtNDEsOSArNDEsOSBA
QAogI2luY2x1ZGUgPHppcmNvbi9zeXNjYWxscy5oPgogI2VuZGlmCiAKLSNkZWZpbmUgQ0hFQ0tf
REFUQVNJWkVfT0YoZGF0YXNpemUpIHN0YXRpY19hc3NlcnQoZGF0YXNpemUgPT0gMzIgfHwgZGF0
YXNpemUgPT0gNjQpCisjZGVmaW5lIENIRUNLX0RBVEFTSVpFX09GKGRhdGFzaXplKSBzdGF0aWNf
YXNzZXJ0KGRhdGFzaXplID09IDMyIHx8IGRhdGFzaXplID09IDY0IHx8IGRhdGFzaXplID09IDEy
OCkKICNkZWZpbmUgQ0hFQ0tfTUVNT1BTSVpFX09GKHNpemUpIHN0YXRpY19hc3NlcnQoc2l6ZSA9
PSA4IHx8IHNpemUgPT0gMTYgfHwgc2l6ZSA9PSAzMiB8fCBzaXplID09IDY0IHx8IHNpemUgPT0g
MTI4KTsKLSNkZWZpbmUgREFUQVNJWkVfT0YoZGF0YXNpemUpICgoZGF0YXNpemUgPT0gNjQpID8g
RGF0YXNpemVfNjQgOiBEYXRhc2l6ZV8zMikKKyNkZWZpbmUgREFUQVNJWkVfT0YoZGF0YXNpemUp
ICgoZGF0YXNpemUgPT0gNjQpID8gRGF0YXNpemVfNjQgOiAoKGRhdGFzaXplID09IDEyOCkgPyBE
YXRhc2l6ZV8xMjggOiBEYXRhc2l6ZV8zMikpCiAjZGVmaW5lIE1FTU9QU0laRV9PRihkYXRhc2l6
ZSkgKChkYXRhc2l6ZSA9PSA4IHx8IGRhdGFzaXplID09IDEyOCkgPyBNZW1PcFNpemVfOF9vcl8x
MjggOiAoZGF0YXNpemUgPT0gMTYpID8gTWVtT3BTaXplXzE2IDogKGRhdGFzaXplID09IDMyKSA/
IE1lbU9wU2l6ZV8zMiA6IE1lbU9wU2l6ZV82NCkKICNkZWZpbmUgQ0hFQ0tfREFUQVNJWkUoKSBD
SEVDS19EQVRBU0laRV9PRihkYXRhc2l6ZSkKICNkZWZpbmUgQ0hFQ0tfTUVNT1BTSVpFKCkgQ0hF
Q0tfTUVNT1BTSVpFX09GKGRhdGFzaXplKQpAQCAtMTg3LDcgKzE4Nyw2IEBAIHR5cGVkZWYgZW51
bSA6IGludDhfdCB7CiAKIC8vIEFSTTY0IGFsd2F5cyBoYXMgMzIgRlBVIHJlZ2lzdGVycyAxMjgt
Yml0cyBlYWNoLiBTZWUgaHR0cDovL2xsdm0ub3JnL2Rldm10Zy8yMDEyLTExL05vcnRob3Zlci1B
QXJjaDY0LnBkZgogLy8gYW5kIFNlY3Rpb24gNS4xLjIgaW4gaHR0cDovL2luZm9jZW50ZXIuYXJt
LmNvbS9oZWxwL3RvcGljL2NvbS5hcm0uZG9jLmloaTAwNTViL0lISTAwNTVCX2FhcGNzNjQucGRm
LgotLy8gSG93ZXZlciwgd2Ugb25seSB1c2UgdGhlbSBmb3IgNjQtYml0IGRvdWJsZXMuCiB0eXBl
ZGVmIGVudW0gOiBpbnQ4X3QgewogI2RlZmluZSBSRUdJU1RFUl9JRChpZCwgbmFtZSwgciwgY3Mp
IGlkLAogICAgIEZPUl9FQUNIX0ZQX1JFR0lTVEVSKFJFR0lTVEVSX0lEKQpAQCAtNTIyLDggKzUy
MSw4IEBAIHByb3RlY3RlZDoKICAgICBlbnVtIERhdGFzaXplIHsKICAgICAgICAgRGF0YXNpemVf
MzIsCiAgICAgICAgIERhdGFzaXplXzY0LAotICAgICAgICBEYXRhc2l6ZV82NF90b3AsCi0gICAg
ICAgIERhdGFzaXplXzE2CisgICAgICAgIERhdGFzaXplXzEyOCwKKyAgICAgICAgRGF0YXNpemVf
MTYsCiAgICAgfTsKIAogICAgIGVudW0gTWVtT3BTaXplIHsKQEAgLTE0NzgsNiArMTQ3Nyw0NCBA
QCBwdWJsaWM6CiAgICAgICAgIG1zdWI8ZGF0YXNpemU+KHJkLCBybiwgcm0sIEFSTTY0UmVnaXN0
ZXJzOjp6cik7CiAgICAgfQogCisgICAgdGVtcGxhdGU8aW50IGxhbmVzaXplPgorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBpbnMoRlBSZWdpc3RlcklEIHZkLCB1aW50MzJfdCBsYW5lLCBSZWdpc3Rl
cklEIHJuKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChsYW5lc2l6ZSA9PSA2NCkgewor
ICAgICAgICAgICAgQVNTRVJUKGxhbmUgPCAyKTsKKyAgICAgICAgICAgIGludCBUcyA9IDBiMDEw
MDA7CisgICAgICAgICAgICBpbnQgaW1tNSA9IChsYW5lIDw8IDQpIHwgVHM7CisgICAgICAgICAg
ICBpbnQgaW1tNCA9IDBiMDAxMTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW5zbihzaW1k
RWxlbWVudCgxLCBpbW01LCBpbW00LCBybiwgdmQpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHN0YXRpY19hc3NlcnQobGFuZXNpemUgfHwgIWxhbmVzaXplLCAidGhpcyBsYW5lc2l6
ZSBpcyBub3Qgc3VwcG9ydGVkIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdGVtcGxh
dGU8aW50IGxhbmVzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bW92KFJlZ2lzdGVySUQg
cmQsIEZQUmVnaXN0ZXJJRCB2biwgdWludDMyX3QgbGFuZSkKKyAgICB7CisgICAgICAgIGlmIGNv
bnN0ZXhwciAobGFuZXNpemUgPT0gOCkgeworICAgICAgICAgICAgQVNTRVJUKGxhbmUgPCAxNik7
CisgICAgICAgICAgICBib29sIFEgPSAwOworICAgICAgICAgICAgaW50IFRzID0gMGIwMDAwMTsK
KyAgICAgICAgICAgIGludCBpbW01ID0gKGxhbmUgPDwgMSkgfCBUczsKKyAgICAgICAgICAgIGlu
dCBpbW00ID0gMGIwMTExOworICAgICAgICAgICAgCisgICAgICAgICAgICBpbnNuKHNpbWRFbGVt
ZW50KFEsIGltbTUsIGltbTQsIHZuLCByZCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgc3RhdGljX2Fzc2VydChsYW5lc2l6ZSB8fCAhbGFuZXNpemUsICJ0aGlzIGxhbmVzaXplIGlz
IG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxp
bnQgbGFuZXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHVtb3YoRlBSZWdpc3RlcklEIHJk
LCB1aW50MzJfdCBsYW5lLCBGUFJlZ2lzdGVySUQgcnQpCisgICAgeworICAgICAgICAodm9pZCkg
cmQ7ICh2b2lkKSBydDsgICh2b2lkKSBsYW5lOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBtb3YoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybSkKICAgICB7CkBAIC0y
Mzk3LDE0ICsyNDM0LDE0IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdmFuZChG
UFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdpc3RlcklEIHZtKQogICAgIHsK
ICAgICAgICAgQ0hFQ0tfVkVDVE9SX0RBVEFTSVpFKCk7Ci0gICAgICAgIGluc24odmVjdG9yRGF0
YVByb2Nlc3NpbmdMb2dpY2FsKFNJTURfTG9naWNhbE9wX0FORCwgdm0sIHZuLCB2ZCkpOworICAg
ICAgICBpbnNuKHZlY3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbChkYXRhc2l6ZSwgU0lNRF9Mb2dp
Y2FsT3BfQU5ELCB2bSwgdm4sIHZkKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8aW50IGRhdGFz
aXplPgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB2b3JyKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdp
c3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdm0pCiAgICAgewogICAgICAgICBDSEVDS19WRUNUT1Jf
REFUQVNJWkUoKTsKLSAgICAgICAgaW5zbih2ZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwoU0lN
RF9Mb2dpY2FsT3BfT1JSLCB2bSwgdm4sIHZkKSk7CisgICAgICAgIGluc24odmVjdG9yRGF0YVBy
b2Nlc3NpbmdMb2dpY2FsKGRhdGFzaXplLCBTSU1EX0xvZ2ljYWxPcF9PUlIsIHZtLCB2biwgdmQp
KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CkBAIC0zNTgwLDkgKzM2MTcs
OSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiAoMHgxZTIwMDgwMCB8IE0gPDwgMzEgfCBT
IDw8IDI5IHwgdHlwZSA8PCAyMiB8IHJtIDw8IDE2IHwgb3Bjb2RlIDw8IDEyIHwgcm4gPDwgNSB8
IHJkKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQgdmVjdG9yRGF0YVBy
b2Nlc3NpbmdMb2dpY2FsKFNJTUQzU2FtZUxvZ2ljYWwgdUFuZFNpemUsIEZQUmVnaXN0ZXJJRCB2
bSwgRlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdmQpCisgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgaW50IHZlY3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbChpbnQgZGF0YXNpemUsIFNJTUQz
U2FtZUxvZ2ljYWwgdUFuZFNpemUsIEZQUmVnaXN0ZXJJRCB2bSwgRlBSZWdpc3RlcklEIHZuLCBG
UFJlZ2lzdGVySUQgdmQpCiAgICAgewotICAgICAgICBjb25zdCBpbnQgUSA9IDA7CisgICAgICAg
IGludCBRID0gZGF0YXNpemUgLyAxMjg7CiAgICAgICAgIHJldHVybiAoMHhlMjAwNDAwIHwgUSA8
PCAzMCB8IHVBbmRTaXplIDw8IDIyIHwgdm0gPDwgMTYgfCBTSU1EX0xvZ2ljYWxPcCA8PCAxMSB8
IHZuIDw8IDUgfCB2ZCk7CiAgICAgfQogCkBAIC0zODQ0LDYgKzM4ODEsMTEgQEAgcHJvdGVjdGVk
OgogICAgIHsKICAgICAgICAgcmV0dXJuIDB4MWU3ZTAwMDAgfCAoZG4gPDwgNSkgfCByZDsKICAg
ICB9CisgICAgCisgICAgc3RhdGljIGludCBzaW1kRWxlbWVudChib29sIFEsIGludCBpbW01LCBp
bnQgaW1tNCwgaW50IHJuLCBpbnQgcmQpCisgICAgeworICAgICAgICByZXR1cm4gMGIwJzAnMCcw
MTExMDAwMCcwMDAwMCcwJzAwJzEnMScxJzAwMDAwJzAwMDAwIHwgKFEgPDwgMzApIHwgKGltbTUg
PDwgMTYpIHwgKGltbTQgPDwgMTEpIHwgKHJuIDw8IDUpIHwgcmQ7CisgICAgfQogCiAgICAgVmVj
dG9yPExpbmtSZWNvcmQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2p1bXBzVG9MaW5rOwog
ICAgIGludCBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggMWMxNWYyZmU0
MDYxLi5kNjQwNzNjMGMwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQVJNNjRBc3NlbWJsZXIuaCIKICNpbmNsdWRlICJBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgi
CiAjaW5jbHVkZSAiSklUT3BlcmF0aW9uVmFsaWRhdGlvbi5oIgorI2luY2x1ZGUgIlNpbWRJbmZv
LmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0y
NDQzLDYgKzI0NDQsMzUgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuZmRp
djwzMj4oZGVzdCwgb3AxLCBvcDIpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRWZWN0b3Io
QWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmICh0
cnlMb2FkV2l0aE9mZnNldDwxMjg+KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0
ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRyPDEyOD4oZGVzdCwgYWRkcmVz
cy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZvaWQgbG9hZFZlY3Rv
cihCYXNlSW5kZXggYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBp
ZiAoYWRkcmVzcy5zY2FsZSA9PSBUaW1lc09uZSB8fCBhZGRyZXNzLnNjYWxlID09IFRpbWVzRWln
aHQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGJhc2VHUFIgPSB0cnlGb2xkQmFzZUFuZE9mZnNl
dFBhcnQoYWRkcmVzcykpIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHI8MTI4Pihk
ZXN0LCBiYXNlR1BSLnZhbHVlKCksIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRy
ZXNzKSwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMy
KGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8MTI4PihtZW1vcnlUZW1wUmVnaXN0ZXIs
IG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJl
c3MpLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRyPDEyOD4oZGVzdCwg
YWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRWZWN0b3IoVHJ1c3RlZEltbVB0ciBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1vdmVUb0NhY2hlZFJlZyhhZGRyZXNzLCBjYWNoZWRNZW1vcnlUZW1wUmVn
aXN0ZXIoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwxMjg+KGRlc3QsIG1lbW9yeVRlbXBS
ZWdpc3RlciwgQVJNNjRSZWdpc3RlcnM6OnpyKTsKKyAgICB9CiAKICAgICB2b2lkIGxvYWREb3Vi
bGUoQWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC0yNTA2LDYg
KzI1MzYsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuZm1vdjw2ND4o
ZGVzdCwgc3JjKTsKICAgICB9CisgICAgCisgICAgdm9pZCBtb3ZlVmVjdG9yKEZQUmVnaXN0ZXJJ
RCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudm9y
cjwxMjg+KGRlc3QsIHNyYywgc3JjKTsKKyAgICB9CiAKICAgICB2b2lkIG1vdmVaZXJvVG9Eb3Vi
bGUoRlBSZWdpc3RlcklEIHJlZykKICAgICB7CkBAIC0yNzk3LDYgKzI4MzIsMzUgQEAgcHVibGlj
OgogICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFk
ZHJlc3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MzI+KHNyYywgYWRkcmVzcy5i
YXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlVmVj
dG9yKEZQUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlm
ICh0cnlTdG9yZVdpdGhPZmZzZXQ8MTI4PihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZz
ZXQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRy
dXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDEyOD4oc3JjLCBhZGRy
ZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgfQorCisgICAgdm9pZCBzdG9yZVZl
Y3RvcihGUFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tUHRyIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtb3ZlVG9DYWNoZWRSZWcoYWRkcmVzcywgY2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVyKCkp
OworICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MTI4PihzcmMsIG1lbW9yeVRlbXBSZWdpc3Rlciwg
QVJNNjRSZWdpc3RlcnM6OnpyKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlVmVjdG9yKEZQUmVn
aXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKGFkZHJl
c3Muc2NhbGUgPT0gVGltZXNPbmUgfHwgYWRkcmVzcy5zY2FsZSA9PSBUaW1lc0VpZ2h0KSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byBiYXNlR1BSID0gdHJ5Rm9sZEJhc2VBbmRPZmZzZXRQYXJ0KGFk
ZHJlc3MpKSB7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDEyOD4oc3JjLCBiYXNl
R1BSLnZhbHVlKCksIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRk
cmVzcy5zY2FsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mu
b2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8MTI4PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRl
bXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDEyOD4oc3JjLCBhZGRyZXNzLmJh
c2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgfQogCiAgICAgdm9pZCBzdWJEb3VibGUoRlBS
ZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpAQCAtNDU2MSw2ICs0NjI1
LDE2IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEZBU1RfVExTX0pJVCkKICAg
ICAKKyAgICB2b2lkIHJlcGxhY2VMYW5lKFNpbWRMYW5lSW50ZXJwcmV0YXRpb24sIFNpbWRTaWdu
RXh0ZW5kTW9kZSwgVHJ1c3RlZEltbTMyIGxhbmUsIFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmluczw2ND4oZGVzdCwgbGFuZS5t
X3ZhbHVlLCBzcmMpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGV4dHJhY3RMYW5lKFNpbWRMYW5l
SW50ZXJwcmV0YXRpb24sIFNpbWRTaWduRXh0ZW5kTW9kZSwgVHJ1c3RlZEltbTMyIGxhbmUsIEZQ
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnVtb3Y8OD4oZGVzdCwgc3JjLCBsYW5lLm1fdmFsdWUpOworICAgIH0KKyAgICAKICAgICAv
LyBNaXNjIGhlbHBlciBmdW5jdGlvbnMuCiAKICAgICAvLyBJbnZlcnQgYSByZWxhdGlvbmFsIGNv
bmRpdGlvbiwgZS5nLiA9PSBiZWNvbWVzICE9LCA8IGJlY29tZXMgPj0sIGV0Yy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aAppbmRleCAwNDVkZWZlZGIxNTQuLjk0YmQ0Njc1ZDY2YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShBU1NFTUJMRVIpICYmIENQVShYODZfNjQpCiAKICNpbmNs
dWRlICJNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIgorI2luY2x1ZGUgIlNpbWRJbmZvLmgiCiAK
ICNkZWZpbmUgUkVQQVRDSF9PRkZTRVRfQ0FMTF9SMTEgMwogCkBAIC0xMDQ3LDYgKzEwNDgsMzcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9ycihzcmMsIGRlc3Qp
OwogICAgIH0KKyAgICAKKyAgICB2b2lkIG1vdmVWZWN0b3IoRlBSZWdpc3RlcklEIHNyYywgRlBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZhcHNfcnIoc3Jj
LCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkVmVjdG9yKFRydXN0ZWRJbW1QdHIg
YWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKGFkZHJlc3Ms
IHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgbG9hZFZlY3RvcihBZGRyZXNzKHNjcmF0Y2hS
ZWdpc3RlcigpKSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBsb2FkVmVjdG9yKEFkZHJlc3Mg
YWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci52
bW92dXBzX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOworICAgIH0KKwor
ICAgIHZvaWQgbG9hZFZlY3RvcihCYXNlSW5kZXggYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci52bW92dXBzX21yKGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUsIGRlc3QpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlVmVjdG9yKEZQUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3Z1cHNfcm0oc3JjLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVZlY3Rv
cihGUFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLnZtb3Z1cHNfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CiAKICAgICB2b2lkIGNvbXBhcmU2
NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMy
IHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpAQCAtMTk3NCw2ICsyMDA2LDE2IEBAIHB1
YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkc3NfcnIoZGVzdCwgZGVzdCk7CiAgICAgICAg
IG1fYXNzZW1ibGVyLmxpbmtKdW1wKGRvbmUsIG1fYXNzZW1ibGVyLmxhYmVsKCkpOwogICAgIH0K
KyAgICAKKyAgICB2b2lkIHJlcGxhY2VMYW5lKFNpbWRMYW5lSW50ZXJwcmV0YXRpb24sIFNpbWRT
aWduRXh0ZW5kTW9kZSwgVHJ1c3RlZEltbTMyIGxhbmUsIFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnBpbnNyPDY0PihkZXN0LCBs
YW5lLm1fdmFsdWUsIHNyYyk7CisgICAgfQorICAgIAorICAgIHZvaWQgZXh0cmFjdExhbmUoU2lt
ZExhbmVJbnRlcnByZXRhdGlvbiwgU2ltZFNpZ25FeHRlbmRNb2RlLCBUcnVzdGVkSW1tMzIgbGFu
ZSwgRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIucGV4dHI8OD4oZGVzdCwgc3JjLCBsYW5lLm1fdmFsdWUpOworICAgIH0KIAogICAg
IHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludCgpIHsgcmV0dXJuIHRydWU7IH0KICAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVuY2F0ZSgpIHsgcmV0dXJuIHRy
dWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5o
CmluZGV4IDk1MDNiOTliYWEyOS4uY2Q2ZGZhMWE0ZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTMxOSw2ICszMTksMTAgQEAgcHJp
dmF0ZToKICAgICAgICAgT1AzX0xGRU5DRSAgICAgICAgICAgPSAweEU4LAogICAgICAgICBPUDNf
TUZFTkNFICAgICAgICAgICA9IDB4RjAsCiAgICAgICAgIE9QM19TRkVOQ0UgICAgICAgICAgID0g
MHhGOCwKKyAgICAgICAgT1AzX1BFWFRSQiAgICAgICAgICAgPSAweDE0LAorICAgICAgICBPUDNf
UEVYVFJEICAgICAgICAgICA9IDB4MTYsCisgICAgICAgIE9QM19QSU5TUkIgICAgICAgICAgID0g
MHgyMCwKKyAgICAgICAgT1AzX1BJTlNSRCAgICAgICAgICAgPSAweDIyLAogICAgIH0gVGhyZWVC
eXRlT3Bjb2RlSUQ7CiAKICAgICBzdHJ1Y3QgVmV4UHJlZml4IHsKQEAgLTIzNjAsNiArMjM2NCwz
MiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZH
diwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQogI2VuZGlmCisgICAg
CisgICAgdGVtcGxhdGU8aW50IGxhbmVzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwaW5z
cihYTU1SZWdpc3RlcklEIHZkLCB1aW50MzJfdCBsYW5lLCBSZWdpc3RlcklEIHJuKQorICAgIHsK
KyAgICAgICAgaWYgY29uc3RleHByIChsYW5lc2l6ZSA9PSA2NCkgeworICAgICAgICAgICAgQVNT
RVJUKGxhbmUgPCAyKTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFO
RF9TSVpFKTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLnRocmVlQnl0ZU9wNjQoT1AyXzNCWVRF
X0VTQ0FQRV8zQSwgT1AzX1BJTlNSRCwgKFJlZ2lzdGVySUQpIHZkLCBybik7CisgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KCh1aW50OF90KSBsYW5lKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQobGFuZXNpemUgfHwgIWxhbmVzaXplLCAidGhp
cyBsYW5lc2l6ZSBpcyBub3Qgc3VwcG9ydGVkIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8aW50IGxhbmVzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwZXh0cihS
ZWdpc3RlcklEIHJkLCBYTU1SZWdpc3RlcklEIHZuLCB1aW50MzJfdCBsYW5lKQorICAgIHsKKyAg
ICAgICAgaWYgY29uc3RleHByIChsYW5lc2l6ZSA9PSA4KSB7CisgICAgICAgICAgICBBU1NFUlQo
bGFuZSA8IDE2KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9T
SVpFKTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLnRocmVlQnl0ZU9wNjQoT1AyXzNCWVRFX0VT
Q0FQRV8zQSwgT1AzX1BFWFRSQiwgKFJlZ2lzdGVySUQpIHZuLCByZCk7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGU4KCh1aW50OF90KSBsYW5lKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQobGFuZXNpemUgfHwgIWxhbmVzaXplLCAidGhpcyBs
YW5lc2l6ZSBpcyBub3Qgc3VwcG9ydGVkIik7CisgICAgICAgIH0KKyAgICB9CiAKICAgICB2b2lk
IG1vdmxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTMxODEs
NiArMzIxMSwyNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3AoT1AyX01PVkFQU19WcGRXcGQsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpc3JjKTsK
ICAgICB9CisgICAgCisgICAgdm9pZCB2bW92dXBzX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci52ZXhX
aWdUd29CeXRlT3AoT1BfMkJZVEVfRVNDQVBFLCBPUDJfTU9WU0RfVnNkV3NkLCAoUmVnaXN0ZXJJ
RClkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgdm1vdnVwc19tcihp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwg
WE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci52ZXhXaWdUd29C
eXRlT3AoT1BfMkJZVEVfRVNDQVBFLCBPUDJfTU9WU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3Qs
IG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCB2bW92
dXBzX3JtKFhNTVJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci52ZXhXaWdUd29CeXRlT3AoT1BfMkJZVEVfRVNDQVBF
LCBPUDJfTU9WU0RfV3NkVnNkLCAoUmVnaXN0ZXJJRClzcmMsIGJhc2UsIG9mZnNldCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgdm1vdnVwc19ybShYTU1SZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci52ZXhXaWdUd29CeXRlT3AoT1BfMkJZVEVfRVNDQVBFLCBPUDJf
TU9WU0RfV3NkVnNkLCAoUmVnaXN0ZXJJRClzcmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxl
KTsKKyAgICB9CiAKICAgICB2b2lkIG1vdnNkX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdp
c3RlcklEIGRzdCkKICAgICB7CkBAIC00MzI4LDkgKzQzNzgsOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGNhc2UgMHhGMjoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDM7CiAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgIH07CkBAIC00NDU4LDYgKzQ1MDcsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRl
ci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CiAgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9k
Uk1BZGRyKHJlZywgYWRkcmVzcyk7CiAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgdm9pZCB2ZXhXaWdUd29CeXRlT3AoT25lQnl0ZU9wY29kZUlEIHNpbWRQcmVmaXgsIFR3b0J5
dGVPcGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQg
b2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldy
aXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLnRocmVlQnl0ZXNWZXhO
ZHMoc2ltZFByZWZpeCwgVmV4SW1wbGllZEJ5dGVzOjpUd29CeXRlc09wLCBkZXN0LCAoUmVnaXN0
ZXJJRCkgMCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNv
ZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKGRlc3QsIGJhc2UsIG9mZnNldCk7
CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgdm9pZCB2ZXhXaWdUd29CeXRl
T3AoT25lQnl0ZU9wY29kZUlEIHNpbWRQcmVmaXgsIFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIFJl
Z2lzdGVySUQgZGVzdCwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9u
QnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIudGhyZWVC
eXRlc1ZleE5kcyhzaW1kUHJlZml4LCBWZXhJbXBsaWVkQnl0ZXM6OlR3b0J5dGVzT3AsIGRlc3Qs
IChSZWdpc3RlcklEKSAwLCBpbmRleCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0
ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKGRlc3Qs
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgfQogCiAgICAgICAgIHZvaWQg
dmV4TmRzTGlnV2lnVHdvQnl0ZU9wKE9uZUJ5dGVPcGNvZGVJRCBzaW1kUHJlZml4LCBUd29CeXRl
T3Bjb2RlSUQgb3Bjb2RlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgYSwgUmVnaXN0ZXJJ
RCBiKQogICAgICAgICB7CkBAIC00NjMxLDYgKzQ2OTYsMTYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CiAgICAgICAgICAgICB3cml0ZXIu
bWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgdm9pZCB0aHJlZUJ5dGVPcDY0KFR3b0J5dGVPcGNv
ZGVJRCB0d29CeXRlUHJlZml4LCBUaHJlZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJl
Z2lzdGVySUQgcm0pCisgICAgICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVm
ZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleCh0
cnVlLCByZWcsIDAsIHJtKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9Q
XzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZCh0d29C
eXRlUHJlZml4KTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7
CisgICAgICAgICAgICB3cml0ZXIucmVnaXN0ZXJNb2RSTShyZWcsIHJtKTsKKyAgICAgICAgfQog
I2VuZGlmCiAKICAgICAgICAgLy8gQnl0ZS1vcGVyYW5kczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAppbmRleCAxZGU1YjVkZmQyZDUuLjIzMzc5ZTdh
YzI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1lbnRSZWdW
YWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUu
aApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBPcGNvZGUgb3Bjb2RlRnJv
bUNvbnN0cnVjdG9yKE9yaWdpbiwgUmVnKSB7IHJldHVybiBBcmd1bWVudFJlZzsgfQogCiAgICAg
QXJndW1lbnRSZWdWYWx1ZShPcmlnaW4gb3JpZ2luLCBSZWcgcmVnKQotICAgICAgICA6IFZhbHVl
KENoZWNrZWRPcGNvZGUsIEFyZ3VtZW50UmVnLCByZWcuaXNHUFIoKSA/IHBvaW50ZXJUeXBlKCkg
OiBEb3VibGUsIFplcm8sIG9yaWdpbikKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBB
cmd1bWVudFJlZywgcmVnLmlzR1BSKCkgPyBwb2ludGVyVHlwZSgpIDogVjEyOCwgWmVybywgb3Jp
Z2luKQogICAgICAgICAsIG1fcmVnKHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcuaXNT
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYW5rLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0JhbmsuY3BwCmluZGV4IDZkZDM2NmMxZjVjZS4u
NzM1Mjc4MWE5Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYW5r
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYW5rLmNwcApAQCAtMjYsOCAr
MjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkIzQmFuay5oIgogCi0jaWYg
RU5BQkxFKEIzX0pJVCkKLQogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3Bh
Y2UgV1RGIHsKQEAgLTQ3LDUgKzQ1LDMgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIEpTQzo6QjM6OkJhbmsgYmFuaykKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNl
bmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQmFuay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFuay5oCmluZGV4IDVi
ZWJmMjZhYzRjNy4uYTZmZTM5ODQ1NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNCYW5rLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFuay5oCkBA
IC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQog
I2luY2x1ZGUgIkIzVHlwZS5oIgogI2luY2x1ZGUgIlJlZy5oIgogCkBAIC00Niw2ICs0NCwxMiBA
QCB2b2lkIGZvckVhY2hCYW5rKGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgZnVuYyhGUCk7CiB9CiAK
K2lubGluZSBCYW5rIGJhbmtGb3JSZWcoUmVnIHJlZykKK3sKKyAgICByZXR1cm4gcmVnLmlzR1BS
KCkgPyBHUCA6IEZQOworfQorCisjaWYgRU5BQkxFKEIzX0pJVCkKIGlubGluZSBCYW5rIGJhbmtG
b3JUeXBlKFR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUua2luZCgpKSB7CkBAIC01OCwx
NiArNjIsMTMgQEAgaW5saW5lIEJhbmsgYmFua0ZvclR5cGUoVHlwZSB0eXBlKQogICAgICAgICBy
ZXR1cm4gR1A7CiAgICAgY2FzZSBGbG9hdDoKICAgICBjYXNlIERvdWJsZToKKyAgICBjYXNlIFYx
Mjg6CiAgICAgICAgIHJldHVybiBGUDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIEdQOwogfQotCi1pbmxpbmUgQmFuayBiYW5rRm9yUmVnKFJlZyByZWcpCi17
Ci0gICAgcmV0dXJuIHJlZy5pc0dQUigpID8gR1AgOiBGUDsKLX0KKyNlbmRpZiAvLyBFTkFCTEUo
QjNfSklUKQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIApAQCAtNzksNSArODAsMyBAQCB2
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkIzOjpCYW5rKTsKIAogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDEyOFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NvbnN0MTI4VmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uYTBlNmNmZjM2MTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QxMjhWYWx1ZS5jcHAKQEAgLTAsMCArMSw0NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJCM0NvbnN0MTI4VmFsdWUuaCIKKworI2lmIEVOQUJMRShCM19K
SVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitDb25zdDEyOFZhbHVlOjp+
Q29uc3QxMjhWYWx1ZSgpCit7Cit9CisKK3ZvaWQgQ29uc3QxMjhWYWx1ZTo6ZHVtcE1ldGEoQ29t
bWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJp
bnQoY29tbWEsIG1fdmFsdWUudTY0eDJbMF0sIGNvbW1hLCBtX3ZhbHVlLnU2NHgyWzFdKTsKK30K
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QxMjhWYWx1ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QxMjhWYWx1ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2JlZWVmODlmMzc4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QxMjhWYWx1ZS5oCkBAIC0wLDAgKzEs
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM1ZhbHVlLmgiCisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFU
RSBDb25zdDEyOFZhbHVlIDogcHVibGljIFZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9v
bCBhY2NlcHRzKEtpbmQga2luZCkgeyByZXR1cm4ga2luZCA9PSBDb25zdDEyODsgfQorICAgIAor
ICAgIH5Db25zdDEyOFZhbHVlKCkgb3ZlcnJpZGU7CisgICAgCisgICAgdjEyOF90IHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgQjNfU1BFQ0lBTElaRV9WQUxVRV9GT1Jf
Tk9fQ0hJTERSRU4KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVy
JiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKworICAgIENvbnN0MTI4VmFsdWUoT3Jp
Z2luIG9yaWdpbiwgdjEyOF90IHZhbHVlKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUs
IENvbnN0MTI4LCBWMTI4LCBaZXJvLCBvcmlnaW4pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkK
KyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBPcGNvZGUgb3Bjb2RlRnJvbUNv
bnN0cnVjdG9yKE9yaWdpbiwgdjEyOF90KSB7IHJldHVybiBDb25zdDEyODsgfQorICAgIGZyaWVu
ZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgZnJpZW5kIGNsYXNzIFZhbHVlOworCisgICAgdjEyOF90
IG1fdmFsdWU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVO
QUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmlu
ZGV4IGQ0MjJjMzgwMmZhNi4uMjk1MjlhOGQ1YjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMTE4OSw2ICsxMTg5LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICByZXR1cm4gTW92ZURvdWJsZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC0x
ODU1LDYgKzE4NTcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxl
ZnQuY29uc3VtZSgqdGhpcyksIHJpZ2h0LmNvbnN1bWUoKnRoaXMpKSk7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEluc3QoKTsKKyAgICAgICAgICAg
ICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICB9LApAQCAtMTg4NSw2ICsxODg5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsZWZ0LmNvbnN1bWUoKnRoaXMpLCByaWdodC5jb25zdW1lKCp0aGlzKSkpOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJbnN0KCk7
CisgICAgICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgfSwKQEAgLTE5MzMsNiArMTkzOSw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGVmdC5jb25zdW1lKCp0aGlzKSwgcmlnaHQuY29uc3Vt
ZSgqdGhpcyksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBJbnN0KCk7CisgICAgICAgICAgICAgICAgY2FzZSBXaWR0aDEy
ODoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgfSwKQEAgLTE5NTcs
NiArMTk2NSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdC5j
b25zdW1lKCp0aGlzKSwgcmlnaHQuY29uc3VtZSgqdGhpcyksIHRtcChtX3ZhbHVlKSkpOwogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJbnN0KCk7Cisg
ICAgICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgfSwKQEAgLTIwMjQsNiArMjAzNCw4IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RJbnN0cnVjdGlvbihjb25maWcubW92ZUNv
bmRpdGlvbmFsbHkzMiwgcmVsQ29uZCwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgICAgIGNh
c2UgV2lkdGg2NDoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVNlbGVjdEluc3Ry
dWN0aW9uKGNvbmZpZy5tb3ZlQ29uZGl0aW9uYWxseTY0LCByZWxDb25kLCBsZWZ0LCByaWdodCk7
CisgICAgICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgfSwKQEAgLTIwMzksNiArMjA1MSw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RJbnN0cnVjdGlvbihjb25maWcubW92
ZUNvbmRpdGlvbmFsbHlUZXN0MzIsIHJlc0NvbmQsIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAg
ICAgICBjYXNlIFdpZHRoNjQ6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTZWxl
Y3RJbnN0cnVjdGlvbihjb25maWcubW92ZUNvbmRpdGlvbmFsbHlUZXN0NjQsIHJlc0NvbmQsIGxl
ZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9LApAQCAtMjMxNCw2ICsyMzI4LDkgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFdpZHRoMzI6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBXaWR0aDY0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIFdpZHRoMTI4OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21p
Yy0+YWNjZXNzVHlwZSgpKSwgZXhwZWN0ZWRWYWx1ZVRtcCwgdmFsdWVSZXN1bHRUbXApOwpAQCAt
MjMzMCw2ICsyMzQ3LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6
CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRyYXBwaW5nKEFpcjo6QnJhbmNoNjQsIEFyZzo6
cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpLCB2YWx1ZVJlc3VsdFRtcCwgZXhwZWN0ZWRW
YWx1ZVRtcCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgV2lkdGgxMjg6CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+c2V0U3VjY2Vzc29ycyhzdWNj
ZXNzLCBmYWlsdXJlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDg4LDYgKzI1MDgs
OSBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgogICAgICAgICAgICAgICAg
IHByZXBhcmVPcGNvZGUgPSBNb3ZlOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKQEAgLTM1ODMs
NiArMzYwNiwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYXBwZW5kKEFkZDY0LCBBcmcoYWRk
cmVzcy0+cGlubmVkR1BSKCkpLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCB0bXAoYWRkcmVzcykp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgQjM6OkV4dHJhY3RMYW5lOiB7CisgICAgICAgICAgICBTaW1kVmFsdWUqIHNpbWQg
PSBtX3ZhbHVlLT5hczxTaW1kVmFsdWU+KCk7CisgICAgICAgICAgICBhdXRvIGxhbmVJbmZvID0g
QXJnOjpzaW1kSW5mbyhzaW1kLT5sYW5lSW50ZXJwcmV0YXRpb24oKSwgc2ltZC0+c2lnbkV4dGVu
ZE1vZGUoKSk7CisgICAgICAgICAgICBhcHBlbmQoQWlyOjpFeHRyYWN0TGFuZSwgbGFuZUluZm8s
IEFyZzo6aW1tKHNpbWQtPmltbWVkaWF0ZSgwKSksIHRtcChzaW1kLT5jaGlsZCgwKSksIHRtcChz
aW1kKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBjYXNlIEZl
bmNlOiB7CiAgICAgICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1fdmFsdWUtPmFzPEZlbmNl
VmFsdWU+KCk7CkBAIC0zNjY2LDEyICszNjk2LDI1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBh
cHBlbmQoTW92ZVplcm9Ub0RvdWJsZSwgdG1wKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICBjYXNlIENvbnN0MTI4OiB7
CisgICAgICAgICAgICBhdXRvIGxhbmVJbmZvID0gQXJnOjpzaW1kSW5mbyhTaW1kTGFuZUludGVy
cHJldGF0aW9uOjppNjR4MiwgU2ltZFNpZ25FeHRlbmRNb2RlOjpOQSk7CisgICAgICAgICAgICBh
dXRvIHZhbHVlID0gbV92YWx1ZS0+YXM8Q29uc3QxMjhWYWx1ZT4oKS0+dmFsdWUoKTsKKyAgICAg
ICAgICAgIGF1dG8gYSA9IHRtcEZvclR5cGUoSW50NjQpOworICAgICAgICAgICAgYXV0byByZXN1
bHQgPSB0bXAobV92YWx1ZSk7CisgICAgICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjpiaWdJbW0o
dmFsdWUudTY0eDJbMF0pLCBhKTsKKyAgICAgICAgICAgIGFwcGVuZChSZXBsYWNlTGFuZSwgbGFu
ZUluZm8sIEFyZzo6aW1tKDApLCBhLCByZXN1bHQpOworICAgICAgICAgICAgYXBwZW5kKE1vdmUs
IEFyZzo6YmlnSW1tKHZhbHVlLnU2NHgyWzFdKSwgYSk7CisgICAgICAgICAgICBhcHBlbmQoUmVw
bGFjZUxhbmUsIGxhbmVJbmZvLCBBcmc6OmltbSgxKSwgYSwgcmVzdWx0KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQm90dG9tVHVwbGU6IHsKICAgICAg
ICAgICAgIGZvckVhY2hJbW1PclRtcChtX3ZhbHVlLCBbJl0gKEFyZyB0bXAsIFR5cGUgdHlwZSwg
dW5zaWduZWQpIHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUua2luZCgpKSB7CiAgICAg
ICAgICAgICAgICAgY2FzZSBWb2lkOgogICAgICAgICAgICAgICAgIGNhc2UgVHVwbGU6CisgICAg
ICAgICAgICAgICAgY2FzZSBWMTI4OgogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICBjYXNlIEludDMyOgpAQCAtNDI1NSw2ICs0Mjk4LDExIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgYXBwZW5kKE1vdmVEb3VibGUsIHRtcCh2YWx1ZSksIHJldHVyblZhbHVlRlBSKTsK
ICAgICAgICAgICAgICAgICBhcHBlbmQoUmV0RG91YmxlLCByZXR1cm5WYWx1ZUZQUik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFYxMjg6IC8vIFRPRE8KKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAg
IGFwcGVuZChNb3ZlRG91YmxlLCB0bXAodmFsdWUpLCByZXR1cm5WYWx1ZUZQUik7CisgICAgICAg
ICAgICAgICAgYXBwZW5kKFJldERvdWJsZSwgcmV0dXJuVmFsdWVGUFIpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKaW5kZXggYWU1OWM2
MDk1M2EzLi5jYmE4NDU4NTFiYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM01lbW9yeVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1v
cnlWYWx1ZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgQmFuayBNZW1vcnlWYWx1ZTo6YWNjZXNzQmFu
aygpIGNvbnN0CiAKIHNpemVfdCBNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0ZVNpemUoKSBjb25zdAog
ewotICAgIHJldHVybiBieXRlcyhhY2Nlc3NXaWR0aCgpKTsKKyAgICByZXR1cm4gYnl0ZXNGb3JX
aWR0aChhY2Nlc3NXaWR0aCgpKTsKIH0KIAogdm9pZCBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoQ29t
bWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNPcGNvZGUuY3BwCmluZGV4IDEzMTk1NmU1MGI3OS4uMzQwMWJjNjYwZjhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKQEAgLTEyMCw2ICsxMjAsOSBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgT3Bjb2RlIG9wY29kZSkKICAgICBjYXNl
IENvbnN0RmxvYXQ6CiAgICAgICAgIG91dC5wcmludCgiQ29uc3RGbG9hdCIpOwogICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBDb25zdDEyODoKKyAgICAgICAgb3V0LnByaW50KCJDb25zdDEyOCIp
OworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBCb3R0b21UdXBsZToKICAgICAgICAgb3V0LnBy
aW50KCJCb3R0b21UdXBsZSIpOwogICAgICAgICByZXR1cm47CkBAIC0zNjMsNiArMzY2LDkgQEAg
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE9wY29kZSBvcGNvZGUpCiAgICAg
Y2FzZSBKdW1wOgogICAgICAgICBvdXQucHJpbnQoIkp1bXAiKTsKICAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgRXh0cmFjdExhbmU6CisgICAgICAgIG91dC5wcmludCgiRXh0cmFjdExhbmUiKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQnJhbmNoOgogICAgICAgICBvdXQucHJpbnQoIkJy
YW5jaCIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNPcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCmlu
ZGV4IDY1YTdkYTNiMGFhMi4uZTBlODQyM2Y3NDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNPcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNP
cGNvZGUuaApAQCAtNTQsNiArNTQsNyBAQCBlbnVtIE9wY29kZSA6IHVpbnQ4X3QgewogICAgIENv
bnN0NjQsCiAgICAgQ29uc3REb3VibGUsCiAgICAgQ29uc3RGbG9hdCwKKyAgICBDb25zdDEyOCwK
IAogICAgIC8vIFR1cGxlIGZpbGxlZCB3aXRoIHplcm9zLiBUaGlzIGFwcGVhcnMgd2hlbiBUdXBs
ZSBQYXRjaHBvaW50cyBhcmUgcmVwbGFjZWQgd2l0aCBCb3R0b20gdmFsdWVzLgogICAgIEJvdHRv
bVR1cGxlLApAQCAtMzQyLDYgKzM0Myw5IEBAIGVudW0gT3Bjb2RlIDogdWludDhfdCB7CiAgICAg
Ly8gV2l0aG91dCBzb21lIHN1Y2ggbm9kZSBCMyB3b3VsZCBub3QgaGF2ZSBlbm91Z2ggaW5mb3Jt
YXRpb24gYWJvdXQgdGhlIGlubmVyIHdvcmtpbmdzIG9mIHdhc20KICAgICAvLyB0byBiZSBhYmxl
IHRvIHBlcmZvcm0gc3VjaCBvcHRpbWl6YXRpb25zLgogICAgIFdhc21Cb3VuZHNDaGVjaywKKyAg
ICAKKyAgICAvLyBTaW1kIGluc3RydWN0aW9ucworICAgIEV4dHJhY3RMYW5lLAogCiAgICAgLy8g
U1NBIHN1cHBvcnQsIGluIHRoZSBzdHlsZSBvZiBERkcgU1NBLgogICAgIFVwc2lsb24sIC8vIFRo
aXMgdXNlcyB0aGUgVXBzaWxvblZhbHVlIGNsYXNzLgpAQCAtMzk4LDYgKzQwMiw3IEBAIGlubGlu
ZSBib29sIGlzQ29uc3RhbnQoT3Bjb2RlIG9wY29kZSkKICAgICBjYXNlIENvbnN0NjQ6CiAgICAg
Y2FzZSBDb25zdERvdWJsZToKICAgICBjYXNlIENvbnN0RmxvYXQ6CisgICAgY2FzZSBDb25zdDEy
ODoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNDExLDYgKzQxNiw3IEBAIGlubGluZSBPcGNvZGUgb3Bjb2RlRm9yQ29uc3RhbnQo
VHlwZSB0eXBlKQogICAgIGNhc2UgSW50NjQ6IHJldHVybiBDb25zdDY0OwogICAgIGNhc2UgRmxv
YXQ6IHJldHVybiBDb25zdEZsb2F0OwogICAgIGNhc2UgRG91YmxlOiByZXR1cm4gQ29uc3REb3Vi
bGU7CisgICAgY2FzZSBWMTI4OiByZXR1cm4gQ29uc3QxMjg7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUHJvY2VkdXJlLmNwcAppbmRleCAxZTE0YWU4M2UzMGIuLjc4ZDc0YjM2NDFlYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCkBAIC0xNDQsNiArMTQ0
LDEyIEBAIFZhbHVlKiBQcm9jZWR1cmU6OmFkZENvbnN0YW50KE9yaWdpbiBvcmlnaW4sIFR5cGUg
dHlwZSwgdWludDY0X3QgYml0cykKICAgICAgICAgcmV0dXJuIGFkZDxDb25zdEZsb2F0VmFsdWU+
KG9yaWdpbiwgYml0d2lzZV9jYXN0PGZsb2F0PihzdGF0aWNfY2FzdDxpbnQzMl90PihiaXRzKSkp
OwogICAgIGNhc2UgRG91YmxlOgogICAgICAgICByZXR1cm4gYWRkPENvbnN0RG91YmxlVmFsdWU+
KG9yaWdpbiwgYml0d2lzZV9jYXN0PGRvdWJsZT4oYml0cykpOworICAgIGNhc2UgVjEyODogewor
ICAgICAgICB2MTI4X3QgY29uc3RhbnQ7CisgICAgICAgIGNvbnN0YW50LnU2NHgyWzBdID0gYml0
czsKKyAgICAgICAgY29uc3RhbnQudTY0eDJbMV0gPSBiaXRzOworICAgICAgICByZXR1cm4gYWRk
PENvbnN0MTI4VmFsdWU+KG9yaWdpbiwgY29uc3RhbnQpOworICAgIH0KICAgICBkZWZhdWx0Ogog
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NpbWRWYWx1ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTaW1kVmFsdWUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTBlOGRkNTc2NjViCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU2ltZFZhbHVlLmNwcApAQCAtMCwwICsx
LDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIzU2ltZFZhbHVlLmgiCisKKyNpZiBFTkFCTEUo
QjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworU2ltZFZhbHVlOjp+
U2ltZFZhbHVlKCkKK3sKK30KKwordm9pZCBTaW1kVmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRl
ciYsIFByaW50U3RyZWFtJikgY29uc3QKK3sKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIz
CisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzU2ltZFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTaW1k
VmFsdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM4OTIxNTNl
YmI4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NpbWRW
YWx1ZS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNs
dWRlICJCM1ZhbHVlLmgiCisjaW5jbHVkZSAiU2ltZEluZm8uaCIKKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNpbWRWYWx1ZSA6IHB1
YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQp
CisgICAgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBF
eHRyYWN0TGFuZToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIH5T
aW1kVmFsdWUoKSBvdmVycmlkZTsKKyAgICAKKyAgICBTaW1kTGFuZUludGVycHJldGF0aW9uIGxh
bmVJbnRlcnByZXRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZUludGVycHJldGF0aW9uOyB9
CisgICAgU2ltZFNpZ25FeHRlbmRNb2RlIHNpZ25FeHRlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9zaWduTW9kZTsgfQorICAgIHVpbnQ4X3QgaW1tZWRpYXRlKHNpemVfdCBpKSBjb25zdCB7IHJl
dHVybiBpbW1zW2ldOyB9CisKKyAgICBCM19TUEVDSUFMSVpFX1ZBTFVFX0ZPUl9GSU5BTF9TSVpF
X0ZJWEVEX0NISUxEUkVOCisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJp
bnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudHM+CisgICAgU2ltZFZhbHVlKE9yaWdpbiBvcmlnaW4sIEtpbmQga2lu
ZCwgVHlwZSB0eXBlLCB1aW50OF90IG51bUNoaWxkcmVuLCBTaW1kTGFuZUludGVycHJldGF0aW9u
IGxhbmVJbnRlcnByZXRhdGlvbiwgU2ltZFNpZ25FeHRlbmRNb2RlIHNpZ25Nb2RlLCBBcmd1bWVu
dHMuLi4gYXJndW1lbnRzKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5
cGUsIChOdW1DaGlsZHJlbikobnVtQ2hpbGRyZW4pLCBvcmlnaW4sIGFyZ3VtZW50cy4uLikKKyAg
ICAgICAgLCBtX2xhbmVJbnRlcnByZXRhdGlvbihsYW5lSW50ZXJwcmV0YXRpb24pCisgICAgICAg
ICwgbV9zaWduTW9kZShzaWduTW9kZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBTaW1kVmFsdWUoT3JpZ2luIG9yaWdpbiwgS2lu
ZCBraW5kLCBUeXBlIHR5cGUsIHVpbnQ4X3QgbnVtQ2hpbGRyZW4sIFNpbWRMYW5lSW50ZXJwcmV0
YXRpb24gbGFuZUludGVycHJldGF0aW9uLCBTaW1kU2lnbkV4dGVuZE1vZGUgc2lnbk1vZGUsIHVp
bnQ4X3QgaW1tMSwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBWYWx1ZShDaGVj
a2VkT3Bjb2RlLCBraW5kLCB0eXBlLCAoTnVtQ2hpbGRyZW4pKG51bUNoaWxkcmVuKSwgb3JpZ2lu
LCBhcmd1bWVudHMuLi4pCisgICAgICAgICwgbV9sYW5lSW50ZXJwcmV0YXRpb24obGFuZUludGVy
cHJldGF0aW9uKQorICAgICAgICAsIG1fc2lnbk1vZGUoc2lnbk1vZGUpCisgICAgeworICAgICAg
ICBpbW1zWzBdID0gaW1tMTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUuLi4gQXJndW1lbnRzPgorICAgIHN0YXRpYyBPcGNvZGUgb3Bjb2RlRnJvbUNvbnN0cnVjdG9y
KE9yaWdpbiwgS2luZCBraW5kLCBUeXBlLCB1aW50OF90LCBTaW1kTGFuZUludGVycHJldGF0aW9u
LCBTaW1kU2lnbkV4dGVuZE1vZGUsIEFyZ3VtZW50cy4uLikgeyByZXR1cm4ga2luZC5vcGNvZGUo
KTsgfQorICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgZnJpZW5kIGNsYXNzIFZhbHVl
OworCisgICAgU2ltZExhbmVJbnRlcnByZXRhdGlvbiBtX2xhbmVJbnRlcnByZXRhdGlvbjsKKyAg
ICBTaW1kU2lnbkV4dGVuZE1vZGUgbV9zaWduTW9kZTsKKyAgICAKKyAgICB1aW50OF90IGltbXNb
Ml0geyAwIH07Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVO
QUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuY3BwCmluZGV4IDY3ODQxYmRk
YzJiNi4uNDUzYzIzNzVkMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmNwcApAQCAt
NTIsNiArNTIsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVHlwZSB0
eXBlKQogICAgIGNhc2UgRG91YmxlOgogICAgICAgICBvdXQucHJpbnQoIkRvdWJsZSIpOwogICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBWMTI4OgorICAgICAgICBvdXQucHJpbnQoIlYxMjgiKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVHVwbGU6CiAgICAgICAgIG91dC5wcmludCgiVHVw
bGUiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oCmluZGV4IDkz
MjJmODhlZDliOS4uNjYyMThmOGNiN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzQ29tbW9u
LmgiCisjaW5jbHVkZSAiU2ltZEluZm8uaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKICNpZiAhQVNTRVJUX0VOQUJMRUQKQEAgLTQ1LDYgKzQ2LDcgQEAgZW51bSBUeXBlS2luZCA6
IHVpbnQzMl90IHsKICAgICBJbnQ2NCwKICAgICBGbG9hdCwKICAgICBEb3VibGUsCisgICAgVjEy
OCwKIAogICAgIC8vIFR1cGxlcyBhcmUgcmVwcmVzZW50ZWQgYXMgdGhlIHR1cGxlRmxhZyB8IHdp
dGggdGhlIHR1cGxlJ3MgaW5kZXggaW50byBQcm9jZWR1cmUncyBtX3R1cGxlcyB0YWJsZS4KICAg
ICBUdXBsZSA9IHR1cGxlRmxhZywKQEAgLTcwLDYgKzcyLDcgQEAgcHVibGljOgogICAgIGlubGlu
ZSBib29sIGlzRmxvYXQoKSBjb25zdDsKICAgICBpbmxpbmUgYm9vbCBpc051bWVyaWMoKSBjb25z
dDsKICAgICBpbmxpbmUgYm9vbCBpc1R1cGxlKCkgY29uc3Q7CisgICAgaW5saW5lIGJvb2wgaXNW
ZWN0b3IoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUeXBlS2luZCYgb3Ro
ZXJLaW5kKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gb3RoZXJLaW5kOyB9CiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSB0eXBl
Lm1fa2luZDsgfQpAQCAtODAsNiArODMsNDIgQEAgcHJpdmF0ZToKICAgICBUeXBlS2luZCBtX2tp
bmQgeyBWb2lkIH07CiB9OwogCitpbmxpbmUgVHlwZUtpbmQgc2ltZFNjYWxhclR5cGUoU2ltZExh
bmVJbnRlcnByZXRhdGlvbiBpKSB7CisgICAgc3dpdGNoIChpKSB7CisgICAgY2FzZSBTaW1kTGFu
ZUludGVycHJldGF0aW9uOjppOHgxNjoKKyAgICBjYXNlIFNpbWRMYW5lSW50ZXJwcmV0YXRpb246
OmkxNng4OgorICAgIGNhc2UgU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6aTMyeDQ6CisgICAgICAg
IHJldHVybiBJbnQzMjsKKyAgICBjYXNlIFNpbWRMYW5lSW50ZXJwcmV0YXRpb246Omk2NHgyOgor
ICAgICAgICByZXR1cm4gSW50NjQ7CisgICAgY2FzZSBTaW1kTGFuZUludGVycHJldGF0aW9uOjpm
MzJ4NDoKKyAgICAgICAgcmV0dXJuIEZsb2F0OworICAgIGNhc2UgU2ltZExhbmVJbnRlcnByZXRh
dGlvbjo6ZjY0eDI6CisgICAgICAgIHJldHVybiBEb3VibGU7CisgICAgY2FzZSBTaW1kTGFuZUlu
dGVycHJldGF0aW9uOjp2MTI4OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gSW50NjQ7CisgICAgfQorfQorCitpbmxpbmUgdWludDhfdCBzaW1k
TGFuZUNvdW50KFNpbWRMYW5lSW50ZXJwcmV0YXRpb24gaSkgeworICAgIHN3aXRjaCAoaSkgewor
ICAgIGNhc2UgU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6aTh4MTY6CisgICAgICAgIHJldHVybiAx
NjsKKyAgICBjYXNlIFNpbWRMYW5lSW50ZXJwcmV0YXRpb246OmkxNng4OgorICAgICAgICByZXR1
cm4gODsKKyAgICBjYXNlIFNpbWRMYW5lSW50ZXJwcmV0YXRpb246OmYzMng0OgorICAgIGNhc2Ug
U2ltZExhbmVJbnRlcnByZXRhdGlvbjo6aTMyeDQ6CisgICAgICAgIHJldHVybiA0OworICAgIGNh
c2UgU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6ZjY0eDI6CisgICAgY2FzZSBTaW1kTGFuZUludGVy
cHJldGF0aW9uOjppNjR4MjoKKyAgICAgICAgcmV0dXJuIDI7CisgICAgY2FzZSBTaW1kTGFuZUlu
dGVycHJldGF0aW9uOjp2MTI4OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFR5
cGVLaW5kKSA9PSBzaXplb2YoVHlwZSkpOwogCiBpbmxpbmUgYm9vbCBUeXBlOjppc0ludCgpIGNv
bnN0CkBAIC05NCw3ICsxMzMsNyBAQCBpbmxpbmUgYm9vbCBUeXBlOjppc0Zsb2F0KCkgY29uc3QK
IAogaW5saW5lIGJvb2wgVHlwZTo6aXNOdW1lcmljKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNJ
bnQoKSB8fCBpc0Zsb2F0KCk7CisgICAgcmV0dXJuIGlzSW50KCkgfHwgaXNGbG9hdCgpIHx8IGlz
VmVjdG9yKCk7CiB9CiAKIGlubGluZSBib29sIFR5cGU6OmlzVHVwbGUoKSBjb25zdApAQCAtMTAy
LDYgKzE0MSwxMSBAQCBpbmxpbmUgYm9vbCBUeXBlOjppc1R1cGxlKCkgY29uc3QKICAgICByZXR1
cm4ga2luZCgpID09IFR1cGxlOwogfQogCitpbmxpbmUgYm9vbCBUeXBlOjppc1ZlY3RvcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGtpbmQoKSA9PSBWMTI4OworfQorCiBpbmxpbmUgVHlwZSBwb2lu
dGVyVHlwZSgpCiB7CiAgICAgaWYgKGlzMzJCaXQoKSkKQEAgLTEyMSw2ICsxNjUsOCBAQCBpbmxp
bmUgc2l6ZV90IHNpemVvZlR5cGUoVHlwZSB0eXBlKQogICAgIGNhc2UgSW50NjQ6CiAgICAgY2Fz
ZSBEb3VibGU6CiAgICAgICAgIHJldHVybiA4OworICAgIGNhc2UgVjEyODoKKyAgICAgICAgcmV0
dXJuIDE2OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGVNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1R5cGVNYXAuaAppbmRleCBmNTMyOWM0NjczYjAuLjg0N2VkOGNjZmM2MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZU1hcC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGVNYXAuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gbV9kb3VibGU7CiAgICAgICAgIGNhc2UgVHVwbGU6CiAgICAg
ICAgICAgICByZXR1cm4gbV90dXBsZTsKKyAgICAgICAgY2FzZSBWMTI4OgorICAgICAgICAgICAg
cmV0dXJuIG1fdmVjdG9yOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KQEAgLTgyLDcgKzg0LDkgQEAgcHVibGljOgogICAgICAgICAgICAgIiwgaW50MzIg
PSAiLCBtX2ludDMyLAogICAgICAgICAgICAgIiwgaW50NjQgPSAiLCBtX2ludDY0LAogICAgICAg
ICAgICAgIiwgZmxvYXQgPSAiLCBtX2Zsb2F0LAotICAgICAgICAgICAgIiwgZG91YmxlID0gIiwg
bV9kb3VibGUsICJ9Iik7CisgICAgICAgICAgICAiLCBkb3VibGUgPSAiLCBtX2RvdWJsZSwKKyAg
ICAgICAgICAgICIsIHZlY3RvciA9ICIsIG1fdmVjdG9yLAorICAgICAgICAgICAgIiwgdHVwbGUg
PSAiLCBtX3R1cGxlLCAifSIpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkBAIC05MSw2ICs5NSw3
IEBAIHByaXZhdGU6CiAgICAgVCBtX2ludDY0IHsgfTsKICAgICBUIG1fZmxvYXQgeyB9OwogICAg
IFQgbV9kb3VibGUgeyB9OworICAgIFQgbV92ZWN0b3IgeyB9OwogICAgIFQgbV90dXBsZSB7IH07
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKaW5kZXggYWVmY2Qz
NDFkNjM2Li40NTM5ODkzNjA0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0
ZS5jcHAKQEAgLTE3MSw2ICsxNzEsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElE
QVRFKCF2YWx1ZS0+bnVtQ2hpbGRyZW4oKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEZsb2F0LCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDb25zdDEyODoKKyAgICAg
ICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVu
KCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5
cGUoKSA9PSBWMTI4LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBCb3R0b21UdXBsZToKICAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZhbHVlKSk7
CkBAIC0xOTYsNyArMjAxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2
YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAg
ICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+bnVtQ2hpbGRyZW4oKSwgKCJBdCAiLCAqdmFsdWUpKTsK
ICAgICAgICAgICAgICAgICBWQUxJREFURSgKLSAgICAgICAgICAgICAgICAgICAgKHZhbHVlLT5h
czxBcmd1bWVudFJlZ1ZhbHVlPigpLT5hcmd1bWVudFJlZygpLmlzR1BSKCkgPyBwb2ludGVyVHlw
ZSgpIDogRG91YmxlKQorICAgICAgICAgICAgICAgICAgICAodmFsdWUtPmFzPEFyZ3VtZW50UmVn
VmFsdWU+KCktPmFyZ3VtZW50UmVnKCkuaXNHUFIoKSA/IHBvaW50ZXJUeXBlKCkgOiBWMTI4KQog
ICAgICAgICAgICAgICAgICAgICA9PSB2YWx1ZS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBZGQ6CkBAIC00NDEsNiAr
NDQ2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQo
MCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRXh0cmFj
dExhbmU6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFC
aXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
Pm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHNpbWRTY2FsYXJUeXBlKHZhbHVlLT5hc1NpbWRWYWx1
ZSgpLT5sYW5lSW50ZXJwcmV0YXRpb24oKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gVjEyOCwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ0NhbGw6
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCks
ICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNo
aWxkcmVuKCkgPj0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKQEAgLTYyOSw3ICs2NDAsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS52YWx1ZSgpLT50eXBlKCkuaXNUdXBsZSgp
KQogICAgICAgICAgICAgICAgICAgICBWQUxJREFURShtX3Byb2NlZHVyZS5leHRyYWN0RnJvbVR1
cGxlKHZhbHVlLnZhbHVlKCktPnR5cGUoKSwgdHVwbGVJbmRleCkuaXNGbG9hdCgpLCAoIkF0ICIs
ICpjb250ZXh0LCAiOiAiLCB2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgVkFMSURBVEUodmFsdWUudmFsdWUoKS0+dHlwZSgpLmlzRmxvYXQoKSwgKCJB
dCAiLCAqY29udGV4dCwgIjogIiwgdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUudmFsdWUoKS0+dHlwZSgpLmlzRmxvYXQoKSB8fCB2YWx1ZS52YWx1ZSgpLT50eXBl
KCkuaXNWZWN0b3IoKSwgKCJBdCAiLCAqY29udGV4dCwgIjogIiwgdmFsdWUpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWUuY3BwCmluZGV4IGUzZWVmZmM3N2M3Ny4uZTE1MDgwNzZjMjJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC0xNzMsNiArMTczLDEwIEBAIHZvaWQg
VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgb3V0LnByaW50KCIk
IiwgYXNEb3VibGUoKSwgIigiKTsKICAgICAgICAgaXNDb25zdGFudCA9IHRydWU7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ29uc3QxMjg6CisgICAgICAgIG91dC5wcmludCgiJFsiLCBhc1Yx
MjgoKS51NjR4MlswXSwgIjo6IiwgYXNWMTI4KCkudTY0eDJbMV0sICJdKCIpOworICAgICAgICBp
c0NvbnN0YW50ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtNTQwLDYgKzU0NCw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMo
KSBjb25zdAogICAgIGNhc2UgT3BhcXVlOgogICAgIGNhc2UgQ29uc3QzMjoKICAgICBjYXNlIENv
bnN0NjQ6CisgICAgY2FzZSBDb25zdDEyODoKICAgICBjYXNlIENvbnN0RG91YmxlOgogICAgIGNh
c2UgQ29uc3RGbG9hdDoKICAgICBjYXNlIEJvdHRvbVR1cGxlOgpAQCAtNTg5LDYgKzU5NCw3IEBA
IEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgRXh0cmFjdDoKICAgICBj
YXNlIEZNaW46CiAgICAgY2FzZSBGTWF4OgorICAgIGNhc2UgRXh0cmFjdExhbmU6CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRGl2OgogICAgIGNhc2UgVURpdjoKQEAgLTg4OSw2ICs4OTUsNyBA
QCBUeXBlIFZhbHVlOjp0eXBlRm9yKEtpbmQga2luZCwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZhbHVl
KiBzZWNvbmRDaGlsZCkKICAgICAgICAgICAgIHJldHVybiBJbnQzMjsKICAgICAgICAgY2FzZSBW
b2lkOgogICAgICAgICBjYXNlIFR1cGxlOgorICAgICAgICBjYXNlIFYxMjg6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gVm9pZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCmluZGV4IDI1MGEwMmRmZjIxOC4uMDhjYzg2ZjNj
M2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiBjbGFzcyBCYXNpY0Jsb2NrOwogY2xhc3MgQ2hl
Y2tWYWx1ZTsKIGNsYXNzIEluc2VydGlvblNldDsKK2NsYXNzIFNpbWRWYWx1ZTsKIGNsYXNzIFBo
aUNoaWxkcmVuOwogY2xhc3MgUHJvY2VkdXJlOwogCkBAIC0yNjMsNiArMjY0LDkgQEAgcHVibGlj
OgogICAgIGJvb2wgaGFzSW50NjQoKSBjb25zdDsKICAgICBpbnQ2NF90IGFzSW50NjQoKSBjb25z
dDsKICAgICBib29sIGlzSW50NjQoaW50NjRfdCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBoYXNW
MTI4KCkgY29uc3Q7CisgICAgdjEyOF90IGFzVjEyOCgpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNJ
bnQoKSBjb25zdDsKICAgICBpbnQ2NF90IGFzSW50KCkgY29uc3Q7CkBAIC0yOTQsNiArMjk4LDkg
QEAgcHVibGljOgogICAgIFRyaVN0YXRlIGFzVHJpU3RhdGUoKSBjb25zdDsKICAgICBib29sIGlz
TGlrZVplcm8oKSBjb25zdCB7IHJldHVybiBhc1RyaVN0YXRlKCkgPT0gVHJpU3RhdGU6OkZhbHNl
OyB9CiAgICAgYm9vbCBpc0xpa2VOb25aZXJvKCkgY29uc3QgeyByZXR1cm4gYXNUcmlTdGF0ZSgp
ID09IFRyaVN0YXRlOjpUcnVlOyB9CisgICAgCisgICAgYm9vbCBpc1NpbWRWYWx1ZSgpIGNvbnN0
OworICAgIFNpbWRWYWx1ZSogYXNTaW1kVmFsdWUoKTsKIAogICAgIEVmZmVjdHMgZWZmZWN0cygp
IGNvbnN0OwogCkBAIC0zOTEsNiArMzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBjYXNlIEFy
Z3VtZW50UmVnOgogICAgICAgICBjYXNlIENvbnN0MzI6CiAgICAgICAgIGNhc2UgQ29uc3Q2NDoK
KyAgICAgICAgY2FzZSBDb25zdDEyODoKICAgICAgICAgY2FzZSBDb25zdEZsb2F0OgogICAgICAg
ICBjYXNlIENvbnN0RG91YmxlOgogICAgICAgICBjYXNlIEJvdHRvbVR1cGxlOgpAQCAtNDMwLDYg
KzQzOCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgY2FzZSBTZXQ6CiAgICAgICAgIGNhc2UgV2Fz
bUFkZHJlc3M6CiAgICAgICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrOgorICAgICAgICBjYXNlIEV4
dHJhY3RMYW5lOgogICAgICAgICAgICAgcmV0dXJuIHNpemVvZihWYWx1ZSopOwogICAgICAgICBj
YXNlIEFkZDoKICAgICAgICAgY2FzZSBTdWI6CkBAIC01OTUsNiArNjA0LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAg
IGNhc2UgRGVwZW5kOgorICAgICAgICBjYXNlIEV4dHJhY3RMYW5lOgogICAgICAgICAgICAgaWYg
KFVOTElLRUxZKG51bUFyZ3MgIT0gMSkpCiAgICAgICAgICAgICAgICAgYmFkS2luZChraW5kLCBu
dW1BcmdzKTsKICAgICAgICAgICAgIHJldHVybiBPbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlSW5saW5lcy5oCmluZGV4IDkzOWEyNjQ3ZWM2YS4uYjViYjExYTBkYzE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkIzQ2hlY2tWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQ29uc3QzMlZhbHVlLmgi
CiAjaW5jbHVkZSAiQjNDb25zdDY0VmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnN0MTI4VmFsdWUu
aCIKICNpbmNsdWRlICJCM0NvbnN0RG91YmxlVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbnN0Rmxv
YXRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzRXh0cmFjdFZhbHVlLmgiCkBAIC00Miw2ICs0Myw3IEBA
CiAjaW5jbHVkZSAiQjNQYXRjaHBvaW50VmFsdWUuaCIKICNpbmNsdWRlICJCM1BoaUNoaWxkcmVu
LmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKKyNpbmNsdWRlICJCM1NpbWRWYWx1ZS5oIgog
I2luY2x1ZGUgIkIzU2xvdEJhc2VWYWx1ZS5oIgogI2luY2x1ZGUgIkIzU3dpdGNoVmFsdWUuaCIK
ICNpbmNsdWRlICJCM1Vwc2lsb25WYWx1ZS5oIgpAQCAtMTE4LDYgKzEyMCw4IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogICAgICAgICByZXR1cm4gTUFDUk8oQ29uc3QzMlZhbHVl
KTsgXAogICAgIGNhc2UgQ29uc3Q2NDogXAogICAgICAgICByZXR1cm4gTUFDUk8oQ29uc3Q2NFZh
bHVlKTsgXAorICAgIGNhc2UgQ29uc3QxMjg6IFwKKyAgICAgICAgcmV0dXJuIE1BQ1JPKENvbnN0
MTI4VmFsdWUpOyBcCiAgICAgY2FzZSBDb25zdEZsb2F0OiBcCiAgICAgICAgIHJldHVybiBNQUNS
TyhDb25zdEZsb2F0VmFsdWUpOyBcCiAgICAgY2FzZSBDb25zdERvdWJsZTogXApAQCAtMTUwLDYg
KzE1NCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogICAgICAgICByZXR1cm4g
TUFDUk8oV2FzbUFkZHJlc3NWYWx1ZSk7IFwKICAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazogXAog
ICAgICAgICByZXR1cm4gTUFDUk8oV2FzbUJvdW5kc0NoZWNrVmFsdWUpOyBcCisgICAgY2FzZSBF
eHRyYWN0TGFuZTogXAorICAgICAgICByZXR1cm4gTUFDUk8oU2ltZFZhbHVlKTsgXAogICAgIGNh
c2UgQXRvbWljWGNoZ0FkZDogXAogICAgIGNhc2UgQXRvbWljWGNoZ0FuZDogXAogICAgIGNhc2Ug
QXRvbWljWGNoZ09yOiBcCkBAIC0yOTgsNiArMzA0LDE2IEBAIGlubGluZSBkb3VibGUgVmFsdWU6
OmFzRG91YmxlKCkgY29uc3QKICAgICByZXR1cm4gYXM8Q29uc3REb3VibGVWYWx1ZT4oKS0+dmFs
dWUoKTsKIH0KIAoraW5saW5lIGJvb2wgVmFsdWU6Omhhc1YxMjgoKSBjb25zdAoreworICAgIHJl
dHVybiAhIWFzPENvbnN0MTI4VmFsdWU+KCk7Cit9CisKK2lubGluZSB2MTI4X3QgVmFsdWU6OmFz
VjEyOCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFzPENvbnN0MTI4VmFsdWU+KCktPnZhbHVlKCk7
Cit9CisKIGlubGluZSBib29sIFZhbHVlOjppc0VxdWFsVG9Eb3VibGUoZG91YmxlIHZhbHVlKSBj
b25zdAogewogICAgIHJldHVybiBoYXNEb3VibGUoKSAmJiBhc0RvdWJsZSgpID09IHZhbHVlOwpA
QCAtMzg4LDYgKzQwNCwxNiBAQCB2b2lkIFZhbHVlOjp3YWxrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IsIFBoaUNoaWxkcmVuKiBwaGlDaGlsZHJlbikKICAgICB9CiB9CiAKK2lubGluZSBib29sIFZh
bHVlOjppc1NpbWRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICEhYXM8U2ltZFZhbHVlPigp
OworfQorCitpbmxpbmUgU2ltZFZhbHVlKiBWYWx1ZTo6YXNTaW1kVmFsdWUoKQoreworICAgIHJl
dHVybiBhczxTaW1kVmFsdWU+KCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAj
ZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1dpZHRoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcApp
bmRleCBlMzUzNTZlYTMzZjAuLmY5ODMzY2U3ZTBhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1dpZHRoLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkIzV2lkdGguaCIKIAotI2lmIEVOQUJMRShCM19KSVQpCi0KICNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CkBAIC01NSw2ICs1
Myw4IEBAIFR5cGUgYmVzdFR5cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkKICAgICAgICAgfQog
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gVm9p
ZDsKKyAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICBicmVhazsKICAgICB9CiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gVm9pZDsKQEAgLTc5LDYgKzc5LDkg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QjM6OldpZHRoIHdp
ZHRoKQogICAgIGNhc2UgSlNDOjpCMzo6V2lkdGg2NDoKICAgICAgICAgb3V0LnByaW50KCI2NCIp
OwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OkIzOjpXaWR0aDEyODoKKyAgICAgICAg
b3V0LnByaW50KCIxMjgiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04Niw1ICs4OSwzIEBAIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkIzOjpXaWR0aCB3aWR0aCkKIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
V2lkdGguaAppbmRleCA0MDQxMmY5ZmY2YzYuLjg0ZGM1ZTBkOWMwMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNXaWR0aC5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
RU5BQkxFKEIzX0pJVCkKLQogI2luY2x1ZGUgIkIzQmFuay5oIgogI2luY2x1ZGUgIkIzVHlwZS5o
IgogCkBAIC0zNywxMCArMzUsMTEgQEAgSUdOT1JFX1JFVFVSTl9UWVBFX1dBUk5JTkdTX0JFR0lO
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogZW51bSBXaWR0aCA6IGludDhfdCB7
Ci0gICAgV2lkdGg4ID0gMCwKKyAgICBXaWR0aDggPSAyLAogICAgIFdpZHRoMTYsCiAgICAgV2lk
dGgzMiwKLSAgICBXaWR0aDY0CisgICAgV2lkdGg2NCwKKyAgICBXaWR0aDEyOAogfTsKIAogY29u
c3RleHByIFdpZHRoIHBvaW50ZXJXaWR0aCgpCkBAIC01MCw2ICs0OSw3IEBAIGNvbnN0ZXhwciBX
aWR0aCBwb2ludGVyV2lkdGgoKQogICAgIHJldHVybiBXaWR0aDMyOwogfQogCisjaWYgRU5BQkxF
KEIzX0pJVCkKIGlubGluZSBXaWR0aCB3aWR0aEZvclR5cGUoVHlwZSB0eXBlKQogewogICAgIHN3
aXRjaCAodHlwZS5raW5kKCkpIHsKQEAgLTYzLDEwICs2MywxMyBAQCBpbmxpbmUgV2lkdGggd2lk
dGhGb3JUeXBlKFR5cGUgdHlwZSkKICAgICBjYXNlIEludDY0OgogICAgIGNhc2UgRG91YmxlOgog
ICAgICAgICByZXR1cm4gV2lkdGg2NDsKKyAgICBjYXNlIFYxMjg6CisgICAgICAgIHJldHVybiBX
aWR0aDEyODsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFdp
ZHRoODsKIH0KKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQogCiBpbmxpbmUgV2lkdGggY2Fub25p
Y2FsV2lkdGgoV2lkdGggd2lkdGgpCiB7CkBAIC04Miw3ICs4NSw3IEBAIFR5cGUgYmVzdFR5cGUo
QmFuayBiYW5rLCBXaWR0aCB3aWR0aCk7CiAKIGlubGluZSBXaWR0aCBjb25zZXJ2YXRpdmVXaWR0
aChCYW5rIGJhbmspCiB7Ci0gICAgcmV0dXJuIGJhbmsgPT0gR1AgPyBwb2ludGVyV2lkdGgoKSA6
IFdpZHRoNjQ7CisgICAgcmV0dXJuIGJhbmsgPT0gR1AgPyBwb2ludGVyV2lkdGgoKSA6IFdpZHRo
MTI4OwogfQogCiBpbmxpbmUgV2lkdGggbWluaW11bVdpZHRoKEJhbmsgYmFuaykKQEAgLTkwLDEx
ICs5Myw2IEBAIGlubGluZSBXaWR0aCBtaW5pbXVtV2lkdGgoQmFuayBiYW5rKQogICAgIHJldHVy
biBiYW5rID09IEdQID8gV2lkdGg4IDogV2lkdGgzMjsKIH0KIAotaW5saW5lIHVuc2lnbmVkIGJ5
dGVzKFdpZHRoIHdpZHRoKQotewotICAgIHJldHVybiAxIDw8IHdpZHRoOwotfQotCiBpbmxpbmUg
V2lkdGggd2lkdGhGb3JCeXRlcyh1bnNpZ25lZCBieXRlcykKIHsKICAgICBzd2l0Y2ggKGJ5dGVz
KSB7CkBAIC0xMDYsNiArMTA0LDggQEAgaW5saW5lIFdpZHRoIHdpZHRoRm9yQnl0ZXModW5zaWdu
ZWQgYnl0ZXMpCiAgICAgY2FzZSAzOgogICAgIGNhc2UgNDoKICAgICAgICAgcmV0dXJuIFdpZHRo
MzI7CisgICAgY2FzZSAxNjoKKyAgICAgICAgcmV0dXJuIFdpZHRoMTI4OwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHJldHVybiBXaWR0aDY0OwogICAgIH0KQEAgLTEyMiw2ICsxMjIsOCBAQCBpbmxp
bmUgdW5zaWduZWQgYnl0ZXNGb3JXaWR0aChXaWR0aCB3aWR0aCkKICAgICAgICAgcmV0dXJuIDQ7
CiAgICAgY2FzZSBXaWR0aDY0OgogICAgICAgICByZXR1cm4gODsKKyAgICBjYXNlIFdpZHRoMTI4
OgorICAgICAgICByZXR1cm4gMTY7CiAgICAgfQogICAgIHJldHVybiAxOwogfQpAQCAtMTM3LDYg
KzEzOSw5IEBAIGlubGluZSB1aW50NjRfdCBtYXNrKFdpZHRoIHdpZHRoKQogICAgICAgICByZXR1
cm4gMHgwMDAwMDAwMGZmZmZmZmZmbGx1OwogICAgIGNhc2UgV2lkdGg2NDoKICAgICAgICAgcmV0
dXJuIDB4ZmZmZmZmZmZmZmZmZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xNTUsNSArMTYwLDMgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpCMzo6V2lkdGgpOwogSUdOT1JFX1JFVFVSTl9U
WVBFX1dBUk5JTkdTX0VORAogI2VuZGlmCiAKLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0
ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcAppbmRl
eCAyNjc3Mjc2M2I0OTUuLjM0MWY2YjVkN2QwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2Rl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0
ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwCkBAIC00MCw2ICs0MCwxMCBAQAogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKK25hbWVzcGFjZSBH
ZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzSW50ZXJuYWwgeworc3RhdGljIGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworfQorCiBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpHZW5lcmF0ZUFu
ZEFsbG9jYXRlUmVnaXN0ZXJzKENvZGUmIGNvZGUpCiAgICAgOiBtX2NvZGUoY29kZSkKICAgICAs
IG1fbWFwKGNvZGUpCkBAIC0xNzMsNyArMTc3LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEdlbmVy
YXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmZsdXNoKFRtcCB0bXAsIFJlZyByZWcpCiAgICAgaWYg
KHRtcC5pc0dQKCkpCiAgICAgICAgIG1faml0LT5zdG9yZTY0KHJlZy5ncHIoKSwgY2FsbEZyYW1l
QWRkcigqbV9qaXQsIG9mZnNldCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9qaXQtPnN0b3JlRG91
YmxlKHJlZy5mcHIoKSwgY2FsbEZyYW1lQWRkcigqbV9qaXQsIG9mZnNldCkpOworICAgICAgICBt
X2ppdC0+c3RvcmVWZWN0b3IocmVnLmZwcigpLCBjYWxsRnJhbWVBZGRyKCptX2ppdCwgb2Zmc2V0
KSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJz
OjpzcGlsbChUbXAgdG1wLCBSZWcgcmVnKQpAQCAtMjAyLDcgKzIwNiw3IEBAIEFMV0FZU19JTkxJ
TkUgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjphbGxvYyhUbXAgdG1wLCBSZWcg
cmVnLCBib29sIGlzCiAgICAgICAgIGlmICh0bXAuYmFuaygpID09IEdQKQogICAgICAgICAgICAg
bV9qaXQtPmxvYWQ2NChjYWxsRnJhbWVBZGRyKCptX2ppdCwgb2Zmc2V0KSwgcmVnLmdwcigpKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9qaXQtPmxvYWREb3VibGUoY2FsbEZyYW1lQWRk
cigqbV9qaXQsIG9mZnNldCksIHJlZy5mcHIoKSk7CisgICAgICAgICAgICBtX2ppdC0+bG9hZFZl
Y3RvcihjYWxsRnJhbWVBZGRyKCptX2ppdCwgb2Zmc2V0KSwgcmVnLmZwcigpKTsKICAgICB9CiB9
CiAKQEAgLTMxMCwxMSArMzE0LDEzIEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVy
czo6cHJlcGFyZUZvckdlbmVyYXRpb24oKQogICAgICAgICAgICAgICAgICAgICAgICAgdG9GcmVl
LmFwcGVuZChkYXRhLnNwaWxsU2xvdCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoZnJlZVNsb3RzLnNpemUoKSkK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoZnJlZVNsb3RzLnNpemUoKSAm
JiBmcmVlU2xvdHMubGFzdCgpLT5ieXRlU2l6ZSgpID49IGJ5dGVzRm9yV2lkdGgoY29uc2VydmF0
aXZlV2lkdGgodG1wLmJhbmsoKSkpKQogICAgICAgICAgICAgICAgICAgICBkYXRhLnNwaWxsU2xv
dCA9IGZyZWVTbG90cy50YWtlTGFzdCgpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgZGF0YS5zcGlsbFNsb3QgPSBtX2NvZGUuYWRkU3RhY2tTbG90KDgsIFN0YWNr
U2xvdEtpbmQ6OlNwaWxsKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5zcGlsbFNsb3QgPSBt
X2NvZGUuYWRkU3RhY2tTbG90KGJ5dGVzRm9yV2lkdGgoY29uc2VydmF0aXZlV2lkdGgodG1wLmJh
bmsoKSkpLCBTdGFja1Nsb3RLaW5kOjpTcGlsbCk7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuSWYoR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyc0ludGVybmFs
Ojp2ZXJib3NlLCAiYXNzaWduU3RhY2tTbG90VG9UbXAgYmxvY2s6ICIsICpibG9jaywgIiwgdG1w
OiAiLCB0bXAsICIgLT4gc2xvdCAiLCBkYXRhLnNwaWxsU2xvdCk7CiAgICAgICAgICAgICAgICAg
ZGF0YS5yZWcgPSBSZWcoKTsKICAgICAgICAgICAgIH07CiAKQEAgLTM1OSw3ICszNjUsOCBAQCB2
b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OnByZXBhcmVGb3JHZW5lcmF0aW9uKCkK
ICAgICAgICAgZm9yIChSZWcgcmVnIDogbV9yZWdpc3RlcnNbYmFua10pIHsKICAgICAgICAgICAg
IG1fYWxsb3dlZFJlZ2lzdGVycy5zZXQocmVnKTsKICAgICAgICAgICAgIFRtcERhdGEmIGRhdGEg
PSBtX21hcFtUbXAocmVnKV07Ci0gICAgICAgICAgICBkYXRhLnNwaWxsU2xvdCA9IG1fY29kZS5h
ZGRTdGFja1Nsb3QoOCwgU3RhY2tTbG90S2luZDo6U3BpbGwpOworICAgICAgICAgICAgZGF0YS5z
cGlsbFNsb3QgPSBtX2NvZGUuYWRkU3RhY2tTbG90KGJ5dGVzRm9yV2lkdGgoY29uc2VydmF0aXZl
V2lkdGgoYmFua0ZvclJlZyhyZWcpKSksIFN0YWNrU2xvdEtpbmQ6OlNwaWxsKTsKKyAgICAgICAg
ICAgIGRhdGFMb2dMbklmKEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnNJbnRlcm5hbDo6dmVy
Ym9zZSwgImFsbG93ZWRSZWdpc3RlcnM6IHJlZzogIiwgcmVnLCAiIC0+IHNsb3QgIiwgZGF0YS5z
cGlsbFNsb3QpOwogICAgICAgICAgICAgZGF0YS5yZWcgPSBSZWcoKTsKICAgICAgICAgfQogICAg
IH0pOwpAQCAtMzY5LDggKzM3Niw4IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVy
czo6cHJlcGFyZUZvckdlbmVyYXRpb24oKQogICAgICAgICBmb3IgKFN0YWNrU2xvdCogc2xvdCA6
IG1fY29kZS5zdGFja1Nsb3RzKCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LT5pc0xvY2tlZCgp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0
ID0gLXN0YXRpY19jYXN0PGludHB0cl90PihtX2NvZGUuZnJhbWVTaXplKCkpIC0gc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KG5leHRJbmRleCkgKiA4IC0gODsKLSAgICAgICAgICAgICsrbmV4dEluZGV4
OworICAgICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludHB0cl90Piht
X2NvZGUuZnJhbWVTaXplKCkpIC0gc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG5leHRJbmRleCkgKiA4
IC0gKHNsb3QtPmJ5dGVTaXplKCkgLSA4KSAtIDg7CisgICAgICAgICAgICBuZXh0SW5kZXggKz0g
c2xvdC0+Ynl0ZVNpemUoKSAvIDg7CiAgICAgICAgICAgICBzbG90LT5zZXRPZmZzZXRGcm9tRlAo
b2Zmc2V0KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0J5TGluZWFyU2Nhbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3Rh
Y2tCeUxpbmVhclNjYW4uY3BwCmluZGV4IGY3OTc5YWFmMzQ4OS4uN2I3OWU5M2JhN2Q4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJz
QW5kU3RhY2tCeUxpbmVhclNjYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0J5TGluZWFyU2Nhbi5jcHAKQEAgLTExMiw3
ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9zdGFydEluZGV4KGNvZGUuc2l6ZSgpKQog
ICAgICAgICAsIG1fbWFwKGNvZGUpCiAgICAgICAgICwgbV9pbnNlcnRpb25TZXRzKGNvZGUuc2l6
ZSgpKQotICAgIHsKKyAgICB7IGlmICghT3B0aW9uczo6dmFsaWRhdGVHcmFwaCgpIHx8IE9wdGlv
bnM6OnZhbGlkYXRlR3JhcGhBdEVhY2hQaGFzZSgpKSBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiAgICAgCiAgICAgdm9pZCBydW4oKQpAQCAtNTc3LDcgKzU3Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgICAgICBTdGFja1Nsb3QqIHNwaWxsZWQgPSBtX21hcFt0bXBdLnNw
aWxsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNwaWxsZWQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgT3Bjb2Rl
IG1vdmUgPSBiYW5rID09IEdQID8gTW92ZSA6IE1vdmVEb3VibGU7CisgICAgICAgICAgICAgICAg
ICAgICAgICBPcGNvZGUgbW92ZSA9IGJhbmsgPT0gR1AgPyBNb3ZlIDogTW92ZVZlY3RvcjsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IGFkZFNwaWxsVG1wV2l0aEludGVydmFsKGJhbmss
IGludGVydmFsRm9yU3BpbGwoaW5kZXhPZkVhcmx5LCByb2xlKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocm9sZSA9PSBBcmc6OlNjcmF0Y2gpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNwcAppbmRl
eCBiMGQyNWQxNmFlNmEuLjcxOGMzMjA0YjlhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3Jh
cGhDb2xvcmluZy5jcHAKQEAgLTE3MTAsNiArMTcxMCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAg
ICAgIHN3aXRjaCAoaW5zdC5raW5kLm9wY29kZSkgewogICAgICAgICAgICAgY2FzZSBNb3ZlRmxv
YXQ6CiAgICAgICAgICAgICBjYXNlIE1vdmVEb3VibGU6CisgICAgICAgICAgICBjYXNlIE1vdmVW
ZWN0b3I6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5NzUsNyArMTk3Niw4IEBAIHByaXZhdGU6
CiAKICAgICBzdGF0aWMgdW5zaWduZWQgc3RhY2tTbG90TWluaW11bVdpZHRoKFdpZHRoIHdpZHRo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHdpZHRoIDw9IFdpZHRoMzIgPyA0IDogODsKKyAgICAg
ICAgdW5zaWduZWQgYnl0ZXMgPSBieXRlc0ZvcldpZHRoKHdpZHRoKTsKKyAgICAgICAgcmV0dXJu
IGJ5dGVzIDwgNCA/IDQgOiBieXRlczsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxCYW5rIGJhbmss
IHR5cGVuYW1lIEFsbG9jYXRvclR5cGU+CkBAIC0yMDM0LDYgKzIwMzYsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYXZlIGFuIGluc3QgdGhh
dCB3b24ndCBhZG1pdCBzdGFjazogIiwgaW5zdCwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChpbnN0LmtpbmQub3Bjb2RlKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBNb3ZlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTW92
ZVZlY3RvcjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE1vdmVEb3VibGU6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBNb3ZlRmxvYXQ6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBNb3ZlMzI6IHsKQEAgLTIwODEsNyArMjA4NCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuVXNlTW92ZTMySWZEaWRTcGlsbCA9
IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGFja1Nsb3RFbnRyeS0+dmFsdWUtPmVuc3VyZVNpemUoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FuVXNlTW92ZTMySWZEaWRTcGlsbCA/IDQgOiBieXRlcyh3aWR0aCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhblVzZU1vdmUzMklmRGlkU3BpbGwgPyA0IDogYnl0
ZXNGb3JXaWR0aCh3aWR0aCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gQXJnOjpz
dGFjayhzdGFja1Nsb3RFbnRyeS0+dmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgZGlk
U3BpbGwgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5lZWRTY3JhdGNoSWZT
cGlsbGVkSW5QbGFjZSkKQEAgLTIxMDAsNiArMjEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBNb3ZlRG91Ymxl
OgogICAgICAgICAgICAgICAgICAgICBjYXNlIE1vdmVGbG9hdDoKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBNb3ZlVmVjdG9yOgogICAgICAgICAgICAgICAgICAgICAgICAgaW5zdEJhbmsgPSBG
UDsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0OgpAQCAtMjE1MCw2ICsyMTU0LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUgPSBiYW5rID09IEdQID8g
TW92ZSA6IE1vdmVEb3VibGU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAxNjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGJhbmsgPT0gRlApOworICAgICAgICAgICAgICAgICAgICAgICAgbW92ZSA9IE1vdmVW
ZWN0b3I7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmlu
Zy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdy
YXBoQ29sb3JpbmcuY3BwCmluZGV4IGMyZjFhZWYyOGE4My4uN2Y2NTQyNjg5OTE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdyYXBo
Q29sb3JpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2Nh
dGVTdGFja0J5R3JhcGhDb2xvcmluZy5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICAgICAgU3RhY2tTbG90KiBzbG90ID0gYXJnLnN0YWNrU2xvdCgpOwogICAgICAgICAg
ICAgaWYgKHNsb3QtPmtpbmQoKSAhPSBTdGFja1Nsb3RLaW5kOjpTcGlsbCkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoc2xvdC0+Ynl0ZVNpemUoKSAhPSBi
eXRlcyh3aWR0aCkpCisgICAgICAgICAgICBpZiAoc2xvdC0+Ynl0ZVNpemUoKSAhPSBieXRlc0Zv
cldpZHRoKHdpZHRoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCmluZGV4IDc3ZWU4NDI1MTI0
Yi4uMTA0YTA3NjNkZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFyZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3Bw
CkBAIC05Niw2ICs5Niw3IEBAIHVuc2lnbmVkIEFyZzo6anNIYXNoKCkgY29uc3QKICAgICBzd2l0
Y2ggKG1fa2luZCkgewogICAgIGNhc2UgSW52YWxpZDoKICAgICBjYXNlIFNwZWNpYWw6CisgICAg
Y2FzZSBTaW1kSW5mbzoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUbXA6CiAgICAgICAgIHJl
c3VsdCArPSBtX2Jhc2UuaW50ZXJuYWxWYWx1ZSgpOwpAQCAtMjE5LDYgKzIyMCw5IEBAIHZvaWQg
QXJnOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgY2FzZSBXaWR0aEFyZzoKICAg
ICAgICAgb3V0LnByaW50KHdpZHRoKCkpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTaW1k
SW5mbzoKKyAgICAgICAgb3V0LnByaW50KCJTSU1EID0geyBzaWduRXh0ZW5kOiAiLCAodWludDhf
dCkgbV9zaWduRXh0ZW5kTW9kZSwgIiwgbGFuZUludGVycHJldGF0aW9uOiAiLCAodWludDhfdCkg
bV9sYW5lSW50ZXJwcmV0YXRpb24sICIgfSIpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5Niw2ICszMDAsOSBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnOjpLaW5kIGtpbmQpCiAgICAgY2Fz
ZSBBcmc6OldpZHRoQXJnOgogICAgICAgICBvdXQucHJpbnQoIldpZHRoQXJnIik7CiAgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIEFyZzo6U2ltZEluZm86CisgICAgICAgIG91dC5wcmludCgiU2lt
ZEluZm8iKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckFyZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAppbmRleCBmYmY2
NjM3YjI4NjAuLjhjMzNiYjZmNGI4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJBcmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFy
Zy5oCkBAIC05MCw3ICs5MCw5IEBAIHB1YmxpYzoKICAgICAgICAgV2lkdGhBcmcsCiAKICAgICAg
ICAgLy8gWmVyb1JlZyBpcyBpbnRlcnByZXRlZCBhcyBhIHplcm8gcmVnaXN0ZXIgaW4gQVJNNjQK
LSAgICAgICAgWmVyb1JlZworICAgICAgICBaZXJvUmVnLAorICAgICAgICAKKyAgICAgICAgU2lt
ZEluZm8KICAgICB9OwogICAgIAogICAgIGVudW0gVGVtcGVyYXR1cmUgOiBpbnQ4X3QgewpAQCAt
NDkyLDYgKzQ5NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIDogQXJnKEFpcjo6VG1wKHJlZykpCiAg
ICAgewogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgQXJnIHNpbWRJbmZvKFNpbWRMYW5lSW50ZXJw
cmV0YXRpb24gbGFuZUludGVycHJldGF0aW9uLCBTaW1kU2lnbkV4dGVuZE1vZGUgc2lnbkV4dGVu
ZE1vZGUpCisgICAgeworICAgICAgICBBcmcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5k
ID0gU2ltZEluZm87CisgICAgICAgIHJlc3VsdC5tX2xhbmVJbnRlcnByZXRhdGlvbiA9IGxhbmVJ
bnRlcnByZXRhdGlvbjsKKyAgICAgICAgcmVzdWx0Lm1fc2lnbkV4dGVuZE1vZGUgPSBzaWduRXh0
ZW5kTW9kZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICBzdGF0aWMgQXJn
IGltbShpbnQ2NF90IHZhbHVlKQogICAgIHsKQEAgLTYwNSw3ICs2MTYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCF3aWR0aCkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHNjYWxlID09IDEgfHwgc2NhbGUgPT0gYnl0ZXMoKndpZHRoKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc2NhbGUgPT0gMSB8fCBzY2FsZSA9PSBieXRlc0ZvcldpZHRoKCp3aWR0aCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6CkBA
IC05MDksNiArOTIwLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBpc1RtcCgp
IHx8IGlzU3RhY2soKTsKICAgICB9CisgICAgCisgICAgYm9vbCBpc1NpbWRJbmZvKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBraW5kKCkgPT0gU2ltZEluZm87CisgICAgfQogCiAgICAg
QWlyOjpUbXAgdG1wKCkgY29uc3QKICAgICB7CkBAIC05NDEsNiArOTU3LDggQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIHJldHVybiBCMzo6aXNSZXByZXNlbnRhYmxlQXM8aW50MzJfdD4odmFs
dWUpOwogICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgogICAgICAgICAgICAgICAgIHJldHVybiBC
Mzo6aXNSZXByZXNlbnRhYmxlQXM8aW50NjRfdD4odmFsdWUpOworICAgICAgICAgICAgY2FzZSBX
aWR0aDEyODoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjYXNlIFVu
c2lnbmVkOgpAQCAtOTUzLDYgKzk3MSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1
cm4gQjM6OmlzUmVwcmVzZW50YWJsZUFzPHVpbnQzMl90Pih2YWx1ZSk7CiAgICAgICAgICAgICBj
YXNlIFdpZHRoNjQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEIzOjppc1JlcHJlc2VudGFibGVB
czx1aW50NjRfdD4odmFsdWUpOworICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTk3Myw2ICs5OTMsOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsKICAg
ICAgICAgICAgIGNhc2UgV2lkdGg2NDoKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50NjRfdD4odmFsdWUpOworICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGNhc2UgVW5zaWduZWQ6CkBAIC05ODUsNiArMTAwNyw4
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHZhbHVlKTsKICAgICAgICAgICAgIGNhc2UgV2lkdGg2NDoKICAgICAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKTsKKyAgICAgICAgICAgIGNhc2UgV2lkdGgx
Mjg6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEwOTUsNiArMTExOSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFRtcDoKICAg
ICAgICAgICAgIHJldHVybiBpc0dQVG1wKCk7CisgICAgICAgIGNhc2UgU2ltZEluZm86CiAgICAg
ICAgIGNhc2UgSW52YWxpZDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpA
QCAtMTExNiw2ICsxMTQxLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAg
ICAgICBjYXNlIEludmFsaWQ6CiAgICAgICAgIGNhc2UgWmVyb1JlZzoKKyAgICAgICAgY2FzZSBT
aW1kSW5mbzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBTaW1wbGVB
ZGRyOgogICAgICAgICBjYXNlIEFkZHI6CkBAIC0xMjYyLDYgKzEyODgsOCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRTY2FsZWRVSW1tMTI8MzI+KG9mZnNldCk7CiAg
ICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRT
Y2FsZWRVSW1tMTI8NjQ+KG9mZnNldCk7CisgICAgICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzA4LDYgKzEzMzYsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGNhc2UgWmVyb1JlZzoKICAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAgICBjYXNlIEV4
dGVuZGVkT2Zmc2V0QWRkcjoKKyAgICAgICAgY2FzZSBTaW1kSW5mbzoKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICBjYXNlIEFkZHI6CiAgICAgICAgIGNhc2UgU3RhY2s6CkBAIC0x
NDc4LDYgKzE1MDcsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFj
cm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbj4obV9vZmZzZXQpOwogICAgIH0KICAgICAKKyAg
ICBTaW1kTGFuZUludGVycHJldGF0aW9uIGxhbmVJbnRlcnByZXRhdGlvbigpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQoaXNTaW1kSW5mbygpKTsKKyAgICAgICAgcmV0dXJuIG1fbGFuZUlu
dGVycHJldGF0aW9uOworICAgIH0KKyAgICAKKyAgICBTaW1kU2lnbkV4dGVuZE1vZGUgc2lnbkV4
dGVuZE1vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU2ltZEluZm8oKSk7Cisg
ICAgICAgIHJldHVybiBtX3NpZ25FeHRlbmRNb2RlOworICAgIH0KKyAgICAKICAgICAvLyBUZWxs
cyB5b3UgaWYgdGhlIEFyZyBpcyBpbnZlcnRpYmxlLiBPbmx5IGNvbmRpdGlvbiBhcmd1bWVudHMg
YXJlIGludmVydGlibGUsIGFuZCBldmVuIGZvciB0aG9zZSwgdGhlcmUKICAgICAvLyBhcmUgYSBm
ZXcgZXhjZXB0aW9ucyAtIG5vdGFibHkgT3ZlcmZsb3cgYW5kIFNpZ25lZC4KICAgICBib29sIGlz
SW52ZXJ0aWJsZSgpIGNvbnN0CkBAIC0xNTYwLDYgKzE2MDEsOCBAQCBwcml2YXRlOgogICAgIGlu
dDMyX3QgbV9zY2FsZSB7IDEgfTsKICAgICBBaXI6OlRtcCBtX2Jhc2U7CiAgICAgQWlyOjpUbXAg
bV9pbmRleDsKKyAgICBTaW1kTGFuZUludGVycHJldGF0aW9uIG1fbGFuZUludGVycHJldGF0aW9u
OworICAgIFNpbWRTaWduRXh0ZW5kTW9kZSBtX3NpZ25FeHRlbmRNb2RlOwogfTsKIAogc3RydWN0
IEFyZ0hhc2ggewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
Q2FsbFNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNw
ZWNpYWwuY3BwCmluZGV4IDhmZTBhYWU5N2I0NS4uNGRjZmZhZTAzMzJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwCkBAIC0zNyw3ICsz
Nyw3IEBAIENDYWxsU3BlY2lhbDo6Q0NhbGxTcGVjaWFsKCkKICAgICBtX2Nsb2JiZXJlZFJlZ3Mg
PSBSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9jbG9iYmVyZWRSZWdzLmV4Y2x1
ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOwogICAgIG1fY2xvYmJlcmVkUmVncy5l
eGNsdWRlKFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgIG1f
Y2xvYmJlcmVkUmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkp
OworICAgIG1fY2xvYmJlcmVkUmVncy5zZXQoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3Rl
cnMoKSk7IC8vIFRPRE8KICAgICBtX2Nsb2JiZXJlZFJlZ3MuY2xlYXIoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOwogICAgIG1fY2xvYmJlcmVkUmVncy5jbGVhcihHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUjIpOwogICAgIG1fY2xvYmJlcmVkUmVncy5jbGVhcihGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQ
Uik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsaW5n
Q29udmVudGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsaW5n
Q29udmVudGlvbi5jcHAKaW5kZXggZDIzZWExYjRlZjMyLi40NjY1M2RhNjA4MDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsaW5nQ29udmVudGlv
bi5jcHAKQEAgLTk5LDYgKzk5LDcgQEAgVG1wIGNDYWxsUmVzdWx0KFR5cGUgdHlwZSkKICAgICBj
YXNlIEZsb2F0OgogICAgIGNhc2UgRG91YmxlOgogICAgICAgICByZXR1cm4gVG1wKEZQUkluZm86
OnJldHVyblZhbHVlRlBSKTsKKyAgICBjYXNlIFYxMjg6CiAgICAgY2FzZSBUdXBsZToKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJFbWl0U2h1ZmZsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVt
aXRTaHVmZmxlLmNwcAppbmRleCA1YzI3YjRlYmY5N2IuLmY4MzAxYWRiMTYzNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewog
bmFtZXNwYWNlIHsKIAogbmFtZXNwYWNlIEFpckVtaXRTaHVmZmxlSW50ZXJuYWwgewotc3RhdGlj
IGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCB2
ZXJib3NlID0gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRm9ybVRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZvcm1UYWJsZS5oCmluZGV4IDZhNDJkMmVlYmQ1ZS4u
MDE3ZmM2N2ZiNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckZvcm1UYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRm9ybVRh
YmxlLmgKQEAgLTM2LDEyICszNiwxMiBAQCBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgZm9ybVJv
bGVNYXNrID0gMTU7CiBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgZm9ybUJhbmtTaGlmdCA9IDQ7
CiBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgZm9ybUJhbmtNYXNrID0gMTsKIHN0YXRpYyBjb25z
dGV4cHIgdWludDhfdCBmb3JtV2lkdGhTaGlmdCA9IDU7Ci1zdGF0aWMgY29uc3RleHByIHVpbnQ4
X3QgZm9ybVdpZHRoTWFzayA9IDM7Ci1zdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgZm9ybUludmFs
aWRTaGlmdCA9IDc7CitzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgZm9ybVdpZHRoTWFzayA9IDQ7
CitzdGF0aWMgY29uc3RleHByIHVpbnQxNl90IGZvcm1JbnZhbGlkU2hpZnQgPSA4OwogCiAjZGVm
aW5lIEVOQ09ERV9JTlNUX0ZPUk0ocm9sZSwgYmFuaywgd2lkdGgpIChzdGF0aWNfY2FzdDx1aW50
OF90Pihyb2xlKSA8PCBmb3JtUm9sZVNoaWZ0IHwgc3RhdGljX2Nhc3Q8dWludDhfdD4oYmFuaykg
PDwgZm9ybUJhbmtTaGlmdCB8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHdpZHRoKSA8PCBmb3JtV2lk
dGhTaGlmdCkKIAotI2RlZmluZSBJTlZBTElEX0lOU1RfRk9STSAoMSA8PCBmb3JtSW52YWxpZFNo
aWZ0KQorI2RlZmluZSBJTlZBTElEX0lOU1RfRk9STSAoMCkKIAogSlNfRVhQT1JUX1BSSVZBVEUg
ZXh0ZXJuIGNvbnN0IHVpbnQ4X3QgZ19mb3JtVGFibGVbXTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckhlbHBlcnMuaAppbmRleCA5MDcwNDEzY2JlZGUuLmFiZDdmMDU2NTg1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIZWxwZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIZWxwZXJzLmgKQEAgLTQzLDYgKzQz
LDggQEAgaW5saW5lIEFpcjo6T3Bjb2RlIG1vdmVGb3JUeXBlKFR5cGUgdHlwZSkKICAgICAgICAg
cmV0dXJuIE1vdmVGbG9hdDsKICAgICBjYXNlIERvdWJsZToKICAgICAgICAgcmV0dXJuIE1vdmVE
b3VibGU7CisgICAgY2FzZSBWMTI4OgorICAgICAgICByZXR1cm4gTW92ZVZlY3RvcjsKICAgICBj
YXNlIFZvaWQ6CiAgICAgY2FzZSBUdXBsZToKICAgICAgICAgYnJlYWs7CkBAIC03Nyw2ICs3OSw4
IEBAIGlubGluZSBBaXI6Ok9wY29kZSByZWxheGVkTW92ZUZvclR5cGUoVHlwZSB0eXBlKQogICAg
ICAgICByZXR1cm4gTW92ZUZsb2F0OwogICAgIGNhc2UgRG91YmxlOgogICAgICAgICByZXR1cm4g
TW92ZURvdWJsZTsKKyAgICBjYXNlIFYxMjg6CisgICAgICAgIHJldHVybiBNb3ZlVmVjdG9yOwog
ICAgIGNhc2UgVm9pZDoKICAgICBjYXNlIFR1cGxlOgogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNw
cAppbmRleCAyMjFhZTczYTFjYjUuLjMyODYxOTgwMzFiMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcApAQCAtMTMy
LDcgKzEzMiw3IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiAgICAgICAg
ICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICAgICAgU3RhY2tTbG90KiYgc2xvdCA9IHNs
b3RzW2JhbmtdW2ldOwogICAgICAgICAgICAgICAgIGlmICghc2xvdCkKLSAgICAgICAgICAgICAg
ICAgICAgc2xvdCA9IGNvZGUuYWRkU3RhY2tTbG90KGJ5dGVzKGNvbnNlcnZhdGl2ZVdpZHRoKGJh
bmspKSwgU3RhY2tTbG90S2luZDo6U3BpbGwpOworICAgICAgICAgICAgICAgICAgICBzbG90ID0g
Y29kZS5hZGRTdGFja1Nsb3QoYnl0ZXNGb3JXaWR0aChjb25zZXJ2YXRpdmVXaWR0aChiYW5rKSks
IFN0YWNrU2xvdEtpbmQ6OlNwaWxsKTsKICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBBcmc6
OnN0YWNrKHNsb3RzW2JhbmtdW2ldKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTgw
LDcgKzE4MCw3IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiAKICAgICAg
ICAgICAgICAgICBSZWdpc3RlclNldCBsaXZlUmVncyA9IHVzZWRSZWdpc3RlcnMuZ2V0KCZpbnN0
KTsKICAgICAgICAgICAgICAgICBSZWdpc3RlclNldCByZWdzVG9TYXZlID0gbGl2ZVJlZ3M7Ci0g
ICAgICAgICAgICAgICAgcmVnc1RvU2F2ZS5leGNsdWRlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZl
UmVnaXN0ZXJzKCkpOworLy8gICAgICAgICAgICAgICAgcmVnc1RvU2F2ZS5leGNsdWRlKFJlZ2lz
dGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOyAvLyBUT0RPCiAgICAgICAgICAgICAgICAg
cmVnc1RvU2F2ZS5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKICAgICAg
ICAgICAgICAgICByZWdzVG9TYXZlLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdh
cmVSZWdpc3RlcnMoKSk7CiAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIGxvd2VyQWZ0ZXJSZWdB
bGxvYyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgQXJnIGFyZyh0bXApOwog
ICAgICAgICAgICAgICAgICAgICAgICAgV2lkdGggd2lkdGggPSBjb25zZXJ2YXRpdmVXaWR0aChh
cmcuYmFuaygpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWNrU2xvdCogc3RhY2tTbG90
ID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLmFkZFN0YWNrU2xvdChieXRlcyh3
aWR0aCksIFN0YWNrU2xvdEtpbmQ6OlNwaWxsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb2RlLmFkZFN0YWNrU2xvdChieXRlc0ZvcldpZHRoKHdpZHRoKSwgU3RhY2tTbG90S2luZDo6
U3BpbGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgcGFpcnMuYXBwZW5kKFNodWZmbGVQYWly
KGFyZywgQXJnOjpzdGFjayhzdGFja1Nsb3QpLCB3aWR0aCkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhY2tTbG90cy5hcHBlbmQoc3RhY2tTbG90KTsKICAgICAgICAgICAgICAgICAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyTWFj
cm9zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJNYWNyb3MuY3Bw
CmluZGV4IDg1MTgwZTMyNTY1Mi4uYTdiNmJiYjhiMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyTWFjcm9zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyTWFjcm9zLmNwcApAQCAtMTE0LDYgKzExNCw5IEBAIHZv
aWQgbG93ZXJNYWNyb3MoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICBjYXNlIEludDY0Ogog
ICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCArIDEsIE1v
dmUsIHZhbHVlLCByZXN1bHQsIHJlc3VsdERzdCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgVjEyODoKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0Lmluc2VydChpbnN0SW5kZXggKyAxLCBNb3ZlVmVjdG9yLCB2YWx1ZSwgcmVzdWx0LCBy
ZXN1bHREc3QpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpckxvd2VyU3RhY2tBcmdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyTG93ZXJTdGFja0FyZ3MuY3BwCmluZGV4IDA1NTc0ODkxMjI2ZS4uMjcxNjI0NzBhMWUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyU3RhY2tBcmdz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyU3RhY2tBcmdz
LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgbG93ZXJTdGFja0FyZ3MoQ29kZSYgY29kZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWNrU2xvdCogc2xvdCA9IGFyZy5zdGFja1Nsb3Qo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcmc6OmlzWkRlZihyb2xlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICYmIHNsb3QtPmtpbmQoKSA9PSBTdGFja1Nsb3RLaW5kOjpT
cGlsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHNsb3QtPmJ5dGVTaXplKCkgPiBi
eXRlcyh3aWR0aCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzbG90LT5ieXRl
U2l6ZSgpID4gYnl0ZXNGb3JXaWR0aCh3aWR0aCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBoYW5kbGUgdGhpcyBzaW1wbGUgY2FzZSBiZWNhdXNl
IGl0J3MgdGhlIG9ubHkgb25lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBh
cmlzZXM6IFpEZWYncyBhcmUgb25seSAzMi1iaXQgcmlnaHQgbm93LiBTbywgd2hlbiB3ZSBoaXQg
dGhlc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3NlcnRpb25zIGl0IG1lYW5z
IHRoYXQgd2UgbmVlZCB0byBpbXBsZW1lbnQgdGhvc2Ugb3RoZXIga2luZHMgb2YKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IDg0ZmJlMTI4
OWYzNC4uMTA5NTBmMTBkY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyT3Bjb2RlLm9wY29kZXMKQEAgLTEwNyw2ICsxMDcsOCBAQAogCiBOb3AKIAorQnJlYWtwb2lu
dCAvZWZmZWN0cworCiBBZGQzMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIEltbSwgVG1w
LCBUbXAKICAgICBUbXAsIFRtcCwgVG1wCkBAIC03NDAsNiArNzQyLDEzIEBAIE1vdmVEb3VibGUg
VTpGOjY0LCBEOkY6NjQKIAogTW92ZURvdWJsZSBVOkY6NjQsIEQ6Rjo2NCwgUzpGOjY0CiAgICAg
QWRkciwgQWRkciwgVG1wCisgICAgCitNb3ZlVmVjdG9yIFU6Rjo2NCwgRDpGOjY0CisgICAgVG1w
LCBUbXAKKyAgICBBZGRyLCBUbXAgYXMgbG9hZERvdWJsZQorICAgIEluZGV4LCBUbXAgYXMgbG9h
ZERvdWJsZQorICAgIFRtcCwgQWRkciBhcyBzdG9yZURvdWJsZQorICAgIFRtcCwgSW5kZXggYXMg
c3RvcmVEb3VibGUKIAogTW92ZVplcm9Ub0RvdWJsZSBEOkY6NjQKICAgICBUbXAKQEAgLTE2MTUs
NiArMTYyNCwxMiBAQCBSZXRGbG9hdCBVOkY6MzIgL3JldHVybgogUmV0RG91YmxlIFU6Rjo2NCAv
cmV0dXJuCiAgICAgVG1wCiAKK1JlcGxhY2VMYW5lIFU6RzpQdHIsIFU6Rzo4LCBVOkc6NjQsIFVE
OkY6MTI4CisgICAgU2ltZEluZm8sIEltbSwgVG1wLCBUbXAKKyAgICAKK0V4dHJhY3RMYW5lIFU6
RzpQdHIsIFU6Rzo4LCBVOkY6MTI4LCBEOkc6NjQKKyAgICBTaW1kSW5mbywgSW1tLCBUbXAsIFRt
cAorCiBPb3BzIC90ZXJtaW5hbAogCiAjIFRoaXMgaXMgYSB0ZXJtaW5hbCBidXQgd2UgZXhwcmVz
cyBpdCBhcyBhIEN1c3RvbSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgaXQgdG8gaGF2ZSBhIGNvZGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRv
ci5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgpp
bmRleCAwNTVjMDVhMGEzYzguLmY4MDc5NTNiZjMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgpAQCAtMjI5LDcgKzIyOSw3IEBAIGRl
ZiBpc0dGKHRva2VuKQogZW5kCiAKIGRlZiBpc0tpbmQodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xB
KChUbXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02NCl8KFplcm9SZWcpfChTaW1w
bGVBZGRyKXwoQWRkcil8KEV4dGVuZGVkT2Zmc2V0QWRkcil8KEluZGV4KXwoUHJlSW5kZXgpfChQ
b3N0SW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERvdWJsZUNvbmQpfChTdGF0dXNDb25kKSlc
Wi8KKyAgICB0b2tlbiA9fiAvXEEoKFRtcCl8KEltbSl8KEJpZ0ltbSl8KEJpdEltbSl8KEJpdElt
bTY0KXwoWmVyb1JlZyl8KFNpbXBsZUFkZHIpfChBZGRyKXwoRXh0ZW5kZWRPZmZzZXRBZGRyKXwo
SW5kZXgpfChQcmVJbmRleCl8KFBvc3RJbmRleCl8KFJlbENvbmQpfChSZXNDb25kKXwoRG91Ymxl
Q29uZCl8KFN0YXR1c0NvbmQpfChTaW1kSW5mbykpXFovCiBlbmQKIAogZGVmIGlzQXJjaCh0b2tl
bikKQEAgLTIzNyw3ICsyMzcsNyBAQCBkZWYgaXNBcmNoKHRva2VuKQogZW5kCiAKIGRlZiBpc1dp
ZHRoKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgoOCl8KDE2KXwoMzIpfCg2NCl8KFB0cikpXFov
CisgICAgdG9rZW4gPX4gL1xBKCg4KXwoMTYpfCgzMil8KDY0KXwoUHRyKXwoMTI4KSlcWi8KIGVu
ZAogCiBkZWYgaXNLZXl3b3JkKHRva2VuKQpAQCAtMzEwLDcgKzMxMCw3IEBAIGNsYXNzIFBhcnNl
cgogCiAgICAgZGVmIGNvbnN1bWVXaWR0aAogICAgICAgICByZXN1bHQgPSB0b2tlbi5zdHJpbmcK
LSAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQgd2lkdGggKDgsIDE2LCAzMiwgb3IgNjQpIikg
dW5sZXNzIGlzV2lkdGgocmVzdWx0KQorICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCB3aWR0
aCAoOCwgMTYsIDMyLCA2NCwgb3IgMTI4KSIpIHVubGVzcyBpc1dpZHRoKHJlc3VsdCkKICAgICAg
ICAgYWR2YW5jZQogICAgICAgICByZXN1bHQKICAgICBlbmQKQEAgLTk0MSw2ICs5NDEsNyBAQCB3
cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICB3aGVuICJEb3VibGVD
b25kIgogICAgICAgICAgICAgICAgIHdoZW4gIlN0YXR1c0NvbmQiCiAgICAgICAgICAgICAgICAg
d2hlbiAiWmVyb1JlZyIKKyAgICAgICAgICAgICAgICB3aGVuICJTaW1kSW5mbyIKICAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVkIGtpbmQ6
ICN7a2luZC5uYW1lfSIKICAgICAgICAgICAgICAgICBlbmQKQEAgLTEyNTMsNiArMTI1NCw4IEBA
IHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgICAgICBvdXRwLnBy
aW50ICJhcmdzWyN7aW5kZXh9XS5hc0RvdWJsZUNvbmRpdGlvbigpIgogICAgICAgICAgICAgICAg
IHdoZW4gIlN0YXR1c0NvbmQiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3Nb
I3tpbmRleH1dLmFzU3RhdHVzQ29uZGl0aW9uKCkiCisgICAgICAgICAgICAgICAgd2hlbiAiU2lt
ZEluZm8iCisgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmxh
bmVJbnRlcnByZXRhdGlvbigpLCBhcmdzWyN7aW5kZXh9XS5zaWduRXh0ZW5kTW9kZSgpIgogICAg
ICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAppbmRleCA1YmY2N2I2MWI2MmIuLmRi
M2NjZDQ0NjdjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlRHVtcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVEdW1wZXIuY3BwCkBAIC04Niw2ICs4Niw4IEBAIGludCBCeXRlY29kZUR1bXBlcjxCbG9j
az46Om91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQp
CiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KIENTdHJpbmcgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpj
b25zdGFudE5hbWUoVmlydHVhbFJlZ2lzdGVyIHJlZykgY29uc3QKIHsKKyAgICBpZiAocmVnLnRv
Q29uc3RhbnRJbmRleCgpID49IChpbnQpIGJsb2NrKCktPmNvbnN0YW50UmVnaXN0ZXJzKCkuc2l6
ZSgpKQorICAgICAgICByZXR1cm4gdG9DU3RyaW5nKCJJTlZBTElEX0NPTlNUQU5UKCIsIHJlZywg
IikiKTsKICAgICBhdXRvIHZhbHVlID0gYmxvY2soKS0+Z2V0Q29uc3RhbnQocmVnKTsKICAgICBy
ZXR1cm4gdG9DU3RyaW5nKHZhbHVlLCAiKCIsIHJlZywgIikiKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGI5NjJiMjhjZTYyZi4u
ZmQ0NjUwOTY3ZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIKQEAgLTE1MjIsNiArMTUyMiw3IEBAIG9wIDp3aWRlMzIKIAogb3AgOmVudGVy
CiBvcCA6bm9wCitvcCA6YnJlYWsKIG9wIDpsb29wX2hpbnQKIAogb3AgOm1vdiwKQEAgLTE2NzYs
MTQgKzE2NzcsMTQgQEAgb3AgOmNhbGwsCiAgICAgYXJnczogewogICAgICAgICBmdW5jdGlvbklu
ZGV4OiB1bnNpZ25lZCwKICAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAotICAgICAgICBu
dW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCisgICAgICAgIHNpemVPZlN0YWNrQXJnczogdW5z
aWduZWQsCiAgICAgfQogCiBvcCA6Y2FsbF9ub190bHMsCiAgICAgYXJnczogewogICAgICAgICBm
dW5jdGlvbkluZGV4OiB1bnNpZ25lZCwKICAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAot
ICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCisgICAgICAgIHNpemVPZlN0YWNr
QXJnczogdW5zaWduZWQsCiAgICAgfQogCiBvcCA6Y2FsbF9pbmRpcmVjdCwKQEAgLTE2OTEsNyAr
MTY5Miw3IEBAIG9wIDpjYWxsX2luZGlyZWN0LAogICAgICAgICBmdW5jdGlvbkluZGV4OiBWaXJ0
dWFsUmVnaXN0ZXIsCiAgICAgICAgIHNpZ25hdHVyZUluZGV4OiB1bnNpZ25lZCwKICAgICAgICAg
c3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAotICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWdu
ZWQsCisgICAgICAgIHNpemVPZlN0YWNrQXJnczogdW5zaWduZWQsCiAgICAgICAgIHRhYmxlSW5k
ZXg6IHVuc2lnbmVkLAogICAgIH0KIApAQCAtMTcwMCw3ICsxNzAxLDcgQEAgb3AgOmNhbGxfaW5k
aXJlY3Rfbm9fdGxzLAogICAgICAgICBmdW5jdGlvbkluZGV4OiBWaXJ0dWFsUmVnaXN0ZXIsCiAg
ICAgICAgIHNpZ25hdHVyZUluZGV4OiB1bnNpZ25lZCwKICAgICAgICAgc3RhY2tPZmZzZXQ6IHVu
c2lnbmVkLAotICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCisgICAgICAgIHNp
emVPZlN0YWNrQXJnczogdW5zaWduZWQsCiAgICAgICAgIHRhYmxlSW5kZXg6IHVuc2lnbmVkLAog
ICAgIH0KIApAQCAtMTcwOSw3ICsxNzEwLDcgQEAgb3AgOmNhbGxfcmVmLAogICAgICAgICBmdW5j
dGlvblJlZmVyZW5jZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBzaWduYXR1cmVJbmRleDog
dW5zaWduZWQsCiAgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKLSAgICAgICAgbnVtYmVy
T2ZTdGFja0FyZ3M6IHVuc2lnbmVkLAorICAgICAgICBzaXplT2ZTdGFja0FyZ3M6IHVuc2lnbmVk
LAogICAgIH0KIAogb3AgOmNhbGxfcmVmX25vX3RscywKQEAgLTE3MTcsNyArMTcxOCw3IEBAIG9w
IDpjYWxsX3JlZl9ub190bHMsCiAgICAgICAgIGZ1bmN0aW9uUmVmZXJlbmNlOiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgICAgIHNpZ25hdHVyZUluZGV4OiB1bnNpZ25lZCwKICAgICAgICAgc3RhY2tP
ZmZzZXQ6IHVuc2lnbmVkLAotICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCisg
ICAgICAgIHNpemVPZlN0YWNrQXJnczogdW5zaWduZWQsCiAgICAgfQogCiBvcCA6Y3VycmVudF9t
ZW1vcnksCkBAIC0xODkxLDUgKzE4OTIsMTYgQEAgb3BfZ3JvdXAgOkNhdGNoQWxsLAogICAgIGFy
Z3M6IHsKICAgICAgICAgZXhjZXB0aW9uOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfQorICAgIAor
c2ltZF9vcF9ncm91cCA6U2ltZExhbmUsCisgICAgWworICAgICAgICA6c2ltZF9leHRyYWN0X2xh
bmUsCisgICAgXSwKKyAgICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAor
ICAgICAgICBsYW5lOiB1bnNpZ25lZCwKKyAgICAgICAgdjogVmlydHVhbFJlZ2lzdGVyLAorICAg
IH0sCisgICAgbWFrZVNpZ25lZFZhcmlhbnRzOiB0cnVlCiAKIGVuZF9zZWN0aW9uIDpXYXNtCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21t
b24uaAppbmRleCBkYmEwZmUzMjJiZjguLjk2OGI1NjgxOTcxMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCkBAIC01NSw2
ICs1NSw3IEBAIHZvaWQgYWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGVyVGh1bmso
TWFjcm9Bc3NlbWJsZXImIGppdCwgVk0mIHZtLCBKSVRUCiAgICAgICAgIHJlZ2lzdGVyc1RvUHJl
c2VydmUubWVyZ2UoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICB9
CiAKKyAgICBBU1NFUlQoIXJlZ2lzdGVyc1RvUHJlc2VydmUubnVtYmVyT2ZTZXRGUFJzKCkpOwog
ICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZih2b2lkKikgKiByZWdpc3RlcnNUb1ByZXNl
cnZlLm51bWJlck9mU2V0R1BScygpOwogICAgIGlmIChpc0ZUTE9TUkV4aXQpCiAgICAgICAgIHNj
cmF0Y2hTaXplICs9IHNpemVvZih2b2lkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1RodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5jcHAKaW5kZXggMGM0ZDE5NWQ5MTQ4Li41YmYzODg2NGU4MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUo
REZHX0pJVCkKIAogI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgiCisjaW5jbHVk
ZSAiQjNXaWR0aC5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkRGR0pJ
VENvZGUuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCkBAIC00Nyw3ICs0OCw3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdEdlbmVyYXRpb25UaHVua0dl
bmVyYXRvcihWTSYgdm0pCiAgICAgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlIHdlIHVz
ZSB0aGUgc2NyYXRjaCBidWZmZXIgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGFsc28gdXNlcyB0aGUg
c2NyYXRjaCBidWZmZXIuCiAgICAgYWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGVy
VGh1bms8REZHOjpKSVRDb2RlPihqaXQsIHZtLCBKSVRUeXBlOjpERkdKSVQpOwogICAgIAotICAg
IHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgc2l6
ZV90IHNjcmF0Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIEdQUkluZm86Om51bWJl
ck9mUmVnaXN0ZXJzICsgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIz
OjpGUCkpICogRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7CiAgICAgU2NyYXRjaEJ1ZmZlciog
c2NyYXRjaEJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNjcmF0Y2hTaXplKTsKICAg
ICBFbmNvZGVkSlNWYWx1ZSogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihz
Y3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpOwogCkBAIC04NCw4ICs4NSw4IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVy
YXRvcihWTSYgdm0pCiAgICAgc3RvcmVTcG9vbGVyLmZpbmFsaXplR1BSKCk7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewot
ICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsg
aSkgKiBzaXplb2YoZG91YmxlKTsKLSAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3JlRlBSKHsgRlBS
SW5mbzo6dG9SZWdpc3RlcihpKSwgb2Zmc2V0IH0pOworICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0
ID0gKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSAqIEIzOjpieXRlc0ZvcldpZHRoKEIz
Ojpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSAvIDgpICogc2l6ZW9mKGRvdWJsZSk7CisgICAg
ICAgIHN0b3JlU3Bvb2xlci5zdG9yZUZQUih7IEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIG9mZnNl
dCB9LCBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOwog
ICAgIH0KICAgICBzdG9yZVNwb29sZXIuZmluYWxpemVGUFIoKTsKIApAQCAtMTA1LDggKzEwNiw4
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdEdlbmVyYXRp
b25UaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgbG9hZFNwb29sZXIuZmluYWxpemVHUFIoKTsK
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVy
czsgKytpKSB7Ci0gICAgICAgIHB0cmRpZmZfdCBvZmZzZXQgPSAoR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnMgKyBpKSAqIHNpemVvZihkb3VibGUpOwotICAgICAgICBsb2FkU3Bvb2xlci5sb2Fk
RlBSKHsgRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgb2Zmc2V0IH0pOworICAgICAgICBwdHJkaWZm
X3Qgb2Zmc2V0ID0gKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSAqIEIzOjpieXRlc0Zv
cldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSAvIDgpICogc2l6ZW9mKGRvdWJs
ZSk7CisgICAgICAgIGxvYWRTcG9vbGVyLmxvYWRGUFIoeyBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkp
LCBvZmZzZXQgfSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpG
UCkpKTsKICAgICB9CiAgICAgbG9hZFNwb29sZXIuZmluYWxpemVGUFIoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5j
cHAKaW5kZXggOGQ0ZDEyOTUxNWQ2Li5iYWMyZjE4YjczNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcApAQCAt
NzQsNiArNzQsOCBAQCBzdGF0aWMgY29uc3QgT3Bjb2RlR3JvdXBJbml0aWFsaXplciBvcGNvZGVH
cm91cExpc3RbXSA9IHsKICAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgwYiwgQTY0RE9wY29kZUFk
ZFN1YnRyYWN0U2hpZnRlZFJlZ2lzdGVyKSwKICAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgwYywg
QTY0RE9wY29kZUxvYWRTdG9yZVJlZ2lzdGVyUGFpciksCiAgICAgT1BDT0RFX0dST1VQX0VOVFJZ
KDB4MGQsIEE2NERPcGNvZGVMb2FkU3RvcmVSZWdpc3RlclBhaXIpLAorICAgIE9QQ09ERV9HUk9V
UF9FTlRSWSgweDBlLCBBNjRET3Bjb2RlVmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsMVNvdXJj
ZSksCisgICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MGUsIEE2NERPcGNvZGVWZWN0b3JEYXRhUHJv
Y2Vzc2luZ0xvZ2ljYWwyU291cmNlKSwKICAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxMSwgQTY0
RE9wY29kZUFkZFN1YnRyYWN0SW1tZWRpYXRlKSwKICAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgx
MiwgQTY0RE9wY29kZU1vdmVXaWRlKSwKICAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxMiwgQTY0
RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGUpLApAQCAtMTY0Myw2ICsxNjQ1LDU2IEBAIGNvbnN0IGNo
YXIqIEE2NERPcGNvZGVVbmNvbmRpdGlvbmFsQnJhbmNoUmVnaXN0ZXI6OmZvcm1hdCgpCiAgICAg
cmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCitjb25zdCBjaGFyKiBBNjRET3Bjb2RlVmVjdG9y
RGF0YVByb2Nlc3NpbmdMb2dpY2FsMVNvdXJjZTo6Zm9ybWF0KCkKK3sKKyAgICBhcHBlbmRJbnN0
cnVjdGlvbk5hbWUob3BOYW1lKCkpOworICAgIGFwcGVuZFNpbWRMYW5lSW5kZXhBbmRUeXBlKChx
KCkgPDwgNikgfCBpbW01KCkpOworICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgIGFwcGVuZFJl
Z2lzdGVyTmFtZShyZCgpKTsKKyAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICBhcHBlbmRSZWdp
c3Rlck5hbWUocnQoKSk7CisgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgcmV0dXJuIG1fZm9y
bWF0QnVmZmVyOworfQorCitjb25zdCBjaGFyKiBBNjRET3Bjb2RlVmVjdG9yRGF0YVByb2Nlc3Np
bmdMb2dpY2FsMVNvdXJjZTo6b3BOYW1lKCkKK3sKKyAgICBzd2l0Y2ggKG9wMTBfMTUoKSkgewor
ICAgIGNhc2UgMGIwMDAxMTE6CisgICAgICAgIHJldHVybiAiaW5zIjsKKyAgICBjYXNlIDBiMDAx
MTExOgorICAgICAgICByZXR1cm4gInVtb3YiOworICAgIGRlZmF1bHQ6CisgICAgICAgIGRhdGFM
b2dMbigiRGlzc2Fzc2VtYmxlciBzYXcgdW5rbm93biBzaW1kIG9uZSBzb3VyY2UgaW5zdHJ1Y3Rp
b24gb3Bjb2RlICIsIG9wMTBfMTUoKSk7CisgICAgICAgIHJldHVybiAiU0lNRFVLIjsKKyAgICB9
Cit9CisKK2NvbnN0IGNoYXIqIEE2NERPcGNvZGVWZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwy
U291cmNlOjpmb3JtYXQoKQoreworICAgIGFwcGVuZEluc3RydWN0aW9uTmFtZShvcE5hbWUoKSk7
CisgICAgYXBwZW5kU2ltZExhbmVUeXBlKHEoKSk7CisgICAgYXBwZW5kU2VwYXJhdG9yKCk7Cisg
ICAgYXBwZW5kUmVnaXN0ZXJOYW1lKHJkKCkpOworICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAg
IGFwcGVuZFJlZ2lzdGVyTmFtZShybigpKTsKKyAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICBh
cHBlbmRSZWdpc3Rlck5hbWUocm0oKSk7CisgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgcmV0
dXJuIG1fZm9ybWF0QnVmZmVyOworfQorCitjb25zdCBjaGFyKiBBNjRET3Bjb2RlVmVjdG9yRGF0
YVByb2Nlc3NpbmdMb2dpY2FsMlNvdXJjZTo6b3BOYW1lKCkKK3sKKyAgICBzd2l0Y2ggKG9wMTBf
MTUoKSkgeworICAgIGNhc2UgMGIwMDExMToKKyAgICAgICAgcmV0dXJuICJvcnIiOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGRhdGFMb2dMbigiRGlzc2Fzc2VtYmxlciBzYXcgdW5rbm93biBzaW1k
IDIgc291cmNlIGluc3RydWN0aW9uIG9wY29kZSAiLCBvcDEwXzE1KCkpOworICAgICAgICByZXR1
cm4gIlNJTURVSyI7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QVJNNjREaXNh
c3NlbWJsZXIKIAogI2VuZGlmIC8vIEVOQUJMRShBUk02NF9ESVNBU1NFTUJMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5o
CmluZGV4IGZhZmViZWE2NzE4Ni4uMWZiYWQ5MWZhNTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaApAQCAtMTk0LDYg
KzE5NCw0MSBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBidWZmZXJQcmludGYoImxzbCAj
JXUiLCAxNiAqIGFtb3VudCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kU2ltZExhbmVJ
bmRleEFuZFR5cGUodW5zaWduZWQgaW1tNikKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGxhbmUg
PSAwOworICAgICAgICBpZiAoKGltbTYgJiAwYjEwMDAwMSkgPT0gMGIwMDAwMDEpIHsKKyAgICAg
ICAgICAgIGJ1ZmZlclByaW50ZigiLjhCIik7CisgICAgICAgICAgICBsYW5lID0gKChpbW02ICYg
MGIwMTExMTApID4+IDEpOworICAgICAgICB9IGVsc2UgaWYgKChpbW02ICYgMGIxMDAwMDEpID09
IDBiMDAwMDAxKSB7CisgICAgICAgICAgICBidWZmZXJQcmludGYoIi4xNkIiKTsKKyAgICAgICAg
ICAgIGxhbmUgPSAoKGltbTYgJiAwYjAxMTExMCkgPj4gMSk7CisgICAgICAgIH0gZWxzZSBpZiAo
KGltbTYgJiAwYjEwMDAxMSkgPT0gMGIwMDAwMTApIHsKKyAgICAgICAgICAgIGJ1ZmZlclByaW50
ZigiLkgiKTsKKyAgICAgICAgICAgIGxhbmUgPSAoKGltbTYgJiAwYjAxMTEwMCkgPj4gMik7Cisg
ICAgICAgIH0gZWxzZSBpZiAoKGltbTYgJiAwYjEwMDExMSkgPT0gMGIwMDAxMDApIHsKKyAgICAg
ICAgICAgIGJ1ZmZlclByaW50ZigiLlMiKTsKKyAgICAgICAgICAgIGxhbmUgPSAoKGltbTYgJiAw
YjAxMTAwMCkgPj4gMyk7CisgICAgICAgICAgICAvLyBUaGlzIGlzIG92ZXJseSBwZXJtaXNzaXZl
OyBmb3Igc29tZSBpbnN0cnVjdGlvbnMgKGxpa2UgdW1vdiksIGJpdCA2IG11c3QgYmUgMS4KKyAg
ICAgICAgfSBlbHNlIGlmICgoaW1tNiAmIDBiMDAxMTExKSA9PSAwYjAwMTAwMCkgeworICAgICAg
ICAgICAgYnVmZmVyUHJpbnRmKCIuRCIpOworICAgICAgICAgICAgbGFuZSA9ICgoaW1tNiAmIDBi
MDEwMDAwKSA+PiA0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigi
RGlzc2Fzc2VtYmxlciBzYXcgaW52YWxpZCBzaW1kIGxhbmUgdHlwZSAiLCBpbW02KTsKKyAgICAg
ICAgICAgIGJ1ZmZlclByaW50ZigiLklOVkFMSURfTEFORV9UWVBFIik7CisgICAgICAgIH0KKyAg
ICAgICAgYnVmZmVyUHJpbnRmKCJbIyV1XSIsIGxhbmUpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGFwcGVuZFNpbWRMYW5lVHlwZSh1bnNpZ25lZCBxKQorICAgIHsKKyAgICAgICAgaWYgKHEgPT0g
MCkgeworICAgICAgICAgICAgYnVmZmVyUHJpbnRmKCIuOEIiKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGJ1ZmZlclByaW50ZigiLjE2QiIpOworICAgICAgICB9CisgICAgfQogCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgYnVmZmVyU2l6ZSA9IDgxOwogCkBAIC05MjksNiArOTY0
LDQyIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBybSgpIHsgcmV0dXJuIHJkKCk7IH0KIH07CiAK
K2NsYXNzIEE2NERPcGNvZGVWZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwxU291cmNlIDogcHVi
bGljIEE2NERPcGNvZGUgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
bWFzayAgICA9IDBiMTAxJzExMTExJzExJzEnMDAwMDAwMDAwMDAwMDAwMDAwMDAwOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDBiMDAwJzAxMTEwJzAwJzAnMDAwMDAw
MDAwMDAwMDAwMDAwMDAwOworCisgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZVZl
Y3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbDFTb3VyY2UsIHRoaXNPYmopOworCisgICAgY29uc3Qg
Y2hhciogZm9ybWF0KCk7CisgICAgY29uc3QgY2hhciogb3BOYW1lKCk7CisgICAgCisgICAgdW5z
aWduZWQgcmQoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMCkgJiAwYjExMTExOyB9CisgICAgdW5z
aWduZWQgcnQoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gNSkgJiAwYjExMTExOyB9CisgICAgdW5z
aWduZWQgb3AxMF8xNSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxMCkgJiAwYjExMTExOyB9Cisg
ICAgdW5zaWduZWQgaW1tNSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxNikgJiAwYjExMTExOyB9
CisgICAgdW5zaWduZWQgcSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAzMCkgJiAwYjE7IH0KK307
CisKK2NsYXNzIEE2NERPcGNvZGVWZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwyU291cmNlIDog
cHVibGljIEE2NERPcGNvZGUgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3QgbWFzayAgICA9IDBiMTAxJzExMTExJzExJzEnMDAwMDAwMDAwMDAwMDAwMDAwMDAwOworICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDBiMDAwJzAxMTEwJzEwJzEnMDAw
MDAwMDAwMDAwMDAwMDAwMDAwOworCisgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29k
ZVZlY3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbDJTb3VyY2UsIHRoaXNPYmopOworCisgICAgY29u
c3QgY2hhciogZm9ybWF0KCk7CisgICAgY29uc3QgY2hhciogb3BOYW1lKCk7CisgICAgCisgICAg
dW5zaWduZWQgcmQoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMCkgJiAwYjExMTExOyB9CisgICAg
dW5zaWduZWQgcm4oKSB7IHJldHVybiAobV9vcGNvZGUgPj4gNSkgJiAwYjExMTExOyB9CisgICAg
dW5zaWduZWQgb3AxMF8xNSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxMCkgJiAwYjExMTExOyB9
CisgICAgdW5zaWduZWQgcm0oKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTYpICYgMGIxMTExMTsg
fQorICAgIHVuc2lnbmVkIHEoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMzApICYgMGIxOyB9Cit9
OworCisKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFSTTY0RGlzYXNzZW1ibGVyCiAKIHVzaW5n
IEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCmluZGV4IDBmMmMwNWU1NmI3Yy4uNGVhYzdmNjQ3
MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcApA
QCAtNDEsNiArNDEsMTQgQEAgc3RhdGljIHNpemVfdCBieXRlc0ZvckdQUnMoKQogICAgIHJldHVy
biBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZSZWdpc3RlcnMoKSAqIHNpemVvZihpbnQ2NF90KTsK
IH0KIAorc3RhdGljIHNpemVfdCBieXRlc0ZvckZQUigpCit7CisgICAgLy8gRklYTUU6IEl0IG1p
Z2h0IGJlIHdvcnRod2hpbGUgc2F2aW5nIHRoZSBmdWxsIHN0YXRlIG9mIHRoZSBGUCByZWdpc3Rl
cnMsIGF0IHNvbWUgcG9pbnQuCisgICAgLy8gUmlnaHQgbm93IHdlIGRvbid0IG5lZWQgdGhpcyBz
aW5jZSB3ZSBvbmx5IGRvIHRoZSBzYXZlL3Jlc3RvcmUganVzdCBwcmlvciB0byBPU1IgZXhpdCwg
YW5kCisgICAgLy8gT1NSIGV4aXQgd2lsbCBiZSBndWFyYW50ZWVkIHRvIG9ubHkgbmVlZCB0aGUg
ZG91YmxlIHBvcnRpb24gb2YgdGhlIEZQIHJlZ2lzdGVycy4KKyAgICByZXR1cm4gc2l6ZW9mKGRv
dWJsZSk7Cit9CisKIHN0YXRpYyBzaXplX3QgYnl0ZXNGb3JGUFJzKCkKIHsKICAgICAvLyBGSVhN
RTogSXQgbWlnaHQgYmUgd29ydGh3aGlsZSBzYXZpbmcgdGhlIGZ1bGwgc3RhdGUgb2YgdGhlIEZQ
IHJlZ2lzdGVycywgYXQgc29tZSBwb2ludC4KQEAgLTYxLDcgKzY5LDcgQEAgc2l6ZV90IG9mZnNl
dE9mR1BSKEdQUlJlZyByZWcpCiAKIHNpemVfdCBvZmZzZXRPZkZQUihGUFJSZWcgcmVnKQogewot
ICAgIHJldHVybiBieXRlc0ZvckdQUnMoKSArIE1hY3JvQXNzZW1ibGVyOjpmcFJlZ2lzdGVySW5k
ZXgocmVnKSAqIHNpemVvZihkb3VibGUpOworICAgIHJldHVybiBieXRlc0ZvckdQUnMoKSArIE1h
Y3JvQXNzZW1ibGVyOjpmcFJlZ2lzdGVySW5kZXgocmVnKSAqIGJ5dGVzRm9yRlBSKCk7CiB9CiAK
IHNpemVfdCBvZmZzZXRPZlJlZyhSZWcgcmVnKQpAQCAtMTM5LDcgKzE0Nyw3IEBAIHZvaWQgc2F2
ZUFsbFJlZ2lzdGVycyhBc3NlbWJseUhlbHBlcnMmIGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSkK
ICAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnID0gTWFjcm9Bc3NlbWJs
ZXI6OmZpcnN0RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lz
dGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3RlcihyZWcpKSB7CiAgICAg
ICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgc3Bvb2xlci5zdG9yZUZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZz
ZXRPZkZQUihyZWcpKSB9KTsKKyAgICAgICAgc3Bvb2xlci5zdG9yZUZQUih7IHJlZywgc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkZQUihyZWcpKSB9LCBieXRlc0ZvckZQUigpKTsKICAg
ICB9CiAgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigpOwogfQpAQCAtMTU4LDcgKzE2Niw3IEBAIHZv
aWQgcmVzdG9yZUFsbFJlZ2lzdGVycyhBc3NlbWJseUhlbHBlcnMmIGppdCwgY2hhciogc2NyYXRj
aE1lbW9yeSkKICAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnID0gTWFj
cm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxh
c3RGUFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3RlcihyZWcp
KSB7CiAgICAgICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgc3Bvb2xlci5sb2FkRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZm
X3Q+KG9mZnNldE9mRlBSKHJlZykpIH0pOworICAgICAgICBzcG9vbGVyLmxvYWRGUFIoeyByZWcs
IHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ob2Zmc2V0T2ZGUFIocmVnKSkgfSwgYnl0ZXNGb3JGUFIo
KSk7CiAgICAgfQogICAgIHNwb29sZXIuZmluYWxpemVGUFIoKTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAppbmRleCBiNGU0NzU4ZTU4ZmIu
LjJlMjM1NWI0MTM0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
bG93UGF0aENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1Bh
dGhDYWxsLmNwcApAQCAtNDcsNyArNDcsNyBAQCBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0
aENhbGxDb250ZXh0KAogICAgIC8vIFdlIGRvbid0IGNhcmUgdGhhdCB5b3UncmUgdXNpbmcgY2Fs
bGVlLXNhdmUsIHN0YWNrLCBvciBoYXJkd2FyZSByZWdpc3RlcnMuCiAgICAgdXNlZFJlZ2lzdGVy
cy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKICAgICB1c2VkUmVnaXN0
ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7Ci0g
ICAgdXNlZFJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJz
KCkpOworICAgIHVzZWRSZWdpc3RlcnMuc2V0KFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0
ZXJzKCkpOyAvLyBUT0RPCiAgICAgICAgIAogICAgIC8vIFRoZSByZXR1cm4gcmVnaXN0ZXIgZG9l
c24ndCBuZWVkIHRvIGJlIHNhdmVkLgogICAgIGlmIChtX3JldHVyblJlZ2lzdGVyICE9IEludmFs
aWRHUFJSZWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5r
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKaW5kZXggZGU4
MjEzODUxMGYxLi42YWEwNmM2MGViZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRo
dW5rcy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAogI2luY2x1
ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgiCisjaW5jbHVkZSAiQjNXaWR0aC5oIgogI2lu
Y2x1ZGUgIkRGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIgogI2luY2x1ZGUgIkZUTE9TUkV4aXRD
b21waWxlci5oIgogI2luY2x1ZGUgIkZUTE9wZXJhdGlvbnMuaCIKQEAgLTE0NSw3ICsxNDYsNyBA
QCBzdGF0aWMgdm9pZCByZWdpc3RlckNsb2JiZXJDaGVjayhBc3NlbWJseUhlbHBlcnMmIGppdCwg
UmVnaXN0ZXJTZXQgZG9udENsb2JiZXIpCiAgICAgUmVnaXN0ZXJTZXQgY2xvYmJlciA9IFJlZ2lz
dGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKICAgICBjbG9iYmVyLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6
OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CiAgICAgY2xvYmJlci5leGNsdWRlKFJlZ2lz
dGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKLSAgICBjbG9iYmVyLmV4Y2x1ZGUoUmVnaXN0ZXJT
ZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgY2xvYmJlci5zZXQoUmVnaXN0ZXJTZXQ6
OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7IC8vIFRPRE8KICAgICBjbG9iYmVyLmV4Y2x1ZGUoZG9u
dENsb2JiZXIpOwogICAgIAogICAgIEdQUlJlZyBzb21lR1BSID0gSW52YWxpZEdQUlJlZzsKQEAg
LTE5Myw4ICsxOTQsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNs
b3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgUwogICAgIGZvciAoTWFjcm9B
c3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lz
dGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3Rh
dGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRD4ocmVnICsgMSkpIHsKICAgICAg
ICAgaWYgKCFrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKQogICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIHN0b3JlU3Bvb2xlci5zdG9yZUZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRy
ZGlmZl90PihjdXJyZW50T2Zmc2V0KSB9KTsKLSAgICAgICAgY3VycmVudE9mZnNldCArPSBzaXpl
b2YoZG91YmxlKTsKKyAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3JlRlBSKHsgcmVnLCBzdGF0aWNf
Y2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0sIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpj
b25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CisgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gQjM6
OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpOwogICAgIH0KICAg
ICBzdG9yZVNwb29sZXIuZmluYWxpemVGUFIoKTsKIApAQCAtMjIwLDggKzIyMSw4IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0
b3IoVk0mIHZtLCBjb25zdCBTCiAKICAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVy
SUQgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IDsgcmVnID0gc3RhdGlj
X2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRD4ocmVnIC0gMSkpIHsKICAgICAgICAg
aWYgKGtleS51c2VkUmVnaXN0ZXJzKCkuZ2V0KHJlZykpIHsKLSAgICAgICAgICAgIGN1cnJlbnRP
ZmZzZXQgLT0gc2l6ZW9mKGRvdWJsZSk7Ci0gICAgICAgICAgICBsb2FkU3Bvb2xlci5sb2FkRlBS
KHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0pOworICAgICAg
ICAgICAgY3VycmVudE9mZnNldCAtPSBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZl
V2lkdGgoQjM6OkZQKSk7CisgICAgICAgICAgICBsb2FkU3Bvb2xlci5sb2FkRlBSKHsgcmVnLCBz
dGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0sIEIzOjpieXRlc0ZvcldpZHRo
KEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KHJlZyA9PSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCkpCiAgICAgICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJi
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKaW5kZXggNmYwYThmMWE4
MDNlLi5iZTBmZTM2YmQyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJi
CkBAIC02MCw3ICs2MCwyNiBAQCBtb2R1bGUgRFNMCiAgICAgICAgIGFzc2VydCgiYG9wX2dyb3Vw
YCBjYW4gb25seSBiZSBjYWxsZWQgaW4gYmV0d2VlbiBgYmVnaW5fc2VjdGlvbmAgYW5kIGBlbmRf
c2VjdGlvbmAiKSB7IG5vdCBAY3VycmVudF9zZWN0aW9uLm5pbD8gfQogICAgICAgICBAY3VycmVu
dF9zZWN0aW9uLmFkZF9vcGNvZGVfZ3JvdXAoZGVzYywgb3BzLCBjb25maWcpCiAgICAgZW5kCi0K
KyAgICAKKyAgICBkZWYgc2VsZi5zaW1kX29wX2dyb3VwKGRlc2MsIG9wcywgY29uZmlnKQorICAg
ICAgICBhc3NlcnQoImBzaW1kX29wX2dyb3VwYCBjYW4gb25seSBiZSBjYWxsZWQgaW4gYmV0d2Vl
biBgYmVnaW5fc2VjdGlvbmAgYW5kIGBlbmRfc2VjdGlvbmAiKSB7IG5vdCBAY3VycmVudF9zZWN0
aW9uLm5pbD8gfQorCisgICAgICAgIGZvciBvcCBpbiBvcHMgZG8KKyAgICAgICAgICAgIHZhcmlh
bnRzID0gWyJpMzJ4NCIsICJpNjR4MiIsICJmMzJ4NCIsICJmNjR4MiJdCisgICAgICAgICAgICBp
ZiBjb25maWdbOm1ha2VTaWduZWRWYXJpYW50c10gdGhlbgorICAgICAgICAgICAgICAgIHZhcmlh
bnRzICs9IFsiaTh4MTZfdSIsICJpOHgxNl9zIiwgImkxNng4X3UiLCAiaTE2eDhfcyJdCisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdmFyaWFudHMgKz0gWyJpOHgxNiIsICJpMTZ4
OCJdCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIHZhcmlhbnRzID0gWyJpOHgxNl91Il0g
IyBUT0RPCisgICAgICAgICAgICBvcExpc3QgPSBbXQorICAgICAgICAgICAgZm9yIHYgaW4gdmFy
aWFudHMgZG8KKyAgICAgICAgICAgICAgICBvcExpc3QgPDwgKChvcC50b19zICsgIl8iICsgdiku
dG9fc3ltKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBAY3VycmVudF9zZWN0aW9uLmFk
ZF9vcGNvZGVfZ3JvdXAoKGRlc2MudG9fcyArIG9wLnRvX3MpLnRvX3N5bSwgb3BMaXN0LCBjb25m
aWcpCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAogICAgIGRlZiBzZWxmLnR5cGVzKHR5cGVz
KQogICAgICAgICB0eXBlcy5tYXAgZG8gfHR5cGV8CiAgICAgICAgICAgICB0eXBlID0gKEBuYW1l
c3BhY2VzICsgW3R5cGVdKS5qb2luICI6OiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0b3IvV2FzbS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
V2FzbS5yYgppbmRleCAyYzExYmFmMjBkMmYuLjY5NzQyNGUwOTVlNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9XYXNtLnJiCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0b3IvV2FzbS5yYgpAQCAtNTYsNyArNTYsMjMgQEAgbW9kdWxlIFdhc20K
ICAgICAgICAgICAgICAgICBhc3NlcnQoIkludmFsaWQgYXJndW1lbnQgY291bnQgI3tvcC5hcmdz
LnNpemV9IGZvciBvcCAje29wLm5hbWV9IikgeyBmYWxzZSB9CiAgICAgICAgICAgICBlbmQKICAg
ICAgICAgZW5kCi0gICAgICAgIG1ldGhvZHMuam9pbigiXG4iKQorICAgICAgICBtZXRob2RzLmpv
aW4oIlxuIikgKyBnZW5lcmF0ZV9sbGludF9nZW5lcmF0b3Jfc2ltZChzZWN0aW9uKQorICAgIGVu
ZAorCisgICAgZGVmIHNlbGYuZ2VuZXJhdGVfbGxpbnRfZ2VuZXJhdG9yX3NpbWQoc2VjdGlvbikK
KyAgICAgICAgPDwtRU9GCisjZGVmaW5lIENSRUFURV9TSU1EX0NBU0UobmFtZSwgaWQsIGIzb3As
IGluYywgd2FzbU9wLCByZXR1cm5UeXBlLCBudW1JbW1lZGlhdGVzLCBpbW1lZGlhdGVTaXplcywg
bnVtQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzLCAuLi4pIFwKK3RlbXBsYXRlPD4gXAorYXV0byBM
TEludEdlbmVyYXRvcjo6YWRkU2ltZE9wPEV4dFNpbWRPcFR5cGU6Om5hbWUsIG51bUltbWVkaWF0
ZXMsIG51bUFyZ3VtZW50cz4oc3RkOjphcnJheTx1aW50OF90LCBudW1JbW1lZGlhdGVzPiBpbW1l
ZGlhdGVzLCBzdGQ6OmFycmF5PEV4cHJlc3Npb25UeXBlLCBudW1Bcmd1bWVudHM+IGFyZ3VtZW50
cywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdCBcCit7IFwKKyAgICBy
ZXN1bHQgPSBwdXNoKHJldHVyblR5cGUpOyBcCisgICAgc3RkOjphcHBseSgmd2FzbU9wOjplbWl0
PExMSW50R2VuZXJhdG9yPiwgc3RkOjp0dXBsZV9jYXQoc3RkOjptYWtlX3R1cGxlKHRoaXMsIHJl
c3VsdCksIGltbWVkaWF0ZXMsIGFyZ3VtZW50cykpOyBcCisgICAgcmV0dXJuIHsgfTsgXAorfQor
CitGT1JfRUFDSF9XQVNNX0VYVF9TSU1EX09QKENSRUFURV9TSU1EX0NBU0UpCisjdW5kZWYgQ1JF
QVRFX1NJTURfQ0FTRQorICAgICAgICBFT0YKICAgICBlbmQKIAogICAgIGRlZiBzZWxmLmdlbmVy
YXRlX2JpbmFyeV9vcChvcCkKQEAgLTY0LDcgKzgwLDcgQEAgbW9kdWxlIFdhc20KIHRlbXBsYXRl
PD4KIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZE9wPCN7b3BfdHlwZShvcCl9PihFeHByZXNzaW9u
VHlwZSBsaHMsIEV4cHJlc3Npb25UeXBlIHJocywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICByZXN1bHQgPSBwdXNo
KCN7b3BfcmV0dXJuKG9wKX0pOwogICAgICN7b3AuY2FwaXRhbGl6ZWRfbmFtZX06OmVtaXQodGhp
cywgcmVzdWx0LCBsaHMsIHJocyk7CiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTc2LDcgKzkyLDcg
QEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkT3A8I3tvcF90eXBlKG9wKX0+KEV4cHJlc3Npb25U
eXBlIGxocywgRXhwcmVzc2lvblR5cGUgcmgKIHRlbXBsYXRlPD4KIGF1dG8gTExJbnRHZW5lcmF0
b3I6OmFkZE9wPCN7b3BfdHlwZShvcCl9PihFeHByZXNzaW9uVHlwZSBvcGVyYW5kLCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgp
OworICAgIHJlc3VsdCA9IHB1c2goI3tvcF9yZXR1cm4ob3ApfSk7CiAgICAgI3tvcC5jYXBpdGFs
aXplZF9uYW1lfTo6ZW1pdCh0aGlzLCByZXN1bHQsIG9wZXJhbmQpOwogICAgIHJldHVybiB7IH07
CiB9CkBAIC04Niw0ICsxMDIsMTIgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkT3A8I3tvcF90
eXBlKG9wKX0+KEV4cHJlc3Npb25UeXBlIG9wZXJhbmQsIEV4cHJlc3Npb25UeXAKICAgICBkZWYg
c2VsZi5vcF90eXBlKG9wKQogICAgICAgICAiT3BUeXBlOjoje29wLnVucHJlZml4ZWRfbmFtZS5n
c3ViKC9eLnxbXmEtejAtOV0uLykgeyB8Y3wgY1stMV0udXBjYXNlIH19IgogICAgIGVuZAorCisg
ICAgZGVmIHNlbGYub3BfcmV0dXJuKG9wKQorICAgICAgICB0ID0gb3AuZXh0cmFzWyJyZXR1cm4i
XVswXQorICAgICAgICBpZiB0ID09ICJib29sIiB0aGVuCisgICAgICAgICAgICB0ID0gImkzMiIK
KyAgICAgICAgZW5kCisgICAgICAgICJUeXBlczo6I3t0LnVwY2FzZX0iCisgICAgZW5kCiBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUVudHJ5UmVj
b3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5o
CmluZGV4IGJlN2JmODg5ODc5ZC4uOTk1YWNlMzk5M2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUVudHJ5UmVjb3JkLmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
c3RydWN0IFZNRW50cnlSZWNvcmQgewogICAgIEpTT2JqZWN0KiBjYWxsZWUoKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxlZTsgfQogCiAjaWYgIUVOQUJMRShDX0xPT1ApICYmIE5VTUJFUl9PRl9DQUxM
RUVfU0FWRVNfUkVHSVNURVJTID4gMAotICAgIENQVVJlZ2lzdGVyIGNhbGxlZVNhdmVSZWdpc3Rl
cnNCdWZmZXJbTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlNdOworICAgIENQVVJlZ2lz
dGVyIGNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJbU0laRV9PRl9DQUxMRUVfU0FWRVNfUkVHSVNU
RVJTXTsKICNlbGlmIEVOQUJMRShDX0xPT1ApCiAgICAgQ1BVUmVnaXN0ZXIgY2FsbGVlU2F2ZVJl
Z2lzdGVyc0J1ZmZlclsxXTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IGRlOGQ2NTNkZDgyYi4uZTlhNjIzYjVjOTI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAKICNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQXNzZW1ibHlI
ZWxwZXJzU3Bvb2xlcnMuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCiAjaW5jbHVkZSAiSklUT3Bl
cmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKQEAgLTczMiw3ICs3MzMsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVy
czo6cmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVySW1w
bChHUAogICAgICAgICBpZiAoc2tpcExpc3QuY29udGFpbnMoZW50cnkucmVnKCkpKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIEFTU0VSVCghZW50cnkucmVnKCkuaXNHUFIoKSk7Ci0g
ICAgICAgIHNwb29sZXIubG9hZEZQUihlbnRyeSk7CisgICAgICAgIHNwb29sZXIubG9hZEZQUihl
bnRyeSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpKTsK
ICAgICB9CiAgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigpOwogCkBAIC0xMTE5LDcgKzExMjAsNyBA
QCB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVl
U2F2ZXNCdWZmZXJJbXBsKEdQUlJlZyBjYQogICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5
ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOwogICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMu
Y29udGFpbnMoZW50cnkucmVnKCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHNw
b29sZXIuc3RvcmVGUFIoZW50cnkpOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5LCBC
Mzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOwogICAgIH0K
ICAgICBzcG9vbGVyLmZpbmFsaXplRlBSKCk7CiAKQEAgLTEyMzUsNyArMTIzNiw3IEBAIHZvaWQg
QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgbGlz
dCkKICAgICBzcG9vbGVyLmZpbmFsaXplR1BSKCk7CiAKICAgICBmb3IgKDsgaSA8IGxpc3RTaXpl
OyBpKyspCi0gICAgICAgIHNwb29sZXIuc3RvcmVGUFIobGlzdC5hdChpKSk7CisgICAgICAgIHNw
b29sZXIuc3RvcmVGUFIobGlzdC5hdChpKSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZh
dGl2ZVdpZHRoKEIzOjpGUCkpKTsKICAgICBzcG9vbGVyLmZpbmFsaXplRlBSKCk7CiB9CiAKQEAg
LTEyNTQsNyArMTI1NSw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9yZShjb25z
dCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgbGlzdCkKICAgICBzcG9vbGVyLmZpbmFsaXplR1BSKCk7
CiAKICAgICBmb3IgKDsgaSA8IGxpc3RTaXplOyBpKyspCi0gICAgICAgIHNwb29sZXIubG9hZEZQ
UihsaXN0LmF0KGkpKTsKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGxpc3QuYXQoaSksIEIzOjpi
eXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CiAgICAgc3Bvb2xl
ci5maW5hbGl6ZUZQUigpOwogfQogCkBAIC0xMjc5LDcgKzEyODAsNyBAQCB2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdFNhdmVDYWxsZWVTYXZlc0Zvcihjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlz
dCogY2FsbGVlUwogICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMt
PmF0KGkpOwogICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3RlcnMuY29udGFpbnMoZW50cnkucmVn
KCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHNwb29sZXIuc3RvcmVGUFIoZW50
cnkpOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5LCBCMzo6Ynl0ZXNGb3JXaWR0aChC
Mzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOwogICAgIH0KICAgICBzcG9vbGVyLmZpbmFs
aXplRlBSKCk7CiB9CkBAIC0xMzA1LDcgKzEzMDYsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6
ZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0Zvcihjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2Fs
bAogICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwog
ICAgICAgICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzcG9vbGVyLmxvYWRGUFIoZW50cnkpOworICAgICAg
ICBzcG9vbGVyLmxvYWRGUFIoZW50cnksIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRp
dmVXaWR0aChCMzo6RlApKSk7CiAgICAgfQogICAgIHNwb29sZXIuZmluYWxpemVGUFIoKTsKIH0K
QEAgLTEzNTUsMTAgKzEzNTYsMTAgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNvcHlMTEludEJh
c2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZyYW0KIAogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChlbnRyeS5yZWcoKS5pc0ZQUigpKTsKICAgICAgICAgaWYgKGN1cnJl
bnRGcmFtZUVudHJ5KQotICAgICAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGN1cnJlbnRGcmFtZUVu
dHJ5LT5vZmZzZXQoKSk7CisgICAgICAgICAgICBzcG9vbGVyLmxvYWRGUFIoY3VycmVudEZyYW1l
RW50cnktPm9mZnNldCgpLCBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgo
QjM6OkZQKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzcG9vbGVyLmNvcHlGUFIoZW50
cnkucmVnKCkuZnByKCkpOwotICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5Lm9mZnNldCgp
KTsKKyAgICAgICAgICAgIHNwb29sZXIuY29weUZQUihlbnRyeS5yZWcoKS5mcHIoKSwgQjM6OmJ5
dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpKTsKKyAgICAgICAgc3Bv
b2xlci5zdG9yZUZQUihlbnRyeS5vZmZzZXQoKSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNl
cnZhdGl2ZVdpZHRoKEIzOjpGUCkpKTsKICAgICB9CiAgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
c1Nwb29sZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVyc1Nw
b29sZXJzLmgKaW5kZXggNzgzMWVmMzY2OTBkLi4wYzljZjk1NDNjNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgKQEAgLTcw
LDcgKzcwLDcgQEAgc3RydWN0IFJlZ0Rpc3BhdGNoPEZQUlJlZz4gewogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBGUFJSZWcgdGVtcDIoY29uc3QgU3Bvb2xlciogc3Bvb2xl
cikgeyByZXR1cm4gc3Bvb2xlci0+bV90ZW1wMkZQUjsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFNwb29sZXI+IHN0YXRpYyBGUFJSZWcmIHJlZ1RvU3RvcmUoU3Bvb2xlciogc3Bvb2xlcikgeyBy
ZXR1cm4gc3Bvb2xlci0+bV9mcHJUb1N0b3JlOyB9CiAgICAgc3RhdGljIGNvbnN0ZXhwciBGUFJS
ZWcgaW52YWxpZCgpIHsgcmV0dXJuIEludmFsaWRGUFJSZWc7IH0KLSAgICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCByZWdTaXplKCkgeyByZXR1cm4gc2l6ZW9mKGRvdWJsZSk7IH0KKyAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCByZWdTaXplKCkgeyByZXR1cm4gMTY7IH0KICNpZiBDUFUoQVJN
NjQpCiAgICAgc3RhdGljIGJvb2wgaXNWYWxpZExvYWRQYWlySW1tKGludCBvZmZzZXQpIHsgcmV0
dXJuIEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkTERQRlBJbW08NjQ+KG9mZnNldCk7IH0KICAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkU3RvcmVQYWlySW1tKGludCBvZmZzZXQpIHsgcmV0dXJuIEFSTTY0
QXNzZW1ibGVyOjppc1ZhbGlkU1RQRlBJbW08NjQ+KG9mZnNldCk7IH0KQEAgLTkxLDI5ICs5MSwz
NSBAQCBwdWJsaWM6CiAgICAgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgot
ICAgIHZvaWQgZXhlY3V0ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkKKyAgICB2b2lk
IGV4ZWN1dGUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnksIHVuc2lnbmVkIGJ5dGVzV2lk
dGgpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChSZWdEaXNwYXRjaDxSZWdUeXBlPjo6
aGFzU2FtZVR5cGUoZW50cnkucmVnKCkpKTsKICAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFp
ck9wKQotICAgICAgICAgICAgcmV0dXJuIG9wKCkuZXhlY3V0ZVNpbmdsZShlbnRyeS5vZmZzZXQo
KSwgUmVnRGlzcGF0Y2g8UmVnVHlwZT46OmdldChlbnRyeS5yZWcoKSkpOworICAgICAgICAgICAg
cmV0dXJuIG9wKCkuZXhlY3V0ZVNpbmdsZShlbnRyeS5vZmZzZXQoKSwgUmVnRGlzcGF0Y2g8UmVn
VHlwZT46OmdldChlbnRyeS5yZWcoKSksIGJ5dGVzV2lkdGgpOworICAgICAgICBpZiAoYnl0ZXNX
aWR0aCA+IDgpCisgICAgICAgICAgICByZXR1cm4gb3AoKS5leGVjdXRlU2luZ2xlKGVudHJ5Lm9m
ZnNldCgpLCBSZWdEaXNwYXRjaDxSZWdUeXBlPjo6Z2V0KGVudHJ5LnJlZygpKSwgYnl0ZXNXaWR0
aCk7CiAKICAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRW50cnkucmVnKCkuaXNTZXQoKSkgewogICAg
ICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0gZW50cnk7CisgICAgICAgICAgICBtX2J1ZmZlcmVk
Qnl0ZXNXaWR0aCA9IGJ5dGVzV2lkdGg7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
LQotICAgICAgICBjb25zdGV4cHIgcHRyZGlmZl90IHJlZ1NpemUgPSBSZWdEaXNwYXRjaDxSZWdU
eXBlPjo6cmVnU2l6ZSgpOworICAgICAgICAKKyAgICAgICAgcHRyZGlmZl90IHJlZ1NpemUgPSBi
eXRlc1dpZHRoOworICAgICAgICBBU1NFUlQoYnl0ZXNXaWR0aCA8PSBSZWdEaXNwYXRjaDxSZWdU
eXBlPjo6cmVnU2l6ZSgpKTsKICAgICAgICAgUmVnVHlwZSBidWZmZXJlZEVudHJ5UmVnID0gUmVn
RGlzcGF0Y2g8UmVnVHlwZT46OmdldChtX2J1ZmZlcmVkRW50cnkucmVnKCkpOwogICAgICAgICBS
ZWdUeXBlIGVudHJ5UmVnID0gUmVnRGlzcGF0Y2g8UmVnVHlwZT46OmdldChlbnRyeS5yZWcoKSk7
CiAKICAgICAgICAgaWYgKGVudHJ5Lm9mZnNldCgpID09IG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQo
KSArIHJlZ1NpemUpIHsKICAgICAgICAgICAgIG9wKCkuZXhlY3V0ZVBhaXIobV9idWZmZXJlZEVu
dHJ5Lm9mZnNldCgpLCBidWZmZXJlZEVudHJ5UmVnLCBlbnRyeVJlZyk7CiAgICAgICAgICAgICBt
X2J1ZmZlcmVkRW50cnkgPSB7IH07CisgICAgICAgICAgICBtX2J1ZmZlcmVkQnl0ZXNXaWR0aCA9
IDA7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fYnVmZmVy
ZWRFbnRyeS5vZmZzZXQoKSA9PSBlbnRyeS5vZmZzZXQoKSArIHJlZ1NpemUpIHsKICAgICAgICAg
ICAgIG9wKCkuZXhlY3V0ZVBhaXIoZW50cnkub2Zmc2V0KCksIGVudHJ5UmVnLCBidWZmZXJlZEVu
dHJ5UmVnKTsKICAgICAgICAgICAgIG1fYnVmZmVyZWRFbnRyeSA9IHsgfTsKKyAgICAgICAgICAg
IG1fYnVmZmVyZWRCeXRlc1dpZHRoID0gMDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCkBAIC0xMjEsNyArMTI3LDcgQEAgcHVibGljOgogICAgICAgICAvLyBFeGVjdXRlIHRoZSBw
cmV2aW91cyBvbmUgYXMgYSBzaW5nbGUgKGZpbmFsaXplIHdpbGwgZG8gdGhhdCksIGFuZCB0aGVu
CiAgICAgICAgIC8vIGJ1ZmZlciB0aGUgY3VycmVudCBlbnRyeSB0byBwb3RlbnRpYWxseSBiZSBw
YWlyZWQgd2l0aCB0aGUgbmV4dCBlbnRyeS4KICAgICAgICAgZmluYWxpemU8UmVnVHlwZT4oKTsK
LSAgICAgICAgZXhlY3V0ZTxSZWdUeXBlPihlbnRyeSk7CisgICAgICAgIGV4ZWN1dGU8UmVnVHlw
ZT4oZW50cnksIGJ5dGVzV2lkdGgpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJl
Z1R5cGU+CkBAIC0xMjksOCArMTM1LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmIGNv
bnN0ZXhwciAoaGFzUGFpck9wKSB7CiAgICAgICAgICAgICBpZiAobV9idWZmZXJlZEVudHJ5LnJl
ZygpLmlzU2V0KCkpIHsKLSAgICAgICAgICAgICAgICBvcCgpLmV4ZWN1dGVTaW5nbGUobV9idWZm
ZXJlZEVudHJ5Lm9mZnNldCgpLCBSZWdEaXNwYXRjaDxSZWdUeXBlPjo6Z2V0KG1fYnVmZmVyZWRF
bnRyeS5yZWcoKSkpOworICAgICAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlcmVkQnl0ZXNXaWR0
aCk7CisgICAgICAgICAgICAgICAgb3AoKS5leGVjdXRlU2luZ2xlKG1fYnVmZmVyZWRFbnRyeS5v
ZmZzZXQoKSwgUmVnRGlzcGF0Y2g8UmVnVHlwZT46OmdldChtX2J1ZmZlcmVkRW50cnkucmVnKCkp
LCBtX2J1ZmZlcmVkQnl0ZXNXaWR0aCk7CiAgICAgICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5
ID0geyB9OworICAgICAgICAgICAgICAgIG1fYnVmZmVyZWRCeXRlc1dpZHRoID0gMDsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE0OCw2ICsxNTYsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSklUJiBtX2ppdDsKICAgICBHUFJSZWcgbV9iYXNlR1BSOwogICAgIFJlZ2lzdGVyQXRP
ZmZzZXQgbV9idWZmZXJlZEVudHJ5OworICAgIHVuc2lnbmVkIG1fYnVmZmVyZWRCeXRlc1dpZHRo
OwogfTsKIAogY2xhc3MgQXNzZW1ibHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlciA6IHB1YmxpYyBB
c3NlbWJseUhlbHBlcnM6OlNwb29sZXI8TG9hZFJlZ1Nwb29sZXI+IHsKQEAgLTE1OCw5ICsxNjcs
OSBAQCBwdWJsaWM6CiAgICAgICAgIDogQmFzZShqaXQsIGJhc2VHUFIpCiAgICAgeyB9CiAKLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEdQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRy
eSkgeyBleGVjdXRlPEdQUlJlZz4oZW50cnkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxv
YWRHUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgZXhlY3V0ZTxHUFJSZWc+KGVu
dHJ5LCA4KTsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaW5hbGl6ZUdQUigpIHsgZmluYWxp
emU8R1BSUmVnPigpOyB9Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRGUFIoY29uc3QgUmVn
aXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgZXhlY3V0ZTxGUFJSZWc+KGVudHJ5KTsgfQorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBsb2FkRlBSKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5LCB1
bnNpZ25lZCBieXRlc1dpZHRoKSB7IGV4ZWN1dGU8RlBSUmVnPihlbnRyeSwgYnl0ZXNXaWR0aCk7
IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmluYWxpemVGUFIoKSB7IGZpbmFsaXplPEZQUlJl
Zz4oKTsgfQogCiBwcml2YXRlOgpAQCAtMTc1LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIGV4ZWN1dGVQYWlyKHB0cmRpZmZfdCwgUmVnVHlwZSwgUmVnVHlwZSkg
eyB9CiAjZW5kaWYKIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlU2luZ2xlKHB0cmRp
ZmZfdCBvZmZzZXQsIEdQUlJlZyByZWcpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVT
aW5nbGUocHRyZGlmZl90IG9mZnNldCwgR1BSUmVnIHJlZywgc2l6ZV90KQogICAgIHsKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICBtX2ppdC5sb2FkNjQoQWRkcmVzcyhtX2Jhc2VHUFIsIG9m
ZnNldCksIHJlZyk7CkBAIC0xODQsOSArMTkzLDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB9
CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0ZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0
LCBGUFJSZWcgcmVnKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlU2luZ2xlKHB0cmRp
ZmZfdCBvZmZzZXQsIEZQUlJlZyByZWcsIHNpemVfdCBieXRlc1dpZHRoKQogICAgIHsKLSAgICAg
ICAgbV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSwgcmVnKTsKKyAg
ICAgICAgaWYgKGJ5dGVzV2lkdGggPiA4KQorICAgICAgICAgICAgbV9qaXQubG9hZFZlY3RvcihB
ZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSwgcmVnKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSwgcmVnKTsKICAg
ICB9CiAKICAgICBmcmllbmQgY2xhc3MgQXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyPExvYWRSZWdT
cG9vbGVyPjsKQEAgLTIwMCw5ICsyMTIsOSBAQCBwdWJsaWM6CiAgICAgICAgIDogQmFzZShqaXQs
IGJhc2VHUFIpCiAgICAgeyB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVHUFIoY29u
c3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgZXhlY3V0ZTxHUFJSZWc+KGVudHJ5KTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZUdQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBl
bnRyeSkgeyBleGVjdXRlPEdQUlJlZz4oZW50cnksIDgpOyB9CiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIGZpbmFsaXplR1BSKCkgeyBmaW5hbGl6ZTxHUFJSZWc+KCk7IH0KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc3RvcmVGUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgZXhlY3V0
ZTxGUFJSZWc+KGVudHJ5KTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZUZQUihjb25z
dCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSwgdW5zaWduZWQgYnl0ZXNXaWR0aCkgeyBleGVjdXRl
PEZQUlJlZz4oZW50cnksIGJ5dGVzV2lkdGgpOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGZp
bmFsaXplRlBSKCkgeyBmaW5hbGl6ZTxGUFJSZWc+KCk7IH0KIAogcHJpdmF0ZToKQEAgLTIxNyw3
ICsyMjksNyBAQCBwcml2YXRlOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlUGFpcihw
dHJkaWZmX3QsIFJlZ1R5cGUsIFJlZ1R5cGUpIHsgfQogI2VuZGlmCiAKLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgZXhlY3V0ZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0LCBHUFJSZWcgcmVnKQorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlU2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEdQUlJl
ZyByZWcsIHNpemVfdCkKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgbV9qaXQu
c3RvcmU2NChyZWcsIEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpKTsKQEAgLTIyNiw5ICsyMzgs
MTIgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBl
eGVjdXRlU2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEZQUlJlZyByZWcpCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIGV4ZWN1dGVTaW5nbGUocHRyZGlmZl90IG9mZnNldCwgRlBSUmVnIHJlZywgc2l6
ZV90IGJ5dGVzV2lkdGgpCiAgICAgewotICAgICAgICBtX2ppdC5zdG9yZURvdWJsZShyZWcsIEFk
ZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpKTsKKyAgICAgICAgaWYgKGJ5dGVzV2lkdGggPiA4KQor
ICAgICAgICAgICAgbV9qaXQuc3RvcmVWZWN0b3IocmVnLCBBZGRyZXNzKG1fYmFzZUdQUiwgb2Zm
c2V0KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKHJlZywg
QWRkcmVzcyhtX2Jhc2VHUFIsIG9mZnNldCkpOwogICAgIH0KIAogICAgIGZyaWVuZCBjbGFzcyBB
c3NlbWJseUhlbHBlcnM6OlNwb29sZXI8U3RvcmVSZWdTcG9vbGVyPjsKQEAgLTI4NCwxMiArMjk5
LDE5IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gc3RhdGljIGJv
b2wgaXNWYWxpZFN0b3JlUGFpckltbShpbnQgb2Zmc2V0KSB7IHJldHVybiBSZWdEaXNwYXRjaDxS
ZWdUeXBlPjo6aXNWYWxpZFN0b3JlUGFpckltbShvZmZzZXQpOyB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBSZWdUeXBlPgotICAgIHZvaWQgbG9hZChpbnQgb2Zmc2V0KQorICAgIHZvaWQgbG9h
ZChpbnQgb2Zmc2V0LCB1bnNpZ25lZCBieXRlc1dpZHRoKQogICAgIHsKICAgICAgICAgaWYgY29u
c3RleHByICghaGFzUGFpck9wKSB7CiAgICAgICAgICAgICBhdXRvJiByZWdUb1N0b3JlID0gdGhp
cy0+cmVnVG9TdG9yZTxSZWdUeXBlPigpOwogICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHRlbXAx
PFJlZ1R5cGU+KCk7Ci0gICAgICAgICAgICBsb2FkKG9mZnNldCwgcmVnVG9TdG9yZSk7CisgICAg
ICAgICAgICBsb2FkKG9mZnNldCwgcmVnVG9TdG9yZSwgYnl0ZXNXaWR0aCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChieXRlc1dpZHRoID4g
OCkgeworICAgICAgICAgICAgYXV0byYgcmVnVG9TdG9yZSA9IHRoaXMtPnJlZ1RvU3RvcmU8UmVn
VHlwZT4oKTsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMTxSZWdUeXBlPigpOworICAg
ICAgICAgICAgbG9hZChvZmZzZXQsIHJlZ1RvU3RvcmUsIGJ5dGVzV2lkdGgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI5OCw3ICszMjAsNyBAQCBwcml2YXRlOgogICAg
ICAgICBzb3VyY2Uub2Zmc2V0ID0gb2Zmc2V0OwogICAgIH0KIAotICAgIHZvaWQgbW92ZShFbmNv
ZGVkSlNWYWx1ZSB2YWx1ZSkKKyAgICB2b2lkIG1vdmUoRW5jb2RlZEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGJ5dGVzV2lkdGgpCiAgICAgewogICAgICAgICBpZiBjb25zdGV4cHIgKCFoYXNQYWly
T3ApIHsKICAgICAgICAgICAgIGF1dG8mIHJlZ1RvU3RvcmUgPSB0aGlzLT5yZWdUb1N0b3JlPEdQ
UlJlZz4oKTsKQEAgLTMwNiw2ICszMjgsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1vdmUo
dmFsdWUsIHJlZ1RvU3RvcmUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBpZiAoYnl0ZXNXaWR0aCA+IDgpIHsKKyAgICAgICAgICAgIGF1dG8mIHJl
Z1RvU3RvcmUgPSB0aGlzLT5yZWdUb1N0b3JlPEdQUlJlZz4oKTsKKyAgICAgICAgICAgIHJlZ1Rv
U3RvcmUgPSB0ZW1wMTxHUFJSZWc+KCk7CisgICAgICAgICAgICBtb3ZlKHZhbHVlLCByZWdUb1N0
b3JlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGF1dG8mIHNv
dXJjZSA9IG1fc291cmNlc1ttX2N1cnJlbnRTb3VyY2UrK107CiAgICAgICAgIHNvdXJjZS50eXBl
ID0gU291cmNlOjpUeXBlOjpFbmNvZGVkSlNWYWx1ZTsKQEAgLTMxMywxMyArMzQyLDE5IEBAIHBy
aXZhdGU6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KLSAgICB2b2lk
IGNvcHkoUmVnVHlwZSByZWcpCisgICAgdm9pZCBjb3B5KFJlZ1R5cGUgcmVnLCB1bnNpZ25lZCBi
eXRlc1dpZHRoKQogICAgIHsKICAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKSB7CiAg
ICAgICAgICAgICBhdXRvJiByZWdUb1N0b3JlID0gdGhpcy0+cmVnVG9TdG9yZTxSZWdUeXBlPigp
OwogICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHJlZzsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGJ5dGVzV2lkdGggPiA4KSB7CisgICAgICAg
ICAgICBhdXRvJiByZWdUb1N0b3JlID0gdGhpcy0+cmVnVG9TdG9yZTxSZWdUeXBlPigpOworICAg
ICAgICAgICAgcmVnVG9TdG9yZSA9IHJlZzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogCiAgICAgICAgIGF1dG8mIHNvdXJjZSA9IG1fc291cmNlc1ttX2N1cnJlbnRTb3VyY2UrK107
CiAgICAgICAgIHNvdXJjZS50eXBlID0gU291cmNlOjpUeXBlOjpSZWc7CkBAIC0zMjcsMTEgKzM2
MiwxNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+
Ci0gICAgdm9pZCBzdG9yZShpbnQgc3RvcmVPZmZzZXQpCisgICAgdm9pZCBzdG9yZShpbnQgc3Rv
cmVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVzV2lkdGgpCiAgICAgewogICAgICAgICBpZiBjb25zdGV4
cHIgKCFoYXNQYWlyT3ApIHsKICAgICAgICAgICAgIGF1dG8gcmVnVG9TdG9yZSA9IHRoaXMtPnJl
Z1RvU3RvcmU8UmVnVHlwZT4oKTsKLSAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUsIHN0b3Jl
T2Zmc2V0KTsKKyAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUsIHN0b3JlT2Zmc2V0LCBieXRl
c1dpZHRoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaWYgKGJ5dGVzV2lkdGggPiA4KSB7CisgICAgICAgICAgICBhdXRvIHJlZ1RvU3RvcmUgPSB0
aGlzLT5yZWdUb1N0b3JlPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICBzdG9yZShyZWdUb1N0b3Jl
LCBzdG9yZU9mZnNldCwgYnl0ZXNXaWR0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtMzU5LDggKzQwMCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBib29sIGlzVmFs
aWRPZmZzZXQgPSBpc1ZhbGlkTG9hZFBhaXJJbW08UmVnVHlwZT4obWluT2Zmc2V0KTsKIAogICAg
ICAgICAgICAgaWYgKG9mZnNldERlbHRhICE9IHJlZ2lzdGVyU2l6ZSB8fCAoIWlzVmFsaWRPZmZz
ZXQgJiYgbV9idWZmZXJSZWdzQXR0ciAhPSBCdWZmZXJSZWdzOjpBbGxvd01vZGlmaWNhdGlvbikp
IHsKLSAgICAgICAgICAgICAgICBsb2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUxKTsKLSAgICAg
ICAgICAgICAgICBsb2FkKHNyY09mZnNldDIsIHJlZ1RvU3RvcmUyKTsKKyAgICAgICAgICAgICAg
ICBsb2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUxLCBieXRlc1dpZHRoKTsKKyAgICAgICAgICAg
ICAgICBsb2FkKHNyY09mZnNldDIsIHJlZ1RvU3RvcmUyLCBieXRlc1dpZHRoKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KSB7CiAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlclJlZ3NBdHRyID09IEJ1ZmZlclJlZ3M6OkFs
bG93TW9kaWZpY2F0aW9uKTsKQEAgLTM3OCw3ICs0MTksNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZTEudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkJ1
ZmZlck9mZnNldCkgewogICAgICAgICAgICAgcmVnVG9TdG9yZTEgPSB0ZW1wMTxSZWdUeXBlPigp
OwotICAgICAgICAgICAgbG9hZChzcmNPZmZzZXQxLCByZWdUb1N0b3JlMSk7CisgICAgICAgICAg
ICBsb2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUxLCBieXRlc1dpZHRoKTsKICAgICAgICAgICAg
IGlmIChzb3VyY2UyLnR5cGUgPT0gU291cmNlOjpUeXBlOjpFbmNvZGVkSlNWYWx1ZSkgewogICAg
ICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAocmVnVHlwZUlzR1BSKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHJlZ1RvU3RvcmUyID0gdGVtcDI8UmVnVHlwZT4oKTsKQEAgLTM5OCw3ICs0MzksNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmVnVG9TdG9y
ZTEgPSBzb3VyY2UxLmdldFJlZzxSZWdUeXBlPigpOwogICAgICAgICAgICAgcmVnVG9TdG9yZTIg
PSB0ZW1wMjxSZWdUeXBlPigpOwotICAgICAgICAgICAgbG9hZChzcmNPZmZzZXQyLCByZWdUb1N0
b3JlMik7CisgICAgICAgICAgICBsb2FkKHNyY09mZnNldDIsIHJlZ1RvU3RvcmUyLCBieXRlc1dp
ZHRoKTsKIAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKHNvdXJjZTEudHlwZSA9
PSBTb3VyY2U6OlR5cGU6OkVuY29kZWRKU1ZhbHVlKSB7CkBAIC00MjgsOCArNDY5LDggQEAgcHJp
dmF0ZToKICAgICAgICAgYm9vbCBpc1ZhbGlkT2Zmc2V0ID0gaXNWYWxpZFN0b3JlUGFpckltbTxS
ZWdUeXBlPihtaW5PZmZzZXQpOwogCiAgICAgICAgIGlmIChvZmZzZXREZWx0YSAhPSByZWdpc3Rl
clNpemUgfHwgKCFpc1ZhbGlkT2Zmc2V0ICYmIG1fYnVmZmVyUmVnc0F0dHIgIT0gQnVmZmVyUmVn
czo6QWxsb3dNb2RpZmljYXRpb24pKSB7Ci0gICAgICAgICAgICBzdG9yZShyZWdUb1N0b3JlMSwg
ZHN0T2Zmc2V0MSk7Ci0gICAgICAgICAgICBzdG9yZShyZWdUb1N0b3JlMiwgZHN0T2Zmc2V0Mik7
CisgICAgICAgICAgICBzdG9yZShyZWdUb1N0b3JlMSwgZHN0T2Zmc2V0MSwgYnl0ZXNXaWR0aCk7
CisgICAgICAgICAgICBzdG9yZShyZWdUb1N0b3JlMiwgZHN0T2Zmc2V0MiwgYnl0ZXNXaWR0aCk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQpIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQobV9idWZmZXJSZWdzQXR0ciA9PSBCdWZmZXJSZWdzOjpBbGxv
d01vZGlmaWNhdGlvbik7CkBAIC00NjcsNyArNTA4LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBp
ZiAoc291cmNlLnR5cGUgPT0gU291cmNlOjpUeXBlOjpCdWZmZXJPZmZzZXQpIHsKICAgICAgICAg
ICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMTxSZWdUeXBlPigpOwotICAgICAgICAgICAgbG9hZChzcmNP
ZmZzZXQgLSBtX3NyY09mZnNldEFkanVzdG1lbnQsIHJlZ1RvU3RvcmUpOworICAgICAgICAgICAg
bG9hZChzcmNPZmZzZXQgLSBtX3NyY09mZnNldEFkanVzdG1lbnQsIHJlZ1RvU3RvcmUsIHNpemVv
Zih2b2lkKikpOwogICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZS50eXBlID09IFNvdXJjZTo6VHlw
ZTo6UmVnKQogICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHNvdXJjZS5nZXRSZWc8UmVnVHlwZT4o
KTsKICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHJlZ1R5cGVJc0dQUikgewpAQCAtNDc2LDIw
ICs1MTcsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUsIG1fZGVm
ZXJyZWRTdG9yZU9mZnNldCAtIG1fZHN0T2Zmc2V0QWRqdXN0bWVudCk7CisgICAgICAgIHN0b3Jl
KHJlZ1RvU3RvcmUsIG1fZGVmZXJyZWRTdG9yZU9mZnNldCAtIG1fZHN0T2Zmc2V0QWRqdXN0bWVu
dCwgc2l6ZW9mKHZvaWQqKSk7CiAgICAgICAgIG1fY3VycmVudFNvdXJjZSA9IDA7CiAgICAgfQog
CiBwdWJsaWM6Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRHUFIoaW50IHNyY09mZnNldCkg
eyBsb2FkPEdQUlJlZz4oc3JjT2Zmc2V0KTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb3B5
R1BSKEdQUlJlZyBncHIpIHsgY29weTxHUFJSZWc+KGdwcik7IH0KLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgbW92ZUNvbnN0YW50KEVuY29kZWRKU1ZhbHVlIHZhbHVlKSB7IG1vdmUodmFsdWUpOyB9
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlR1BSKGludCBkc3RPZmZzZXQpIHsgc3RvcmU8
R1BSUmVnPihkc3RPZmZzZXQpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRHUFIoaW50
IHNyY09mZnNldCkgeyBsb2FkPEdQUlJlZz4oc3JjT2Zmc2V0LCBzaXplb2Yodm9pZCopKTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb3B5R1BSKEdQUlJlZyBncHIpIHsgY29weTxHUFJSZWc+
KGdwciwgc2l6ZW9mKHZvaWQqKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbW92ZUNvbnN0
YW50KEVuY29kZWRKU1ZhbHVlIHZhbHVlKSB7IG1vdmUodmFsdWUsIHNpemVvZih2b2lkKikpOyB9
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlR1BSKGludCBkc3RPZmZzZXQpIHsgc3RvcmU8
R1BSUmVnPihkc3RPZmZzZXQsIHNpemVvZih2b2lkKikpOyB9CiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIGZpbmFsaXplR1BSKCkgeyBmaW5hbGl6ZTxHUFJSZWc+KCk7IH0KIAotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBsb2FkRlBSKGludCBzcmNPZmZzZXQpIHsgbG9hZDxGUFJSZWc+KHNyY09mZnNl
dCk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weUZQUihGUFJSZWcgZ3ByKSB7IGNvcHk8
RlBSUmVnPihncHIpOyB9Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlRlBSKGludCBkc3RP
ZmZzZXQpIHsgc3RvcmU8RlBSUmVnPihkc3RPZmZzZXQpOyB9CisgICAgQUxXQVlTX0lOTElORSB2
b2lkIGxvYWRGUFIoaW50IHNyY09mZnNldCwgdW5zaWduZWQgYnl0ZXNXaWR0aCkgeyBsb2FkPEZQ
UlJlZz4oc3JjT2Zmc2V0LCBieXRlc1dpZHRoKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBj
b3B5RlBSKEZQUlJlZyBncHIsIHVuc2lnbmVkIGJ5dGVzV2lkdGgpIHsgY29weTxGUFJSZWc+KGdw
ciwgYnl0ZXNXaWR0aCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVGUFIoaW50IGRz
dE9mZnNldCwgdW5zaWduZWQgYnl0ZXNXaWR0aCkgeyBzdG9yZTxGUFJSZWc+KGRzdE9mZnNldCwg
Ynl0ZXNXaWR0aCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmluYWxpemVGUFIoKSB7IGZp
bmFsaXplPEZQUlJlZz4oKTsgfQogCiBwcm90ZWN0ZWQ6CkBAIC01MDIsMjQgKzU0MywzMiBAQCBw
cm90ZWN0ZWQ6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIG1vdmUoRW5jb2RlZEpT
VmFsdWUsIEdQUlJlZykgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAjZW5kaWYK
IAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkKGludCBvZmZzZXQsIEdQUlJlZyBkZXN0KQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkKGludCBvZmZzZXQsIEdQUlJlZyBkZXN0LCB1bnNp
Z25lZCBieXRlc1dpZHRoKQogICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dpZHRo
LCBieXRlc1dpZHRoID09IHNpemVvZih2b2lkKikpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEFk
ZHJlc3MobV9zcmNCdWZmZXJHUFIsIG9mZnNldCksIGRlc3QpOwogICAgIH0KIAotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzdG9yZShHUFJSZWcgc3JjLCBpbnQgb2Zmc2V0KQorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzdG9yZShHUFJSZWcgc3JjLCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBieXRlc1dp
ZHRoKQogICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dpZHRoLCBieXRlc1dpZHRo
ID09IHNpemVvZih2b2lkKikpOwogICAgICAgICBtX2ppdC5zdG9yZVB0cihzcmMsIEFkZHJlc3Mo
bV9kc3RCdWZmZXJHUFIsIG9mZnNldCkpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBsb2FkKGludCBvZmZzZXQsIEZQUlJlZyBkZXN0KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBs
b2FkKGludCBvZmZzZXQsIEZQUlJlZyBkZXN0LCB1bnNpZ25lZCBieXRlc1dpZHRoKQogICAgIHsK
LSAgICAgICAgbV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fc3JjQnVmZmVyR1BSLCBvZmZzZXQp
LCBkZXN0KTsKKyAgICAgICAgaWYgKGJ5dGVzV2lkdGggPiA4KQorICAgICAgICAgICAgbV9qaXQu
bG9hZFZlY3RvcihBZGRyZXNzKG1fc3JjQnVmZmVyR1BSLCBvZmZzZXQpLCBkZXN0KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fc3JjQnVmZmVy
R1BSLCBvZmZzZXQpLCBkZXN0KTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3Rv
cmUoRlBSUmVnIHNyYywgaW50IG9mZnNldCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmUo
RlBSUmVnIHNyYywgaW50IG9mZnNldCwgdW5zaWduZWQgYnl0ZXNXaWR0aCkKICAgICB7Ci0gICAg
ICAgIG1faml0LnN0b3JlRG91YmxlKHNyYywgQWRkcmVzcyhtX2RzdEJ1ZmZlckdQUiwgb2Zmc2V0
KSk7CisgICAgICAgIGlmIChieXRlc1dpZHRoID4gOCkKKyAgICAgICAgICAgIG1faml0LnN0b3Jl
VmVjdG9yKHNyYywgQWRkcmVzcyhtX2RzdEJ1ZmZlckdQUiwgb2Zmc2V0KSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKHNyYywgQWRkcmVzcyhtX2RzdEJ1ZmZl
ckdQUiwgb2Zmc2V0KSk7CiAgICAgfQogCiAjaWYgQ1BVKEFSTTY0KQpAQCAtNTUzLDkgKzYwMiw2
IEBAIHByb3RlY3RlZDoKICAgICBGUFJSZWcgbV90ZW1wMkZQUjsKIAogcHJpdmF0ZToKLSAgICBz
dGF0aWMgY29uc3RleHByIGludCBncHJTaXplID0gc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoQ1BV
UmVnaXN0ZXIpKTsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBmcHJTaXplID0gc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoZG91YmxlKSk7Ci0KICAgICAvLyBUaGVzZSBwb2ludCB0byB3aGljaCBy
ZWdpc3RlciB0byB1c2UuCiAgICAgR1BSUmVnIG1fZ3ByVG9TdG9yZSB7IEludmFsaWRHUFJSZWcg
fTsgLy8gT25seSB1c2VkIHdoZW4gIWhhc1BhaXJPcC4KICAgICBGUFJSZWcgbV9mcHJUb1N0b3Jl
IHsgSW52YWxpZEZQUlJlZyB9OyAvLyBPbmx5IHVzZWQgd2hlbiAhaGFzUGFpck9wLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCA1MmExM2FhYWZiNzcuLjE3YmVkMzViMDczNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKQEAgLTQxMCw5ICs0MTAsMTEgQEAgcHVi
bGljOgogI2lmICFPUyhXSU5ET1dTKQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTIDZ1CiAjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDV1CisjZGVm
aW5lIFNJWkVfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA1dQogI2Vsc2UKICNkZWZpbmUgTlVN
QkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0dQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NB
VkVTX1JFR0lTVEVSUyA3dQorI2RlZmluZSBTSVpFX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMg
N3UKICNlbmRpZgogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTU1Miw2ICs1NTQsNyBAQCBzdGF0aWNf
YXNzZXJ0KEdQUkluZm86OnJldHVyblZhbHVlR1BSMiA9PSBYODZSZWdpc3RlcnM6OmVkeCk7CiAj
aWYgQ1BVKEFSTV9USFVNQjIpCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMg
NHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMnUKKyNkZWZpbmUg
U0laRV9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDJ1CiAKIGNsYXNzIEdQUkluZm8gewogcHVi
bGljOgpAQCAtNjIwLDcgKzYyMyw4IEBAIHB1YmxpYzoKICNpZiBDUFUoQVJNNjQpCiAjZGVmaW5l
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgOHUKIC8vIENhbGxlZSBTYXZlcyBpbmNsdWRl
cyB4MTkuLngyOCBhbmQgRlAgcmVnaXN0ZXJzIHE4Li5xMTUKLSNkZWZpbmUgTlVNQkVSX09GX0NB
TExFRV9TQVZFU19SRUdJU1RFUlMgMTh1CisjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNf
UkVHSVNURVJTICgxMHUrOHUpCisjZGVmaW5lIFNJWkVfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVS
UyAoMTB1Kzh1KjIpCiAKIGNsYXNzIEdQUkluZm8gewogcHVibGljOgpAQCAtNzQxLDYgKzc0NSw3
IEBAIHB1YmxpYzoKICNpZiBDUFUoTUlQUykKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JF
R0lTVEVSUyA0dQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAydQor
I2RlZmluZSBTSVpFX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMnUKIAogY2xhc3MgR1BSSW5m
byB7CiBwdWJsaWM6CkBAIC04MjAsNiArODI1LDcgQEAgcHVibGljOgogCiAjZGVmaW5lIE5VTUJF
Ul9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgOHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZF
U19SRUdJU1RFUlMgMjN1CisjZGVmaW5lIFNJWkVfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAy
M3UKIAogY2xhc3MgR1BSSW5mbyB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwCmluZGV4IGVkODMwM2RlNDFiNS4uMGQz
ODk0NWZkNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
QXRPZmZzZXRMaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
QXRPZmZzZXRMaXN0LmNwcApAQCAtMjQsNiArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExp
c3QuaCIKIAogI2lmIEVOQUJMRShBU1NFTUJMRVIpCkBAIC0zOSwxNiArNDAsMTcgQEAgUmVnaXN0
ZXJBdE9mZnNldExpc3Q6OlJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkgeyB9CiBSZWdpc3RlckF0T2Zm
c2V0TGlzdDo6UmVnaXN0ZXJBdE9mZnNldExpc3QoUmVnaXN0ZXJTZXQgcmVnaXN0ZXJTZXQsIE9m
ZnNldEJhc2VUeXBlIG9mZnNldEJhc2VUeXBlKQogICAgIDogbV9yZWdpc3RlcnMocmVnaXN0ZXJT
ZXQubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSkKIHsKLSAgICBzaXplX3QgbnVtYmVyT2ZSZWdpc3Rl
cnMgPSByZWdpc3RlclNldC5udW1iZXJPZlNldFJlZ2lzdGVycygpOworICAgIHNpemVfdCBudW1i
ZXJPZkZQUnMgPSByZWdpc3RlclNldC5udW1iZXJPZlNldEZQUnMoKTsKKyAgICBzaXplX3QgbnVt
YmVyT2ZHUFJzID0gcmVnaXN0ZXJTZXQubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSAtIG51bWJlck9m
RlBSczsKICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gMDsKICAgICAKICAgICBpZiAob2Zmc2V0QmFz
ZVR5cGUgPT0gRnJhbWVQb2ludGVyQmFzZWQpCi0gICAgICAgIG9mZnNldCA9IC0oc3RhdGljX2Nh
c3Q8cHRyZGlmZl90PihudW1iZXJPZlJlZ2lzdGVycykgKiBzaXplb2YoQ1BVUmVnaXN0ZXIpKTsK
KyAgICAgICAgb2Zmc2V0ID0gLShzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KG51bWJlck9mR1BScykg
KiBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkdQKSkgKyBzdGF0
aWNfY2FzdDxwdHJkaWZmX3Q+KG51bWJlck9mRlBScykgKiBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6
Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwog
ICAgIHJlZ2lzdGVyU2V0LmZvckVhY2goWyZdIChSZWcgcmVnKSB7CiAgICAgICAgIG1fcmVnaXN0
ZXJzW2luZGV4XSA9IFJlZ2lzdGVyQXRPZmZzZXQocmVnLCBvZmZzZXQpOwotICAgICAgICBvZmZz
ZXQgKz0gc2l6ZW9mKENQVVJlZ2lzdGVyKTsKKyAgICAgICAgb2Zmc2V0ICs9IEIzOjpieXRlc0Zv
cldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6YmFua0ZvclJlZyhyZWcpKSk7CiAgICAg
ICAgICsraW5kZXg7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAKaW5kZXggMjI0ZTI1MzQ5MzRiLi45
M2I2ZmNjMzk2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB1bnNpZ25lZCBT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwo
QXNzZW1ibHlIZWxwZQogICAgIGlmICghdXNlZFJlZ2lzdGVycy5udW1iZXJPZlNldFJlZ2lzdGVy
cygpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICB1bnNpZ25lZCBzdGFja09mZnNldCA9
ICh1c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkpICogc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKTsKKyAgICB1bnNpZ25lZCBzdGFja09mZnNldCA9ICh1c2VkUmVnaXN0ZXJzLm51bWJl
ck9mU2V0R1BScygpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgKyAodXNlZFJlZ2lzdGVycy5u
dW1iZXJPZlNldEZQUnMoKSAqIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0
aChCMzo6RlApKSk7CiAgICAgc3RhY2tPZmZzZXQgKz0gZXh0cmFCeXRlc0F0VG9wT2ZTdGFjazsK
ICAgICBzdGFja09mZnNldCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVu
dEJ5dGVzKCksIHN0YWNrT2Zmc2V0KTsKICAgICBqaXQuc3ViUHRyKApAQCAtMTg2LDEyICsxODYs
MTQgQEAgdW5zaWduZWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVy
c1RvU3RhY2tGb3JDYWxsKEFzc2VtYmx5SGVscGUKICAgICB9CiAgICAgc3Bvb2xlci5maW5hbGl6
ZUdQUigpOwogCisgICAgdW5zaWduZWQgZnByQ291bnQgPSAwOwogICAgIGZvciAoRlBSUmVnIHJl
ZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1i
bGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQUmVnaXN0
ZXIocmVnKSkgewogICAgICAgICBpZiAodXNlZFJlZ2lzdGVycy5nZXQocmVnKSkgewotICAgICAg
ICAgICAgc3Bvb2xlci5zdG9yZUZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihleHRy
YUJ5dGVzQXRUb3BPZlN0YWNrICsgKGNvdW50ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpIH0p
OwotICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgICAgIHNwb29sZXIuc3RvcmVGUFIoeyBy
ZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChjb3Vu
dCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpICsgKGZwckNvdW50ICogQjM6OmJ5dGVzRm9yV2lk
dGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpKSkgfSwgQjM6OmJ5dGVzRm9yV2lkdGgo
QjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpKTsKKyAgICAgICAgICAgIGZwckNvdW50Kys7
CiAgICAgICAgIH0KICAgICB9CisgICAgY291bnQgKz0gZnByQ291bnQ7CiAgICAgc3Bvb2xlci5m
aW5hbGl6ZUZQUigpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoY291bnQgPT0gdXNlZFJlZ2lzdGVy
cy5udW1iZXJPZlNldFJlZ2lzdGVycygpKTsKQEAgLTIxOSwxNiArMjIxLDE4IEBAIHZvaWQgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChB
c3NlbWJseUhlbHBlcnMmCiAgICAgfQogICAgIHNwb29sZXIuZmluYWxpemVHUFIoKTsKIAorICAg
IHVuc2lnbmVkIGZwckNvdW50ID0gMDsKICAgICBmb3IgKEZQUlJlZyByZWcgPSBNYWNyb0Fzc2Vt
Ymxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVn
aXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJlZykpIHsKICAg
ICAgICAgaWYgKHVzZWRSZWdpc3RlcnMuZ2V0KHJlZykpIHsKICAgICAgICAgICAgIGlmICghaWdu
b3JlLmdldChyZWcpKQotICAgICAgICAgICAgICAgIHNwb29sZXIubG9hZEZQUih7IHJlZywgc3Rh
dGljX2Nhc3Q8cHRyZGlmZl90PihleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkgKiBjb3VudCkpIH0pOwotICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAg
ICAgICAgICBzcG9vbGVyLmxvYWRGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZXh0
cmFCeXRlc0F0VG9wT2ZTdGFjayArIChjb3VudCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpICsg
KGZwckNvdW50ICogQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpG
UCkpKSkgfSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkp
KTsKKyAgICAgICAgICAgIGZwckNvdW50Kys7CiAgICAgICAgIH0KICAgICB9CisgICAgY291bnQg
Kz0gZnByQ291bnQ7CiAgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigpOwogCi0gICAgdW5zaWduZWQg
c3RhY2tPZmZzZXQgPSAodXNlZFJlZ2lzdGVycy5udW1iZXJPZlNldFJlZ2lzdGVycygpKSAqIHNp
emVvZihFbmNvZGVkSlNWYWx1ZSk7CisgICAgdW5zaWduZWQgc3RhY2tPZmZzZXQgPSAodXNlZFJl
Z2lzdGVycy5udW1iZXJPZlNldEdQUnMoKSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpICsgKHVz
ZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRGUFJzKCkgKiBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29u
c2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOwogICAgIHN0YWNrT2Zmc2V0ICs9IGV4dHJhQnl0ZXNB
dFRvcE9mU3RhY2s7CiAgICAgc3RhY2tPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yo
c3RhY2tBbGlnbm1lbnRCeXRlcygpLCBzdGFja09mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2ltZEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvU2ltZEluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk1
NGU4MzIxMmQ0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
U2ltZEluZm8uaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeworCit0eXBl
ZGVmIHVuaW9uIHYxMjhfdSB7CisgICAgdWludDhfdCB1OHgxNlsxNl07CisgICAgdWludDE2X3Qg
dTE2eDhbOF07CisgICAgdWludDMyX3QgdTMyeDRbNF07CisgICAgdWludDY0X3QgdTY0eDJbMl0g
PSB7IDAsIDAgfTsKK30gdjEyOF90OworCitlbnVtIGNsYXNzIFNpbWRMYW5lSW50ZXJwcmV0YXRp
b24gOiB1aW50OF90IHsKKyAgICB2MTI4LCBpOHgxNiwgaTE2eDgsIGkzMng0LCBpNjR4MiwgZjMy
eDQsIGY2NHgyCit9OworCitlbnVtIGNsYXNzIFNpbWRTaWduRXh0ZW5kTW9kZSA6IHVpbnQ4X3Qg
eworICAgIE5BLCBTLCBVCit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IDNlNTM3OTA1MjI3MS4uY2EzZThk
MGU5MTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1i
bHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20K
QEAgLTM5LDYgKzM5LDcgQEAgZWxzZQogZW5kCiBjb25zdCBOdW1iZXJPZldhc21Bcmd1bWVudEZQ
UnMgPSA4CiBjb25zdCBOdW1iZXJPZldhc21Bcmd1bWVudHMgPSBOdW1iZXJPZldhc21Bcmd1bWVu
dEdQUnMgKyBOdW1iZXJPZldhc21Bcmd1bWVudEZQUnMKK2NvbnN0IFdhc21Bcmd1bWVudHNTaXpl
SW5SZWdpc3RlcnMgPSBOdW1iZXJPZldhc21Bcmd1bWVudEdQUnMgKyAyKk51bWJlck9mV2FzbUFy
Z3VtZW50RlBScwogCiAjIEFsbCBjYWxsZWUgc2F2ZXMgbXVzdCBtYXRjaCB0aGUgZGVmaW5pdGlv
biBpbiBXYXNtQ2FsbGVlLmNwcAogCkBAIC03MCwxNCArNzEsMTQgQEAgbWFjcm8gZm9yRWFjaEFy
Z3VtZW50R1BSKGZuKQogZW5kCiAKIG1hY3JvIGZvckVhY2hBcmd1bWVudEZQUihmbikKLSAgICBm
bigoTnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICsgMCkgKiA4LCB3ZmEwKQotICAgIGZuKChOdW1i
ZXJPZldhc21Bcmd1bWVudEdQUnMgKyAxKSAqIDgsIHdmYTEpCi0gICAgZm4oKE51bWJlck9mV2Fz
bUFyZ3VtZW50R1BScyArIDIpICogOCwgd2ZhMikKLSAgICBmbigoTnVtYmVyT2ZXYXNtQXJndW1l
bnRHUFJzICsgMykgKiA4LCB3ZmEzKQotICAgIGZuKChOdW1iZXJPZldhc21Bcmd1bWVudEdQUnMg
KyA0KSAqIDgsIHdmYTQpCi0gICAgZm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDUpICog
OCwgd2ZhNSkKLSAgICBmbigoTnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICsgNikgKiA4LCB3ZmE2
KQotICAgIGZuKChOdW1iZXJPZldhc21Bcmd1bWVudEdQUnMgKyA3KSAqIDgsIHdmYTcpCisgICAg
Zm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDAgKiAyKSAqIDgsIHdmYTApCisgICAgZm4o
KE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDEgKiAyKSAqIDgsIHdmYTEpCisgICAgZm4oKE51
bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDIgKiAyKSAqIDgsIHdmYTIpCisgICAgZm4oKE51bWJl
ck9mV2FzbUFyZ3VtZW50R1BScyArIDMgKiAyKSAqIDgsIHdmYTMpCisgICAgZm4oKE51bWJlck9m
V2FzbUFyZ3VtZW50R1BScyArIDQgKiAyKSAqIDgsIHdmYTQpCisgICAgZm4oKE51bWJlck9mV2Fz
bUFyZ3VtZW50R1BScyArIDUgKiAyKSAqIDgsIHdmYTUpCisgICAgZm4oKE51bWJlck9mV2FzbUFy
Z3VtZW50R1BScyArIDYgKiAyKSAqIDgsIHdmYTYpCisgICAgZm4oKE51bWJlck9mV2FzbUFyZ3Vt
ZW50R1BScyArIDcgKiAyKSAqIDgsIHdmYTcpCiBlbmQKIAogIyBIZWxwZXIgbWFjcm9zCkBAIC0x
MzUsNyArMTM2LDcgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xvZ3VlKGNvZGVCbG9j
a1JlZ2lzdGVyKQogICAgICAgICAgICAgZW5kKQogCiAgICAgICAgICAgICBmb3JFYWNoQXJndW1l
bnRGUFIobWFjcm8gKG9mZnNldCwgZnByKQotICAgICAgICAgICAgICAgIGxvYWRkIC1vZmZzZXQg
LSA4IC0gQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzICogOFtjZnJdLCBmcHIKKyAg
ICAgICAgICAgICAgICBsb2FkdiAtb2Zmc2V0IC0gOCAtIENhbGxlZVNhdmVTcGFjZUFzVmlydHVh
bFJlZ2lzdGVycyAqIDhbY2ZyXSwgZnByCiAgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgICAg
IHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQpAQCAtMzE2LDcgKzMxNyw3IEBAIG1hY3Jv
IHdhc21Qcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgbG9hZFdhc21J
bnN0YW5jZSkKICAgICBlbmQpCiAKICAgICBmb3JFYWNoQXJndW1lbnRGUFIobWFjcm8gKG9mZnNl
dCwgZnByKQotICAgICAgICBzdG9yZWQgZnByLCAtb2Zmc2V0IC0gOCAtIENhbGxlZVNhdmVTcGFj
ZUFzVmlydHVhbFJlZ2lzdGVycyAqIDhbY2ZyXQorICAgICAgICBzdG9yZXYgZnByLCAtb2Zmc2V0
IC0gOCAtIENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyAqIDhbY2ZyXQogICAgIGVu
ZCkKIAogICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JQcm9sb2d1ZSh3czApCkBAIC0zMjYsMTEgKzMy
NywxMSBAQCBtYWNybyB3YXNtUHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0
ZXIsIGxvYWRXYXNtSW5zdGFuY2UpCiAgICAgbW92ZSAwLCBQQwogCiAgICAgbG9hZGkgV2FzbTo6
TExJbnRDYWxsZWU6Om1fbnVtVmFyc1t3czBdLCB3czEKLSAgICBzdWJpIE51bWJlck9mV2FzbUFy
Z3VtZW50cyArIENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycywgd3MxCisgICAgc3Vi
aSBXYXNtQXJndW1lbnRzU2l6ZUluUmVnaXN0ZXJzICsgQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFs
UmVnaXN0ZXJzLCB3czEKICAgICBidGl6IHdzMSwgLnplcm9Jbml0aWFsaXplTG9jYWxzRG9uZQog
ICAgIG5lZ2kgd3MxCiAgICAgc3hpMnEgd3MxLCB3czEKLSAgICBsZWFwIChOdW1iZXJPZldhc21B
cmd1bWVudHMgKyBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKyAxKSAqIC04W2Nm
cl0sIHdzMAorICAgIGxlYXAgKFdhc21Bcmd1bWVudHNTaXplSW5SZWdpc3RlcnMgKyBDYWxsZWVT
YXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKyAxKSAqIC04W2Nmcl0sIHdzMAogLnplcm9Jbml0
aWFsaXplTG9jYWxzTG9vcDoKICAgICBhZGRxIDEsIHdzMQogICAgIHN0b3JlcSAwLCBbd3MwLCB3
czEsIDhdCkBAIC00MzEsNiArNDMyLDEzIEBAIG1hY3JvIG1sb2FkZChjdHgsIGZpZWxkLCBkc3Qp
CiAgICAgZW5kKQogZW5kCiAKK21hY3JvIG1sb2FkdihjdHgsIGZpZWxkLCBkc3QpCisgICAgd2dl
dHMoY3R4LCBmaWVsZCwgdDUpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShjdHgsIHQ1LCBt
YWNybyAoZnJvbSkKKyAgICAgICAgbG9hZHYgZnJvbSwgZHN0CisgICAgZW5kKQorZW5kCisKICMg
VHlwZWQgcmV0dXJucwogCiBtYWNybyByZXR1cm5xKGN0eCwgdmFsdWUpCkBAIC00NTcsNiArNDY1
LDEyIEBAIG1hY3JvIHJldHVybmQoY3R4LCB2YWx1ZSkKICAgICBkaXNwYXRjaChjdHgpCiBlbmQK
IAorbWFjcm8gcmV0dXJudihjdHgsIHZhbHVlKQorICAgIHdnZXRzKGN0eCwgbV9kc3QsIHQ1KQor
ICAgIHN0b3JldiB2YWx1ZSwgW2NmciwgdDUsIDhdCisgICAgZGlzcGF0Y2goY3R4KQorZW5kCisK
ICMgV2FzbSB3cmFwcGVyIG9mIGdldC9nZXR1IHRoYXQgb3BlcmF0ZSBvbiBjdHgKIG1hY3JvIHdn
ZXRzKGN0eCwgZmllbGQsIGRzdCkKICAgICBjdHgobWFjcm8ob3Bjb2RlTmFtZSwgb3Bjb2RlU3Ry
dWN0LCBzaXplKQpAQCAtNjIxLDEwICs2MzUsMTAgQEAgX3dhc21fZW50ZXI6CiAgICAgY2hlY2tT
dGFja1BvaW50ZXJBbGlnbm1lbnQodDIsIDB4ZGVhZDAwZTEpCiAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQyICAgICAgICAgICAgICAgIC8vIHQyPENvZGVCbG9jaz4gPSBjZnIuQ29kZUJsb2Nr
CiAgICAgbG9hZGkgV2FzbTo6TExJbnRDYWxsZWU6Om1fbnVtVmFyc1t0Ml0sIHQyICAgICAgLy8g
dDI8c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4ubV9udW1WYXJzCi0gICAgc3VicSBDYWxsZWVTYXZl
U3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKyBOdW1iZXJPZldhc21Bcmd1bWVudHMsIHQyCisgICAg
c3VicSBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKyBXYXNtQXJndW1lbnRzU2l6
ZUluUmVnaXN0ZXJzLCB0MgogICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZQogICAgIG1vdmUgY2Zy
LCB0MQotICAgIHN1YnEgQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzICogOCArIE51
bWJlck9mV2FzbUFyZ3VtZW50cyAqIDgsIHQxCisgICAgc3VicSBDYWxsZWVTYXZlU3BhY2VBc1Zp
cnR1YWxSZWdpc3RlcnMgKiA4ICsgV2FzbUFyZ3VtZW50c1NpemVJblJlZ2lzdGVycyAqIDgsIHQx
CiAgICAgbmVnaSB0MgogICAgIHN4aTJxIHQyLCB0MgogLm9wRW50ZXJMb29wOgpAQCAtNjM4LDYg
KzY1MiwxMSBAQCB1bnByZWZpeGVkV2FzbU9wKHdhc21fbm9wLCBXYXNtTm9wLCBtYWNybyhjdHgp
CiAgICAgZGlzcGF0Y2goY3R4KQogZW5kKQogCit1bnByZWZpeGVkV2FzbU9wKHdhc21fYnJlYWss
IFdhc21CcmVhaywgbWFjcm8oY3R4KQorICAgIGJyZWFrCisgICAgZGlzcGF0Y2goY3R4KQorZW5k
KQorCiB3YXNtT3AobG9vcF9oaW50LCBXYXNtTG9vcEhpbnQsIG1hY3JvKGN0eCkKICAgICBjaGVj
a1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgZGlzcGF0Y2goY3R4KQpAQCAtNzAzLDcgKzcyMiw3
IEBAIHVucHJlZml4ZWRXYXNtT3Aod2FzbV9yZXQsIFdhc21SZXQsIG1hY3JvKGN0eCkKICAgICAg
ICAgbG9hZHEgLW9mZnNldCAtIDggLSBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMg
KiA4W2Nmcl0sIGdwcgogICAgIGVuZCkKICAgICBmb3JFYWNoQXJndW1lbnRGUFIobWFjcm8gKG9m
ZnNldCwgZnByKQotICAgICAgICBsb2FkZCAtb2Zmc2V0IC0gOCAtIENhbGxlZVNhdmVTcGFjZUFz
VmlydHVhbFJlZ2lzdGVycyAqIDhbY2ZyXSwgZnByCisgICAgICAgIGxvYWR2IC1vZmZzZXQgLSA4
IC0gQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzICogOFtjZnJdLCBmcHIKICAgICBl
bmQpCiAgICAgZG9SZXR1cm4oKQogZW5kKQpAQCAtNzczLDcgKzc5Miw3IEBAIG1hY3JvIHNsb3dQ
YXRoRm9yV2FzbUNhbGwoY3R4LCBzbG93UGF0aCwgc3RvcmVXYXNtSW5zdGFuY2UpCiAgICAgICAg
ICAgICBsc2hpZnRpIDMsIHdzMQogICAgICAgICAgICAgc3VicCBjZnIsIHdzMSwgc3AKIAotICAg
ICAgICAgICAgd2dldHUoY3R4LCBtX251bWJlck9mU3RhY2tBcmdzLCB3czEpCisgICAgICAgICAg
ICB3Z2V0dShjdHgsIG1fc2l6ZU9mU3RhY2tBcmdzLCB3czEpCiAKICAgICAgICAgICAgICMgUHJl
c2VydmUgdGhlIGN1cnJlbnQgaW5zdGFuY2UKICAgICAgICAgICAgIG1vdmUgd2FzbUluc3RhbmNl
LCBQQgpAQCAtNzg3LDcgKzgwNiw3IEBAIG1hY3JvIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBz
bG93UGF0aCwgc3RvcmVXYXNtSW5zdGFuY2UpCiAgICAgICAgICAgICBlbmQpCiAKICAgICAgICAg
ICAgIGZvckVhY2hBcmd1bWVudEZQUihtYWNybyAob2Zmc2V0LCBmcHIpCi0gICAgICAgICAgICAg
ICAgbG9hZGQgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBvZmZzZXRbc3AsIHdzMSwgOF0sIGZw
cgorICAgICAgICAgICAgICAgIGxvYWR2IENhbGxGcmFtZUhlYWRlclNpemUgKyA4ICsgb2Zmc2V0
W3NwLCB3czEsIDhdLCBmcHIKICAgICAgICAgICAgIGVuZCkKIAogICAgICAgICAgICAgYWRkcCBD
YWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKQEAgLTg0MiwxNCArODYxLDE0IEBAIG1hY3JvIHNsb3dQ
YXRoRm9yV2FzbUNhbGwoY3R4LCBzbG93UGF0aCwgc3RvcmVXYXNtSW5zdGFuY2UpCiAKICAgICAg
ICAgICAgICMgQXJndW1lbnQgcmVnaXN0ZXJzIGFyZSBhbHNvIHJldHVybiByZWdpc3RlcnMsIHNv
IHRoZXkgbXVzdCBiZSBzdG9yZWQgdG8gdGhlIHN0YWNrCiAgICAgICAgICAgICAjIGluIGNhc2Ug
dGhleSBjb250YWluIHJldHVybiB2YWx1ZXMuCi0gICAgICAgICAgICB3Z2V0dShjdHgsIG1fbnVt
YmVyT2ZTdGFja0FyZ3MsIHdzMCkKKyAgICAgICAgICAgIHdnZXR1KGN0eCwgbV9zaXplT2ZTdGFj
a0FyZ3MsIHdzMCkKICAgICAgICAgICAgIG1vdmUgbWVtb3J5QmFzZSwgUEMKICAgICAgICAgICAg
IGZvckVhY2hBcmd1bWVudEdQUihtYWNybyAob2Zmc2V0LCBncHIpCiAgICAgICAgICAgICAgICAg
c3RvcmVxIGdwciwgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBvZmZzZXRbd3MxLCB3czAsIDhd
CiAgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgICAgIGZvckVhY2hBcmd1bWVudEZQUihtYWNy
byAob2Zmc2V0LCBmcHIpCi0gICAgICAgICAgICAgICAgc3RvcmVkIGZwciwgQ2FsbEZyYW1lSGVh
ZGVyU2l6ZSArIDggKyBvZmZzZXRbd3MxLCB3czAsIDhdCisgICAgICAgICAgICAgICAgc3RvcmV2
IGZwciwgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBvZmZzZXRbd3MxLCB3czAsIDhdCiAgICAg
ICAgICAgICBlbmQpCiAKICAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCkBAIC0yOTE1LDMgKzI5MzQsMTIgQEAgZW5kKQogY29t
bW9uV2FzbU9wKHdhc21fY2F0Y2hfYWxsX25vX3RscywgV2FzbUNhdGNoQWxsLCBtYWNybygpIGVu
ZCwgbWFjcm8oY3R4KQogICAgIGNhdGNoQWxsSW1wbChjdHgsIG1hY3JvKGluc3RhbmNlKSBlbmQp
CiBlbmQpCisKK3dhc21PcChzaW1kX2V4dHJhY3RfbGFuZV9pOHgxNl91LCBXYXNtU2ltZEV4dHJh
Y3RMYW5lSTh4MTZVLCBtYWNybyhjdHgpCisgICAgbWxvYWR2KGN0eCwgbV92LCBmdDApCisgICAg
d2dldHUoY3R4LCBtX2xhbmUsIHQwKQorICAgIHNwbGF0X2xhbmVfYnl0ZSB0MCwgZnQxCisgICAg
c3dpenpsZV9ieXRlIGZ0MSwgZnQwCisgICAgZXh0cmFjdF9sYW5lX2J5dGUgMCwgZnQwLCB0MAor
ICAgIHJldHVybmkoY3R4LCB0MCkKK2VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYXJtNjQucmIKaW5kZXggMWFkZDU0MGQ4MzVjLi5jMWZiN2M0MGFhMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCkBAIC0xMDIsNiArMTAyLDggQEAgZGVm
IGFybTY0RlBSTmFtZShuYW1lLCBraW5kKQogICAgIHdoZW4gOmZsb2F0CiAgICAgICAgICJzIiAr
IG5hbWVbMS4uLTFdCiAgICAgd2hlbiA6dmVjdG9yCisgICAgICAgICJxIiArIG5hbWVbMS4uLTFd
CisgICAgd2hlbiA6dmVjdG9yX3N1ZmZpeGVkCiAgICAgICAgICJ2IiArIG5hbWVbMS4uLTFdCiAg
ICAgZWxzZQogICAgICAgICByYWlzZSAiYmFkIEZQUiBraW5kICN7a2luZH0iCkBAIC0xNzcsNiAr
MTc5LDE3IEBAIGNsYXNzIFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlICJCYWQgcmVnaXN0
ZXIgbmFtZSAje0BuYW1lfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgogICAgICAgICBlbmQKICAg
ICBlbmQKKyAgICAKKyAgICBkZWYgYXJtNjRPcGVyYW5kU3VmZml4ZWQoKQorICAgICAgICBiYXNl
ID0gc2VsZi5hcm02NE9wZXJhbmQoQHN1ZmZpeF9raW5kKQorICAgICAgICBiYXNlICsgQHN1ZmZp
eAorICAgIGVuZAorICAgIAorICAgIGRlZiB3aXRoU3VmZml4KHN1ZmZpeF9raW5kLCBzdWZmaXgp
CisgICAgICAgIEBzdWZmaXhfa2luZCA9IHN1ZmZpeF9raW5kCisgICAgICAgIEBzdWZmaXggPSBz
dWZmaXguZW1wdHk/ID8gIiIgOiAiLiN7c3VmZml4fSIKKyAgICAgICAgc2VsZgorICAgIGVuZAog
ZW5kCiAKIGNsYXNzIEZQUmVnaXN0ZXJJRApAQCAtMjE3LDEyICsyMzAsNDMgQEAgY2xhc3MgRlBS
ZWdpc3RlcklECiAgICAgICAgIGVsc2UgIkJhZCByZWdpc3RlciBuYW1lICN7QG5hbWV9IGF0ICN7
Y29kZU9yaWdpblN0cmluZ30iCiAgICAgICAgIGVuZAogICAgIGVuZAorICAgIAorICAgIGRlZiBh
cm02NE9wZXJhbmRTdWZmaXhlZCgpCisgICAgICAgIGJhc2UgPSBzZWxmLmFybTY0T3BlcmFuZChA
c3VmZml4X2tpbmQpCisgICAgICAgIGluZGV4ID0gQGluZGV4ID09IDpub25lID8gIiIgOiAiIFsg
I3tAaW5kZXguYXJtNjRJbmRleCgpfSBdIgorICAgICAgICBiYXNlICsgQHN1ZmZpeCArIGluZGV4
CisgICAgZW5kCisgICAgCisgICAgZGVmIHdpdGhTdWZmaXgoc3VmZml4X2tpbmQsIHN1ZmZpeCkK
KyAgICAgICAgQHN1ZmZpeF9raW5kID0gc3VmZml4X2tpbmQKKyAgICAgICAgQHN1ZmZpeCA9IHN1
ZmZpeC5lbXB0eT8gPyAiIiA6ICIuI3tzdWZmaXh9IgorICAgICAgICBAaW5kZXggPSA6bm9uZQor
ICAgICAgICBzZWxmCisgICAgZW5kCisgICAgCisgICAgZGVmIHdpdGhJbmRleChpbmRleCkKKyAg
ICAgICAgcmFpc2UgdW5sZXNzIGluZGV4LmlzX2E/IEltbWVkaWF0ZQorICAgICAgICBAaW5kZXgg
PSBpbmRleAorICAgICAgICBzZWxmCisgICAgZW5kCiBlbmQKIAogY2xhc3MgSW1tZWRpYXRlCiAg
ICAgZGVmIGFybTY0T3BlcmFuZChraW5kKQogICAgICAgICAiXCMje3ZhbHVlfSIKICAgICBlbmQK
KyAgICAKKyAgICBkZWYgYXJtNjRPcGVyYW5kU3VmZml4ZWQoKQorICAgICAgICAiXCMje3ZhbHVl
fSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYXJtNjRJbmRleCgpCisgICAgICAgICIje3ZhbHVl
fSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgd2l0aFN1ZmZpeChfLCBfKQorICAgICAgICBzZWxm
CisgICAgZW5kCiBlbmQKIAogY2xhc3MgQWRkcmVzcwpAQCAtMzA3LDcgKzM1MSw3IEBAIGRlZiBh
cm02NExvd2VyTGFiZWxSZWZlcmVuY2VzKGxpc3QpCiAgICAgICAgIHwgbm9kZSB8CiAgICAgICAg
IGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUK
LSAgICAgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRpcyIsICJsb2FkcCIsICJsb2FkcSIsICJs
b2FkYiIsICJsb2FkYnNpIiwgImxvYWRic3EiLCAibG9hZGgiLCAibG9hZGhzaSIsICJsb2FkaHNx
IiwgImxlYXAiCisgICAgICAgICAgICB3aGVuICJsb2FkaSIsICJsb2FkaXMiLCAibG9hZHAiLCAi
bG9hZHEiLCAibG9hZGIiLCAibG9hZGJzaSIsICJsb2FkYnNxIiwgImxvYWRoIiwgImxvYWRoc2ki
LCAibG9hZGhzcSIsICJsZWFwIiwgImxvYWR2IgogICAgICAgICAgICAgICAgIGxhYmVsUmVmID0g
bm9kZS5vcGVyYW5kc1swXQogICAgICAgICAgICAgICAgIGlmIGxhYmVsUmVmLmlzX2E/IExhYmVs
UmVmZXJlbmNlCiAgICAgICAgICAgICAgICAgICAgIGRlc3QgPSBub2RlLm9wZXJhbmRzWzFdCkBA
IC0zODksNyArNDMzLDcgQEAgY2xhc3MgU2VxdWVuY2UKICAgICAgICAgICAgIHdoZW4gImxvYWRw
IiwgInN0b3JlcCIsICJsb2FkcSIsICJzdG9yZXEiLCAibG9hZGQiLCAic3RvcmVkIiwgImxzaGlm
dHAiLCAibHNoaWZ0cSIsICJuZWdwIiwgIm5lZ3EiLCAicnNoaWZ0cCIsICJyc2hpZnRxIiwKICAg
ICAgICAgICAgICAgICAidXJzaGlmdHAiLCAidXJzaGlmdHEiLCAiYWRkcCIsICJhZGRxIiwgIm11
bHAiLCAibXVscSIsICJhbmRwIiwgImFuZHEiLCAib3JwIiwgIm9ycSIsICJzdWJwIiwgInN1YnEi
LCAieG9ycCIsICJ4b3JxIiwgImFkZGQiLAogICAgICAgICAgICAgICAgICJkaXZkIiwgInN1YmQi
LCAibXVsZCIsICJzcXJ0ZCIsIC9eYnAvLCAvXmJxLywgL15idHAvLCAvXmJ0cS8sIC9eY3AvLCAv
XmNxLywgL150cC8sIC9edHEvLCAvXmJkLywKLSAgICAgICAgICAgICAgICAiam1wIiwgImNhbGwi
LCAibGVhcCIsICJsZWFxIiwgImxvYWRsaW5rYWNxcSIsICJzdG9yZWNvbmRyZWxxIiwgL15hdG9t
aWNbYS16XStxJC8KKyAgICAgICAgICAgICAgICAiam1wIiwgImNhbGwiLCAibGVhcCIsICJsZWFx
IiwgImxvYWRsaW5rYWNxcSIsICJzdG9yZWNvbmRyZWxxIiwgL15hdG9taWNbYS16XStxJC8sICJs
b2FkdiIsICJzdG9yZXYiCiAgICAgICAgICAgICAgICAgc2l6ZSA9ICRjdXJyZW50U2V0dGluZ3Nb
IkFERFJFU1M2NCJdID8gOCA6IDQKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBy
YWlzZSAiQmFkIGluc3RydWN0aW9uICN7bm9kZS5vcGNvZGV9IGZvciBoZWFwIGFjY2VzcyBhdCAj
e25vZGUuY29kZU9yaWdpblN0cmluZ306ICN7bm9kZS5kdW1wfSIKQEAgLTU4Myw3ICs2MjcsNyBA
QCBkZWYgZW1pdEFSTTY0VEFDV2l0aE9wZXJhbmRTdWZmaXgob3Bjb2RlLCBvcGVyYW5kcywga2lu
ZCkKICAgICBzaXplID0ga2luZCA9PSA6ZmxvYXQgPyA4IDogMTYKICAgICBvcGVyYW5kcyA9IG9w
ZXJhbmRzLm1hcCB7IHxvcGVyYW5kfAogICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZC5pc19h
PyBGUFJlZ2lzdGVySUQKLSAgICAgICAgIiN7b3BlcmFuZC5hcm02NE9wZXJhbmQoOnZlY3Rvcil9
LiN7c2l6ZX1iIgorICAgICAgICAiI3tvcGVyYW5kLmFybTY0T3BlcmFuZCg6dmVjdG9yX3N1ZmZp
eGVkKX0uI3tzaXplfWIiCiAgICAgfQogICAgIGlmIG9wZXJhbmRzLmxlbmd0aCA9PSAyCiAgICAg
ICBvcGVyYW5kcyA9IFtvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzBdXQpAQCAt
NTk0LDYgKzYzOCwyMyBAQCBkZWYgZW1pdEFSTTY0VEFDV2l0aE9wZXJhbmRTdWZmaXgob3Bjb2Rl
LCBvcGVyYW5kcywga2luZCkKICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzLmpv
aW4oIiwgIil9IgogZW5kCiAKK2RlZiBlbWl0QVJNNjRXaXRoT3BlcmFuZFN1ZmZpeGVzKG9wY29k
ZSwgKm9wZXJhbmRzKQorICAgIG9wZXJhbmRzID0gb3BlcmFuZHMubWFwIHsgfG9wZXJhbmR8Cisg
ICAgICAgIGlmIG9wZXJhbmQua2luZF9vZj8gQXJyYXkKKyAgICAgICAgICAgICJ7ICIgKyAob3Bl
cmFuZC5tYXAgeyB8IG8gfCBvLmFybTY0T3BlcmFuZFN1ZmZpeGVkKCkgfSkuam9pbigiLCIpICsg
IiB9IgorICAgICAgICBlbHNlCisgICAgICAgICAgICBvcGVyYW5kLmFybTY0T3BlcmFuZFN1ZmZp
eGVkKCkKKyAgICAgICAgZW5kCisgICAgfQorICAgIGlmIG9wZXJhbmRzLmxlbmd0aCA9PSAyCisg
ICAgICBvcGVyYW5kcyA9IFtvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMF1dCisgICAgZWxzZQorICAg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzLmxlbmd0aCA9PSAzCisgICAgICBvcGVyYW5kcyA9IFtv
cGVyYW5kc1syXSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdXQorICAgIGVuZAorICAgICRhc20u
cHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHMuam9pbigiLCAiKX0iCitlbmQKKwogZGVmIGVtaXRB
Uk02NChvcGNvZGUsIG9wZXJhbmRzLCBraW5kKQogICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7
YXJtNjRGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMsIGtpbmQpfSIKIGVuZApAQCAtNzg5LDYgKzg1
MCw4IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBlbWl0QVJNNjRVbmZsaXBwZWQo
InN0ciIsIG9wZXJhbmRzLCA6cHRyKQogICAgICAgICB3aGVuICJzdG9yZXEiCiAgICAgICAgICAg
ICBlbWl0QVJNNjRVbmZsaXBwZWQoInN0ciIsIG9wZXJhbmRzLCA6cXVhZCkKKyAgICAgICAgd2hl
biAic3RvcmV2IgorICAgICAgICAgICAgZW1pdEFSTTY0VW5mbGlwcGVkKCJzdHIiLCBvcGVyYW5k
cywgOnZlY3RvcikKICAgICAgICAgd2hlbiAibG9hZGIiCiAgICAgICAgICAgICBlbWl0QVJNNjRB
Y2Nlc3MoImxkcmIiLCAibGR1cmIiLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMF0sIDp3b3JkKQog
ICAgICAgICB3aGVuICJsb2FkYnNpIgpAQCAtODE5LDYgKzg4MiwxNCBAQCBjbGFzcyBJbnN0cnVj
dGlvbgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJmbXVsIiwgb3BlcmFuZHMsIDpkb3VibGUp
CiAgICAgICAgIHdoZW4gInNxcnRkIgogICAgICAgICAgICAgZW1pdEFSTTY0KCJmc3FydCIsIG9w
ZXJhbmRzLCA6ZG91YmxlKQorICAgICAgICB3aGVuICJsb2FkdiIKKyAgICAgICAgICAgIGVtaXRB
Uk02NEFjY2VzcygibGRyIiwgImxkdXIiLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMF0sIDp2ZWN0
b3IpCisgICAgICAgIHdoZW4gInNwbGF0X2xhbmVfYnl0ZSIKKyAgICAgICAgICAgIGVtaXRBUk02
NFdpdGhPcGVyYW5kU3VmZml4ZXMoImR1cCIsIG9wZXJhbmRzWzBdLndpdGhTdWZmaXgoOndvcmQs
ICIiKSwgb3BlcmFuZHNbMV0ud2l0aFN1ZmZpeCg6dmVjdG9yX3N1ZmZpeGVkLCAiMTZiIikpCisg
ICAgICAgIHdoZW4gInN3aXp6bGVfYnl0ZSIKKyAgICAgICAgICAgIGVtaXRBUk02NFdpdGhPcGVy
YW5kU3VmZml4ZXMoInRibCIsIFsgb3BlcmFuZHNbMV0ud2l0aFN1ZmZpeCg6dmVjdG9yX3N1ZmZp
eGVkLCAiMTZiIikgXSwgb3BlcmFuZHNbMF0ud2l0aFN1ZmZpeCg6dmVjdG9yX3N1ZmZpeGVkLCAi
MTZiIiksIG9wZXJhbmRzWzFdLndpdGhTdWZmaXgoOnZlY3Rvcl9zdWZmaXhlZCwgIjE2YiIpKQor
ICAgICAgICB3aGVuICJleHRyYWN0X2xhbmVfYnl0ZSIKKyAgICAgICAgICAgIGVtaXRBUk02NFdp
dGhPcGVyYW5kU3VmZml4ZXMoInVtb3YiLCBvcGVyYW5kc1sxXS53aXRoU3VmZml4KDp2ZWN0b3Jf
c3VmZml4ZWQsICJCIikud2l0aEluZGV4KG9wZXJhbmRzWzBdKSwgb3BlcmFuZHNbMl0ud2l0aFN1
ZmZpeCg6d29yZCwgIiIpKQogICAgICAgICB3aGVuICJiZGVxIgogICAgICAgICAgICAgZW1pdEFS
TTY0QnJhbmNoKCJmY21wIiwgb3BlcmFuZHMsIDpkb3VibGUsICJiLmVxIikKICAgICAgICAgd2hl
biAiYmRuZXEiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9p
bnN0cnVjdGlvbnMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVj
dGlvbnMucmIKaW5kZXggNDgxNDNhOTBiMDgwLi43ZTAzN2VjZTliMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKQEAgLTcyLDYgKzcy
LDExIEBAIE1BQ1JPX0lOU1RSVUNUSU9OUyA9CiAgICAgICJzdG9yZWIiLAogICAgICAibG9hZGYi
LAogICAgICAibG9hZGQiLAorICAgICAibG9hZHYiLAorICAgICAiZXh0cmFjdF9sYW5lX2J5dGUi
LAorICAgICAic3dpenpsZV9ieXRlIiwKKyAgICAgInJlcGxhY2VfbGFuZV9ieXRlIiwKKyAgICAg
InNwbGF0X2xhbmVfYnl0ZSIsCiAgICAgICJtb3ZlZCIsCiAgICAgICJzdG9yZWYiLAogICAgICAi
c3RvcmVkIiwKQEAgLTI4OSw2ICsyOTQsNyBAQCBNQUNST19JTlNUUlVDVElPTlMgPQogICAgICAi
Y3FsdCIsCiAgICAgICJjcWx0ZXEiLAogICAgICAic3RvcmVxIiwKKyAgICAgInN0b3JldiIsCiAg
ICAgICJidHFzIiwKICAgICAgImJ0cXoiLAogICAgICAiYnRxbnoiLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIKaW5kZXggMGYwNzJlOWZkMTFlLi4xYTI3M2NhYjMyNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgpAQCAtMjU5LDggKzI1
OSwxMiBAQCBkZWYgcmlzY0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzRG91YmxlKGxpc3QpCiAgICAg
ICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCiAgICAgICAgICAgICB3aGVuICJsb2FkZCIKICAgICAg
ICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJs
b2FkZCIsIFtub2RlLm9wZXJhbmRzWzBdLnJpc2NEb3VibGVBZGRyZXNzKG5ld0xpc3QpLCBub2Rl
Lm9wZXJhbmRzWzFdXSwgbm9kZS5hbm5vdGF0aW9uKQorICAgICAgICAgICAgd2hlbiAibG9hZHYi
CisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3Jp
Z2luLCAibG9hZHYiLCBbbm9kZS5vcGVyYW5kc1swXS5yaXNjRG91YmxlQWRkcmVzcyhuZXdMaXN0
KSwgbm9kZS5vcGVyYW5kc1sxXV0sIG5vZGUuYW5ub3RhdGlvbikKICAgICAgICAgICAgIHdoZW4g
InN0b3JlZCIKICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2Rl
LmNvZGVPcmlnaW4sICJzdG9yZWQiLCBbbm9kZS5vcGVyYW5kc1swXSwgbm9kZS5vcGVyYW5kc1sx
XS5yaXNjRG91YmxlQWRkcmVzcyhuZXdMaXN0KV0sIG5vZGUuYW5ub3RhdGlvbikKKyAgICAgICAg
ICAgIHdoZW4gInN0b3JldiIKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhub2RlLmNvZGVPcmlnaW4sICJzdG9yZXYiLCBbbm9kZS5vcGVyYW5kc1swXSwgbm9kZS5v
cGVyYW5kc1sxXS5yaXNjRG91YmxlQWRkcmVzcyhuZXdMaXN0KV0sIG5vZGUuYW5ub3RhdGlvbikK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKICAgICAg
ICAgICAgIGVuZApAQCAtNDMyLDcgKzQzNiw3IEBAIGRlZiByaXNjTG93ZXJPcGVyYW5kVG9SZWdp
c3RlcihpbnNuLCBwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFuZEluZGV4LCBzdWZmaXgsIG5lCiAg
ICAgb3BlcmFuZCA9IGluc24ub3BlcmFuZHNbb3BlcmFuZEluZGV4XQogICAgIHJldHVybiBvcGVy
YW5kIHVubGVzcyBvcGVyYW5kLmFkZHJlc3M/CiAKLSAgICB0bXAgPSBUbXAubmV3KGluc24uY29k
ZU9yaWdpbiwgaWYgc3VmZml4ID09ICJkIiB0aGVuIDpmcHIgZWxzZSA6Z3ByIGVuZCkKKyAgICB0
bXAgPSBUbXAubmV3KGluc24uY29kZU9yaWdpbiwgaWYgc3VmZml4ID09ICJkIiBvciBzdWZmaXgg
PT0gInYiIHRoZW4gOmZwciBlbHNlIDpncHIgZW5kKQogICAgIHByZUxpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KGluc24uY29kZU9yaWdpbiwgImxvYWQiICsgc3VmZml4LCBbb3BlcmFuZCwgdG1wXSkK
ICAgICBpZiBuZWVkU3RvcmUKICAgICAgICAgcG9zdExpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGlu
c24uY29kZU9yaWdpbiwgInN0b3JlIiArIHN1ZmZpeCwgW3RtcCwgb3BlcmFuZF0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKaW5kZXggOTVlNGM5YzJmYzczLi45ZDI4ZGM1
OTNlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5y
YgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKQEAgLTMzMSw3
ICszMzEsNyBAQCBlbmQKIAogY2xhc3MgRlBSZWdpc3RlcklECiAgICAgZGVmIHg4Nk9wZXJhbmQo
a2luZCkKLSAgICAgICAgcmFpc2UgdW5sZXNzIFs6ZmxvYXQsIDpkb3VibGVdLmluY2x1ZGU/IGtp
bmQKKyAgICAgICAgcmFpc2UgdW5sZXNzIFs6ZmxvYXQsIDpkb3VibGUsIDp2ZWN0b3JdLmluY2x1
ZGU/IGtpbmQKICAgICAgICAgY2FzZSBuYW1lCiAgICAgICAgIHdoZW4gImZ0MCIsICJmYTAiLCAi
ZnIiLCAid2ZhMCIKICAgICAgICAgICAgIHJlZ2lzdGVyKCJ4bW0wIikKQEAgLTEyMzAsMTIgKzEy
MzAsMjYgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgICRhc20ucHV0cyAibW92c3Mg
I3t4ODZPcGVyYW5kcyg6ZmxvYXQsIDpmbG9hdCl9IgogICAgICAgICB3aGVuICJsb2FkZCIKICAg
ICAgICAgICAgICRhc20ucHV0cyAibW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91Ymxl
KX0iCisgICAgICAgIHdoZW4gImxvYWR2IgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZkcXUg
I3t4ODZPcGVyYW5kcyg6aW50LCA6ZG91YmxlKX0iCisgICAgICAgIHdoZW4gImV4dHJhY3RfbGFu
ZV9ieXRlIgorICAgICAgICAgICAgJGFzbS5wdXRzICJwZXh0cmIgI3t4ODZPcGVyYW5kcyg6Ynl0
ZSwgOmRvdWJsZSwgOmludCl9IgorICAgICAgICB3aGVuICJzd2l6emxlX2J5dGUiCisgICAgICAg
ICAgICAkYXNtLnB1dHMgInBzaHVmYiAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIK
KyAgICAgICAgd2hlbiAicmVwbGFjZV9sYW5lX2J5dGUiCisgICAgICAgICAgICAkYXNtLnB1dHMg
InBpbnNyYiAje3g4Nk9wZXJhbmRzKDpieXRlLCA6aW50LCA6ZG91YmxlKX0iCisgICAgICAgIHdo
ZW4gInNwbGF0X2xhbmVfYnl0ZSIKKyAgICAgICAgICAgICRhc20ucHV0cyAicHhvciAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOnZlY3Rvcil9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOnZl
Y3Rvcil9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJwaW5zcmIgI3tjb25zdCgwKX0sICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6dmVj
dG9yKX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgInZwYnJvYWRjYXN0YiAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmZsb2F0KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6dmVjdG9yKX0i
CiAgICAgICAgIHdoZW4gIm1vdmVkIgogICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZzZCAje3g4
Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKICAgICAgICAgd2hlbiAic3RvcmVmIgogICAg
ICAgICAgICAgJGFzbS5wdXRzICJtb3ZzcyAje3g4Nk9wZXJhbmRzKDpmbG9hdCwgOmZsb2F0KX0i
CiAgICAgICAgIHdoZW4gInN0b3JlZCIKICAgICAgICAgICAgICRhc20ucHV0cyAibW92c2QgI3t4
ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgICAgIHdoZW4gInN0b3JldiIKKyAg
ICAgICAgICAgICRhc20ucHV0cyAibW92dXBzICN7eDg2T3BlcmFuZHMoOnZlY3RvciwgOnZlY3Rv
cil9IgogICAgICAgICB3aGVuICJhZGRmIgogICAgICAgICAgICAgaGFuZGxlWDg2QWRkRlAoOmZs
b2F0KQogICAgICAgICB3aGVuICJhZGRkIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnNMaXN0LmgKaW5kZXggYmY5ZDhhMzgzZjczLi5mZTk1NTI1ZmY4MGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTQ5LDYgKzU0OSw3
IEBAIGJvb2wgY2FuVXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCk7CiAgICAgdihCb29sLCB1c2VX
ZWJBc3NlbWJseVRocmVhZGluZywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgaW5zdHJ1Y3Rpb25zIGZy
b20gdGhlIHdhc20gdGhyZWFkaW5nIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1i
bHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcywgZmFsc2UsIE5vcm1hbCwgIkFsbG93IGZ1bmN0aW9u
IHR5cGVzIGZyb20gdGhlIHdhc20gdHlwZWQgZnVuY3Rpb24gcmVmZXJlbmNlcyBzcGVjLiIpIFwK
ICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5RXhjZXB0aW9ucywgdHJ1ZSwgTm9ybWFsLCAiQWxs
b3cgdGhlIG5ldyBzZWN0aW9uIGFuZCBpbnN0cnVjdGlvbnMgZnJvbSB0aGUgd2FzbSBleGNlcHRp
b24gaGFuZGxpbmcgc3BlYy4iKSBcCisgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVNJTUQsIHRy
dWUsIE5vcm1hbCwgIkFsbG93IHRoZSBuZXcgc2ltZCBpbnN0cnVjdGlvbnMgYW5kIHR5cGVzIGZy
b20gdGhlIHdhc20gc2ltZCBzcGVjLiIpIFwKIAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3Bw
CmluZGV4IDViYzQyNjA5MmI5MS4uYTAwNDNiYzE4NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTMyNyw4ICszMjcsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBmaW5hbGl6ZUVudHJ5cG9pbnRzKCk7CiAKICAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJik7
Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkTG9jYWwoVHlwZSwgdWlu
dDMyX3QpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZExvY2FsKFR5
cGUsIHVpbnQzMl90LCB1aW50MzJfdCk7CiAgICAgRXhwcmVzc2lvblR5cGUgYWRkQ29uc3RhbnQo
VHlwZSwgdWludDY0X3QpOworICAgIEV4cHJlc3Npb25UeXBlIGFkZENvbnN0YW50KHYxMjhfdCk7
CiAgICAgRXhwcmVzc2lvblR5cGUgYWRkQ29uc3RhbnQoQmFzaWNCbG9jayosIFR5cGUsIHVpbnQ2
NF90KTsKICAgICBFeHByZXNzaW9uVHlwZSBhZGRCb3R0b20oQmFzaWNCbG9jayosIFR5cGUpOwog
CkBAIC0zNDcsOCArMzQ4LDggQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIGFkZFRhYmxlQ29weSh1bnNpZ25lZCwgdW5zaWduZWQsIEV4cHJlc3Npb25UeXBl
IGRzdE9mZnNldCwgRXhwcmVzc2lvblR5cGUgc3JjT2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBsZW5n
dGgpOwogCiAgICAgLy8gTG9jYWxzCi0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHNldExvY2FsKHVpbnQzMl90IGluZGV4
LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIFdhc206OlR5cGUsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHNldExvY2Fs
KHVpbnQzMl90IGluZGV4LCBXYXNtOjpUeXBlLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSk7CiAKICAg
ICAvLyBHbG9iYWxzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZ2V0R2xv
YmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTM5OCw3ICsz
OTksNyBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRk
Q2F0Y2hBbGxUb1VucmVhY2hhYmxlKENvbnRyb2xUeXBlJik7CiAgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYWRkRGVsZWdhdGUoQ29udHJvbFR5cGUmLCBDb250cm9sVHlwZSYp
OwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZERlbGVnYXRlVG9VbnJl
YWNoYWJsZShDb250cm9sVHlwZSYsIENvbnRyb2xUeXBlJik7Ci0gICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFZlY3Rv
cjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFN0YWNrJik7CisgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFN0YWNrJiBh
cmdzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXRocm93KHVu
c2lnbmVkLCBDb250cm9sVHlwZSYpOwogCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkUmV0dXJuKGNvbnN0IENvbnRyb2xEYXRhJiwgY29uc3QgU3RhY2smIHJldHVyblZh
bHVlcyk7CkBAIC00MjEsMTEgKzQyMiwxNSBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBh
ZGRJbnRlZ2VyU3ViKEIzOjpBaXI6Ok9wY29kZSwgRXhwcmVzc2lvblR5cGUgbGhzLCBFeHByZXNz
aW9uVHlwZSByaHMsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogICAgIFBhcnRpYWxSZXN1bHQg
YWRkRmxvYXRpbmdQb2ludEFicyhCMzo6QWlyOjpPcGNvZGUsIEV4cHJlc3Npb25UeXBlIHZhbHVl
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKICAgICBQYXJ0aWFsUmVzdWx0IGFkZEZsb2F0aW5n
UG9pbnRCaW5PcChUeXBlLCBCMzo6QWlyOjpPcGNvZGUsIEV4cHJlc3Npb25UeXBlIGxocywgRXhw
cmVzc2lvblR5cGUgcmhzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICAKKyAgICAvLyBT
aW1kCisgICAgdGVtcGxhdGU8RXh0U2ltZE9wVHlwZSwgc2l6ZV90IG51bUltbWVkaWF0ZXMsIHNp
emVfdCBudW1Bcmd1bWVudHM+CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
YWRkU2ltZE9wKHN0ZDo6YXJyYXk8dWludDhfdCwgbnVtSW1tZWRpYXRlcz4gaW1tZWRpYXRlcywg
c3RkOjphcnJheTxFeHByZXNzaW9uVHlwZSwgbnVtQXJndW1lbnRzPiBhcmd1bWVudHMsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgdm9pZCBkdW1wKGNvbnN0IENvbnRyb2xTdGFjayYs
IGNvbnN0IFN0YWNrKiBleHByZXNzaW9uU3RhY2spOwogICAgIHZvaWQgc2V0UGFyc2VyKEZ1bmN0
aW9uUGFyc2VyPEFpcklSR2VuZXJhdG9yPiogcGFyc2VyKSB7IG1fcGFyc2VyID0gcGFyc2VyOyB9
OwogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZ0xvY2FscygpIHsgfQotICAgIHZvaWQgZGlkUG9w
VmFsdWVGcm9tU3RhY2soKSB7IH0KKyAgICB2b2lkIGRpZFBvcFZhbHVlRnJvbVN0YWNrKFdhc206
OlR5cGUpIHsgfQogCiAgICAgVG1wIGVtaXRDYXRjaEltcGwoQ2F0Y2hLaW5kLCBDb250cm9sVHlw
ZSYsIHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4ID0gMCk7CiAgICAgdGVtcGxhdGUgPHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KQEAgLTUxMiw2ICs1MTcsNyBAQCBwcml2YXRlOgogICAgIFR5cGVkVG1w
IGdSZWYoVHlwZSB0eXBlKSB7IHJldHVybiB7IG5ld1RtcChCMzo6R1ApLCB0eXBlIH07IH0KICAg
ICBUeXBlZFRtcCBmMzIoKSB7IHJldHVybiB7IG5ld1RtcChCMzo6RlApLCBUeXBlczo6RjMyIH07
IH0KICAgICBUeXBlZFRtcCBmNjQoKSB7IHJldHVybiB7IG5ld1RtcChCMzo6RlApLCBUeXBlczo6
RjY0IH07IH0KKyAgICBUeXBlZFRtcCB2MTI4KCkgeyByZXR1cm4geyBuZXdUbXAoQjM6OkZQKSwg
VHlwZXM6OlYxMjggfTsgfQogCiAgICAgVHlwZWRUbXAgdG1wRm9yVHlwZShUeXBlIHR5cGUpCiAg
ICAgewpAQCAtNTMxLDYgKzUzNyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gZjMy
KCk7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkY2NDoKICAgICAgICAgICAgIHJldHVybiBmNjQo
KTsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VjEyODoKKyAgICAgICAgICAgIHJldHVybiB2MTI4
KCk7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgICAgICByZXR1cm4geyB9
OwogICAgICAgICBkZWZhdWx0OgpAQCAtNjI3LDcgKzYzNSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAvLyB2YWxpZGF0aW9uLiBXZSBzaG91bGQgYWJzdHJjYXQgUGF0Y2ggZW5vdWdoIHNvIFZh
bHVlUmVwJ3MgZG9uJ3QgbmVlZCB0byBiZQogICAgICAgICAgICAgLy8gYmFja2VkIGJ5IFZhbHVl
cy4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTQwNDAKLSAgICAgICAgICAgIEIzOjpWYWx1ZSogZHVtbXlWYWx1ZSA9IG1fcHJvYy5hZGRD
b25zdGFudChCMzo6T3JpZ2luKCksIHRtcC50bXAuaXNHUCgpID8gQjM6OkludDY0IDogQjM6OkRv
dWJsZSwgMCk7CisgICAgICAgICAgICBCMzo6VmFsdWUqIGR1bW15VmFsdWUgPSBtX3Byb2MuYWRk
Q29uc3RhbnQoQjM6Ok9yaWdpbigpLCB0bXAudG1wLmlzR1AoKSA/IEIzOjpJbnQ2NCA6IEIzOjpW
MTI4LCAwKTsKICAgICAgICAgICAgIHBhdGNoLT5hcHBlbmQoZHVtbXlWYWx1ZSwgdG1wLnJlcCk7
CiAgICAgICAgICAgICBzd2l0Y2ggKHRtcC5yZXAua2luZCgpKSB7CiAgICAgICAgICAgICAvLyBC
Mzo6VmFsdWUgcHJvcGFnYXRlcyAoTGF0ZSlDb2xkQW55IGluZm9ybWF0aW9uIGFuZCBsYXRlciBB
aXIgd2lsbCBhbGxvY2F0ZSBhcHByb3ByaWF0ZSBzdGFjay4KQEAgLTYzOCwxMiArNjQ2LDEyIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEIzOjpW
YWx1ZVJlcDo6UmVnaXN0ZXI6CiAgICAgICAgICAgICAgICAgcGF0Y2gtPmVhcmx5Q2xvYmJlcmVk
KCkuY2xlYXIodG1wLnJlcC5yZWcoKSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKGJhc2ljQmxv
Y2ssIHRtcC50bXAuaXNHUCgpID8gTW92ZSA6IE1vdmVEb3VibGUsIHRtcC50bXAsIHRtcC5yZXAu
cmVnKCkpOworICAgICAgICAgICAgICAgIGFwcGVuZChiYXNpY0Jsb2NrLCB0bXAudG1wLmlzR1Ao
KSA/IE1vdmUgOiBNb3ZlVmVjdG9yLCB0bXAudG1wLCB0bXAucmVwLnJlZygpKTsKICAgICAgICAg
ICAgICAgICBpbnN0LmFyZ3MuYXBwZW5kKFRtcCh0bXAucmVwLnJlZygpKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEIzOjpWYWx1ZVJlcDo6U3RhY2tBcmd1bWVu
dDogewogICAgICAgICAgICAgICAgIEFyZyBhcmcgPSBBcmc6OmNhbGxBcmcodG1wLnJlcC5vZmZz
ZXRGcm9tU1AoKSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKGJhc2ljQmxvY2ssIHRtcC50bXAu
aXNHUCgpID8gTW92ZSA6IE1vdmVEb3VibGUsIHRtcC50bXAsIGFyZyk7CisgICAgICAgICAgICAg
ICAgYXBwZW5kKGJhc2ljQmxvY2ssIHRtcC50bXAuaXNHUCgpID8gTW92ZSA6IE1vdmVWZWN0b3Is
IHRtcC50bXAsIGFyZyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGFyZy5jYW5SZXByZXNlbnQo
cGF0Y2gtPmNoaWxkKGkpLT50eXBlKCkpKTsKICAgICAgICAgICAgICAgICBpbnN0LmFyZ3MuYXBw
ZW5kKGFyZyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC03NjYsNiArNzc0LDggQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHJldHVybiBNb3ZlRmxvYXQ7CiAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OkY2NDoKICAgICAgICAgICAgIHJldHVybiBNb3ZlRG91YmxlOworICAgICAgICBjYXNlIFR5
cGVLaW5kOjpWMTI4OgorICAgICAgICAgICAgcmV0dXJuIE1vdmVWZWN0b3I7CiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICB9CkBAIC0xMDY2LDYgKzEwNzYsOSBAQCBBaXJJUkdlbmVyYXRvcjo6QWlySVJHZW5lcmF0b3Io
Y29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIEIzOjpQcm9jZWR1cmUmIHBybwogICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpGNjQ6CiAgICAgICAgICAgICBhcHBlbmQoTW92ZURvdWJsZSwgYXJn
LCBtX2xvY2Fsc1tpXSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6VjEyODoKKyAgICAgICAgICAgIGFwcGVuZChNb3ZlVmVjdG9yLCBhcmcsIG1fbG9jYWxzW2ld
KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjI1LDcg
QEAgdm9pZCBBaXJJUkdlbmVyYXRvcjo6Zm9yRWFjaExpdmVWYWx1ZShGdW5jdGlvbiBmdW5jdGlv
bikKICAgICB9CiB9CiAKLWF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZExvY2FsKFR5cGUgdHlwZSwg
dWludDMyX3QgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZExvY2FsKFR5cGUgdHlwZSwgdWludDMyX3QsIHVpbnQzMl90IGNvdW50KSAtPiBQYXJ0aWFsUmVz
dWx0CiB7CiAgICAgc2l6ZV90IG5ld1NpemUgPSBtX2xvY2Fscy5zaXplKCkgKyBjb3VudDsKICAg
ICBBU1NFUlQoIShDaGVja2VkVWludDMyKGNvdW50KSArIG1fbG9jYWxzLnNpemUoKSkuaGFzT3Zl
cmZsb3dlZCgpKTsKQEAgLTEyNDIsNiArMTI1NSwxNCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjph
ZGRMb2NhbChUeXBlIHR5cGUsIHVpbnQzMl90IGNvdW50KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAg
ICAgICAgICBhcHBlbmQodHlwZS5pc0YzMigpID8gTW92ZTMyVG9GbG9hdCA6IE1vdmU2NFRvRG91
YmxlLCB0ZW1wLCBsb2NhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpWMTI4OiB7CisgICAgICAgICAgICBhdXRvIGxhbmVJbmZvID0gQXJn
OjpzaW1kSW5mbyhTaW1kTGFuZUludGVycHJldGF0aW9uOjppNjR4MiwgU2ltZFNpZ25FeHRlbmRN
b2RlOjpOQSk7CisgICAgICAgICAgICBhdXRvIHRlbXAgPSBnNjQoKTsKKyAgICAgICAgICAgIGFw
cGVuZChYb3I2NCwgdGVtcCwgdGVtcCk7CisgICAgICAgICAgICBhcHBlbmQoUmVwbGFjZUxhbmUs
IGxhbmVJbmZvLCBBcmc6OmltbSgwKSwgdGVtcCwgbG9jYWwpOworICAgICAgICAgICAgYXBwZW5k
KFJlcGxhY2VMYW5lLCBsYW5lSW5mbywgQXJnOjppbW0oMSksIHRlbXAsIGxvY2FsKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CkBAIC0xMjU0LDYgKzEyNzUs
MTggQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ29uc3RhbnQoVHlwZSB0eXBlLCB1aW50NjRf
dCB2YWx1ZSkgLT4gRXhwcmVzc2lvblR5cGUKICAgICByZXR1cm4gYWRkQ29uc3RhbnQobV9jdXJy
ZW50QmxvY2ssIHR5cGUsIHZhbHVlKTsKIH0KIAorYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ29u
c3RhbnQodjEyOF90IHZhbHVlKSAtPiBFeHByZXNzaW9uVHlwZQoreworICAgIGF1dG8gbGFuZUlu
Zm8gPSBBcmc6OnNpbWRJbmZvKFNpbWRMYW5lSW50ZXJwcmV0YXRpb246Omk2NHgyLCBTaW1kU2ln
bkV4dGVuZE1vZGU6Ok5BKTsKKyAgICBhdXRvIGEgPSBnNjQoKTsKKyAgICBhdXRvIHJlc3VsdCA9
IHRtcEZvclR5cGUoVHlwZXM6OlYxMjgpOworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0ltbSh2
YWx1ZS51NjR4MlswXSksIGEpOworICAgIGFwcGVuZChSZXBsYWNlTGFuZSwgbGFuZUluZm8sIEFy
Zzo6aW1tKDApLCBhLCByZXN1bHQpOworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0ltbSh2YWx1
ZS51NjR4MlsxXSksIGEpOworICAgIGFwcGVuZChSZXBsYWNlTGFuZSwgbGFuZUluZm8sIEFyZzo6
aW1tKDEpLCBhLCByZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIGF1dG8gQWlySVJH
ZW5lcmF0b3I6OmFkZENvbnN0YW50KEJhc2ljQmxvY2sqIGJsb2NrLCBUeXBlIHR5cGUsIHVpbnQ2
NF90IHZhbHVlKSAtPiBFeHByZXNzaW9uVHlwZQogewogICAgIGF1dG8gcmVzdWx0ID0gdG1wRm9y
VHlwZSh0eXBlKTsKQEAgLTE0NTksNyArMTQ5Miw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZFRhYmxlQ29weSh1bnNpZ25lZCBkc3RUYWJsZUluZGV4LCB1bnNpZ25lZCBzcmNUYWJsZUluZGV4
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBBaXJJUkdlbmVyYXRvcjo6Z2V0TG9jYWwodWlu
dDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1
dG8gQWlySVJHZW5lcmF0b3I6OmdldExvY2FsKHVpbnQzMl90IGluZGV4LCBXYXNtOjpUeXBlLCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgQVNTRVJUKG1f
bG9jYWxzW2luZGV4XS50bXAoKSk7CiAgICAgcmVzdWx0ID0gdG1wRm9yVHlwZShtX2xvY2Fsc1tp
bmRleF0udHlwZSgpKTsKQEAgLTE1OTEsNyArMTYyNCw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6
OmFkZERhdGFEcm9wKHVuc2lnbmVkIGRhdGFTZWdtZW50SW5kZXgpIC0+IFBhcnRpYWxSZXN1bHQK
ICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIEFpcklSR2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50
MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8g
QWlySVJHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBXYXNtOjpUeXBlLCBFeHBy
ZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIEFTU0VSVChtX2xvY2Fs
c1tpbmRleF0udG1wKCkpOwogICAgIGFwcGVuZChtb3ZlT3BGb3JWYWx1ZVR5cGUobV9sb2NhbHNb
aW5kZXhdLnR5cGUoKSksIHZhbHVlLCBtX2xvY2Fsc1tpbmRleF0udG1wKCkpOwpAQCAtMjE0NCw2
ICsyMTc3LDkgQEAgdm9pZCBBaXJJUkdlbmVyYXRvcjo6c2FuaXRpemVBdG9taWNSZXN1bHQoRXh0
QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHVlVHlwZSwgVG0KICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgc291cmNlLCBkZXN0KTsKICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgY2FzZSBCMzo6V2lkdGgxMjg6CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTYxLDYgKzIxOTcsOSBAQCB2b2lkIEFpcklSR2Vu
ZXJhdG9yOjpzYW5pdGl6ZUF0b21pY1Jlc3VsdChFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUgdmFs
dWVUeXBlLCBUbQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGFwcGVuZChN
b3ZlLCBzb3VyY2UsIGRlc3QpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEIz
OjpXaWR0aDEyODoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1
bHQ6CkBAIC0yMjM5LDYgKzIyNzgsOSBAQCBUeXBlZFRtcCBBaXJJUkdlbmVyYXRvcjo6YXBwZW5k
R2VuZXJhbEF0b21pYyhFeHRBdG9taWNPcFR5cGUgb3AsIEIzOjpBaXI6Ok9wY29kZQogICAgICAg
ICBjYXNlIEIzOjpXaWR0aDY0OgogICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IE1vdmU7CiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCMzo6V2lkdGgxMjg6CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwpA
QCAtMzMyMyw3ICszMzY1LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkRGVsZWdhdGVUb1Vu
cmVhY2hhYmxlKENvbnRyb2xUeXBlJiB0YXJnZXQsIENvbnRyb2xUeXBlJgogICAgIHJldHVybiB7
IH07CiB9CiAKLWF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlv
bkluZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBTdGFjayYpIC0+IFBhcnRpYWxS
ZXN1bHQKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlvbklu
ZGV4LCBTdGFjayYgYXJncykgLT4gUGFydGlhbFJlc3VsdAogewogICAgIEIzOjpQYXRjaHBvaW50
VmFsdWUqIHBhdGNoID0gYWRkUGF0Y2hwb2ludChCMzo6Vm9pZCk7CiAgICAgcGF0Y2gtPmVmZmVj
dHMudGVybWluYWwgPSB0cnVlOwpAQCAtMzMzMyw3ICszMzc1LDcgQEAgYXV0byBBaXJJUkdlbmVy
YXRvcjo6YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFZlY3RvcjxFeHByZXNzaW9u
VHlwZT4mIGEKICAgICBwYXRjaEFyZ3MuYXBwZW5kKENvbnN0cmFpbmVkVG1wKGluc3RhbmNlVmFs
dWUoKSwgQjM6OlZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwogICAgIHBh
dGNoQXJncy5hcHBlbmQoQ29uc3RyYWluZWRUbXAoVG1wKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyKSwgQjM6OlZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQotICAgICAgICBwYXRjaEFy
Z3MuYXBwZW5kKENvbnN0cmFpbmVkVG1wKGFyZ3NbaV0sIEIzOjpWYWx1ZVJlcDo6c3RhY2tBcmd1
bWVudChpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpKTsKKyAgICAgICAgcGF0Y2hBcmdzLmFw
cGVuZChDb25zdHJhaW5lZFRtcChhcmdzW2ldLnZhbHVlKCksIEIzOjpWYWx1ZVJlcDo6c3RhY2tB
cmd1bWVudChpICogYXJnc1tpXS50eXBlKCkuc2l6ZSgpKSkpOwogCiAgICAgUGF0Y2hwb2ludEV4
Y2VwdGlvbkhhbmRsZSBoYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0
Y2gsIHBhdGNoQXJncyk7CiAKQEAgLTU1MTksNiArNTU2MSwyMyBAQCBQYXRjaHBvaW50RXhjZXB0
aW9uSGFuZGxlIEFpcklSR2VuZXJhdG9yOjpwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMo
QjM6OlBhdAogICAgIHJldHVybiBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlIHsgbV9jYWxsU2l0
ZUluZGV4LCBudW1MaXZlVmFsdWVzIH07CiB9CiAKKyNkZWZpbmUgQ1JFQVRFX1NJTURfQ0FTRShu
YW1lLCBpZCwgYjNvcCwgaW5jLCB3YXNtT3AsIHJldHVyblR5cGUsIG51bUltbWVkaWF0ZXMsIGlt
bWVkaWF0ZVNpemVzLCBudW1Bcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIGxhbmVJbnRlcnByZXRh
dGlvbiwgc2lnbkV4dGVuZE1vZGUpIFwKK3RlbXBsYXRlPD4gXAorYXV0byBBaXJJUkdlbmVyYXRv
cjo6YWRkU2ltZE9wPEV4dFNpbWRPcFR5cGU6Om5hbWUsIG51bUltbWVkaWF0ZXMsIG51bUFyZ3Vt
ZW50cz4oc3RkOjphcnJheTx1aW50OF90LCBudW1JbW1lZGlhdGVzPiBpbW1lZGlhdGVzLCBzdGQ6
OmFycmF5PEV4cHJlc3Npb25UeXBlLCBudW1Bcmd1bWVudHM+IGFyZ3VtZW50cywgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdCBcCit7IFwKKyAgICByZXN1bHQgPSB0bXBG
b3JUeXBlKHJldHVyblR5cGUpOyBcCisgICAgc3RkOjphcnJheTxBcmcsIG51bUltbWVkaWF0ZXM+
IHRydXN0ZWRJbW1zOyBcCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1JbW1lZGlhdGVz
OyArK2kpIHsgXAorICAgICAgICB0cnVzdGVkSW1tc1tpXSA9IEFyZzo6aW1tKGltbWVkaWF0ZXNb
aV0pOyBcCisgICAgfSBcCisgICAgYXV0byBhcmdzVG9BcHBseSA9IHN0ZDo6dHVwbGVfY2F0KHN0
ZDo6Zm9yd2FyZF9hc190dXBsZShiM29wLCBBcmc6OnNpbWRJbmZvKGxhbmVJbnRlcnByZXRhdGlv
biwgc2lnbkV4dGVuZE1vZGUpKSwgdHJ1c3RlZEltbXMsIGFyZ3VtZW50cywgc3RkOjpmb3J3YXJk
X2FzX3R1cGxlKHJlc3VsdCkpOyBcCisgICAgc3RkOjphcHBseShbPV0oYXV0byAmJi4uLiBhcmdz
KSB7IGFwcGVuZChhcmdzLi4uKTsgfSwgYXJnc1RvQXBwbHkpOyBcCisgICAgcmV0dXJuIHsgfTsg
XAorfQorCitGT1JfRUFDSF9XQVNNX0VYVF9TSU1EX09QKENSRUFURV9TSU1EX0NBU0UpCisjdW5k
ZWYgQ1JFQVRFX1NJTURfQ0FTRQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZX0IzSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDNkYThjNzliZGUzOS4uMWYyNzRi
NzI3Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCkBAIC0zMiwxMSArMzIsMTMgQEAKICNpbmNsdWRlICJBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2VJZi5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNp
bmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnN0MTI4VmFsdWUuaCIKICNp
bmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKICNpbmNsdWRlICJCM0VzdGltYXRlU3RhdGljRXhl
Y3V0aW9uQ291bnRzLmgiCiAjaW5jbHVkZSAiQjNGaXhTU0EuaCIKICNpbmNsdWRlICJCM0dlbmVy
YXRlLmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJCM1NpbWRWYWx1
ZS5oIgogI2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAi
QjNTd2l0Y2hWYWx1ZS5oIgogI2luY2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCkBAIC02Myw2ICs2
NSw3IEBACiAjaW5jbHVkZSAiV2FzbU9TUkVudHJ5RGF0YS5oIgogI2luY2x1ZGUgIldhc21PcGNv
ZGVPcmlnaW4uaCIKICNpbmNsdWRlICJXYXNtT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIldhc21P
cHMuaCIKICNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldhc21U
aHVua3MuaCIKICNpbmNsdWRlIDxsaW1pdHM+CkBAIC0zMDYsOCArMzA5LDkgQEAgcHVibGljOgog
ICAgIEIzSVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mLCBQcm9jZWR1cmUmLCBJ
bnRlcm5hbEZ1bmN0aW9uKiwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiwgdW5zaWdu
ZWQmIG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUsIE1lbW9yeU1vZGUsIENvbXBpbGF0aW9uTW9k
ZSwgdW5zaWduZWQgZnVuY3Rpb25JbmRleCwgdW5zaWduZWQgbG9vcEluZGV4Rm9yT1NSRW50cnks
IFRpZXJVcENvdW50Kik7CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJik7Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkTG9jYWwoVHlwZSwgdWludDMyX3QpOworICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZExvY2FsKFR5cGUsIHVpbnQzMl90LCB1aW50MzJfdCk7CiAg
ICAgRXhwcmVzc2lvblR5cGUgYWRkQ29uc3RhbnQoVHlwZSwgdWludDY0X3QpOworICAgIEV4cHJl
c3Npb25UeXBlIGFkZENvbnN0YW50KHYxMjhfdCk7CiAKICAgICAvLyBSZWZlcmVuY2VzCiAgICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmSXNOdWxsKEV4cHJlc3Npb25U
eXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTMyNCw4ICszMjgsOCBAQCBw
dWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVDb3B5
KHVuc2lnbmVkLCB1bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUgZHN0T2Zmc2V0LCBFeHByZXNzaW9u
VHlwZSBzcmNPZmZzZXQsIEV4cHJlc3Npb25UeXBlIGxlbmd0aCk7CiAKICAgICAvLyBMb2NhbHMK
LSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRMb2NhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gc2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVl
KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRMb2NhbCh1aW50MzJf
dCBpbmRleCwgV2FzbTo6VHlwZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gc2V0TG9jYWwodWludDMyX3QgaW5kZXgsIFdhc206
OlR5cGUsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKIAogICAgIC8vIEdsb2JhbHMKICAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpOwpAQCAtMzc3LDcgKzM4MSw3IEBAIHB1YmxpYzoKICAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYXRjaEFsbFRvVW5yZWFjaGFibGUo
Q29udHJvbFR5cGUmKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRE
ZWxlZ2F0ZShDb250cm9sVHlwZSYsIENvbnRyb2xUeXBlJik7CiAgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYWRkRGVsZWdhdGVUb1VucmVhY2hhYmxlKENvbnRyb2xUeXBlJiwg
Q29udHJvbFR5cGUmKTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRU
aHJvdyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJn
cywgU3RhY2smKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUaHJv
dyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgU3RhY2smIGFyZ3MpOwogICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJldGhyb3codW5zaWduZWQsIENvbnRyb2xUeXBlJik7
CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1cm4oY29uc3Qg
Q29udHJvbERhdGEmLCBjb25zdCBTdGFjayYgcmV0dXJuVmFsdWVzKTsKQEAgLTM5NSwxMSArMzk5
LDE1IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRV
bnJlYWNoYWJsZSgpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGVtaXRJ
bmRpcmVjdENhbGwoVmFsdWUqIGNhbGxlZUluc3RhbmNlLCBWYWx1ZSogY2FsbGVlQ29kZSwgY29u
c3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYp
OwogICAgIEIzOjpWYWx1ZSogY3JlYXRlQ2FsbFBhdGNocG9pbnQoQmFzaWNCbG9jayosIE9yaWdp
biwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgY29uc3Qg
U2NvcGVkTGFtYmRhPHZvaWQoUGF0Y2hwb2ludFZhbHVlKiwgQm94PFBhdGNocG9pbnRFeGNlcHRp
b25IYW5kbGU+KT4mIHBhdGNocG9pbnRGdW5jdG9yKTsKKyAgICAKKyAgICAvLyBTaW1kCisgICAg
dGVtcGxhdGU8RXh0U2ltZE9wVHlwZSwgc2l6ZV90IG51bUltbWVkaWF0ZXMsIHNpemVfdCBudW1B
cmd1bWVudHM+CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU2ltZE9w
KHN0ZDo6YXJyYXk8dWludDhfdCwgbnVtSW1tZWRpYXRlcz4gaW1tZWRpYXRlcywgc3RkOjphcnJh
eTxFeHByZXNzaW9uVHlwZSwgbnVtQXJndW1lbnRzPiBhcmd1bWVudHMsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpOwogCiAgICAgdm9pZCBkdW1wKGNvbnN0IENvbnRyb2xTdGFjayYsIGNvbnN0IFN0
YWNrKiBleHByZXNzaW9uU3RhY2spOwogICAgIHZvaWQgc2V0UGFyc2VyKEZ1bmN0aW9uUGFyc2Vy
PEIzSVJHZW5lcmF0b3I+KiBwYXJzZXIpIHsgbV9wYXJzZXIgPSBwYXJzZXI7IH07CiAgICAgdm9p
ZCBkaWRGaW5pc2hQYXJzaW5nTG9jYWxzKCkgeyB9Ci0gICAgdm9pZCBkaWRQb3BWYWx1ZUZyb21T
dGFjaygpIHsgLS1tX3N0YWNrU2l6ZTsgfQorICAgIHZvaWQgZGlkUG9wVmFsdWVGcm9tU3RhY2so
V2FzbTo6VHlwZSkgeyAtLW1fc3RhY2tTaXplOyB9CiAKICAgICBWYWx1ZSogY29uc3RhbnQoQjM6
OlR5cGUsIHVpbnQ2NF90IGJpdHMsIHN0ZDo6b3B0aW9uYWw8T3JpZ2luPiA9IHN0ZDo6bnVsbG9w
dCk7CiAgICAgVmFsdWUqIGZyYW1lUG9pbnRlcigpOwpAQCAtODg0LDcgKzg5Miw3IEBAIEIzOjpU
eXBlIEIzSVJHZW5lcmF0b3I6OnRvQjNSZXN1bHRUeXBlKEJsb2NrU2lnbmF0dXJlIHJldHVyblR5
cGUpCiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLWF1dG8gQjNJUkdl
bmVyYXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1aW50MzJfdCBjb3VudCkgLT4gUGFydGlhbFJl
c3VsdAorYXV0byBCM0lSR2VuZXJhdG9yOjphZGRMb2NhbChUeXBlIHR5cGUsIHVpbnQzMl90LCB1
aW50MzJfdCBjb3VudCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIHNpemVfdCBuZXdTaXplID0g
bV9sb2NhbHMuc2l6ZSgpICsgY291bnQ7CiAgICAgQVNTRVJUKCEoQ2hlY2tlZFVpbnQzMihjb3Vu
dCkgKyBtX2xvY2Fscy5zaXplKCkpLmhhc092ZXJmbG93ZWQoKSk7CkBAIC0xMDc5LDcgKzEwODcs
NyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlQ29weSh1bnNpZ25lZCBkc3RUYWJsZUlu
ZGV4LCB1bnNpZ25lZCBzcmNUYWJsZUluZGV4LAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8g
QjNJUkdlbmVyYXRvcjo6Z2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQjNJUkdlbmVyYXRvcjo6Z2V0TG9jYWwodWlu
dDMyX3QgaW5kZXgsIFdhc206OlR5cGUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRp
YWxSZXN1bHQKIHsKICAgICBBU1NFUlQobV9sb2NhbHNbaW5kZXhdKTsKICAgICByZXN1bHQgPSBw
dXNoKG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4obV9wcm9jLCBCMzo6
R2V0LCBvcmlnaW4oKSwgbV9sb2NhbHNbaW5kZXhdKSk7CkBAIC0xMjg3LDcgKzEyOTUsNyBAQCBh
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZERhdGFEcm9wKHVuc2lnbmVkIGRhdGFTZWdtZW50SW5kZXgp
IC0+IFBhcnRpYWxSZXN1bHQKICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIEIzSVJHZW5lcmF0
b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFy
dGlhbFJlc3VsdAorYXV0byBCM0lSR2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwg
V2FzbTo6VHlwZSwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAg
ICBBU1NFUlQobV9sb2NhbHNbaW5kZXhdKTsKICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgQjM6OlNldCwgb3JpZ2luKCksIG1fbG9jYWxzW2luZGV4
XSwgZ2V0KHZhbHVlKSk7CkBAIC0xNzUxLDYgKzE3NTksOSBAQCBpbmxpbmUgVmFsdWUqIEIzSVJH
ZW5lcmF0b3I6OmVtaXRBdG9taWNMb2FkT3AoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHVl
VHlwZQogICAgIGNhc2UgQjM6OldpZHRoNjQ6CiAgICAgICAgIHZhbHVlID0gY29uc3RhbnQoSW50
NjQsIDApOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEIzOjpXaWR0aDEyODoKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHNhbml0aXplQXRvbWljUmVzdWx0KG9wLCB2YWx1ZVR5cGUsIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KG1fcHJvYywgbWVtb3J5S2luZChBdG9taWNYY2hn
QWRkKSwgb3JpZ2luKCksIGFjY2Vzc1dpZHRoKG9wKSwgdmFsdWUsIHBvaW50ZXIpKTsKQEAgLTE5
MzQsNiArMTk0NSw3IEBAIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0QXRvbWljQ29tcGFyZUV4
Y2hhbmdlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1ZVR5CiAgICAgICAgICAgICBtYXhp
bXVtID0gY29uc3RhbnQoSW50NjQsIFVJTlQzMl9NQVgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQjM6OldpZHRoNjQ6CisgICAgICAgIGNhc2UgQjM6OldpZHRoMTI4OgogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKQEAgLTE5NDgsNiArMTk2MCw3IEBAIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0
QXRvbWljQ29tcGFyZUV4Y2hhbmdlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1ZVR5CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCMzo6V2lkdGgzMjoKICAgICAgICAgY2Fz
ZSBCMzo6V2lkdGg2NDoKKyAgICAgICAgY2FzZSBCMzo6V2lkdGgxMjg6CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpA
QCAtMTk5Myw2ICsyMDA2LDkgQEAgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmVtaXRBdG9taWNDb21w
YXJlRXhjaGFuZ2UoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHVlVHkKICAgICAgICAgY2Fz
ZSBCMzo6V2lkdGg2NDoKICAgICAgICAgICAgIGFkZGluZ1ZhbHVlID0gY29uc3RhbnQoSW50NjQs
IDApOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQjM6OldpZHRoMTI4OgorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxBdG9taWNWYWx1ZT4obV9wcm9jLCBtZW1vcnlLaW5kKEF0b21pY1hjaGdBZGQpLCBvcmln
aW4oKSwgYWNjZXNzV2lkdGgsIGFkZGluZ1ZhbHVlLCBwb2ludGVyKTsKICAgICAgICAgZmFpbHVy
ZVZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxCMzo6VXBzaWxvblZhbHVlPihtX3By
b2MsIG9yaWdpbigpLCByZXN1bHQpOwpAQCAtMjI1OSwxMCArMjI3NSwxNCBAQCBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZFNlbGVjdChFeHByZXNzaW9uVHlwZSBjb25kaXRpb24sIEV4cHJlc3Npb25U
eXBlIG5vblplcm8sCiAKIEIzSVJHZW5lcmF0b3I6OkV4cHJlc3Npb25UeXBlIEIzSVJHZW5lcmF0
b3I6OmFkZENvbnN0YW50KFR5cGUgdHlwZSwgdWludDY0X3QgdmFsdWUpCiB7Ci0KICAgICByZXR1
cm4gcHVzaChjb25zdGFudCh0b0IzVHlwZSh0eXBlKSwgdmFsdWUpKTsKIH0KIAorQjNJUkdlbmVy
YXRvcjo6RXhwcmVzc2lvblR5cGUgQjNJUkdlbmVyYXRvcjo6YWRkQ29uc3RhbnQodjEyOF90IHZh
bHVlKQoreworICAgIHJldHVybiBwdXNoKG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3Qx
MjhWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdmFsdWUpKTsKK30KKwogdm9pZCBCM0lSR2VuZXJh
dG9yOjplbWl0RW50cnlUaWVyVXBDaGVjaygpCiB7CiAgICAgaWYgKCFtX3RpZXJVcCkKQEAgLTI2
NDcsMTQgKzI2NjcsMTQgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGREZWxlZ2F0ZVRvVW5yZWFj
aGFibGUoQ29udHJvbFR5cGUmIHRhcmdldCwgQ29udHJvbFR5cGUmIGQKICAgICByZXR1cm4geyB9
OwogfQogCi1hdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlvbklu
ZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBTdGFjayYpIC0+IFBhcnRpYWxSZXN1
bHQKK2F1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgs
IFN0YWNrJiBhcmdzKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgUGF0Y2hwb2ludFZhbHVlKiBw
YXRjaCA9IG1fcHJvYy5hZGQ8UGF0Y2hwb2ludFZhbHVlPihCMzo6Vm9pZCwgb3JpZ2luKCkpOwog
ICAgIHBhdGNoLT5lZmZlY3RzLnRlcm1pbmFsID0gdHJ1ZTsKICAgICBwYXRjaC0+YXBwZW5kKGlu
c3RhbmNlVmFsdWUoKSwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKICAg
ICBwYXRjaC0+YXBwZW5kKGZyYW1lUG9pbnRlcigpLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsg
KytpKQotICAgICAgICBwYXRjaC0+YXBwZW5kKGdldChhcmdzW2ldKSwgVmFsdWVSZXA6OnN0YWNr
QXJndW1lbnQoaSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKKyAgICAgICAgcGF0Y2gtPmFw
cGVuZChnZXQoYXJnc1tpXS52YWx1ZSgpKSwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQoaSAqIHNp
emVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKICAgICBwYXRjaC0+Y2xvYmJlcihSZWdpc3RlclNldDo6
dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7CiAgICAgUGF0Y2hwb2ludEV4Y2VwdGlvbkhh
bmRsZSBoYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMobV9jdXJyZW50Qmxv
Y2ssIHBhdGNoKTsKICAgICBwYXRjaC0+c2V0R2VuZXJhdG9yKFt0aGlzLCBleGNlcHRpb25JbmRl
eCwgaGFuZGxlXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgewpAQCAtMzczNyw2ICszNzU3LDIyIEBAIGF1dG8gQjNJUkdlbmVy
YXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRUcnVuY1VGMzI+KEV4cHJlc3Npb25UeXBlIGFyZ1Zhciwg
RXhwcmVzc2lvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAorI2RlZmluZSBDUkVBVEVfU0lNRF9DQVNF
KG5hbWUsIGlkLCBiM29wLCBpbmMsIHdhc21PcCwgcmV0dXJuVHlwZSwgbnVtSW1tZWRpYXRlcywg
aW1tZWRpYXRlU2l6ZXMsIG51bUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgbGFuZUludGVycHJl
dGF0aW9uLCBzaWduRXh0ZW5kTW9kZSkgXAordGVtcGxhdGU8PiBcCithdXRvIEIzSVJHZW5lcmF0
b3I6OmFkZFNpbWRPcDxFeHRTaW1kT3BUeXBlOjpuYW1lLCBudW1JbW1lZGlhdGVzLCBudW1Bcmd1
bWVudHM+KHN0ZDo6YXJyYXk8dWludDhfdCwgbnVtSW1tZWRpYXRlcz4gaW1tZWRpYXRlcywgc3Rk
OjphcnJheTxFeHByZXNzaW9uVHlwZSwgbnVtQXJndW1lbnRzPiBhcmd1bWVudHMsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQgXAoreyBcCisgICAgc3RkOjphcnJheTxW
YWx1ZSosIG51bUFyZ3VtZW50cz4gYXJndW1lbnRWYWx1ZXM7IFwKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG51bUFyZ3VtZW50czsgKytpKSB7IFwKKyAgICAgICAgYXJndW1lbnRWYWx1ZXNb
aV0gPSBnZXQoYXJndW1lbnRzW2ldKTsgXAorICAgIH1cCisgICAgYXV0byBhcmdzVG9BcHBseSA9
IHN0ZDo6dHVwbGVfY2F0KHN0ZDo6Zm9yd2FyZF9hc190dXBsZShtX3Byb2MsIG9yaWdpbigpLCBi
M29wLCB0b0IzVHlwZShyZXR1cm5UeXBlKSwgbnVtQXJndW1lbnRzLCBsYW5lSW50ZXJwcmV0YXRp
b24sIHNpZ25FeHRlbmRNb2RlKSwgaW1tZWRpYXRlcywgYXJndW1lbnRWYWx1ZXMpOyBcCisgICAg
cmVzdWx0ID0gcHVzaChzdGQ6OmFwcGx5KFs9XShhdXRvICYmLi4uIGFyZ3MpIHsgcmV0dXJuIG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8U2ltZFZhbHVlPihhcmdzLi4uKTsgfSwgYXJnc1RvQXBw
bHkpKTsgXAorICAgIHJldHVybiB7IH07IFwKK30KKworRk9SX0VBQ0hfV0FTTV9FWFRfU0lNRF9P
UChDUkVBVEVfU0lNRF9DQVNFKQorI3VuZGVmIENSRUFURV9TSU1EX0NBU0UKKwogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6Oldhc20KIAogI2luY2x1ZGUgIldhc21CM0lSR2VuZXJhdG9ySW5saW5lcy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252
ZW50aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVu
dGlvbi5jcHAKaW5kZXggMjAzYzg0M2FlOGU2Li5iYzFlMTU3OGU2ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcApAQCAt
MzgsNyArMzgsNyBAQCBjb25zdCBKU0NhbGxpbmdDb252ZW50aW9uJiBqc0NhbGxpbmdDb252ZW50
aW9uKCkKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgc3RhdGljSlNDQ2FsbGluZ0NvbnZlbnRp
b25GbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKHN0YXRpY0pTQ0NhbGxpbmdDb252ZW50aW9uRmxh
ZywgW10gKCkgewogICAgICAgICBSZWdpc3RlclNldCBjYWxsZXJTYXZlUmVnaXN0ZXJzID0gUmVn
aXN0ZXJTZXQ6OmFsbFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsZXJTYXZlUmVnaXN0ZXJzLmV4
Y2x1ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisvLyAgICAgICAgY2Fs
bGVyU2F2ZVJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJz
KCkpOyAvLyBUT0RPCiAKICAgICAgICAgc3RhdGljSlNDYWxsaW5nQ29udmVudGlvbi5jb25zdHJ1
Y3QoVmVjdG9yPFJlZz4oKSwgVmVjdG9yPFJlZz4oKSwgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVS
ZWdpc3RlcnMoKSwgV1RGTW92ZShjYWxsZXJTYXZlUmVnaXN0ZXJzKSk7CiAgICAgfSk7CkBAIC03
Myw3ICs3Myw3IEBAIGNvbnN0IFdhc21DYWxsaW5nQ29udmVudGlvbiYgd2FzbUNhbGxpbmdDb252
ZW50aW9uKCkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2NyYXRjaEdQUnMuc2l6ZSgpID49IDIp
OwogCiAgICAgICAgIFJlZ2lzdGVyU2V0IGNhbGxlclNhdmVSZWdpc3RlcnMgPSBSZWdpc3RlclNl
dDo6YWxsUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxlclNhdmVSZWdpc3RlcnMuZXhjbHVkZShS
ZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKy8vICAgICAgICBjYWxsZXJTYXZl
UmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7IC8v
VE9ETwogCiAgICAgICAgIHN0YXRpY1dhc21DYWxsaW5nQ29udmVudGlvbi5jb25zdHJ1Y3QoV1RG
TW92ZShncHJBcmd1bWVudFJlZ2lzdGVycyksIFdURk1vdmUoZnByQXJndW1lbnRSZWdpc3RlcnMp
LCBXVEZNb3ZlKHNjcmF0Y2hHUFJzKSwgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMo
KSwgV1RGTW92ZShjYWxsZXJTYXZlUmVnaXN0ZXJzKSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5oCmluZGV4IDU5MWVl
YjI3YjAxNi4uZjhmNmUwNGRkNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaApAQCAtODgsMTQgKzg4LDE0IEBAIHB1YmxpYzoK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXYXNtQ2FsbGluZ0NvbnZlbnRpb24pOwogCiBwcml2
YXRlOgotICAgIEFyZ3VtZW50TG9jYXRpb24gbWFyc2hhbGxMb2NhdGlvbkltcGwoQ2FsbFJvbGUg
cm9sZSwgY29uc3QgVmVjdG9yPFJlZz4mIHJlZ0FyZ3MsIHNpemVfdCYgY291bnQsIHNpemVfdCYg
c3RhY2tPZmZzZXQpIGNvbnN0CisgICAgQXJndW1lbnRMb2NhdGlvbiBtYXJzaGFsbExvY2F0aW9u
SW1wbChDYWxsUm9sZSByb2xlLCBjb25zdCBWZWN0b3I8UmVnPiYgcmVnQXJncywgc2l6ZV90JiBj
b3VudCwgc2l6ZV90JiBzdGFja09mZnNldCwgc2l6ZV90IGFyZ1NpemUpIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAoY291bnQgPCByZWdBcmdzLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiBB
cmd1bWVudExvY2F0aW9uOjpyZWcocmVnQXJnc1tjb3VudCsrXSk7CiAKICAgICAgICAgY291bnQr
KzsKICAgICAgICAgQXJndW1lbnRMb2NhdGlvbiByZXN1bHQgPSByb2xlID09IENhbGxSb2xlOjpD
YWxsZXIgPyBBcmd1bWVudExvY2F0aW9uOjpzdGFja0FyZ3VtZW50KHN0YWNrT2Zmc2V0KSA6IEFy
Z3VtZW50TG9jYXRpb246OnN0YWNrKHN0YWNrT2Zmc2V0KTsKLSAgICAgICAgc3RhY2tPZmZzZXQg
Kz0gc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAgICAgc3RhY2tPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lz
dGVyKSAqIGFyZ1NpemU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xMDks
MTAgKzEwOSwxMSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6
CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVm
TnVsbDoKLSAgICAgICAgICAgIHJldHVybiBtYXJzaGFsbExvY2F0aW9uSW1wbChyb2xlLCBncHJB
cmdzLCBncEFyZ3VtZW50Q291bnQsIHN0YWNrT2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiBt
YXJzaGFsbExvY2F0aW9uSW1wbChyb2xlLCBncHJBcmdzLCBncEFyZ3VtZW50Q291bnQsIHN0YWNr
T2Zmc2V0LCB2YWx1ZVR5cGUuc2l6ZSgpIC8gOCk7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYz
MjoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgotICAgICAgICAgICAgcmV0dXJuIG1hcnNo
YWxsTG9jYXRpb25JbXBsKHJvbGUsIGZwckFyZ3MsIGZwQXJndW1lbnRDb3VudCwgc3RhY2tPZmZz
ZXQpOworICAgICAgICBjYXNlIFR5cGVLaW5kOjpWMTI4OgorICAgICAgICAgICAgcmV0dXJuIG1h
cnNoYWxsTG9jYXRpb25JbXBsKHJvbGUsIGZwckFyZ3MsIGZwQXJndW1lbnRDb3VudCwgc3RhY2tP
ZmZzZXQsIHZhbHVlVHlwZS5zaXplKCkgLyA4KTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0
LmgKaW5kZXggYzc5ZTMzN2M3YTdhLi5mZTUzODM1YzE5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTY4LDYgKzY4LDcgQEAgaW5saW5lIGJvb2wgaXNWYWx1
ZVR5cGUoVHlwZSB0eXBlKQogICAgIGNhc2UgVHlwZUtpbmQ6Okk2NDoKICAgICBjYXNlIFR5cGVL
aW5kOjpGMzI6CiAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgorICAgIGNhc2UgVHlwZUtpbmQ6OlYx
Mjg6CiAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgIGNhc2UgVHlwZUtpbmQ6OkZ1
bmNyZWY6CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODIsNyArODMsNyBAQCBpbmxpbmUgYm9v
bCBpc1ZhbHVlVHlwZShUeXBlIHR5cGUpCiAKIGlubGluZSBKU1N0cmluZyogdHlwZVRvU3RyaW5n
KFZNJiB2bSwgVHlwZUtpbmQgdHlwZSkKIHsKLSNkZWZpbmUgVFlQRV9DQVNFKG1hY3JvTmFtZSwg
dmFsdWUsIGIzLCBpbmMsIHdhc21OYW1lKSBcCisjZGVmaW5lIFRZUEVfQ0FTRShtYWNyb05hbWUs
IHZhbHVlLCBiMywgaW5jLCB3YXNtTmFtZSwgLi4uKSBcCiAgICAgY2FzZSBUeXBlS2luZDo6bWFj
cm9OYW1lOiBcCiAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICN3YXNtTmFt
ZSk7IFwKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0
aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaAppbmRleCA3ZTRhNDBiZjQ1MDguLmEwODk5OTk5
OGU0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9u
Q29kZUJsb2NrR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmgKQEAgLTgxLDYgKzgxLDcgQEAgcHVibGljOgog
ICAgIHVpbnQzMl90IG51bUFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQXJndW1lbnRz
OyB9CiAgICAgY29uc3QgVmVjdG9yPFR5cGU+JiBjb25zdGFudFR5cGVzKCkgY29uc3QgeyByZXR1
cm4gbV9jb25zdGFudFR5cGVzOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgY29uc3Rh
bnRzKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHM7IH0KKyAgICBjb25zdCBWZWN0b3I8dWlu
dDY0X3Q+JiBjb25zdGFudFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzOyB9
CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0
dXJuICptX2luc3RydWN0aW9uczsgfQogCiAgICAgdm9pZCBzZXROdW1WYXJzKHVuc2lnbmVkIG51
bVZhcnMpIHsgbV9udW1WYXJzID0gbnVtVmFyczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCBkOTdlN2U3NTlhNGYuLjE4Mzg1YTQy
NjYxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9u
UGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFy
c2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXYXNtUGFyc2VyLmgiCiAjaW5jbHVk
ZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20g
ewogCkBAIC04NSw2ICs4NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG9wZXJhdG9yIEV4cHJlc3Np
b25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiAgICAgICAgIEV4cHJlc3Npb25U
eXBlIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgICAgIAorICAg
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgb3V0LnByaW50KG1fdmFsdWUsICI6ICIsIG1fdHlwZSk7CisgICAgICAgIH0KIAogICAg
IHByaXZhdGU6CiAgICAgICAgIFR5cGUgbV90eXBlOwpAQCAtMTI1LDcgKzEzMSw3IEBAIHByaXZh
dGU6CiAjZGVmaW5lIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8ocmVzdWx0LCB3
aGF0KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRihtX2V4cHJlc3Npb25TdGFjay5pc0VtcHR5KCksICJjYW4ndCBwb3AgZW1w
dHkgc3RhY2sgaW4gIiB3aGF0KTsgXAogICAgICAgICByZXN1bHQgPSBtX2V4cHJlc3Npb25TdGFj
ay50YWtlTGFzdCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjaygpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9jb250
ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKHJlc3VsdC50eXBlKCkpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKICAgICB0ZW1wbGF0ZTxP
cFR5cGU+CkBAIC0xNDcsNiArMTUzLDExIEBAIHByaXZhdGU6CiAgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYXRvbWljTm90aWZ5KEV4dEF0b21pY09wVHlwZSk7CiAgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYXRvbWljRmVuY2UoRXh0QXRvbWljT3BUeXBl
KTsKIAorICAgIHRlbXBsYXRlPEV4dFNpbWRPcFR5cGUsIHNpemVfdCBudW1JbW1lZGlhdGVzLCBz
aXplX3QgbnVtQXJndW1lbnRzPgorICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IHNpbWRDYXNlKGJvb2wgcmVhY2hhYmxlLCBUeXBlIHJldHVyblR5cGUsIGNvbnN0IHN0ZDo6YXJy
YXk8aW50LCBudW1JbW1lZGlhdGVzPiYgaW1tZWRpYXRlU2l6ZXMsIGNvbnN0IHN0ZDo6YXJyYXk8
Y29uc3QgVHlwZSosIG51bUFyZ3VtZW50cz4mIGFyZ3VtZW50VHlwZXMpOworICAgIHRlbXBsYXRl
PFNpbWRMYW5lT3BlcmF0aW9uLCBTaW1kTGFuZUludGVycHJldGF0aW9uLCBTaW1kU2lnbkV4dGVu
ZE1vZGU+CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gc2ltZFNwZWNpYWxD
YXNlKGJvb2wgcmVhY2hhYmxlID0gdHJ1ZSk7CisKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBwYXJzZVRhYmxlSW5kZXgodW5zaWduZWQmKTsKICAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUVsZW1lbnRJbmRleCh1bnNpZ25lZCYpOwogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRGF0YVNlZ21lbnRJbmRleCh1bnNp
Z25lZCYpOwpAQCAtMjY0LDcgKzI3NSw3IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46
OnBhcnNlKCkgLT4gUmVzdWx0CiAgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBudW1i
ZXJPZkxvY2FsczsgKytpKQogICAgICAgICAgICAgbV9sb2NhbHMudW5jaGVja2VkQXBwZW5kKHR5
cGVPZkxvY2FsKTsKIAotICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRMb2NhbCh0
eXBlT2ZMb2NhbCwgbnVtYmVyT2ZMb2NhbHMpKTsKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NP
TlRFWFQoYWRkTG9jYWwodHlwZU9mTG9jYWwsIG1fbG9jYWxzLnNpemUoKSAtIG51bWJlck9mTG9j
YWxzLCBudW1iZXJPZkxvY2FscykpOwogICAgIH0KIAogICAgIG1fY29udGV4dC5kaWRGaW5pc2hQ
YXJzaW5nTG9jYWxzKCk7CkBAIC01NDksNiArNTYwLDY2IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8
Q29udGV4dD46OmF0b21pY0ZlbmNlKEV4dEF0b21pY09wVHlwZSBvcCkgLT4gUGFydGlhbFJlc3Vs
dAogICAgIHJldHVybiB7IH07CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+Cit0ZW1w
bGF0ZTxTaW1kTGFuZU9wZXJhdGlvbiBvcCwgU2ltZExhbmVJbnRlcnByZXRhdGlvbiBsYW5lSW50
ZXJwcmV0YXRpb24sIFNpbWRTaWduRXh0ZW5kTW9kZSBzaWduTW9kZT4KK2F1dG8gRnVuY3Rpb25Q
YXJzZXI8Q29udGV4dD46OnNpbWRTcGVjaWFsQ2FzZShib29sIHJlYWNoYWJsZSkgLT4gUGFydGlh
bFJlc3VsdAoreworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9u
OjpDb25zdDogeworICAgICAgICB2MTI4X3QgY29uc3RhbnQ7CisgICAgICAgIEFTU0VSVChsYW5l
SW50ZXJwcmV0YXRpb24gPT0gU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6djEyOCk7CisgICAgICAg
IEFTU0VSVChzaWduTW9kZSA9PSBTaW1kU2lnbkV4dGVuZE1vZGU6Ok5BKTsKKyAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighcGFyc2VJbW1CeXRlQXJyYXkxNihjb25zdGFudCksICJjYW4ndCBw
YXJzZSAxMjgtYml0IHZlY3RvciBjb25zdGFudCIpOworICAgICAgICBpZiAoIXJlYWNoYWJsZSkK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29u
c3RydWN0QW5kQXBwZW5kKFR5cGVzOjpWMTI4LCBtX2NvbnRleHQuYWRkQ29uc3RhbnQoY29uc3Rh
bnQpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwg
ImludmFsaWQgc2ltZCBvcCAiLCBTaW1kTGFuZU9wZXJhdGlvbkR1bXAob3ApKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIHJldHVybiB7IH07Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENv
bnRleHQ+Cit0ZW1wbGF0ZTxFeHRTaW1kT3BUeXBlIG9wLCBzaXplX3QgbnVtSW1tZWRpYXRlcywg
c2l6ZV90IG51bUFyZ3VtZW50cz4KK2F1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnNpbWRD
YXNlKGJvb2wgcmVhY2hhYmxlLCBUeXBlIHJlc3VsdFR5cGUsIGNvbnN0IHN0ZDo6YXJyYXk8aW50
LCBudW1JbW1lZGlhdGVzPiYgaW1tZWRpYXRlU2l6ZXMsIGNvbnN0IHN0ZDo6YXJyYXk8Y29uc3Qg
VHlwZSosIG51bUFyZ3VtZW50cz4mIGFyZ3VtZW50VHlwZXMpIC0+IFBhcnRpYWxSZXN1bHQKK3sK
KyAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIG51bUltbWVkaWF0ZXM+IGltbXM7CisgICAgc3RkOjph
cnJheTxFeHByZXNzaW9uVHlwZSwgbnVtQXJndW1lbnRzPiBhcmdzOworICAgIAorICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtSW1tZWRpYXRlczsgKytpKSB7CisgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIXBhcnNlSW1tTGFuZUlkeChpbW1lZGlhdGVTaXplc1tpXSwgaW1tc1tpXSks
ICJjYW4ndCBwYXJzZSBsYW5lIGluZGV4IGltbWVkaWF0ZSIpOworICAgIH0KKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtQXJndW1lbnRzOyArK2kpIHsKKyAgICAgICAgVHlwZWRFeHBy
ZXNzaW9uIGU7CisgICAgICAgIAorICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFD
S19JTlRPKGUsICJzaW1kIGFyZ3VtZW50Iik7CisgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxf
SUYoZS50eXBlKCkgIT0gKmFyZ3VtZW50VHlwZXNbaV0sICJ0eXBlIG1pc21hdGNoIGZvciBhcmd1
bWVudCAiLCBpKTsKKyAgICAgICAgYXJnc1tpXSA9IGUudmFsdWUoKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKCFyZWFjaGFibGUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAocmVzdWx0
VHlwZS5pc1ZvaWQoKSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdDsK
KyAgICBQYXJ0aWFsUmVzdWx0IG9wUmVzdWx0ID0gbV9jb250ZXh0LnRlbXBsYXRlIGFkZFNpbWRP
cDxvcD4oaW1tcywgYXJncywgcmVzdWx0KTsKKyAgICBpZiAoVU5MSUtFTFkoIW9wUmVzdWx0KSkK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUob3BSZXN1bHQuZXJyb3IoKSkp
OworICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChyZXN1bHRUeXBlLCBy
ZXN1bHQpOworICAgIAorICAgIHJldHVybiB7IH07Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIENv
bnRleHQ+CiBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVRhYmxlSW5kZXgodW5z
aWduZWQmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewpAQCAtMTEyNyw3ICsxMTk4LDcgQEAg
Rk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIFdBU01f
RkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbmRleEZvckxvY2FsKGluZGV4KSk7CiAKICAgICAg
ICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OwotICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVY
VChnZXRMb2NhbChpbmRleCwgcmVzdWx0KSk7CisgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05U
RVhUKGdldExvY2FsKGluZGV4LCBtX2xvY2Fsc1tpbmRleF0sIHJlc3VsdCkpOwogICAgICAgICBt
X2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQobV9sb2NhbHNbaW5kZXhdLCByZXN1
bHQpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KQEAgLTExNDAsNyArMTIxMSw3IEBAIEZP
Ul9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBXQVNNX1RS
WV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKHZhbHVlLCAic2V0X2xvY2FsIik7CiAgICAgICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoaW5kZXggPj0gbV9sb2NhbHMuc2l6ZSgpLCAiYXR0ZW1w
dCB0byBzZXQgdW5rbm93biBsb2NhbCAiLCBpbmRleCwgIiBsYXN0IG9uZSBpcyAiLCBtX2xvY2Fs
cy5zaXplKCkpOwogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUodmFs
dWUudHlwZSgpLCBtX2xvY2Fsc1tpbmRleF0pLCAic2V0X2xvY2FsIHRvIHR5cGUgIiwgdmFsdWUu
dHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQgIiwgbV9sb2NhbHNbaW5kZXhdLmtpbmQpOwotICAgICAg
ICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChzZXRMb2NhbChpbmRleCwgdmFsdWUpKTsKKyAgICAg
ICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoc2V0TG9jYWwoaW5kZXgsIG1fbG9jYWxzW2luZGV4
XSwgdmFsdWUpKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTExNTIsNyArMTIy
Myw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAg
ICBUeXBlZEV4cHJlc3Npb24gdmFsdWUgPSBtX2V4cHJlc3Npb25TdGFjay5sYXN0KCk7CiAgICAg
ICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoaW5kZXggPj0gbV9sb2NhbHMuc2l6ZSgpLCAiYXR0
ZW1wdCB0byB0ZWUgdW5rbm93biBsb2NhbCAiLCBpbmRleCwgIiBsYXN0IG9uZSBpcyAiLCBtX2xv
Y2Fscy5zaXplKCkpOwogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUo
dmFsdWUudHlwZSgpLCBtX2xvY2Fsc1tpbmRleF0pLCAic2V0X2xvY2FsIHRvIHR5cGUgIiwgdmFs
dWUudHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQgIiwgbV9sb2NhbHNbaW5kZXhdLmtpbmQpOwotICAg
ICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChzZXRMb2NhbChpbmRleCwgdmFsdWUpKTsKKyAg
ICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoc2V0TG9jYWwoaW5kZXgsIG1fbG9jYWxzW2lu
ZGV4XSwgdmFsdWUpKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTEyMDAsNyAr
MTI3MSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAg
ICAgICAgICAgVHlwZWRFeHByZXNzaW9uIGFyZyA9IG1fZXhwcmVzc2lvblN0YWNrLmF0KGkpOwog
ICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKGFyZy50eXBlKCks
IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4KSksICJhcmd1
bWVudCB0eXBlIG1pc21hdGNoIGluIGNhbGwsIGdvdCAiLCBhcmcudHlwZSgpLmtpbmQsICIsIGV4
cGVjdGVkICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4
KS5raW5kKTsKICAgICAgICAgICAgIGFyZ3MudW5jaGVja2VkQXBwZW5kKGFyZyk7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsKKyAgICAgICAgICAgIG1fY29u
dGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjayhhcmcudHlwZSgpKTsKICAgICAgICAgfQogICAgICAg
ICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1bWVudEluZGV4KTsKIApAQCAtMTI0
MSw3ICsxMzEyLDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0Up
CiAgICAgICAgICAgICBpZiAoaSA8IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSAtIDEpCiAgICAg
ICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKGFyZy50eXBlKCks
IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4KSksICJhcmd1
bWVudCB0eXBlIG1pc21hdGNoIGluIGNhbGxfaW5kaXJlY3QsIGdvdCAiLCBhcmcudHlwZSgpLmtp
bmQsICIsIGV4cGVjdGVkICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1
bWVudEluZGV4KS5raW5kKTsKICAgICAgICAgICAgIGFyZ3MudW5jaGVja2VkQXBwZW5kKGFyZyk7
Ci0gICAgICAgICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsKKyAgICAgICAg
ICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjayhhcmcudHlwZSgpKTsKICAgICAgICAg
fQogICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1bWVudEluZGV4KTsK
IApAQCAtMTI3MSw3ICsxMzQyLDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JF
QVRFX0NBU0UpCiAgICAgICAgICAgICBpZiAoaSA8IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSAt
IDEpCiAgICAgICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihhcmcudHlwZSgpICE9
IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4KSwgImFyZ3Vt
ZW50IHR5cGUgbWlzbWF0Y2ggaW4gY2FsbF9pbmRpcmVjdCwgZ290ICIsIGFyZy50eXBlKCkua2lu
ZCwgIiwgZXhwZWN0ZWQgIiwgY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50KGkgLSBmaXJzdEFyZ3Vt
ZW50SW5kZXgpLmtpbmQpOwogICAgICAgICAgICAgYXJncy51bmNoZWNrZWRBcHBlbmQoYXJnKTsK
LSAgICAgICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjaygpOworICAgICAgICAg
ICAgbV9jb250ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKGFyZy50eXBlKCkpOwogICAgICAgICB9
CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLnNocmluayhmaXJzdEFyZ3VtZW50SW5kZXgpOwog
CkBAIC0xNDYyLDE3ICsxNTMzLDE3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENS
RUFURV9DQVNFKQogCiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYobV9leHByZXNzaW9u
U3RhY2suc2l6ZSgpIDwgZXhjZXB0aW9uU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwgIlRvbyBm
ZXcgYXJndW1lbnRzIG9uIHN0YWNrIGZvciB0aGUgZXhjZXB0aW9uIGJlaW5nIHRocm93bi4gVGhl
IGV4Y2VwdGlvbiBleHBlY3RzICIsIGV4Y2VwdGlvblNpZ25hdHVyZS5hcmd1bWVudENvdW50KCks
ICIsIGJ1dCBvbmx5ICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB3ZXJlIHByZXNlbnQu
IEV4Y2VwdGlvbiBoYXMgc2lnbmF0dXJlOiAiLCBleGNlcHRpb25TaWduYXR1cmUudG9TdHJpbmco
KSk7CiAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSAt
IGV4Y2VwdGlvblNpZ25hdHVyZS5hcmd1bWVudENvdW50KCk7Ci0gICAgICAgIFZlY3RvcjxFeHBy
ZXNzaW9uVHlwZT4gYXJnczsKKyAgICAgICAgU3RhY2sgYXJncyhleGNlcHRpb25TaWduYXR1cmUu
YXJndW1lbnRDb3VudCgpKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighYXJncy50cnlS
ZXNlcnZlQ2FwYWNpdHkoZXhjZXB0aW9uU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSksICJjYW4n
dCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciB0aHJvdydzICIsIGV4Y2VwdGlvblNpZ25hdHVy
ZS5hcmd1bWVudENvdW50KCksICIgYXJndW1lbnRzIik7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBleGNlcHRpb25TaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyArK2kpIHsKICAg
ICAgICAgICAgIFR5cGVkRXhwcmVzc2lvbiBhcmcgPSBtX2V4cHJlc3Npb25TdGFjay5hdChvZmZz
ZXQgKyBpKTsKICAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoYXJnLnR5cGUoKSAh
PSBleGNlcHRpb25TaWduYXR1cmUuYXJndW1lbnQoaSksICJUaGUgZXhjZXB0aW9uIGJlaW5nIHRo
cm93biBleHBlY3RzIHRoZSBhcmd1bWVudCBhdCBpbmRleCAiLCBpLCAiIHRvIGJlICIsIGV4Y2Vw
dGlvblNpZ25hdHVyZS5hcmd1bWVudChpKS5raW5kLCAiIGJ1dCBhcmd1bWVudCBoYXMgdHlwZSAi
LCBhcmcudHlwZSgpLmtpbmQpOwogICAgICAgICAgICAgYXJncy51bmNoZWNrZWRBcHBlbmQoYXJn
KTsKLSAgICAgICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjaygpOworICAgICAg
ICAgICAgbV9jb250ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKGFyZy50eXBlKCkpOwogICAgICAg
ICB9CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLnNocmluayhvZmZzZXQpOwogCi0gICAgICAg
IFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFRocm93KGV4Y2VwdGlvbkluZGV4LCBhcmdzLCBt
X2V4cHJlc3Npb25TdGFjaykpOworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRU
aHJvdyhleGNlcHRpb25JbmRleCwgYXJncykpOwogICAgICAgICBtX3VucmVhY2hhYmxlQmxvY2tz
ID0gMTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CkBAIC0xNTgwLDggKzE2NTEsMTAgQEAg
Rk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAKICAgICBjYXNlIERy
b3A6IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9leHByZXNzaW9uU3RhY2suc2l6
ZSgpLCAiY2FuJ3QgZHJvcCBvbiBlbXB0eSBzdGFjayIpOwotICAgICAgICBtX2V4cHJlc3Npb25T
dGFjay50YWtlTGFzdCgpOwotICAgICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2so
KTsKKyAgICAgICAgCisgICAgICAgIFR5cGVkRXhwcmVzc2lvbiB1bnVzZWQ7CisgICAgICAgIFdB
U01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8odW51c2VkLCAiZXhwZWN0IGFuIGFyZ3Vt
ZW50IHRvIGRyb3Agb24gdGhlIHN0YWNrIik7CisgICAgICAgIAogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KIApAQCAtMTYyMCw2ICsxNjkzLDI3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NU
T1JFX09QKENSRUFURV9DQVNFKQogCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQorCisgICAg
Y2FzZSBFeHRTaW1kOiB7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5U0lNRCgpLCAid2FzbS1zaW1kIGlzIG5vdCBlbmFibGVkIik7CisgICAgICAg
IHVpbnQ4X3Qgc2ltZE9wOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4
KHNpbWRPcCksICJjYW4ndCBwYXJzZSB3YXNtIGV4dGVuZGVkIG9wY29kZSIpOworCisgICAgICAg
IEV4dFNpbWRPcFR5cGUgb3AgPSBzdGF0aWNfY2FzdDxFeHRTaW1kT3BUeXBlPihzaW1kT3ApOwor
ICAgICAgICBzd2l0Y2ggKG9wKSB7CisjZGVmaW5lIENSRUFURV9TSU1EX0NBU0UobmFtZSwgaWQs
IGIzb3AsIGluYywgd2FzbU9wLCByZXR1cm5UeXBlLCBudW1JbW1lZGlhdGVzLCBpbW1lZGlhdGVT
aXplcywgbnVtQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzLCBsYW5lSW50ZXJwcmV0YXRpb24sIHNp
Z25FeHRlbmRNb2RlKSBcCisgICAgICAgIGNhc2UgRXh0U2ltZE9wVHlwZTo6bmFtZTogcmV0dXJu
IHNpbWRDYXNlPEV4dFNpbWRPcFR5cGU6Om5hbWUsIG51bUltbWVkaWF0ZXMsIG51bUFyZ3VtZW50
cz4odHJ1ZSwgcmV0dXJuVHlwZSwgaW1tZWRpYXRlU2l6ZXMsIGFyZ3VtZW50VHlwZXMpOworICAg
ICAgICBGT1JfRUFDSF9XQVNNX0VYVF9TSU1EX09QKENSRUFURV9TSU1EX0NBU0UpCisjdW5kZWYg
Q1JFQVRFX1NJTURfQ0FTRQorI2RlZmluZSBDUkVBVEVfU0lNRF9DQVNFKG5hbWUsIGlkLCBiM29w
LCBpbmMsIGxhbmVPcCwgbGFuZUludGVycHJldGF0aW9uLCBzaWduTW9kZSkgY2FzZSBFeHRTaW1k
T3BUeXBlOjpuYW1lOiByZXR1cm4gc2ltZFNwZWNpYWxDYXNlPGxhbmVPcCwgbGFuZUludGVycHJl
dGF0aW9uLCBzaWduTW9kZT4odHJ1ZSk7CisgICAgICAgIEZPUl9FQUNIX1dBU01fRVhUX1NJTURf
U1BFQ0lBTF9PUChDUkVBVEVfU0lNRF9DQVNFKQorI3VuZGVmIENSRUFURV9TSU1EX0NBU0UKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwgImlu
dmFsaWQgZXh0ZW5kZWQgc2ltZCBvcCAiLCBzaW1kT3ApOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CiAgICAgfQogCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC0xOTcwLDYgKzIwNjQsMjcgQEAgYXV0byBGdW5jdGlvblBhcnNl
cjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0
CiAgICAgfQogI3VuZGVmIENSRUFURV9BVE9NSUNfQ0FTRQogCisgICAgY2FzZSBFeHRTaW1kOiB7
CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5U0lN
RCgpLCAid2FzbS1zaW1kIGlzIG5vdCBlbmFibGVkIik7CisgICAgICAgIHVpbnQ4X3Qgc2ltZE9w
OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KHNpbWRPcCksICJjYW4n
dCBwYXJzZSB3YXNtIGV4dGVuZGVkIG9wY29kZSIpOworCisgICAgICAgIEV4dFNpbWRPcFR5cGUg
b3AgPSBzdGF0aWNfY2FzdDxFeHRTaW1kT3BUeXBlPihzaW1kT3ApOworICAgICAgICBzd2l0Y2gg
KG9wKSB7CisjZGVmaW5lIENSRUFURV9TSU1EX0NBU0UobmFtZSwgaWQsIGIzb3AsIGluYywgd2Fz
bU9wLCByZXR1cm5UeXBlLCBudW1JbW1lZGlhdGVzLCBpbW1lZGlhdGVTaXplcywgbnVtQXJndW1l
bnRzLCBhcmd1bWVudFR5cGVzLCBsYW5lSW50ZXJwcmV0YXRpb24sIHNpZ25FeHRlbmRNb2RlKSBc
CisgICAgICAgIGNhc2UgRXh0U2ltZE9wVHlwZTo6bmFtZTogcmV0dXJuIHNpbWRDYXNlPEV4dFNp
bWRPcFR5cGU6Om5hbWUsIG51bUltbWVkaWF0ZXMsIG51bUFyZ3VtZW50cz4oZmFsc2UsIHJldHVy
blR5cGUsIGltbWVkaWF0ZVNpemVzLCBhcmd1bWVudFR5cGVzKTsKKyAgICAgICAgRk9SX0VBQ0hf
V0FTTV9FWFRfU0lNRF9PUChDUkVBVEVfU0lNRF9DQVNFKQorI3VuZGVmIENSRUFURV9TSU1EX0NB
U0UKKyNkZWZpbmUgQ1JFQVRFX1NJTURfQ0FTRShuYW1lLCBpZCwgYjNvcCwgaW5jLCBsYW5lT3As
IGxhbmVJbnRlcnByZXRhdGlvbiwgc2lnbk1vZGUpIGNhc2UgRXh0U2ltZE9wVHlwZTo6bmFtZTog
cmV0dXJuIHNpbWRTcGVjaWFsQ2FzZTxsYW5lT3AsIGxhbmVJbnRlcnByZXRhdGlvbiwgc2lnbk1v
ZGU+KGZhbHNlKTsKKyAgICAgICAgRk9SX0VBQ0hfV0FTTV9FWFRfU0lNRF9TUEVDSUFMX09QKENS
RUFURV9TSU1EX0NBU0UpCisjdW5kZWYgQ1JFQVRFX1NJTURfQ0FTRQorICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0cnVlLCAiaW52YWxpZCBleHRlbmRl
ZCBzaW1kIG9wICIsIHNpbWRPcCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKwogICAgIC8vIG5vIGltbWVkaWF0ZSBjYXNlcwogICAg
IEZPUl9FQUNIX1dBU01fQklOQVJZX09QKENSRUFURV9DQVNFKQogICAgIEZPUl9FQUNIX1dBU01f
VU5BUllfT1AoQ1JFQVRFX0NBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUxMSW50R2VuZXJhdG9yLmNwcAppbmRleCAzMjg5MzJlYTMwMTguLmI3MzhjYzJhNzg4NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3Iu
Y3BwCkBAIC00NCw5ICs0NCwxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20g
ewogCituYW1lc3BhY2UgTExJbnRHZW5lcmF0b3JJbnRlcm5hbCB7CitzdGF0aWMgY29uc3RleHBy
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQorCiBjbGFzcyBMTEludEdlbmVyYXRvciA6IHB1Ymxp
YyBCeXRlY29kZUdlbmVyYXRvckJhc2U8R2VuZXJhdG9yVHJhaXRzPiB7CiBwdWJsaWM6CiAgICAg
dXNpbmcgRXhwcmVzc2lvblR5cGUgPSBWaXJ0dWFsUmVnaXN0ZXI7CisgICAgdXNpbmcgRXJyb3JU
eXBlID0gU3RyaW5nOworICAgIHVzaW5nIFBhcnRpYWxSZXN1bHQgPSBFeHBlY3RlZDx2b2lkLCBF
cnJvclR5cGU+OworICAgIHVzaW5nIFVuZXhwZWN0ZWRSZXN1bHQgPSBVbmV4cGVjdGVkPEVycm9y
VHlwZT47CiAKICAgICBzdHJ1Y3QgQ29udHJvbExvb3AgIHsKICAgICAgICAgUmVmPExhYmVsPiBt
X2JvZHk7CkBAIC03OSw2ICs4NiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVkIG1faW5z
dHJ1Y3Rpb25PZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIG1fdHJ5RGVwdGg7CiAgICAgfTsKKyAg
ICAKKyAgICBzdHJ1Y3QgV2FzbUV4cHJlc3Npb25TbG90IHsKKyAgICAgICAgV2FzbTo6VHlwZSB0
eXBlOworICAgICAgICBDaGVja2VkPHVuc2lnbmVkPiBzbG90SW5kZXg7CisgICAgICAgIAorICAg
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgb3V0LnByaW50KCIoIiwgc2xvdEluZGV4LnZhbHVlKCksICI6ICIsIHR5cGUsICIpIik7
CisgICAgICAgIH0KKyAgICB9OworICAgIHVzaW5nIFdhc21FeHByZXNzaW9uU2xvdFN0YWNrID0g
VmVjdG9yPFdhc21FeHByZXNzaW9uU2xvdCwgMTY+OwogCiAgICAgc3RydWN0IENvbnRyb2xUeXBl
IDogcHVibGljIHN0ZDo6dmFyaWFudDxDb250cm9sTG9vcCwgQ29udHJvbFRvcExldmVsLCBDb250
cm9sQmxvY2ssIENvbnRyb2xJZiwgQ29udHJvbFRyeSwgQ29udHJvbENhdGNoPiB7CiAgICAgICAg
IHVzaW5nIEJhc2UgPSBzdGQ6OnZhcmlhbnQ8Q29udHJvbExvb3AsIENvbnRyb2xUb3BMZXZlbCwg
Q29udHJvbEJsb2NrLCBDb250cm9sSWYsIENvbnRyb2xUcnksIENvbnRyb2xDYXRjaD47CkBAIC04
OCwzNCArMTA2LDQ0IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAg
c3RhdGljIENvbnRyb2xUeXBlIHRvcExldmVsKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgdW5z
aWduZWQgc3RhY2tTaXplLCBSZWZQdHI8TGFiZWw+JiYgY29udGludWF0aW9uKQorICAgICAgICBz
dGF0aWMgQ29udHJvbFR5cGUgdG9wTGV2ZWwoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBjb25z
dCBXYXNtRXhwcmVzc2lvblNsb3RTdGFjayYgc3RhY2tTbG90cywgUmVmUHRyPExhYmVsPiYmIGNv
bnRpbnVhdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIENvbnRyb2xUeXBlKHNp
Z25hdHVyZSwgc3RhY2tTaXplLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xUb3BMZXZl
bCB7IH0pOworICAgICAgICAgICAgcmV0dXJuIENvbnRyb2xUeXBlKHNpZ25hdHVyZSwgc3RhY2tT
bG90cywgV1RGTW92ZShjb250aW51YXRpb24pLCBDb250cm9sVG9wTGV2ZWwgeyB9KTsKICAgICAg
ICAgfQogCi0gICAgICAgIHN0YXRpYyBDb250cm9sVHlwZSBsb29wKEJsb2NrU2lnbmF0dXJlIHNp
Z25hdHVyZSwgdW5zaWduZWQgc3RhY2tTaXplLCBSZWY8TGFiZWw+JiYgYm9keSwgUmVmUHRyPExh
YmVsPiYmIGNvbnRpbnVhdGlvbikKKyAgICAgICAgc3RhdGljIENvbnRyb2xUeXBlIGxvb3AoQmxv
Y2tTaWduYXR1cmUgc2lnbmF0dXJlLCBjb25zdCBXYXNtRXhwcmVzc2lvblNsb3RTdGFjayYgc3Rh
Y2tTbG90cywgUmVmPExhYmVsPiYmIGJvZHksIFJlZlB0cjxMYWJlbD4mJiBjb250aW51YXRpb24p
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIHN0
YWNrU2l6ZSAtIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCBXVEZNb3ZlKGNvbnRpbnVhdGlv
biksIENvbnRyb2xMb29wIHsgV1RGTW92ZShib2R5KSB9KTsKKyAgICAgICAgICAgIFdhc21FeHBy
ZXNzaW9uU2xvdFN0YWNrIG5ld1N0YWNrIHsgc3RhY2tTbG90cyB9OworICAgICAgICAgICAgbmV3
U3RhY2sucmVtb3ZlKDAsIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpKTsKKyAgICAgICAgICAg
IHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIG5ld1N0YWNrLCBXVEZNb3ZlKGNvbnRpbnVh
dGlvbiksIENvbnRyb2xMb29wIHsgV1RGTW92ZShib2R5KSB9KTsKICAgICAgICAgfQogCi0gICAg
ICAgIHN0YXRpYyBDb250cm9sVHlwZSBibG9jayhCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIHVu
c2lnbmVkIHN0YWNrU2l6ZSwgUmVmUHRyPExhYmVsPiYmIGNvbnRpbnVhdGlvbikKKyAgICAgICAg
c3RhdGljIENvbnRyb2xUeXBlIGJsb2NrKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgY29uc3Qg
V2FzbUV4cHJlc3Npb25TbG90U3RhY2smIHN0YWNrU2xvdHMsIFJlZlB0cjxMYWJlbD4mJiBjb250
aW51YXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBDb250cm9sVHlwZShzaWdu
YXR1cmUsIHN0YWNrU2l6ZSAtIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCBXVEZNb3ZlKGNv
bnRpbnVhdGlvbiksIENvbnRyb2xCbG9jayB7IH0pOworICAgICAgICAgICAgV2FzbUV4cHJlc3Np
b25TbG90U3RhY2sgbmV3U3RhY2sgeyBzdGFja1Nsb3RzIH07CisgICAgICAgICAgICBuZXdTdGFj
ay5yZW1vdmUoMCwgc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCkpOworICAgICAgICAgICAgcmV0
dXJuIENvbnRyb2xUeXBlKHNpZ25hdHVyZSwgbmV3U3RhY2ssIFdURk1vdmUoY29udGludWF0aW9u
KSwgQ29udHJvbEJsb2NrIHsgfSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgQ29udHJv
bFR5cGUgaWZfKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgdW5zaWduZWQgc3RhY2tTaXplLCBS
ZWY8TGFiZWw+JiYgYWx0ZXJuYXRlLCBSZWZQdHI8TGFiZWw+JiYgY29udGludWF0aW9uKQorICAg
ICAgICBzdGF0aWMgQ29udHJvbFR5cGUgaWZfKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgY29u
c3QgV2FzbUV4cHJlc3Npb25TbG90U3RhY2smIHN0YWNrU2xvdHMsIFJlZjxMYWJlbD4mJiBhbHRl
cm5hdGUsIFJlZlB0cjxMYWJlbD4mJiBjb250aW51YXRpb24pCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIHN0YWNrU2l6ZSAtIHNpZ25hdHVyZS0+
YXJndW1lbnRDb3VudCgpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xJZiB7IFdURk1v
dmUoYWx0ZXJuYXRlKSB9KTsKKyAgICAgICAgICAgIFdhc21FeHByZXNzaW9uU2xvdFN0YWNrIG5l
d1N0YWNrIHsgc3RhY2tTbG90cyB9OworICAgICAgICAgICAgbmV3U3RhY2sucmVtb3ZlKDAsIHNp
Z25hdHVyZS0+YXJndW1lbnRDb3VudCgpKTsKKyAgICAgICAgICAgIHJldHVybiBDb250cm9sVHlw
ZShzaWduYXR1cmUsIG5ld1N0YWNrLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xJZiB7
IFdURk1vdmUoYWx0ZXJuYXRlKSB9KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBDb250
cm9sVHlwZSBjcmVhdGVUcnkoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCB1bnNpZ25lZCBzdGFj
a1NpemUsIFJlZjxMYWJlbD4mJiB0cnlMYWJlbCwgUmVmUHRyPExhYmVsPiYmIGNvbnRpbnVhdGlv
biwgdW5zaWduZWQgdHJ5RGVwdGgpCisgICAgICAgIHN0YXRpYyBDb250cm9sVHlwZSBjcmVhdGVU
cnkoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBjb25zdCBXYXNtRXhwcmVzc2lvblNsb3RTdGFj
ayYgc3RhY2tTbG90cywgUmVmPExhYmVsPiYmIHRyeUxhYmVsLCBSZWZQdHI8TGFiZWw+JiYgY29u
dGludWF0aW9uLCB1bnNpZ25lZCB0cnlEZXB0aCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIENvbnRyb2xUeXBlKHNpZ25hdHVyZSwgc3RhY2tTaXplIC0gc2lnbmF0dXJlLT5hcmd1bWVu
dENvdW50KCksIFdURk1vdmUoY29udGludWF0aW9uKSwgQ29udHJvbFRyeSB7IFdURk1vdmUodHJ5
TGFiZWwpLCB0cnlEZXB0aCB9KTsKKyAgICAgICAgICAgIFdhc21FeHByZXNzaW9uU2xvdFN0YWNr
IG5ld1N0YWNrIHsgc3RhY2tTbG90cyB9OworICAgICAgICAgICAgbmV3U3RhY2sucmVtb3ZlKDAs
IHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpKTsKKyAgICAgICAgICAgIHJldHVybiBDb250cm9s
VHlwZShzaWduYXR1cmUsIG5ld1N0YWNrLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xU
cnkgeyBXVEZNb3ZlKHRyeUxhYmVsKSwgdHJ5RGVwdGggfSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBzdGF0aWMgQ29udHJvbFR5cGUgY3JlYXRlQ2F0Y2goQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJl
LCB1bnNpZ25lZCBzdGFja1NpemUsIFJlZjxMYWJlbD4mJiB0cnlTdGFydCwgUmVmUHRyPExhYmVs
PiYmIGNvbnRpbnVhdGlvbiwgUmVmPExhYmVsPiB0cnlFbmQsIHVuc2lnbmVkIHRyeURlcHRoLCBW
aXJ0dWFsUmVnaXN0ZXIgZXhjZXB0aW9uKQorICAgICAgICBzdGF0aWMgQ29udHJvbFR5cGUgY3Jl
YXRlQ2F0Y2goQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBjb25zdCBXYXNtRXhwcmVzc2lvblNs
b3RTdGFjayYgc3RhY2tTbG90cywgUmVmPExhYmVsPiYmIHRyeVN0YXJ0LCBSZWZQdHI8TGFiZWw+
JiYgY29udGludWF0aW9uLCBSZWY8TGFiZWw+IHRyeUVuZCwgdW5zaWduZWQgdHJ5RGVwdGgsIFZp
cnR1YWxSZWdpc3RlciBleGNlcHRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBD
b250cm9sVHlwZShzaWduYXR1cmUsIHN0YWNrU2l6ZSAtIHNpZ25hdHVyZS0+YXJndW1lbnRDb3Vu
dCgpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xDYXRjaCB7IENhdGNoS2luZDo6Q2F0
Y2gsIFdURk1vdmUodHJ5U3RhcnQpLCBXVEZNb3ZlKHRyeUVuZCksIHRyeURlcHRoLCBleGNlcHRp
b24gfSk7CisgICAgICAgICAgICBXYXNtRXhwcmVzc2lvblNsb3RTdGFjayBuZXdTdGFjayB7IHN0
YWNrU2xvdHMgfTsKKyAgICAgICAgICAgIG5ld1N0YWNrLnJlbW92ZSgwLCBzaWduYXR1cmUtPmFy
Z3VtZW50Q291bnQoKSk7CisgICAgICAgICAgICByZXR1cm4gQ29udHJvbFR5cGUoc2lnbmF0dXJl
LCBuZXdTdGFjaywgV1RGTW92ZShjb250aW51YXRpb24pLCBDb250cm9sQ2F0Y2ggeyBDYXRjaEtp
bmQ6OkNhdGNoLCBXVEZNb3ZlKHRyeVN0YXJ0KSwgV1RGTW92ZSh0cnlFbmQpLCB0cnlEZXB0aCwg
ZXhjZXB0aW9uIH0pOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGJvb2wgaXNMb29wKGNv
bnN0IENvbnRyb2xUeXBlJiBjb250cm9sKSB7IHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PENvbnRyb2xMb29wPihjb250cm9sKTsgfQpAQCAtMTMyLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBjYXRjaERhdGEubV9raW5kID09IENhdGNoS2luZDo6Q2F0Y2g7CiAg
ICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBzdGFja1NpemUoKSBjb25zdCB7IHJldHVybiBt
X3N0YWNrU2l6ZTsgfQorICAgICAgICB1bnNpZ25lZCBzdGFja0NvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9leHByZXNzaW9uU3RhY2tTbG90cy5zaXplKCk7IH0KICAgICAgICAgQmxvY2tTaWduYXR1
cmUgc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmU7IH0KIAogICAgICAgICBS
ZWZQdHI8TGFiZWw+IHRhcmdldExhYmVsRm9yQnJhbmNoKCkgY29uc3QKQEAgLTE1OCwyNCArMTg2
LDIwIEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIEJsb2NrU2lnbmF0dXJlIG1fc2ln
bmF0dXJlOwotICAgICAgICB1bnNpZ25lZCBtX3N0YWNrU2l6ZTsKKyAgICAgICAgV2FzbUV4cHJl
c3Npb25TbG90U3RhY2sgbV9leHByZXNzaW9uU3RhY2tTbG90czsKICAgICAgICAgUmVmUHRyPExh
YmVsPiBtX2NvbnRpbnVhdGlvbjsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci0gICAgICAgIENvbnRyb2xUeXBlKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwg
dW5zaWduZWQgc3RhY2tTaXplLCBSZWZQdHI8TGFiZWw+JiYgY29udGludWF0aW9uLCBUJiYgdCkK
KyAgICAgICAgQ29udHJvbFR5cGUoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBjb25zdCBXYXNt
RXhwcmVzc2lvblNsb3RTdGFjayYgc3RhY2tTbG90cywgUmVmUHRyPExhYmVsPiYmIGNvbnRpbnVh
dGlvbiwgVCYmIHQpCiAgICAgICAgICAgICA6IEJhc2UoV1RGTW92ZSh0KSkKICAgICAgICAgICAg
ICwgbV9zaWduYXR1cmUoc2lnbmF0dXJlKQotICAgICAgICAgICAgLCBtX3N0YWNrU2l6ZShzdGFj
a1NpemUpCisgICAgICAgICAgICAsIG1fZXhwcmVzc2lvblN0YWNrU2xvdHMoc3RhY2tTbG90cykK
ICAgICAgICAgICAgICwgbV9jb250aW51YXRpb24oV1RGTW92ZShjb250aW51YXRpb24pKQogICAg
ICAgICB7CiAgICAgICAgIH0KICAgICB9OwotCi0gICAgdXNpbmcgRXJyb3JUeXBlID0gU3RyaW5n
OwotICAgIHVzaW5nIFBhcnRpYWxSZXN1bHQgPSBFeHBlY3RlZDx2b2lkLCBFcnJvclR5cGU+Owot
ICAgIHVzaW5nIFVuZXhwZWN0ZWRSZXN1bHQgPSBVbmV4cGVjdGVkPEVycm9yVHlwZT47Ci0KKyAg
ICAKICAgICB1c2luZyBDb250cm9sRW50cnkgPSBGdW5jdGlvblBhcnNlcjxMTEludEdlbmVyYXRv
cj46OkNvbnRyb2xFbnRyeTsKICAgICB1c2luZyBDb250cm9sU3RhY2sgPSBGdW5jdGlvblBhcnNl
cjxMTEludEdlbmVyYXRvcj46OkNvbnRyb2xTdGFjazsKICAgICB1c2luZyBSZXN1bHRMaXN0ID0g
RnVuY3Rpb25QYXJzZXI8TExJbnRHZW5lcmF0b3I+OjpSZXN1bHRMaXN0OwpAQCAtMTgzLDYgKzIw
NywzMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgVHlwZWRFeHByZXNzaW9uID0gRnVuY3Rpb25QYXJz
ZXI8TExJbnRHZW5lcmF0b3I+OjpUeXBlZEV4cHJlc3Npb247CiAKICAgICBzdGF0aWMgRXhwcmVz
c2lvblR5cGUgZW1wdHlFeHByZXNzaW9uKCkgeyByZXR1cm4geyB9OyB9OworICAgIHN0YXRpYyBW
aXJ0dWFsUmVnaXN0ZXIgbmV4dFNsb3RGb3JVcHBlckJpdHMoVmlydHVhbFJlZ2lzdGVyIGxvdykK
KyAgICB7CisgICAgICAgIHJldHVybiBsb3cgKyAxOworICAgIH0KKyAgICAKKyAgICB2b2lkIHR5
cGVkTW92ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBUeXBlZEV4cHJlc3Npb24gc3JjKQorICAgIHsK
KyAgICAgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlsi
LCBtX2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAgICAgICAgICJNb3ZlIHR5cGUgIiwgc3JjLnR5
cGUoKSwgIiBhdCBpbmRleCAiLCBzcmMudmFsdWUoKSwgIiwgIiwgbmV4dFNsb3RGb3JVcHBlckJp
dHMoc3JjLnZhbHVlKCkpLCAiIHRvICIsIGRzdCwgIiwgIiwgbmV4dFNsb3RGb3JVcHBlckJpdHMo
ZHN0KSk7CisgICAgICAgIAorICAgICAgICBXYXNtTW92OjplbWl0KHRoaXMsIGRzdCwgc3JjKTsK
KyAgICAgICAgaWYgKHNyYy50eXBlKCkuc2l6ZSgpID09IDE2KQorICAgICAgICAgICAgV2FzbU1v
djo6ZW1pdCh0aGlzLCBuZXh0U2xvdEZvclVwcGVyQml0cyhkc3QpLCBuZXh0U2xvdEZvclVwcGVy
Qml0cyhzcmMudmFsdWUoKSkpOworICAgIH0KKyAgICAKKyAgICBDaGVja2VkPHVuc2lnbmVkPiBu
ZXh0U2xvdEluZGV4KFR5cGUgdHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh0eXBl
LnNpemUoKSA9PSA4IHx8IHR5cGUuc2l6ZSgpID09IDE2KTsKKyAgICAgICAgQ2hlY2tlZDx1bnNp
Z25lZD4gc2xvdEluZGV4ID0gbV9maXJzdFN0YWNrU2xvdEluZGV4OworICAgICAgICBpZiAobV9l
eHByZXNzaW9uU3RhY2tTbG90cy5zaXplKCkpCisgICAgICAgICAgICBzbG90SW5kZXggPSBtX2V4
cHJlc3Npb25TdGFja1Nsb3RzLmxhc3QoKS5zbG90SW5kZXggKyAxOworICAgICAgICBzbG90SW5k
ZXggKz0gdHlwZS5zaXplKCkgLyA4IC0gMTsKKyAgICAgICAgcmV0dXJuIHNsb3RJbmRleDsKKyAg
ICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgLi4uQXJncz4KICAgICBORVZFUl9JTkxJTkUg
VW5leHBlY3RlZFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZmFpbChBcmdzLi4uIGFyZ3MpIGNv
bnN0CkBAIC0xOTgsMzQgKzI0Niw1NyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RXhwcmVzc2lvbkxpc3RBLCB0eXBlbmFtZSBFeHByZXNzaW9uTGlzdEI+CiAgICAgdm9pZCB1bmlm
eVZhbHVlc1dpdGhCbG9jayhjb25zdCBFeHByZXNzaW9uTGlzdEEmIGRlc3RpbmF0aW9ucywgY29u
c3QgRXhwcmVzc2lvbkxpc3RCJiB2YWx1ZXMpCiAgICAgeworICAgICAgICBkYXRhTG9nTG5JZihM
TEludEdlbmVyYXRvckludGVybmFsOjp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0i
LAorICAgICAgICAgICAgIlVuaWZ5ICIsIGxpc3REdW1wKGRlc3RpbmF0aW9ucyksICIgPC0gIiwg
bGlzdER1bXAodmFsdWVzKSk7CiAgICAgICAgIEFTU0VSVChkZXN0aW5hdGlvbnMuc2l6ZSgpIDw9
IHZhbHVlcy5zaXplKCkpOwogICAgICAgICBhdXRvIG9mZnNldCA9IHZhbHVlcy5zaXplKCkgLSBk
ZXN0aW5hdGlvbnMuc2l6ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlc3Rp
bmF0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgYXV0byYgc3JjID0gdmFsdWVzW29m
ZnNldCArIGldOwogICAgICAgICAgICAgYXV0byYgZHN0ID0gZGVzdGluYXRpb25zW2ldOwotICAg
ICAgICAgICAgaWYgKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oc3JjKSAhPSBzdGF0aWNf
Y2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KGRzdCkpCi0gICAgICAgICAgICAgICAgV2FzbU1vdjo6ZW1p
dCh0aGlzLCBkc3QsIHNyYyk7CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8VmlydHVhbFJl
Z2lzdGVyPihzcmMudmFsdWUoKSkgIT0gc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihkc3Qu
dmFsdWUoKSkpCisgICAgICAgICAgICAgICAgdHlwZWRNb3ZlKGRzdCwgc3JjKTsKICAgICAgICAg
fQogICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBzdGFja0NvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9leHByZXNzaW9uU3RhY2tTbG90cy5zaXplKCk7IH0KKyAgICB1bnNpZ25lZCBzdGFja1Nsb3RT
aXplKCkgY29uc3QgeyByZXR1cm4gbmV4dFNsb3RJbmRleChUeXBlczo6STY0KTsgfQogCiAgICAg
ZW51bSBOb0NvbnNpc3RlbmN5Q2hlY2tUYWcgeyBOb0NvbnNpc3RlbmN5Q2hlY2sgfTsKLSAgICBF
eHByZXNzaW9uVHlwZSBwdXNoKE5vQ29uc2lzdGVuY3lDaGVja1RhZykKKyAgICBFeHByZXNzaW9u
VHlwZSBwdXNoKFdhc206OlR5cGUgdHlwZSwgTm9Db25zaXN0ZW5jeUNoZWNrVGFnKQogICAgIHsK
LSAgICAgICAgbV9tYXhTdGFja1NpemUgPSBzdGQ6Om1heChtX21heFN0YWNrU2l6ZSwgKyttX3N0
YWNrU2l6ZSk7Ci0gICAgICAgIHJldHVybiB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX3N0YWNr
U2l6ZSAtIDEpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KG5leHRTbG90SW5kZXgodHlwZSkpOworICAgICAgICBtX2V4cHJlc3Npb25TdGFja1Nsb3RzLmFw
cGVuZCggeyB0eXBlLCBuZXh0U2xvdEluZGV4KHR5cGUpIH0gKTsKKyAgICAgICAgCisgICAgICAg
IGRhdGFMb2dMbklmKExMSW50R2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJbIiwgbV9mdW5j
dGlvbkluZGV4LCAiXSIsCisgICAgICAgICAgICAiUHVzaCB0eXBlICIsIHR5cGUsICIgYXQgaW5k
ZXggIiwgbV9leHByZXNzaW9uU3RhY2tTbG90cy5zaXplKCkgLSAxLCAiIGdvZXMgaW4gIiwKKyAg
ICAgICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fZXhwcmVzc2lvblN0YWNrU2xvdHMu
bGFzdCgpLnNsb3RJbmRleCksICIsICIsCisgICAgICAgICAgICBuZXh0U2xvdEZvclVwcGVyQml0
cyh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2V4cHJlc3Npb25TdGFja1Nsb3RzLmxhc3QoKS5z
bG90SW5kZXgpKSk7CisgICAgICAgIAorICAgICAgICBtX21heFN0YWNrU2xvdFNpemUgPSBzdGQ6
Om1heChzdGFja1Nsb3RTaXplKCksIG1fbWF4U3RhY2tTbG90U2l6ZS52YWx1ZSgpKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uVHlwZSBwdXNoKCkKKyAg
ICBFeHByZXNzaW9uVHlwZSBwdXNoKFdhc206OlR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIGNo
ZWNrQ29uc2lzdGVuY3koKTsKLSAgICAgICAgcmV0dXJuIHB1c2goTm9Db25zaXN0ZW5jeUNoZWNr
KTsKKyAgICAgICAgcmV0dXJuIHB1c2godHlwZSwgTm9Db25zaXN0ZW5jeUNoZWNrKTsKICAgICB9
CiAKLSAgICB2b2lkIGRpZFBvcFZhbHVlRnJvbVN0YWNrKCkgeyAtLW1fc3RhY2tTaXplOyB9Cisg
ICAgdm9pZCBkaWRQb3BWYWx1ZUZyb21TdGFjayhXYXNtOjpUeXBlIHR5cGUpCisgICAgeworICAg
ICAgICBhdXRvIHBvcHBlZFNsb3QgPSBtX2V4cHJlc3Npb25TdGFja1Nsb3RzLnRha2VMYXN0KCk7
CisgICAgICAgIAorICAgICAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVybmFsOjp2
ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAgICAgIlBvcHBlZCAi
LCBwb3BwZWRTbG90LnR5cGUsICIgaW5kZXggIiwgbV9leHByZXNzaW9uU3RhY2tTbG90cy5zaXpl
KCksICIgc2xvdCBpbmRleCAiLCBwb3BwZWRTbG90LnNsb3RJbmRleC52YWx1ZSgpLCAiIC0gZXhw
ZWN0aW5nICIsIHR5cGUpOworICAgICAgICAKKyAgICAgICAgQVNTRVJUX1VOVVNFRChwb3BwZWRT
bG90LCBwb3BwZWRTbG90LnR5cGUgPT0gdHlwZSk7CisgICAgICAgIEFTU0VSVChwb3BwZWRTbG90
LnNsb3RJbmRleCA9PSBuZXh0U2xvdEluZGV4KHR5cGUpKTsKKyAgICB9CiAKICAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJik7
Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkTG9jYWwoVHlwZSwgdWlu
dDMyX3QpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZExvY2FsKFR5
cGUsIHVpbnQzMl90LCB1aW50MzJfdCk7CiAgICAgRXhwcmVzc2lvblR5cGUgYWRkQ29uc3RhbnQo
VHlwZSwgaW50NjRfdCk7CisgICAgRXhwcmVzc2lvblR5cGUgYWRkQ29uc3RhbnQodjEyOF90KTsK
IAogICAgIC8vIFJlZmVyZW5jZXMKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBhZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpOwpAQCAtMjQyLDggKzMxMyw4IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRUYWJsZUNvcHkodW5zaWduZWQsIHVuc2lnbmVkLCBFeHByZXNzaW9u
VHlwZSBkc3RPZmZzZXQsIEV4cHJlc3Npb25UeXBlIHNyY09mZnNldCwgRXhwcmVzc2lvblR5cGUg
bGVuZ3RoKTsKIAogICAgIC8vIExvY2FscwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
LSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBzZXRMb2NhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBXYXNtOjpUeXBlLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBzZXRM
b2NhbCh1aW50MzJfdCBpbmRleCwgV2FzbTo6VHlwZSwgRXhwcmVzc2lvblR5cGUgdmFsdWUpOwog
CiAgICAgLy8gR2xvYmFscwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdl
dEdsb2JhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CkBAIC0yOTMs
NyArMzY0LDcgQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZENhdGNoQWxsVG9VbnJlYWNoYWJsZShDb250cm9sVHlwZSYpOwogICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZERlbGVnYXRlKENvbnRyb2xUeXBlJiwgQ29udHJvbFR5
cGUmKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGREZWxlZ2F0ZVRv
VW5yZWFjaGFibGUoQ29udHJvbFR5cGUmLCBDb250cm9sVHlwZSYpOwotICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBTdGFjayYpOworICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBTdGFj
ayYgYXJncyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0aHJv
dyh1bnNpZ25lZCwgQ29udHJvbFR5cGUmKTsKIAogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIGFkZFJldHVybihjb25zdCBDb250cm9sVHlwZSYsIFN0YWNrJiByZXR1cm5WYWx1
ZXMpOwpAQCAtMzA4LDYgKzM3OSwxMCBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0
IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJl
c3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxSZWYo
Y29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlz
dCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVW5y
ZWFjaGFibGUoKTsKKyAgICAKKyAgICAvLyBTaW1kCisgICAgdGVtcGxhdGU8RXh0U2ltZE9wVHlw
ZSwgc2l6ZV90IG51bUltbWVkaWF0ZXMsIHNpemVfdCBudW1Bcmd1bWVudHM+CisgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU2ltZE9wKHN0ZDo6YXJyYXk8dWludDhfdCwg
bnVtSW1tZWRpYXRlcz4gaW1tZWRpYXRlcywgc3RkOjphcnJheTxFeHByZXNzaW9uVHlwZSwgbnVt
QXJndW1lbnRzPiBhcmd1bWVudHMsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgdm9p
ZCBkaWRGaW5pc2hQYXJzaW5nTG9jYWxzKCk7CiAKQEAgLTMyMywxMyArMzk4LDEzIEBAIHByaXZh
dGU6CiAKICAgICBzdHJ1Y3QgTExJbnRDYWxsSW5mb3JtYXRpb24gewogICAgICAgICB1bnNpZ25l
ZCBzdGFja09mZnNldDsKLSAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0FyZ3VtZW50czsK
LSAgICAgICAgUmVzdWx0TGlzdCBhcmd1bWVudHM7CisgICAgICAgIHVuc2lnbmVkIHNpemVPZlN0
YWNrQXJndW1lbnRzOworICAgICAgICBWZWN0b3I8VHlwZWRFeHByZXNzaW9uLCAyPiBhcmd1bWVu
dHM7CiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzdWx0TGlzdCYpPiBjb21taXRS
ZXN1bHRzOwogICAgIH07CiAKICAgICBMTEludENhbGxJbmZvcm1hdGlvbiBjYWxsSW5mb3JtYXRp
b25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0dXJlJik7Ci0gICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rl
ciwgMj4gY2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVlKGNvbnN0IFNpZ25hdHVyZSYpOworICAgIFZl
Y3RvcjxUeXBlZEV4cHJlc3Npb24sIDI+IGNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZShjb25zdCBT
aWduYXR1cmUmKTsKICAgICB2b2lkIGxpbmtTd2l0Y2hUYXJnZXRzKExhYmVsJiwgdW5zaWduZWQg
bG9jYXRpb24pOwogCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlckZvcldhc21M
b2NhbCh1aW50MzJfdCBpbmRleCkKQEAgLTMzNywxMCArNDEyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgaWYgKGluZGV4IDwgbV9jb2RlQmxvY2stPm1fbnVtQXJndW1lbnRzKQogICAgICAgICAgICAg
cmV0dXJuIG1fbm9ybWFsaXplZEFyZ3VtZW50c1tpbmRleF07CiAKLSAgICAgICAgY29uc3QgYXV0
byYgY2FsbGluZ0NvbnZlbnRpb24gPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKTsKLSAgICAgICAg
Y29uc3QgdWludDMyX3QgZ3ByQ291bnQgPSBjYWxsaW5nQ29udmVudGlvbi5ncHJBcmdzLnNpemUo
KTsKLSAgICAgICAgY29uc3QgdWludDMyX3QgZnByQ291bnQgPSBjYWxsaW5nQ29udmVudGlvbi5m
cHJBcmdzLnNpemUoKTsKLSAgICAgICAgcmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGlu
ZGV4IC0gbV9jb2RlQmxvY2stPm1fbnVtQXJndW1lbnRzICsgZ3ByQ291bnQgKyBmcHJDb3VudCAr
IG51bWJlck9mTExJbnRDYWxsZWVTYXZlUmVnaXN0ZXJzKTsKKyAgICAgICAgcmV0dXJuIG1fbG9j
YWxzW2luZGV4IC0gbV9jb2RlQmxvY2stPm1fbnVtQXJndW1lbnRzXTsKICAgICB9CiAKICAgICBF
eHByZXNzaW9uVHlwZSBqc051bGxDb25zdGFudCgpCkBAIC0zNjcsOSArNDM5LDkgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZ2V0RHJvcEtlZXBDb3VudChjb25zdCBDb250cm9sVHlwZSYgdGFyZ2V0
LCB1bnNpZ25lZCYgc3RhcnRPZmZzZXQsIHVuc2lnbmVkJiBkcm9wLCB1bnNpZ25lZCYga2VlcCkK
ICAgICB7Ci0gICAgICAgIHN0YXJ0T2Zmc2V0ID0gdGFyZ2V0LnN0YWNrU2l6ZSgpICsgMTsKKyAg
ICAgICAgc3RhcnRPZmZzZXQgPSB0YXJnZXQuc3RhY2tDb3VudCgpICsgMTsKICAgICAgICAga2Vl
cCA9IHRhcmdldC5icmFuY2hUYXJnZXRBcml0eSgpOwotICAgICAgICBkcm9wID0gbV9zdGFja1Np
emUgLSB0YXJnZXQuc3RhY2tTaXplKCkgLSB0YXJnZXQuYnJhbmNoVGFyZ2V0QXJpdHkoKTsKKyAg
ICAgICAgZHJvcCA9IHN0YWNrQ291bnQoKSAtIHRhcmdldC5zdGFja0NvdW50KCkgLSB0YXJnZXQu
YnJhbmNoVGFyZ2V0QXJpdHkoKTsKICAgICB9CiAKICAgICB2b2lkIGRyb3BLZWVwKFN0YWNrJiB2
YWx1ZXMsIGNvbnN0IENvbnRyb2xUeXBlJiB0YXJnZXQsIGJvb2wgZHJvcFZhbHVlcykKQEAgLTM4
OSwzMCArNDYxLDY1IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChrZWVwKQogICAgICAgICAgICAg
V2FzbURyb3BLZWVwOjplbWl0KHRoaXMsIHN0YXJ0T2Zmc2V0LCBkcm9wLCBrZWVwKTsKICAgICB9
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdGFjaywgdHlwZW5hbWUgRnVuY3Rvcj4KKyAgICAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgd2Fsa0V4cHJlc3Npb25T
dGFjayhTdGFjayYgZXhwcmVzc2lvblN0YWNrLCB1bnNpZ25lZCBzdGFja1NpemUsIGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBleHByZXNz
aW9uU3RhY2suc2l6ZSgpOyBpID4gMDsgLS1pKSB7Ci0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgc2xvdCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKHN0YWNrU2l6ZSAtIGkpOwotICAgICAg
ICAgICAgZnVuY3RvcihleHByZXNzaW9uU3RhY2tbZXhwcmVzc2lvblN0YWNrLnNpemUoKSAtIGld
LCBzbG90KTsKKyAgICAgICAgdW5zaWduZWQgc2xvdEluZGV4ID0gbV9maXJzdFN0YWNrU2xvdElu
ZGV4OworICAgICAgICB1bnNpZ25lZCB3YXNtU2xvdEluZGV4ID0gMDsKKyAgICAgICAgCisgICAg
ICAgIHdoaWxlICh3YXNtU2xvdEluZGV4IDwgc3RhY2tTaXplKSB7CisgICAgICAgICAgICBhdXRv
JiBleHByZXNzaW9uID0gZXhwcmVzc2lvblN0YWNrW3dhc21TbG90SW5kZXhdOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbi50eXBlKCkuc2l6ZSgpID09IDE2KQorICAg
ICAgICAgICAgICAgICsrc2xvdEluZGV4OworICAgICAgICAgICAgCisgICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgc2xvdCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKHNsb3RJbmRleCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVChleHByZXNzaW9uLnZhbHVlKCkgPT0gc2xv
dCB8fCBleHByZXNzaW9uLnZhbHVlKCkuaXNDb25zdGFudCgpIHx8IGV4cHJlc3Npb24udmFsdWUo
KS5pc0FyZ3VtZW50KCkKKyAgICAgICAgICAgICAgICAgICB8fCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZXhwcmVzc2lvbi52YWx1ZSgpLnRvTG9jYWwoKSkgPCBtX2NvZGVCbG9jay0+bV9udW1WYXJz
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGV4cHJlc3Npb24udHlwZSgpLnNpemUo
KSA9PSAxNikgeworICAgICAgICAgICAgICAgIEFTU0VSVChuZXh0U2xvdEZvclVwcGVyQml0cyhz
bG90KSA9PSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzbG90SW5kZXggLSAxKSk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKG5leHRTbG90Rm9yVXBwZXJCaXRzKGV4cHJlc3Npb24udmFsdWUoKSkg
PT0gbmV4dFNsb3RGb3JVcHBlckJpdHMoc2xvdCkKKyAgICAgICAgICAgICAgICAgICAgICAgfHwg
bmV4dFNsb3RGb3JVcHBlckJpdHMoZXhwcmVzc2lvbi52YWx1ZSgpKS5pc0NvbnN0YW50KCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgfHwgbmV4dFNsb3RGb3JVcHBlckJpdHMoZXhwcmVzc2lvbi52
YWx1ZSgpKS5pc0FyZ3VtZW50KCkKKyAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG5leHRTbG90Rm9yVXBwZXJCaXRzKGV4cHJlc3Npb24udmFsdWUoKSkudG9M
b2NhbCgpKSA8IG1fY29kZUJsb2NrLT5tX251bVZhcnMpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAoJmV4cHJlc3Npb25TdGFjayA9PSAmbV9wYXJzZXItPmV4
cHJlc3Npb25TdGFjaygpKSB7CisgICAgICAgICAgICAgICAgYXV0byBzbG90RGF0YSA9IG1fZXhw
cmVzc2lvblN0YWNrU2xvdHNbd2FzbVNsb3RJbmRleF07CisgICAgICAgICAgICAgICAgQVNTRVJU
KGV4cHJlc3Npb24udHlwZSgpID09IHNsb3REYXRhLnR5cGUpOworICAgICAgICAgICAgICAgIEFT
U0VSVChzbG90RGF0YS5zbG90SW5kZXggPT0gc2xvdEluZGV4KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3RvcihleHByZXNzaW9uLCBzbG90KTsKKyAgICAg
ICAgICAgICsrc2xvdEluZGV4OworICAgICAgICAgICAgKyt3YXNtU2xvdEluZGV4OwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU3RhY2ssIHR5cGVuYW1lIEZ1bmN0
b3I+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIHdhbGtFeHByZXNz
aW9uU3RhY2soU3RhY2smIGV4cHJlc3Npb25TdGFjaywgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
ICAgICB7Ci0gICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2soZXhwcmVzc2lvblN0YWNrLCBtX3N0
YWNrU2l6ZSwgZnVuY3Rvcik7CisgICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2soZXhwcmVzc2lv
blN0YWNrLCBleHByZXNzaW9uU3RhY2suc2l6ZSgpLCBmdW5jdG9yKTsKKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIHdhbGtFeHByZXNzaW9uU3Rh
Y2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIHdhbGtFeHByZXNzaW9u
U3RhY2sobV9wYXJzZXItPmV4cHJlc3Npb25TdGFjaygpLCBmdW5jdG9yKTsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgd2Fsa0V4cHJlc3Npb25TdGFj
ayhDb250cm9sRW50cnkmIGVudHJ5LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKLSAg
ICAgICAgdW5zaWduZWQgc3RhY2tTaXplID0gZW50cnkuY29udHJvbERhdGEuc3RhY2tTaXplKCk7
CisgICAgICAgIHVuc2lnbmVkIHN0YWNrU2l6ZSA9IGVudHJ5LmNvbnRyb2xEYXRhLnN0YWNrQ291
bnQoKTsKKyAgICAgICAgQVNTRVJUKGVudHJ5LmVuY2xvc2VkRXhwcmVzc2lvblN0YWNrLnNpemUo
KSA9PSBzdGFja1NpemUpOwogICAgICAgICB3YWxrRXhwcmVzc2lvblN0YWNrKGVudHJ5LmVuY2xv
c2VkRXhwcmVzc2lvblN0YWNrLCBzdGFja1NpemUsIGZ1bmN0b3IpOwogICAgIH0KIAotICAgIHZv
aWQgY2hlY2tDb25zaXN0ZW5jeSgpCisgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KHVuc2lnbmVk
IHN0YWNrQ291bnQpCiAgICAgewogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIC8vIFRoZSBy
dWxlcyBmb3IgbG9jYWxzIGFuZCBjb25zdGFudHMgaW4gdGhlIHN0YWNrIGFyZToKQEAgLTQyNyw0
OCArNTM0LDU2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24g
PT0gc2xvdCB8fCBleHByZXNzaW9uLmlzQ29uc3RhbnQoKSk7CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfQotICAgICAgICB3YWxrRXhwcmVzc2lvblN0YWNrKG1fcGFyc2VyLT5leHByZXNzaW9u
U3RhY2soKSwgWyZdKFZpcnR1YWxSZWdpc3RlciBleHByZXNzaW9uLCBWaXJ0dWFsUmVnaXN0ZXIg
c2xvdCkgewotICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24gPT0gc2xvdCB8fCBleHByZXNz
aW9uLmlzQ29uc3RhbnQoKSB8fCBleHByZXNzaW9uLmlzQXJndW1lbnQoKSB8fCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZXhwcmVzc2lvbi50b0xvY2FsKCkpIDwgbV9jb2RlQmxvY2stPm1fbnVtVmFy
cyk7CisgICAgICAgIAorICAgICAgICAvLyBXZSBtaWdodCBiZSBpbiB0aGUgcHJvY2VzcyBvZiBh
ZGRpbmcgc3RhY2sgc2xvdHMgZnJvbSB0aGUgcGFyc2VyLgorICAgICAgICBBU1NFUlQoc3RhY2tD
b3VudCA8PSBtX3BhcnNlci0+ZXhwcmVzc2lvblN0YWNrKCkuc2l6ZSgpKTsKKyAgICAgICAgQVNT
RVJUKHN0YWNrQ291bnQgPD0gdGhpcy0+c3RhY2tDb3VudCgpKTsKKyAgICAgICAgQVNTRVJUKHRo
aXMtPnN0YWNrQ291bnQoKSA+PSBtX3BhcnNlci0+ZXhwcmVzc2lvblN0YWNrKCkuc2l6ZSgpKTsK
KyAgICAgICAgCisgICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2sobV9wYXJzZXItPmV4cHJlc3Np
b25TdGFjaygpLCBzdGFja0NvdW50LCBbJl0oY29uc3QgVHlwZWRFeHByZXNzaW9uJiBleHByZXNz
aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkgeworICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Np
b24udmFsdWUoKSA9PSBzbG90IHx8IGV4cHJlc3Npb24udmFsdWUoKS5pc0NvbnN0YW50KCkgfHwg
ZXhwcmVzc2lvbi52YWx1ZSgpLmlzQXJndW1lbnQoKQorICAgICAgICAgICAgICAgICAgIHx8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihleHByZXNzaW9uLnZhbHVlKCkudG9Mb2NhbCgpKSA8IG1fY29k
ZUJsb2NrLT5tX251bVZhcnMpOwogICAgICAgICB9KTsKKyNlbHNlCisgICAgICAgICh2b2lkKSBz
dGFja0NvdW50OwogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAgICAgfQorICAgIAorICAgIHZv
aWQgY2hlY2tDb25zaXN0ZW5jeSgpCisgICAgeworICAgICAgICBjaGVja0NvbnNpc3RlbmN5KG1f
cGFyc2VyLT5leHByZXNzaW9uU3RhY2soKS5zaXplKCkpOworICAgIH0KIAotICAgIHZvaWQgbWF0
ZXJpYWxpemVDb25zdGFudHNBbmRMb2NhbHMoU3RhY2smIGV4cHJlc3Npb25TdGFjaywgTm9Db25z
aXN0ZW5jeUNoZWNrVGFnKQorICAgIHZvaWQgbWF0ZXJpYWxpemVDb25zdGFudHNBbmRMb2NhbHMo
U3RhY2smIGV4cHJlc3Npb25TdGFjaywgYm9vbCBtYXRlcmlhbGl6ZUNvbnN0YW50cywgTm9Db25z
aXN0ZW5jeUNoZWNrVGFnKQogICAgIHsKLSAgICAgICAgd2Fsa0V4cHJlc3Npb25TdGFjayhleHBy
ZXNzaW9uU3RhY2ssIFsmXShhdXRvJiBleHByZXNzaW9uLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkg
ewotICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24udmFsdWUoKSA9PSBzbG90IHx8IGV4cHJl
c3Npb24udmFsdWUoKS5pc0NvbnN0YW50KCkgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQXJndW1l
bnQoKSB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZXhwcmVzc2lvbi52YWx1ZSgpLnRvTG9jYWwo
KSkgPCBtX2NvZGVCbG9jay0+bV9udW1WYXJzKTsKKyAgICAgICAgd2Fsa0V4cHJlc3Npb25TdGFj
ayhleHByZXNzaW9uU3RhY2ssIFsmXShUeXBlZEV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFZpcnR1
YWxSZWdpc3RlciBzbG90KSB7CisgICAgICAgICAgICBBU1NFUlQoZXhwcmVzc2lvbi52YWx1ZSgp
ID09IHNsb3QgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQ29uc3RhbnQoKSB8fCBleHByZXNzaW9u
LnZhbHVlKCkuaXNBcmd1bWVudCgpCisgICAgICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGV4cHJlc3Npb24udmFsdWUoKS50b0xvY2FsKCkpIDwgbV9jb2RlQmxvY2stPm1f
bnVtVmFycyk7CiAgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbi52YWx1ZSgpID09IHNsb3QpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgV2FzbU1vdjo6ZW1pdCh0aGlzLCBz
bG90LCBleHByZXNzaW9uKTsKKyAgICAgICAgICAgIGlmIChleHByZXNzaW9uLnZhbHVlKCkuaXND
b25zdGFudCgpICYmICFtYXRlcmlhbGl6ZUNvbnN0YW50cykKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB0eXBlZE1vdmUoc2xvdCwgZXhwcmVzc2lvbik7CiAgICAgICAgICAg
ICBleHByZXNzaW9uID0gVHlwZWRFeHByZXNzaW9uIHsgZXhwcmVzc2lvbi50eXBlKCksIHNsb3Qg
fTsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgdm9pZCBtYXRlcmlhbGl6ZUNvbnN0YW50c0Fu
ZExvY2FscyhTdGFjayYgZXhwcmVzc2lvblN0YWNrKQorICAgIHZvaWQgbWF0ZXJpYWxpemVDb25z
dGFudHNBbmRMb2NhbHMoU3RhY2smIGV4cHJlc3Npb25TdGFjaywgYm9vbCBtYXRlcmlhbGl6ZUNv
bnN0YXRhbnRzID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIGlmIChleHByZXNzaW9uU3RhY2suaXNF
bXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3ko
KTsKLSAgICAgICAgbWF0ZXJpYWxpemVDb25zdGFudHNBbmRMb2NhbHMoZXhwcmVzc2lvblN0YWNr
LCBOb0NvbnNpc3RlbmN5Q2hlY2spOworICAgICAgICBtYXRlcmlhbGl6ZUNvbnN0YW50c0FuZExv
Y2FscyhleHByZXNzaW9uU3RhY2ssIG1hdGVyaWFsaXplQ29uc3RhdGFudHMsIE5vQ29uc2lzdGVu
Y3lDaGVjayk7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAKICAgICB2b2lk
IHNwbGl0U3RhY2soQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTdGFjayYgZW5jbG9zaW5nU3Rh
Y2ssIFN0YWNrJiBuZXdTdGFjaykKICAgICB7CiAgICAgICAgIEpTQzo6V2FzbTo6c3BsaXRTdGFj
ayhzaWduYXR1cmUsIGVuY2xvc2luZ1N0YWNrLCBuZXdTdGFjayk7Ci0KLSAgICAgICAgbV9zdGFj
a1NpemUgLT0gbmV3U3RhY2suc2l6ZSgpOworICAgICAgICBjaGVja0NvbnNpc3RlbmN5KGVuY2xv
c2luZ1N0YWNrLnNpemUoKSAtIG5ld1N0YWNrLnNpemUoKSk7CisgICAgICAgIG1hdGVyaWFsaXpl
Q29uc3RhbnRzQW5kTG9jYWxzKGVuY2xvc2luZ1N0YWNrLCAvKiBtYXRlcmlhbGl6ZUNvbnN0YW50
cyA9ICovIGZhbHNlKTsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwotICAgICAgICB3YWxr
RXhwcmVzc2lvblN0YWNrKGVuY2xvc2luZ1N0YWNrLCBbJl0oVHlwZWRFeHByZXNzaW9uJiBleHBy
ZXNzaW9uLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkgewotICAgICAgICAgICAgQVNTRVJUKGV4cHJl
c3Npb24udmFsdWUoKSA9PSBzbG90IHx8IGV4cHJlc3Npb24udmFsdWUoKS5pc0NvbnN0YW50KCkg
fHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQXJndW1lbnQoKSB8fCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZXhwcmVzc2lvbi52YWx1ZSgpLnRvTG9jYWwoKSkgPCBtX2NvZGVCbG9jay0+bV9udW1WYXJz
KTsKLSAgICAgICAgICAgIGlmIChleHByZXNzaW9uLnZhbHVlKCkgPT0gc2xvdCB8fCBleHByZXNz
aW9uLnZhbHVlKCkuaXNDb25zdGFudCgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIFdhc21Nb3Y6OmVtaXQodGhpcywgc2xvdCwgZXhwcmVzc2lvbik7Ci0gICAgICAgICAg
ICBleHByZXNzaW9uID0gVHlwZWRFeHByZXNzaW9uIHsgZXhwcmVzc2lvbi50eXBlKCksIHNsb3Qg
fTsKLSAgICAgICAgfSk7Ci0gICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKLSAgICAgICAgbV9z
dGFja1NpemUgKz0gbmV3U3RhY2suc2l6ZSgpOwogICAgIH0KIAogICAgIHZvaWQgZmluYWxpemVQ
cmV2aW91c0Jsb2NrRm9yQ2F0Y2goQ29udHJvbFR5cGUmLCBTdGFjayYpOwpAQCAtNDkyLDEwICs2
MDcsMTIgQEAgcHJpdmF0ZToKICAgICBFeHByZXNzaW9uVHlwZSBtX2pzTnVsbENvbnN0YW50Owog
ICAgIEV4cHJlc3Npb25UeXBlIG1femVyb0NvbnN0YW50OwogICAgIFJlc3VsdExpc3QgbV91bml0
aWFsaXplZExvY2FsczsKKyAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyLCAyPiBtX2xvY2FsczsK
ICAgICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBWaXJ0dWFsUmVnaXN0ZXIsIFdURjo6SW50SGFz
aDxFbmNvZGVkSlNWYWx1ZT4sIENvbnN0YW50TWFwSGFzaFRyYWl0cz4gbV9jb25zdGFudE1hcDsK
LSAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyLCAyPiBtX3Jlc3VsdHM7Ci0gICAgQ2hlY2tlZDx1
bnNpZ25lZD4gbV9zdGFja1NpemUgeyAwIH07Ci0gICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV9tYXhT
dGFja1NpemUgeyAwIH07CisgICAgVmVjdG9yPFR5cGVkRXhwcmVzc2lvbiwgMj4gbV9yZXN1bHRz
OworICAgIFdhc21FeHByZXNzaW9uU2xvdFN0YWNrIG1fZXhwcmVzc2lvblN0YWNrU2xvdHM7Cisg
ICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV9tYXhTdGFja1Nsb3RTaXplIHsgMCB9OworICAgIHVuc2ln
bmVkIG1fZmlyc3RTdGFja1Nsb3RJbmRleCA9IDA7CiAgICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV90
cnlEZXB0aCB7IDAgfTsKICAgICBib29sIG1fdXNlc0V4Y2VwdGlvbnMgeyBmYWxzZSB9OwogfTsK
QEAgLTUzNSwxOSArNjUyLDE2IEBAIExMSW50R2VuZXJhdG9yOjpMTEludEdlbmVyYXRvcihNb2R1
bGVJbmZvcm1hdGlvbiYgaW5mbywgdW5zaWduZWQgZnVuY3Rpb25JbmRleCwKICAgICAgICAgKnRo
cmVhZFNwZWNpZmljID0gQnVmZmVyKCk7CiAgICAgICAgIG1fd3JpdGVyLnNldEluc3RydWN0aW9u
QnVmZmVyKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgfQotCi0gICAgbV9jb2RlQmxvY2stPm1fbnVt
VmFycyA9IG51bWJlck9mTExJbnRDYWxsZWVTYXZlUmVnaXN0ZXJzOwotICAgIG1fc3RhY2tTaXpl
ID0gbnVtYmVyT2ZMTEludENhbGxlZVNhdmVSZWdpc3RlcnM7Ci0gICAgbV9tYXhTdGFja1NpemUg
PSBudW1iZXJPZkxMSW50Q2FsbGVlU2F2ZVJlZ2lzdGVyczsKLQorICAgIG1fY29kZUJsb2NrLT5t
X251bVZhcnMgPSAwOwogICAgIFdhc21FbnRlcjo6ZW1pdCh0aGlzKTsKIH0KIAogc3RkOjp1bmlx
dWVfcHRyPEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yPiBMTEludEdlbmVyYXRvcjo6ZmluYWxp
emUoKQogeworICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Nv
ZGVCbG9jayk7CiAKLSAgICBzaXplX3QgbnVtQ2FsbGVlTG9jYWxzID0gV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG1fbWF4U3RhY2tTaXplKTsKKyAg
ICBzaXplX3QgbnVtQ2FsbGVlTG9jYWxzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNr
QWxpZ25tZW50UmVnaXN0ZXJzKCksIG1fbWF4U3RhY2tTbG90U2l6ZSArIG51bWJlck9mTExJbnRD
YWxsZWVTYXZlUmVnaXN0ZXJzKTsKICAgICBtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMg
PSBudW1DYWxsZWVMb2NhbHM7CiAgICAgUkVMRUFTRV9BU1NFUlQobnVtQ2FsbGVlTG9jYWxzID09
IG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fscyk7CiAKQEAgLTU4OSwxMyArNzAzLDExIEBA
IGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWdu
YXR1cmUmIHNpZ25hdHVyZSkgLT4gTExJCiAgICAgLy8gV2UgbmVlZCB0byBhbGxvY2F0ZSBhdCBs
ZWFzdCBzcGFjZSBmb3IgYWxsIEdQUnMgYW5kIEZQUnMuCiAgICAgLy8gUmV0dXJuIHZhbHVlcyB1
c2UgdGhlIHNhbWUgYWxsb2NhdGlvbiBsYXlvdXQuCiAKLSAgICBjb25zdCBhdXRvIGluaXRpYWxT
dGFja1NpemUgPSBtX3N0YWNrU2l6ZTsKLQogICAgIGNvbnN0IGF1dG8mIGNhbGxpbmdDb252ZW50
aW9uID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCk7CiAgICAgY29uc3QgdWludDMyX3QgZ3ByQ291
bnQgPSBjYWxsaW5nQ29udmVudGlvbi5ncHJBcmdzLnNpemUoKTsKICAgICBjb25zdCB1aW50MzJf
dCBmcHJDb3VudCA9IGNhbGxpbmdDb252ZW50aW9uLmZwckFyZ3Muc2l6ZSgpOwogCi0gICAgdWlu
dDMyX3Qgc3RhY2tDb3VudCA9IDA7CisgICAgdWludDMyX3QgbWF4U3RhY2tJbmRleCA9IDA7CiAg
ICAgdWludDMyX3QgZ3BySW5kZXggPSAwOwogICAgIHVpbnQzMl90IGZwckluZGV4ID0gMDsKICAg
ICB1aW50MzJfdCBzdGFja0luZGV4ID0gMDsKQEAgLTYxMCwyMyArNzIyLDI1IEBAIGF1dG8gTExJ
bnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWduYXR1cmUmIHNp
Z25hdHVyZSkgLT4gTExJCiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAg
IGlmIChncHJJbmRleCA8IGdwckNvdW50KQogICAgICAgICAgICAgICAgICsrZ3BySW5kZXg7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChzdGFja0luZGV4KysgPj0gc3RhY2tDb3VudCkKLSAgICAgICAg
ICAgICAgICArK3N0YWNrQ291bnQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
KytzdGFja0luZGV4OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkYzMjoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgorICAgICAgICBjYXNlIFR5cGVLaW5k
OjpWMTI4OgogICAgICAgICAgICAgaWYgKGZwckluZGV4IDwgZnByQ291bnQpCiAgICAgICAgICAg
ICAgICAgKytmcHJJbmRleDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHN0YWNrSW5kZXgrKyA+PSBz
dGFja0NvdW50KQotICAgICAgICAgICAgICAgICsrc3RhY2tDb3VudDsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBzdGFja0luZGV4ICs9IHR5cGUuc2l6ZSgpIC8gODsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNl
IFR5cGVLaW5kOjpGdW5jOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbWF4U3RhY2tJbmRleCA9IHN0ZDo6bWF4
KG1heFN0YWNrSW5kZXgsIHN0YWNrSW5kZXgpOwogICAgIH07CiAKLQogICAgIGZvciAodWludDMy
X3QgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyBpKyspCiAgICAgICAgIGFs
bG9jYXRlU3RhY2tSZWdpc3RlcihzaWduYXR1cmUuYXJndW1lbnQoaSkpOwogCkBAIC02MzUsMzAg
Kzc0OSw0MCBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIo
Y29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IExMSQogICAgIHN0YWNrSW5kZXggPSAwOwog
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUucmV0dXJuQ291bnQoKTsgaSsr
KQogICAgICAgICBhbGxvY2F0ZVN0YWNrUmVnaXN0ZXIoc2lnbmF0dXJlLnJldHVyblR5cGUoaSkp
OworICAgIAorICAgIGNvbnN0IHVpbnQzMl90IHN0YWNrQXJnc1NpemUgPSBtYXhTdGFja0luZGV4
OwogCiAgICAgLy8gRklYTUU6IHdlIGFyZSBhbGxvY2F0aW5nIHRoZSBleHRyYSBzcGFjZSBmb3Ig
dGhlIGFyZ3VtZW50L3JldHVybiBjb3VudCBpbiBvcmRlciB0byBhdm9pZCBpbnRlcmZlcmVuY2Us
IGJ1dCB3ZSBjb3VsZCBkbyBiZXR0ZXIKICAgICAvLyBOT1RFOiBXZSBpbmNyZWFzZSBhcmcgY291
bnQgYnkgMSBmb3IgdGhlIGNhc2Ugb2YgaW5kaXJlY3QgY2FsbHMKLSAgICBtX3N0YWNrU2l6ZSAr
PSBzdGQ6Om1heChzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMSwgc2lnbmF0dXJlLnJldHVy
bkNvdW50KCkpICsgZ3ByQ291bnQgKyBmcHJDb3VudCArIHN0YWNrQ291bnQgKyBDYWxsRnJhbWU6
OmhlYWRlclNpemVJblJlZ2lzdGVycyArIDE7Ci0gICAgaWYgKG1fc3RhY2tTaXplLnZhbHVlKCkg
JSBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpKQotICAgICAgICArK21fc3RhY2tTaXplOwotICAg
IGlmIChtX21heFN0YWNrU2l6ZSA8IG1fc3RhY2tTaXplKQotICAgICAgICBtX21heFN0YWNrU2l6
ZSA9IG1fc3RhY2tTaXplOworICAgIENoZWNrZWQ8dW5zaWduZWQ+IG5ld1N0YWNrU2l6ZSA9IHN0
YWNrU2xvdFNpemUoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICsgMQorICAg
ICAgICArIChCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkdQKSkg
LyA4ICogZ3ByQ291bnQpCisgICAgICAgICsgKEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2
YXRpdmVXaWR0aChCMzo6RlApKSAvIDggKiBmcHJDb3VudCkKKyAgICAgICAgKyBzdGFja0FyZ3NT
aXplOworICAgIGlmIChuZXdTdGFja1NpemUgJSBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpKQor
ICAgICAgICArK25ld1N0YWNrU2l6ZTsKKyAgICBpZiAobV9tYXhTdGFja1Nsb3RTaXplIDwgbmV3
U3RhY2tTaXplKQorICAgICAgICBtX21heFN0YWNrU2xvdFNpemUgPSBuZXdTdGFja1NpemU7CiAK
IAotICAgIFJlc3VsdExpc3QgYXJndW1lbnRzKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkpOwot
ICAgIFJlc3VsdExpc3QgdGVtcG9yYXJ5UmVzdWx0cyhzaWduYXR1cmUucmV0dXJuQ291bnQoKSk7
CisgICAgVmVjdG9yPFR5cGVkRXhwcmVzc2lvbiwgMj4gYXJndW1lbnRzKHNpZ25hdHVyZS5hcmd1
bWVudENvdW50KCkpOworICAgIFZlY3RvcjxUeXBlZEV4cHJlc3Npb24sIDI+IHRlbXBvcmFyeVJl
c3VsdHMoc2lnbmF0dXJlLnJldHVybkNvdW50KCkpOwogCi0gICAgY29uc3QgdW5zaWduZWQgc3Rh
Y2tPZmZzZXQgPSBtX3N0YWNrU2l6ZTsKKyAgICBjb25zdCB1bnNpZ25lZCBzdGFja09mZnNldCA9
IG5ld1N0YWNrU2l6ZTsKICAgICBjb25zdCB1bnNpZ25lZCBiYXNlID0gc3RhY2tPZmZzZXQgLSBD
YWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAtIDE7CiAKLSAgICBjb25zdCB1aW50MzJf
dCBncHJMaW1pdCA9IGJhc2UgLSBzdGFja0NvdW50IC0gZ3ByQ291bnQ7Ci0gICAgY29uc3QgdWlu
dDMyX3QgZnByTGltaXQgPSBncHJMaW1pdCAtIGZwckNvdW50OwotCisgICAgY29uc3QgdWludDMy
X3QgZ3ByTGltaXQgPSBiYXNlIC0gc3RhY2tBcmdzU2l6ZSAtIGdwckNvdW50OworICAgIGNvbnN0
IHVpbnQzMl90IGZwckxpbWl0ID0gZ3ByTGltaXQgLSBmcHJDb3VudCAqIDI7CisgICAgCiAgICAg
c3RhY2tJbmRleCA9IGJhc2U7Ci0gICAgZ3BySW5kZXggPSBiYXNlIC0gc3RhY2tDb3VudDsKKyAg
ICBncHJJbmRleCA9IGJhc2UgLSBzdGFja0FyZ3NTaXplOwogICAgIGZwckluZGV4ID0gZ3BySW5k
ZXggLSBncHJDb3VudDsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLmFy
Z3VtZW50Q291bnQoKTsgaSsrKSB7Ci0gICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLmFyZ3VtZW50
KGkpLmtpbmQpIHsKKyAgICAKKyAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVybmFs
Ojp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAiQ2FsbCBpbmZv
OiBhbGxvY2F0aW5nIHN0YWNrIGZyYW1lIGZvciBhcmd1bWVudHM6IHN0YWNrT2Zmc2V0OiAiLCBz
dGFja09mZnNldCwgIiBiYXNlOiAiLCBiYXNlLCAiIGdwcnM6IFsiLCBncHJJbmRleCwgIiwgIiwg
Z3ByTGltaXQsICIpLCBmcHJzOiBbIiwgZnBySW5kZXgsICIsICIsIGZwckxpbWl0LCAiKSwgY3Vy
cmVudCBzdGFjayBzbG90IHNpemU6ICIsIHN0YWNrU2xvdFNpemUoKSk7CisgICAgCisgICAgYXV0
byBhbGxvY2F0ZUNhbGxlZUNvcHlSZWdpc3RlciA9IFsmXShUeXBlIHR5cGUpIHsKKyAgICAgICAg
dWludDMyX3QgcmVzdWx0ID0gMDsKKyAgICAgICAgc3dpdGNoICh0eXBlLmtpbmQpIHsKICAgICAg
ICAgY2FzZSBUeXBlS2luZDo6STMyOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6CiAgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKQEAgLTY2Niw2NyArNzkwLDU3IEBAIGF1dG8g
TExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWduYXR1cmUm
IHNpZ25hdHVyZSkgLT4gTExJCiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CiAgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAgIGlmIChncHJJbmRleCA+IGdwckxp
bWl0KQotICAgICAgICAgICAgICAgIGFyZ3VtZW50c1tpXSA9IHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKC0tZ3BySW5kZXgpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IC0tZ3BySW5kZXg7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoLS1zdGFja0luZGV4KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAt
LXN0YWNrSW5kZXg7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6
RjMyOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6Ci0gICAgICAgICAgICBpZiAoZnBySW5k
ZXggPiBmcHJMaW1pdCkKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNbaV0gPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbCgtLWZwckluZGV4KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBhcmd1bWVudHNbaV0gPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgtLXN0YWNrSW5kZXgp
OworICAgICAgICBjYXNlIFR5cGVLaW5kOjpWMTI4OgorICAgICAgICAgICAgaWYgKGZwckluZGV4
ID49IGZwckxpbWl0ICsgdHlwZS5zaXplKCkgLyA4KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0
ID0gZnBySW5kZXggLSB0eXBlLnNpemUoKSAvIDggKyAxOworICAgICAgICAgICAgICAgIGZwcklu
ZGV4IC09IHR5cGUuc2l6ZSgpIC8gODsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gc3RhY2tJbmRleCAtIHR5cGUuc2l6ZSgpIC8gOCArIDE7CisgICAgICAg
ICAgICAgICAgc3RhY2tJbmRleCAtPSB0eXBlLnNpemUoKSAvIDg7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAg
Y2FzZSBUeXBlS2luZDo6RnVuYzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIH0KLSAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfTsK
KworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgp
OyBpKyspCisgICAgICAgIGFyZ3VtZW50c1tpXSA9IHsgc2lnbmF0dXJlLmFyZ3VtZW50KGkpLCB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChhbGxvY2F0ZUNhbGxlZUNvcHlSZWdpc3RlcihzaWduYXR1
cmUuYXJndW1lbnQoaSkpKSB9OwogCiAgICAgc3RhY2tJbmRleCA9IGJhc2U7Ci0gICAgZ3BySW5k
ZXggPSBiYXNlIC0gc3RhY2tDb3VudDsKKyAgICBncHJJbmRleCA9IGJhc2UgLSBzdGFja0FyZ3NT
aXplOwogICAgIGZwckluZGV4ID0gZ3BySW5kZXggLSBncHJDb3VudDsKLSAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNvdW50KCk7IGkrKykgewotICAgICAgICBz
d2l0Y2ggKHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLmtpbmQpIHsKLSAgICAgICAgY2FzZSBUeXBl
S2luZDo6STMyOgotICAgICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6Ci0gICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OkV4dGVybnJlZjoKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoKLSAgICAg
ICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmOgot
ICAgICAgICAgICAgaWYgKGdwckluZGV4ID4gZ3ByTGltaXQpCi0gICAgICAgICAgICAgICAgdGVt
cG9yYXJ5UmVzdWx0c1tpXSA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKC0tZ3BySW5kZXgpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRlbXBvcmFyeVJlc3VsdHNbaV0gPSB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgtLXN0YWNrSW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0
OgotICAgICAgICAgICAgaWYgKGZwckluZGV4ID4gZnByTGltaXQpCi0gICAgICAgICAgICAgICAg
dGVtcG9yYXJ5UmVzdWx0c1tpXSA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKC0tZnBySW5kZXgp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRlbXBvcmFyeVJlc3VsdHNbaV0g
PSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgtLXN0YWNrSW5kZXgpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkZ1bmM6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgbV9zdGFja1NpemUgPSBpbml0aWFsU3RhY2tTaXplOworICAgIAor
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUucmV0dXJuQ291bnQoKTsgaSsr
KQorICAgICAgICB0ZW1wb3JhcnlSZXN1bHRzW2ldID0geyBzaWduYXR1cmUucmV0dXJuVHlwZShp
KSwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoYWxsb2NhdGVDYWxsZWVDb3B5UmVnaXN0ZXIoc2ln
bmF0dXJlLnJldHVyblR5cGUoaSkpKSB9OworICAgIAorICAgIGRhdGFMb2dMbklmKExMSW50R2Vu
ZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJbIiwgbV9mdW5jdGlvbkluZGV4LCAiXSIsCisgICAg
ICAgICJDYWxsIGluZm86IGFyZ3M6ICIsIGxpc3REdW1wKGFyZ3VtZW50cyksICIgdGVtcG9yYXJ5
UmVzdWx0czogIiwgbGlzdER1bXAodGVtcG9yYXJ5UmVzdWx0cykpOwogCiAgICAgYXV0byBjb21t
aXRSZXN1bHRzID0gW3RoaXMsIHRlbXBvcmFyeVJlc3VsdHMgPSBXVEZNb3ZlKHRlbXBvcmFyeVJl
c3VsdHMpXShSZXN1bHRMaXN0JiByZXN1bHRzKSB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3ko
KTsKICAgICAgICAgZm9yIChhdXRvIHRlbXBvcmFyeVJlc3VsdCA6IHRlbXBvcmFyeVJlc3VsdHMp
IHsKLSAgICAgICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdCA9IHB1c2goTm9Db25zaXN0ZW5j
eUNoZWNrKTsKLSAgICAgICAgICAgIFdhc21Nb3Y6OmVtaXQodGhpcywgcmVzdWx0LCB0ZW1wb3Jh
cnlSZXN1bHQpOworICAgICAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0ID0gcHVzaCh0ZW1w
b3JhcnlSZXN1bHQudHlwZSgpLCBOb0NvbnNpc3RlbmN5Q2hlY2spOworICAgICAgICAgICAgdHlw
ZWRNb3ZlKHJlc3VsdCwgdGVtcG9yYXJ5UmVzdWx0KTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKHJlc3VsdCk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRhdGFMb2dMbklmKExM
SW50R2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJbIiwgbV9mdW5jdGlvbkluZGV4LCAiXSIs
CisgICAgICAgICAgICAiQ2FsbCBpbmZvIHJlc3VsdHMgKGNvbW1pdGVkKTogIiwgbGlzdER1bXAo
cmVzdWx0cykpOwogICAgIH07CiAKLSAgICByZXR1cm4gTExJbnRDYWxsSW5mb3JtYXRpb24geyBz
dGFja09mZnNldCwgc3RhY2tDb3VudCwgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGNvbW1p
dFJlc3VsdHMpIH07CisgICAgcmV0dXJuIExMSW50Q2FsbEluZm9ybWF0aW9uIHsgc3RhY2tPZmZz
ZXQsIHN0YWNrQXJnc1NpemUsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShjb21taXRSZXN1
bHRzKSB9OwogfQogCi1hdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxs
ZWUoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXIs
IDI+CithdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUoY29uc3Qg
U2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IFZlY3RvcjxUeXBlZEV4cHJlc3Npb24sIDI+CiB7CiAg
ICAgaWYgKG1fcmVzdWx0cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBtX3Jlc3VsdHM7CkBAIC03
NDEsNyArODU1LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2Fs
bGVlKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBWZWMKICAgICB1aW50MzJfdCBmcHJJ
bmRleCA9IGdwckNvdW50OwogICAgIHVpbnQzMl90IHN0YWNrSW5kZXggPSAxOwogICAgIGNvbnN0
IHVpbnQzMl90IG1heEdQUkluZGV4ID0gZ3ByQ291bnQ7Ci0gICAgY29uc3QgdWludDMyX3QgbWF4
RlBSSW5kZXggPSBtYXhHUFJJbmRleCArIGZwckNvdW50OworICAgIGNvbnN0IHVpbnQzMl90IG1h
eEZQUkluZGV4ID0gbWF4R1BSSW5kZXggKyBmcHJDb3VudCAqIDI7CiAKICAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNvdW50KCk7IGkrKykgewogICAgICAgICBz
d2l0Y2ggKHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLmtpbmQpIHsKQEAgLTc1MiwyMiArODY2LDI5
IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZShjb25zdCBT
aWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gVmVjCiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51
bGw6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAgIGlmIChncHJJbmRl
eCA8IG1heEdQUkluZGV4KQotICAgICAgICAgICAgICAgIG1fcmVzdWx0cy5hcHBlbmQodmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwobnVtYmVyT2ZMTEludENhbGxlZVNhdmVSZWdpc3RlcnMgKyBncHJJ
bmRleCsrKSk7CisgICAgICAgICAgICAgICAgbV9yZXN1bHRzLmFwcGVuZCh7IHNpZ25hdHVyZS5y
ZXR1cm5UeXBlKGkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChudW1iZXJPZkxMSW50Q2FsbGVl
U2F2ZVJlZ2lzdGVycyArIGdwckluZGV4KyspIH0pOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIG1fcmVzdWx0cy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNs
dWRpbmdUaGlzKHN0YWNrSW5kZXgrKykpOworICAgICAgICAgICAgICAgIG1fcmVzdWx0cy5hcHBl
bmQoeyBzaWduYXR1cmUucmV0dXJuVHlwZShpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJ
bmNsdWRpbmdUaGlzKHN0YWNrSW5kZXgrKykgfSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBUeXBlS2luZDo6RjMyOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6Ci0gICAg
ICAgICAgICBpZiAoZnBySW5kZXggPCBtYXhGUFJJbmRleCkKLSAgICAgICAgICAgICAgICBtX3Jl
c3VsdHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG51bWJlck9mTExJbnRDYWxsZWVT
YXZlUmVnaXN0ZXJzICsgZnBySW5kZXgrKykpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIG1fcmVzdWx0cy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRp
bmdUaGlzKHN0YWNrSW5kZXgrKykpOworICAgICAgICBjYXNlIFR5cGVLaW5kOjpWMTI4OgorICAg
ICAgICAgICAgaWYgKGZwckluZGV4ICsgc2lnbmF0dXJlLnJldHVyblR5cGUoaSkuc2l6ZSgpIC8g
OCA8PSBtYXhGUFJJbmRleCkgeworICAgICAgICAgICAgICAgIG1fcmVzdWx0cy5hcHBlbmQoeyBz
aWduYXR1cmUucmV0dXJuVHlwZShpKSwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobnVtYmVyT2ZM
TEludENhbGxlZVNhdmVSZWdpc3RlcnMgKyBmcHJJbmRleCArIHNpZ25hdHVyZS5yZXR1cm5UeXBl
KGkpLnNpemUoKSAvIDggLSAxKSB9KTsKKyAgICAgICAgICAgICAgICBmcHJJbmRleCArPSBzaWdu
YXR1cmUucmV0dXJuVHlwZShpKS5zaXplKCkgLyA4OworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBtX3Jlc3VsdHMuYXBwZW5kKHsgc2lnbmF0dXJlLnJldHVyblR5cGUoaSks
IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGFja0luZGV4KSB9KTsK
KyAgICAgICAgICAgICAgICBzdGFja0luZGV4ICs9IHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLnNp
emUoKSAvIDg7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CisgICAg
CisgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlsiLCBt
X2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAgICAgIkNhbGxlZSBpbmZvOiByZXN1bHRzOiAiLCBs
aXN0RHVtcChtX3Jlc3VsdHMpKTsKIAogICAgIHJldHVybiBtX3Jlc3VsdHM7CiB9CkBAIC03ODcs
MTggKzkwOCwzMiBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRBcmd1bWVudHMoY29uc3QgU2ln
bmF0dXJlJiBzaWduYXR1cmUpIC0+IFBhcnRpYWxSZXN1bHQKICAgICB1aW50MzJfdCBncHJJbmRl
eCA9IDA7CiAgICAgdWludDMyX3QgZnBySW5kZXggPSBtYXhHUFJJbmRleDsKICAgICB1aW50MzJf
dCBzdGFja0luZGV4ID0gMTsKKyAgICAKKyAgICBBU1NFUlQoc3RhY2tDb3VudCgpID09IDApOwor
ICAgIEFTU0VSVChtX2ZpcnN0U3RhY2tTbG90SW5kZXggPT0gMCk7CisgICAgbV9maXJzdFN0YWNr
U2xvdEluZGV4ICs9IG51bWJlck9mTExJbnRDYWxsZWVTYXZlUmVnaXN0ZXJzOwogCiAgICAgVmVj
dG9yPFZpcnR1YWxSZWdpc3Rlcj4gcmVnaXN0ZXJBcmd1bWVudHMoZ3ByQ291bnQgKyBmcHJDb3Vu
dCk7Ci0gICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGdwckNvdW50ICsgZnByQ291bnQ7IGkr
KykKLSAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNbaV0gPSBwdXNoKE5vQ29uc2lzdGVuY3lDaGVj
ayk7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGdwckNvdW50OyBpKyspCisgICAgICAg
IHJlZ2lzdGVyQXJndW1lbnRzW2ldID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9maXJzdFN0
YWNrU2xvdEluZGV4KyspOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBmcHJDb3VudDsg
aSsrKSB7CisgICAgICAgIHJlZ2lzdGVyQXJndW1lbnRzW2dwckNvdW50ICsgaV0gPSB2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChtX2ZpcnN0U3RhY2tTbG90SW5kZXggKyAxKTsKKyAgICAgICAgQVNT
RVJUKG5leHRTbG90Rm9yVXBwZXJCaXRzKHJlZ2lzdGVyQXJndW1lbnRzW2dwckNvdW50ICsgaV0p
ID09IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fZmlyc3RTdGFja1Nsb3RJbmRleCkpOworICAg
ICAgICBtX2ZpcnN0U3RhY2tTbG90SW5kZXggKz0gMjsKKyAgICB9CisgICAgCisgICAgZGF0YUxv
Z0xuSWYoTExJbnRHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlsiLCBtX2Z1bmN0aW9uSW5k
ZXgsICJdIiwKKyAgICAgICAgIlJlZ2lzdGVyIGFyZ3VtZW50cyBhbGxvY2F0ZWQgYXM6ICIsIGxp
c3REdW1wKHJlZ2lzdGVyQXJndW1lbnRzKSwgIiA6IHRoZXJlIGFyZSAiLCBncHJDb3VudCwgIiBn
cHJzIGFuZCAiLCBmcHJDb3VudCwgIiAxMjgtYml0IGZwcnMiKTsKIAotICAgIGNvbnN0IGF1dG8g
YWRkQXJndW1lbnQgPSBbJl0odWludDMyX3QgaW5kZXgsIHVpbnQzMl90JiBjb3VudCwgdWludDMy
X3QgbWF4KSB7Ci0gICAgICAgIGlmIChjb3VudCA8IG1heCkKKyAgICBjb25zdCBhdXRvIGFkZEFy
Z3VtZW50ID0gWyZdKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBzaXplLCB1aW50MzJfdCYgY291
bnQsIHVpbnQzMl90IG1heCkgeworICAgICAgICBpZiAoY291bnQgPCBtYXgpIHsKICAgICAgICAg
ICAgIG1fbm9ybWFsaXplZEFyZ3VtZW50c1tpbmRleF0gPSByZWdpc3RlckFyZ3VtZW50c1tjb3Vu
dCsrXTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9ub3JtYWxpemVkQXJndW1lbnRzW2lu
ZGV4XSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGFja0luZGV4
KyspOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9ub3JtYWxpemVkQXJndW1lbnRz
W2luZGV4XSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGFja0lu
ZGV4KTsKKyAgICAgICAgICAgIHN0YWNrSW5kZXggKz0gc2l6ZTsKKyAgICAgICAgfQogICAgIH07
Ci0KKyAgICAKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLmFyZ3VtZW50
Q291bnQoKTsgaSsrKSB7CiAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLmFyZ3VtZW50KGkpLmtp
bmQpIHsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6STMyOgpAQCAtODA3LDExICs5NDIsMTIgQEAg
YXV0byBMTEludEdlbmVyYXRvcjo6YWRkQXJndW1lbnRzKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0
dXJlKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CiAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJl
ZjoKLSAgICAgICAgICAgIGFkZEFyZ3VtZW50KGksIGdwckluZGV4LCBtYXhHUFJJbmRleCk7Cisg
ICAgICAgICAgICBhZGRBcmd1bWVudChpLCAxLCBncHJJbmRleCwgbWF4R1BSSW5kZXgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RjY0OgotICAgICAgICAgICAgYWRkQXJndW1lbnQoaSwgZnBySW5kZXgsIG1h
eEZQUkluZGV4KTsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VjEyODoKKyAgICAgICAgICAgIGFk
ZEFyZ3VtZW50KGksIHNpZ25hdHVyZS5hcmd1bWVudChpKS5zaXplKCkgLyA4LCBmcHJJbmRleCwg
bWF4RlBSSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CkBAIC04MTksMjYgKzk1NSw1MyBA
QCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fY29kZUJs
b2NrLT5tX251bVZhcnMgKz0gZ3ByQ291bnQgKyBmcHJDb3VudDsKKyAgICBtX2NvZGVCbG9jay0+
bV9udW1WYXJzICs9IGdwckNvdW50ICsgZnByQ291bnQgKiAyICsgbnVtYmVyT2ZMTEludENhbGxl
ZVNhdmVSZWdpc3RlcnM7CisgICAgCisgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5lcmF0b3JJbnRl
cm5hbDo6dmVyYm9zZSwgIlsiLCBtX2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAgICAgIk5vcm1h
bGl6ZWQgYXJndW1lbnRzOiAiLCBsaXN0RHVtcChtX25vcm1hbGl6ZWRBcmd1bWVudHMpKTsKKyAg
ICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVybmFsOjp2ZXJib3NlLCAiWyIsIG1fZnVu
Y3Rpb25JbmRleCwgIl0iLAorICAgICAgICAiTmV4dCBhdmFpbGFibGUgc2xvdCBhZnRlciBhZGRp
bmcgYXJndW1lbnRzIGlzICIsIG1fZmlyc3RTdGFja1Nsb3RJbmRleCwgIiBhdCAiLCB2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChtX2ZpcnN0U3RhY2tTbG90SW5kZXgpKTsKIAogICAgIHJldHVybiB7
IH07CiB9CiAKLWF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZExvY2FsKFR5cGUgdHlwZSwgdWludDMy
X3QgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmFkZExvY2Fs
KFR5cGUgdHlwZSwgdWludDMyX3QgbG9jYWxJbmRleCwgdWludDMyX3QgY291bnQpIC0+IFBhcnRp
YWxSZXN1bHQKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CisgICAgQVNTRVJUX1VOVVNFRChs
b2NhbEluZGV4LCBsb2NhbEluZGV4ID09IG1fbG9jYWxzLnNpemUoKSArIG1fbm9ybWFsaXplZEFy
Z3VtZW50cy5zaXplKCkpOworICAgIEFTU0VSVChtX2V4cHJlc3Npb25TdGFja1Nsb3RzLnNpemUo
KSA9PSAwKTsKKyAgICBzaXplX3Qgc2xvdENvdW50ID0gKChzaXplX3QpIGNvdW50KSAqICh0eXBl
LnNpemUoKS84KTsKIAotICAgIG1fY29kZUJsb2NrLT5tX251bVZhcnMgKz0gY291bnQ7CisgICAg
bV9jb2RlQmxvY2stPm1fbnVtVmFycyArPSBzbG90Q291bnQ7CiAgICAgaWYgKGlzRnVuY3JlZih0
eXBlKSB8fCBpc0V4dGVybnJlZih0eXBlKSkgewotICAgICAgICB3aGlsZSAoY291bnQtLSkKLSAg
ICAgICAgICAgIG1fdW5pdGlhbGl6ZWRMb2NhbHMuYXBwZW5kKHB1c2goTm9Db25zaXN0ZW5jeUNo
ZWNrKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fc3RhY2tTaXplICs9IGNvdW50OworICAgICAg
ICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICAgICAgYXV0byBzbG90ID0gdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwobV9maXJzdFN0YWNrU2xvdEluZGV4KyspOworICAgICAgICAgICAgbV9sb2Nh
bHMuYXBwZW5kKHNsb3QpOworICAgICAgICAgICAgbV91bml0aWFsaXplZExvY2Fscy5hcHBlbmQo
c2xvdCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB3aGlsZSAoY291bnQtLSkg
eworICAgICAgICAgICAgaWYgKHR5cGUuc2l6ZSgpID09IDE2KQorICAgICAgICAgICAgICAgICsr
bV9maXJzdFN0YWNrU2xvdEluZGV4OworICAgICAgICAgICAgbV9sb2NhbHMuYXBwZW5kKHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKG1fZmlyc3RTdGFja1Nsb3RJbmRleCsrKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKExMSW50R2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJv
c2UsICJbIiwgbV9mdW5jdGlvbkluZGV4LCAiXSIsCisgICAgICAgICAgICAgICAgIkxvY2FsICIs
IGxvY2FsSW5kZXgsICIgZ29lcyBpbiAiLCBtX2xvY2Fscy5sYXN0KCksICIsICIsIG5leHRTbG90
Rm9yVXBwZXJCaXRzKG1fbG9jYWxzLmxhc3QoKSksICJ0YWtpbmcgc2xvdHMgIiwgbV9maXJzdFN0
YWNrU2xvdEluZGV4LTEsICIgYW5kICIsIG1fZmlyc3RTdGFja1Nsb3RJbmRleC0yKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVybmFs
Ojp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAiTmV4dCBhdmFp
bGFibGUgc2xvdCBhZnRlciBhZGRpbmcgbG9jYWwocykgaXMgIiwgbV9maXJzdFN0YWNrU2xvdElu
ZGV4LCAiIGF0ICIsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fZmlyc3RTdGFja1Nsb3RJbmRl
eCkpOworICAgIAorICAgIEFTU0VSVChuZXh0U2xvdEluZGV4KFR5cGVzOjpJNjQpID09IG1fZmly
c3RTdGFja1Nsb3RJbmRleCk7CisgICAgQVNTRVJUKG5leHRTbG90SW5kZXgoVHlwZXM6OlYxMjgp
ID09IG1fZmlyc3RTdGFja1Nsb3RJbmRleCArIDEpOworICAgIAogICAgIHJldHVybiB7IH07CiB9
CiAKIHZvaWQgTExJbnRHZW5lcmF0b3I6OmRpZEZpbmlzaFBhcnNpbmdMb2NhbHMoKQogeworICAg
IGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICBpZiAobV91bml0aWFsaXplZExvY2Fscy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtODUwLDQ4ICsxMDEzLDYwIEBAIHZvaWQgTExJbnRH
ZW5lcmF0b3I6OmRpZEZpbmlzaFBhcnNpbmdMb2NhbHMoKQogCiBhdXRvIExMSW50R2VuZXJhdG9y
OjphZGRDb25zdGFudChUeXBlIHR5cGUsIGludDY0X3QgdmFsdWUpIC0+IEV4cHJlc3Npb25UeXBl
CiB7Ci0gICAgYXV0byBjb25zdGFudCA9IFsmXSB7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAg
ICAgICAgICByZXR1cm4gemVyb0NvbnN0YW50KCk7Ci0KLSAgICAgICAgaWYgKHZhbHVlID09IEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSkpCi0gICAgICAgICAgICByZXR1cm4ganNOdWxsQ29uc3Rh
bnQoKTsKLQotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc291cmNlKEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4ICsgbV9jb2RlQmxvY2stPm1fY29uc3RhbnRzLnNpemUoKSk7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9jb25zdGFudE1hcC5hZGQodmFsdWUsIHNvdXJjZSk7Ci0gICAgICAgIGlm
ICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZTsKLSAgICAgICAgbV9jb2RlQmxvY2stPm1fY29uc3RhbnRzLmFwcGVuZCh2YWx1ZSk7
Ci0gICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wR2VuZXJhdGVkV2FzbUJ5dGVjb2Rl
cygpKSkKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50VHlwZXMuYXBwZW5kKHR5
cGUpOwotICAgICAgICByZXR1cm4gc291cmNlOwotICAgIH07CiAgICAgLy8gbGVhdmUgYSBob2xl
IGlmIHdlIG5lZWQgdG8gbWF0ZXJpYWxpemUgdGhlIGNvbnN0YW50Ci0gICAgcHVzaCgpOwotICAg
IHJldHVybiBjb25zdGFudCgpOworICAgIHB1c2godHlwZSk7CisgICAgaWYgKCF2YWx1ZSkKKyAg
ICAgICAgcmV0dXJuIHplcm9Db25zdGFudCgpOworCisgICAgaWYgKHZhbHVlID09IEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSkpCisgICAgICAgIHJldHVybiBqc051bGxDb25zdGFudCgpOworCisg
ICAgVmlydHVhbFJlZ2lzdGVyIHNvdXJjZShGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCArIG1f
Y29kZUJsb2NrLT5tX2NvbnN0YW50cy5zaXplKCkpOworICAgIGF1dG8gcmVzdWx0ID0gbV9jb25z
dGFudE1hcC5hZGQodmFsdWUsIHNvdXJjZSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgbV9jb2RlQmxvY2st
Pm1fY29uc3RhbnRzLmFwcGVuZCh2YWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1
bXBHZW5lcmF0ZWRXYXNtQnl0ZWNvZGVzKCkpKQorICAgICAgICBtX2NvZGVCbG9jay0+bV9jb25z
dGFudFR5cGVzLmFwcGVuZCh0eXBlKTsKKyAgICByZXR1cm4gc291cmNlOworfQorCithdXRvIExM
SW50R2VuZXJhdG9yOjphZGRDb25zdGFudCh2MTI4X3QgdmFsdWUpIC0+IEV4cHJlc3Npb25UeXBl
Cit7CisgICAgLy8gbGVhdmUgYSBob2xlIGlmIHdlIG5lZWQgdG8gbWF0ZXJpYWxpemUgdGhlIGNv
bnN0YW50CisgICAgcHVzaChUeXBlczo6VjEyOCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHNvdXJj
ZShGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCArIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50cy5z
aXplKCkpOworICAgIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50cy5hcHBlbmQodmFsdWUudTY0eDJb
MF0pOworICAgIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50cy5hcHBlbmQodmFsdWUudTY0eDJbMV0p
OworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wR2VuZXJhdGVkV2FzbUJ5dGVjb2Rlcygp
KSkgeworICAgICAgICBtX2NvZGVCbG9jay0+bV9jb25zdGFudFR5cGVzLmFwcGVuZChUeXBlczo6
VjEyOCk7CisgICAgICAgIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50VHlwZXMuYXBwZW5kKFR5cGVz
OjpWMTI4KTsKKyAgICB9CisgICAgcmV0dXJuIHNvdXJjZTsKIH0KIAotYXV0byBMTEludEdlbmVy
YXRvcjo6Z2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+
IFBhcnRpYWxSZXN1bHQKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmdldExvY2FsKHVpbnQzMl90IGlu
ZGV4LCBXYXNtOjpUeXBlIHR5cGUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxS
ZXN1bHQKIHsKICAgICAvLyBsZWF2ZSBhIGhvbGUgaWYgd2UgbmVlZCB0byBtYXRlcmlhbGl6ZSB0
aGUgbG9jYWwKLSAgICBwdXNoKCk7CisgICAgcHVzaCh0eXBlKTsKICAgICByZXN1bHQgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JXYXNtTG9jYWwoaW5kZXgpOwogICAgIHJldHVybiB7IH07CiB9CiAKLWF1
dG8gTExJbnRHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlw
ZSB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBMTEludEdlbmVyYXRvcjo6c2V0TG9jYWwo
dWludDMyX3QgaW5kZXgsIFdhc206OlR5cGUgdHlwZSwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+
IFBhcnRpYWxSZXN1bHQKIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGFyZ2V0ID0gdmlydHVhbFJl
Z2lzdGVyRm9yV2FzbUxvY2FsKGluZGV4KTsKLQorICAgIAogICAgIC8vIElmIHRoaXMgbG9jYWwg
aXMgY3VycmVudGx5IG9uIHRoZSBzdGFjayB3ZSBuZWVkIHRvIG1hdGVyaWFsaXplIGl0LCBvdGhl
cndpc2UgaXQnbGwgc2VlIHRoZSBuZXcgdmFsdWUgaW5zdGVhZCBvZiB0aGUgb2xkIG9uZQotICAg
IHdhbGtFeHByZXNzaW9uU3RhY2sobV9wYXJzZXItPmV4cHJlc3Npb25TdGFjaygpLCBbJl0oVHlw
ZWRFeHByZXNzaW9uJiBleHByZXNzaW9uLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkgeworICAgIHdh
bGtFeHByZXNzaW9uU3RhY2soWyZdKFR5cGVkRXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgVmlydHVh
bFJlZ2lzdGVyIHNsb3QpIHsKICAgICAgICAgaWYgKGV4cHJlc3Npb24udmFsdWUoKSAhPSB0YXJn
ZXQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFdhc21Nb3Y6OmVtaXQodGhpcywgc2xv
dCwgZXhwcmVzc2lvbik7CisgICAgICAgIHR5cGVkTW92ZShzbG90LCBleHByZXNzaW9uKTsKKyAg
ICAgICAgQVNTRVJUKHR5cGUgPT0gZXhwcmVzc2lvbi50eXBlKCkpOwogICAgICAgICBleHByZXNz
aW9uID0gVHlwZWRFeHByZXNzaW9uIHsgZXhwcmVzc2lvbi50eXBlKCksIHNsb3QgfTsKICAgICB9
KTsKIAotICAgIFdhc21Nb3Y6OmVtaXQodGhpcywgdGFyZ2V0LCB2YWx1ZSk7CisgICAgdHlwZWRN
b3ZlKHRhcmdldCwgeyB0eXBlLCB2YWx1ZSB9KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC04
OTksNyArMTA3NCw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFJlCiBhdXRvIExMSW50R2VuZXJh
dG9yOjpnZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+
IFBhcnRpYWxSZXN1bHQKIHsKICAgICBjb25zdCBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbiYgZ2xv
YmFsID0gbV9pbmZvLmdsb2JhbHNbaW5kZXhdOwotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICBy
ZXN1bHQgPSBwdXNoKGdsb2JhbC50eXBlKTsKICAgICBzd2l0Y2ggKGdsb2JhbC5iaW5kaW5nTW9k
ZSkgewogICAgIGNhc2UgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246OkJpbmRpbmdNb2RlOjpFbWJl
ZGRlZEluSW5zdGFuY2U6CiAgICAgICAgIFdhc21HZXRHbG9iYWw6OmVtaXQodGhpcywgcmVzdWx0
LCBpbmRleCk7CkBAIC05NTMsNyArMTEyOCw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZExv
b3AoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTdGFjayYgZW5jbG9zaW5nU3RhY2ssIENvCiAg
ICAgUmVmPExhYmVsPiBib2R5ID0gbmV3RW1pdHRlZExhYmVsKCk7CiAgICAgUmVmPExhYmVsPiBj
b250aW51YXRpb24gPSBuZXdMYWJlbCgpOwogCi0gICAgYmxvY2sgPSBDb250cm9sVHlwZTo6bG9v
cChzaWduYXR1cmUsIG1fc3RhY2tTaXplLCBXVEZNb3ZlKGJvZHkpLCBXVEZNb3ZlKGNvbnRpbnVh
dGlvbikpOworICAgIGJsb2NrID0gQ29udHJvbFR5cGU6Omxvb3Aoc2lnbmF0dXJlLCBtX2V4cHJl
c3Npb25TdGFja1Nsb3RzLCBXVEZNb3ZlKGJvZHkpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwog
CiAgICAgVmVjdG9yPHVuc2lnbmVkPiB1bnJlc29sdmVkT2Zmc2V0czsKICAgICBWZWN0b3I8Vmly
dHVhbFJlZ2lzdGVyPiBvc3JFbnRyeURhdGE7CkBAIC05ODcsMTMgKzExNjIsMTMgQEAgYXV0byBM
TEludEdlbmVyYXRvcjo6YWRkTG9vcChCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBl
bmNsb3NpbmdTdGFjaywgQ28KIAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkVG9wTGV2ZWwoQmxv
Y2tTaWduYXR1cmUgc2lnbmF0dXJlKSAtPiBDb250cm9sVHlwZQogewotICAgIHJldHVybiBDb250
cm9sVHlwZTo6dG9wTGV2ZWwoc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwgbmV3TGFiZWwoKSk7Cisg
ICAgcmV0dXJuIENvbnRyb2xUeXBlOjp0b3BMZXZlbChzaWduYXR1cmUsIG1fZXhwcmVzc2lvblN0
YWNrU2xvdHMsIG5ld0xhYmVsKCkpOwogfQogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRCbG9j
ayhCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29udHJv
bFR5cGUmIG5ld0Jsb2NrLCBTdGFjayYgbmV3U3RhY2spIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAg
ICBzcGxpdFN0YWNrKHNpZ25hdHVyZSwgZW5jbG9zaW5nU3RhY2ssIG5ld1N0YWNrKTsKLSAgICBu
ZXdCbG9jayA9IENvbnRyb2xUeXBlOjpibG9jayhzaWduYXR1cmUsIG1fc3RhY2tTaXplLCBuZXdM
YWJlbCgpKTsKKyAgICBuZXdCbG9jayA9IENvbnRyb2xUeXBlOjpibG9jayhzaWduYXR1cmUsIG1f
ZXhwcmVzc2lvblN0YWNrU2xvdHMsIG5ld0xhYmVsKCkpOwogICAgIHJldHVybiB7IH07CiB9CiAK
QEAgLTEwMDYsNyArMTE4MSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZElmKEV4cHJlc3Np
b25UeXBlIGNvbmRpdGlvbiwgQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTCiAKICAgICBXYXNt
SmZhbHNlOjplbWl0KHRoaXMsIGNvbmRpdGlvbiwgYWx0ZXJuYXRlLT5iaW5kKHRoaXMpKTsKIAot
ICAgIHJlc3VsdCA9IENvbnRyb2xUeXBlOjppZl8oc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwgV1RG
TW92ZShhbHRlcm5hdGUpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOworICAgIHJlc3VsdCA9IENv
bnRyb2xUeXBlOjppZl8oc2lnbmF0dXJlLCBtX2V4cHJlc3Npb25TdGFja1Nsb3RzLCBXVEZNb3Zl
KGFsdGVybmF0ZSksIFdURk1vdmUoY29udGludWF0aW9uKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0K
IApAQCAtMTAyMCwxMSArMTE5NSwxMiBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRFbHNlKENv
bnRyb2xUeXBlJiBkYXRhLCBTdGFjayYgZXhwcmVzc2lvblN0YWNrKSAtPiBQYXJ0aQogCiBhdXRv
IExMSW50R2VuZXJhdG9yOjphZGRFbHNlVG9VbnJlYWNoYWJsZShDb250cm9sVHlwZSYgZGF0YSkg
LT4gUGFydGlhbFJlc3VsdAogewotICAgIG1fc3RhY2tTaXplID0gZGF0YS5zdGFja1NpemUoKSAr
IGRhdGEubV9zaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBtX2V4cHJlc3Npb25TdGFj
a1Nsb3RzID0gZGF0YS5tX2V4cHJlc3Npb25TdGFja1Nsb3RzOworLy8gICAgYWRkQXJndW1lbnRz
VG9TbG90U3RhY2soZGF0YS5tX3NpZ25hdHVyZSk7CiAKICAgICBDb250cm9sSWYmIGNvbnRyb2wg
PSBzdGQ6OmdldDxDb250cm9sSWY+KGRhdGEpOwogICAgIGVtaXRMYWJlbChjb250cm9sLm1fYWx0
ZXJuYXRlLmdldCgpKTsKLSAgICBkYXRhID0gQ29udHJvbFR5cGU6OmJsb2NrKGRhdGEubV9zaWdu
YXR1cmUsIG1fc3RhY2tTaXplLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRpb24pKTsKKyAgICBk
YXRhID0gQ29udHJvbFR5cGU6OmJsb2NrKGRhdGEubV9zaWduYXR1cmUsIG1fZXhwcmVzc2lvblN0
YWNrU2xvdHMsIFdURk1vdmUoZGF0YS5tX2NvbnRpbnVhdGlvbikpOwogICAgIHJldHVybiB7IH07
CiB9CiAKQEAgLTEwMzYsNyArMTIxMiw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFRyeShC
bG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29uCiAgICAg
c3BsaXRTdGFjayhzaWduYXR1cmUsIGVuY2xvc2luZ1N0YWNrLCBuZXdTdGFjayk7CiAgICAgUmVm
PExhYmVsPiB0cnlMYWJlbCA9IG5ld0VtaXR0ZWRMYWJlbCgpOwogICAgIFJlZjxMYWJlbD4gY29u
dGludWF0aW9uID0gbmV3TGFiZWwoKTsKLSAgICByZXN1bHQgPSBDb250cm9sVHlwZTo6Y3JlYXRl
VHJ5KHNpZ25hdHVyZSwgbV9zdGFja1NpemUsIFdURk1vdmUodHJ5TGFiZWwpLCBXVEZNb3ZlKGNv
bnRpbnVhdGlvbiksIG1fdHJ5RGVwdGgpOworICAgIHJlc3VsdCA9IENvbnRyb2xUeXBlOjpjcmVh
dGVUcnkoc2lnbmF0dXJlLCBtX2V4cHJlc3Npb25TdGFja1Nsb3RzLCBXVEZNb3ZlKHRyeUxhYmVs
KSwgV1RGTW92ZShjb250aW51YXRpb24pLCBtX3RyeURlcHRoKTsKICAgICByZXR1cm4geyB9Owog
fQogCkBAIC0xMDQ2LDkgKzEyMjIsMTMgQEAgdm9pZCBMTEludEdlbmVyYXRvcjo6ZmluYWxpemVQ
cmV2aW91c0Jsb2NrRm9yQ2F0Y2goQ29udHJvbFR5cGUmIGRhdGEsIFN0YWNrJiBleHAKICAgICAg
ICAgbWF0ZXJpYWxpemVDb25zdGFudHNBbmRMb2NhbHMoZXhwcmVzc2lvblN0YWNrKTsKICAgICBl
bHNlIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwotICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZGF0YS5zdGFja1NpemUoKSk7CisgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChkYXRhLnN0
YWNrQ291bnQoKSk7CiAgICAgICAgIGZvciAoVHlwZWRFeHByZXNzaW9uJiB2YWx1ZSA6IGV4cHJl
c3Npb25TdGFjaykgewotICAgICAgICAgICAgV2FzbU1vdjo6ZW1pdCh0aGlzLCBkc3QsIHZhbHVl
KTsKKyAgICAgICAgICAgIHR5cGVkTW92ZShkc3QsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2
YWx1ZS50eXBlKCkuc2l6ZSgpID09IDE2KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRzdCAt
IDEgPT0gbmV4dFNsb3RGb3JVcHBlckJpdHMoZHN0KSk7CisgICAgICAgICAgICAgICAgZHN0IC09
IDE7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB2YWx1ZSA9IFR5cGVkRXhwcmVzc2lvbiB7
IHZhbHVlLnR5cGUoKSwgZHN0IH07CiAgICAgICAgICAgICBkc3QgLT0gMTsKICAgICAgICAgfQpA
QCAtMTA2NywxNCArMTI0NywxNiBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRDYXRjaFRvVW5y
ZWFjaGFibGUodW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdAogICAgIG1fdXNl
c0V4Y2VwdGlvbnMgPSB0cnVlOwogICAgIFJlZjxMYWJlbD4gY2F0Y2hMYWJlbCA9IG5ld0VtaXR0
ZWRMYWJlbCgpOwogCi0gICAgbV9zdGFja1NpemUgPSBkYXRhLnN0YWNrU2l6ZSgpOwotICAgIFZp
cnR1YWxSZWdpc3RlciBleGNlcHRpb24gPSBwdXNoKCk7CisgICAgbV9leHByZXNzaW9uU3RhY2tT
bG90cyA9IGRhdGEubV9leHByZXNzaW9uU3RhY2tTbG90czsKKyAgICAKKyAgICBWaXJ0dWFsUmVn
aXN0ZXIgZXhjZXB0aW9uID0gcHVzaChUeXBlczo6Vm9pZCwgTm9Db25zaXN0ZW5jeUNoZWNrKTsK
KyAgICBBU1NFUlQoZXhjZXB0aW9uU2lnbmF0dXJlLnJldHVybnNWb2lkKCkpOwogICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPENvbnRyb2xUcnk+KGRhdGEpKSB7CiAgICAgICAgIENvbnRy
b2xUcnkmIHRyeURhdGEgPSBzdGQ6OmdldDxDb250cm9sVHJ5PihkYXRhKTsKLSAgICAgICAgZGF0
YSA9IENvbnRyb2xUeXBlOjpjcmVhdGVDYXRjaChkYXRhLm1fc2lnbmF0dXJlLCBkYXRhLnN0YWNr
U2l6ZSgpLCBXVEZNb3ZlKHRyeURhdGEubV90cnkpLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRp
b24pLCBjYXRjaExhYmVsLCB0cnlEYXRhLm1fdHJ5RGVwdGgsIGV4Y2VwdGlvbik7CisgICAgICAg
IGRhdGEgPSBDb250cm9sVHlwZTo6Y3JlYXRlQ2F0Y2goZGF0YS5tX3NpZ25hdHVyZSwgZGF0YS5t
X2V4cHJlc3Npb25TdGFja1Nsb3RzLCBXVEZNb3ZlKHRyeURhdGEubV90cnkpLCBXVEZNb3ZlKGRh
dGEubV9jb250aW51YXRpb24pLCBjYXRjaExhYmVsLCB0cnlEYXRhLm1fdHJ5RGVwdGgsIGV4Y2Vw
dGlvbik7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGNlcHRpb25TaWdu
YXR1cmUuYXJndW1lbnRDb3VudCgpOyArK2kpCi0gICAgICAgIHJlc3VsdHMuYXBwZW5kKHB1c2go
KSk7CisgICAgICAgIHJlc3VsdHMuYXBwZW5kKHB1c2goZXhjZXB0aW9uU2lnbmF0dXJlLmFyZ3Vt
ZW50KGkpKSk7CiAKICAgICBpZiAoQ29udGV4dDo6dXNlRmFzdFRMUygpKQogICAgICAgICBXYXNt
Q2F0Y2g6OmVtaXQodGhpcywgZXhjZXB0aW9uSW5kZXgsIGV4Y2VwdGlvbiwgZXhjZXB0aW9uU2ln
bmF0dXJlLmFyZ3VtZW50Q291bnQoKSwgcmVzdWx0cy5pc0VtcHR5KCkgPyAwIDogLXJlc3VsdHNb
MF0ub2Zmc2V0KCkpOwpAQCAtMTEyMCwxMSArMTMwMiwxMSBAQCBhdXRvIExMSW50R2VuZXJhdG9y
OjphZGRDYXRjaEFsbFRvVW5yZWFjaGFibGUoQ29udHJvbFR5cGUmIGRhdGEpIC0+IFBhcnRpYWxS
ZXN1bAogewogICAgIG1fdXNlc0V4Y2VwdGlvbnMgPSB0cnVlOwogICAgIFJlZjxMYWJlbD4gY2F0
Y2hMYWJlbCA9IG5ld0VtaXR0ZWRMYWJlbCgpOwotICAgIG1fc3RhY2tTaXplID0gZGF0YS5zdGFj
a1NpemUoKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZXhjZXB0aW9uID0gcHVzaCgpOworICAgIG1f
ZXhwcmVzc2lvblN0YWNrU2xvdHMgPSBkYXRhLm1fZXhwcmVzc2lvblN0YWNrU2xvdHM7CisgICAg
VmlydHVhbFJlZ2lzdGVyIGV4Y2VwdGlvbiA9IHB1c2goVHlwZXM6OlZvaWQsIE5vQ29uc2lzdGVu
Y3lDaGVjayk7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29udHJvbFRyeT4oZGF0
YSkpIHsKICAgICAgICAgQ29udHJvbFRyeSYgdHJ5RGF0YSA9IHN0ZDo6Z2V0PENvbnRyb2xUcnk+
KGRhdGEpOwotICAgICAgICBkYXRhID0gQ29udHJvbFR5cGU6OmNyZWF0ZUNhdGNoKGRhdGEubV9z
aWduYXR1cmUsIGRhdGEuc3RhY2tTaXplKCksIFdURk1vdmUodHJ5RGF0YS5tX3RyeSksIFdURk1v
dmUoZGF0YS5tX2NvbnRpbnVhdGlvbiksIGNhdGNoTGFiZWwsIHRyeURhdGEubV90cnlEZXB0aCwg
ZXhjZXB0aW9uKTsKKyAgICAgICAgZGF0YSA9IENvbnRyb2xUeXBlOjpjcmVhdGVDYXRjaChkYXRh
Lm1fc2lnbmF0dXJlLCBkYXRhLm1fZXhwcmVzc2lvblN0YWNrU2xvdHMsIFdURk1vdmUodHJ5RGF0
YS5tX3RyeSksIFdURk1vdmUoZGF0YS5tX2NvbnRpbnVhdGlvbiksIGNhdGNoTGFiZWwsIHRyeURh
dGEubV90cnlEZXB0aCwgZXhjZXB0aW9uKTsKICAgICB9CiAgICAgQ29udHJvbENhdGNoJiBjYXRj
aERhdGEgPSBzdGQ6OmdldDxDb250cm9sQ2F0Y2g+KGRhdGEpOwogICAgIGNhdGNoRGF0YS5tX2tp
bmQgPSBDYXRjaEtpbmQ6OkNhdGNoQWxsOwpAQCAtMTE1NywxOCArMTMzOSwxOCBAQCBhdXRvIExM
SW50R2VuZXJhdG9yOjphZGREZWxlZ2F0ZVRvVW5yZWFjaGFibGUoQ29udHJvbFR5cGUmIHRhcmdl
dCwgQ29udHJvbFR5cGUmCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBMTEludEdlbmVyYXRv
cjo6YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFZlY3RvcjxFeHByZXNzaW9uVHlw
ZT4mIGFyZ3MsIFN0YWNrJikgLT4gUGFydGlhbFJlc3VsdAorYXV0byBMTEludEdlbmVyYXRvcjo6
YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFN0YWNrJiBhcmdzKSAtPiBQYXJ0aWFs
UmVzdWx0CiB7CiAgICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7CiAgICAgLy8gV2UgaGF2ZSB0
byBtYXRlcmlhbGl6ZSB0aGUgYXJndW1lbnRzIGhlcmUgc2luY2UgaXQgbWlnaHQgaW5jbHVkZSBj
b25zdGFudHMgb3IKICAgICAvLyBkZWxheWVkIG1vdmVzLCBidXQgdGhlIHdhc21fdGhyb3cgb3Bj
b2RlIGV4cGVjdHMgYWxsIHRoZSBhcmd1bWVudHMgdG8gYmUgY29udGlndW91cwogICAgIC8vIGlu
IHRoZSBzdGFjay4gVGhlIHJlYXNvbiB3ZSBkb24ndCBjYWxsIG1hdGVyaWFsaXplQ29uc3RhbnRz
QW5kTG9jYWxzIGhlcmUgaXMgdGhhdAogICAgIC8vIGl0IGV4cGVjdHMgYSBzdGFjaywgbm90IGEg
dmVjdG9yIG9mIEV4cHJlc3Npb25UeXBlIGFyZ3VtZW50cy4KLSAgICB3YWxrRXhwcmVzc2lvblN0
YWNrKGFyZ3MsIFsmXShWaXJ0dWFsUmVnaXN0ZXImIGFyZywgVmlydHVhbFJlZ2lzdGVyIHNsb3Qp
IHsKLSAgICAgICAgaWYgKGFyZyA9PSBzbG90KQorICAgIHdhbGtFeHByZXNzaW9uU3RhY2soYXJn
cywgWyZdKFR5cGVkRXhwcmVzc2lvbiYgYXJnLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkgeworICAg
ICAgICBpZiAoYXJnLnZhbHVlKCkgPT0gc2xvdCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgV2FzbU1vdjo6ZW1pdCh0aGlzLCBzbG90LCBhcmcpOwotICAgICAgICBhcmcgPSBzbG90Owor
ICAgICAgICB0eXBlZE1vdmUoc2xvdCwgYXJnKTsKKyAgICAgICAgYXJnID0gVHlwZWRFeHByZXNz
aW9uIHsgYXJnLnR5cGUoKSwgc2xvdCB9OwogICAgIH0pOwogICAgIFdhc21UaHJvdzo6ZW1pdCh0
aGlzLCBleGNlcHRpb25JbmRleCwgYXJncy5pc0VtcHR5KCkgPyB2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbCgwKSA6IGFyZ3NbMF0pOwogICAgIHJldHVybiB7IH07CkBAIC0xMjY2LDE1ICsxNDQ4LDE4
IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEVuZFRvVW5yZWFjaGFibGUoQ29udHJvbEVudHJ5
JiBlbnRyeSwgU3RhY2smIGV4cHJlc3Npb25TCiB7CiAgICAgQ29udHJvbFR5cGUmIGRhdGEgPSBl
bnRyeS5jb250cm9sRGF0YTsKIAotICAgIHVuc2lnbmVkIHN0YWNrU2l6ZSA9IGRhdGEuc3RhY2tT
aXplKCk7CisgICAgdW5zaWduZWQgc3RhY2tTaXplID0gZGF0YS5zdGFja0NvdW50KCk7CiAgICAg
aWYgKENvbnRyb2xUeXBlOjppc0FueUNhdGNoKGVudHJ5LmNvbnRyb2xEYXRhKSkKICAgICAgICAg
KytzdGFja1NpemU7IC8vIEFjY291bnQgZm9yIHRoZSBjYXVnaHQgZXhjZXB0aW9uCi0gICAgUkVM
RUFTRV9BU1NFUlQodW5yZWFjaGFibGUgfHwgbV9zdGFja1NpemUgPT0gIHN0YWNrU2l6ZSArIGRh
dGEubV9zaWduYXR1cmUtPnJldHVybkNvdW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHVucmVh
Y2hhYmxlIHx8IHRoaXMtPnN0YWNrQ291bnQoKSA9PSAgc3RhY2tTaXplICsgZGF0YS5tX3NpZ25h
dHVyZS0+cmV0dXJuQ291bnQoKSk7CiAKLSAgICBtX3N0YWNrU2l6ZSA9IGRhdGEuc3RhY2tTaXpl
KCk7CisgICAgbV9leHByZXNzaW9uU3RhY2tTbG90cyA9IGRhdGEubV9leHByZXNzaW9uU3RhY2tT
bG90czsKIAogICAgIGlmIChDb250cm9sVHlwZTo6aXNUcnkoZGF0YSkgfHwgc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxDb250cm9sQ2F0Y2g+KGRhdGEpKQogICAgICAgICAtLW1fdHJ5RGVwdGg7Cisg
ICAgCisgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlsi
LCBtX2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAgICAgIkFkZCBlbmQsIG5ldyBzdGFjayBzbG90
czogIiwgbGlzdER1bXAobV9leHByZXNzaW9uU3RhY2tTbG90cyksICJyZWFjaGFibGU6ICIsICF1
bnJlYWNoYWJsZSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3NpZ25h
dHVyZS0+cmV0dXJuQ291bnQoKTsgKytpKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8g
ZG8gYSBjb25zaXN0ZW5jeSBjaGVjayBoZXJlIGJlY2F1c2Ugd2UganVzdCByZXNldCB0aGUgc3Rh
Y2sgc2l6ZQpAQCAtMTI4Miw3ICsxNDY3LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkRW5k
VG9VbnJlYWNoYWJsZShDb250cm9sRW50cnkmIGVudHJ5LCBTdGFjayYgZXhwcmVzc2lvblMKICAg
ICAgICAgLy8gVGhlIG9ubHkgcmVhc29uIHdlIGRvIHRoaW5ncyB0aGlzIHdheSBpcyBzbyB0aGF0
IGl0IGFsc28gd29ya3MgZm9yIHVucmVhY2hhYmxlIGJsb2NrcywKICAgICAgICAgLy8gc2luY2Ug
dGhleSBtaWdodCBub3QgaGF2ZSB0aGUgcmlnaHQgbnVtYmVyIG9mIHZhbHVlcyBpbiB0aGUgZXhw
cmVzc2lvbiBzdGFjay4KICAgICAgICAgLy8gSW5zdGVhZCwgd2UgZG8gYSBzdHJpY3RlciBjb25z
aXN0ZW5jeSBjaGVjayBiZWxvdy4KLSAgICAgICAgYXV0byB0bXAgPSBwdXNoKE5vQ29uc2lzdGVu
Y3lDaGVjayk7CisgICAgICAgIGF1dG8gdG1wID0gcHVzaChkYXRhLm1fc2lnbmF0dXJlLT5yZXR1
cm5UeXBlKGkpLCBOb0NvbnNpc3RlbmN5Q2hlY2spOwogICAgICAgICBBU1NFUlQodW5yZWFjaGFi
bGUgfHwgdG1wID09IGV4cHJlc3Npb25TdGFja1tpXS52YWx1ZSgpKTsKICAgICAgICAgaWYgKHVu
cmVhY2hhYmxlKQogICAgICAgICAgICAgZW50cnkuZW5jbG9zZWRFeHByZXNzaW9uU3RhY2suY29u
c3RydWN0QW5kQXBwZW5kKGRhdGEubV9zaWduYXR1cmUtPnJldHVyblR5cGUoaSksIHRtcCk7CkBA
IC0xMzIwLDExICsxNTA1LDE1IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhbGwodWludDMy
X3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiB7CiAgICAgQVNT
RVJUKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgPT0gYXJncy5zaXplKCkpOwogICAgIExMSW50
Q2FsbEluZm9ybWF0aW9uIGluZm8gPSBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoc2lnbmF0dXJl
KTsKLSAgICB1bmlmeVZhbHVlc1dpdGhCbG9jayhpbmZvLmFyZ3VtZW50cywgYXJncyk7CisgICAg
VmVjdG9yPFR5cGVkRXhwcmVzc2lvbj4gdHlwZWRBcmdzIChhcmdzLnNpemUoKSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQorICAgICAgICB0eXBlZEFyZ3Nb
aV0gPSB7IHNpZ25hdHVyZS5hcmd1bWVudChpKSwgYXJnc1tpXSB9OworICAgIHVuaWZ5VmFsdWVz
V2l0aEJsb2NrKGluZm8uYXJndW1lbnRzLCB0eXBlZEFyZ3MpOworICAgIAogICAgIGlmIChDb250
ZXh0Ojp1c2VGYXN0VExTKCkpCi0gICAgICAgIFdhc21DYWxsOjplbWl0KHRoaXMsIGZ1bmN0aW9u
SW5kZXgsIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cyk7Cisg
ICAgICAgIFdhc21DYWxsOjplbWl0KHRoaXMsIGZ1bmN0aW9uSW5kZXgsIGluZm8uc3RhY2tPZmZz
ZXQsIGluZm8uc2l6ZU9mU3RhY2tBcmd1bWVudHMpOwogICAgIGVsc2UKLSAgICAgICAgV2FzbUNh
bGxOb1Rsczo6ZW1pdCh0aGlzLCBmdW5jdGlvbkluZGV4LCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZv
Lm51bWJlck9mU3RhY2tBcmd1bWVudHMpOworICAgICAgICBXYXNtQ2FsbE5vVGxzOjplbWl0KHRo
aXMsIGZ1bmN0aW9uSW5kZXgsIGluZm8uc3RhY2tPZmZzZXQsIGluZm8uc2l6ZU9mU3RhY2tBcmd1
bWVudHMpOwogICAgIGluZm8uY29tbWl0UmVzdWx0cyhyZXN1bHRzKTsKIAogICAgIHJldHVybiB7
IH07CkBAIC0xMzM5LDExICsxNTI4LDE1IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhbGxJ
bmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hCiAgICAg
QVNTRVJUKG1faW5mby50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpID09IFRhYmxlRWxlbWVudFR5
cGU6OkZ1bmNyZWYpOwogCiAgICAgTExJbnRDYWxsSW5mb3JtYXRpb24gaW5mbyA9IGNhbGxJbmZv
cm1hdGlvbkZvckNhbGxlcihzaWduYXR1cmUpOwotICAgIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGlu
Zm8uYXJndW1lbnRzLCBhcmdzKTsKKyAgICBWZWN0b3I8VHlwZWRFeHByZXNzaW9uPiB0eXBlZEFy
Z3MgKGFyZ3Muc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3Muc2l6ZSgp
OyArK2kpCisgICAgICAgIHR5cGVkQXJnc1tpXSA9IHsgc2lnbmF0dXJlLmFyZ3VtZW50KGkpLCBh
cmdzW2ldIH07CisgICAgdW5pZnlWYWx1ZXNXaXRoQmxvY2soaW5mby5hcmd1bWVudHMsIHR5cGVk
QXJncyk7CisgICAgCiAgICAgaWYgKENvbnRleHQ6OnVzZUZhc3RUTFMoKSkKLSAgICAgICAgV2Fz
bUNhbGxJbmRpcmVjdDo6ZW1pdCh0aGlzLCBjYWxsZWVJbmRleCwgbV9jb2RlQmxvY2stPmFkZFNp
Z25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tB
cmd1bWVudHMsIHRhYmxlSW5kZXgpOworICAgICAgICBXYXNtQ2FsbEluZGlyZWN0OjplbWl0KHRo
aXMsIGNhbGxlZUluZGV4LCBtX2NvZGVCbG9jay0+YWRkU2lnbmF0dXJlKHNpZ25hdHVyZSksIGlu
Zm8uc3RhY2tPZmZzZXQsIGluZm8uc2l6ZU9mU3RhY2tBcmd1bWVudHMsIHRhYmxlSW5kZXgpOwog
ICAgIGVsc2UKLSAgICAgICAgV2FzbUNhbGxJbmRpcmVjdE5vVGxzOjplbWl0KHRoaXMsIGNhbGxl
ZUluZGV4LCBtX2NvZGVCbG9jay0+YWRkU2lnbmF0dXJlKHNpZ25hdHVyZSksIGluZm8uc3RhY2tP
ZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cywgdGFibGVJbmRleCk7CisgICAgICAg
IFdhc21DYWxsSW5kaXJlY3ROb1Rsczo6ZW1pdCh0aGlzLCBjYWxsZWVJbmRleCwgbV9jb2RlQmxv
Y2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLnNpemVP
ZlN0YWNrQXJndW1lbnRzLCB0YWJsZUluZGV4KTsKICAgICBpbmZvLmNvbW1pdFJlc3VsdHMocmVz
dWx0cyk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTM1NCwxMSArMTU0NywxNCBAQCBhdXRvIExM
SW50R2VuZXJhdG9yOjphZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0
b3I8RXhwcmVzc2lvblR5cAogICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZSA9IGFyZ3MudGFrZUxh
c3QoKTsKIAogICAgIExMSW50Q2FsbEluZm9ybWF0aW9uIGluZm8gPSBjYWxsSW5mb3JtYXRpb25G
b3JDYWxsZXIoc2lnbmF0dXJlKTsKLSAgICB1bmlmeVZhbHVlc1dpdGhCbG9jayhpbmZvLmFyZ3Vt
ZW50cywgYXJncyk7CisgICAgVmVjdG9yPFR5cGVkRXhwcmVzc2lvbj4gdHlwZWRBcmdzIChhcmdz
LnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQor
ICAgICAgICB0eXBlZEFyZ3NbaV0gPSB7IHNpZ25hdHVyZS5hcmd1bWVudChpKSwgYXJnc1tpXSB9
OworICAgIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGluZm8uYXJndW1lbnRzLCB0eXBlZEFyZ3MpOwog
ICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0VExTKCkpCi0gICAgICAgIFdhc21DYWxsUmVmOjplbWl0
KHRoaXMsIGNhbGxlZSwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZv
LnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMpOworICAgICAgICBXYXNt
Q2FsbFJlZjo6ZW1pdCh0aGlzLCBjYWxsZWUsIG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUoc2ln
bmF0dXJlKSwgaW5mby5zdGFja09mZnNldCwgaW5mby5zaXplT2ZTdGFja0FyZ3VtZW50cyk7CiAg
ICAgZWxzZQotICAgICAgICBXYXNtQ2FsbFJlZk5vVGxzOjplbWl0KHRoaXMsIGNhbGxlZSwgbV9j
b2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZv
Lm51bWJlck9mU3RhY2tBcmd1bWVudHMpOworICAgICAgICBXYXNtQ2FsbFJlZk5vVGxzOjplbWl0
KHRoaXMsIGNhbGxlZSwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZv
LnN0YWNrT2Zmc2V0LCBpbmZvLnNpemVPZlN0YWNrQXJndW1lbnRzKTsKICAgICBpbmZvLmNvbW1p
dFJlc3VsdHMocmVzdWx0cyk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTM2Niw3ICsxNTYyLDcg
QEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQ2FsbFJlZihjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXAKIAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkUmVm
SXNOdWxsKEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQ
YXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHJlc3VsdCA9IHB1c2go
VHlwZXM6OkkzMik7CiAgICAgV2FzbVJlZklzTnVsbDo6ZW1pdCh0aGlzLCByZXN1bHQsIHZhbHVl
KTsKIAogICAgIHJldHVybiB7IH07CkBAIC0xMzc0LDcgKzE1NzAsNyBAQCBhdXRvIExMSW50R2Vu
ZXJhdG9yOjphZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpCiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFJlZkZ1bmModWludDMyX3QgaW5k
ZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1
bHQgPSBwdXNoKCk7CisgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6RnVuY3JlZik7CiAgICAgV2Fz
bVJlZkZ1bmM6OmVtaXQodGhpcywgcmVzdWx0LCBpbmRleCk7CiAKICAgICByZXR1cm4geyB9OwpA
QCAtMTM4Miw3ICsxNTc4LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkUmVmRnVuYyh1aW50
MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGkKIAogYXV0byBMTElu
dEdlbmVyYXRvcjo6YWRkVGFibGVHZXQodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5
cGUgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAg
ICByZXN1bHQgPSBwdXNoKCk7CisgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6Vm9pZCk7IC8vIFRP
RE8KICAgICBXYXNtVGFibGVHZXQ6OmVtaXQodGhpcywgcmVzdWx0LCBpbmRleCwgdGFibGVJbmRl
eCk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTQxMSw3ICsxNjA3LDcgQEAgYXV0byBMTEludEdl
bmVyYXRvcjo6YWRkRWxlbURyb3AodW5zaWduZWQgZWxlbWVudEluZGV4KSAtPiBQYXJ0aWFsUmVz
dWx0CiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFRhYmxlU2l6ZSh1bnNpZ25lZCB0YWJsZUlu
ZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVz
dWx0ID0gcHVzaCgpOworICAgIHB1c2goVHlwZXM6OkkzMik7CiAgICAgV2FzbVRhYmxlU2l6ZTo6
ZW1pdCh0aGlzLCByZXN1bHQsIHRhYmxlSW5kZXgpOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTE0
MTksNyArMTYxNSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFRhYmxlU2l6ZSh1bnNpZ25l
ZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtCiAKIGF1dG8gTExJbnRHZW5l
cmF0b3I6OmFkZFRhYmxlR3Jvdyh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSBm
aWxsLCBFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFy
dGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICByZXN1bHQgPSBwdXNoKFR5
cGVzOjpJMzIpOwogICAgIFdhc21UYWJsZUdyb3c6OmVtaXQodGhpcywgcmVzdWx0LCBmaWxsLCBk
ZWx0YSwgdGFibGVJbmRleCk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTQ0Nyw3ICsxNjQzLDcg
QEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkVW5yZWFjaGFibGUoKSAtPiBQYXJ0aWFsUmVzdWx0
CiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEN1cnJlbnRNZW1vcnkoRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICBy
ZXN1bHQgPSBwdXNoKFR5cGVzOjpJMzIpOwogICAgIFdhc21DdXJyZW50TWVtb3J5OjplbWl0KHRo
aXMsIHJlc3VsdCk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTQ2OSw3ICsxNjY1LDcgQEAgYXV0
byBMTEludEdlbmVyYXRvcjo6YWRkRGF0YURyb3AodW5zaWduZWQgZGF0YVNlZ21lbnRJbmRleCkg
LT4gUGFydGlhbFJlc3VsdAogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4
cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVz
dWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6Okkz
Mik7CiAgICAgV2FzbUdyb3dNZW1vcnk6OmVtaXQodGhpcywgcmVzdWx0LCBkZWx0YSk7CiAKICAg
ICByZXR1cm4geyB9OwpAQCAtMTQ4OSw3ICsxNjg1LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6
YWRkTWVtb3J5Q29weShFeHByZXNzaW9uVHlwZSBkc3RBZGRyZXNzLCBFeHByZXNzaW9uVHlwZSBz
cmMKIAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkU2VsZWN0KEV4cHJlc3Npb25UeXBlIGNvbmRp
dGlvbiwgRXhwcmVzc2lvblR5cGUgbm9uWmVybywgRXhwcmVzc2lvblR5cGUgemVybywgRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2go
KTsKKyAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpWb2lkKTsgLy8gVE9ETwogICAgIFdhc21TZWxl
Y3Q6OmVtaXQodGhpcywgcmVzdWx0LCBjb25kaXRpb24sIG5vblplcm8sIHplcm8pOwogCiAgICAg
cmV0dXJuIHsgfTsKQEAgLTE0OTcsNyArMTY5MywzNCBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjph
ZGRTZWxlY3QoRXhwcmVzc2lvblR5cGUgY29uZGl0aW9uLCBFeHByZXNzaW9uVHlwZSBub25aZXJv
LAogCiBhdXRvIExMSW50R2VuZXJhdG9yOjpsb2FkKExvYWRPcFR5cGUgb3AsIEV4cHJlc3Npb25U
eXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQsIHVpbnQzMl90IG9mZnNldCkgLT4g
UGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICBzd2l0Y2ggKG9wKSB7
CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkOFM6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJ
MzJMb2FkOFU6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkMTZTOgorICAgIGNhc2UgTG9h
ZE9wVHlwZTo6STMyTG9hZDE2VToKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ6CisgICAg
ICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6OkkzMik7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBMb2FkT3BUeXBlOjpJNjRMb2FkOFM6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkOFU6
CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMTZTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6
STY0TG9hZDE2VToKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQzMlU6CisgICAgY2FzZSBM
b2FkT3BUeXBlOjpJNjRMb2FkMzJTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDoKKyAg
ICAgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6STY0KTsKKyAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAKKyAgICBjYXNlIExvYWRPcFR5cGU6OkYzMkxvYWQ6CisgICAgICAgIHJlc3VsdCA9IHB1
c2goVHlwZXM6OkYzMik7CisgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgY2FzZSBM
b2FkT3BUeXBlOjpGNjRMb2FkOgorICAgICAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpGNjQpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBMb2Fk
T3BUeXBlOjpJMzJMb2FkOFM6CiAgICAgICAgIFdhc21JMzJMb2FkOFM6OmVtaXQodGhpcywgcmVz
dWx0LCBwb2ludGVyLCBvZmZzZXQpOwpAQCAtMTU3NCw3ICsxNzk3LDIyIEBAIGF1dG8gTExJbnRH
ZW5lcmF0b3I6OnN0b3JlKFN0b3JlT3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBF
eHByZXNzaW9uVHlwCiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmF0b21pY0xvYWQoRXh0QXRvbWlj
T3BUeXBlIG9wLCBUeXBlLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0LCB1aW50MzJfdCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQg
PSBwdXNoKCk7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJ
MzJBdG9taWNMb2FkOFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY0xvYWQx
NlU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY0xvYWQ6CisgICAgICAgIHJl
c3VsdCA9IHB1c2goVHlwZXM6OkkzMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXh0QXRv
bWljT3BUeXBlOjpJNjRBdG9taWNMb2FkOFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2
NEF0b21pY0xvYWQxNlU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY0xvYWQz
MlU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY0xvYWQ6CisgICAgICAgIHJl
c3VsdCA9IHB1c2goVHlwZXM6Okk2NCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAogICAgIHN3
aXRjaCAob3ApIHsKICAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljTG9hZDhVOgog
ICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNMb2FkOFU6CkBAIC0xNjAwLDcgKzE4
MzgsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphdG9taWNMb2FkKEV4dEF0b21pY09wVHlwZSBv
cCwgVHlwZSwgRXhwcmVzc2lvblR5cGUgcG9pbnRlcgogCiBhdXRvIExMSW50R2VuZXJhdG9yOjph
dG9taWNTdG9yZShFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50
ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50MzJfdCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1
bHQKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHB1c2goKTsKKyAgICBhdXRvIHJlc3VsdCA9IHB1c2go
VHlwZXM6Okk2NCk7CiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgRXh0QXRvbWljT3BUeXBl
OjpJMzJBdG9taWNTdG9yZThVOgogICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNT
dG9yZThVOgpAQCAtMTYyMSwxMyArMTg1OSw2NiBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphdG9t
aWNTdG9yZShFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50ZQog
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIGRpZFBv
cFZhbHVlRnJvbVN0YWNrKCk7IC8vIElnbm9yZSB0aGUgcmVzdWx0LgorICAgIGRpZFBvcFZhbHVl
RnJvbVN0YWNrKFR5cGVzOjpJNjQpOyAvLyBJZ25vcmUgdGhlIHJlc3VsdC4KICAgICByZXR1cm4g
eyB9OwogfQogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphdG9taWNCaW5hcnlSTVcoRXh0QXRvbWlj
T3BUeXBlIG9wLCBUeXBlLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSB2
YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgdWludDMyX3Qgb2Zmc2V0KSAtPiBQYXJ0aWFs
UmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHN3aXRjaCAob3ApIHsKKyAgICBj
YXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13OEFkZFU6CisgICAgY2FzZSBFeHRBdG9t
aWNPcFR5cGU6OkkzMkF0b21pY1JtdzE2QWRkVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6
STMyQXRvbWljUm13QWRkOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXc4
U3ViVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13MTZTdWJVOgorICAg
IGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXdTdWI6CisgICAgY2FzZSBFeHRBdG9t
aWNPcFR5cGU6OkkzMkF0b21pY1JtdzhBbmRVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJ
MzJBdG9taWNSbXcxNkFuZFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1Jt
d0FuZDoKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13OE9yVToKKyAgICBj
YXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13MTZPclU6CisgICAgY2FzZSBFeHRBdG9t
aWNPcFR5cGU6OkkzMkF0b21pY1Jtd09yOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJB
dG9taWNSbXc4WG9yVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13MTZY
b3JVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXdYb3I6CisgICAgY2Fz
ZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1JtdzhYY2hnVToKKyAgICBjYXNlIEV4dEF0b21p
Y09wVHlwZTo6STMyQXRvbWljUm13MTZYY2hnVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6
STMyQXRvbWljUm13WGNoZzoKKyAgICAgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6STMyKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0
QXRvbWljUm13OEFkZFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzE2
QWRkVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13MzJBZGRVOgorICAg
IGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXdBZGQ6CisgICAgY2FzZSBFeHRBdG9t
aWNPcFR5cGU6Okk2NEF0b21pY1JtdzhTdWJVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJ
NjRBdG9taWNSbXcxNlN1YlU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1Jt
dzMyU3ViVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13U3ViOgorICAg
IGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXc4QW5kVToKKyAgICBjYXNlIEV4dEF0
b21pY09wVHlwZTo6STY0QXRvbWljUm13MTZBbmRVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBl
OjpJNjRBdG9taWNSbXczMkFuZFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21p
Y1Jtd0FuZDoKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13OE9yVToKKyAg
ICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13MTZPclU6CisgICAgY2FzZSBFeHRB
dG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzMyT3JVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBl
OjpJNjRBdG9taWNSbXdPcjoKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13
OFhvclU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzE2WG9yVToKKyAg
ICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13MzJYb3JVOgorICAgIGNhc2UgRXh0
QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXdYb3I6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6
Okk2NEF0b21pY1JtdzhYY2hnVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWlj
Um13MTZYY2hnVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13MzJYY2hn
VToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13WGNoZzoKKyAgICAgICAg
cmVzdWx0ID0gcHVzaChUeXBlczo6STY0KTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
KyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgCiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgRXh0
QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXc4QWRkVToKICAgICBjYXNlIEV4dEF0b21pY09wVHlw
ZTo6STY0QXRvbWljUm13OEFkZFU6CkBAIC0xNzI5LDcgKzIwMjAsMjMgQEAgYXV0byBMTEludEdl
bmVyYXRvcjo6YXRvbWljQmluYXJ5Uk1XKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSwgRXhwcmVz
c2lvblR5cGUgcG8KIAogYXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWljQ29tcGFyZUV4Y2hhbmdl
KEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVz
c2lvblR5cGUgZXhwZWN0ZWQsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0LCB1aW50MzJfdCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQg
PSBwdXNoKCk7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJ
MzJBdG9taWNSbXc4Q21weGNoZ1U6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21p
Y1JtdzE2Q21weGNoZ1U6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1Jtd0Nt
cHhjaGc6CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6OkkzMik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXc4Q21weGNoZ1U6CisgICAg
Y2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzE2Q21weGNoZ1U6CisgICAgY2FzZSBF
eHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzMyQ21weGNoZ1U6CisgICAgY2FzZSBFeHRBdG9t
aWNPcFR5cGU6Okk2NEF0b21pY1Jtd0NtcHhjaGc6CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlw
ZXM6Okk2NCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKICAgICBz
d2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1JtdzhDbXB4
Y2hnVToKICAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13OENtcHhjaGdVOgpA
QCAtMTc1Niw3ICsyMDYzLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWljQ29tcGFyZUV4
Y2hhbmdlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSwgRXhwcmVzc2lvblQKIAogYXV0byBMTElu
dEdlbmVyYXRvcjo6YXRvbWljV2FpdChFeHRBdG9taWNPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBl
IHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSB0aW1lb3V0LCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0LCB1aW50MzJfdCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1bHQK
IHsKLSAgICByZXN1bHQgPSBwdXNoKCk7CisgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6STMyKTsK
ICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Ok1lbW9yeUF0b21p
Y1dhaXQzMjoKICAgICAgICAgV2FzbU1lbW9yeUF0b21pY1dhaXQzMjo6ZW1pdCh0aGlzLCByZXN1
bHQsIHBvaW50ZXIsIG9mZnNldCwgdmFsdWUsIHRpbWVvdXQpOwpAQCAtMTc3Myw3ICsyMDgwLDcg
QEAgYXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWljV2FpdChFeHRBdG9taWNPcFR5cGUgb3AsIEV4
cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHIKIAogYXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWlj
Tm90aWZ5KEV4dEF0b21pY09wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVz
c2lvblR5cGUgY291bnQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQsIHVpbnQzMl90IG9mZnNldCkg
LT4gUGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICByZXN1bHQgPSBw
dXNoKFR5cGVzOjpJMzIpOwogICAgIFJFTEVBU0VfQVNTRVJUKG9wID09IEV4dEF0b21pY09wVHlw
ZTo6TWVtb3J5QXRvbWljTm90aWZ5KTsKICAgICBXYXNtTWVtb3J5QXRvbWljTm90aWZ5OjplbWl0
KHRoaXMsIHJlc3VsdCwgcG9pbnRlciwgb2Zmc2V0LCBjb3VudCk7CiAgICAgcmV0dXJuIHsgfTsK
QEAgLTE3ODcsNyArMjA5NCwyNCBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphdG9taWNGZW5jZShF
eHRBdG9taWNPcFR5cGUsIHVpbnQ4X3QpIC0+IFBhcnRpYWxSZXN1bHQKIAogYXV0byBMTEludEdl
bmVyYXRvcjo6dHJ1bmNTYXR1cmF0ZWQoRXh0MU9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgb3Bl
cmFuZCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgVHlwZSwgVHlwZSkgLT4gUGFydGlhbFJlc3Vs
dAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBF
eHQxT3BUeXBlOjpJMzJUcnVuY1NhdEYzMlM6CisgICAgY2FzZSBFeHQxT3BUeXBlOjpJMzJUcnVu
Y1NhdEYzMlU6CisgICAgY2FzZSBFeHQxT3BUeXBlOjpJMzJUcnVuY1NhdEY2NFM6CisgICAgY2Fz
ZSBFeHQxT3BUeXBlOjpJMzJUcnVuY1NhdEY2NFU6CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlw
ZXM6OkkzMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXh0MU9wVHlwZTo6STY0VHJ1bmNT
YXRGMzJTOgorICAgIGNhc2UgRXh0MU9wVHlwZTo6STY0VHJ1bmNTYXRGMzJVOgorICAgIGNhc2Ug
RXh0MU9wVHlwZTo6STY0VHJ1bmNTYXRGNjRTOgorICAgIGNhc2UgRXh0MU9wVHlwZTo6STY0VHJ1
bmNTYXRGNjRVOgorICAgICAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpJNjQpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgCiAgICAgc3dpdGNoIChvcCkgewogICAgIGNh
c2UgRXh0MU9wVHlwZTo6STMyVHJ1bmNTYXRGMzJTOgogICAgICAgICBXYXNtSTMyVHJ1bmNTYXRG
MzJTOjplbWl0KHRoaXMsIHJlc3VsdCwgb3BlcmFuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT1NSRW50cnlEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtT1NSRW50cnlEYXRhLmgKaW5kZXggODM0MjdkMjA3MzJlLi42ZGZjYWFmMTIx
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PU1JFbnRyeURh
dGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT1NSRW50cnlEYXRhLmgK
QEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fZnVuY3Rpb25JbmRleChmdW5j
dGlvbkluZGV4KQogICAgICAgICAsIG1fbG9vcEluZGV4KGxvb3BJbmRleCkKICAgICAgICAgLCBt
X3ZhbHVlcyhXVEZNb3ZlKHN0YWNrTWFwKSkKLSAgICB7CisgICAgeyBpZiAoIU9wdGlvbnM6OnZh
bGlkYXRlR3JhcGgoKSB8fCBPcHRpb25zOjp2YWxpZGF0ZUdyYXBoQXRFYWNoUGhhc2UoKSkgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCiAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleCgp
IGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25JbmRleDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBhcnNlci5oCmluZGV4IGVkMDBkOWEwYTQyYi4uODBjMWM4NjJlZDMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oCkBAIC00NSw2ICs0NSw5IEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IE1BWF9TSU1EX0FSR1VNRU5UUyA9IDI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBNQVhfU0lN
RF9JTU1FRElBVEVTID0gMjsKKwogbmFtZXNwYWNlIEZhaWx1cmVIZWxwZXIgewogLy8gRklYTUUg
V2Ugc2hvdWxkIG1vdmUgdGhpcyB0byBtYWtlU3RyaW5nLiBJdCdzIGluIGl0cyBvd24gbmFtZXNw
YWNlIHRvIGVuYWJsZSBDKysgQXJndW1lbnQgRGVwZW5kZW50IExvb2t1cCDDoCBsYSBzdGQ6OnN3
YXA6IHVzZXIgY29kZSBjYW4gZGVibGFyZSBpdHMgb3duICJib3hGYWlsdXJlIiBhbmQgdGhlIGZh
aWwoKSBoZWxwZXIgd2lsbCBmaW5kIGl0LgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTc3LDYg
KzgwLDggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVUlu
dDgodWludDhfdCYpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVUludDMyKHVp
bnQzMl90Jik7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VVSW50NjQodWludDY0
X3QmKTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUltbUJ5dGVBcnJheTE2KHYx
MjhfdCYpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlSW1tTGFu
ZUlkeCh1aW50OF90IGxhbmVDb3VudCwgdWludDhfdCYpOwogICAgIGJvb2wgV0FSTl9VTlVTRURf
UkVUVVJOIHBhcnNlVmFyVUludDMyKHVpbnQzMl90Jik7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9S
RVRVUk4gcGFyc2VWYXJVSW50NjQodWludDY0X3QmKTsKIApAQCAtMjIzLDYgKzIyOCwyNSBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VVSW50NjQodWludDY0
X3QmIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgU3Vj
Y2Vzc1R5cGU+CitBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VJ
bW1CeXRlQXJyYXkxNih2MTI4X3QmIHJlc3VsdCkKK3sKKyAgICBpZiAobGVuZ3RoKCkgPCAxNiB8
fCBtX29mZnNldCA+IGxlbmd0aCgpIC0gMTYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBz
dGQ6OmNvcHkoc291cmNlKCkgKyBtX29mZnNldCwgc291cmNlKCkgKyBtX29mZnNldCArIDE2LCBy
ZXN1bHQudTh4MTYpOworICAgIG1fb2Zmc2V0ICs9IDE2OworICAgIHJldHVybiB0cnVlOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTdWNjZXNzVHlwZT4KK0FMV0FZU19JTkxJTkUgdHlwZW5hbWUg
UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6UGFydGlhbFJlc3VsdCBQYXJzZXI8U3VjY2Vzc1R5cGU+Ojpw
YXJzZUltbUxhbmVJZHgodWludDhfdCBsYW5lQ291bnQsIHVpbnQ4X3QmIHJlc3VsdCkKK3sKKyAg
ICBSRUxFQVNFX0FTU0VSVChsYW5lQ291bnQgPT0gMiB8fCBsYW5lQ291bnQgPT0gNCB8fCBsYW5l
Q291bnQgPT0gOCB8fCBsYW5lQ291bnQgPT0gMTYgfHwgbGFuZUNvdW50ID09IDMyKTsKKyAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KHJlc3VsdCksICJDb3VsZCBub3QgcGFyc2Ug
dGhlIGxhbmUgaW5kZXggaW1tZWRpYXRlIGJ5dGUuIik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RihyZXN1bHQgPj0gbGFuZUNvdW50LCAiTGFuZSBpbmRleCBpbW1lZGlhdGUgaXMgdG9vIGxhcmdl
LCBzYXcgIiwgbGFuZUNvdW50LCAiLCBleHBlY3RlZCBhbiBJbW1MYW5lSWR4IiwgbGFuZUNvdW50
KTsKKyAgICByZXR1cm4geyB9OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdWNjZXNzVHlwZT4K
IEFMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVVJbnQ4KHVpbnQ4
X3QmIHJlc3VsdCkKIHsKQEAgLTI3NCw3ICsyOTgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUGFy
c2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYXJVSW50MSh1aW50OF90JiByZXN1bHQpCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFN1Y2Nlc3NUeXBlPgotQUxXQVlTX0lOTElORSB0eXBlbmFtZSBQYXJz
ZXI8U3VjY2Vzc1R5cGU+OjpQYXJ0aWFsUmVzdWx0IFBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNl
QmxvY2tTaWduYXR1cmUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIEJsb2NrU2lnbmF0
dXJlJiByZXN1bHQpCitBTFdBWVNfSU5MSU5FIGF1dG8gUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFy
c2VCbG9ja1NpZ25hdHVyZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgQmxvY2tTaWdu
YXR1cmUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIGludDhfdCB0eXBlS2luZDsK
ICAgICBpZiAocGVla0ludDcodHlwZUtpbmQpICYmIGlzVmFsaWRUeXBlS2luZCh0eXBlS2luZCkp
IHsKQEAgLTMzMSw3ICszNTUsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NU
eXBlPjo6cGFyc2VWYWx1ZVR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mCiAgICAgVHlwZUtp
bmQgdHlwZUtpbmQgPSBzdGF0aWNfY2FzdDxUeXBlS2luZD4oa2luZCk7CiAgICAgYm9vbCBpc051
bGxhYmxlID0gdHJ1ZTsKICAgICBTaWduYXR1cmVJbmRleCBzaWdJbmRleCA9IDA7Ci0KKyAgICAK
ICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygp
ICYmICh0eXBlS2luZCA9PSBUeXBlS2luZDo6RnVuY3JlZiB8fCB0eXBlS2luZCA9PSBUeXBlS2lu
ZDo6RXh0ZXJucmVmKSkgewogICAgICAgICBzaWdJbmRleCA9IHN0YXRpY19jYXN0PFNpZ25hdHVy
ZUluZGV4Pih0eXBlS2luZCk7CiAgICAgICAgIHR5cGVLaW5kID0gVHlwZUtpbmQ6OlJlZk51bGw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwCmluZGV4IGY5
YTU2MWI4NTBmYy4uMDgxM2Q0NjAzYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtOTYsNyArOTYsNyBAQCBSZWZQdHI8U2lnbmF0dXJlPiBT
aWduYXR1cmU6OnRyeUNyZWF0ZShTaWduYXR1cmVBcmdDb3VudCByZXR1cm5Db3VudCwgU2lnbmF0
dXJlQQogCiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6U2lnbmF0dXJlSW5mb3JtYXRpb24oKQogewot
I2RlZmluZSBNQUtFX1RIVU5LX1NJR05BVFVSRSh0eXBlLCBlbmMsIHN0ciwgdmFsLCBfKSAgICAg
ICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBNQUtFX1RIVU5LX1NJR05BVFVSRSh0eXBlLCBl
bmMsIHN0ciwgdmFsLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgICAgIGlmIChUeXBlS2luZDo6dHlwZSAhPSBUeXBlS2luZDo6Vm9pZCkgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBSZWZQdHI8U2lnbmF0dXJl
PiBzaWcgPSBTaWduYXR1cmU6OnRyeUNyZWF0ZSgxLCAwKTsgICAgICAgICAgICBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVNpbWRPcGNvZGVzLnB5IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVTaW1kT3Bjb2Rlcy5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjMjZiNmNhODVmNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlU2ltZE9wY29kZXMu
cHkKQEAgLTAsMCArMSwxMTggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworIyBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIHRoZSBv
cGNvZGUgZGF0YSBmb3Igc2ltZCBvcGNvZGVzCisjIGNzdiBzb3VyY2U6IGh0dHBzOi8vZG9jcy5n
b29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzFtSXRBUEREeVVEOTdRZHRCOXlwNDR1dFRQOXZSUlM5
WE12MFlaX2VQejlzL2VkaXQ/dXNwPXNoYXJpbmcKKworaW1wb3J0IGNzdgoraW1wb3J0IGpzb24K
KwordmVyYm9zZSA9IEZhbHNlCisKK2RlZiBjcHBUeXBlKHR5cGUpOgorICAgIGlmIHR5cGUgPT0g
ImJvb2wiOgorICAgICAgICByZXR1cm4gIkkzMiIKKyAgICByZXR1cm4gIiIuam9pbihtYXAobGFt
YmRhIHg6IHguY2FwaXRhbGl6ZSgpLCB0eXBlLnNwbGl0KCdfJykpKQorCitkZWYgc2ltZE9wY29k
ZXMoY3N2RGlyZWN0b3J5KToKKyAgICBvcHMgPSB7fQorCisgICAgd2l0aCBvcGVuKGNzdkRpcmVj
dG9yeSArICIvc2ltZF9vcGNvZGVzLmNzdiIsICdyJykgYXMgY3N2ZmlsZToKKyAgICAgICAgcmVh
ZGVyID0gY3N2LkRpY3RSZWFkZXIoY3N2ZmlsZSkKKyAgICAgICAgZm9yIHJvdyBpbiByZWFkZXI6
CisgICAgICAgICAgICBvcHNbcm93WyJJbnN0cnVjdGlvbiJdXSA9IGNvbnZlcnRSb3cocm93KQor
CisgICAgaWYgdmVyYm9zZToKKyAgICAgICAgcHJpbnQoanNvbi5kdW1wcyhvcHMsIHNvcnRfa2V5
cz1UcnVlLCBpbmRlbnQ9NCkpCisKKyAgICByZXR1cm4gb3BzCisKK2RlZiBjb252ZXJ0Um93KHJv
dyk6IAorICAgIHJlcyA9IHt9CisKKyAgICByZXNbImNhdGVnb3J5Il0gPSByb3dbImNhdGVnb3J5
Il0KKyAgICByZXNbInZhbHVlIl0gPSBpbnQocm93WyJ2YWx1ZSJdLDApCisgICAgcmVzWyJleHRl
bmRlZE9wIl0gPSBpbnQocm93WyJleHRlbmRlZE9wIl0sMCkKKyAgICBzY2FsYXJUeXBlID0gcm93
WyJzY2FsYXJUeXBlIl0KKyAgICByZXNbInNpbWRfc2NhbGFyX3R5cGUiXSA9IHNjYWxhclR5cGUK
KyAgICBpZiBzY2FsYXJUeXBlIG5vdCBpbiBbJ3ZvaWQnLCAiaTMyIiwgImk2NCIsICJmMzIiLCAi
ZjY0Il06CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihmImludmFsaWQgc2NhbGFyIHR5cGU6IHtz
Y2FsYXJUeXBlfSIpCisgICAgcmVzWydzaW1kX29wZXJhdGlvbiddID0gcm93WyJvcCJdCisgICAg
cmVzWydzaW1kX3NpZ25fZXh0ZW5kX21vZGUnXSA9IHJvd1sic2lnbkV4dGVuZCJdCisgICAgcmVz
WydzaW1kX2xhbmVfaW50ZXJwcmV0YXRpb24nXSA9IHJvd1siaW50ZXJwcmV0YXRpb24iXQorICAg
IHJlc1siaXNfc2ltZF9zcGVjaWFsX29wIl0gPSAocm93WyJzcGVjaWFsIl0gPT0gJ3knKQorCisg
ICAgZGVmIGZpeFBhcmFtcyhwKToKKyAgICAgICAgcCA9IHAuc3RyaXAoKQorICAgICAgICBwID0g
cC5zcGxpdCgiLCIpCisgICAgICAgIHAgPSBbdC5zdHJpcCgpIGZvciB0IGluIHAgaWYgdCAhPSAn
J10KKyAgICAgICAgcmV0dXJuIFtmaXhUeXBlKHQpIGZvciB0IGluIHBdCisKKyAgICBkZWYgZml4
VHlwZSh0KToKKyAgICAgICAgdCA9IHQuc3BsaXQoIjoiKQorICAgICAgICB0ID0gdFstMV0uc3Ry
aXAoKQorCisgICAgICAgIGlmIHQgPT0gInYiOgorICAgICAgICAgICAgcmV0dXJuICJ2MTI4Igor
ICAgICAgICBpZiB0ID09ICJzIjoKKyAgICAgICAgICAgIGlmIHNjYWxhclR5cGUgPT0gJ3ZvaWQn
OgorICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKGYiaW5zdHJ1Y3Rpb24ge3Jlc30gZG9lcyBu
b3QgaGF2ZSBhIHNjYWxhciB0eXBlIikKKyAgICAgICAgICAgIHJldHVybiBzY2FsYXJUeXBlCisK
KyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKGYiZXJyb3I6IHR5cGUge3R9IG5vdCBmb3VuZCwgdXBk
YXRlIGdlbmVyYXRlU2ltZE9wY29kZXMucHkiKQorICAgIAorICAgIGRlZiBmaXhJbW1zKHApOgor
ICAgICAgICBwID0gcC5zdHJpcCgpCisgICAgICAgIHAgPSBwLnNwbGl0KCIsIikKKyAgICAgICAg
cCA9IFt0LnN0cmlwKCkgZm9yIHQgaW4gcCBpZiB0ICE9ICcnXQorICAgICAgICBwID0gW2ZpeElt
bSh0KSBmb3IgdCBpbiBwXQorICAgICAgICByZXR1cm4gW2ogZm9yIGkgaW4gcCBmb3IgaiBpbiBp
XQorICAgIAorICAgIGRlZiBmaXhJbW0odCk6CisgICAgICAgIHQgPSB0LnNwbGl0KCI6IikKKyAg
ICAgICAgdCA9IHRbLTFdLnN0cmlwKCkKKworICAgICAgICBpZiB0ID09ICJtZW1hcmciOgorICAg
ICAgICAgICAgcmV0dXJuIFt7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn0s
IHsibmFtZSI6ICJhbGdpbiIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XQorICAgICAgICBpZiB0ID09
ICJJbW1CeXRlWzE2XSI6CisgICAgICAgICAgICByZXR1cm4gW3sibmFtZSI6ICJpbW1ieXRlWzA6
OF0iLCAidHlwZSI6ICJ2YXJ1aW50NjQifSwgeyJuYW1lIjogImltbWJ5dGVbODoxNl0iLCAidHlw
ZSI6ICJ2YXJ1aW50NjQifV0KKyAgICAgICAgaWYgdCBpbiBbIkltbUxhbmVJZHgyIiwgIkltbUxh
bmVJZHg0IiwgIkltbUxhbmVJZHg4IiwgIkltbUxhbmVJZHgxNiIsICJJbW1MYW5lSWR4Il06Cisg
ICAgICAgICAgICByZXR1cm4gW3sibmFtZSI6ICJsYW5laWR4IiwgInR5cGUiOiAidmFydWludDgi
LCAibGFuZVNpemUiOiB0W2xlbigiSW1tTGFuZUlkeCIpOl19XQorCisgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbihmImVycm9yOiB0eXBlIHt0fSBub3QgZm91bmQsIHVwZGF0ZSBnZW5lcmF0ZVNpbWRP
cGNvZGVzLnB5IikKKworICAgIHJlc1siaW1tZWRpYXRlIl0gPSBmaXhJbW1zKHJvd1siSW1tIl0p
CisgICAgcmVzWyJwYXJhbWV0ZXIiXSA9IGZpeFBhcmFtcyhyb3dbInBhcmFtcyJdKQorICAgIHJl
c1sicmV0dXJuIl0gPSBbZml4VHlwZShyb3dbInJldHVybiJdKV0gaWYgcm93WyJyZXR1cm4iXSAh
PSAnJyBlbHNlIFtdCisKKyAgICB3YXNtT3AgPSBjcHBUeXBlKHJlc1sic2ltZF9vcGVyYXRpb24i
XSkgKyBjcHBUeXBlKHJlc1sic2ltZF9sYW5lX2ludGVycHJldGF0aW9uIl0pCisgICAgaWYgcmVz
WyJzaW1kX3NpZ25fZXh0ZW5kX21vZGUiXSA9PSAiVSI6CisgICAgICAgIHdhc21PcCArPSAiVSIK
KyAgICBlbGlmIHJlc1sic2ltZF9zaWduX2V4dGVuZF9tb2RlIl0gPT0gIlMiOgorICAgICAgICB3
YXNtT3AgKz0gIlMiCisgICAgcmVzWyJiM29wIl0gPSBjcHBUeXBlKHJlc1sic2ltZF9vcGVyYXRp
b24iXSkKKyAgICByZXNbIndhc21PcCJdID0gIldhc21TaW1kIiArIHdhc21PcAorCisgICAgcmV0
dXJuIHJlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbS5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2dlbmVyYXRlV2FzbS5weQppbmRleCBkNGU2MTBlMWYyMTcuLjU3OGYzNmEwNTM1NiAx
MDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbS5weQpAQCAtMjcsMTkg
KzI3LDIzIEBACiAKIGltcG9ydCBqc29uCiBpbXBvcnQgbWF0aAoraW1wb3J0IG9zCiBpbXBvcnQg
cmUKK2Zyb20gZ2VuZXJhdGVTaW1kT3Bjb2RlcyBpbXBvcnQgKgogCiBjbGFzcyBXYXNtOgogICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBzY3JpcHROYW1lLCBqc29uUGF0aCk6CiAgICAgICAgIHdhc21G
aWxlID0gb3Blbihqc29uUGF0aCwgInIiKQogICAgICAgICB3YXNtID0ganNvbi5sb2FkKG9wZW4o
anNvblBhdGgsICJyIikpCiAgICAgICAgIHdhc21GaWxlLmNsb3NlKCkKKyAgICAgICAganNvbkRp
cmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoanNvblBhdGgpKQogICAg
ICAgICBmb3IgcHJlIGluIHdhc21bInByZWFtYmxlIl06CiAgICAgICAgICAgICBpZiBwcmVbIm5h
bWUiXSA9PSAidmVyc2lvbiI6CiAgICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZFZlcnNpb25O
dW1iZXIgPSBzdHIocHJlWyJ2YWx1ZSJdKQogICAgICAgICBzZWxmLnByZWFtYmxlID0gd2FzbVsi
cHJlYW1ibGUiXQogICAgICAgICBzZWxmLnR5cGVzID0gd2FzbVsidHlwZSJdCiAgICAgICAgIHNl
bGYub3Bjb2RlcyA9IHdhc21bIm9wY29kZSJdCisgICAgICAgIHNlbGYub3Bjb2Rlcy51cGRhdGUo
c2ltZE9wY29kZXMoanNvbkRpcmVjdG9yeSkpCiAgICAgICAgIHNlbGYuaGVhZGVyID0gIiIiLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCkBAIC0xMTAsNiArMTE0LDggQEAgZGVmIGlzQXRvbWljU3RvcmUob3ApOgogZGVmIGlz
QXRvbWljQmluYXJ5Uk1XKG9wKToKICAgICByZXR1cm4gb3BbImNhdGVnb3J5Il0gPT0gImF0b21p
Yy5ybXcuYmluYXJ5IgogCitkZWYgaXNTaW1kKG9wKToKKyAgICByZXR1cm4gb3BbImNhdGVnb3J5
Il0uc3RhcnRzd2l0aCgic2ltZCIpCiAKIGRlZiBpc1NpbXBsZShvcCk6CiAgICAgcmV0dXJuICJi
M29wIiBpbiBvcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJh
dGVXYXNtT3BzSGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVX
YXNtT3BzSGVhZGVyLnB5CmluZGV4IDY1NzZhNjljNTY4My4uMTlhNDVhNWIwZjBiIDEwMDc1NQot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3BzSGVhZGVyLnB5
CkBAIC00Myw3ICs0Myw3IEBAIHdhc21PcHNIRmlsZSA9IG9wZW4oYXJnc1syXSwgInciKQogZGVm
IGNwcFR5cGUodHlwZSk6CiAgICAgaWYgdHlwZSA9PSAiYm9vbCI6CiAgICAgICAgIHJldHVybiAi
STMyIgotICAgIHJldHVybiB0eXBlLmNhcGl0YWxpemUoKQorICAgIHJldHVybiAiIi5qb2luKG1h
cChsYW1iZGEgeDogeC5jYXBpdGFsaXplKCksIHR5cGUuc3BsaXQoJ18nKSkpCiAKIAogZGVmIGNw
cE1hY3JvKHdhc21PcGNvZGUsIHZhbHVlLCBiMywgaW5jLCAqZXh0cmFBcmdzKToKQEAgLTUzLDEz
ICs1MywyNSBAQCBkZWYgY3BwTWFjcm8od2FzbU9wY29kZSwgdmFsdWUsIGIzLCBpbmMsICpleHRy
YUFyZ3MpOgogZGVmIHR5cGVNYWNyb2l6ZXIoKToKICAgICBpbmMgPSAwCiAgICAgZm9yIHR5IGlu
IHdhc20udHlwZXM6Ci0gICAgICAgIHlpZWxkIGNwcE1hY3JvKHR5LCB3YXNtLnR5cGVzW3R5XVsi
dmFsdWUiXSwgd2FzbS50eXBlc1t0eV1bImIzdHlwZSJdLCBpbmMsIHR5KQorICAgICAgICB5aWVs
ZCBjcHBNYWNybyh0eSwgd2FzbS50eXBlc1t0eV1bInZhbHVlIl0sIHdhc20udHlwZXNbdHldWyJi
M3R5cGUiXSwgaW5jLCB0eSwgc3RyKHdhc20udHlwZXNbdHldWyJzaXplIl0pKQogICAgICAgICBp
bmMgKz0gMQogCiB0eXBlX2RlZmluaXRpb25zID0gWyIjZGVmaW5lIEZPUl9FQUNIX1dBU01fVFlQ
RShtYWNybykiXQogdHlwZV9kZWZpbml0aW9ucy5leHRlbmQoW3QgZm9yIHQgaW4gdHlwZU1hY3Jv
aXplcigpXSkKIHR5cGVfZGVmaW5pdGlvbnMgPSAiIi5qb2luKHR5cGVfZGVmaW5pdGlvbnMpCiAK
K3NpbWRMYW5lT3BlcmF0aW9ucyA9IHNldChbY3BwVHlwZShvcFsnb3Bjb2RlJ11bJ3NpbWRfb3Bl
cmF0aW9uJ10pIGZvciBvcCBpbiB3YXNtLm9wY29kZUl0ZXJhdG9yKGlzU2ltZCldKQorc2ltZExh
bmVPcGVyYXRpb25zUHJpbnRlciA9ICIiIgorICAgIHN0YXRpYyB2b2lkIGR1bXBTaW1kTGFuZU9w
ZXJhdGlvbihQcmludFN0cmVhbSYgb3V0LCBTaW1kTGFuZU9wZXJhdGlvbiBvcCkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgIiIiICsgIlxuICAgICAgICAiLmpvaW4oWyJj
YXNlIFNpbWRMYW5lT3BlcmF0aW9uOjoiICsgeCArICI6IG91dC5wcmludChcIiIgKyB4ICArICJc
Iik7IGJyZWFrOyIgZm9yIHggaW4gc2ltZExhbmVPcGVyYXRpb25zXSkgKyAiIiIKKyAgICAgICAg
fQorICAgIH0KKyAgICBNQUtFX1BSSU5UX0FEQVBUT1IoU2ltZExhbmVPcGVyYXRpb25EdW1wLCBT
aW1kTGFuZU9wZXJhdGlvbiwgZHVtcFNpbWRMYW5lT3BlcmF0aW9uKTsKKyIiIgorc2ltZExhbmVP
cGVyYXRpb25zID0gIixcbiAgICAiLmpvaW4oc2ltZExhbmVPcGVyYXRpb25zKQorCiAKIGRlZiBv
cGNvZGVNYWNyb2l6ZXIoZmlsdGVyLCBvcGNvZGVGaWVsZD0idmFsdWUiLCBtb2RpZmllcj1Ob25l
KToKICAgICBpbmMgPSAwCkBAIC0xMTUsOCArMTI3LDMxIEBAIGRlZiBhdG9taWNCaW5hcnlSTVdN
YWNyb2l6ZXIoKToKICAgICByZXR1cm4gb3Bjb2RlTWFjcm9pemVyKGxhbWJkYSBvcDogaXNBdG9t
aWNCaW5hcnlSTVcob3ApLCBtb2RpZmllcj1tb2RpZmllciwgb3Bjb2RlRmllbGQ9ImV4dGVuZGVk
T3AiKQogCiAKK2RlZiBzaW1kTWFjcm9saXplcigpOgorICAgIGRlZiBtb2RpZmllcihvcCk6Cisg
ICAgICAgIHJldHVyblR5cGUgPSBmIlR5cGVzOjp7IGNwcFR5cGUob3BbJ3JldHVybiddWzBdKSB9
IiBpZiBsZW4ob3BbInJldHVybiJdKSA9PSAxIGVsc2UgIlR5cGVzOjpWb2lkIgorICAgICAgICBp
bW1lZGlhdGVzID0gbGlzdChtYXAobGFtYmRhIHg6IHhbImxhbmVTaXplIl0sIG9wWyJpbW1lZGlh
dGUiXSkpCisgICAgICAgIGltbWVkaWF0ZXNBcnIgPSAieyIgKyAnLCcuam9pbihpbW1lZGlhdGVz
KSArICJ9IgorICAgICAgICBhcmd1bWVudHMgPSBsaXN0KG1hcChsYW1iZGEgeDogZiImVHlwZXM6
OntjcHBUeXBlKHgpfSIsIG9wWyJwYXJhbWV0ZXIiXSkpCisgICAgICAgIGFyZ3VtZW50c0FyciA9
ICJ7IiArICcsJy5qb2luKGFyZ3VtZW50cykgKyAifSIKKyAgICAgICAgcmV0dXJuIFtvcFsid2Fz
bU9wIl0sIHJldHVyblR5cGUsIAorICAgICAgICAgICAgc3RyKGxlbihpbW1lZGlhdGVzKSksIGlt
bWVkaWF0ZXNBcnIsIHN0cihsZW4oYXJndW1lbnRzKSksIGFyZ3VtZW50c0FyciwgCisgICAgICAg
ICAgICBmIlNpbWRMYW5lSW50ZXJwcmV0YXRpb246Onsgb3BbJ3NpbWRfbGFuZV9pbnRlcnByZXRh
dGlvbiddIH0iLCAKKyAgICAgICAgICAgIGYiU2ltZFNpZ25FeHRlbmRNb2RlOjp7IG9wWydzaW1k
X3NpZ25fZXh0ZW5kX21vZGUnXSB9Il0KKyAgICByZXR1cm4gb3Bjb2RlTWFjcm9pemVyKGxhbWJk
YSBvcDogaXNTaW1kKG9wKSBhbmQgbm90IG9wWyJpc19zaW1kX3NwZWNpYWxfb3AiXSwgbW9kaWZp
ZXI9bW9kaWZpZXIsIG9wY29kZUZpZWxkPSJleHRlbmRlZE9wIikKKworCitkZWYgc2ltZFNwZWNp
YWxNYWNyb2xpemVyKCk6CisgICAgZGVmIG1vZGlmaWVyKG9wKToKKyAgICAgICAgcmV0dXJuIFsK
KyAgICAgICAgICAgIGYiU2ltZExhbmVPcGVyYXRpb246OntjcHBUeXBlKG9wWydzaW1kX29wZXJh
dGlvbiddKX0iLCAKKyAgICAgICAgICAgIGYiU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6eyBvcFsn
c2ltZF9sYW5lX2ludGVycHJldGF0aW9uJ10gfSIsIAorICAgICAgICAgICAgZiJTaW1kU2lnbkV4
dGVuZE1vZGU6Onsgb3BbJ3NpbWRfc2lnbl9leHRlbmRfbW9kZSddIH0iXQorICAgIHJldHVybiBv
cGNvZGVNYWNyb2l6ZXIobGFtYmRhIG9wOiBpc1NpbWQob3ApIGFuZCBvcFsiaXNfc2ltZF9zcGVj
aWFsX29wIl0sIG1vZGlmaWVyPW1vZGlmaWVyLCBvcGNvZGVGaWVsZD0iZXh0ZW5kZWRPcCIpCisK
KwogZGVmaW5lcyA9IFsiI2RlZmluZSBGT1JfRUFDSF9XQVNNX1NQRUNJQUxfT1AobWFjcm8pIl0K
LWRlZmluZXMuZXh0ZW5kKFtvcCBmb3Igb3AgaW4gb3Bjb2RlTWFjcm9pemVyKGxhbWJkYSBvcDog
bm90IChpc1VuYXJ5KG9wKSBvciBpc0JpbmFyeShvcCkgb3Igb3BbImNhdGVnb3J5Il0gPT0gImNv
bnRyb2wiIG9yIG9wWyJjYXRlZ29yeSJdID09ICJtZW1vcnkiIG9yIG9wWyJ2YWx1ZSJdID09IDB4
ZmMgb3IgaXNBdG9taWMob3ApKSldKQorZGVmaW5lcy5leHRlbmQoW29wIGZvciBvcCBpbiBvcGNv
ZGVNYWNyb2l6ZXIobGFtYmRhIG9wOiBub3QgKGlzVW5hcnkob3ApIG9yIGlzQmluYXJ5KG9wKSBv
ciBvcFsiY2F0ZWdvcnkiXSA9PSAiY29udHJvbCIgb3Igb3BbImNhdGVnb3J5Il0gPT0gIm1lbW9y
eSIgb3Igb3BbInZhbHVlIl0gPT0gMHhmYyBvciBpc0F0b21pYyhvcCkgb3IgaXNTaW1kKG9wKSkp
XSkKIGRlZmluZXMuYXBwZW5kKCJcblxuI2RlZmluZSBGT1JfRUFDSF9XQVNNX0NPTlRST0xfRkxP
V19PUChtYWNybykiKQogZGVmaW5lcy5leHRlbmQoW29wIGZvciBvcCBpbiBvcGNvZGVNYWNyb2l6
ZXIobGFtYmRhIG9wOiBvcFsiY2F0ZWdvcnkiXSA9PSAiY29udHJvbCIpXSkKIGRlZmluZXMuYXBw
ZW5kKCJcblxuI2RlZmluZSBGT1JfRUFDSF9XQVNNX1NJTVBMRV9VTkFSWV9PUChtYWNybykiKQpA
QCAtMTQzLDYgKzE3OCwxMCBAQCBkZWZpbmVzLmFwcGVuZCgiXG5cbiNkZWZpbmUgRk9SX0VBQ0hf
V0FTTV9FWFRfQVRPTUlDX0JJTkFSWV9STVdfT1AobWFjcm8pIikKIGRlZmluZXMuZXh0ZW5kKFtv
cCBmb3Igb3AgaW4gYXRvbWljQmluYXJ5Uk1XTWFjcm9pemVyKCldKQogZGVmaW5lcy5hcHBlbmQo
IlxuXG4jZGVmaW5lIEZPUl9FQUNIX1dBU01fRVhUX0FUT01JQ19PVEhFUl9PUChtYWNybykiKQog
ZGVmaW5lcy5leHRlbmQoW29wIGZvciBvcCBpbiBvcGNvZGVNYWNyb2l6ZXIobGFtYmRhIG9wOiBp
c0F0b21pYyhvcCkgYW5kIChub3QgaXNBdG9taWNMb2FkKG9wKSBhbmQgbm90IGlzQXRvbWljU3Rv
cmUob3ApIGFuZCBub3QgaXNBdG9taWNCaW5hcnlSTVcob3ApKSwgb3Bjb2RlRmllbGQ9ImV4dGVu
ZGVkT3AiKV0pCitkZWZpbmVzLmFwcGVuZCgiXG5cbiNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9FWFRf
U0lNRF9PUChtYWNybykiKQorZGVmaW5lcy5leHRlbmQoW29wIGZvciBvcCBpbiBzaW1kTWFjcm9s
aXplcigpXSkKK2RlZmluZXMuYXBwZW5kKCJcblxuI2RlZmluZSBGT1JfRUFDSF9XQVNNX0VYVF9T
SU1EX1NQRUNJQUxfT1AobWFjcm8pIikKK2RlZmluZXMuZXh0ZW5kKFtvcCBmb3Igb3AgaW4gc2lt
ZFNwZWNpYWxNYWNyb2xpemVyKCldKQogZGVmaW5lcy5hcHBlbmQoIlxuXG4iKQogCiBkZWZpbmVz
ID0gIiIuam9pbihkZWZpbmVzKQpAQCAtMjQwLDYgKzI3OSwyMiBAQCBzdHJ1Y3QgVHlwZSB7CiAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihudWxsYWJsZSk7CiAgICAgfQogCisgICAg
c2l6ZV90IHNpemUoKSBjb25zdCB7CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICNkZWZp
bmUgQ1JFQVRFX0NBU0UobmFtZSwgaWQsIGIzdHlwZSwgaW5jLCB3YXNtTmFtZSwgc2l6ZSwgLi4u
KSBjYXNlIFR5cGVLaW5kOjpuYW1lOiByZXR1cm4gc2l6ZTsKKyAgICBGT1JfRUFDSF9XQVNNX1RZ
UEUoQ1JFQVRFX0NBU0UpCisgICAgI3VuZGVmIENSRUFURV9DQVNFCisgICAgICAgIH0KKyAgICB9
CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QgeworICAgICAgICBzd2l0
Y2ggKGtpbmQpIHsKKyAgICAjZGVmaW5lIENSRUFURV9DQVNFKG5hbWUsIGlkLCBiM3R5cGUsIGlu
Yywgd2FzbU5hbWUsIHNpemUsIC4uLikgY2FzZSBUeXBlS2luZDo6bmFtZTogb3V0LnByaW50KCNu
YW1lKTsgYnJlYWs7CisgICAgRk9SX0VBQ0hfV0FTTV9UWVBFKENSRUFURV9DQVNFKQorICAgICN1
bmRlZiBDUkVBVEVfQ0FTRQorICAgICAgICB9CisgICAgfQorCiAgICAgI2RlZmluZSBDUkVBVEVf
UFJFRElDQVRFKG5hbWUsIC4uLikgYm9vbCBpcyAjIyBuYW1lKCkgY29uc3QgeyByZXR1cm4ga2lu
ZCA9PSBUeXBlS2luZDo6bmFtZTsgfQogICAgIEZPUl9FQUNIX1dBU01fVFlQRShDUkVBVEVfUFJF
RElDQVRFKQogICAgICN1bmRlZiBDUkVBVEVfUFJFRElDQVRFCkBAIC0zMjEsNyArMzc2LDggQEAg
aW5saW5lIFR5cGVLaW5kIGxpbmVhcml6ZWRUb1R5cGUoaW50IGkpCiAgICAgRk9SX0VBQ0hfV0FT
TV9NRU1PUllfTE9BRF9PUChtYWNybykgXFwKICAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9S
RV9PUChtYWNybykgXFwKICAgICBtYWNybyhFeHQxLCAgMHhGQywgT29wcywgMCkgXFwKLSAgICBt
YWNybyhFeHRBdG9taWMsIDB4RkUsIE9vcHMsIDApCisgICAgbWFjcm8oRXh0QXRvbWljLCAweEZF
LCBPb3BzLCAwKSBcXAorICAgIG1hY3JvKEV4dFNpbWQsIDB4RkQsIE9vcHMsIDApCiAKICNkZWZp
bmUgQ1JFQVRFX0VOVU1fVkFMVUUobmFtZSwgaWQsIC4uLikgbmFtZSA9IGlkLAogCkBAIC0zNjUs
OCArNDIxLDIyIEBAIGVudW0gY2xhc3MgRXh0QXRvbWljT3BUeXBlIDogdWludDhfdCB7CiAgICAg
Rk9SX0VBQ0hfV0FTTV9FWFRfQVRPTUlDX09USEVSX09QKENSRUFURV9FTlVNX1ZBTFVFKQogfTsK
IAorZW51bSBjbGFzcyBFeHRTaW1kT3BUeXBlIDogdWludDhfdCB7CisgICAgRk9SX0VBQ0hfV0FT
TV9FWFRfU0lNRF9PUChDUkVBVEVfRU5VTV9WQUxVRSkKKyAgICBGT1JfRUFDSF9XQVNNX0VYVF9T
SU1EX1NQRUNJQUxfT1AoQ1JFQVRFX0VOVU1fVkFMVUUpCit9OworCitlbnVtIGNsYXNzIEV4dFdh
c21PcFR5cGUgOiB1aW50OF90IHsKKyAgICBGT1JfRUFDSF9XQVNNX0VYVF9TSU1EX09QKENSRUFU
RV9FTlVNX1ZBTFVFKQorfTsKKwogI3VuZGVmIENSRUFURV9FTlVNX1ZBTFVFCiAKK2VudW0gY2xh
c3MgU2ltZExhbmVPcGVyYXRpb24gOiB1aW50OF90IHsKKyAgICAiIiIgKyBzaW1kTGFuZU9wZXJh
dGlvbnMgKyAiIiIKK307CisiIiIgKyBzaW1kTGFuZU9wZXJhdGlvbnNQcmludGVyICsgIiIiCisK
IGlubGluZSBib29sIGlzQ29udHJvbE9wKE9wVHlwZSBvcCkKIHsKICAgICBzd2l0Y2ggKG9wKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKaW5kZXggMDhmZTFh
Nzg3MTMyLi45NjM4MDQ4MDA1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dhc21Ub0pTLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
YXNtVG9KUy5jcHAKQEAgLTEwNiw2ICsxMDYsNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQog
ICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKICAgICAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OlJlZk51bGw6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWY6CisgICAgICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpWMTI4OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IC8vIEhhbmRsZWQgYWJvdmUuCiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5k
OjpFeHRlcm5yZWY6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgpAQCAtMTgw
LDYgKzE4MSw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJU
YWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAgICBjYXNlIFR5
cGVLaW5kOjpGdW5jOgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKICAgICAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlYx
Mjg6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gSGFu
ZGxlZCBhYm92ZS4KICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKICAgICAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9zaW1kX29wY29kZXMuY3N2IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vc2ltZF9vcGNvZGVzLmNzdgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjVjYjgxMWQyYTJiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL3NpbWRfb3Bjb2Rlcy5jc3YKQEAgLTAsMCArMSwzIEBACitJbnN0cnVjdGlvbixjYXRl
Z29yeSxvcCxyZXR1cm4sSW1tLHBhcmFtcyxpbnRlcnByZXRhdGlvbixzaWduRXh0ZW5kLHZhbHVl
LGV4dGVuZGVkT3Asc2NhbGFyVHlwZUJhc2Usc2NhbGFyVHlwZSxzcGVjaWFsDQordjEyOC5jb25z
dCxzaW1kLnNwZWNpYWwsY29uc3QsdixpOkltbUJ5dGVbMTZdLCx2MTI4LE5BLDB4RkQsMHgwYyx2
b2lkLHZvaWQseQ0KK2k4eDE2LmV4dHJhY3RfbGFuZV91LHNpbWQubGFuZSxleHRyYWN0X2xhbmUs
cyxpOkltbUxhbmVJZHgxNixhOnYsaTh4MTYsVSwweEZELDB4MTYsaTgsaTMyLG4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS93YXNtLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KaW5kZXgg
Y2FiZGUyMGFlY2VhLi5iMjBhMjU0ZTIwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL3dhc20uanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNt
Lmpzb24KQEAgLTcsMTggKzcsMTkgQEAKICAgICAgICAgeyAibmFtZSI6ICJ2ZXJzaW9uIiwgICAg
ICAidHlwZSI6ICJ1aW50MzIiLCAidmFsdWUiOiAgICAgICAgICAxLCAiZGVzY3JpcHRpb24iOiAi
VmVyc2lvbiBudW1iZXIiIH0KICAgICBdLAogICAgICJ0eXBlIiA6IHsKLSAgICAgICAgImkzMiI6
ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAgLTEsICJiM3R5cGUiOiAiQjM6
OkludDMyIiB9LAotICAgICAgICAiaTY0IjogICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZh
bHVlIjogICAtMiwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCi0gICAgICAgICJmMzIiOiAgICAg
ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgIC0zLCAiYjN0eXBlIjogIkIzOjpGbG9h
dCIgfSwKLSAgICAgICAgImY2NCI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6
ICAgLTQsICJiM3R5cGUiOiAiQjM6OkRvdWJsZSIgfSwKLSAgICAgICAgImZ1bmNyZWYiOiAgIHsg
InR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMTYsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9
LAotICAgICAgICAiZXh0ZXJucmVmIjogeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0x
NywgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCi0gICAgICAgICJyZWZfbnVsbCI6ICB7ICJ0eXBl
IjogInZhcmludDciLCAidmFsdWUiOiAgLTIwLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKLSAg
ICAgICAgInJlZiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMjEsICJi
M3R5cGUiOiAiQjM6OkludDY0IiB9LAotICAgICAgICAiZnVuYyI6ICAgICAgeyAidHlwZSI6ICJ2
YXJpbnQ3IiwgInZhbHVlIjogIC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKLSAgICAgICAg
InZvaWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtNjQsICJiM3R5cGUi
OiAiQjM6OlZvaWQiIH0KKyAgICAgICAgImkzMiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIs
ICJ2YWx1ZSI6ICAgLTEsICJiM3R5cGUiOiAiQjM6OkludDMyIiwgInNpemUiOiA4IH0sCisgICAg
ICAgICJpNjQiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgIC0yLCAiYjN0
eXBlIjogIkIzOjpJbnQ2NCIsICJzaXplIjogOCB9LAorICAgICAgICAiZjMyIjogICAgICAgeyAi
dHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogICAtMywgImIzdHlwZSI6ICJCMzo6RmxvYXQiLCAi
c2l6ZSI6IDggfSwKKyAgICAgICAgImY2NCI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2
YWx1ZSI6ICAgLTQsICJiM3R5cGUiOiAiQjM6OkRvdWJsZSIsICJzaXplIjogOCB9LAorICAgICAg
ICAidjEyOCI6ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC01LCAgImIzdHlw
ZSI6ICJCMzo6VjEyOCIsICAic2l6ZSI6IDE2IH0sCisgICAgICAgICJmdW5jcmVmIjogICB7ICJ0
eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTE2LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIsICJz
aXplIjogOCB9LAorICAgICAgICAiZXh0ZXJucmVmIjogeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZh
bHVlIjogIC0xNywgImIzdHlwZSI6ICJCMzo6SW50NjQiLCAic2l6ZSI6IDggfSwKKyAgICAgICAg
InJlZl9udWxsIjogIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMjAsICJiM3R5cGUi
OiAiQjM6OkludDY0IiwgInNpemUiOiA4IH0sCisgICAgICAgICJyZWYiOiAgICAgICB7ICJ0eXBl
IjogInZhcmludDciLCAidmFsdWUiOiAgLTIxLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIsICJzaXpl
IjogOCB9LAorICAgICAgICAiZnVuYyI6ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVl
IjogIC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIsICAic2l6ZSI6IDAgfSwKKyAgICAgICAgInZv
aWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtNjQsICJiM3R5cGUiOiAi
QjM6OlZvaWQiLCAgInNpemUiOiAwIH0KICAgICB9LAotICAgICJ2YWx1ZV90eXBlIjogWyJpMzIi
LCAiaTY0IiwgImYzMiIsICJmNjQiLCAiZXh0ZXJucmVmIiwgImZ1bmNyZWYiXSwKKyAgICAidmFs
dWVfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0IiwgImV4dGVybnJlZiIsICJmdW5j
cmVmIiwgInYxMjgiXSwKICAgICAiYmxvY2tfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAi
ZjY0IiwgInZvaWQiLCAiZXh0ZXJucmVmIiwgImZ1bmNyZWYiXSwKICAgICAicmVmX3R5cGUiOiBb
ImZ1bmNyZWYiLCAiZXh0ZXJucmVmIiwgInJlZiIsICJyZWZfbnVsbCJdLAogICAgICJleHRlcm5h
bF9raW5kIjogewo=
</data>
<flag name="commit-queue"
          id="475238"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449226</attachid>
            <date>2022-01-14 14:31:34 -0800</date>
            <delta_ts>2022-01-14 14:41:51 -0800</delta_ts>
            <desc>SIMD Megapatch 1.2</desc>
            <filename>simd.diff</filename>
            <type>text/plain</type>
            <size>283690</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9hc3NlcnQuanMgYi9KU1Rlc3RzL3dhc20vYXNzZXJ0
LmpzCmluZGV4IGNjMGFmODA0ZDUzYy4uZWU4YTJkNTQyMzExIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L3dhc20vYXNzZXJ0LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9hc3NlcnQuanMKQEAgLTE4MCwxMSAr
MTgwLDExIEBAIGNvbnN0IHByaW50RXhuID0gKGUpID0+IHsKICAgICBwcmludChlLnN0YWNrKTsK
IH07CiAKLWV4cG9ydCBjb25zdCBhc3luY1Rlc3QgPSAocHJvbWlzZSkgPT4gYXN5bmNUZXN0SW1w
bChwcm9taXNlLCBoYXJuZXNzQ2FsbChhc3luY1Rlc3RQYXNzZWQpLCBwcmludEV4bik7CitleHBv
cnQgY29uc3QgYXN5bmNUZXN0ID0gKHByb21pc2UpID0+IGFzeW5jVGVzdEltcGwocHJvbWlzZSwg
aGFybmVzc0NhbGwoKCkgPT4gYXN5bmNUZXN0UGFzc2VkKCkpLCBwcmludEV4bik7CiBleHBvcnQg
Y29uc3QgYXN5bmNUZXN0RXEgPSAocHJvbWlzZSwgZXhwZWN0ZWQpID0+IHsKICAgICBjb25zdCB0
aGVuQ2hlY2sgPSAodmFsdWUpID0+IHsKICAgICAgICAgaWYgKHZhbHVlID09PSBleHBlY3RlZCkK
LSAgICAgICAgICAgIHJldHVybiBoYXJuZXNzQ2FsbChhc3luY1Rlc3RQYXNzZWQpOworICAgICAg
ICAgICAgcmV0dXJuIGhhcm5lc3NDYWxsKCgpID0+IGFzeW5jVGVzdFBhc3NlZCgpKTsKICAgICAg
ICAgcHJpbnQoIkZhaWxlZDogZ290ICIsIHZhbHVlLCAiIGJ1dCBleHBlY3RlZCAiLCBleHBlY3Rl
ZCk7CiAKICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vc3RyZXNzL3NpbWQtY29uc3Qt
c3BpbGwuanMgYi9KU1Rlc3RzL3dhc20vc3RyZXNzL3NpbWQtY29uc3Qtc3BpbGwuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NjUxZjYxOWY2NTYKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3dhc20vc3RyZXNzL3NpbWQtY29uc3Qtc3BpbGwuanMKQEAgLTAs
MCArMSwxNTAgQEAKK2ltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSAiLi4vd2FidC13cmFwcGVy
LmpzIgoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gIi4uL2Fzc2VydC5qcyIKKworbGV0IHdhdCA9
IGAKKyhtb2R1bGUKKyAgICAoZnVuYyAkanNfaWRlbnQgKGltcG9ydCAiaW1wb3J0cyIgImlkZW50
IikgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKQorCisgICAgKGZ1bmMgKGV4cG9ydCAidGVzdCIp
IChwYXJhbSAkc3ogaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgKGxvY2FsICRhIHYxMjgpCisg
ICAgICAgIChsb2NhbCAkYiB2MTI4KQorCisgICAgICAgIChsb2NhbC5zZXQgJGEgKHYxMjguY29u
c3QgaTh4MTYgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYpKQorICAgICAg
ICAobG9jYWwuc2V0ICRiICh2MTI4LmNvbnN0IGk4eDE2IDkgMCAyIDAgMCAwIDAgMCAwIDAgNSAw
IDAgMCAwIDEpKQorCisgICAgICAgIChpOHgxNi5leHRyYWN0X2xhbmVfdSAxNSAobG9jYWwuZ2V0
ICRhKSkKKyAgICAgICAgKGk4eDE2LmV4dHJhY3RfbGFuZV91IDE1IChsb2NhbC5nZXQgJGIpKQor
CisgICAgICAgIChpMzIuYWRkKQorICAgICAgICAKKyAgICAgICAgKHJldHVybikKKyAgICApCisK
KyAgICAoZnVuYyAkaWRlbnQxMjggKHBhcmFtICRpIGkzMikgKHBhcmFtICR2IHYxMjgpIChwYXJh
bSAkaTIgaTMyKSAocmVzdWx0IHYxMjgpCisgICAgICAgIChyZXR1cm4gKGxvY2FsLmdldCAkdikp
CisgICAgKQorCisgICAgKGZ1bmMgJGlkZW50MzIgKHBhcmFtICRpIGkzMikgKHBhcmFtICR2IHYx
MjgpIChwYXJhbSAkaTIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgKHJldHVybiAobG9jYWwu
Z2V0ICRpMikpCisgICAgKQorCisgICAgKGZ1bmMgKGV4cG9ydCAidGVzdF9zcGlsbCIpIChwYXJh
bSAkaSBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgICAobG9jYWwgJGEgdjEyOCkKKyAgICAgICAg
KGxvY2FsLnNldCAkYSAodjEyOC5jb25zdCBpOHgxNiAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAx
MiAxMyAxNCAxNSAxNikpCisKKyAgICAgICAgKGk4eDE2LmV4dHJhY3RfbGFuZV91IDEzIAorICAg
ICAgICAgICAgKGNhbGwgJGlkZW50MTI4CisgICAgICAgICAgICAgICAgKGkzMi5jb25zdCAxMzM3
KSAKKyAgICAgICAgICAgICAgICAodjEyOC5jb25zdCBpOHgxNiAxMCAyMCAzMCA0MCA1MCA2MCA3
MCA4MCA5MCAxMDAgMTEwIDEyMCAxMzAgMTQwIDE1MCAxNjApIAorICAgICAgICAgICAgICAgIChp
MzIuY29uc3QgNDIwMDAwMCkpKQorICAgICAgICAobG9jYWwuZ2V0ICRpKQorICAgICAgICAoaTh4
MTYuZXh0cmFjdF9sYW5lX3UgMTQgKGxvY2FsLmdldCAkYSkpCisKKyAgICAgICAgKGNhbGwgJGlk
ZW50MzIgCisgICAgICAgICAgICAoaTMyLmNvbnN0IDEzMzcpIAorICAgICAgICAgICAgKHYxMjgu
Y29uc3QgaTh4MTYgMTAgMjAgMzAgNDAgNTAgNjAgNzAgODAgOTAgMTAwIDExMCAxMjAgMTMwIDE0
MCAxNTAgMTYwKSAKKyAgICAgICAgICAgIChpMzIuY29uc3QgNDIwMDAwMCkpCisKKyAgICAgICAg
KGkzMi5hZGQpCisgICAgICAgIChpMzIuYWRkKQorICAgICAgICAoaTMyLmFkZCkKKyAgICAgICAg
CisgICAgICAgIChyZXR1cm4pCisgICAgKQorCisgICAgKGZ1bmMgKGV4cG9ydCAidGVzdF9zcGls
bF9qc2NhbGwiKSAocGFyYW0gJGkgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgKGxvY2FsICRh
IHYxMjgpCisgICAgICAgIChsb2NhbC5zZXQgJGEgKHYxMjguY29uc3QgaTh4MTYgMSAyIDMgNCA1
IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYpKQorCisgICAgICAgIChpOHgxNi5leHRyYWN0
X2xhbmVfdSAxMyAKKyAgICAgICAgICAgIChjYWxsICRpZGVudDEyOCAKKyAgICAgICAgICAgICAg
ICAoaTMyLmNvbnN0IDEzMzcpIAorICAgICAgICAgICAgICAgICh2MTI4LmNvbnN0IGk4eDE2IDEw
IDIwIDMwIDQwIDUwIDYwIDcwIDgwIDkwIDEwMCAxMTAgMTIwIDEzMCAxNDAgMTUwIDE2MCkgCisg
ICAgICAgICAgICAgICAgKGkzMi5jb25zdCA0MjAwMDAwKSkpCisgICAgICAgIChsb2NhbC5nZXQg
JGkpCisKKyAgICAgICAgKGxvY2FsLmdldCAkYSkKKyAgICAgICAgKGNhbGwgJGpzX2lkZW50IChp
MzIuY29uc3QgMCkpCisgICAgICAgIChkcm9wKQorICAgICAgICAoaTh4MTYuZXh0cmFjdF9sYW5l
X3UgMTQpCisKKyAgICAgICAgKGNhbGwgJGlkZW50MzIgCisgICAgICAgICAgICAoaTMyLmNvbnN0
IDEzMzcpIAorICAgICAgICAgICAgKHYxMjguY29uc3QgaTh4MTYgMTAgMjAgMzAgNDAgNTAgNjAg
NzAgODAgOTAgMTAwIDExMCAxMjAgMTMwIDE0MCAxNTAgMTYwKSAKKyAgICAgICAgICAgIChpMzIu
Y29uc3QgNDIwMDAwMCkpCisKKyAgICAgICAgKGkzMi5hZGQpCisgICAgICAgIChpMzIuYWRkKQor
ICAgICAgICAoaTMyLmFkZCkKKyAgICAgICAgCisgICAgICAgIChyZXR1cm4pCisgICAgKQorCisg
ICAgKGZ1bmMgKGV4cG9ydCAidGVzdF9pZl9pMzIiKSAocGFyYW0gJGkgaTMyKSAocmVzdWx0IGkz
MikKKyAgICAgICAgKGxvY2FsICRhIHYxMjgpCisgICAgICAgIChsb2NhbC5zZXQgJGEgKHYxMjgu
Y29uc3QgaTh4MTYgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYpKQorCisg
ICAgICAgIChsb2NhbC5nZXQgJGkpCisgICAgICAgIChpZiAocmVzdWx0IGkzMikKKyAgICAgICAg
ICAgICh0aGVuIAorICAgICAgICAgICAgICAgIChpOHgxNi5leHRyYWN0X2xhbmVfdSAxMyAKKyAg
ICAgICAgICAgICAgICAgICAgKGNhbGwgJGlkZW50MTI4IAorICAgICAgICAgICAgICAgICAgICAg
ICAgKGkzMi5jb25zdCAxMzM3KSAKKyAgICAgICAgICAgICAgICAgICAgICAgICh2MTI4LmNvbnN0
IGk4eDE2IDEwIDIwIDMwIDQwIDUwIDYwIDcwIDgwIDkwIDEwMCAxMTAgMTIwIDEzMCAxNDAgMTUw
IDE2MCkgCisgICAgICAgICAgICAgICAgICAgICAgICAoaTMyLmNvbnN0IDQyMDAwMDApKSkpCisg
ICAgICAgICAgICAoZWxzZSAKKyAgICAgICAgICAgICAgICAoaTh4MTYuZXh0cmFjdF9sYW5lX3Ug
MTQgKGxvY2FsLmdldCAkYSkpKSkKKworICAgICAgICAoY2FsbCAkaWRlbnQzMiAKKyAgICAgICAg
ICAgIChpMzIuY29uc3QgMTMzNykgCisgICAgICAgICAgICAodjEyOC5jb25zdCBpOHgxNiAxMCAy
MCAzMCA0MCA1MCA2MCA3MCA4MCA5MCAxMDAgMTEwIDEyMCAxMzAgMTQwIDE1MCAxNjApIAorICAg
ICAgICAgICAgKGkzMi5jb25zdCA0MjAwMDAwKSkKKworICAgICAgICAoaTMyLmFkZCkKKyAgICAg
ICAgCisgICAgICAgIChyZXR1cm4pCisgICAgKQorCisgICAgKGZ1bmMgKGV4cG9ydCAidGVzdF9p
Zl92MTI4IikgKHBhcmFtICRpIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIChsb2NhbCAkYSB2
MTI4KQorICAgICAgICAobG9jYWwuc2V0ICRhICh2MTI4LmNvbnN0IGk4eDE2IDEgMiAzIDQgNSA2
IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2KSkKKworICAgICAgICAobG9jYWwuZ2V0ICRpKQor
ICAgICAgICAoaWYgKHJlc3VsdCB2MTI4KQorICAgICAgICAgICAgKHRoZW4KKyAgICAgICAgICAg
ICAgICAoY2FsbCAkaWRlbnQxMjggCisgICAgICAgICAgICAgICAgICAgIChpMzIuY29uc3QgMTMz
NykgCisgICAgICAgICAgICAgICAgICAgICh2MTI4LmNvbnN0IGk4eDE2IDEwIDIwIDMwIDQwIDUw
IDYwIDcwIDgwIDkwIDEwMCAxMTAgMTIwIDEzMCAxNDAgMTUwIDE2MCkgCisgICAgICAgICAgICAg
ICAgICAgIChpMzIuY29uc3QgNDIwMDAwMCkpKQorICAgICAgICAgICAgKGVsc2UgCisgICAgICAg
ICAgICAgICAgKGxvY2FsLmdldCAkYSkpKQorICAgICAgICAoaTh4MTYuZXh0cmFjdF9sYW5lX3Ug
MTQpCisKKyAgICAgICAgKGNhbGwgJGlkZW50MzIgCisgICAgICAgICAgICAoaTMyLmNvbnN0IDEz
MzcpIAorICAgICAgICAgICAgKHYxMjguY29uc3QgaTh4MTYgMTAgMjAgMzAgNDAgNTAgNjAgNzAg
ODAgOTAgMTAwIDExMCAxMjAgMTMwIDE0MCAxNTAgMTYwKSAKKyAgICAgICAgICAgIChpMzIuY29u
c3QgNDIwMDAwMCkpCisKKyAgICAgICAgKGkzMi5hZGQpCisgICAgICAgIAorICAgICAgICAocmV0
dXJuKQorICAgICkKKykKK2AKKworYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBjb25zdCBp
bnN0YW5jZSA9IGF3YWl0IGluc3RhbnRpYXRlKHdhdCwgeyBpbXBvcnRzOiB7IGlkZW50OiAoeCkg
PT4geCB9IH0sIHsgc2ltZDogdHJ1ZSB9KQorICAgIGNvbnN0IHsgdGVzdCwgdGVzdF9zcGlsbCwg
dGVzdF9zcGlsbF9qc2NhbGwsIHRlc3RfaWZfaTMyLCB0ZXN0X2lmX3YxMjggfSA9IGluc3RhbmNl
LmV4cG9ydHMKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDsgKytpKSB7CisgICAgICAg
IGFzc2VydC5lcSh0ZXN0KDQyKSwgMTYrMSkKKyAgICAgICAgYXNzZXJ0LmVxKHRlc3Rfc3BpbGwo
NTAwMCksIDE0MCs1MDAwKzE1KzQyMDAwMDApCisgICAgICAgIGFzc2VydC5lcSh0ZXN0X3NwaWxs
X2pzY2FsbCg1MDAwKSwgMTQwKzUwMDArMTUrNDIwMDAwMCkKKyAgICAgICAgYXNzZXJ0LmVxKHRl
c3RfaWZfaTMyKDApLCAxNSs0MjAwMDAwKQorICAgICAgICBhc3NlcnQuZXEodGVzdF9pZl9pMzIo
MSksIDE0MCs0MjAwMDAwKQorICAgICAgICBhc3NlcnQuZXEodGVzdF9pZl92MTI4KDApLCAxNSs0
MjAwMDAwKQorICAgICAgICBhc3NlcnQuZXEodGVzdF9pZl92MTI4KDEpLCAxNTArNDIwMDAwMCkK
KyAgICB9Cit9CisKK2Fzc2VydC5hc3luY1Rlc3QodGVzdCgpKQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy93YXNtL3N0cmVzcy9zaW1kLWNvbnN0LmpzIGIvSlNUZXN0cy93YXNtL3N0cmVzcy9zaW1kLWNv
bnN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2EwN2VhYzk1
ZDhjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL3N0cmVzcy9zaW1kLWNvbnN0Lmpz
CkBAIC0wLDAgKzEsMjggQEAKK2ltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSAiLi4vd2FidC13
cmFwcGVyLmpzIgoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gIi4uL2Fzc2VydC5qcyIKKworbGV0
IHdhdCA9IGAKKyhtb2R1bGUKKyAgICAoZnVuYyAoZXhwb3J0ICJ0ZXN0IikgKHBhcmFtICRzeiBp
MzIpIChyZXN1bHQgaTMyKQorICAgICAgICAoaTMyLmNvbnN0IDkpCisgICAgICAgIChkcm9wKQor
ICAgICAgICAocmV0dXJuIChpOHgxNi5leHRyYWN0X2xhbmVfdSAxICh2MTI4LmNvbnN0IGk4eDE2
IDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2KSkpCisgICAgKQorCisgICAg
KGZ1bmMgKGV4cG9ydCAidGVzdDIiKSAocGFyYW0gJHN6IGkzMikgKHJlc3VsdCBpMzIpCisgICAg
ICAgIChyZXR1cm4gKGk4eDE2LmV4dHJhY3RfbGFuZV91IDEyICh2MTI4LmNvbnN0IGk4eDE2IDEg
MiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2KSkpCisgICAgKQorKQorYAorCith
c3luYyBmdW5jdGlvbiB0ZXN0KCkgeworICAgIGNvbnN0IGluc3RhbmNlID0gYXdhaXQgaW5zdGFu
dGlhdGUod2F0LCB7fSwgeyBzaW1kOiB0cnVlIH0pCisgICAgY29uc3QgeyB0ZXN0LCB0ZXN0MiB9
ID0gaW5zdGFuY2UuZXhwb3J0cworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KSB7CisgICAgICAgIGFzc2VydC5lcSh0ZXN0KDQyKSwgMikKKyAgICAgICAgYXNzZXJ0LmVxKHRl
c3QyKDQ4KSwgMTMpOworICAgIH0KK30KKworYXNzZXJ0LmFzeW5jVGVzdCh0ZXN0KCkpCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgpp
bmRleCAzMmM4YWY4YmJmNTcuLjVjYWY3MWE5YTllZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
L3dhc20uanNvbgorKysgYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCkBAIC0xMSw2ICsxMSw3IEBA
CiAgICAgICAgICJpNjQiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgIC0y
LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKICAgICAgICAgImYzMiI6ICAgICAgIHsgInR5cGUi
OiAidmFyaW50NyIsICJ2YWx1ZSI6ICAgLTMsICJiM3R5cGUiOiAiQjM6OkZsb2F0IiB9LAogICAg
ICAgICAiZjY0IjogICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogICAtNCwgImIz
dHlwZSI6ICJCMzo6RG91YmxlIiB9LAorICAgICAgICAidjEyOCI6ICAgICAgeyAidHlwZSI6ICJ2
YXJpbnQ3IiwgInZhbHVlIjogIDEyMywgImIzdHlwZSI6ICJCMzo6VjEyOCIgfSwKICAgICAgICAg
ImZ1bmNyZWYiOiAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMTYsICJiM3R5cGUi
OiAiQjM6OkludDY0IiB9LAogICAgICAgICAiZXh0ZXJucmVmIjogeyAidHlwZSI6ICJ2YXJpbnQ3
IiwgInZhbHVlIjogIC0xNywgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCiAgICAgICAgICJyZWZf
bnVsbCI6ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIwLCAiYjN0eXBlIjogIkIz
OjpJbnQ2NCIgfSwKQEAgLTE4LDcgKzE5LDcgQEAKICAgICAgICAgImZ1bmMiOiAgICAgIHsgInR5
cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMzIsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAg
ICAgICAgICJ2b2lkIjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTY0LCAi
YjN0eXBlIjogIkIzOjpWb2lkIiB9CiAgICAgfSwKLSAgICAidmFsdWVfdHlwZSI6IFsiaTMyIiwg
Imk2NCIsICJmMzIiLCAiZjY0IiwgImV4dGVybnJlZiIsICJmdW5jcmVmIl0sCisgICAgInZhbHVl
X3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJleHRlcm5yZWYiLCAiZnVuY3Jl
ZiIsICJ2MTI4Il0sCiAgICAgImJsb2NrX3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2
NCIsICJ2b2lkIiwgImV4dGVybnJlZiIsICJmdW5jcmVmIl0sCiAgICAgInJlZl90eXBlIjogWyJm
dW5jcmVmIiwgImV4dGVybnJlZiIsICJyZWYiLCAicmVmX251bGwiXSwKICAgICAiZXh0ZXJuYWxf
a2luZCI6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTZiZGZlMDc1Mzg0Li5k
OTJiNWVjMWExZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NzMsNyArODcz
LDEwIEBACiAJCTQ0NDNBRTMzMTZFMTg4RDkwMDc2RjExMCAvKiBGb3VuZGF0aW9uLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBF
QjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKIAkJNDUx
NTM5QjkxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MTUzOUI4MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDczREE0
QTQ3NjRDNDVGRTg3MUIwNDg1IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTY5OTQ4RURFNjhENDA1NEIw
MUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTRCMTE2N0EwMjc1RUFBMzYwMDhCNEQwOCAv
KiBTaW1kSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEIxMTY3OUYyNzVFQUEzNjAwOEI0RDA4IC8qIFNpbWRJbmZvLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNEI2MjVBMjYyNzNDMzk0RTAwM0JG
NTAzIC8qIEIzQ29uc3QxMjhWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QjYyNUEyNTI3M0MzOTRFMDAzQkY1MDMgLyogQjNDb25zdDEyOFZh
bHVlLmNwcCAqLzsgfTsKIAkJNEJBQTA3Q0VCODFGNDlBMjk2RTAyMjAzIC8qIFdhc21TaWduYXR1
cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVyZUlubGluZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0QkU4OUJGQjI3
NDg1MTMzMDA3OTA5NzcgLyogQjNTaW1kVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRTg5QkY4Mjc0ODUxMzMwMDc5MDk3NyAvKiBCM1NpbWRW
YWx1ZS5oICovOyB9OwogCQk1MjBEOTlGMTIzODhDQzgxMDAwNTA5QTMgLyogR2V0QnlWYWxIaXN0
b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjBE
OTlGMDIzODhDQzc4MDAwNTA5QTMgLyogR2V0QnlWYWxIaXN0b3J5LmggKi87IH07CiAJCTUyMTEz
MUY3MUY4MkJGMTQwMDdDQ0VFRSAvKiBQb2x5UHJvdG9BY2Nlc3NDaGFpbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTIxMTMxRjYxRjgyQkYxMTAwN0ND
RUVFIC8qIFBvbHlQcm90b0FjY2Vzc0NoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTIxMzIyNDYxRUNCQ0U4MjAwRjY1NjE1IC8qIFdlYkFz
c2VtYmx5RnVuY3Rpb25CYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MjEzMjI0NDFFQ0JDRTgyMDBGNjU2MTUgLyogV2ViQXNzZW1ibHlGdW5jdGlv
bkJhc2UuaCAqLzsgfTsKQEAgLTE3OTQsNiArMTc5Nyw3IEBACiAJCUNEMUY5QjRCMjcwQ0ZFMEYw
MDYxN0VCNiAvKiBTdHJvbmdGb3J3YXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDFGOUI0QTI3MENGRTBGMDA2MTdFQjYgLyogU3Ryb25nRm9yd2Fy
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNF
MjBCRDA1MjM3RDNFMjMwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjBCRDAzMjM3RDNB
RDQwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuaCAqLzsgfTsKIAkJQ0UyMEJE
MDcyMzdEM0U0ODAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyMEJEMDEy
MzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5oICov
OyB9OworCQlDRTZFQzIxRTI3M0I0NUFFMDAxNTk4RTMgLyogQjNDb25zdDEyOFZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZFQzIxRDI3M0I0
NUFFMDAxNTk4RTMgLyogQjNDb25zdDEyOFZhbHVlLmggKi87IH07CiAJCUNFQUU3RDdCODg5QjQ3
N0JBOTNBQkE2QyAvKiBTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4ODUyMTUxQTlDMzg0MjM4OUIzMjE1QjcgLyogU2NyaXB0RmV0
Y2hlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUNFQ0ZBRDM2MjM3MkRBRDAwMDI5MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDRkFEMzQyMzcyREFBNzAw
MjkxNTk5IC8qIEZ1enplclByZWRpY3Rpb25zLmggKi87IH07CiAJCUNFQ0ZBRDM3MjM3MkRBRDQw
MDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDRkFEMzIyMzcyREFBNzAwMjkxNTk5IC8qIEZpbGVC
YXNlZEZ1enplckFnZW50LmggKi87IH07CkBAIC0zNzQ4LDYgKzM3NTIsMTAgQEAKIAkJNDQyRkJE
ODUyMTQ5RDFFMDAwNzM1MTlDIC8qIGhhc2hlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgbmFtZSA9IGhhc2hl
ci5weTsgcGF0aCA9IHlhcnIvaGFzaGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NTE1MzlCODEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBZYXJyLmg7IHBhdGggPSB5YXJyL1lhcnIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBqc2MuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IH07CisJCTRCMTE2NzlGMjc1
RUFBMzYwMDhCNEQwOCAvKiBTaW1kSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1kSW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjYyNUEyNTI3M0MzOTRFMDAzQkY1MDMgLyog
QjNDb25zdDEyOFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQ29uc3QxMjhWYWx1ZS5j
cHA7IHBhdGggPSBiMy9CM0NvbnN0MTI4VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0QkU4OUJGNzI3NDg1MTMzMDA3OTA5NzcgLyogQjNTaW1kVmFsdWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQjNTaW1kVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNTaW1kVmFsdWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QkU4OUJGODI3NDg1MTMzMDA3OTA5Nzcg
LyogQjNTaW1kVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNTaW1kVmFsdWUuaDsgcGF0aCA9IGIz
L0IzU2ltZFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRDRTk3OEUzODVB
ODQ5ODE5OTA1MjE1MyAvKiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5k
YXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBGb3VuZGF0aW9uLmZyYW1ld29yazsg
cGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrOyBz
b3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQk1MUYwRUMwNzA1Qzg2QzlBMDBFNkRGMUIg
LyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGlib2JqYy5keWxpYjsg
cGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7
IH07CkBAIC01MTU4LDYgKzUxNjYsNyBAQAogCQlDRTI3QTNEODIzNzU5QkFDMDA4OTYwNUUgLyog
TmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5h
cnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRTI3QTNEOTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE51bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjdBM0RBMjM3NUE2REMw
MDg5NjA1RSAvKiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNFNkVDMjFEMjczQjQ1QUUwMDE1OThFMyAvKiBCM0NvbnN0MTI4VmFsdWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNDb25zdDEyOFZhbHVlLmg7IHBhdGggPSBiMy9CM0NvbnN0MTI4VmFsdWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VDRkFEMzIyMzcyREFBNzAwMjkxNTk5IC8q
IEZpbGVCYXNlZEZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVCYXNlZEZ1enplckFn
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQ0ZBRDMzMjM3MkRBQTcwMDI5
MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxl
QmFzZWRGdXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQ0ZB
RDM0MjM3MkRBQTcwMDI5MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGdXp6ZXJQcmVkaWN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjEw
Myw2ICs2MTEyLDEwIEBACiAJCQkJMEZFQzg0QzQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29uc3Qz
MlZhbHVlLmggKi8sCiAJCQkJMEZFQzg0QzUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29uc3Q2NFZh
bHVlLmNwcCAqLywKIAkJCQkwRkVDODRDNjFCREFDREFDMDA4MEZGNzQgLyogQjNDb25zdDY0VmFs
dWUuaCAqLywKKwkJCQk0QjYyNUEyNTI3M0MzOTRFMDAzQkY1MDMgLyogQjNDb25zdDEyOFZhbHVl
LmNwcCAqLywKKwkJCQlDRTZFQzIxRDI3M0I0NUFFMDAxNTk4RTMgLyogQjNDb25zdDEyOFZhbHVl
LmggKi8sCisJCQkJNEJFODlCRjcyNzQ4NTEzMzAwNzkwOTc3IC8qIEIzU2ltZFZhbHVlLmNwcCAq
LywKKwkJCQk0QkU4OUJGODI3NDg1MTMzMDA3OTA5NzcgLyogQjNTaW1kVmFsdWUuaCAqLywKIAkJ
CQkwRkVDODRDNzFCREFDREFDMDA4MEZGNzQgLyogQjNDb25zdERvdWJsZVZhbHVlLmNwcCAqLywK
IAkJCQkwRkVDODRDODFCREFDREFDMDA4MEZGNzQgLyogQjNDb25zdERvdWJsZVZhbHVlLmggKi8s
CiAJCQkJNDM0MjJBNjAxQzE1ODcxQjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmNwcCAq
LywKQEAgLTY2MDcsNiArNjYyMCw3IEBACiAJCQkJQTczODY1NTIxMTg2OTdCNDAwNTQwMjc5IC8q
IFRodW5rR2VuZXJhdG9ycy5jcHAgKi8sCiAJCQkJQTczODY1NTMxMTg2OTdCNDAwNTQwMjc5IC8q
IFRodW5rR2VuZXJhdG9ycy5oICovLAogCQkJCTY1OTg3RjJGMTY4MjhBN0UwMDNDMkY4RCAvKiBV
bnVzZWRQb2ludGVyLmggKi8sCisJCQkJNEIxMTY3OUYyNzVFQUEzNjAwOEI0RDA4IC8qIFNpbWRJ
bmZvLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGppdDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC05NjI3LDYgKzk2NDEsNyBAQAogCQkJCTBGNjE4MzMxMUM0NUJGMDcwMDcyNDUwQiAv
KiBBaXJMb3dlck1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1Q0Y5ODQxRTlENTM3NzAw
QzE4NjkyIC8qIEFpckxvd2VyU3RhY2tBcmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQwRTRB
NzFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0QkU4
OUJGQjI3NDg1MTMzMDA3OTA5NzcgLyogQjNTaW1kVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAvKiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNDBFNEE5MUM0OTdGNzQwMEE1NzdGQSAvKiBBaXJPcGNvZGVVdGlscy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMzg3OTAxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpck9wdGlt
aXplQmxvY2tPcmRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDQwNyw2ICsxMDQyMiw3IEBACiAJ
CQkJMEZCMzk5QkYyMEFGNkIzRjAwMTdFMjEzIC8qIEluc3RhbmNlT2ZTdGF0dXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjM5OUMwMjBBRjZCNDMwMDE3RTIxMyAvKiBJbnN0YW5jZU9mVmFyaWFu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBNDY4MEMyMTZGQTU2NTAwMEQyQjFBIC8qIEluc3Ry
dWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRTZFQzIxRTI3M0I0NUFFMDAxNTk4RTMgLyog
QjNDb25zdDEyOFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEMyNUI5RTIxNkVBMzZBMDAx
Mzc3NjQgLyogSW5zdHJ1Y3Rpb25TdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNC
MTdBREI1RjMwMDVBQjE3NCAvKiBJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4
QUYzQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MTI1MCw2ICsxMTI2Niw3IEBACiAJCQkJQTdEQ0I5NzMxMkU1MTkzRjAwOTExOTQwIC8qIFdyaXRl
QmFycmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJCNkQ3NTMxOEEzMzc5MzAwNEE5MzAxIC8q
IFdyaXRlQmFycmllcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzgxNTBBMTQwNDNC
RjUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0
QjExNjdBMDI3NUVBQTM2MDA4QjREMDggLyogU2ltZEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5MiAvKiBYODZfNjRSZWdpc3RlcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5MSAvKiBYODZSZWdpc3RlcnMu
aCBpbiBIZWFkZXJzICovLApAQCAtMTIwMzUsNiArMTIwNTIsNyBAQAogCQkJCUUzOTJFNkY4MjRE
MjVGQTYwMEIyMDc2NyAvKiBCM0JvdHRvbVR1cGxlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTJFNjVBMUMyNzY4Mjc2MDAwMkI0QzBBIC8qIEIzRXN0aW1hdGVTdGF0aWNFeGVjdXRpb25D
b3VudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1QUYxQkRCNUQ1RTAwODBGRjc0IC8q
IHRlc3RiM18xLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRCNjI1QTI2MjczQzM5NEUwMDNCRjUw
MyAvKiBCM0NvbnN0MTI4VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMzQTc3QkEyMkYy
NDgwRjAwMzgyN0ZGIC8qIHRlc3RiM18yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDM0E3N0I5
MjJGMjQ4MEIwMDM4MjdGRiAvKiB0ZXN0YjNfMy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzNB
NzdCODIyRjI0ODA5MDAzODI3RkYgLyogdGVzdGIzXzQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggN2EwZWJmZTY5ODFkLi5mYzQyODZlOWJmNzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTEyNCw2ICsxMjQsNyBAQCBiMy9CM0NvbW11
dGF0aXZpdHkuY3BwCiBiMy9CM0NvbXBpbGUuY3BwCiBiMy9CM0NvbnN0MzJWYWx1ZS5jcHAKIGIz
L0IzQ29uc3Q2NFZhbHVlLmNwcAorYjMvQjNDb25zdDEyOFZhbHVlLmNwcAogYjMvQjNDb25zdERv
dWJsZVZhbHVlLmNwcAogYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwCiBiMy9CM0NvbnN0cmFpbmVk
VmFsdWUuY3BwCkBAIC0xNjQsNiArMTY1LDcgQEAgYjMvQjNQdXJlQ1NFLmNwcAogYjMvQjNSZWR1
Y2VEb3VibGVUb0Zsb2F0LmNwcAogYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwCiBiMy9CM1Jl
ZHVjZVN0cmVuZ3RoLmNwcAorYjMvQjNTaW1kVmFsdWUuY3BwCiBiMy9CM1NTQUNhbGN1bGF0b3Iu
Y3BwCiBiMy9CM1Nsb3RCYXNlVmFsdWUuY3BwCiBiMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRB
c3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaAppbmRleCA2ZTkxZDkyMzBhMzkuLjFiZTA3ODg0NjFmMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaApAQCAtNDEsOSArNDEsOSBA
QAogI2luY2x1ZGUgPHppcmNvbi9zeXNjYWxscy5oPgogI2VuZGlmCiAKLSNkZWZpbmUgQ0hFQ0tf
REFUQVNJWkVfT0YoZGF0YXNpemUpIHN0YXRpY19hc3NlcnQoZGF0YXNpemUgPT0gMzIgfHwgZGF0
YXNpemUgPT0gNjQpCisjZGVmaW5lIENIRUNLX0RBVEFTSVpFX09GKGRhdGFzaXplKSBzdGF0aWNf
YXNzZXJ0KGRhdGFzaXplID09IDMyIHx8IGRhdGFzaXplID09IDY0IHx8IGRhdGFzaXplID09IDEy
OCkKICNkZWZpbmUgQ0hFQ0tfTUVNT1BTSVpFX09GKHNpemUpIHN0YXRpY19hc3NlcnQoc2l6ZSA9
PSA4IHx8IHNpemUgPT0gMTYgfHwgc2l6ZSA9PSAzMiB8fCBzaXplID09IDY0IHx8IHNpemUgPT0g
MTI4KTsKLSNkZWZpbmUgREFUQVNJWkVfT0YoZGF0YXNpemUpICgoZGF0YXNpemUgPT0gNjQpID8g
RGF0YXNpemVfNjQgOiBEYXRhc2l6ZV8zMikKKyNkZWZpbmUgREFUQVNJWkVfT0YoZGF0YXNpemUp
ICgoZGF0YXNpemUgPT0gNjQpID8gRGF0YXNpemVfNjQgOiAoKGRhdGFzaXplID09IDEyOCkgPyBE
YXRhc2l6ZV8xMjggOiBEYXRhc2l6ZV8zMikpCiAjZGVmaW5lIE1FTU9QU0laRV9PRihkYXRhc2l6
ZSkgKChkYXRhc2l6ZSA9PSA4IHx8IGRhdGFzaXplID09IDEyOCkgPyBNZW1PcFNpemVfOF9vcl8x
MjggOiAoZGF0YXNpemUgPT0gMTYpID8gTWVtT3BTaXplXzE2IDogKGRhdGFzaXplID09IDMyKSA/
IE1lbU9wU2l6ZV8zMiA6IE1lbU9wU2l6ZV82NCkKICNkZWZpbmUgQ0hFQ0tfREFUQVNJWkUoKSBD
SEVDS19EQVRBU0laRV9PRihkYXRhc2l6ZSkKICNkZWZpbmUgQ0hFQ0tfTUVNT1BTSVpFKCkgQ0hF
Q0tfTUVNT1BTSVpFX09GKGRhdGFzaXplKQpAQCAtMTg3LDcgKzE4Nyw2IEBAIHR5cGVkZWYgZW51
bSA6IGludDhfdCB7CiAKIC8vIEFSTTY0IGFsd2F5cyBoYXMgMzIgRlBVIHJlZ2lzdGVycyAxMjgt
Yml0cyBlYWNoLiBTZWUgaHR0cDovL2xsdm0ub3JnL2Rldm10Zy8yMDEyLTExL05vcnRob3Zlci1B
QXJjaDY0LnBkZgogLy8gYW5kIFNlY3Rpb24gNS4xLjIgaW4gaHR0cDovL2luZm9jZW50ZXIuYXJt
LmNvbS9oZWxwL3RvcGljL2NvbS5hcm0uZG9jLmloaTAwNTViL0lISTAwNTVCX2FhcGNzNjQucGRm
LgotLy8gSG93ZXZlciwgd2Ugb25seSB1c2UgdGhlbSBmb3IgNjQtYml0IGRvdWJsZXMuCiB0eXBl
ZGVmIGVudW0gOiBpbnQ4X3QgewogI2RlZmluZSBSRUdJU1RFUl9JRChpZCwgbmFtZSwgciwgY3Mp
IGlkLAogICAgIEZPUl9FQUNIX0ZQX1JFR0lTVEVSKFJFR0lTVEVSX0lEKQpAQCAtNTIyLDggKzUy
MSw4IEBAIHByb3RlY3RlZDoKICAgICBlbnVtIERhdGFzaXplIHsKICAgICAgICAgRGF0YXNpemVf
MzIsCiAgICAgICAgIERhdGFzaXplXzY0LAotICAgICAgICBEYXRhc2l6ZV82NF90b3AsCi0gICAg
ICAgIERhdGFzaXplXzE2CisgICAgICAgIERhdGFzaXplXzEyOCwKKyAgICAgICAgRGF0YXNpemVf
MTYsCiAgICAgfTsKIAogICAgIGVudW0gTWVtT3BTaXplIHsKQEAgLTE0NzgsNiArMTQ3Nyw0NCBA
QCBwdWJsaWM6CiAgICAgICAgIG1zdWI8ZGF0YXNpemU+KHJkLCBybiwgcm0sIEFSTTY0UmVnaXN0
ZXJzOjp6cik7CiAgICAgfQogCisgICAgdGVtcGxhdGU8aW50IGxhbmVzaXplPgorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBpbnMoRlBSZWdpc3RlcklEIHZkLCB1aW50MzJfdCBsYW5lLCBSZWdpc3Rl
cklEIHJuKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChsYW5lc2l6ZSA9PSA2NCkgewor
ICAgICAgICAgICAgQVNTRVJUKGxhbmUgPCAyKTsKKyAgICAgICAgICAgIGludCBUcyA9IDBiMDEw
MDA7CisgICAgICAgICAgICBpbnQgaW1tNSA9IChsYW5lIDw8IDQpIHwgVHM7CisgICAgICAgICAg
ICBpbnQgaW1tNCA9IDBiMDAxMTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW5zbihzaW1k
RWxlbWVudCgxLCBpbW01LCBpbW00LCBybiwgdmQpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHN0YXRpY19hc3NlcnQobGFuZXNpemUgfHwgIWxhbmVzaXplLCAidGhpcyBsYW5lc2l6
ZSBpcyBub3Qgc3VwcG9ydGVkIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdGVtcGxh
dGU8aW50IGxhbmVzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bW92KFJlZ2lzdGVySUQg
cmQsIEZQUmVnaXN0ZXJJRCB2biwgdWludDMyX3QgbGFuZSkKKyAgICB7CisgICAgICAgIGlmIGNv
bnN0ZXhwciAobGFuZXNpemUgPT0gOCkgeworICAgICAgICAgICAgQVNTRVJUKGxhbmUgPCAxNik7
CisgICAgICAgICAgICBib29sIFEgPSAwOworICAgICAgICAgICAgaW50IFRzID0gMGIwMDAwMTsK
KyAgICAgICAgICAgIGludCBpbW01ID0gKGxhbmUgPDwgMSkgfCBUczsKKyAgICAgICAgICAgIGlu
dCBpbW00ID0gMGIwMTExOworICAgICAgICAgICAgCisgICAgICAgICAgICBpbnNuKHNpbWRFbGVt
ZW50KFEsIGltbTUsIGltbTQsIHZuLCByZCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgc3RhdGljX2Fzc2VydChsYW5lc2l6ZSB8fCAhbGFuZXNpemUsICJ0aGlzIGxhbmVzaXplIGlz
IG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxp
bnQgbGFuZXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHVtb3YoRlBSZWdpc3RlcklEIHJk
LCB1aW50MzJfdCBsYW5lLCBGUFJlZ2lzdGVySUQgcnQpCisgICAgeworICAgICAgICAodm9pZCkg
cmQ7ICh2b2lkKSBydDsgICh2b2lkKSBsYW5lOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBtb3YoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybSkKICAgICB7CkBAIC0y
Mzk3LDE0ICsyNDM0LDE0IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdmFuZChG
UFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdpc3RlcklEIHZtKQogICAgIHsK
ICAgICAgICAgQ0hFQ0tfVkVDVE9SX0RBVEFTSVpFKCk7Ci0gICAgICAgIGluc24odmVjdG9yRGF0
YVByb2Nlc3NpbmdMb2dpY2FsKFNJTURfTG9naWNhbE9wX0FORCwgdm0sIHZuLCB2ZCkpOworICAg
ICAgICBpbnNuKHZlY3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbChkYXRhc2l6ZSwgU0lNRF9Mb2dp
Y2FsT3BfQU5ELCB2bSwgdm4sIHZkKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8aW50IGRhdGFz
aXplPgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB2b3JyKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdp
c3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdm0pCiAgICAgewogICAgICAgICBDSEVDS19WRUNUT1Jf
REFUQVNJWkUoKTsKLSAgICAgICAgaW5zbih2ZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwoU0lN
RF9Mb2dpY2FsT3BfT1JSLCB2bSwgdm4sIHZkKSk7CisgICAgICAgIGluc24odmVjdG9yRGF0YVBy
b2Nlc3NpbmdMb2dpY2FsKGRhdGFzaXplLCBTSU1EX0xvZ2ljYWxPcF9PUlIsIHZtLCB2biwgdmQp
KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CkBAIC0zNTgwLDkgKzM2MTcs
OSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiAoMHgxZTIwMDgwMCB8IE0gPDwgMzEgfCBT
IDw8IDI5IHwgdHlwZSA8PCAyMiB8IHJtIDw8IDE2IHwgb3Bjb2RlIDw8IDEyIHwgcm4gPDwgNSB8
IHJkKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQgdmVjdG9yRGF0YVBy
b2Nlc3NpbmdMb2dpY2FsKFNJTUQzU2FtZUxvZ2ljYWwgdUFuZFNpemUsIEZQUmVnaXN0ZXJJRCB2
bSwgRlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdmQpCisgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgaW50IHZlY3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbChpbnQgZGF0YXNpemUsIFNJTUQz
U2FtZUxvZ2ljYWwgdUFuZFNpemUsIEZQUmVnaXN0ZXJJRCB2bSwgRlBSZWdpc3RlcklEIHZuLCBG
UFJlZ2lzdGVySUQgdmQpCiAgICAgewotICAgICAgICBjb25zdCBpbnQgUSA9IDA7CisgICAgICAg
IGludCBRID0gZGF0YXNpemUgLyAxMjg7CiAgICAgICAgIHJldHVybiAoMHhlMjAwNDAwIHwgUSA8
PCAzMCB8IHVBbmRTaXplIDw8IDIyIHwgdm0gPDwgMTYgfCBTSU1EX0xvZ2ljYWxPcCA8PCAxMSB8
IHZuIDw8IDUgfCB2ZCk7CiAgICAgfQogCkBAIC0zODQ0LDYgKzM4ODEsMTEgQEAgcHJvdGVjdGVk
OgogICAgIHsKICAgICAgICAgcmV0dXJuIDB4MWU3ZTAwMDAgfCAoZG4gPDwgNSkgfCByZDsKICAg
ICB9CisgICAgCisgICAgc3RhdGljIGludCBzaW1kRWxlbWVudChib29sIFEsIGludCBpbW01LCBp
bnQgaW1tNCwgaW50IHJuLCBpbnQgcmQpCisgICAgeworICAgICAgICByZXR1cm4gMGIwJzAnMCcw
MTExMDAwMCcwMDAwMCcwJzAwJzEnMScxJzAwMDAwJzAwMDAwIHwgKFEgPDwgMzApIHwgKGltbTUg
PDwgMTYpIHwgKGltbTQgPDwgMTEpIHwgKHJuIDw8IDUpIHwgcmQ7CisgICAgfQogCiAgICAgVmVj
dG9yPExpbmtSZWNvcmQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2p1bXBzVG9MaW5rOwog
ICAgIGludCBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggMWMxNWYyZmU0
MDYxLi5kNjQwNzNjMGMwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQVJNNjRBc3NlbWJsZXIuaCIKICNpbmNsdWRlICJBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgi
CiAjaW5jbHVkZSAiSklUT3BlcmF0aW9uVmFsaWRhdGlvbi5oIgorI2luY2x1ZGUgIlNpbWRJbmZv
LmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0y
NDQzLDYgKzI0NDQsMzUgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuZmRp
djwzMj4oZGVzdCwgb3AxLCBvcDIpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRWZWN0b3Io
QWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmICh0
cnlMb2FkV2l0aE9mZnNldDwxMjg+KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0
ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRyPDEyOD4oZGVzdCwgYWRkcmVz
cy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZvaWQgbG9hZFZlY3Rv
cihCYXNlSW5kZXggYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBp
ZiAoYWRkcmVzcy5zY2FsZSA9PSBUaW1lc09uZSB8fCBhZGRyZXNzLnNjYWxlID09IFRpbWVzRWln
aHQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGJhc2VHUFIgPSB0cnlGb2xkQmFzZUFuZE9mZnNl
dFBhcnQoYWRkcmVzcykpIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHI8MTI4Pihk
ZXN0LCBiYXNlR1BSLnZhbHVlKCksIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRy
ZXNzKSwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMy
KGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8MTI4PihtZW1vcnlUZW1wUmVnaXN0ZXIs
IG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJl
c3MpLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRyPDEyOD4oZGVzdCwg
YWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRWZWN0b3IoVHJ1c3RlZEltbVB0ciBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1vdmVUb0NhY2hlZFJlZyhhZGRyZXNzLCBjYWNoZWRNZW1vcnlUZW1wUmVn
aXN0ZXIoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwxMjg+KGRlc3QsIG1lbW9yeVRlbXBS
ZWdpc3RlciwgQVJNNjRSZWdpc3RlcnM6OnpyKTsKKyAgICB9CiAKICAgICB2b2lkIGxvYWREb3Vi
bGUoQWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC0yNTA2LDYg
KzI1MzYsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuZm1vdjw2ND4o
ZGVzdCwgc3JjKTsKICAgICB9CisgICAgCisgICAgdm9pZCBtb3ZlVmVjdG9yKEZQUmVnaXN0ZXJJ
RCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudm9y
cjwxMjg+KGRlc3QsIHNyYywgc3JjKTsKKyAgICB9CiAKICAgICB2b2lkIG1vdmVaZXJvVG9Eb3Vi
bGUoRlBSZWdpc3RlcklEIHJlZykKICAgICB7CkBAIC0yNzk3LDYgKzI4MzIsMzUgQEAgcHVibGlj
OgogICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFk
ZHJlc3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MzI+KHNyYywgYWRkcmVzcy5i
YXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlVmVj
dG9yKEZQUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlm
ICh0cnlTdG9yZVdpdGhPZmZzZXQ8MTI4PihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZz
ZXQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRy
dXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDEyOD4oc3JjLCBhZGRy
ZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgfQorCisgICAgdm9pZCBzdG9yZVZl
Y3RvcihGUFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tUHRyIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtb3ZlVG9DYWNoZWRSZWcoYWRkcmVzcywgY2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVyKCkp
OworICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MTI4PihzcmMsIG1lbW9yeVRlbXBSZWdpc3Rlciwg
QVJNNjRSZWdpc3RlcnM6OnpyKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlVmVjdG9yKEZQUmVn
aXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKGFkZHJl
c3Muc2NhbGUgPT0gVGltZXNPbmUgfHwgYWRkcmVzcy5zY2FsZSA9PSBUaW1lc0VpZ2h0KSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byBiYXNlR1BSID0gdHJ5Rm9sZEJhc2VBbmRPZmZzZXRQYXJ0KGFk
ZHJlc3MpKSB7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDEyOD4oc3JjLCBiYXNl
R1BSLnZhbHVlKCksIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRk
cmVzcy5zY2FsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mu
b2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8MTI4PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRl
bXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDEyOD4oc3JjLCBhZGRyZXNzLmJh
c2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgfQogCiAgICAgdm9pZCBzdWJEb3VibGUoRlBS
ZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpAQCAtNDU2MSw2ICs0NjI1
LDE2IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEZBU1RfVExTX0pJVCkKICAg
ICAKKyAgICB2b2lkIHJlcGxhY2VMYW5lKFNpbWRMYW5lSW50ZXJwcmV0YXRpb24sIFNpbWRTaWdu
RXh0ZW5kTW9kZSwgVHJ1c3RlZEltbTMyIGxhbmUsIFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmluczw2ND4oZGVzdCwgbGFuZS5t
X3ZhbHVlLCBzcmMpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGV4dHJhY3RMYW5lKFNpbWRMYW5l
SW50ZXJwcmV0YXRpb24sIFNpbWRTaWduRXh0ZW5kTW9kZSwgVHJ1c3RlZEltbTMyIGxhbmUsIEZQ
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnVtb3Y8OD4oZGVzdCwgc3JjLCBsYW5lLm1fdmFsdWUpOworICAgIH0KKyAgICAKICAgICAv
LyBNaXNjIGhlbHBlciBmdW5jdGlvbnMuCiAKICAgICAvLyBJbnZlcnQgYSByZWxhdGlvbmFsIGNv
bmRpdGlvbiwgZS5nLiA9PSBiZWNvbWVzICE9LCA8IGJlY29tZXMgPj0sIGV0Yy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aAppbmRleCAwNDVkZWZlZGIxNTQuLjk0YmQ0Njc1ZDY2YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShBU1NFTUJMRVIpICYmIENQVShYODZfNjQpCiAKICNpbmNs
dWRlICJNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIgorI2luY2x1ZGUgIlNpbWRJbmZvLmgiCiAK
ICNkZWZpbmUgUkVQQVRDSF9PRkZTRVRfQ0FMTF9SMTEgMwogCkBAIC0xMDQ3LDYgKzEwNDgsMzcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9ycihzcmMsIGRlc3Qp
OwogICAgIH0KKyAgICAKKyAgICB2b2lkIG1vdmVWZWN0b3IoRlBSZWdpc3RlcklEIHNyYywgRlBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZhcHNfcnIoc3Jj
LCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkVmVjdG9yKFRydXN0ZWRJbW1QdHIg
YWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKGFkZHJlc3Ms
IHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgbG9hZFZlY3RvcihBZGRyZXNzKHNjcmF0Y2hS
ZWdpc3RlcigpKSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBsb2FkVmVjdG9yKEFkZHJlc3Mg
YWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci52
bW92dXBzX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOworICAgIH0KKwor
ICAgIHZvaWQgbG9hZFZlY3RvcihCYXNlSW5kZXggYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci52bW92dXBzX21yKGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUsIGRlc3QpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlVmVjdG9yKEZQUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3Z1cHNfcm0oc3JjLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVZlY3Rv
cihGUFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLnZtb3Z1cHNfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CiAKICAgICB2b2lkIGNvbXBhcmU2
NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMy
IHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpAQCAtMTk3NCw2ICsyMDA2LDE2IEBAIHB1
YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkc3NfcnIoZGVzdCwgZGVzdCk7CiAgICAgICAg
IG1fYXNzZW1ibGVyLmxpbmtKdW1wKGRvbmUsIG1fYXNzZW1ibGVyLmxhYmVsKCkpOwogICAgIH0K
KyAgICAKKyAgICB2b2lkIHJlcGxhY2VMYW5lKFNpbWRMYW5lSW50ZXJwcmV0YXRpb24sIFNpbWRT
aWduRXh0ZW5kTW9kZSwgVHJ1c3RlZEltbTMyIGxhbmUsIFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnBpbnNyPDY0PihkZXN0LCBs
YW5lLm1fdmFsdWUsIHNyYyk7CisgICAgfQorICAgIAorICAgIHZvaWQgZXh0cmFjdExhbmUoU2lt
ZExhbmVJbnRlcnByZXRhdGlvbiwgU2ltZFNpZ25FeHRlbmRNb2RlLCBUcnVzdGVkSW1tMzIgbGFu
ZSwgRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIucGV4dHI8OD4oZGVzdCwgc3JjLCBsYW5lLm1fdmFsdWUpOworICAgIH0KIAogICAg
IHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludCgpIHsgcmV0dXJuIHRydWU7IH0KICAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVuY2F0ZSgpIHsgcmV0dXJuIHRy
dWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5o
CmluZGV4IDk1MDNiOTliYWEyOS4uY2Q2ZGZhMWE0ZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTMxOSw2ICszMTksMTAgQEAgcHJp
dmF0ZToKICAgICAgICAgT1AzX0xGRU5DRSAgICAgICAgICAgPSAweEU4LAogICAgICAgICBPUDNf
TUZFTkNFICAgICAgICAgICA9IDB4RjAsCiAgICAgICAgIE9QM19TRkVOQ0UgICAgICAgICAgID0g
MHhGOCwKKyAgICAgICAgT1AzX1BFWFRSQiAgICAgICAgICAgPSAweDE0LAorICAgICAgICBPUDNf
UEVYVFJEICAgICAgICAgICA9IDB4MTYsCisgICAgICAgIE9QM19QSU5TUkIgICAgICAgICAgID0g
MHgyMCwKKyAgICAgICAgT1AzX1BJTlNSRCAgICAgICAgICAgPSAweDIyLAogICAgIH0gVGhyZWVC
eXRlT3Bjb2RlSUQ7CiAKICAgICBzdHJ1Y3QgVmV4UHJlZml4IHsKQEAgLTIzNjAsNiArMjM2NCwz
MiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZH
diwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQogI2VuZGlmCisgICAg
CisgICAgdGVtcGxhdGU8aW50IGxhbmVzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwaW5z
cihYTU1SZWdpc3RlcklEIHZkLCB1aW50MzJfdCBsYW5lLCBSZWdpc3RlcklEIHJuKQorICAgIHsK
KyAgICAgICAgaWYgY29uc3RleHByIChsYW5lc2l6ZSA9PSA2NCkgeworICAgICAgICAgICAgQVNT
RVJUKGxhbmUgPCAyKTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFO
RF9TSVpFKTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLnRocmVlQnl0ZU9wNjQoT1AyXzNCWVRF
X0VTQ0FQRV8zQSwgT1AzX1BJTlNSRCwgKFJlZ2lzdGVySUQpIHZkLCBybik7CisgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KCh1aW50OF90KSBsYW5lKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQobGFuZXNpemUgfHwgIWxhbmVzaXplLCAidGhp
cyBsYW5lc2l6ZSBpcyBub3Qgc3VwcG9ydGVkIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8aW50IGxhbmVzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwZXh0cihS
ZWdpc3RlcklEIHJkLCBYTU1SZWdpc3RlcklEIHZuLCB1aW50MzJfdCBsYW5lKQorICAgIHsKKyAg
ICAgICAgaWYgY29uc3RleHByIChsYW5lc2l6ZSA9PSA4KSB7CisgICAgICAgICAgICBBU1NFUlQo
bGFuZSA8IDE2KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9T
SVpFKTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLnRocmVlQnl0ZU9wNjQoT1AyXzNCWVRFX0VT
Q0FQRV8zQSwgT1AzX1BFWFRSQiwgKFJlZ2lzdGVySUQpIHZuLCByZCk7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGU4KCh1aW50OF90KSBsYW5lKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQobGFuZXNpemUgfHwgIWxhbmVzaXplLCAidGhpcyBs
YW5lc2l6ZSBpcyBub3Qgc3VwcG9ydGVkIik7CisgICAgICAgIH0KKyAgICB9CiAKICAgICB2b2lk
IG1vdmxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTMxODEs
NiArMzIxMSwyNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3AoT1AyX01PVkFQU19WcGRXcGQsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpc3JjKTsK
ICAgICB9CisgICAgCisgICAgdm9pZCB2bW92dXBzX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci52ZXhX
aWdUd29CeXRlT3AoT1BfMkJZVEVfRVNDQVBFLCBPUDJfTU9WU0RfVnNkV3NkLCAoUmVnaXN0ZXJJ
RClkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgdm1vdnVwc19tcihp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwg
WE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci52ZXhXaWdUd29C
eXRlT3AoT1BfMkJZVEVfRVNDQVBFLCBPUDJfTU9WU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3Qs
IG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCB2bW92
dXBzX3JtKFhNTVJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci52ZXhXaWdUd29CeXRlT3AoT1BfMkJZVEVfRVNDQVBF
LCBPUDJfTU9WU0RfV3NkVnNkLCAoUmVnaXN0ZXJJRClzcmMsIGJhc2UsIG9mZnNldCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgdm1vdnVwc19ybShYTU1SZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci52ZXhXaWdUd29CeXRlT3AoT1BfMkJZVEVfRVNDQVBFLCBPUDJf
TU9WU0RfV3NkVnNkLCAoUmVnaXN0ZXJJRClzcmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxl
KTsKKyAgICB9CiAKICAgICB2b2lkIG1vdnNkX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdp
c3RlcklEIGRzdCkKICAgICB7CkBAIC00MzI4LDkgKzQzNzgsOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGNhc2UgMHhGMjoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDM7CiAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgIH07CkBAIC00NDU4LDYgKzQ1MDcsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRl
ci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CiAgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9k
Uk1BZGRyKHJlZywgYWRkcmVzcyk7CiAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgdm9pZCB2ZXhXaWdUd29CeXRlT3AoT25lQnl0ZU9wY29kZUlEIHNpbWRQcmVmaXgsIFR3b0J5
dGVPcGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQg
b2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldy
aXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLnRocmVlQnl0ZXNWZXhO
ZHMoc2ltZFByZWZpeCwgVmV4SW1wbGllZEJ5dGVzOjpUd29CeXRlc09wLCBkZXN0LCAoUmVnaXN0
ZXJJRCkgMCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNv
ZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKGRlc3QsIGJhc2UsIG9mZnNldCk7
CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgdm9pZCB2ZXhXaWdUd29CeXRl
T3AoT25lQnl0ZU9wY29kZUlEIHNpbWRQcmVmaXgsIFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIFJl
Z2lzdGVySUQgZGVzdCwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9u
QnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIudGhyZWVC
eXRlc1ZleE5kcyhzaW1kUHJlZml4LCBWZXhJbXBsaWVkQnl0ZXM6OlR3b0J5dGVzT3AsIGRlc3Qs
IChSZWdpc3RlcklEKSAwLCBpbmRleCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0
ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKGRlc3Qs
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgfQogCiAgICAgICAgIHZvaWQg
dmV4TmRzTGlnV2lnVHdvQnl0ZU9wKE9uZUJ5dGVPcGNvZGVJRCBzaW1kUHJlZml4LCBUd29CeXRl
T3Bjb2RlSUQgb3Bjb2RlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgYSwgUmVnaXN0ZXJJ
RCBiKQogICAgICAgICB7CkBAIC00NjMxLDYgKzQ2OTYsMTYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CiAgICAgICAgICAgICB3cml0ZXIu
bWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgdm9pZCB0aHJlZUJ5dGVPcDY0KFR3b0J5dGVPcGNv
ZGVJRCB0d29CeXRlUHJlZml4LCBUaHJlZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJl
Z2lzdGVySUQgcm0pCisgICAgICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVm
ZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleCh0
cnVlLCByZWcsIDAsIHJtKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9Q
XzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZCh0d29C
eXRlUHJlZml4KTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7
CisgICAgICAgICAgICB3cml0ZXIucmVnaXN0ZXJNb2RSTShyZWcsIHJtKTsKKyAgICAgICAgfQog
I2VuZGlmCiAKICAgICAgICAgLy8gQnl0ZS1vcGVyYW5kczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAppbmRleCAxZGU1YjVkZmQyZDUuLjIzMzc5ZTdh
YzI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJndW1lbnRSZWdW
YWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUu
aApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBPcGNvZGUgb3Bjb2RlRnJv
bUNvbnN0cnVjdG9yKE9yaWdpbiwgUmVnKSB7IHJldHVybiBBcmd1bWVudFJlZzsgfQogCiAgICAg
QXJndW1lbnRSZWdWYWx1ZShPcmlnaW4gb3JpZ2luLCBSZWcgcmVnKQotICAgICAgICA6IFZhbHVl
KENoZWNrZWRPcGNvZGUsIEFyZ3VtZW50UmVnLCByZWcuaXNHUFIoKSA/IHBvaW50ZXJUeXBlKCkg
OiBEb3VibGUsIFplcm8sIG9yaWdpbikKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBB
cmd1bWVudFJlZywgcmVnLmlzR1BSKCkgPyBwb2ludGVyVHlwZSgpIDogVjEyOCwgWmVybywgb3Jp
Z2luKQogICAgICAgICAsIG1fcmVnKHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcuaXNT
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYW5rLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0JhbmsuY3BwCmluZGV4IDZkZDM2NmMxZjVjZS4u
NzM1Mjc4MWE5Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYW5r
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYW5rLmNwcApAQCAtMjYsOCAr
MjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkIzQmFuay5oIgogCi0jaWYg
RU5BQkxFKEIzX0pJVCkKLQogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3Bh
Y2UgV1RGIHsKQEAgLTQ3LDUgKzQ1LDMgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIEpTQzo6QjM6OkJhbmsgYmFuaykKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNl
bmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQmFuay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFuay5oCmluZGV4IDVi
ZWJmMjZhYzRjNy4uYTZmZTM5ODQ1NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNCYW5rLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFuay5oCkBA
IC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQog
I2luY2x1ZGUgIkIzVHlwZS5oIgogI2luY2x1ZGUgIlJlZy5oIgogCkBAIC00Niw2ICs0NCwxMiBA
QCB2b2lkIGZvckVhY2hCYW5rKGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgZnVuYyhGUCk7CiB9CiAK
K2lubGluZSBCYW5rIGJhbmtGb3JSZWcoUmVnIHJlZykKK3sKKyAgICByZXR1cm4gcmVnLmlzR1BS
KCkgPyBHUCA6IEZQOworfQorCisjaWYgRU5BQkxFKEIzX0pJVCkKIGlubGluZSBCYW5rIGJhbmtG
b3JUeXBlKFR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUua2luZCgpKSB7CkBAIC01OCwx
NiArNjIsMTMgQEAgaW5saW5lIEJhbmsgYmFua0ZvclR5cGUoVHlwZSB0eXBlKQogICAgICAgICBy
ZXR1cm4gR1A7CiAgICAgY2FzZSBGbG9hdDoKICAgICBjYXNlIERvdWJsZToKKyAgICBjYXNlIFYx
Mjg6CiAgICAgICAgIHJldHVybiBGUDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIEdQOwogfQotCi1pbmxpbmUgQmFuayBiYW5rRm9yUmVnKFJlZyByZWcpCi17
Ci0gICAgcmV0dXJuIHJlZy5pc0dQUigpID8gR1AgOiBGUDsKLX0KKyNlbmRpZiAvLyBFTkFCTEUo
QjNfSklUKQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIApAQCAtNzksNSArODAsMyBAQCB2
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkIzOjpCYW5rKTsKIAogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDEyOFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NvbnN0MTI4VmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uYTBlNmNmZjM2MTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QxMjhWYWx1ZS5jcHAKQEAgLTAsMCArMSw0NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJCM0NvbnN0MTI4VmFsdWUuaCIKKworI2lmIEVOQUJMRShCM19K
SVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitDb25zdDEyOFZhbHVlOjp+
Q29uc3QxMjhWYWx1ZSgpCit7Cit9CisKK3ZvaWQgQ29uc3QxMjhWYWx1ZTo6ZHVtcE1ldGEoQ29t
bWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJp
bnQoY29tbWEsIG1fdmFsdWUudTY0eDJbMF0sIGNvbW1hLCBtX3ZhbHVlLnU2NHgyWzFdKTsKK30K
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QxMjhWYWx1ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QxMjhWYWx1ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2JlZWVmODlmMzc4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QxMjhWYWx1ZS5oCkBAIC0wLDAgKzEs
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM1ZhbHVlLmgiCisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFU
RSBDb25zdDEyOFZhbHVlIDogcHVibGljIFZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9v
bCBhY2NlcHRzKEtpbmQga2luZCkgeyByZXR1cm4ga2luZCA9PSBDb25zdDEyODsgfQorICAgIAor
ICAgIH5Db25zdDEyOFZhbHVlKCkgb3ZlcnJpZGU7CisgICAgCisgICAgdjEyOF90IHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgQjNfU1BFQ0lBTElaRV9WQUxVRV9GT1Jf
Tk9fQ0hJTERSRU4KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVy
JiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKworICAgIENvbnN0MTI4VmFsdWUoT3Jp
Z2luIG9yaWdpbiwgdjEyOF90IHZhbHVlKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUs
IENvbnN0MTI4LCBWMTI4LCBaZXJvLCBvcmlnaW4pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkK
KyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBPcGNvZGUgb3Bjb2RlRnJvbUNv
bnN0cnVjdG9yKE9yaWdpbiwgdjEyOF90KSB7IHJldHVybiBDb25zdDEyODsgfQorICAgIGZyaWVu
ZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgZnJpZW5kIGNsYXNzIFZhbHVlOworCisgICAgdjEyOF90
IG1fdmFsdWU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVO
QUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmlu
ZGV4IGQ0MjJjMzgwMmZhNi4uMjk1MjlhOGQ1YjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMTE4OSw2ICsxMTg5LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICByZXR1cm4gTW92ZURvdWJsZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC0x
ODU1LDYgKzE4NTcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxl
ZnQuY29uc3VtZSgqdGhpcyksIHJpZ2h0LmNvbnN1bWUoKnRoaXMpKSk7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEluc3QoKTsKKyAgICAgICAgICAg
ICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICB9LApAQCAtMTg4NSw2ICsxODg5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsZWZ0LmNvbnN1bWUoKnRoaXMpLCByaWdodC5jb25zdW1lKCp0aGlzKSkpOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJbnN0KCk7
CisgICAgICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgfSwKQEAgLTE5MzMsNiArMTkzOSw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGVmdC5jb25zdW1lKCp0aGlzKSwgcmlnaHQuY29uc3Vt
ZSgqdGhpcyksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBJbnN0KCk7CisgICAgICAgICAgICAgICAgY2FzZSBXaWR0aDEy
ODoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgfSwKQEAgLTE5NTcs
NiArMTk2NSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdC5j
b25zdW1lKCp0aGlzKSwgcmlnaHQuY29uc3VtZSgqdGhpcyksIHRtcChtX3ZhbHVlKSkpOwogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJbnN0KCk7Cisg
ICAgICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgfSwKQEAgLTIwMjQsNiArMjAzNCw4IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RJbnN0cnVjdGlvbihjb25maWcubW92ZUNv
bmRpdGlvbmFsbHkzMiwgcmVsQ29uZCwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgICAgIGNh
c2UgV2lkdGg2NDoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVNlbGVjdEluc3Ry
dWN0aW9uKGNvbmZpZy5tb3ZlQ29uZGl0aW9uYWxseTY0LCByZWxDb25kLCBsZWZ0LCByaWdodCk7
CisgICAgICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgfSwKQEAgLTIwMzksNiArMjA1MSw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RJbnN0cnVjdGlvbihjb25maWcubW92
ZUNvbmRpdGlvbmFsbHlUZXN0MzIsIHJlc0NvbmQsIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAg
ICAgICBjYXNlIFdpZHRoNjQ6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTZWxl
Y3RJbnN0cnVjdGlvbihjb25maWcubW92ZUNvbmRpdGlvbmFsbHlUZXN0NjQsIHJlc0NvbmQsIGxl
ZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9LApAQCAtMjMxNCw2ICsyMzI4LDkgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFdpZHRoMzI6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBXaWR0aDY0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIFdpZHRoMTI4OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21p
Yy0+YWNjZXNzVHlwZSgpKSwgZXhwZWN0ZWRWYWx1ZVRtcCwgdmFsdWVSZXN1bHRUbXApOwpAQCAt
MjMzMCw2ICsyMzQ3LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6
CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRyYXBwaW5nKEFpcjo6QnJhbmNoNjQsIEFyZzo6
cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpLCB2YWx1ZVJlc3VsdFRtcCwgZXhwZWN0ZWRW
YWx1ZVRtcCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgV2lkdGgxMjg6CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+c2V0U3VjY2Vzc29ycyhzdWNj
ZXNzLCBmYWlsdXJlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDg4LDYgKzI1MDgs
OSBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgogICAgICAgICAgICAgICAg
IHByZXBhcmVPcGNvZGUgPSBNb3ZlOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKQEAgLTM1ODMs
NiArMzYwNiwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYXBwZW5kKEFkZDY0LCBBcmcoYWRk
cmVzcy0+cGlubmVkR1BSKCkpLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCB0bXAoYWRkcmVzcykp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgQjM6OkV4dHJhY3RMYW5lOiB7CisgICAgICAgICAgICBTaW1kVmFsdWUqIHNpbWQg
PSBtX3ZhbHVlLT5hczxTaW1kVmFsdWU+KCk7CisgICAgICAgICAgICBhdXRvIGxhbmVJbmZvID0g
QXJnOjpzaW1kSW5mbyhzaW1kLT5sYW5lSW50ZXJwcmV0YXRpb24oKSwgc2ltZC0+c2lnbkV4dGVu
ZE1vZGUoKSk7CisgICAgICAgICAgICBhcHBlbmQoQWlyOjpFeHRyYWN0TGFuZSwgbGFuZUluZm8s
IEFyZzo6aW1tKHNpbWQtPmltbWVkaWF0ZSgwKSksIHRtcChzaW1kLT5jaGlsZCgwKSksIHRtcChz
aW1kKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBjYXNlIEZl
bmNlOiB7CiAgICAgICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1fdmFsdWUtPmFzPEZlbmNl
VmFsdWU+KCk7CkBAIC0zNjY2LDEyICszNjk2LDI1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBh
cHBlbmQoTW92ZVplcm9Ub0RvdWJsZSwgdG1wKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICBjYXNlIENvbnN0MTI4OiB7
CisgICAgICAgICAgICBhdXRvIGxhbmVJbmZvID0gQXJnOjpzaW1kSW5mbyhTaW1kTGFuZUludGVy
cHJldGF0aW9uOjppNjR4MiwgU2ltZFNpZ25FeHRlbmRNb2RlOjpOQSk7CisgICAgICAgICAgICBh
dXRvIHZhbHVlID0gbV92YWx1ZS0+YXM8Q29uc3QxMjhWYWx1ZT4oKS0+dmFsdWUoKTsKKyAgICAg
ICAgICAgIGF1dG8gYSA9IHRtcEZvclR5cGUoSW50NjQpOworICAgICAgICAgICAgYXV0byByZXN1
bHQgPSB0bXAobV92YWx1ZSk7CisgICAgICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjpiaWdJbW0o
dmFsdWUudTY0eDJbMF0pLCBhKTsKKyAgICAgICAgICAgIGFwcGVuZChSZXBsYWNlTGFuZSwgbGFu
ZUluZm8sIEFyZzo6aW1tKDApLCBhLCByZXN1bHQpOworICAgICAgICAgICAgYXBwZW5kKE1vdmUs
IEFyZzo6YmlnSW1tKHZhbHVlLnU2NHgyWzFdKSwgYSk7CisgICAgICAgICAgICBhcHBlbmQoUmVw
bGFjZUxhbmUsIGxhbmVJbmZvLCBBcmc6OmltbSgxKSwgYSwgcmVzdWx0KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQm90dG9tVHVwbGU6IHsKICAgICAg
ICAgICAgIGZvckVhY2hJbW1PclRtcChtX3ZhbHVlLCBbJl0gKEFyZyB0bXAsIFR5cGUgdHlwZSwg
dW5zaWduZWQpIHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUua2luZCgpKSB7CiAgICAg
ICAgICAgICAgICAgY2FzZSBWb2lkOgogICAgICAgICAgICAgICAgIGNhc2UgVHVwbGU6CisgICAg
ICAgICAgICAgICAgY2FzZSBWMTI4OgogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICBjYXNlIEludDMyOgpAQCAtNDI1NSw2ICs0Mjk4LDExIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgYXBwZW5kKE1vdmVEb3VibGUsIHRtcCh2YWx1ZSksIHJldHVyblZhbHVlRlBSKTsK
ICAgICAgICAgICAgICAgICBhcHBlbmQoUmV0RG91YmxlLCByZXR1cm5WYWx1ZUZQUik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFYxMjg6IC8vIFRPRE8KKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAg
IGFwcGVuZChNb3ZlRG91YmxlLCB0bXAodmFsdWUpLCByZXR1cm5WYWx1ZUZQUik7CisgICAgICAg
ICAgICAgICAgYXBwZW5kKFJldERvdWJsZSwgcmV0dXJuVmFsdWVGUFIpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKaW5kZXggYWU1OWM2
MDk1M2EzLi5jYmE4NDU4NTFiYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM01lbW9yeVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1v
cnlWYWx1ZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgQmFuayBNZW1vcnlWYWx1ZTo6YWNjZXNzQmFu
aygpIGNvbnN0CiAKIHNpemVfdCBNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0ZVNpemUoKSBjb25zdAog
ewotICAgIHJldHVybiBieXRlcyhhY2Nlc3NXaWR0aCgpKTsKKyAgICByZXR1cm4gYnl0ZXNGb3JX
aWR0aChhY2Nlc3NXaWR0aCgpKTsKIH0KIAogdm9pZCBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoQ29t
bWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNPcGNvZGUuY3BwCmluZGV4IDEzMTk1NmU1MGI3OS4uMzQwMWJjNjYwZjhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKQEAgLTEyMCw2ICsxMjAsOSBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgT3Bjb2RlIG9wY29kZSkKICAgICBjYXNl
IENvbnN0RmxvYXQ6CiAgICAgICAgIG91dC5wcmludCgiQ29uc3RGbG9hdCIpOwogICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBDb25zdDEyODoKKyAgICAgICAgb3V0LnByaW50KCJDb25zdDEyOCIp
OworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBCb3R0b21UdXBsZToKICAgICAgICAgb3V0LnBy
aW50KCJCb3R0b21UdXBsZSIpOwogICAgICAgICByZXR1cm47CkBAIC0zNjMsNiArMzY2LDkgQEAg
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE9wY29kZSBvcGNvZGUpCiAgICAg
Y2FzZSBKdW1wOgogICAgICAgICBvdXQucHJpbnQoIkp1bXAiKTsKICAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgRXh0cmFjdExhbmU6CisgICAgICAgIG91dC5wcmludCgiRXh0cmFjdExhbmUiKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQnJhbmNoOgogICAgICAgICBvdXQucHJpbnQoIkJy
YW5jaCIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNPcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCmlu
ZGV4IDY1YTdkYTNiMGFhMi4uZTBlODQyM2Y3NDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNPcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNP
cGNvZGUuaApAQCAtNTQsNiArNTQsNyBAQCBlbnVtIE9wY29kZSA6IHVpbnQ4X3QgewogICAgIENv
bnN0NjQsCiAgICAgQ29uc3REb3VibGUsCiAgICAgQ29uc3RGbG9hdCwKKyAgICBDb25zdDEyOCwK
IAogICAgIC8vIFR1cGxlIGZpbGxlZCB3aXRoIHplcm9zLiBUaGlzIGFwcGVhcnMgd2hlbiBUdXBs
ZSBQYXRjaHBvaW50cyBhcmUgcmVwbGFjZWQgd2l0aCBCb3R0b20gdmFsdWVzLgogICAgIEJvdHRv
bVR1cGxlLApAQCAtMzQyLDYgKzM0Myw5IEBAIGVudW0gT3Bjb2RlIDogdWludDhfdCB7CiAgICAg
Ly8gV2l0aG91dCBzb21lIHN1Y2ggbm9kZSBCMyB3b3VsZCBub3QgaGF2ZSBlbm91Z2ggaW5mb3Jt
YXRpb24gYWJvdXQgdGhlIGlubmVyIHdvcmtpbmdzIG9mIHdhc20KICAgICAvLyB0byBiZSBhYmxl
IHRvIHBlcmZvcm0gc3VjaCBvcHRpbWl6YXRpb25zLgogICAgIFdhc21Cb3VuZHNDaGVjaywKKyAg
ICAKKyAgICAvLyBTaW1kIGluc3RydWN0aW9ucworICAgIEV4dHJhY3RMYW5lLAogCiAgICAgLy8g
U1NBIHN1cHBvcnQsIGluIHRoZSBzdHlsZSBvZiBERkcgU1NBLgogICAgIFVwc2lsb24sIC8vIFRo
aXMgdXNlcyB0aGUgVXBzaWxvblZhbHVlIGNsYXNzLgpAQCAtMzk4LDYgKzQwMiw3IEBAIGlubGlu
ZSBib29sIGlzQ29uc3RhbnQoT3Bjb2RlIG9wY29kZSkKICAgICBjYXNlIENvbnN0NjQ6CiAgICAg
Y2FzZSBDb25zdERvdWJsZToKICAgICBjYXNlIENvbnN0RmxvYXQ6CisgICAgY2FzZSBDb25zdDEy
ODoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNDExLDYgKzQxNiw3IEBAIGlubGluZSBPcGNvZGUgb3Bjb2RlRm9yQ29uc3RhbnQo
VHlwZSB0eXBlKQogICAgIGNhc2UgSW50NjQ6IHJldHVybiBDb25zdDY0OwogICAgIGNhc2UgRmxv
YXQ6IHJldHVybiBDb25zdEZsb2F0OwogICAgIGNhc2UgRG91YmxlOiByZXR1cm4gQ29uc3REb3Vi
bGU7CisgICAgY2FzZSBWMTI4OiByZXR1cm4gQ29uc3QxMjg7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUHJvY2VkdXJlLmNwcAppbmRleCAxZTE0YWU4M2UzMGIuLjc4ZDc0YjM2NDFlYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCkBAIC0xNDQsNiArMTQ0
LDEyIEBAIFZhbHVlKiBQcm9jZWR1cmU6OmFkZENvbnN0YW50KE9yaWdpbiBvcmlnaW4sIFR5cGUg
dHlwZSwgdWludDY0X3QgYml0cykKICAgICAgICAgcmV0dXJuIGFkZDxDb25zdEZsb2F0VmFsdWU+
KG9yaWdpbiwgYml0d2lzZV9jYXN0PGZsb2F0PihzdGF0aWNfY2FzdDxpbnQzMl90PihiaXRzKSkp
OwogICAgIGNhc2UgRG91YmxlOgogICAgICAgICByZXR1cm4gYWRkPENvbnN0RG91YmxlVmFsdWU+
KG9yaWdpbiwgYml0d2lzZV9jYXN0PGRvdWJsZT4oYml0cykpOworICAgIGNhc2UgVjEyODogewor
ICAgICAgICB2MTI4X3QgY29uc3RhbnQ7CisgICAgICAgIGNvbnN0YW50LnU2NHgyWzBdID0gYml0
czsKKyAgICAgICAgY29uc3RhbnQudTY0eDJbMV0gPSBiaXRzOworICAgICAgICByZXR1cm4gYWRk
PENvbnN0MTI4VmFsdWU+KG9yaWdpbiwgY29uc3RhbnQpOworICAgIH0KICAgICBkZWZhdWx0Ogog
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NpbWRWYWx1ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTaW1kVmFsdWUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTBlOGRkNTc2NjViCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU2ltZFZhbHVlLmNwcApAQCAtMCwwICsx
LDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIzU2ltZFZhbHVlLmgiCisKKyNpZiBFTkFCTEUo
QjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworU2ltZFZhbHVlOjp+
U2ltZFZhbHVlKCkKK3sKK30KKwordm9pZCBTaW1kVmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRl
ciYsIFByaW50U3RyZWFtJikgY29uc3QKK3sKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIz
CisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzU2ltZFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTaW1k
VmFsdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM4OTIxNTNl
YmI4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NpbWRW
YWx1ZS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNs
dWRlICJCM1ZhbHVlLmgiCisjaW5jbHVkZSAiU2ltZEluZm8uaCIKKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNpbWRWYWx1ZSA6IHB1
YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQp
CisgICAgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBF
eHRyYWN0TGFuZToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIH5T
aW1kVmFsdWUoKSBvdmVycmlkZTsKKyAgICAKKyAgICBTaW1kTGFuZUludGVycHJldGF0aW9uIGxh
bmVJbnRlcnByZXRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZUludGVycHJldGF0aW9uOyB9
CisgICAgU2ltZFNpZ25FeHRlbmRNb2RlIHNpZ25FeHRlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9zaWduTW9kZTsgfQorICAgIHVpbnQ4X3QgaW1tZWRpYXRlKHNpemVfdCBpKSBjb25zdCB7IHJl
dHVybiBpbW1zW2ldOyB9CisKKyAgICBCM19TUEVDSUFMSVpFX1ZBTFVFX0ZPUl9GSU5BTF9TSVpF
X0ZJWEVEX0NISUxEUkVOCisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJp
bnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudHM+CisgICAgU2ltZFZhbHVlKE9yaWdpbiBvcmlnaW4sIEtpbmQga2lu
ZCwgVHlwZSB0eXBlLCB1aW50OF90IG51bUNoaWxkcmVuLCBTaW1kTGFuZUludGVycHJldGF0aW9u
IGxhbmVJbnRlcnByZXRhdGlvbiwgU2ltZFNpZ25FeHRlbmRNb2RlIHNpZ25Nb2RlLCBBcmd1bWVu
dHMuLi4gYXJndW1lbnRzKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5
cGUsIChOdW1DaGlsZHJlbikobnVtQ2hpbGRyZW4pLCBvcmlnaW4sIGFyZ3VtZW50cy4uLikKKyAg
ICAgICAgLCBtX2xhbmVJbnRlcnByZXRhdGlvbihsYW5lSW50ZXJwcmV0YXRpb24pCisgICAgICAg
ICwgbV9zaWduTW9kZShzaWduTW9kZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBTaW1kVmFsdWUoT3JpZ2luIG9yaWdpbiwgS2lu
ZCBraW5kLCBUeXBlIHR5cGUsIHVpbnQ4X3QgbnVtQ2hpbGRyZW4sIFNpbWRMYW5lSW50ZXJwcmV0
YXRpb24gbGFuZUludGVycHJldGF0aW9uLCBTaW1kU2lnbkV4dGVuZE1vZGUgc2lnbk1vZGUsIHVp
bnQ4X3QgaW1tMSwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBWYWx1ZShDaGVj
a2VkT3Bjb2RlLCBraW5kLCB0eXBlLCAoTnVtQ2hpbGRyZW4pKG51bUNoaWxkcmVuKSwgb3JpZ2lu
LCBhcmd1bWVudHMuLi4pCisgICAgICAgICwgbV9sYW5lSW50ZXJwcmV0YXRpb24obGFuZUludGVy
cHJldGF0aW9uKQorICAgICAgICAsIG1fc2lnbk1vZGUoc2lnbk1vZGUpCisgICAgeworICAgICAg
ICBpbW1zWzBdID0gaW1tMTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUuLi4gQXJndW1lbnRzPgorICAgIHN0YXRpYyBPcGNvZGUgb3Bjb2RlRnJvbUNvbnN0cnVjdG9y
KE9yaWdpbiwgS2luZCBraW5kLCBUeXBlLCB1aW50OF90LCBTaW1kTGFuZUludGVycHJldGF0aW9u
LCBTaW1kU2lnbkV4dGVuZE1vZGUsIEFyZ3VtZW50cy4uLikgeyByZXR1cm4ga2luZC5vcGNvZGUo
KTsgfQorICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgZnJpZW5kIGNsYXNzIFZhbHVl
OworCisgICAgU2ltZExhbmVJbnRlcnByZXRhdGlvbiBtX2xhbmVJbnRlcnByZXRhdGlvbjsKKyAg
ICBTaW1kU2lnbkV4dGVuZE1vZGUgbV9zaWduTW9kZTsKKyAgICAKKyAgICB1aW50OF90IGltbXNb
Ml0geyAwIH07Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVO
QUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuY3BwCmluZGV4IDY3ODQxYmRk
YzJiNi4uNDUzYzIzNzVkMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmNwcApAQCAt
NTIsNiArNTIsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVHlwZSB0
eXBlKQogICAgIGNhc2UgRG91YmxlOgogICAgICAgICBvdXQucHJpbnQoIkRvdWJsZSIpOwogICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBWMTI4OgorICAgICAgICBvdXQucHJpbnQoIlYxMjgiKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVHVwbGU6CiAgICAgICAgIG91dC5wcmludCgiVHVw
bGUiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oCmluZGV4IDkz
MjJmODhlZDliOS4uNjYyMThmOGNiN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzQ29tbW9u
LmgiCisjaW5jbHVkZSAiU2ltZEluZm8uaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKICNpZiAhQVNTRVJUX0VOQUJMRUQKQEAgLTQ1LDYgKzQ2LDcgQEAgZW51bSBUeXBlS2luZCA6
IHVpbnQzMl90IHsKICAgICBJbnQ2NCwKICAgICBGbG9hdCwKICAgICBEb3VibGUsCisgICAgVjEy
OCwKIAogICAgIC8vIFR1cGxlcyBhcmUgcmVwcmVzZW50ZWQgYXMgdGhlIHR1cGxlRmxhZyB8IHdp
dGggdGhlIHR1cGxlJ3MgaW5kZXggaW50byBQcm9jZWR1cmUncyBtX3R1cGxlcyB0YWJsZS4KICAg
ICBUdXBsZSA9IHR1cGxlRmxhZywKQEAgLTcwLDYgKzcyLDcgQEAgcHVibGljOgogICAgIGlubGlu
ZSBib29sIGlzRmxvYXQoKSBjb25zdDsKICAgICBpbmxpbmUgYm9vbCBpc051bWVyaWMoKSBjb25z
dDsKICAgICBpbmxpbmUgYm9vbCBpc1R1cGxlKCkgY29uc3Q7CisgICAgaW5saW5lIGJvb2wgaXNW
ZWN0b3IoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUeXBlS2luZCYgb3Ro
ZXJLaW5kKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gb3RoZXJLaW5kOyB9CiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSB0eXBl
Lm1fa2luZDsgfQpAQCAtODAsNiArODMsNDIgQEAgcHJpdmF0ZToKICAgICBUeXBlS2luZCBtX2tp
bmQgeyBWb2lkIH07CiB9OwogCitpbmxpbmUgVHlwZUtpbmQgc2ltZFNjYWxhclR5cGUoU2ltZExh
bmVJbnRlcnByZXRhdGlvbiBpKSB7CisgICAgc3dpdGNoIChpKSB7CisgICAgY2FzZSBTaW1kTGFu
ZUludGVycHJldGF0aW9uOjppOHgxNjoKKyAgICBjYXNlIFNpbWRMYW5lSW50ZXJwcmV0YXRpb246
OmkxNng4OgorICAgIGNhc2UgU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6aTMyeDQ6CisgICAgICAg
IHJldHVybiBJbnQzMjsKKyAgICBjYXNlIFNpbWRMYW5lSW50ZXJwcmV0YXRpb246Omk2NHgyOgor
ICAgICAgICByZXR1cm4gSW50NjQ7CisgICAgY2FzZSBTaW1kTGFuZUludGVycHJldGF0aW9uOjpm
MzJ4NDoKKyAgICAgICAgcmV0dXJuIEZsb2F0OworICAgIGNhc2UgU2ltZExhbmVJbnRlcnByZXRh
dGlvbjo6ZjY0eDI6CisgICAgICAgIHJldHVybiBEb3VibGU7CisgICAgY2FzZSBTaW1kTGFuZUlu
dGVycHJldGF0aW9uOjp2MTI4OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gSW50NjQ7CisgICAgfQorfQorCitpbmxpbmUgdWludDhfdCBzaW1k
TGFuZUNvdW50KFNpbWRMYW5lSW50ZXJwcmV0YXRpb24gaSkgeworICAgIHN3aXRjaCAoaSkgewor
ICAgIGNhc2UgU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6aTh4MTY6CisgICAgICAgIHJldHVybiAx
NjsKKyAgICBjYXNlIFNpbWRMYW5lSW50ZXJwcmV0YXRpb246OmkxNng4OgorICAgICAgICByZXR1
cm4gODsKKyAgICBjYXNlIFNpbWRMYW5lSW50ZXJwcmV0YXRpb246OmYzMng0OgorICAgIGNhc2Ug
U2ltZExhbmVJbnRlcnByZXRhdGlvbjo6aTMyeDQ6CisgICAgICAgIHJldHVybiA0OworICAgIGNh
c2UgU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6ZjY0eDI6CisgICAgY2FzZSBTaW1kTGFuZUludGVy
cHJldGF0aW9uOjppNjR4MjoKKyAgICAgICAgcmV0dXJuIDI7CisgICAgY2FzZSBTaW1kTGFuZUlu
dGVycHJldGF0aW9uOjp2MTI4OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFR5
cGVLaW5kKSA9PSBzaXplb2YoVHlwZSkpOwogCiBpbmxpbmUgYm9vbCBUeXBlOjppc0ludCgpIGNv
bnN0CkBAIC05NCw3ICsxMzMsNyBAQCBpbmxpbmUgYm9vbCBUeXBlOjppc0Zsb2F0KCkgY29uc3QK
IAogaW5saW5lIGJvb2wgVHlwZTo6aXNOdW1lcmljKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNJ
bnQoKSB8fCBpc0Zsb2F0KCk7CisgICAgcmV0dXJuIGlzSW50KCkgfHwgaXNGbG9hdCgpIHx8IGlz
VmVjdG9yKCk7CiB9CiAKIGlubGluZSBib29sIFR5cGU6OmlzVHVwbGUoKSBjb25zdApAQCAtMTAy
LDYgKzE0MSwxMSBAQCBpbmxpbmUgYm9vbCBUeXBlOjppc1R1cGxlKCkgY29uc3QKICAgICByZXR1
cm4ga2luZCgpID09IFR1cGxlOwogfQogCitpbmxpbmUgYm9vbCBUeXBlOjppc1ZlY3RvcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGtpbmQoKSA9PSBWMTI4OworfQorCiBpbmxpbmUgVHlwZSBwb2lu
dGVyVHlwZSgpCiB7CiAgICAgaWYgKGlzMzJCaXQoKSkKQEAgLTEyMSw2ICsxNjUsOCBAQCBpbmxp
bmUgc2l6ZV90IHNpemVvZlR5cGUoVHlwZSB0eXBlKQogICAgIGNhc2UgSW50NjQ6CiAgICAgY2Fz
ZSBEb3VibGU6CiAgICAgICAgIHJldHVybiA4OworICAgIGNhc2UgVjEyODoKKyAgICAgICAgcmV0
dXJuIDE2OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGVNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1R5cGVNYXAuaAppbmRleCBmNTMyOWM0NjczYjAuLjg0N2VkOGNjZmM2MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZU1hcC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGVNYXAuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gbV9kb3VibGU7CiAgICAgICAgIGNhc2UgVHVwbGU6CiAgICAg
ICAgICAgICByZXR1cm4gbV90dXBsZTsKKyAgICAgICAgY2FzZSBWMTI4OgorICAgICAgICAgICAg
cmV0dXJuIG1fdmVjdG9yOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KQEAgLTgyLDcgKzg0LDkgQEAgcHVibGljOgogICAgICAgICAgICAgIiwgaW50MzIg
PSAiLCBtX2ludDMyLAogICAgICAgICAgICAgIiwgaW50NjQgPSAiLCBtX2ludDY0LAogICAgICAg
ICAgICAgIiwgZmxvYXQgPSAiLCBtX2Zsb2F0LAotICAgICAgICAgICAgIiwgZG91YmxlID0gIiwg
bV9kb3VibGUsICJ9Iik7CisgICAgICAgICAgICAiLCBkb3VibGUgPSAiLCBtX2RvdWJsZSwKKyAg
ICAgICAgICAgICIsIHZlY3RvciA9ICIsIG1fdmVjdG9yLAorICAgICAgICAgICAgIiwgdHVwbGUg
PSAiLCBtX3R1cGxlLCAifSIpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkBAIC05MSw2ICs5NSw3
IEBAIHByaXZhdGU6CiAgICAgVCBtX2ludDY0IHsgfTsKICAgICBUIG1fZmxvYXQgeyB9OwogICAg
IFQgbV9kb3VibGUgeyB9OworICAgIFQgbV92ZWN0b3IgeyB9OwogICAgIFQgbV90dXBsZSB7IH07
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKaW5kZXggYWVmY2Qz
NDFkNjM2Li40NTM5ODkzNjA0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0
ZS5jcHAKQEAgLTE3MSw2ICsxNzEsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElE
QVRFKCF2YWx1ZS0+bnVtQ2hpbGRyZW4oKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEZsb2F0LCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDb25zdDEyODoKKyAgICAg
ICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVu
KCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5
cGUoKSA9PSBWMTI4LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBCb3R0b21UdXBsZToKICAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZhbHVlKSk7
CkBAIC0xOTYsNyArMjAxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2
YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAg
ICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+bnVtQ2hpbGRyZW4oKSwgKCJBdCAiLCAqdmFsdWUpKTsK
ICAgICAgICAgICAgICAgICBWQUxJREFURSgKLSAgICAgICAgICAgICAgICAgICAgKHZhbHVlLT5h
czxBcmd1bWVudFJlZ1ZhbHVlPigpLT5hcmd1bWVudFJlZygpLmlzR1BSKCkgPyBwb2ludGVyVHlw
ZSgpIDogRG91YmxlKQorICAgICAgICAgICAgICAgICAgICAodmFsdWUtPmFzPEFyZ3VtZW50UmVn
VmFsdWU+KCktPmFyZ3VtZW50UmVnKCkuaXNHUFIoKSA/IHBvaW50ZXJUeXBlKCkgOiBWMTI4KQog
ICAgICAgICAgICAgICAgICAgICA9PSB2YWx1ZS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBZGQ6CkBAIC00NDEsNiAr
NDQ2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQo
MCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRXh0cmFj
dExhbmU6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFC
aXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
Pm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHNpbWRTY2FsYXJUeXBlKHZhbHVlLT5hc1NpbWRWYWx1
ZSgpLT5sYW5lSW50ZXJwcmV0YXRpb24oKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gVjEyOCwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ0NhbGw6
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCks
ICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNo
aWxkcmVuKCkgPj0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKQEAgLTYyOSw3ICs2NDAsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS52YWx1ZSgpLT50eXBlKCkuaXNUdXBsZSgp
KQogICAgICAgICAgICAgICAgICAgICBWQUxJREFURShtX3Byb2NlZHVyZS5leHRyYWN0RnJvbVR1
cGxlKHZhbHVlLnZhbHVlKCktPnR5cGUoKSwgdHVwbGVJbmRleCkuaXNGbG9hdCgpLCAoIkF0ICIs
ICpjb250ZXh0LCAiOiAiLCB2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgVkFMSURBVEUodmFsdWUudmFsdWUoKS0+dHlwZSgpLmlzRmxvYXQoKSwgKCJB
dCAiLCAqY29udGV4dCwgIjogIiwgdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUudmFsdWUoKS0+dHlwZSgpLmlzRmxvYXQoKSB8fCB2YWx1ZS52YWx1ZSgpLT50eXBl
KCkuaXNWZWN0b3IoKSwgKCJBdCAiLCAqY29udGV4dCwgIjogIiwgdmFsdWUpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWUuY3BwCmluZGV4IGUzZWVmZmM3N2M3Ny4uZTE1MDgwNzZjMjJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC0xNzMsNiArMTczLDEwIEBAIHZvaWQg
VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgb3V0LnByaW50KCIk
IiwgYXNEb3VibGUoKSwgIigiKTsKICAgICAgICAgaXNDb25zdGFudCA9IHRydWU7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ29uc3QxMjg6CisgICAgICAgIG91dC5wcmludCgiJFsiLCBhc1Yx
MjgoKS51NjR4MlswXSwgIjo6IiwgYXNWMTI4KCkudTY0eDJbMV0sICJdKCIpOworICAgICAgICBp
c0NvbnN0YW50ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtNTQwLDYgKzU0NCw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMo
KSBjb25zdAogICAgIGNhc2UgT3BhcXVlOgogICAgIGNhc2UgQ29uc3QzMjoKICAgICBjYXNlIENv
bnN0NjQ6CisgICAgY2FzZSBDb25zdDEyODoKICAgICBjYXNlIENvbnN0RG91YmxlOgogICAgIGNh
c2UgQ29uc3RGbG9hdDoKICAgICBjYXNlIEJvdHRvbVR1cGxlOgpAQCAtNTg5LDYgKzU5NCw3IEBA
IEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgRXh0cmFjdDoKICAgICBj
YXNlIEZNaW46CiAgICAgY2FzZSBGTWF4OgorICAgIGNhc2UgRXh0cmFjdExhbmU6CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRGl2OgogICAgIGNhc2UgVURpdjoKQEAgLTg4OSw2ICs4OTUsNyBA
QCBUeXBlIFZhbHVlOjp0eXBlRm9yKEtpbmQga2luZCwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZhbHVl
KiBzZWNvbmRDaGlsZCkKICAgICAgICAgICAgIHJldHVybiBJbnQzMjsKICAgICAgICAgY2FzZSBW
b2lkOgogICAgICAgICBjYXNlIFR1cGxlOgorICAgICAgICBjYXNlIFYxMjg6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gVm9pZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCmluZGV4IDI1MGEwMmRmZjIxOC4uMDhjYzg2ZjNj
M2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiBjbGFzcyBCYXNpY0Jsb2NrOwogY2xhc3MgQ2hl
Y2tWYWx1ZTsKIGNsYXNzIEluc2VydGlvblNldDsKK2NsYXNzIFNpbWRWYWx1ZTsKIGNsYXNzIFBo
aUNoaWxkcmVuOwogY2xhc3MgUHJvY2VkdXJlOwogCkBAIC0yNjMsNiArMjY0LDkgQEAgcHVibGlj
OgogICAgIGJvb2wgaGFzSW50NjQoKSBjb25zdDsKICAgICBpbnQ2NF90IGFzSW50NjQoKSBjb25z
dDsKICAgICBib29sIGlzSW50NjQoaW50NjRfdCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBoYXNW
MTI4KCkgY29uc3Q7CisgICAgdjEyOF90IGFzVjEyOCgpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNJ
bnQoKSBjb25zdDsKICAgICBpbnQ2NF90IGFzSW50KCkgY29uc3Q7CkBAIC0yOTQsNiArMjk4LDkg
QEAgcHVibGljOgogICAgIFRyaVN0YXRlIGFzVHJpU3RhdGUoKSBjb25zdDsKICAgICBib29sIGlz
TGlrZVplcm8oKSBjb25zdCB7IHJldHVybiBhc1RyaVN0YXRlKCkgPT0gVHJpU3RhdGU6OkZhbHNl
OyB9CiAgICAgYm9vbCBpc0xpa2VOb25aZXJvKCkgY29uc3QgeyByZXR1cm4gYXNUcmlTdGF0ZSgp
ID09IFRyaVN0YXRlOjpUcnVlOyB9CisgICAgCisgICAgYm9vbCBpc1NpbWRWYWx1ZSgpIGNvbnN0
OworICAgIFNpbWRWYWx1ZSogYXNTaW1kVmFsdWUoKTsKIAogICAgIEVmZmVjdHMgZWZmZWN0cygp
IGNvbnN0OwogCkBAIC0zOTEsNiArMzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBjYXNlIEFy
Z3VtZW50UmVnOgogICAgICAgICBjYXNlIENvbnN0MzI6CiAgICAgICAgIGNhc2UgQ29uc3Q2NDoK
KyAgICAgICAgY2FzZSBDb25zdDEyODoKICAgICAgICAgY2FzZSBDb25zdEZsb2F0OgogICAgICAg
ICBjYXNlIENvbnN0RG91YmxlOgogICAgICAgICBjYXNlIEJvdHRvbVR1cGxlOgpAQCAtNDMwLDYg
KzQzOCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgY2FzZSBTZXQ6CiAgICAgICAgIGNhc2UgV2Fz
bUFkZHJlc3M6CiAgICAgICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrOgorICAgICAgICBjYXNlIEV4
dHJhY3RMYW5lOgogICAgICAgICAgICAgcmV0dXJuIHNpemVvZihWYWx1ZSopOwogICAgICAgICBj
YXNlIEFkZDoKICAgICAgICAgY2FzZSBTdWI6CkBAIC01OTUsNiArNjA0LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAg
IGNhc2UgRGVwZW5kOgorICAgICAgICBjYXNlIEV4dHJhY3RMYW5lOgogICAgICAgICAgICAgaWYg
KFVOTElLRUxZKG51bUFyZ3MgIT0gMSkpCiAgICAgICAgICAgICAgICAgYmFkS2luZChraW5kLCBu
dW1BcmdzKTsKICAgICAgICAgICAgIHJldHVybiBPbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlSW5saW5lcy5oCmluZGV4IDkzOWEyNjQ3ZWM2YS4uYjViYjExYTBkYzE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkIzQ2hlY2tWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQ29uc3QzMlZhbHVlLmgi
CiAjaW5jbHVkZSAiQjNDb25zdDY0VmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnN0MTI4VmFsdWUu
aCIKICNpbmNsdWRlICJCM0NvbnN0RG91YmxlVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbnN0Rmxv
YXRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzRXh0cmFjdFZhbHVlLmgiCkBAIC00Miw2ICs0Myw3IEBA
CiAjaW5jbHVkZSAiQjNQYXRjaHBvaW50VmFsdWUuaCIKICNpbmNsdWRlICJCM1BoaUNoaWxkcmVu
LmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKKyNpbmNsdWRlICJCM1NpbWRWYWx1ZS5oIgog
I2luY2x1ZGUgIkIzU2xvdEJhc2VWYWx1ZS5oIgogI2luY2x1ZGUgIkIzU3dpdGNoVmFsdWUuaCIK
ICNpbmNsdWRlICJCM1Vwc2lsb25WYWx1ZS5oIgpAQCAtMTE4LDYgKzEyMCw4IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogICAgICAgICByZXR1cm4gTUFDUk8oQ29uc3QzMlZhbHVl
KTsgXAogICAgIGNhc2UgQ29uc3Q2NDogXAogICAgICAgICByZXR1cm4gTUFDUk8oQ29uc3Q2NFZh
bHVlKTsgXAorICAgIGNhc2UgQ29uc3QxMjg6IFwKKyAgICAgICAgcmV0dXJuIE1BQ1JPKENvbnN0
MTI4VmFsdWUpOyBcCiAgICAgY2FzZSBDb25zdEZsb2F0OiBcCiAgICAgICAgIHJldHVybiBNQUNS
TyhDb25zdEZsb2F0VmFsdWUpOyBcCiAgICAgY2FzZSBDb25zdERvdWJsZTogXApAQCAtMTUwLDYg
KzE1NCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogICAgICAgICByZXR1cm4g
TUFDUk8oV2FzbUFkZHJlc3NWYWx1ZSk7IFwKICAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazogXAog
ICAgICAgICByZXR1cm4gTUFDUk8oV2FzbUJvdW5kc0NoZWNrVmFsdWUpOyBcCisgICAgY2FzZSBF
eHRyYWN0TGFuZTogXAorICAgICAgICByZXR1cm4gTUFDUk8oU2ltZFZhbHVlKTsgXAogICAgIGNh
c2UgQXRvbWljWGNoZ0FkZDogXAogICAgIGNhc2UgQXRvbWljWGNoZ0FuZDogXAogICAgIGNhc2Ug
QXRvbWljWGNoZ09yOiBcCkBAIC0yOTgsNiArMzA0LDE2IEBAIGlubGluZSBkb3VibGUgVmFsdWU6
OmFzRG91YmxlKCkgY29uc3QKICAgICByZXR1cm4gYXM8Q29uc3REb3VibGVWYWx1ZT4oKS0+dmFs
dWUoKTsKIH0KIAoraW5saW5lIGJvb2wgVmFsdWU6Omhhc1YxMjgoKSBjb25zdAoreworICAgIHJl
dHVybiAhIWFzPENvbnN0MTI4VmFsdWU+KCk7Cit9CisKK2lubGluZSB2MTI4X3QgVmFsdWU6OmFz
VjEyOCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFzPENvbnN0MTI4VmFsdWU+KCktPnZhbHVlKCk7
Cit9CisKIGlubGluZSBib29sIFZhbHVlOjppc0VxdWFsVG9Eb3VibGUoZG91YmxlIHZhbHVlKSBj
b25zdAogewogICAgIHJldHVybiBoYXNEb3VibGUoKSAmJiBhc0RvdWJsZSgpID09IHZhbHVlOwpA
QCAtMzg4LDYgKzQwNCwxNiBAQCB2b2lkIFZhbHVlOjp3YWxrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IsIFBoaUNoaWxkcmVuKiBwaGlDaGlsZHJlbikKICAgICB9CiB9CiAKK2lubGluZSBib29sIFZh
bHVlOjppc1NpbWRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICEhYXM8U2ltZFZhbHVlPigp
OworfQorCitpbmxpbmUgU2ltZFZhbHVlKiBWYWx1ZTo6YXNTaW1kVmFsdWUoKQoreworICAgIHJl
dHVybiBhczxTaW1kVmFsdWU+KCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAj
ZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1dpZHRoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcApp
bmRleCBlMzUzNTZlYTMzZjAuLmY5ODMzY2U3ZTBhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1dpZHRoLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkIzV2lkdGguaCIKIAotI2lmIEVOQUJMRShCM19KSVQpCi0KICNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CkBAIC01NSw2ICs1
Myw4IEBAIFR5cGUgYmVzdFR5cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkKICAgICAgICAgfQog
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gVm9p
ZDsKKyAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICBicmVhazsKICAgICB9CiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gVm9pZDsKQEAgLTc5LDYgKzc5LDkg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QjM6OldpZHRoIHdp
ZHRoKQogICAgIGNhc2UgSlNDOjpCMzo6V2lkdGg2NDoKICAgICAgICAgb3V0LnByaW50KCI2NCIp
OwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OkIzOjpXaWR0aDEyODoKKyAgICAgICAg
b3V0LnByaW50KCIxMjgiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04Niw1ICs4OSwzIEBAIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkIzOjpXaWR0aCB3aWR0aCkKIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
V2lkdGguaAppbmRleCA0MDQxMmY5ZmY2YzYuLjg0ZGM1ZTBkOWMwMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNXaWR0aC5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
RU5BQkxFKEIzX0pJVCkKLQogI2luY2x1ZGUgIkIzQmFuay5oIgogI2luY2x1ZGUgIkIzVHlwZS5o
IgogCkBAIC0zNywxMCArMzUsMTEgQEAgSUdOT1JFX1JFVFVSTl9UWVBFX1dBUk5JTkdTX0JFR0lO
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogZW51bSBXaWR0aCA6IGludDhfdCB7
Ci0gICAgV2lkdGg4ID0gMCwKKyAgICBXaWR0aDggPSAyLAogICAgIFdpZHRoMTYsCiAgICAgV2lk
dGgzMiwKLSAgICBXaWR0aDY0CisgICAgV2lkdGg2NCwKKyAgICBXaWR0aDEyOAogfTsKIAogY29u
c3RleHByIFdpZHRoIHBvaW50ZXJXaWR0aCgpCkBAIC01MCw2ICs0OSw3IEBAIGNvbnN0ZXhwciBX
aWR0aCBwb2ludGVyV2lkdGgoKQogICAgIHJldHVybiBXaWR0aDMyOwogfQogCisjaWYgRU5BQkxF
KEIzX0pJVCkKIGlubGluZSBXaWR0aCB3aWR0aEZvclR5cGUoVHlwZSB0eXBlKQogewogICAgIHN3
aXRjaCAodHlwZS5raW5kKCkpIHsKQEAgLTYzLDEwICs2MywxMyBAQCBpbmxpbmUgV2lkdGggd2lk
dGhGb3JUeXBlKFR5cGUgdHlwZSkKICAgICBjYXNlIEludDY0OgogICAgIGNhc2UgRG91YmxlOgog
ICAgICAgICByZXR1cm4gV2lkdGg2NDsKKyAgICBjYXNlIFYxMjg6CisgICAgICAgIHJldHVybiBX
aWR0aDEyODsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFdp
ZHRoODsKIH0KKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQogCiBpbmxpbmUgV2lkdGggY2Fub25p
Y2FsV2lkdGgoV2lkdGggd2lkdGgpCiB7CkBAIC04Miw3ICs4NSw3IEBAIFR5cGUgYmVzdFR5cGUo
QmFuayBiYW5rLCBXaWR0aCB3aWR0aCk7CiAKIGlubGluZSBXaWR0aCBjb25zZXJ2YXRpdmVXaWR0
aChCYW5rIGJhbmspCiB7Ci0gICAgcmV0dXJuIGJhbmsgPT0gR1AgPyBwb2ludGVyV2lkdGgoKSA6
IFdpZHRoNjQ7CisgICAgcmV0dXJuIGJhbmsgPT0gR1AgPyBwb2ludGVyV2lkdGgoKSA6IFdpZHRo
MTI4OwogfQogCiBpbmxpbmUgV2lkdGggbWluaW11bVdpZHRoKEJhbmsgYmFuaykKQEAgLTkwLDEx
ICs5Myw2IEBAIGlubGluZSBXaWR0aCBtaW5pbXVtV2lkdGgoQmFuayBiYW5rKQogICAgIHJldHVy
biBiYW5rID09IEdQID8gV2lkdGg4IDogV2lkdGgzMjsKIH0KIAotaW5saW5lIHVuc2lnbmVkIGJ5
dGVzKFdpZHRoIHdpZHRoKQotewotICAgIHJldHVybiAxIDw8IHdpZHRoOwotfQotCiBpbmxpbmUg
V2lkdGggd2lkdGhGb3JCeXRlcyh1bnNpZ25lZCBieXRlcykKIHsKICAgICBzd2l0Y2ggKGJ5dGVz
KSB7CkBAIC0xMDYsNiArMTA0LDggQEAgaW5saW5lIFdpZHRoIHdpZHRoRm9yQnl0ZXModW5zaWdu
ZWQgYnl0ZXMpCiAgICAgY2FzZSAzOgogICAgIGNhc2UgNDoKICAgICAgICAgcmV0dXJuIFdpZHRo
MzI7CisgICAgY2FzZSAxNjoKKyAgICAgICAgcmV0dXJuIFdpZHRoMTI4OwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHJldHVybiBXaWR0aDY0OwogICAgIH0KQEAgLTEyMiw2ICsxMjIsOCBAQCBpbmxp
bmUgdW5zaWduZWQgYnl0ZXNGb3JXaWR0aChXaWR0aCB3aWR0aCkKICAgICAgICAgcmV0dXJuIDQ7
CiAgICAgY2FzZSBXaWR0aDY0OgogICAgICAgICByZXR1cm4gODsKKyAgICBjYXNlIFdpZHRoMTI4
OgorICAgICAgICByZXR1cm4gMTY7CiAgICAgfQogICAgIHJldHVybiAxOwogfQpAQCAtMTM3LDYg
KzEzOSw5IEBAIGlubGluZSB1aW50NjRfdCBtYXNrKFdpZHRoIHdpZHRoKQogICAgICAgICByZXR1
cm4gMHgwMDAwMDAwMGZmZmZmZmZmbGx1OwogICAgIGNhc2UgV2lkdGg2NDoKICAgICAgICAgcmV0
dXJuIDB4ZmZmZmZmZmZmZmZmZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xNTUsNSArMTYwLDMgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpCMzo6V2lkdGgpOwogSUdOT1JFX1JFVFVSTl9U
WVBFX1dBUk5JTkdTX0VORAogI2VuZGlmCiAKLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0
ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcAppbmRl
eCAyNjc3Mjc2M2I0OTUuLjM0MWY2YjVkN2QwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2Rl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0
ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwCkBAIC00MCw2ICs0MCwxMCBAQAogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKK25hbWVzcGFjZSBH
ZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzSW50ZXJuYWwgeworc3RhdGljIGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworfQorCiBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpHZW5lcmF0ZUFu
ZEFsbG9jYXRlUmVnaXN0ZXJzKENvZGUmIGNvZGUpCiAgICAgOiBtX2NvZGUoY29kZSkKICAgICAs
IG1fbWFwKGNvZGUpCkBAIC0xNzMsNyArMTc3LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEdlbmVy
YXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmZsdXNoKFRtcCB0bXAsIFJlZyByZWcpCiAgICAgaWYg
KHRtcC5pc0dQKCkpCiAgICAgICAgIG1faml0LT5zdG9yZTY0KHJlZy5ncHIoKSwgY2FsbEZyYW1l
QWRkcigqbV9qaXQsIG9mZnNldCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9qaXQtPnN0b3JlRG91
YmxlKHJlZy5mcHIoKSwgY2FsbEZyYW1lQWRkcigqbV9qaXQsIG9mZnNldCkpOworICAgICAgICBt
X2ppdC0+c3RvcmVWZWN0b3IocmVnLmZwcigpLCBjYWxsRnJhbWVBZGRyKCptX2ppdCwgb2Zmc2V0
KSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJz
OjpzcGlsbChUbXAgdG1wLCBSZWcgcmVnKQpAQCAtMjAyLDcgKzIwNiw3IEBAIEFMV0FZU19JTkxJ
TkUgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjphbGxvYyhUbXAgdG1wLCBSZWcg
cmVnLCBib29sIGlzCiAgICAgICAgIGlmICh0bXAuYmFuaygpID09IEdQKQogICAgICAgICAgICAg
bV9qaXQtPmxvYWQ2NChjYWxsRnJhbWVBZGRyKCptX2ppdCwgb2Zmc2V0KSwgcmVnLmdwcigpKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9qaXQtPmxvYWREb3VibGUoY2FsbEZyYW1lQWRk
cigqbV9qaXQsIG9mZnNldCksIHJlZy5mcHIoKSk7CisgICAgICAgICAgICBtX2ppdC0+bG9hZFZl
Y3RvcihjYWxsRnJhbWVBZGRyKCptX2ppdCwgb2Zmc2V0KSwgcmVnLmZwcigpKTsKICAgICB9CiB9
CiAKQEAgLTMxMCwxMSArMzE0LDEzIEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVy
czo6cHJlcGFyZUZvckdlbmVyYXRpb24oKQogICAgICAgICAgICAgICAgICAgICAgICAgdG9GcmVl
LmFwcGVuZChkYXRhLnNwaWxsU2xvdCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoZnJlZVNsb3RzLnNpemUoKSkK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoZnJlZVNsb3RzLnNpemUoKSAm
JiBmcmVlU2xvdHMubGFzdCgpLT5ieXRlU2l6ZSgpID49IGJ5dGVzRm9yV2lkdGgoY29uc2VydmF0
aXZlV2lkdGgodG1wLmJhbmsoKSkpKQogICAgICAgICAgICAgICAgICAgICBkYXRhLnNwaWxsU2xv
dCA9IGZyZWVTbG90cy50YWtlTGFzdCgpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgZGF0YS5zcGlsbFNsb3QgPSBtX2NvZGUuYWRkU3RhY2tTbG90KDgsIFN0YWNr
U2xvdEtpbmQ6OlNwaWxsKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5zcGlsbFNsb3QgPSBt
X2NvZGUuYWRkU3RhY2tTbG90KGJ5dGVzRm9yV2lkdGgoY29uc2VydmF0aXZlV2lkdGgodG1wLmJh
bmsoKSkpLCBTdGFja1Nsb3RLaW5kOjpTcGlsbCk7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuSWYoR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyc0ludGVybmFs
Ojp2ZXJib3NlLCAiYXNzaWduU3RhY2tTbG90VG9UbXAgYmxvY2s6ICIsICpibG9jaywgIiwgdG1w
OiAiLCB0bXAsICIgLT4gc2xvdCAiLCBkYXRhLnNwaWxsU2xvdCk7CiAgICAgICAgICAgICAgICAg
ZGF0YS5yZWcgPSBSZWcoKTsKICAgICAgICAgICAgIH07CiAKQEAgLTM1OSw3ICszNjUsOCBAQCB2
b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OnByZXBhcmVGb3JHZW5lcmF0aW9uKCkK
ICAgICAgICAgZm9yIChSZWcgcmVnIDogbV9yZWdpc3RlcnNbYmFua10pIHsKICAgICAgICAgICAg
IG1fYWxsb3dlZFJlZ2lzdGVycy5zZXQocmVnKTsKICAgICAgICAgICAgIFRtcERhdGEmIGRhdGEg
PSBtX21hcFtUbXAocmVnKV07Ci0gICAgICAgICAgICBkYXRhLnNwaWxsU2xvdCA9IG1fY29kZS5h
ZGRTdGFja1Nsb3QoOCwgU3RhY2tTbG90S2luZDo6U3BpbGwpOworICAgICAgICAgICAgZGF0YS5z
cGlsbFNsb3QgPSBtX2NvZGUuYWRkU3RhY2tTbG90KGJ5dGVzRm9yV2lkdGgoY29uc2VydmF0aXZl
V2lkdGgoYmFua0ZvclJlZyhyZWcpKSksIFN0YWNrU2xvdEtpbmQ6OlNwaWxsKTsKKyAgICAgICAg
ICAgIGRhdGFMb2dMbklmKEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnNJbnRlcm5hbDo6dmVy
Ym9zZSwgImFsbG93ZWRSZWdpc3RlcnM6IHJlZzogIiwgcmVnLCAiIC0+IHNsb3QgIiwgZGF0YS5z
cGlsbFNsb3QpOwogICAgICAgICAgICAgZGF0YS5yZWcgPSBSZWcoKTsKICAgICAgICAgfQogICAg
IH0pOwpAQCAtMzY5LDggKzM3Niw4IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVy
czo6cHJlcGFyZUZvckdlbmVyYXRpb24oKQogICAgICAgICBmb3IgKFN0YWNrU2xvdCogc2xvdCA6
IG1fY29kZS5zdGFja1Nsb3RzKCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LT5pc0xvY2tlZCgp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0
ID0gLXN0YXRpY19jYXN0PGludHB0cl90PihtX2NvZGUuZnJhbWVTaXplKCkpIC0gc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KG5leHRJbmRleCkgKiA4IC0gODsKLSAgICAgICAgICAgICsrbmV4dEluZGV4
OworICAgICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludHB0cl90Piht
X2NvZGUuZnJhbWVTaXplKCkpIC0gc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG5leHRJbmRleCkgKiA4
IC0gKHNsb3QtPmJ5dGVTaXplKCkgLSA4KSAtIDg7CisgICAgICAgICAgICBuZXh0SW5kZXggKz0g
c2xvdC0+Ynl0ZVNpemUoKSAvIDg7CiAgICAgICAgICAgICBzbG90LT5zZXRPZmZzZXRGcm9tRlAo
b2Zmc2V0KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0J5TGluZWFyU2Nhbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3Rh
Y2tCeUxpbmVhclNjYW4uY3BwCmluZGV4IGY3OTc5YWFmMzQ4OS4uN2I3OWU5M2JhN2Q4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJz
QW5kU3RhY2tCeUxpbmVhclNjYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0J5TGluZWFyU2Nhbi5jcHAKQEAgLTExMiw3
ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9zdGFydEluZGV4KGNvZGUuc2l6ZSgpKQog
ICAgICAgICAsIG1fbWFwKGNvZGUpCiAgICAgICAgICwgbV9pbnNlcnRpb25TZXRzKGNvZGUuc2l6
ZSgpKQotICAgIHsKKyAgICB7IGlmICghT3B0aW9uczo6dmFsaWRhdGVHcmFwaCgpIHx8IE9wdGlv
bnM6OnZhbGlkYXRlR3JhcGhBdEVhY2hQaGFzZSgpKSBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiAgICAgCiAgICAgdm9pZCBydW4oKQpAQCAtNTc3LDcgKzU3Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgICAgICBTdGFja1Nsb3QqIHNwaWxsZWQgPSBtX21hcFt0bXBdLnNw
aWxsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNwaWxsZWQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgT3Bjb2Rl
IG1vdmUgPSBiYW5rID09IEdQID8gTW92ZSA6IE1vdmVEb3VibGU7CisgICAgICAgICAgICAgICAg
ICAgICAgICBPcGNvZGUgbW92ZSA9IGJhbmsgPT0gR1AgPyBNb3ZlIDogTW92ZVZlY3RvcjsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IGFkZFNwaWxsVG1wV2l0aEludGVydmFsKGJhbmss
IGludGVydmFsRm9yU3BpbGwoaW5kZXhPZkVhcmx5LCByb2xlKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocm9sZSA9PSBBcmc6OlNjcmF0Y2gpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNwcAppbmRl
eCBiMGQyNWQxNmFlNmEuLjcxOGMzMjA0YjlhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3Jh
cGhDb2xvcmluZy5jcHAKQEAgLTE3MTAsNiArMTcxMCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAg
ICAgIHN3aXRjaCAoaW5zdC5raW5kLm9wY29kZSkgewogICAgICAgICAgICAgY2FzZSBNb3ZlRmxv
YXQ6CiAgICAgICAgICAgICBjYXNlIE1vdmVEb3VibGU6CisgICAgICAgICAgICBjYXNlIE1vdmVW
ZWN0b3I6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5NzUsNyArMTk3Niw4IEBAIHByaXZhdGU6
CiAKICAgICBzdGF0aWMgdW5zaWduZWQgc3RhY2tTbG90TWluaW11bVdpZHRoKFdpZHRoIHdpZHRo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHdpZHRoIDw9IFdpZHRoMzIgPyA0IDogODsKKyAgICAg
ICAgdW5zaWduZWQgYnl0ZXMgPSBieXRlc0ZvcldpZHRoKHdpZHRoKTsKKyAgICAgICAgcmV0dXJu
IGJ5dGVzIDwgNCA/IDQgOiBieXRlczsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxCYW5rIGJhbmss
IHR5cGVuYW1lIEFsbG9jYXRvclR5cGU+CkBAIC0yMDM0LDYgKzIwMzYsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYXZlIGFuIGluc3QgdGhh
dCB3b24ndCBhZG1pdCBzdGFjazogIiwgaW5zdCwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChpbnN0LmtpbmQub3Bjb2RlKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBNb3ZlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTW92
ZVZlY3RvcjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE1vdmVEb3VibGU6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBNb3ZlRmxvYXQ6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBNb3ZlMzI6IHsKQEAgLTIwODEsNyArMjA4NCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuVXNlTW92ZTMySWZEaWRTcGlsbCA9
IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGFja1Nsb3RFbnRyeS0+dmFsdWUtPmVuc3VyZVNpemUoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FuVXNlTW92ZTMySWZEaWRTcGlsbCA/IDQgOiBieXRlcyh3aWR0aCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhblVzZU1vdmUzMklmRGlkU3BpbGwgPyA0IDogYnl0
ZXNGb3JXaWR0aCh3aWR0aCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gQXJnOjpz
dGFjayhzdGFja1Nsb3RFbnRyeS0+dmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgZGlk
U3BpbGwgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5lZWRTY3JhdGNoSWZT
cGlsbGVkSW5QbGFjZSkKQEAgLTIxMDAsNiArMjEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBNb3ZlRG91Ymxl
OgogICAgICAgICAgICAgICAgICAgICBjYXNlIE1vdmVGbG9hdDoKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBNb3ZlVmVjdG9yOgogICAgICAgICAgICAgICAgICAgICAgICAgaW5zdEJhbmsgPSBG
UDsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0OgpAQCAtMjE1MCw2ICsyMTU0LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUgPSBiYW5rID09IEdQID8g
TW92ZSA6IE1vdmVEb3VibGU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAxNjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGJhbmsgPT0gRlApOworICAgICAgICAgICAgICAgICAgICAgICAgbW92ZSA9IE1vdmVW
ZWN0b3I7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmlu
Zy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdy
YXBoQ29sb3JpbmcuY3BwCmluZGV4IGMyZjFhZWYyOGE4My4uN2Y2NTQyNjg5OTE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdyYXBo
Q29sb3JpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2Nh
dGVTdGFja0J5R3JhcGhDb2xvcmluZy5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICAgICAgU3RhY2tTbG90KiBzbG90ID0gYXJnLnN0YWNrU2xvdCgpOwogICAgICAgICAg
ICAgaWYgKHNsb3QtPmtpbmQoKSAhPSBTdGFja1Nsb3RLaW5kOjpTcGlsbCkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoc2xvdC0+Ynl0ZVNpemUoKSAhPSBi
eXRlcyh3aWR0aCkpCisgICAgICAgICAgICBpZiAoc2xvdC0+Ynl0ZVNpemUoKSAhPSBieXRlc0Zv
cldpZHRoKHdpZHRoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCmluZGV4IDc3ZWU4NDI1MTI0
Yi4uMTA0YTA3NjNkZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFyZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3Bw
CkBAIC05Niw2ICs5Niw3IEBAIHVuc2lnbmVkIEFyZzo6anNIYXNoKCkgY29uc3QKICAgICBzd2l0
Y2ggKG1fa2luZCkgewogICAgIGNhc2UgSW52YWxpZDoKICAgICBjYXNlIFNwZWNpYWw6CisgICAg
Y2FzZSBTaW1kSW5mbzoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUbXA6CiAgICAgICAgIHJl
c3VsdCArPSBtX2Jhc2UuaW50ZXJuYWxWYWx1ZSgpOwpAQCAtMjE5LDYgKzIyMCw5IEBAIHZvaWQg
QXJnOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgY2FzZSBXaWR0aEFyZzoKICAg
ICAgICAgb3V0LnByaW50KHdpZHRoKCkpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTaW1k
SW5mbzoKKyAgICAgICAgb3V0LnByaW50KCJTSU1EID0geyBzaWduRXh0ZW5kOiAiLCAodWludDhf
dCkgbV9zaWduRXh0ZW5kTW9kZSwgIiwgbGFuZUludGVycHJldGF0aW9uOiAiLCAodWludDhfdCkg
bV9sYW5lSW50ZXJwcmV0YXRpb24sICIgfSIpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5Niw2ICszMDAsOSBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnOjpLaW5kIGtpbmQpCiAgICAgY2Fz
ZSBBcmc6OldpZHRoQXJnOgogICAgICAgICBvdXQucHJpbnQoIldpZHRoQXJnIik7CiAgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIEFyZzo6U2ltZEluZm86CisgICAgICAgIG91dC5wcmludCgiU2lt
ZEluZm8iKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckFyZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAppbmRleCBmYmY2
NjM3YjI4NjAuLjhjMzNiYjZmNGI4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJBcmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFy
Zy5oCkBAIC05MCw3ICs5MCw5IEBAIHB1YmxpYzoKICAgICAgICAgV2lkdGhBcmcsCiAKICAgICAg
ICAgLy8gWmVyb1JlZyBpcyBpbnRlcnByZXRlZCBhcyBhIHplcm8gcmVnaXN0ZXIgaW4gQVJNNjQK
LSAgICAgICAgWmVyb1JlZworICAgICAgICBaZXJvUmVnLAorICAgICAgICAKKyAgICAgICAgU2lt
ZEluZm8KICAgICB9OwogICAgIAogICAgIGVudW0gVGVtcGVyYXR1cmUgOiBpbnQ4X3QgewpAQCAt
NDkyLDYgKzQ5NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIDogQXJnKEFpcjo6VG1wKHJlZykpCiAg
ICAgewogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgQXJnIHNpbWRJbmZvKFNpbWRMYW5lSW50ZXJw
cmV0YXRpb24gbGFuZUludGVycHJldGF0aW9uLCBTaW1kU2lnbkV4dGVuZE1vZGUgc2lnbkV4dGVu
ZE1vZGUpCisgICAgeworICAgICAgICBBcmcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5k
ID0gU2ltZEluZm87CisgICAgICAgIHJlc3VsdC5tX2xhbmVJbnRlcnByZXRhdGlvbiA9IGxhbmVJ
bnRlcnByZXRhdGlvbjsKKyAgICAgICAgcmVzdWx0Lm1fc2lnbkV4dGVuZE1vZGUgPSBzaWduRXh0
ZW5kTW9kZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICBzdGF0aWMgQXJn
IGltbShpbnQ2NF90IHZhbHVlKQogICAgIHsKQEAgLTYwNSw3ICs2MTYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCF3aWR0aCkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHNjYWxlID09IDEgfHwgc2NhbGUgPT0gYnl0ZXMoKndpZHRoKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc2NhbGUgPT0gMSB8fCBzY2FsZSA9PSBieXRlc0ZvcldpZHRoKCp3aWR0aCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6CkBA
IC05MDksNiArOTIwLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBpc1RtcCgp
IHx8IGlzU3RhY2soKTsKICAgICB9CisgICAgCisgICAgYm9vbCBpc1NpbWRJbmZvKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBraW5kKCkgPT0gU2ltZEluZm87CisgICAgfQogCiAgICAg
QWlyOjpUbXAgdG1wKCkgY29uc3QKICAgICB7CkBAIC05NDEsNiArOTU3LDggQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIHJldHVybiBCMzo6aXNSZXByZXNlbnRhYmxlQXM8aW50MzJfdD4odmFs
dWUpOwogICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgogICAgICAgICAgICAgICAgIHJldHVybiBC
Mzo6aXNSZXByZXNlbnRhYmxlQXM8aW50NjRfdD4odmFsdWUpOworICAgICAgICAgICAgY2FzZSBX
aWR0aDEyODoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjYXNlIFVu
c2lnbmVkOgpAQCAtOTUzLDYgKzk3MSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1
cm4gQjM6OmlzUmVwcmVzZW50YWJsZUFzPHVpbnQzMl90Pih2YWx1ZSk7CiAgICAgICAgICAgICBj
YXNlIFdpZHRoNjQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEIzOjppc1JlcHJlc2VudGFibGVB
czx1aW50NjRfdD4odmFsdWUpOworICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTk3Myw2ICs5OTMsOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsKICAg
ICAgICAgICAgIGNhc2UgV2lkdGg2NDoKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50NjRfdD4odmFsdWUpOworICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGNhc2UgVW5zaWduZWQ6CkBAIC05ODUsNiArMTAwNyw4
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHZhbHVlKTsKICAgICAgICAgICAgIGNhc2UgV2lkdGg2NDoKICAgICAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKTsKKyAgICAgICAgICAgIGNhc2UgV2lkdGgx
Mjg6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEwOTUsNiArMTExOSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFRtcDoKICAg
ICAgICAgICAgIHJldHVybiBpc0dQVG1wKCk7CisgICAgICAgIGNhc2UgU2ltZEluZm86CiAgICAg
ICAgIGNhc2UgSW52YWxpZDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpA
QCAtMTExNiw2ICsxMTQxLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAg
ICAgICBjYXNlIEludmFsaWQ6CiAgICAgICAgIGNhc2UgWmVyb1JlZzoKKyAgICAgICAgY2FzZSBT
aW1kSW5mbzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBTaW1wbGVB
ZGRyOgogICAgICAgICBjYXNlIEFkZHI6CkBAIC0xMjYyLDYgKzEyODgsOCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRTY2FsZWRVSW1tMTI8MzI+KG9mZnNldCk7CiAg
ICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRT
Y2FsZWRVSW1tMTI8NjQ+KG9mZnNldCk7CisgICAgICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzA4LDYgKzEzMzYsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGNhc2UgWmVyb1JlZzoKICAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAgICBjYXNlIEV4
dGVuZGVkT2Zmc2V0QWRkcjoKKyAgICAgICAgY2FzZSBTaW1kSW5mbzoKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICBjYXNlIEFkZHI6CiAgICAgICAgIGNhc2UgU3RhY2s6CkBAIC0x
NDc4LDYgKzE1MDcsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFj
cm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbj4obV9vZmZzZXQpOwogICAgIH0KICAgICAKKyAg
ICBTaW1kTGFuZUludGVycHJldGF0aW9uIGxhbmVJbnRlcnByZXRhdGlvbigpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQoaXNTaW1kSW5mbygpKTsKKyAgICAgICAgcmV0dXJuIG1fbGFuZUlu
dGVycHJldGF0aW9uOworICAgIH0KKyAgICAKKyAgICBTaW1kU2lnbkV4dGVuZE1vZGUgc2lnbkV4
dGVuZE1vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU2ltZEluZm8oKSk7Cisg
ICAgICAgIHJldHVybiBtX3NpZ25FeHRlbmRNb2RlOworICAgIH0KKyAgICAKICAgICAvLyBUZWxs
cyB5b3UgaWYgdGhlIEFyZyBpcyBpbnZlcnRpYmxlLiBPbmx5IGNvbmRpdGlvbiBhcmd1bWVudHMg
YXJlIGludmVydGlibGUsIGFuZCBldmVuIGZvciB0aG9zZSwgdGhlcmUKICAgICAvLyBhcmUgYSBm
ZXcgZXhjZXB0aW9ucyAtIG5vdGFibHkgT3ZlcmZsb3cgYW5kIFNpZ25lZC4KICAgICBib29sIGlz
SW52ZXJ0aWJsZSgpIGNvbnN0CkBAIC0xNTYwLDYgKzE2MDEsOCBAQCBwcml2YXRlOgogICAgIGlu
dDMyX3QgbV9zY2FsZSB7IDEgfTsKICAgICBBaXI6OlRtcCBtX2Jhc2U7CiAgICAgQWlyOjpUbXAg
bV9pbmRleDsKKyAgICBTaW1kTGFuZUludGVycHJldGF0aW9uIG1fbGFuZUludGVycHJldGF0aW9u
OworICAgIFNpbWRTaWduRXh0ZW5kTW9kZSBtX3NpZ25FeHRlbmRNb2RlOwogfTsKIAogc3RydWN0
IEFyZ0hhc2ggewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
Q2FsbFNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNw
ZWNpYWwuY3BwCmluZGV4IDhmZTBhYWU5N2I0NS4uNGRjZmZhZTAzMzJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwCkBAIC0zNyw3ICsz
Nyw3IEBAIENDYWxsU3BlY2lhbDo6Q0NhbGxTcGVjaWFsKCkKICAgICBtX2Nsb2JiZXJlZFJlZ3Mg
PSBSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9jbG9iYmVyZWRSZWdzLmV4Y2x1
ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOwogICAgIG1fY2xvYmJlcmVkUmVncy5l
eGNsdWRlKFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgIG1f
Y2xvYmJlcmVkUmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkp
OworICAgIG1fY2xvYmJlcmVkUmVncy5zZXQoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3Rl
cnMoKSk7IC8vIFRPRE8KICAgICBtX2Nsb2JiZXJlZFJlZ3MuY2xlYXIoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOwogICAgIG1fY2xvYmJlcmVkUmVncy5jbGVhcihHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUjIpOwogICAgIG1fY2xvYmJlcmVkUmVncy5jbGVhcihGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQ
Uik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsaW5n
Q29udmVudGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsaW5n
Q29udmVudGlvbi5jcHAKaW5kZXggZDIzZWExYjRlZjMyLi40NjY1M2RhNjA4MDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsaW5nQ29udmVudGlv
bi5jcHAKQEAgLTk5LDYgKzk5LDcgQEAgVG1wIGNDYWxsUmVzdWx0KFR5cGUgdHlwZSkKICAgICBj
YXNlIEZsb2F0OgogICAgIGNhc2UgRG91YmxlOgogICAgICAgICByZXR1cm4gVG1wKEZQUkluZm86
OnJldHVyblZhbHVlRlBSKTsKKyAgICBjYXNlIFYxMjg6CiAgICAgY2FzZSBUdXBsZToKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJFbWl0U2h1ZmZsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVt
aXRTaHVmZmxlLmNwcAppbmRleCA1YzI3YjRlYmY5N2IuLmY4MzAxYWRiMTYzNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewog
bmFtZXNwYWNlIHsKIAogbmFtZXNwYWNlIEFpckVtaXRTaHVmZmxlSW50ZXJuYWwgewotc3RhdGlj
IGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCB2
ZXJib3NlID0gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRm9ybVRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZvcm1UYWJsZS5oCmluZGV4IDZhNDJkMmVlYmQ1ZS4u
MDE3ZmM2N2ZiNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckZvcm1UYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRm9ybVRh
YmxlLmgKQEAgLTM2LDEyICszNiwxMiBAQCBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgZm9ybVJv
bGVNYXNrID0gMTU7CiBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgZm9ybUJhbmtTaGlmdCA9IDQ7
CiBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgZm9ybUJhbmtNYXNrID0gMTsKIHN0YXRpYyBjb25z
dGV4cHIgdWludDhfdCBmb3JtV2lkdGhTaGlmdCA9IDU7Ci1zdGF0aWMgY29uc3RleHByIHVpbnQ4
X3QgZm9ybVdpZHRoTWFzayA9IDM7Ci1zdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgZm9ybUludmFs
aWRTaGlmdCA9IDc7CitzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgZm9ybVdpZHRoTWFzayA9IDQ7
CitzdGF0aWMgY29uc3RleHByIHVpbnQxNl90IGZvcm1JbnZhbGlkU2hpZnQgPSA4OwogCiAjZGVm
aW5lIEVOQ09ERV9JTlNUX0ZPUk0ocm9sZSwgYmFuaywgd2lkdGgpIChzdGF0aWNfY2FzdDx1aW50
OF90Pihyb2xlKSA8PCBmb3JtUm9sZVNoaWZ0IHwgc3RhdGljX2Nhc3Q8dWludDhfdD4oYmFuaykg
PDwgZm9ybUJhbmtTaGlmdCB8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHdpZHRoKSA8PCBmb3JtV2lk
dGhTaGlmdCkKIAotI2RlZmluZSBJTlZBTElEX0lOU1RfRk9STSAoMSA8PCBmb3JtSW52YWxpZFNo
aWZ0KQorI2RlZmluZSBJTlZBTElEX0lOU1RfRk9STSAoMCkKIAogSlNfRVhQT1JUX1BSSVZBVEUg
ZXh0ZXJuIGNvbnN0IHVpbnQ4X3QgZ19mb3JtVGFibGVbXTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckhlbHBlcnMuaAppbmRleCA5MDcwNDEzY2JlZGUuLmFiZDdmMDU2NTg1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIZWxwZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIZWxwZXJzLmgKQEAgLTQzLDYgKzQz
LDggQEAgaW5saW5lIEFpcjo6T3Bjb2RlIG1vdmVGb3JUeXBlKFR5cGUgdHlwZSkKICAgICAgICAg
cmV0dXJuIE1vdmVGbG9hdDsKICAgICBjYXNlIERvdWJsZToKICAgICAgICAgcmV0dXJuIE1vdmVE
b3VibGU7CisgICAgY2FzZSBWMTI4OgorICAgICAgICByZXR1cm4gTW92ZVZlY3RvcjsKICAgICBj
YXNlIFZvaWQ6CiAgICAgY2FzZSBUdXBsZToKICAgICAgICAgYnJlYWs7CkBAIC03Nyw2ICs3OSw4
IEBAIGlubGluZSBBaXI6Ok9wY29kZSByZWxheGVkTW92ZUZvclR5cGUoVHlwZSB0eXBlKQogICAg
ICAgICByZXR1cm4gTW92ZUZsb2F0OwogICAgIGNhc2UgRG91YmxlOgogICAgICAgICByZXR1cm4g
TW92ZURvdWJsZTsKKyAgICBjYXNlIFYxMjg6CisgICAgICAgIHJldHVybiBNb3ZlVmVjdG9yOwog
ICAgIGNhc2UgVm9pZDoKICAgICBjYXNlIFR1cGxlOgogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNw
cAppbmRleCAyMjFhZTczYTFjYjUuLjMyODYxOTgwMzFiMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcApAQCAtMTMy
LDcgKzEzMiw3IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiAgICAgICAg
ICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICAgICAgU3RhY2tTbG90KiYgc2xvdCA9IHNs
b3RzW2JhbmtdW2ldOwogICAgICAgICAgICAgICAgIGlmICghc2xvdCkKLSAgICAgICAgICAgICAg
ICAgICAgc2xvdCA9IGNvZGUuYWRkU3RhY2tTbG90KGJ5dGVzKGNvbnNlcnZhdGl2ZVdpZHRoKGJh
bmspKSwgU3RhY2tTbG90S2luZDo6U3BpbGwpOworICAgICAgICAgICAgICAgICAgICBzbG90ID0g
Y29kZS5hZGRTdGFja1Nsb3QoYnl0ZXNGb3JXaWR0aChjb25zZXJ2YXRpdmVXaWR0aChiYW5rKSks
IFN0YWNrU2xvdEtpbmQ6OlNwaWxsKTsKICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBBcmc6
OnN0YWNrKHNsb3RzW2JhbmtdW2ldKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTgw
LDcgKzE4MCw3IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiAKICAgICAg
ICAgICAgICAgICBSZWdpc3RlclNldCBsaXZlUmVncyA9IHVzZWRSZWdpc3RlcnMuZ2V0KCZpbnN0
KTsKICAgICAgICAgICAgICAgICBSZWdpc3RlclNldCByZWdzVG9TYXZlID0gbGl2ZVJlZ3M7Ci0g
ICAgICAgICAgICAgICAgcmVnc1RvU2F2ZS5leGNsdWRlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZl
UmVnaXN0ZXJzKCkpOworLy8gICAgICAgICAgICAgICAgcmVnc1RvU2F2ZS5leGNsdWRlKFJlZ2lz
dGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOyAvLyBUT0RPCiAgICAgICAgICAgICAgICAg
cmVnc1RvU2F2ZS5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKICAgICAg
ICAgICAgICAgICByZWdzVG9TYXZlLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdh
cmVSZWdpc3RlcnMoKSk7CiAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIGxvd2VyQWZ0ZXJSZWdB
bGxvYyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgQXJnIGFyZyh0bXApOwog
ICAgICAgICAgICAgICAgICAgICAgICAgV2lkdGggd2lkdGggPSBjb25zZXJ2YXRpdmVXaWR0aChh
cmcuYmFuaygpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWNrU2xvdCogc3RhY2tTbG90
ID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLmFkZFN0YWNrU2xvdChieXRlcyh3
aWR0aCksIFN0YWNrU2xvdEtpbmQ6OlNwaWxsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb2RlLmFkZFN0YWNrU2xvdChieXRlc0ZvcldpZHRoKHdpZHRoKSwgU3RhY2tTbG90S2luZDo6
U3BpbGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgcGFpcnMuYXBwZW5kKFNodWZmbGVQYWly
KGFyZywgQXJnOjpzdGFjayhzdGFja1Nsb3QpLCB3aWR0aCkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhY2tTbG90cy5hcHBlbmQoc3RhY2tTbG90KTsKICAgICAgICAgICAgICAgICAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyTWFj
cm9zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJNYWNyb3MuY3Bw
CmluZGV4IDg1MTgwZTMyNTY1Mi4uYTdiNmJiYjhiMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyTWFjcm9zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyTWFjcm9zLmNwcApAQCAtMTE0LDYgKzExNCw5IEBAIHZv
aWQgbG93ZXJNYWNyb3MoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICBjYXNlIEludDY0Ogog
ICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCArIDEsIE1v
dmUsIHZhbHVlLCByZXN1bHQsIHJlc3VsdERzdCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgVjEyODoKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0Lmluc2VydChpbnN0SW5kZXggKyAxLCBNb3ZlVmVjdG9yLCB2YWx1ZSwgcmVzdWx0LCBy
ZXN1bHREc3QpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpckxvd2VyU3RhY2tBcmdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyTG93ZXJTdGFja0FyZ3MuY3BwCmluZGV4IDA1NTc0ODkxMjI2ZS4uMjcxNjI0NzBhMWUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyU3RhY2tBcmdz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyU3RhY2tBcmdz
LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgbG93ZXJTdGFja0FyZ3MoQ29kZSYgY29kZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWNrU2xvdCogc2xvdCA9IGFyZy5zdGFja1Nsb3Qo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcmc6OmlzWkRlZihyb2xlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICYmIHNsb3QtPmtpbmQoKSA9PSBTdGFja1Nsb3RLaW5kOjpT
cGlsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHNsb3QtPmJ5dGVTaXplKCkgPiBi
eXRlcyh3aWR0aCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzbG90LT5ieXRl
U2l6ZSgpID4gYnl0ZXNGb3JXaWR0aCh3aWR0aCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBoYW5kbGUgdGhpcyBzaW1wbGUgY2FzZSBiZWNhdXNl
IGl0J3MgdGhlIG9ubHkgb25lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBh
cmlzZXM6IFpEZWYncyBhcmUgb25seSAzMi1iaXQgcmlnaHQgbm93LiBTbywgd2hlbiB3ZSBoaXQg
dGhlc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3NlcnRpb25zIGl0IG1lYW5z
IHRoYXQgd2UgbmVlZCB0byBpbXBsZW1lbnQgdGhvc2Ugb3RoZXIga2luZHMgb2YKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IDg0ZmJlMTI4
OWYzNC4uMTA5NTBmMTBkY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyT3Bjb2RlLm9wY29kZXMKQEAgLTEwNyw2ICsxMDcsOCBAQAogCiBOb3AKIAorQnJlYWtwb2lu
dCAvZWZmZWN0cworCiBBZGQzMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIEltbSwgVG1w
LCBUbXAKICAgICBUbXAsIFRtcCwgVG1wCkBAIC03NDAsNiArNzQyLDEzIEBAIE1vdmVEb3VibGUg
VTpGOjY0LCBEOkY6NjQKIAogTW92ZURvdWJsZSBVOkY6NjQsIEQ6Rjo2NCwgUzpGOjY0CiAgICAg
QWRkciwgQWRkciwgVG1wCisgICAgCitNb3ZlVmVjdG9yIFU6Rjo2NCwgRDpGOjY0CisgICAgVG1w
LCBUbXAKKyAgICBBZGRyLCBUbXAgYXMgbG9hZERvdWJsZQorICAgIEluZGV4LCBUbXAgYXMgbG9h
ZERvdWJsZQorICAgIFRtcCwgQWRkciBhcyBzdG9yZURvdWJsZQorICAgIFRtcCwgSW5kZXggYXMg
c3RvcmVEb3VibGUKIAogTW92ZVplcm9Ub0RvdWJsZSBEOkY6NjQKICAgICBUbXAKQEAgLTE2MTUs
NiArMTYyNCwxMiBAQCBSZXRGbG9hdCBVOkY6MzIgL3JldHVybgogUmV0RG91YmxlIFU6Rjo2NCAv
cmV0dXJuCiAgICAgVG1wCiAKK1JlcGxhY2VMYW5lIFU6RzpQdHIsIFU6Rzo4LCBVOkc6NjQsIFVE
OkY6MTI4CisgICAgU2ltZEluZm8sIEltbSwgVG1wLCBUbXAKKyAgICAKK0V4dHJhY3RMYW5lIFU6
RzpQdHIsIFU6Rzo4LCBVOkY6MTI4LCBEOkc6NjQKKyAgICBTaW1kSW5mbywgSW1tLCBUbXAsIFRt
cAorCiBPb3BzIC90ZXJtaW5hbAogCiAjIFRoaXMgaXMgYSB0ZXJtaW5hbCBidXQgd2UgZXhwcmVz
cyBpdCBhcyBhIEN1c3RvbSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgaXQgdG8gaGF2ZSBhIGNvZGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRv
ci5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgpp
bmRleCAwNTVjMDVhMGEzYzguLmY4MDc5NTNiZjMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgpAQCAtMjI5LDcgKzIyOSw3IEBAIGRl
ZiBpc0dGKHRva2VuKQogZW5kCiAKIGRlZiBpc0tpbmQodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xB
KChUbXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02NCl8KFplcm9SZWcpfChTaW1w
bGVBZGRyKXwoQWRkcil8KEV4dGVuZGVkT2Zmc2V0QWRkcil8KEluZGV4KXwoUHJlSW5kZXgpfChQ
b3N0SW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERvdWJsZUNvbmQpfChTdGF0dXNDb25kKSlc
Wi8KKyAgICB0b2tlbiA9fiAvXEEoKFRtcCl8KEltbSl8KEJpZ0ltbSl8KEJpdEltbSl8KEJpdElt
bTY0KXwoWmVyb1JlZyl8KFNpbXBsZUFkZHIpfChBZGRyKXwoRXh0ZW5kZWRPZmZzZXRBZGRyKXwo
SW5kZXgpfChQcmVJbmRleCl8KFBvc3RJbmRleCl8KFJlbENvbmQpfChSZXNDb25kKXwoRG91Ymxl
Q29uZCl8KFN0YXR1c0NvbmQpfChTaW1kSW5mbykpXFovCiBlbmQKIAogZGVmIGlzQXJjaCh0b2tl
bikKQEAgLTIzNyw3ICsyMzcsNyBAQCBkZWYgaXNBcmNoKHRva2VuKQogZW5kCiAKIGRlZiBpc1dp
ZHRoKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgoOCl8KDE2KXwoMzIpfCg2NCl8KFB0cikpXFov
CisgICAgdG9rZW4gPX4gL1xBKCg4KXwoMTYpfCgzMil8KDY0KXwoUHRyKXwoMTI4KSlcWi8KIGVu
ZAogCiBkZWYgaXNLZXl3b3JkKHRva2VuKQpAQCAtMzEwLDcgKzMxMCw3IEBAIGNsYXNzIFBhcnNl
cgogCiAgICAgZGVmIGNvbnN1bWVXaWR0aAogICAgICAgICByZXN1bHQgPSB0b2tlbi5zdHJpbmcK
LSAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQgd2lkdGggKDgsIDE2LCAzMiwgb3IgNjQpIikg
dW5sZXNzIGlzV2lkdGgocmVzdWx0KQorICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCB3aWR0
aCAoOCwgMTYsIDMyLCA2NCwgb3IgMTI4KSIpIHVubGVzcyBpc1dpZHRoKHJlc3VsdCkKICAgICAg
ICAgYWR2YW5jZQogICAgICAgICByZXN1bHQKICAgICBlbmQKQEAgLTk0MSw2ICs5NDEsNyBAQCB3
cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICB3aGVuICJEb3VibGVD
b25kIgogICAgICAgICAgICAgICAgIHdoZW4gIlN0YXR1c0NvbmQiCiAgICAgICAgICAgICAgICAg
d2hlbiAiWmVyb1JlZyIKKyAgICAgICAgICAgICAgICB3aGVuICJTaW1kSW5mbyIKICAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVkIGtpbmQ6
ICN7a2luZC5uYW1lfSIKICAgICAgICAgICAgICAgICBlbmQKQEAgLTEyNTMsNiArMTI1NCw4IEBA
IHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgICAgICBvdXRwLnBy
aW50ICJhcmdzWyN7aW5kZXh9XS5hc0RvdWJsZUNvbmRpdGlvbigpIgogICAgICAgICAgICAgICAg
IHdoZW4gIlN0YXR1c0NvbmQiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3Nb
I3tpbmRleH1dLmFzU3RhdHVzQ29uZGl0aW9uKCkiCisgICAgICAgICAgICAgICAgd2hlbiAiU2lt
ZEluZm8iCisgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmxh
bmVJbnRlcnByZXRhdGlvbigpLCBhcmdzWyN7aW5kZXh9XS5zaWduRXh0ZW5kTW9kZSgpIgogICAg
ICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAppbmRleCA1YmY2N2I2MWI2MmIuLmRi
M2NjZDQ0NjdjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlRHVtcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVEdW1wZXIuY3BwCkBAIC04Niw2ICs4Niw4IEBAIGludCBCeXRlY29kZUR1bXBlcjxCbG9j
az46Om91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQp
CiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KIENTdHJpbmcgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpj
b25zdGFudE5hbWUoVmlydHVhbFJlZ2lzdGVyIHJlZykgY29uc3QKIHsKKyAgICBpZiAocmVnLnRv
Q29uc3RhbnRJbmRleCgpID49IChpbnQpIGJsb2NrKCktPmNvbnN0YW50UmVnaXN0ZXJzKCkuc2l6
ZSgpKQorICAgICAgICByZXR1cm4gdG9DU3RyaW5nKCJJTlZBTElEX0NPTlNUQU5UKCIsIHJlZywg
IikiKTsKICAgICBhdXRvIHZhbHVlID0gYmxvY2soKS0+Z2V0Q29uc3RhbnQocmVnKTsKICAgICBy
ZXR1cm4gdG9DU3RyaW5nKHZhbHVlLCAiKCIsIHJlZywgIikiKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGI5NjJiMjhjZTYyZi4u
ZmQ0NjUwOTY3ZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIKQEAgLTE1MjIsNiArMTUyMiw3IEBAIG9wIDp3aWRlMzIKIAogb3AgOmVudGVy
CiBvcCA6bm9wCitvcCA6YnJlYWsKIG9wIDpsb29wX2hpbnQKIAogb3AgOm1vdiwKQEAgLTE2NzYs
MTQgKzE2NzcsMTQgQEAgb3AgOmNhbGwsCiAgICAgYXJnczogewogICAgICAgICBmdW5jdGlvbklu
ZGV4OiB1bnNpZ25lZCwKICAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAotICAgICAgICBu
dW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCisgICAgICAgIHNpemVPZlN0YWNrQXJnczogdW5z
aWduZWQsCiAgICAgfQogCiBvcCA6Y2FsbF9ub190bHMsCiAgICAgYXJnczogewogICAgICAgICBm
dW5jdGlvbkluZGV4OiB1bnNpZ25lZCwKICAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAot
ICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCisgICAgICAgIHNpemVPZlN0YWNr
QXJnczogdW5zaWduZWQsCiAgICAgfQogCiBvcCA6Y2FsbF9pbmRpcmVjdCwKQEAgLTE2OTEsNyAr
MTY5Miw3IEBAIG9wIDpjYWxsX2luZGlyZWN0LAogICAgICAgICBmdW5jdGlvbkluZGV4OiBWaXJ0
dWFsUmVnaXN0ZXIsCiAgICAgICAgIHNpZ25hdHVyZUluZGV4OiB1bnNpZ25lZCwKICAgICAgICAg
c3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAotICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWdu
ZWQsCisgICAgICAgIHNpemVPZlN0YWNrQXJnczogdW5zaWduZWQsCiAgICAgICAgIHRhYmxlSW5k
ZXg6IHVuc2lnbmVkLAogICAgIH0KIApAQCAtMTcwMCw3ICsxNzAxLDcgQEAgb3AgOmNhbGxfaW5k
aXJlY3Rfbm9fdGxzLAogICAgICAgICBmdW5jdGlvbkluZGV4OiBWaXJ0dWFsUmVnaXN0ZXIsCiAg
ICAgICAgIHNpZ25hdHVyZUluZGV4OiB1bnNpZ25lZCwKICAgICAgICAgc3RhY2tPZmZzZXQ6IHVu
c2lnbmVkLAotICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCisgICAgICAgIHNp
emVPZlN0YWNrQXJnczogdW5zaWduZWQsCiAgICAgICAgIHRhYmxlSW5kZXg6IHVuc2lnbmVkLAog
ICAgIH0KIApAQCAtMTcwOSw3ICsxNzEwLDcgQEAgb3AgOmNhbGxfcmVmLAogICAgICAgICBmdW5j
dGlvblJlZmVyZW5jZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBzaWduYXR1cmVJbmRleDog
dW5zaWduZWQsCiAgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKLSAgICAgICAgbnVtYmVy
T2ZTdGFja0FyZ3M6IHVuc2lnbmVkLAorICAgICAgICBzaXplT2ZTdGFja0FyZ3M6IHVuc2lnbmVk
LAogICAgIH0KIAogb3AgOmNhbGxfcmVmX25vX3RscywKQEAgLTE3MTcsNyArMTcxOCw3IEBAIG9w
IDpjYWxsX3JlZl9ub190bHMsCiAgICAgICAgIGZ1bmN0aW9uUmVmZXJlbmNlOiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgICAgIHNpZ25hdHVyZUluZGV4OiB1bnNpZ25lZCwKICAgICAgICAgc3RhY2tP
ZmZzZXQ6IHVuc2lnbmVkLAotICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCisg
ICAgICAgIHNpemVPZlN0YWNrQXJnczogdW5zaWduZWQsCiAgICAgfQogCiBvcCA6Y3VycmVudF9t
ZW1vcnksCkBAIC0xODkxLDUgKzE4OTIsMTYgQEAgb3BfZ3JvdXAgOkNhdGNoQWxsLAogICAgIGFy
Z3M6IHsKICAgICAgICAgZXhjZXB0aW9uOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfQorICAgIAor
c2ltZF9vcF9ncm91cCA6U2ltZExhbmUsCisgICAgWworICAgICAgICA6c2ltZF9leHRyYWN0X2xh
bmUsCisgICAgXSwKKyAgICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAor
ICAgICAgICBsYW5lOiB1bnNpZ25lZCwKKyAgICAgICAgdjogVmlydHVhbFJlZ2lzdGVyLAorICAg
IH0sCisgICAgbWFrZVNpZ25lZFZhcmlhbnRzOiB0cnVlCiAKIGVuZF9zZWN0aW9uIDpXYXNtCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21t
b24uaAppbmRleCBkYmEwZmUzMjJiZjguLjk2OGI1NjgxOTcxMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCkBAIC01NSw2
ICs1NSw3IEBAIHZvaWQgYWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGVyVGh1bmso
TWFjcm9Bc3NlbWJsZXImIGppdCwgVk0mIHZtLCBKSVRUCiAgICAgICAgIHJlZ2lzdGVyc1RvUHJl
c2VydmUubWVyZ2UoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICB9
CiAKKyAgICBBU1NFUlQoIXJlZ2lzdGVyc1RvUHJlc2VydmUubnVtYmVyT2ZTZXRGUFJzKCkpOwog
ICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZih2b2lkKikgKiByZWdpc3RlcnNUb1ByZXNl
cnZlLm51bWJlck9mU2V0R1BScygpOwogICAgIGlmIChpc0ZUTE9TUkV4aXQpCiAgICAgICAgIHNj
cmF0Y2hTaXplICs9IHNpemVvZih2b2lkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1RodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5jcHAKaW5kZXggMGM0ZDE5NWQ5MTQ4Li41YmYzODg2NGU4MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUo
REZHX0pJVCkKIAogI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgiCisjaW5jbHVk
ZSAiQjNXaWR0aC5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkRGR0pJ
VENvZGUuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCkBAIC00Nyw3ICs0OCw3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdEdlbmVyYXRpb25UaHVua0dl
bmVyYXRvcihWTSYgdm0pCiAgICAgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlIHdlIHVz
ZSB0aGUgc2NyYXRjaCBidWZmZXIgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGFsc28gdXNlcyB0aGUg
c2NyYXRjaCBidWZmZXIuCiAgICAgYWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGVy
VGh1bms8REZHOjpKSVRDb2RlPihqaXQsIHZtLCBKSVRUeXBlOjpERkdKSVQpOwogICAgIAotICAg
IHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgc2l6
ZV90IHNjcmF0Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIEdQUkluZm86Om51bWJl
ck9mUmVnaXN0ZXJzICsgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIz
OjpGUCkpICogRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7CiAgICAgU2NyYXRjaEJ1ZmZlciog
c2NyYXRjaEJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNjcmF0Y2hTaXplKTsKICAg
ICBFbmNvZGVkSlNWYWx1ZSogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihz
Y3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpOwogCkBAIC04NCw4ICs4NSw4IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVy
YXRvcihWTSYgdm0pCiAgICAgc3RvcmVTcG9vbGVyLmZpbmFsaXplR1BSKCk7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewot
ICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsg
aSkgKiBzaXplb2YoZG91YmxlKTsKLSAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3JlRlBSKHsgRlBS
SW5mbzo6dG9SZWdpc3RlcihpKSwgb2Zmc2V0IH0pOworICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0
ID0gKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSAqIEIzOjpieXRlc0ZvcldpZHRoKEIz
Ojpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSAvIDgpICogc2l6ZW9mKGRvdWJsZSk7CisgICAg
ICAgIHN0b3JlU3Bvb2xlci5zdG9yZUZQUih7IEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIG9mZnNl
dCB9LCBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOwog
ICAgIH0KICAgICBzdG9yZVNwb29sZXIuZmluYWxpemVGUFIoKTsKIApAQCAtMTA1LDggKzEwNiw4
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdEdlbmVyYXRp
b25UaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgbG9hZFNwb29sZXIuZmluYWxpemVHUFIoKTsK
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVy
czsgKytpKSB7Ci0gICAgICAgIHB0cmRpZmZfdCBvZmZzZXQgPSAoR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnMgKyBpKSAqIHNpemVvZihkb3VibGUpOwotICAgICAgICBsb2FkU3Bvb2xlci5sb2Fk
RlBSKHsgRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgb2Zmc2V0IH0pOworICAgICAgICBwdHJkaWZm
X3Qgb2Zmc2V0ID0gKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSAqIEIzOjpieXRlc0Zv
cldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSAvIDgpICogc2l6ZW9mKGRvdWJs
ZSk7CisgICAgICAgIGxvYWRTcG9vbGVyLmxvYWRGUFIoeyBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkp
LCBvZmZzZXQgfSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpG
UCkpKTsKICAgICB9CiAgICAgbG9hZFNwb29sZXIuZmluYWxpemVGUFIoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5j
cHAKaW5kZXggOGQ0ZDEyOTUxNWQ2Li5iYWMyZjE4YjczNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcApAQCAt
NzQsNiArNzQsOCBAQCBzdGF0aWMgY29uc3QgT3Bjb2RlR3JvdXBJbml0aWFsaXplciBvcGNvZGVH
cm91cExpc3RbXSA9IHsKICAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgwYiwgQTY0RE9wY29kZUFk
ZFN1YnRyYWN0U2hpZnRlZFJlZ2lzdGVyKSwKICAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgwYywg
QTY0RE9wY29kZUxvYWRTdG9yZVJlZ2lzdGVyUGFpciksCiAgICAgT1BDT0RFX0dST1VQX0VOVFJZ
KDB4MGQsIEE2NERPcGNvZGVMb2FkU3RvcmVSZWdpc3RlclBhaXIpLAorICAgIE9QQ09ERV9HUk9V
UF9FTlRSWSgweDBlLCBBNjRET3Bjb2RlVmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsMVNvdXJj
ZSksCisgICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MGUsIEE2NERPcGNvZGVWZWN0b3JEYXRhUHJv
Y2Vzc2luZ0xvZ2ljYWwyU291cmNlKSwKICAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxMSwgQTY0
RE9wY29kZUFkZFN1YnRyYWN0SW1tZWRpYXRlKSwKICAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgx
MiwgQTY0RE9wY29kZU1vdmVXaWRlKSwKICAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxMiwgQTY0
RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGUpLApAQCAtMTY0Myw2ICsxNjQ1LDU2IEBAIGNvbnN0IGNo
YXIqIEE2NERPcGNvZGVVbmNvbmRpdGlvbmFsQnJhbmNoUmVnaXN0ZXI6OmZvcm1hdCgpCiAgICAg
cmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCitjb25zdCBjaGFyKiBBNjRET3Bjb2RlVmVjdG9y
RGF0YVByb2Nlc3NpbmdMb2dpY2FsMVNvdXJjZTo6Zm9ybWF0KCkKK3sKKyAgICBhcHBlbmRJbnN0
cnVjdGlvbk5hbWUob3BOYW1lKCkpOworICAgIGFwcGVuZFNpbWRMYW5lSW5kZXhBbmRUeXBlKChx
KCkgPDwgNikgfCBpbW01KCkpOworICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgIGFwcGVuZFJl
Z2lzdGVyTmFtZShyZCgpKTsKKyAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICBhcHBlbmRSZWdp
c3Rlck5hbWUocnQoKSk7CisgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgcmV0dXJuIG1fZm9y
bWF0QnVmZmVyOworfQorCitjb25zdCBjaGFyKiBBNjRET3Bjb2RlVmVjdG9yRGF0YVByb2Nlc3Np
bmdMb2dpY2FsMVNvdXJjZTo6b3BOYW1lKCkKK3sKKyAgICBzd2l0Y2ggKG9wMTBfMTUoKSkgewor
ICAgIGNhc2UgMGIwMDAxMTE6CisgICAgICAgIHJldHVybiAiaW5zIjsKKyAgICBjYXNlIDBiMDAx
MTExOgorICAgICAgICByZXR1cm4gInVtb3YiOworICAgIGRlZmF1bHQ6CisgICAgICAgIGRhdGFM
b2dMbigiRGlzc2Fzc2VtYmxlciBzYXcgdW5rbm93biBzaW1kIG9uZSBzb3VyY2UgaW5zdHJ1Y3Rp
b24gb3Bjb2RlICIsIG9wMTBfMTUoKSk7CisgICAgICAgIHJldHVybiAiU0lNRFVLIjsKKyAgICB9
Cit9CisKK2NvbnN0IGNoYXIqIEE2NERPcGNvZGVWZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwy
U291cmNlOjpmb3JtYXQoKQoreworICAgIGFwcGVuZEluc3RydWN0aW9uTmFtZShvcE5hbWUoKSk7
CisgICAgYXBwZW5kU2ltZExhbmVUeXBlKHEoKSk7CisgICAgYXBwZW5kU2VwYXJhdG9yKCk7Cisg
ICAgYXBwZW5kUmVnaXN0ZXJOYW1lKHJkKCkpOworICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAg
IGFwcGVuZFJlZ2lzdGVyTmFtZShybigpKTsKKyAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICBh
cHBlbmRSZWdpc3Rlck5hbWUocm0oKSk7CisgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgcmV0
dXJuIG1fZm9ybWF0QnVmZmVyOworfQorCitjb25zdCBjaGFyKiBBNjRET3Bjb2RlVmVjdG9yRGF0
YVByb2Nlc3NpbmdMb2dpY2FsMlNvdXJjZTo6b3BOYW1lKCkKK3sKKyAgICBzd2l0Y2ggKG9wMTBf
MTUoKSkgeworICAgIGNhc2UgMGIwMDExMToKKyAgICAgICAgcmV0dXJuICJvcnIiOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGRhdGFMb2dMbigiRGlzc2Fzc2VtYmxlciBzYXcgdW5rbm93biBzaW1k
IDIgc291cmNlIGluc3RydWN0aW9uIG9wY29kZSAiLCBvcDEwXzE1KCkpOworICAgICAgICByZXR1
cm4gIlNJTURVSyI7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QVJNNjREaXNh
c3NlbWJsZXIKIAogI2VuZGlmIC8vIEVOQUJMRShBUk02NF9ESVNBU1NFTUJMRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5o
CmluZGV4IGZhZmViZWE2NzE4Ni4uMWZiYWQ5MWZhNTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaApAQCAtMTk0LDYg
KzE5NCw0MSBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBidWZmZXJQcmludGYoImxzbCAj
JXUiLCAxNiAqIGFtb3VudCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kU2ltZExhbmVJ
bmRleEFuZFR5cGUodW5zaWduZWQgaW1tNikKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGxhbmUg
PSAwOworICAgICAgICBpZiAoKGltbTYgJiAwYjEwMDAwMSkgPT0gMGIwMDAwMDEpIHsKKyAgICAg
ICAgICAgIGJ1ZmZlclByaW50ZigiLjhCIik7CisgICAgICAgICAgICBsYW5lID0gKChpbW02ICYg
MGIwMTExMTApID4+IDEpOworICAgICAgICB9IGVsc2UgaWYgKChpbW02ICYgMGIxMDAwMDEpID09
IDBiMDAwMDAxKSB7CisgICAgICAgICAgICBidWZmZXJQcmludGYoIi4xNkIiKTsKKyAgICAgICAg
ICAgIGxhbmUgPSAoKGltbTYgJiAwYjAxMTExMCkgPj4gMSk7CisgICAgICAgIH0gZWxzZSBpZiAo
KGltbTYgJiAwYjEwMDAxMSkgPT0gMGIwMDAwMTApIHsKKyAgICAgICAgICAgIGJ1ZmZlclByaW50
ZigiLkgiKTsKKyAgICAgICAgICAgIGxhbmUgPSAoKGltbTYgJiAwYjAxMTEwMCkgPj4gMik7Cisg
ICAgICAgIH0gZWxzZSBpZiAoKGltbTYgJiAwYjEwMDExMSkgPT0gMGIwMDAxMDApIHsKKyAgICAg
ICAgICAgIGJ1ZmZlclByaW50ZigiLlMiKTsKKyAgICAgICAgICAgIGxhbmUgPSAoKGltbTYgJiAw
YjAxMTAwMCkgPj4gMyk7CisgICAgICAgICAgICAvLyBUaGlzIGlzIG92ZXJseSBwZXJtaXNzaXZl
OyBmb3Igc29tZSBpbnN0cnVjdGlvbnMgKGxpa2UgdW1vdiksIGJpdCA2IG11c3QgYmUgMS4KKyAg
ICAgICAgfSBlbHNlIGlmICgoaW1tNiAmIDBiMDAxMTExKSA9PSAwYjAwMTAwMCkgeworICAgICAg
ICAgICAgYnVmZmVyUHJpbnRmKCIuRCIpOworICAgICAgICAgICAgbGFuZSA9ICgoaW1tNiAmIDBi
MDEwMDAwKSA+PiA0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigi
RGlzc2Fzc2VtYmxlciBzYXcgaW52YWxpZCBzaW1kIGxhbmUgdHlwZSAiLCBpbW02KTsKKyAgICAg
ICAgICAgIGJ1ZmZlclByaW50ZigiLklOVkFMSURfTEFORV9UWVBFIik7CisgICAgICAgIH0KKyAg
ICAgICAgYnVmZmVyUHJpbnRmKCJbIyV1XSIsIGxhbmUpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGFwcGVuZFNpbWRMYW5lVHlwZSh1bnNpZ25lZCBxKQorICAgIHsKKyAgICAgICAgaWYgKHEgPT0g
MCkgeworICAgICAgICAgICAgYnVmZmVyUHJpbnRmKCIuOEIiKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGJ1ZmZlclByaW50ZigiLjE2QiIpOworICAgICAgICB9CisgICAgfQogCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgYnVmZmVyU2l6ZSA9IDgxOwogCkBAIC05MjksNiArOTY0
LDQyIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBybSgpIHsgcmV0dXJuIHJkKCk7IH0KIH07CiAK
K2NsYXNzIEE2NERPcGNvZGVWZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwxU291cmNlIDogcHVi
bGljIEE2NERPcGNvZGUgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
bWFzayAgICA9IDBiMTAxJzExMTExJzExJzEnMDAwMDAwMDAwMDAwMDAwMDAwMDAwOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDBiMDAwJzAxMTEwJzAwJzAnMDAwMDAw
MDAwMDAwMDAwMDAwMDAwOworCisgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZVZl
Y3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbDFTb3VyY2UsIHRoaXNPYmopOworCisgICAgY29uc3Qg
Y2hhciogZm9ybWF0KCk7CisgICAgY29uc3QgY2hhciogb3BOYW1lKCk7CisgICAgCisgICAgdW5z
aWduZWQgcmQoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMCkgJiAwYjExMTExOyB9CisgICAgdW5z
aWduZWQgcnQoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gNSkgJiAwYjExMTExOyB9CisgICAgdW5z
aWduZWQgb3AxMF8xNSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxMCkgJiAwYjExMTExOyB9Cisg
ICAgdW5zaWduZWQgaW1tNSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxNikgJiAwYjExMTExOyB9
CisgICAgdW5zaWduZWQgcSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAzMCkgJiAwYjE7IH0KK307
CisKK2NsYXNzIEE2NERPcGNvZGVWZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwyU291cmNlIDog
cHVibGljIEE2NERPcGNvZGUgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3QgbWFzayAgICA9IDBiMTAxJzExMTExJzExJzEnMDAwMDAwMDAwMDAwMDAwMDAwMDAwOworICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDBiMDAwJzAxMTEwJzEwJzEnMDAw
MDAwMDAwMDAwMDAwMDAwMDAwOworCisgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29k
ZVZlY3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbDJTb3VyY2UsIHRoaXNPYmopOworCisgICAgY29u
c3QgY2hhciogZm9ybWF0KCk7CisgICAgY29uc3QgY2hhciogb3BOYW1lKCk7CisgICAgCisgICAg
dW5zaWduZWQgcmQoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMCkgJiAwYjExMTExOyB9CisgICAg
dW5zaWduZWQgcm4oKSB7IHJldHVybiAobV9vcGNvZGUgPj4gNSkgJiAwYjExMTExOyB9CisgICAg
dW5zaWduZWQgb3AxMF8xNSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxMCkgJiAwYjExMTExOyB9
CisgICAgdW5zaWduZWQgcm0oKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTYpICYgMGIxMTExMTsg
fQorICAgIHVuc2lnbmVkIHEoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMzApICYgMGIxOyB9Cit9
OworCisKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFSTTY0RGlzYXNzZW1ibGVyCiAKIHVzaW5n
IEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCmluZGV4IDBmMmMwNWU1NmI3Yy4uNGVhYzdmNjQ3
MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcApA
QCAtNDEsNiArNDEsMTQgQEAgc3RhdGljIHNpemVfdCBieXRlc0ZvckdQUnMoKQogICAgIHJldHVy
biBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZSZWdpc3RlcnMoKSAqIHNpemVvZihpbnQ2NF90KTsK
IH0KIAorc3RhdGljIHNpemVfdCBieXRlc0ZvckZQUigpCit7CisgICAgLy8gRklYTUU6IEl0IG1p
Z2h0IGJlIHdvcnRod2hpbGUgc2F2aW5nIHRoZSBmdWxsIHN0YXRlIG9mIHRoZSBGUCByZWdpc3Rl
cnMsIGF0IHNvbWUgcG9pbnQuCisgICAgLy8gUmlnaHQgbm93IHdlIGRvbid0IG5lZWQgdGhpcyBz
aW5jZSB3ZSBvbmx5IGRvIHRoZSBzYXZlL3Jlc3RvcmUganVzdCBwcmlvciB0byBPU1IgZXhpdCwg
YW5kCisgICAgLy8gT1NSIGV4aXQgd2lsbCBiZSBndWFyYW50ZWVkIHRvIG9ubHkgbmVlZCB0aGUg
ZG91YmxlIHBvcnRpb24gb2YgdGhlIEZQIHJlZ2lzdGVycy4KKyAgICByZXR1cm4gc2l6ZW9mKGRv
dWJsZSk7Cit9CisKIHN0YXRpYyBzaXplX3QgYnl0ZXNGb3JGUFJzKCkKIHsKICAgICAvLyBGSVhN
RTogSXQgbWlnaHQgYmUgd29ydGh3aGlsZSBzYXZpbmcgdGhlIGZ1bGwgc3RhdGUgb2YgdGhlIEZQ
IHJlZ2lzdGVycywgYXQgc29tZSBwb2ludC4KQEAgLTYxLDcgKzY5LDcgQEAgc2l6ZV90IG9mZnNl
dE9mR1BSKEdQUlJlZyByZWcpCiAKIHNpemVfdCBvZmZzZXRPZkZQUihGUFJSZWcgcmVnKQogewot
ICAgIHJldHVybiBieXRlc0ZvckdQUnMoKSArIE1hY3JvQXNzZW1ibGVyOjpmcFJlZ2lzdGVySW5k
ZXgocmVnKSAqIHNpemVvZihkb3VibGUpOworICAgIHJldHVybiBieXRlc0ZvckdQUnMoKSArIE1h
Y3JvQXNzZW1ibGVyOjpmcFJlZ2lzdGVySW5kZXgocmVnKSAqIGJ5dGVzRm9yRlBSKCk7CiB9CiAK
IHNpemVfdCBvZmZzZXRPZlJlZyhSZWcgcmVnKQpAQCAtMTM5LDcgKzE0Nyw3IEBAIHZvaWQgc2F2
ZUFsbFJlZ2lzdGVycyhBc3NlbWJseUhlbHBlcnMmIGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSkK
ICAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnID0gTWFjcm9Bc3NlbWJs
ZXI6OmZpcnN0RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lz
dGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3RlcihyZWcpKSB7CiAgICAg
ICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgc3Bvb2xlci5zdG9yZUZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZz
ZXRPZkZQUihyZWcpKSB9KTsKKyAgICAgICAgc3Bvb2xlci5zdG9yZUZQUih7IHJlZywgc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkZQUihyZWcpKSB9LCBieXRlc0ZvckZQUigpKTsKICAg
ICB9CiAgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigpOwogfQpAQCAtMTU4LDcgKzE2Niw3IEBAIHZv
aWQgcmVzdG9yZUFsbFJlZ2lzdGVycyhBc3NlbWJseUhlbHBlcnMmIGppdCwgY2hhciogc2NyYXRj
aE1lbW9yeSkKICAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnID0gTWFj
cm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxh
c3RGUFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3RlcihyZWcp
KSB7CiAgICAgICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJlZykpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgc3Bvb2xlci5sb2FkRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZm
X3Q+KG9mZnNldE9mRlBSKHJlZykpIH0pOworICAgICAgICBzcG9vbGVyLmxvYWRGUFIoeyByZWcs
IHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ob2Zmc2V0T2ZGUFIocmVnKSkgfSwgYnl0ZXNGb3JGUFIo
KSk7CiAgICAgfQogICAgIHNwb29sZXIuZmluYWxpemVGUFIoKTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAppbmRleCBiNGU0NzU4ZTU4ZmIu
LjJlMjM1NWI0MTM0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
bG93UGF0aENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1Bh
dGhDYWxsLmNwcApAQCAtNDcsNyArNDcsNyBAQCBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0
aENhbGxDb250ZXh0KAogICAgIC8vIFdlIGRvbid0IGNhcmUgdGhhdCB5b3UncmUgdXNpbmcgY2Fs
bGVlLXNhdmUsIHN0YWNrLCBvciBoYXJkd2FyZSByZWdpc3RlcnMuCiAgICAgdXNlZFJlZ2lzdGVy
cy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKICAgICB1c2VkUmVnaXN0
ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7Ci0g
ICAgdXNlZFJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJz
KCkpOworICAgIHVzZWRSZWdpc3RlcnMuc2V0KFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0
ZXJzKCkpOyAvLyBUT0RPCiAgICAgICAgIAogICAgIC8vIFRoZSByZXR1cm4gcmVnaXN0ZXIgZG9l
c24ndCBuZWVkIHRvIGJlIHNhdmVkLgogICAgIGlmIChtX3JldHVyblJlZ2lzdGVyICE9IEludmFs
aWRHUFJSZWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5r
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKaW5kZXggZGU4
MjEzODUxMGYxLi42YWEwNmM2MGViZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRo
dW5rcy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAogI2luY2x1
ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgiCisjaW5jbHVkZSAiQjNXaWR0aC5oIgogI2lu
Y2x1ZGUgIkRGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIgogI2luY2x1ZGUgIkZUTE9TUkV4aXRD
b21waWxlci5oIgogI2luY2x1ZGUgIkZUTE9wZXJhdGlvbnMuaCIKQEAgLTE0NSw3ICsxNDYsNyBA
QCBzdGF0aWMgdm9pZCByZWdpc3RlckNsb2JiZXJDaGVjayhBc3NlbWJseUhlbHBlcnMmIGppdCwg
UmVnaXN0ZXJTZXQgZG9udENsb2JiZXIpCiAgICAgUmVnaXN0ZXJTZXQgY2xvYmJlciA9IFJlZ2lz
dGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKICAgICBjbG9iYmVyLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6
OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CiAgICAgY2xvYmJlci5leGNsdWRlKFJlZ2lz
dGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKLSAgICBjbG9iYmVyLmV4Y2x1ZGUoUmVnaXN0ZXJT
ZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgY2xvYmJlci5zZXQoUmVnaXN0ZXJTZXQ6
OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7IC8vIFRPRE8KICAgICBjbG9iYmVyLmV4Y2x1ZGUoZG9u
dENsb2JiZXIpOwogICAgIAogICAgIEdQUlJlZyBzb21lR1BSID0gSW52YWxpZEdQUlJlZzsKQEAg
LTE5Myw4ICsxOTQsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNs
b3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgUwogICAgIGZvciAoTWFjcm9B
c3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lz
dGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gc3Rh
dGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRD4ocmVnICsgMSkpIHsKICAgICAg
ICAgaWYgKCFrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKQogICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIHN0b3JlU3Bvb2xlci5zdG9yZUZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRy
ZGlmZl90PihjdXJyZW50T2Zmc2V0KSB9KTsKLSAgICAgICAgY3VycmVudE9mZnNldCArPSBzaXpl
b2YoZG91YmxlKTsKKyAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3JlRlBSKHsgcmVnLCBzdGF0aWNf
Y2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0sIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpj
b25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CisgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gQjM6
OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpOwogICAgIH0KICAg
ICBzdG9yZVNwb29sZXIuZmluYWxpemVGUFIoKTsKIApAQCAtMjIwLDggKzIyMSw4IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0
b3IoVk0mIHZtLCBjb25zdCBTCiAKICAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVy
SUQgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IDsgcmVnID0gc3RhdGlj
X2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRD4ocmVnIC0gMSkpIHsKICAgICAgICAg
aWYgKGtleS51c2VkUmVnaXN0ZXJzKCkuZ2V0KHJlZykpIHsKLSAgICAgICAgICAgIGN1cnJlbnRP
ZmZzZXQgLT0gc2l6ZW9mKGRvdWJsZSk7Ci0gICAgICAgICAgICBsb2FkU3Bvb2xlci5sb2FkRlBS
KHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0pOworICAgICAg
ICAgICAgY3VycmVudE9mZnNldCAtPSBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZl
V2lkdGgoQjM6OkZQKSk7CisgICAgICAgICAgICBsb2FkU3Bvb2xlci5sb2FkRlBSKHsgcmVnLCBz
dGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0sIEIzOjpieXRlc0ZvcldpZHRo
KEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KHJlZyA9PSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCkpCiAgICAgICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJi
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKaW5kZXggNmYwYThmMWE4
MDNlLi5iZTBmZTM2YmQyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJi
CkBAIC02MCw3ICs2MCwyNiBAQCBtb2R1bGUgRFNMCiAgICAgICAgIGFzc2VydCgiYG9wX2dyb3Vw
YCBjYW4gb25seSBiZSBjYWxsZWQgaW4gYmV0d2VlbiBgYmVnaW5fc2VjdGlvbmAgYW5kIGBlbmRf
c2VjdGlvbmAiKSB7IG5vdCBAY3VycmVudF9zZWN0aW9uLm5pbD8gfQogICAgICAgICBAY3VycmVu
dF9zZWN0aW9uLmFkZF9vcGNvZGVfZ3JvdXAoZGVzYywgb3BzLCBjb25maWcpCiAgICAgZW5kCi0K
KyAgICAKKyAgICBkZWYgc2VsZi5zaW1kX29wX2dyb3VwKGRlc2MsIG9wcywgY29uZmlnKQorICAg
ICAgICBhc3NlcnQoImBzaW1kX29wX2dyb3VwYCBjYW4gb25seSBiZSBjYWxsZWQgaW4gYmV0d2Vl
biBgYmVnaW5fc2VjdGlvbmAgYW5kIGBlbmRfc2VjdGlvbmAiKSB7IG5vdCBAY3VycmVudF9zZWN0
aW9uLm5pbD8gfQorCisgICAgICAgIGZvciBvcCBpbiBvcHMgZG8KKyAgICAgICAgICAgIHZhcmlh
bnRzID0gWyJpMzJ4NCIsICJpNjR4MiIsICJmMzJ4NCIsICJmNjR4MiJdCisgICAgICAgICAgICBp
ZiBjb25maWdbOm1ha2VTaWduZWRWYXJpYW50c10gdGhlbgorICAgICAgICAgICAgICAgIHZhcmlh
bnRzICs9IFsiaTh4MTZfdSIsICJpOHgxNl9zIiwgImkxNng4X3UiLCAiaTE2eDhfcyJdCisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdmFyaWFudHMgKz0gWyJpOHgxNiIsICJpMTZ4
OCJdCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIHZhcmlhbnRzID0gWyJpOHgxNl91Il0g
IyBUT0RPCisgICAgICAgICAgICBvcExpc3QgPSBbXQorICAgICAgICAgICAgZm9yIHYgaW4gdmFy
aWFudHMgZG8KKyAgICAgICAgICAgICAgICBvcExpc3QgPDwgKChvcC50b19zICsgIl8iICsgdiku
dG9fc3ltKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBAY3VycmVudF9zZWN0aW9uLmFk
ZF9vcGNvZGVfZ3JvdXAoKGRlc2MudG9fcyArIG9wLnRvX3MpLnRvX3N5bSwgb3BMaXN0LCBjb25m
aWcpCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAogICAgIGRlZiBzZWxmLnR5cGVzKHR5cGVz
KQogICAgICAgICB0eXBlcy5tYXAgZG8gfHR5cGV8CiAgICAgICAgICAgICB0eXBlID0gKEBuYW1l
c3BhY2VzICsgW3R5cGVdKS5qb2luICI6OiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0b3IvV2FzbS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
V2FzbS5yYgppbmRleCAyYzExYmFmMjBkMmYuLjY5NzQyNGUwOTVlNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9XYXNtLnJiCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0b3IvV2FzbS5yYgpAQCAtNTYsNyArNTYsMjMgQEAgbW9kdWxlIFdhc20K
ICAgICAgICAgICAgICAgICBhc3NlcnQoIkludmFsaWQgYXJndW1lbnQgY291bnQgI3tvcC5hcmdz
LnNpemV9IGZvciBvcCAje29wLm5hbWV9IikgeyBmYWxzZSB9CiAgICAgICAgICAgICBlbmQKICAg
ICAgICAgZW5kCi0gICAgICAgIG1ldGhvZHMuam9pbigiXG4iKQorICAgICAgICBtZXRob2RzLmpv
aW4oIlxuIikgKyBnZW5lcmF0ZV9sbGludF9nZW5lcmF0b3Jfc2ltZChzZWN0aW9uKQorICAgIGVu
ZAorCisgICAgZGVmIHNlbGYuZ2VuZXJhdGVfbGxpbnRfZ2VuZXJhdG9yX3NpbWQoc2VjdGlvbikK
KyAgICAgICAgPDwtRU9GCisjZGVmaW5lIENSRUFURV9TSU1EX0NBU0UobmFtZSwgaWQsIGIzb3As
IGluYywgd2FzbU9wLCByZXR1cm5UeXBlLCBudW1JbW1lZGlhdGVzLCBpbW1lZGlhdGVTaXplcywg
bnVtQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzLCAuLi4pIFwKK3RlbXBsYXRlPD4gXAorYXV0byBM
TEludEdlbmVyYXRvcjo6YWRkU2ltZE9wPEV4dFNpbWRPcFR5cGU6Om5hbWUsIG51bUltbWVkaWF0
ZXMsIG51bUFyZ3VtZW50cz4oc3RkOjphcnJheTx1aW50OF90LCBudW1JbW1lZGlhdGVzPiBpbW1l
ZGlhdGVzLCBzdGQ6OmFycmF5PEV4cHJlc3Npb25UeXBlLCBudW1Bcmd1bWVudHM+IGFyZ3VtZW50
cywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdCBcCit7IFwKKyAgICBy
ZXN1bHQgPSBwdXNoKHJldHVyblR5cGUpOyBcCisgICAgc3RkOjphcHBseSgmd2FzbU9wOjplbWl0
PExMSW50R2VuZXJhdG9yPiwgc3RkOjp0dXBsZV9jYXQoc3RkOjptYWtlX3R1cGxlKHRoaXMsIHJl
c3VsdCksIGltbWVkaWF0ZXMsIGFyZ3VtZW50cykpOyBcCisgICAgcmV0dXJuIHsgfTsgXAorfQor
CitGT1JfRUFDSF9XQVNNX0VYVF9TSU1EX09QKENSRUFURV9TSU1EX0NBU0UpCisjdW5kZWYgQ1JF
QVRFX1NJTURfQ0FTRQorICAgICAgICBFT0YKICAgICBlbmQKIAogICAgIGRlZiBzZWxmLmdlbmVy
YXRlX2JpbmFyeV9vcChvcCkKQEAgLTY0LDcgKzgwLDcgQEAgbW9kdWxlIFdhc20KIHRlbXBsYXRl
PD4KIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZE9wPCN7b3BfdHlwZShvcCl9PihFeHByZXNzaW9u
VHlwZSBsaHMsIEV4cHJlc3Npb25UeXBlIHJocywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICByZXN1bHQgPSBwdXNo
KCN7b3BfcmV0dXJuKG9wKX0pOwogICAgICN7b3AuY2FwaXRhbGl6ZWRfbmFtZX06OmVtaXQodGhp
cywgcmVzdWx0LCBsaHMsIHJocyk7CiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTc2LDcgKzkyLDcg
QEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkT3A8I3tvcF90eXBlKG9wKX0+KEV4cHJlc3Npb25U
eXBlIGxocywgRXhwcmVzc2lvblR5cGUgcmgKIHRlbXBsYXRlPD4KIGF1dG8gTExJbnRHZW5lcmF0
b3I6OmFkZE9wPCN7b3BfdHlwZShvcCl9PihFeHByZXNzaW9uVHlwZSBvcGVyYW5kLCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgp
OworICAgIHJlc3VsdCA9IHB1c2goI3tvcF9yZXR1cm4ob3ApfSk7CiAgICAgI3tvcC5jYXBpdGFs
aXplZF9uYW1lfTo6ZW1pdCh0aGlzLCByZXN1bHQsIG9wZXJhbmQpOwogICAgIHJldHVybiB7IH07
CiB9CkBAIC04Niw0ICsxMDIsMTIgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkT3A8I3tvcF90
eXBlKG9wKX0+KEV4cHJlc3Npb25UeXBlIG9wZXJhbmQsIEV4cHJlc3Npb25UeXAKICAgICBkZWYg
c2VsZi5vcF90eXBlKG9wKQogICAgICAgICAiT3BUeXBlOjoje29wLnVucHJlZml4ZWRfbmFtZS5n
c3ViKC9eLnxbXmEtejAtOV0uLykgeyB8Y3wgY1stMV0udXBjYXNlIH19IgogICAgIGVuZAorCisg
ICAgZGVmIHNlbGYub3BfcmV0dXJuKG9wKQorICAgICAgICB0ID0gb3AuZXh0cmFzWyJyZXR1cm4i
XVswXQorICAgICAgICBpZiB0ID09ICJib29sIiB0aGVuCisgICAgICAgICAgICB0ID0gImkzMiIK
KyAgICAgICAgZW5kCisgICAgICAgICJUeXBlczo6I3t0LnVwY2FzZX0iCisgICAgZW5kCiBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUVudHJ5UmVj
b3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5o
CmluZGV4IGJlN2JmODg5ODc5ZC4uOTk1YWNlMzk5M2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUVudHJ5UmVjb3JkLmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
c3RydWN0IFZNRW50cnlSZWNvcmQgewogICAgIEpTT2JqZWN0KiBjYWxsZWUoKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxlZTsgfQogCiAjaWYgIUVOQUJMRShDX0xPT1ApICYmIE5VTUJFUl9PRl9DQUxM
RUVfU0FWRVNfUkVHSVNURVJTID4gMAotICAgIENQVVJlZ2lzdGVyIGNhbGxlZVNhdmVSZWdpc3Rl
cnNCdWZmZXJbTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlNdOworICAgIENQVVJlZ2lz
dGVyIGNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJbU0laRV9PRl9DQUxMRUVfU0FWRVNfUkVHSVNU
RVJTXTsKICNlbGlmIEVOQUJMRShDX0xPT1ApCiAgICAgQ1BVUmVnaXN0ZXIgY2FsbGVlU2F2ZVJl
Z2lzdGVyc0J1ZmZlclsxXTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IGRlOGQ2NTNkZDgyYi4uZTlhNjIzYjVjOTI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAKICNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQXNzZW1ibHlI
ZWxwZXJzU3Bvb2xlcnMuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCiAjaW5jbHVkZSAiSklUT3Bl
cmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKQEAgLTczMiw3ICs3MzMsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVy
czo6cmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVySW1w
bChHUAogICAgICAgICBpZiAoc2tpcExpc3QuY29udGFpbnMoZW50cnkucmVnKCkpKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIEFTU0VSVCghZW50cnkucmVnKCkuaXNHUFIoKSk7Ci0g
ICAgICAgIHNwb29sZXIubG9hZEZQUihlbnRyeSk7CisgICAgICAgIHNwb29sZXIubG9hZEZQUihl
bnRyeSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpKTsK
ICAgICB9CiAgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigpOwogCkBAIC0xMTE5LDcgKzExMjAsNyBA
QCB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVl
U2F2ZXNCdWZmZXJJbXBsKEdQUlJlZyBjYQogICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5
ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOwogICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMu
Y29udGFpbnMoZW50cnkucmVnKCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHNw
b29sZXIuc3RvcmVGUFIoZW50cnkpOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5LCBC
Mzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOwogICAgIH0K
ICAgICBzcG9vbGVyLmZpbmFsaXplRlBSKCk7CiAKQEAgLTEyMzUsNyArMTIzNiw3IEBAIHZvaWQg
QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgbGlz
dCkKICAgICBzcG9vbGVyLmZpbmFsaXplR1BSKCk7CiAKICAgICBmb3IgKDsgaSA8IGxpc3RTaXpl
OyBpKyspCi0gICAgICAgIHNwb29sZXIuc3RvcmVGUFIobGlzdC5hdChpKSk7CisgICAgICAgIHNw
b29sZXIuc3RvcmVGUFIobGlzdC5hdChpKSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZh
dGl2ZVdpZHRoKEIzOjpGUCkpKTsKICAgICBzcG9vbGVyLmZpbmFsaXplRlBSKCk7CiB9CiAKQEAg
LTEyNTQsNyArMTI1NSw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9yZShjb25z
dCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgbGlzdCkKICAgICBzcG9vbGVyLmZpbmFsaXplR1BSKCk7
CiAKICAgICBmb3IgKDsgaSA8IGxpc3RTaXplOyBpKyspCi0gICAgICAgIHNwb29sZXIubG9hZEZQ
UihsaXN0LmF0KGkpKTsKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGxpc3QuYXQoaSksIEIzOjpi
eXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CiAgICAgc3Bvb2xl
ci5maW5hbGl6ZUZQUigpOwogfQogCkBAIC0xMjc5LDcgKzEyODAsNyBAQCB2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdFNhdmVDYWxsZWVTYXZlc0Zvcihjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlz
dCogY2FsbGVlUwogICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMt
PmF0KGkpOwogICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3RlcnMuY29udGFpbnMoZW50cnkucmVn
KCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHNwb29sZXIuc3RvcmVGUFIoZW50
cnkpOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5LCBCMzo6Ynl0ZXNGb3JXaWR0aChC
Mzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOwogICAgIH0KICAgICBzcG9vbGVyLmZpbmFs
aXplRlBSKCk7CiB9CkBAIC0xMzA1LDcgKzEzMDYsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6
ZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0Zvcihjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2Fs
bAogICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwog
ICAgICAgICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzcG9vbGVyLmxvYWRGUFIoZW50cnkpOworICAgICAg
ICBzcG9vbGVyLmxvYWRGUFIoZW50cnksIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRp
dmVXaWR0aChCMzo6RlApKSk7CiAgICAgfQogICAgIHNwb29sZXIuZmluYWxpemVGUFIoKTsKIH0K
QEAgLTEzNTUsMTAgKzEzNTYsMTAgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNvcHlMTEludEJh
c2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZyYW0KIAogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChlbnRyeS5yZWcoKS5pc0ZQUigpKTsKICAgICAgICAgaWYgKGN1cnJl
bnRGcmFtZUVudHJ5KQotICAgICAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGN1cnJlbnRGcmFtZUVu
dHJ5LT5vZmZzZXQoKSk7CisgICAgICAgICAgICBzcG9vbGVyLmxvYWRGUFIoY3VycmVudEZyYW1l
RW50cnktPm9mZnNldCgpLCBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgo
QjM6OkZQKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzcG9vbGVyLmNvcHlGUFIoZW50
cnkucmVnKCkuZnByKCkpOwotICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5Lm9mZnNldCgp
KTsKKyAgICAgICAgICAgIHNwb29sZXIuY29weUZQUihlbnRyeS5yZWcoKS5mcHIoKSwgQjM6OmJ5
dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpKTsKKyAgICAgICAgc3Bv
b2xlci5zdG9yZUZQUihlbnRyeS5vZmZzZXQoKSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNl
cnZhdGl2ZVdpZHRoKEIzOjpGUCkpKTsKICAgICB9CiAgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
c1Nwb29sZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVyc1Nw
b29sZXJzLmgKaW5kZXggNzgzMWVmMzY2OTBkLi4wYzljZjk1NDNjNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgKQEAgLTcw
LDcgKzcwLDcgQEAgc3RydWN0IFJlZ0Rpc3BhdGNoPEZQUlJlZz4gewogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFNwb29sZXI+IHN0YXRpYyBGUFJSZWcgdGVtcDIoY29uc3QgU3Bvb2xlciogc3Bvb2xl
cikgeyByZXR1cm4gc3Bvb2xlci0+bV90ZW1wMkZQUjsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFNwb29sZXI+IHN0YXRpYyBGUFJSZWcmIHJlZ1RvU3RvcmUoU3Bvb2xlciogc3Bvb2xlcikgeyBy
ZXR1cm4gc3Bvb2xlci0+bV9mcHJUb1N0b3JlOyB9CiAgICAgc3RhdGljIGNvbnN0ZXhwciBGUFJS
ZWcgaW52YWxpZCgpIHsgcmV0dXJuIEludmFsaWRGUFJSZWc7IH0KLSAgICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCByZWdTaXplKCkgeyByZXR1cm4gc2l6ZW9mKGRvdWJsZSk7IH0KKyAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCByZWdTaXplKCkgeyByZXR1cm4gMTY7IH0KICNpZiBDUFUoQVJN
NjQpCiAgICAgc3RhdGljIGJvb2wgaXNWYWxpZExvYWRQYWlySW1tKGludCBvZmZzZXQpIHsgcmV0
dXJuIEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkTERQRlBJbW08NjQ+KG9mZnNldCk7IH0KICAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkU3RvcmVQYWlySW1tKGludCBvZmZzZXQpIHsgcmV0dXJuIEFSTTY0
QXNzZW1ibGVyOjppc1ZhbGlkU1RQRlBJbW08NjQ+KG9mZnNldCk7IH0KQEAgLTkxLDI5ICs5MSwz
NSBAQCBwdWJsaWM6CiAgICAgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgot
ICAgIHZvaWQgZXhlY3V0ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkKKyAgICB2b2lk
IGV4ZWN1dGUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnksIHVuc2lnbmVkIGJ5dGVzV2lk
dGgpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChSZWdEaXNwYXRjaDxSZWdUeXBlPjo6
aGFzU2FtZVR5cGUoZW50cnkucmVnKCkpKTsKICAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFp
ck9wKQotICAgICAgICAgICAgcmV0dXJuIG9wKCkuZXhlY3V0ZVNpbmdsZShlbnRyeS5vZmZzZXQo
KSwgUmVnRGlzcGF0Y2g8UmVnVHlwZT46OmdldChlbnRyeS5yZWcoKSkpOworICAgICAgICAgICAg
cmV0dXJuIG9wKCkuZXhlY3V0ZVNpbmdsZShlbnRyeS5vZmZzZXQoKSwgUmVnRGlzcGF0Y2g8UmVn
VHlwZT46OmdldChlbnRyeS5yZWcoKSksIGJ5dGVzV2lkdGgpOworICAgICAgICBpZiAoYnl0ZXNX
aWR0aCA+IDgpCisgICAgICAgICAgICByZXR1cm4gb3AoKS5leGVjdXRlU2luZ2xlKGVudHJ5Lm9m
ZnNldCgpLCBSZWdEaXNwYXRjaDxSZWdUeXBlPjo6Z2V0KGVudHJ5LnJlZygpKSwgYnl0ZXNXaWR0
aCk7CiAKICAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRW50cnkucmVnKCkuaXNTZXQoKSkgewogICAg
ICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0gZW50cnk7CisgICAgICAgICAgICBtX2J1ZmZlcmVk
Qnl0ZXNXaWR0aCA9IGJ5dGVzV2lkdGg7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
LQotICAgICAgICBjb25zdGV4cHIgcHRyZGlmZl90IHJlZ1NpemUgPSBSZWdEaXNwYXRjaDxSZWdU
eXBlPjo6cmVnU2l6ZSgpOworICAgICAgICAKKyAgICAgICAgcHRyZGlmZl90IHJlZ1NpemUgPSBi
eXRlc1dpZHRoOworICAgICAgICBBU1NFUlQoYnl0ZXNXaWR0aCA8PSBSZWdEaXNwYXRjaDxSZWdU
eXBlPjo6cmVnU2l6ZSgpKTsKICAgICAgICAgUmVnVHlwZSBidWZmZXJlZEVudHJ5UmVnID0gUmVn
RGlzcGF0Y2g8UmVnVHlwZT46OmdldChtX2J1ZmZlcmVkRW50cnkucmVnKCkpOwogICAgICAgICBS
ZWdUeXBlIGVudHJ5UmVnID0gUmVnRGlzcGF0Y2g8UmVnVHlwZT46OmdldChlbnRyeS5yZWcoKSk7
CiAKICAgICAgICAgaWYgKGVudHJ5Lm9mZnNldCgpID09IG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQo
KSArIHJlZ1NpemUpIHsKICAgICAgICAgICAgIG9wKCkuZXhlY3V0ZVBhaXIobV9idWZmZXJlZEVu
dHJ5Lm9mZnNldCgpLCBidWZmZXJlZEVudHJ5UmVnLCBlbnRyeVJlZyk7CiAgICAgICAgICAgICBt
X2J1ZmZlcmVkRW50cnkgPSB7IH07CisgICAgICAgICAgICBtX2J1ZmZlcmVkQnl0ZXNXaWR0aCA9
IDA7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fYnVmZmVy
ZWRFbnRyeS5vZmZzZXQoKSA9PSBlbnRyeS5vZmZzZXQoKSArIHJlZ1NpemUpIHsKICAgICAgICAg
ICAgIG9wKCkuZXhlY3V0ZVBhaXIoZW50cnkub2Zmc2V0KCksIGVudHJ5UmVnLCBidWZmZXJlZEVu
dHJ5UmVnKTsKICAgICAgICAgICAgIG1fYnVmZmVyZWRFbnRyeSA9IHsgfTsKKyAgICAgICAgICAg
IG1fYnVmZmVyZWRCeXRlc1dpZHRoID0gMDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCkBAIC0xMjEsNyArMTI3LDcgQEAgcHVibGljOgogICAgICAgICAvLyBFeGVjdXRlIHRoZSBw
cmV2aW91cyBvbmUgYXMgYSBzaW5nbGUgKGZpbmFsaXplIHdpbGwgZG8gdGhhdCksIGFuZCB0aGVu
CiAgICAgICAgIC8vIGJ1ZmZlciB0aGUgY3VycmVudCBlbnRyeSB0byBwb3RlbnRpYWxseSBiZSBw
YWlyZWQgd2l0aCB0aGUgbmV4dCBlbnRyeS4KICAgICAgICAgZmluYWxpemU8UmVnVHlwZT4oKTsK
LSAgICAgICAgZXhlY3V0ZTxSZWdUeXBlPihlbnRyeSk7CisgICAgICAgIGV4ZWN1dGU8UmVnVHlw
ZT4oZW50cnksIGJ5dGVzV2lkdGgpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJl
Z1R5cGU+CkBAIC0xMjksOCArMTM1LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmIGNv
bnN0ZXhwciAoaGFzUGFpck9wKSB7CiAgICAgICAgICAgICBpZiAobV9idWZmZXJlZEVudHJ5LnJl
ZygpLmlzU2V0KCkpIHsKLSAgICAgICAgICAgICAgICBvcCgpLmV4ZWN1dGVTaW5nbGUobV9idWZm
ZXJlZEVudHJ5Lm9mZnNldCgpLCBSZWdEaXNwYXRjaDxSZWdUeXBlPjo6Z2V0KG1fYnVmZmVyZWRF
bnRyeS5yZWcoKSkpOworICAgICAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlcmVkQnl0ZXNXaWR0
aCk7CisgICAgICAgICAgICAgICAgb3AoKS5leGVjdXRlU2luZ2xlKG1fYnVmZmVyZWRFbnRyeS5v
ZmZzZXQoKSwgUmVnRGlzcGF0Y2g8UmVnVHlwZT46OmdldChtX2J1ZmZlcmVkRW50cnkucmVnKCkp
LCBtX2J1ZmZlcmVkQnl0ZXNXaWR0aCk7CiAgICAgICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5
ID0geyB9OworICAgICAgICAgICAgICAgIG1fYnVmZmVyZWRCeXRlc1dpZHRoID0gMDsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE0OCw2ICsxNTYsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSklUJiBtX2ppdDsKICAgICBHUFJSZWcgbV9iYXNlR1BSOwogICAgIFJlZ2lzdGVyQXRP
ZmZzZXQgbV9idWZmZXJlZEVudHJ5OworICAgIHVuc2lnbmVkIG1fYnVmZmVyZWRCeXRlc1dpZHRo
OwogfTsKIAogY2xhc3MgQXNzZW1ibHlIZWxwZXJzOjpMb2FkUmVnU3Bvb2xlciA6IHB1YmxpYyBB
c3NlbWJseUhlbHBlcnM6OlNwb29sZXI8TG9hZFJlZ1Nwb29sZXI+IHsKQEAgLTE1OCw5ICsxNjcs
OSBAQCBwdWJsaWM6CiAgICAgICAgIDogQmFzZShqaXQsIGJhc2VHUFIpCiAgICAgeyB9CiAKLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEdQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRy
eSkgeyBleGVjdXRlPEdQUlJlZz4oZW50cnkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxv
YWRHUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgZXhlY3V0ZTxHUFJSZWc+KGVu
dHJ5LCA4KTsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaW5hbGl6ZUdQUigpIHsgZmluYWxp
emU8R1BSUmVnPigpOyB9Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRGUFIoY29uc3QgUmVn
aXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgZXhlY3V0ZTxGUFJSZWc+KGVudHJ5KTsgfQorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBsb2FkRlBSKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5LCB1
bnNpZ25lZCBieXRlc1dpZHRoKSB7IGV4ZWN1dGU8RlBSUmVnPihlbnRyeSwgYnl0ZXNXaWR0aCk7
IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmluYWxpemVGUFIoKSB7IGZpbmFsaXplPEZQUlJl
Zz4oKTsgfQogCiBwcml2YXRlOgpAQCAtMTc1LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIGV4ZWN1dGVQYWlyKHB0cmRpZmZfdCwgUmVnVHlwZSwgUmVnVHlwZSkg
eyB9CiAjZW5kaWYKIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlU2luZ2xlKHB0cmRp
ZmZfdCBvZmZzZXQsIEdQUlJlZyByZWcpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVT
aW5nbGUocHRyZGlmZl90IG9mZnNldCwgR1BSUmVnIHJlZywgc2l6ZV90KQogICAgIHsKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICBtX2ppdC5sb2FkNjQoQWRkcmVzcyhtX2Jhc2VHUFIsIG9m
ZnNldCksIHJlZyk7CkBAIC0xODQsOSArMTkzLDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB9
CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0ZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0
LCBGUFJSZWcgcmVnKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlU2luZ2xlKHB0cmRp
ZmZfdCBvZmZzZXQsIEZQUlJlZyByZWcsIHNpemVfdCBieXRlc1dpZHRoKQogICAgIHsKLSAgICAg
ICAgbV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSwgcmVnKTsKKyAg
ICAgICAgaWYgKGJ5dGVzV2lkdGggPiA4KQorICAgICAgICAgICAgbV9qaXQubG9hZFZlY3RvcihB
ZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSwgcmVnKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSwgcmVnKTsKICAg
ICB9CiAKICAgICBmcmllbmQgY2xhc3MgQXNzZW1ibHlIZWxwZXJzOjpTcG9vbGVyPExvYWRSZWdT
cG9vbGVyPjsKQEAgLTIwMCw5ICsyMTIsOSBAQCBwdWJsaWM6CiAgICAgICAgIDogQmFzZShqaXQs
IGJhc2VHUFIpCiAgICAgeyB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVHUFIoY29u
c3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgZXhlY3V0ZTxHUFJSZWc+KGVudHJ5KTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZUdQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBl
bnRyeSkgeyBleGVjdXRlPEdQUlJlZz4oZW50cnksIDgpOyB9CiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIGZpbmFsaXplR1BSKCkgeyBmaW5hbGl6ZTxHUFJSZWc+KCk7IH0KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc3RvcmVGUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgZXhlY3V0
ZTxGUFJSZWc+KGVudHJ5KTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZUZQUihjb25z
dCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSwgdW5zaWduZWQgYnl0ZXNXaWR0aCkgeyBleGVjdXRl
PEZQUlJlZz4oZW50cnksIGJ5dGVzV2lkdGgpOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGZp
bmFsaXplRlBSKCkgeyBmaW5hbGl6ZTxGUFJSZWc+KCk7IH0KIAogcHJpdmF0ZToKQEAgLTIxNyw3
ICsyMjksNyBAQCBwcml2YXRlOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlUGFpcihw
dHJkaWZmX3QsIFJlZ1R5cGUsIFJlZ1R5cGUpIHsgfQogI2VuZGlmCiAKLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgZXhlY3V0ZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0LCBHUFJSZWcgcmVnKQorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlU2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEdQUlJl
ZyByZWcsIHNpemVfdCkKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgbV9qaXQu
c3RvcmU2NChyZWcsIEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpKTsKQEAgLTIyNiw5ICsyMzgs
MTIgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBl
eGVjdXRlU2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEZQUlJlZyByZWcpCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIGV4ZWN1dGVTaW5nbGUocHRyZGlmZl90IG9mZnNldCwgRlBSUmVnIHJlZywgc2l6
ZV90IGJ5dGVzV2lkdGgpCiAgICAgewotICAgICAgICBtX2ppdC5zdG9yZURvdWJsZShyZWcsIEFk
ZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpKTsKKyAgICAgICAgaWYgKGJ5dGVzV2lkdGggPiA4KQor
ICAgICAgICAgICAgbV9qaXQuc3RvcmVWZWN0b3IocmVnLCBBZGRyZXNzKG1fYmFzZUdQUiwgb2Zm
c2V0KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKHJlZywg
QWRkcmVzcyhtX2Jhc2VHUFIsIG9mZnNldCkpOwogICAgIH0KIAogICAgIGZyaWVuZCBjbGFzcyBB
c3NlbWJseUhlbHBlcnM6OlNwb29sZXI8U3RvcmVSZWdTcG9vbGVyPjsKQEAgLTI4NCwxMiArMjk5
LDE5IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4gc3RhdGljIGJv
b2wgaXNWYWxpZFN0b3JlUGFpckltbShpbnQgb2Zmc2V0KSB7IHJldHVybiBSZWdEaXNwYXRjaDxS
ZWdUeXBlPjo6aXNWYWxpZFN0b3JlUGFpckltbShvZmZzZXQpOyB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBSZWdUeXBlPgotICAgIHZvaWQgbG9hZChpbnQgb2Zmc2V0KQorICAgIHZvaWQgbG9h
ZChpbnQgb2Zmc2V0LCB1bnNpZ25lZCBieXRlc1dpZHRoKQogICAgIHsKICAgICAgICAgaWYgY29u
c3RleHByICghaGFzUGFpck9wKSB7CiAgICAgICAgICAgICBhdXRvJiByZWdUb1N0b3JlID0gdGhp
cy0+cmVnVG9TdG9yZTxSZWdUeXBlPigpOwogICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHRlbXAx
PFJlZ1R5cGU+KCk7Ci0gICAgICAgICAgICBsb2FkKG9mZnNldCwgcmVnVG9TdG9yZSk7CisgICAg
ICAgICAgICBsb2FkKG9mZnNldCwgcmVnVG9TdG9yZSwgYnl0ZXNXaWR0aCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChieXRlc1dpZHRoID4g
OCkgeworICAgICAgICAgICAgYXV0byYgcmVnVG9TdG9yZSA9IHRoaXMtPnJlZ1RvU3RvcmU8UmVn
VHlwZT4oKTsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMTxSZWdUeXBlPigpOworICAg
ICAgICAgICAgbG9hZChvZmZzZXQsIHJlZ1RvU3RvcmUsIGJ5dGVzV2lkdGgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI5OCw3ICszMjAsNyBAQCBwcml2YXRlOgogICAg
ICAgICBzb3VyY2Uub2Zmc2V0ID0gb2Zmc2V0OwogICAgIH0KIAotICAgIHZvaWQgbW92ZShFbmNv
ZGVkSlNWYWx1ZSB2YWx1ZSkKKyAgICB2b2lkIG1vdmUoRW5jb2RlZEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGJ5dGVzV2lkdGgpCiAgICAgewogICAgICAgICBpZiBjb25zdGV4cHIgKCFoYXNQYWly
T3ApIHsKICAgICAgICAgICAgIGF1dG8mIHJlZ1RvU3RvcmUgPSB0aGlzLT5yZWdUb1N0b3JlPEdQ
UlJlZz4oKTsKQEAgLTMwNiw2ICszMjgsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1vdmUo
dmFsdWUsIHJlZ1RvU3RvcmUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBpZiAoYnl0ZXNXaWR0aCA+IDgpIHsKKyAgICAgICAgICAgIGF1dG8mIHJl
Z1RvU3RvcmUgPSB0aGlzLT5yZWdUb1N0b3JlPEdQUlJlZz4oKTsKKyAgICAgICAgICAgIHJlZ1Rv
U3RvcmUgPSB0ZW1wMTxHUFJSZWc+KCk7CisgICAgICAgICAgICBtb3ZlKHZhbHVlLCByZWdUb1N0
b3JlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGF1dG8mIHNv
dXJjZSA9IG1fc291cmNlc1ttX2N1cnJlbnRTb3VyY2UrK107CiAgICAgICAgIHNvdXJjZS50eXBl
ID0gU291cmNlOjpUeXBlOjpFbmNvZGVkSlNWYWx1ZTsKQEAgLTMxMywxMyArMzQyLDE5IEBAIHBy
aXZhdGU6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KLSAgICB2b2lk
IGNvcHkoUmVnVHlwZSByZWcpCisgICAgdm9pZCBjb3B5KFJlZ1R5cGUgcmVnLCB1bnNpZ25lZCBi
eXRlc1dpZHRoKQogICAgIHsKICAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKSB7CiAg
ICAgICAgICAgICBhdXRvJiByZWdUb1N0b3JlID0gdGhpcy0+cmVnVG9TdG9yZTxSZWdUeXBlPigp
OwogICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHJlZzsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGJ5dGVzV2lkdGggPiA4KSB7CisgICAgICAg
ICAgICBhdXRvJiByZWdUb1N0b3JlID0gdGhpcy0+cmVnVG9TdG9yZTxSZWdUeXBlPigpOworICAg
ICAgICAgICAgcmVnVG9TdG9yZSA9IHJlZzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogCiAgICAgICAgIGF1dG8mIHNvdXJjZSA9IG1fc291cmNlc1ttX2N1cnJlbnRTb3VyY2UrK107
CiAgICAgICAgIHNvdXJjZS50eXBlID0gU291cmNlOjpUeXBlOjpSZWc7CkBAIC0zMjcsMTEgKzM2
MiwxNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+
Ci0gICAgdm9pZCBzdG9yZShpbnQgc3RvcmVPZmZzZXQpCisgICAgdm9pZCBzdG9yZShpbnQgc3Rv
cmVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVzV2lkdGgpCiAgICAgewogICAgICAgICBpZiBjb25zdGV4
cHIgKCFoYXNQYWlyT3ApIHsKICAgICAgICAgICAgIGF1dG8gcmVnVG9TdG9yZSA9IHRoaXMtPnJl
Z1RvU3RvcmU8UmVnVHlwZT4oKTsKLSAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUsIHN0b3Jl
T2Zmc2V0KTsKKyAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUsIHN0b3JlT2Zmc2V0LCBieXRl
c1dpZHRoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaWYgKGJ5dGVzV2lkdGggPiA4KSB7CisgICAgICAgICAgICBhdXRvIHJlZ1RvU3RvcmUgPSB0
aGlzLT5yZWdUb1N0b3JlPFJlZ1R5cGU+KCk7CisgICAgICAgICAgICBzdG9yZShyZWdUb1N0b3Jl
LCBzdG9yZU9mZnNldCwgYnl0ZXNXaWR0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtMzU5LDggKzQwMCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBib29sIGlzVmFs
aWRPZmZzZXQgPSBpc1ZhbGlkTG9hZFBhaXJJbW08UmVnVHlwZT4obWluT2Zmc2V0KTsKIAogICAg
ICAgICAgICAgaWYgKG9mZnNldERlbHRhICE9IHJlZ2lzdGVyU2l6ZSB8fCAoIWlzVmFsaWRPZmZz
ZXQgJiYgbV9idWZmZXJSZWdzQXR0ciAhPSBCdWZmZXJSZWdzOjpBbGxvd01vZGlmaWNhdGlvbikp
IHsKLSAgICAgICAgICAgICAgICBsb2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUxKTsKLSAgICAg
ICAgICAgICAgICBsb2FkKHNyY09mZnNldDIsIHJlZ1RvU3RvcmUyKTsKKyAgICAgICAgICAgICAg
ICBsb2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUxLCBieXRlc1dpZHRoKTsKKyAgICAgICAgICAg
ICAgICBsb2FkKHNyY09mZnNldDIsIHJlZ1RvU3RvcmUyLCBieXRlc1dpZHRoKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KSB7CiAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlclJlZ3NBdHRyID09IEJ1ZmZlclJlZ3M6OkFs
bG93TW9kaWZpY2F0aW9uKTsKQEAgLTM3OCw3ICs0MTksNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZTEudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkJ1
ZmZlck9mZnNldCkgewogICAgICAgICAgICAgcmVnVG9TdG9yZTEgPSB0ZW1wMTxSZWdUeXBlPigp
OwotICAgICAgICAgICAgbG9hZChzcmNPZmZzZXQxLCByZWdUb1N0b3JlMSk7CisgICAgICAgICAg
ICBsb2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUxLCBieXRlc1dpZHRoKTsKICAgICAgICAgICAg
IGlmIChzb3VyY2UyLnR5cGUgPT0gU291cmNlOjpUeXBlOjpFbmNvZGVkSlNWYWx1ZSkgewogICAg
ICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAocmVnVHlwZUlzR1BSKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHJlZ1RvU3RvcmUyID0gdGVtcDI8UmVnVHlwZT4oKTsKQEAgLTM5OCw3ICs0MzksNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmVnVG9TdG9y
ZTEgPSBzb3VyY2UxLmdldFJlZzxSZWdUeXBlPigpOwogICAgICAgICAgICAgcmVnVG9TdG9yZTIg
PSB0ZW1wMjxSZWdUeXBlPigpOwotICAgICAgICAgICAgbG9hZChzcmNPZmZzZXQyLCByZWdUb1N0
b3JlMik7CisgICAgICAgICAgICBsb2FkKHNyY09mZnNldDIsIHJlZ1RvU3RvcmUyLCBieXRlc1dp
ZHRoKTsKIAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKHNvdXJjZTEudHlwZSA9
PSBTb3VyY2U6OlR5cGU6OkVuY29kZWRKU1ZhbHVlKSB7CkBAIC00MjgsOCArNDY5LDggQEAgcHJp
dmF0ZToKICAgICAgICAgYm9vbCBpc1ZhbGlkT2Zmc2V0ID0gaXNWYWxpZFN0b3JlUGFpckltbTxS
ZWdUeXBlPihtaW5PZmZzZXQpOwogCiAgICAgICAgIGlmIChvZmZzZXREZWx0YSAhPSByZWdpc3Rl
clNpemUgfHwgKCFpc1ZhbGlkT2Zmc2V0ICYmIG1fYnVmZmVyUmVnc0F0dHIgIT0gQnVmZmVyUmVn
czo6QWxsb3dNb2RpZmljYXRpb24pKSB7Ci0gICAgICAgICAgICBzdG9yZShyZWdUb1N0b3JlMSwg
ZHN0T2Zmc2V0MSk7Ci0gICAgICAgICAgICBzdG9yZShyZWdUb1N0b3JlMiwgZHN0T2Zmc2V0Mik7
CisgICAgICAgICAgICBzdG9yZShyZWdUb1N0b3JlMSwgZHN0T2Zmc2V0MSwgYnl0ZXNXaWR0aCk7
CisgICAgICAgICAgICBzdG9yZShyZWdUb1N0b3JlMiwgZHN0T2Zmc2V0MiwgYnl0ZXNXaWR0aCk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQpIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQobV9idWZmZXJSZWdzQXR0ciA9PSBCdWZmZXJSZWdzOjpBbGxv
d01vZGlmaWNhdGlvbik7CkBAIC00NjcsNyArNTA4LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBp
ZiAoc291cmNlLnR5cGUgPT0gU291cmNlOjpUeXBlOjpCdWZmZXJPZmZzZXQpIHsKICAgICAgICAg
ICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMTxSZWdUeXBlPigpOwotICAgICAgICAgICAgbG9hZChzcmNP
ZmZzZXQgLSBtX3NyY09mZnNldEFkanVzdG1lbnQsIHJlZ1RvU3RvcmUpOworICAgICAgICAgICAg
bG9hZChzcmNPZmZzZXQgLSBtX3NyY09mZnNldEFkanVzdG1lbnQsIHJlZ1RvU3RvcmUsIHNpemVv
Zih2b2lkKikpOwogICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZS50eXBlID09IFNvdXJjZTo6VHlw
ZTo6UmVnKQogICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHNvdXJjZS5nZXRSZWc8UmVnVHlwZT4o
KTsKICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHJlZ1R5cGVJc0dQUikgewpAQCAtNDc2LDIw
ICs1MTcsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUsIG1fZGVm
ZXJyZWRTdG9yZU9mZnNldCAtIG1fZHN0T2Zmc2V0QWRqdXN0bWVudCk7CisgICAgICAgIHN0b3Jl
KHJlZ1RvU3RvcmUsIG1fZGVmZXJyZWRTdG9yZU9mZnNldCAtIG1fZHN0T2Zmc2V0QWRqdXN0bWVu
dCwgc2l6ZW9mKHZvaWQqKSk7CiAgICAgICAgIG1fY3VycmVudFNvdXJjZSA9IDA7CiAgICAgfQog
CiBwdWJsaWM6Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRHUFIoaW50IHNyY09mZnNldCkg
eyBsb2FkPEdQUlJlZz4oc3JjT2Zmc2V0KTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb3B5
R1BSKEdQUlJlZyBncHIpIHsgY29weTxHUFJSZWc+KGdwcik7IH0KLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgbW92ZUNvbnN0YW50KEVuY29kZWRKU1ZhbHVlIHZhbHVlKSB7IG1vdmUodmFsdWUpOyB9
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlR1BSKGludCBkc3RPZmZzZXQpIHsgc3RvcmU8
R1BSUmVnPihkc3RPZmZzZXQpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRHUFIoaW50
IHNyY09mZnNldCkgeyBsb2FkPEdQUlJlZz4oc3JjT2Zmc2V0LCBzaXplb2Yodm9pZCopKTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb3B5R1BSKEdQUlJlZyBncHIpIHsgY29weTxHUFJSZWc+
KGdwciwgc2l6ZW9mKHZvaWQqKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbW92ZUNvbnN0
YW50KEVuY29kZWRKU1ZhbHVlIHZhbHVlKSB7IG1vdmUodmFsdWUsIHNpemVvZih2b2lkKikpOyB9
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlR1BSKGludCBkc3RPZmZzZXQpIHsgc3RvcmU8
R1BSUmVnPihkc3RPZmZzZXQsIHNpemVvZih2b2lkKikpOyB9CiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIGZpbmFsaXplR1BSKCkgeyBmaW5hbGl6ZTxHUFJSZWc+KCk7IH0KIAotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBsb2FkRlBSKGludCBzcmNPZmZzZXQpIHsgbG9hZDxGUFJSZWc+KHNyY09mZnNl
dCk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weUZQUihGUFJSZWcgZ3ByKSB7IGNvcHk8
RlBSUmVnPihncHIpOyB9Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlRlBSKGludCBkc3RP
ZmZzZXQpIHsgc3RvcmU8RlBSUmVnPihkc3RPZmZzZXQpOyB9CisgICAgQUxXQVlTX0lOTElORSB2
b2lkIGxvYWRGUFIoaW50IHNyY09mZnNldCwgdW5zaWduZWQgYnl0ZXNXaWR0aCkgeyBsb2FkPEZQ
UlJlZz4oc3JjT2Zmc2V0LCBieXRlc1dpZHRoKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBj
b3B5RlBSKEZQUlJlZyBncHIsIHVuc2lnbmVkIGJ5dGVzV2lkdGgpIHsgY29weTxGUFJSZWc+KGdw
ciwgYnl0ZXNXaWR0aCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVGUFIoaW50IGRz
dE9mZnNldCwgdW5zaWduZWQgYnl0ZXNXaWR0aCkgeyBzdG9yZTxGUFJSZWc+KGRzdE9mZnNldCwg
Ynl0ZXNXaWR0aCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmluYWxpemVGUFIoKSB7IGZp
bmFsaXplPEZQUlJlZz4oKTsgfQogCiBwcm90ZWN0ZWQ6CkBAIC01MDIsMjQgKzU0MywzMiBAQCBw
cm90ZWN0ZWQ6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIG1vdmUoRW5jb2RlZEpT
VmFsdWUsIEdQUlJlZykgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAjZW5kaWYK
IAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkKGludCBvZmZzZXQsIEdQUlJlZyBkZXN0KQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkKGludCBvZmZzZXQsIEdQUlJlZyBkZXN0LCB1bnNp
Z25lZCBieXRlc1dpZHRoKQogICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dpZHRo
LCBieXRlc1dpZHRoID09IHNpemVvZih2b2lkKikpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEFk
ZHJlc3MobV9zcmNCdWZmZXJHUFIsIG9mZnNldCksIGRlc3QpOwogICAgIH0KIAotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzdG9yZShHUFJSZWcgc3JjLCBpbnQgb2Zmc2V0KQorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzdG9yZShHUFJSZWcgc3JjLCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBieXRlc1dp
ZHRoKQogICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dpZHRoLCBieXRlc1dpZHRo
ID09IHNpemVvZih2b2lkKikpOwogICAgICAgICBtX2ppdC5zdG9yZVB0cihzcmMsIEFkZHJlc3Mo
bV9kc3RCdWZmZXJHUFIsIG9mZnNldCkpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBsb2FkKGludCBvZmZzZXQsIEZQUlJlZyBkZXN0KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBs
b2FkKGludCBvZmZzZXQsIEZQUlJlZyBkZXN0LCB1bnNpZ25lZCBieXRlc1dpZHRoKQogICAgIHsK
LSAgICAgICAgbV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fc3JjQnVmZmVyR1BSLCBvZmZzZXQp
LCBkZXN0KTsKKyAgICAgICAgaWYgKGJ5dGVzV2lkdGggPiA4KQorICAgICAgICAgICAgbV9qaXQu
bG9hZFZlY3RvcihBZGRyZXNzKG1fc3JjQnVmZmVyR1BSLCBvZmZzZXQpLCBkZXN0KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fc3JjQnVmZmVy
R1BSLCBvZmZzZXQpLCBkZXN0KTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3Rv
cmUoRlBSUmVnIHNyYywgaW50IG9mZnNldCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmUo
RlBSUmVnIHNyYywgaW50IG9mZnNldCwgdW5zaWduZWQgYnl0ZXNXaWR0aCkKICAgICB7Ci0gICAg
ICAgIG1faml0LnN0b3JlRG91YmxlKHNyYywgQWRkcmVzcyhtX2RzdEJ1ZmZlckdQUiwgb2Zmc2V0
KSk7CisgICAgICAgIGlmIChieXRlc1dpZHRoID4gOCkKKyAgICAgICAgICAgIG1faml0LnN0b3Jl
VmVjdG9yKHNyYywgQWRkcmVzcyhtX2RzdEJ1ZmZlckdQUiwgb2Zmc2V0KSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKHNyYywgQWRkcmVzcyhtX2RzdEJ1ZmZl
ckdQUiwgb2Zmc2V0KSk7CiAgICAgfQogCiAjaWYgQ1BVKEFSTTY0KQpAQCAtNTUzLDkgKzYwMiw2
IEBAIHByb3RlY3RlZDoKICAgICBGUFJSZWcgbV90ZW1wMkZQUjsKIAogcHJpdmF0ZToKLSAgICBz
dGF0aWMgY29uc3RleHByIGludCBncHJTaXplID0gc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoQ1BV
UmVnaXN0ZXIpKTsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBmcHJTaXplID0gc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoZG91YmxlKSk7Ci0KICAgICAvLyBUaGVzZSBwb2ludCB0byB3aGljaCBy
ZWdpc3RlciB0byB1c2UuCiAgICAgR1BSUmVnIG1fZ3ByVG9TdG9yZSB7IEludmFsaWRHUFJSZWcg
fTsgLy8gT25seSB1c2VkIHdoZW4gIWhhc1BhaXJPcC4KICAgICBGUFJSZWcgbV9mcHJUb1N0b3Jl
IHsgSW52YWxpZEZQUlJlZyB9OyAvLyBPbmx5IHVzZWQgd2hlbiAhaGFzUGFpck9wLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCA1MmExM2FhYWZiNzcuLjE3YmVkMzViMDczNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKQEAgLTQxMCw5ICs0MTAsMTEgQEAgcHVi
bGljOgogI2lmICFPUyhXSU5ET1dTKQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTIDZ1CiAjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDV1CisjZGVm
aW5lIFNJWkVfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA1dQogI2Vsc2UKICNkZWZpbmUgTlVN
QkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0dQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NB
VkVTX1JFR0lTVEVSUyA3dQorI2RlZmluZSBTSVpFX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMg
N3UKICNlbmRpZgogCiBjbGFzcyBHUFJJbmZvIHsKQEAgLTU1Miw2ICs1NTQsNyBAQCBzdGF0aWNf
YXNzZXJ0KEdQUkluZm86OnJldHVyblZhbHVlR1BSMiA9PSBYODZSZWdpc3RlcnM6OmVkeCk7CiAj
aWYgQ1BVKEFSTV9USFVNQjIpCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMg
NHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMnUKKyNkZWZpbmUg
U0laRV9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDJ1CiAKIGNsYXNzIEdQUkluZm8gewogcHVi
bGljOgpAQCAtNjIwLDcgKzYyMyw4IEBAIHB1YmxpYzoKICNpZiBDUFUoQVJNNjQpCiAjZGVmaW5l
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgOHUKIC8vIENhbGxlZSBTYXZlcyBpbmNsdWRl
cyB4MTkuLngyOCBhbmQgRlAgcmVnaXN0ZXJzIHE4Li5xMTUKLSNkZWZpbmUgTlVNQkVSX09GX0NB
TExFRV9TQVZFU19SRUdJU1RFUlMgMTh1CisjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNf
UkVHSVNURVJTICgxMHUrOHUpCisjZGVmaW5lIFNJWkVfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVS
UyAoMTB1Kzh1KjIpCiAKIGNsYXNzIEdQUkluZm8gewogcHVibGljOgpAQCAtNzQxLDYgKzc0NSw3
IEBAIHB1YmxpYzoKICNpZiBDUFUoTUlQUykKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JF
R0lTVEVSUyA0dQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAydQor
I2RlZmluZSBTSVpFX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMnUKIAogY2xhc3MgR1BSSW5m
byB7CiBwdWJsaWM6CkBAIC04MjAsNiArODI1LDcgQEAgcHVibGljOgogCiAjZGVmaW5lIE5VTUJF
Ul9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgOHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZF
U19SRUdJU1RFUlMgMjN1CisjZGVmaW5lIFNJWkVfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAy
M3UKIAogY2xhc3MgR1BSSW5mbyB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwCmluZGV4IGVkODMwM2RlNDFiNS4uMGQz
ODk0NWZkNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
QXRPZmZzZXRMaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
QXRPZmZzZXRMaXN0LmNwcApAQCAtMjQsNiArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExp
c3QuaCIKIAogI2lmIEVOQUJMRShBU1NFTUJMRVIpCkBAIC0zOSwxNiArNDAsMTcgQEAgUmVnaXN0
ZXJBdE9mZnNldExpc3Q6OlJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkgeyB9CiBSZWdpc3RlckF0T2Zm
c2V0TGlzdDo6UmVnaXN0ZXJBdE9mZnNldExpc3QoUmVnaXN0ZXJTZXQgcmVnaXN0ZXJTZXQsIE9m
ZnNldEJhc2VUeXBlIG9mZnNldEJhc2VUeXBlKQogICAgIDogbV9yZWdpc3RlcnMocmVnaXN0ZXJT
ZXQubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSkKIHsKLSAgICBzaXplX3QgbnVtYmVyT2ZSZWdpc3Rl
cnMgPSByZWdpc3RlclNldC5udW1iZXJPZlNldFJlZ2lzdGVycygpOworICAgIHNpemVfdCBudW1i
ZXJPZkZQUnMgPSByZWdpc3RlclNldC5udW1iZXJPZlNldEZQUnMoKTsKKyAgICBzaXplX3QgbnVt
YmVyT2ZHUFJzID0gcmVnaXN0ZXJTZXQubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSAtIG51bWJlck9m
RlBSczsKICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gMDsKICAgICAKICAgICBpZiAob2Zmc2V0QmFz
ZVR5cGUgPT0gRnJhbWVQb2ludGVyQmFzZWQpCi0gICAgICAgIG9mZnNldCA9IC0oc3RhdGljX2Nh
c3Q8cHRyZGlmZl90PihudW1iZXJPZlJlZ2lzdGVycykgKiBzaXplb2YoQ1BVUmVnaXN0ZXIpKTsK
KyAgICAgICAgb2Zmc2V0ID0gLShzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KG51bWJlck9mR1BScykg
KiBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkdQKSkgKyBzdGF0
aWNfY2FzdDxwdHJkaWZmX3Q+KG51bWJlck9mRlBScykgKiBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6
Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwog
ICAgIHJlZ2lzdGVyU2V0LmZvckVhY2goWyZdIChSZWcgcmVnKSB7CiAgICAgICAgIG1fcmVnaXN0
ZXJzW2luZGV4XSA9IFJlZ2lzdGVyQXRPZmZzZXQocmVnLCBvZmZzZXQpOwotICAgICAgICBvZmZz
ZXQgKz0gc2l6ZW9mKENQVVJlZ2lzdGVyKTsKKyAgICAgICAgb2Zmc2V0ICs9IEIzOjpieXRlc0Zv
cldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6YmFua0ZvclJlZyhyZWcpKSk7CiAgICAg
ICAgICsraW5kZXg7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAKaW5kZXggMjI0ZTI1MzQ5MzRiLi45
M2I2ZmNjMzk2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB1bnNpZ25lZCBT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwo
QXNzZW1ibHlIZWxwZQogICAgIGlmICghdXNlZFJlZ2lzdGVycy5udW1iZXJPZlNldFJlZ2lzdGVy
cygpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICB1bnNpZ25lZCBzdGFja09mZnNldCA9
ICh1c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkpICogc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKTsKKyAgICB1bnNpZ25lZCBzdGFja09mZnNldCA9ICh1c2VkUmVnaXN0ZXJzLm51bWJl
ck9mU2V0R1BScygpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgKyAodXNlZFJlZ2lzdGVycy5u
dW1iZXJPZlNldEZQUnMoKSAqIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0
aChCMzo6RlApKSk7CiAgICAgc3RhY2tPZmZzZXQgKz0gZXh0cmFCeXRlc0F0VG9wT2ZTdGFjazsK
ICAgICBzdGFja09mZnNldCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVu
dEJ5dGVzKCksIHN0YWNrT2Zmc2V0KTsKICAgICBqaXQuc3ViUHRyKApAQCAtMTg2LDEyICsxODYs
MTQgQEAgdW5zaWduZWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVy
c1RvU3RhY2tGb3JDYWxsKEFzc2VtYmx5SGVscGUKICAgICB9CiAgICAgc3Bvb2xlci5maW5hbGl6
ZUdQUigpOwogCisgICAgdW5zaWduZWQgZnByQ291bnQgPSAwOwogICAgIGZvciAoRlBSUmVnIHJl
ZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1i
bGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQUmVnaXN0
ZXIocmVnKSkgewogICAgICAgICBpZiAodXNlZFJlZ2lzdGVycy5nZXQocmVnKSkgewotICAgICAg
ICAgICAgc3Bvb2xlci5zdG9yZUZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihleHRy
YUJ5dGVzQXRUb3BPZlN0YWNrICsgKGNvdW50ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpIH0p
OwotICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgICAgIHNwb29sZXIuc3RvcmVGUFIoeyBy
ZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChjb3Vu
dCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpICsgKGZwckNvdW50ICogQjM6OmJ5dGVzRm9yV2lk
dGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpKSkgfSwgQjM6OmJ5dGVzRm9yV2lkdGgo
QjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpKTsKKyAgICAgICAgICAgIGZwckNvdW50Kys7
CiAgICAgICAgIH0KICAgICB9CisgICAgY291bnQgKz0gZnByQ291bnQ7CiAgICAgc3Bvb2xlci5m
aW5hbGl6ZUZQUigpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoY291bnQgPT0gdXNlZFJlZ2lzdGVy
cy5udW1iZXJPZlNldFJlZ2lzdGVycygpKTsKQEAgLTIxOSwxNiArMjIxLDE4IEBAIHZvaWQgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChB
c3NlbWJseUhlbHBlcnMmCiAgICAgfQogICAgIHNwb29sZXIuZmluYWxpemVHUFIoKTsKIAorICAg
IHVuc2lnbmVkIGZwckNvdW50ID0gMDsKICAgICBmb3IgKEZQUlJlZyByZWcgPSBNYWNyb0Fzc2Vt
Ymxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVn
aXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJlZykpIHsKICAg
ICAgICAgaWYgKHVzZWRSZWdpc3RlcnMuZ2V0KHJlZykpIHsKICAgICAgICAgICAgIGlmICghaWdu
b3JlLmdldChyZWcpKQotICAgICAgICAgICAgICAgIHNwb29sZXIubG9hZEZQUih7IHJlZywgc3Rh
dGljX2Nhc3Q8cHRyZGlmZl90PihleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkgKiBjb3VudCkpIH0pOwotICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAg
ICAgICAgICBzcG9vbGVyLmxvYWRGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZXh0
cmFCeXRlc0F0VG9wT2ZTdGFjayArIChjb3VudCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpICsg
KGZwckNvdW50ICogQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpG
UCkpKSkgfSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkp
KTsKKyAgICAgICAgICAgIGZwckNvdW50Kys7CiAgICAgICAgIH0KICAgICB9CisgICAgY291bnQg
Kz0gZnByQ291bnQ7CiAgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigpOwogCi0gICAgdW5zaWduZWQg
c3RhY2tPZmZzZXQgPSAodXNlZFJlZ2lzdGVycy5udW1iZXJPZlNldFJlZ2lzdGVycygpKSAqIHNp
emVvZihFbmNvZGVkSlNWYWx1ZSk7CisgICAgdW5zaWduZWQgc3RhY2tPZmZzZXQgPSAodXNlZFJl
Z2lzdGVycy5udW1iZXJPZlNldEdQUnMoKSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpICsgKHVz
ZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRGUFJzKCkgKiBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29u
c2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOwogICAgIHN0YWNrT2Zmc2V0ICs9IGV4dHJhQnl0ZXNB
dFRvcE9mU3RhY2s7CiAgICAgc3RhY2tPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yo
c3RhY2tBbGlnbm1lbnRCeXRlcygpLCBzdGFja09mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2ltZEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvU2ltZEluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk1
NGU4MzIxMmQ0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
U2ltZEluZm8uaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeworCit0eXBl
ZGVmIHVuaW9uIHYxMjhfdSB7CisgICAgdWludDhfdCB1OHgxNlsxNl07CisgICAgdWludDE2X3Qg
dTE2eDhbOF07CisgICAgdWludDMyX3QgdTMyeDRbNF07CisgICAgdWludDY0X3QgdTY0eDJbMl0g
PSB7IDAsIDAgfTsKK30gdjEyOF90OworCitlbnVtIGNsYXNzIFNpbWRMYW5lSW50ZXJwcmV0YXRp
b24gOiB1aW50OF90IHsKKyAgICB2MTI4LCBpOHgxNiwgaTE2eDgsIGkzMng0LCBpNjR4MiwgZjMy
eDQsIGY2NHgyCit9OworCitlbnVtIGNsYXNzIFNpbWRTaWduRXh0ZW5kTW9kZSA6IHVpbnQ4X3Qg
eworICAgIE5BLCBTLCBVCit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IDNlNTM3OTA1MjI3MS4uY2EzZThk
MGU5MTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1i
bHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20K
QEAgLTM5LDYgKzM5LDcgQEAgZWxzZQogZW5kCiBjb25zdCBOdW1iZXJPZldhc21Bcmd1bWVudEZQ
UnMgPSA4CiBjb25zdCBOdW1iZXJPZldhc21Bcmd1bWVudHMgPSBOdW1iZXJPZldhc21Bcmd1bWVu
dEdQUnMgKyBOdW1iZXJPZldhc21Bcmd1bWVudEZQUnMKK2NvbnN0IFdhc21Bcmd1bWVudHNTaXpl
SW5SZWdpc3RlcnMgPSBOdW1iZXJPZldhc21Bcmd1bWVudEdQUnMgKyAyKk51bWJlck9mV2FzbUFy
Z3VtZW50RlBScwogCiAjIEFsbCBjYWxsZWUgc2F2ZXMgbXVzdCBtYXRjaCB0aGUgZGVmaW5pdGlv
biBpbiBXYXNtQ2FsbGVlLmNwcAogCkBAIC03MCwxNCArNzEsMTQgQEAgbWFjcm8gZm9yRWFjaEFy
Z3VtZW50R1BSKGZuKQogZW5kCiAKIG1hY3JvIGZvckVhY2hBcmd1bWVudEZQUihmbikKLSAgICBm
bigoTnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICsgMCkgKiA4LCB3ZmEwKQotICAgIGZuKChOdW1i
ZXJPZldhc21Bcmd1bWVudEdQUnMgKyAxKSAqIDgsIHdmYTEpCi0gICAgZm4oKE51bWJlck9mV2Fz
bUFyZ3VtZW50R1BScyArIDIpICogOCwgd2ZhMikKLSAgICBmbigoTnVtYmVyT2ZXYXNtQXJndW1l
bnRHUFJzICsgMykgKiA4LCB3ZmEzKQotICAgIGZuKChOdW1iZXJPZldhc21Bcmd1bWVudEdQUnMg
KyA0KSAqIDgsIHdmYTQpCi0gICAgZm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDUpICog
OCwgd2ZhNSkKLSAgICBmbigoTnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICsgNikgKiA4LCB3ZmE2
KQotICAgIGZuKChOdW1iZXJPZldhc21Bcmd1bWVudEdQUnMgKyA3KSAqIDgsIHdmYTcpCisgICAg
Zm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDAgKiAyKSAqIDgsIHdmYTApCisgICAgZm4o
KE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDEgKiAyKSAqIDgsIHdmYTEpCisgICAgZm4oKE51
bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDIgKiAyKSAqIDgsIHdmYTIpCisgICAgZm4oKE51bWJl
ck9mV2FzbUFyZ3VtZW50R1BScyArIDMgKiAyKSAqIDgsIHdmYTMpCisgICAgZm4oKE51bWJlck9m
V2FzbUFyZ3VtZW50R1BScyArIDQgKiAyKSAqIDgsIHdmYTQpCisgICAgZm4oKE51bWJlck9mV2Fz
bUFyZ3VtZW50R1BScyArIDUgKiAyKSAqIDgsIHdmYTUpCisgICAgZm4oKE51bWJlck9mV2FzbUFy
Z3VtZW50R1BScyArIDYgKiAyKSAqIDgsIHdmYTYpCisgICAgZm4oKE51bWJlck9mV2FzbUFyZ3Vt
ZW50R1BScyArIDcgKiAyKSAqIDgsIHdmYTcpCiBlbmQKIAogIyBIZWxwZXIgbWFjcm9zCkBAIC0x
MzUsNyArMTM2LDcgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xvZ3VlKGNvZGVCbG9j
a1JlZ2lzdGVyKQogICAgICAgICAgICAgZW5kKQogCiAgICAgICAgICAgICBmb3JFYWNoQXJndW1l
bnRGUFIobWFjcm8gKG9mZnNldCwgZnByKQotICAgICAgICAgICAgICAgIGxvYWRkIC1vZmZzZXQg
LSA4IC0gQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzICogOFtjZnJdLCBmcHIKKyAg
ICAgICAgICAgICAgICBsb2FkdiAtb2Zmc2V0IC0gOCAtIENhbGxlZVNhdmVTcGFjZUFzVmlydHVh
bFJlZ2lzdGVycyAqIDhbY2ZyXSwgZnByCiAgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgICAg
IHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQpAQCAtMzE2LDcgKzMxNyw3IEBAIG1hY3Jv
IHdhc21Qcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgbG9hZFdhc21J
bnN0YW5jZSkKICAgICBlbmQpCiAKICAgICBmb3JFYWNoQXJndW1lbnRGUFIobWFjcm8gKG9mZnNl
dCwgZnByKQotICAgICAgICBzdG9yZWQgZnByLCAtb2Zmc2V0IC0gOCAtIENhbGxlZVNhdmVTcGFj
ZUFzVmlydHVhbFJlZ2lzdGVycyAqIDhbY2ZyXQorICAgICAgICBzdG9yZXYgZnByLCAtb2Zmc2V0
IC0gOCAtIENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyAqIDhbY2ZyXQogICAgIGVu
ZCkKIAogICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JQcm9sb2d1ZSh3czApCkBAIC0zMjYsMTEgKzMy
NywxMSBAQCBtYWNybyB3YXNtUHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0
ZXIsIGxvYWRXYXNtSW5zdGFuY2UpCiAgICAgbW92ZSAwLCBQQwogCiAgICAgbG9hZGkgV2FzbTo6
TExJbnRDYWxsZWU6Om1fbnVtVmFyc1t3czBdLCB3czEKLSAgICBzdWJpIE51bWJlck9mV2FzbUFy
Z3VtZW50cyArIENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycywgd3MxCisgICAgc3Vi
aSBXYXNtQXJndW1lbnRzU2l6ZUluUmVnaXN0ZXJzICsgQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFs
UmVnaXN0ZXJzLCB3czEKICAgICBidGl6IHdzMSwgLnplcm9Jbml0aWFsaXplTG9jYWxzRG9uZQog
ICAgIG5lZ2kgd3MxCiAgICAgc3hpMnEgd3MxLCB3czEKLSAgICBsZWFwIChOdW1iZXJPZldhc21B
cmd1bWVudHMgKyBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKyAxKSAqIC04W2Nm
cl0sIHdzMAorICAgIGxlYXAgKFdhc21Bcmd1bWVudHNTaXplSW5SZWdpc3RlcnMgKyBDYWxsZWVT
YXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKyAxKSAqIC04W2Nmcl0sIHdzMAogLnplcm9Jbml0
aWFsaXplTG9jYWxzTG9vcDoKICAgICBhZGRxIDEsIHdzMQogICAgIHN0b3JlcSAwLCBbd3MwLCB3
czEsIDhdCkBAIC00MzEsNiArNDMyLDEzIEBAIG1hY3JvIG1sb2FkZChjdHgsIGZpZWxkLCBkc3Qp
CiAgICAgZW5kKQogZW5kCiAKK21hY3JvIG1sb2FkdihjdHgsIGZpZWxkLCBkc3QpCisgICAgd2dl
dHMoY3R4LCBmaWVsZCwgdDUpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShjdHgsIHQ1LCBt
YWNybyAoZnJvbSkKKyAgICAgICAgbG9hZHYgZnJvbSwgZHN0CisgICAgZW5kKQorZW5kCisKICMg
VHlwZWQgcmV0dXJucwogCiBtYWNybyByZXR1cm5xKGN0eCwgdmFsdWUpCkBAIC00NTcsNiArNDY1
LDEyIEBAIG1hY3JvIHJldHVybmQoY3R4LCB2YWx1ZSkKICAgICBkaXNwYXRjaChjdHgpCiBlbmQK
IAorbWFjcm8gcmV0dXJudihjdHgsIHZhbHVlKQorICAgIHdnZXRzKGN0eCwgbV9kc3QsIHQ1KQor
ICAgIHN0b3JldiB2YWx1ZSwgW2NmciwgdDUsIDhdCisgICAgZGlzcGF0Y2goY3R4KQorZW5kCisK
ICMgV2FzbSB3cmFwcGVyIG9mIGdldC9nZXR1IHRoYXQgb3BlcmF0ZSBvbiBjdHgKIG1hY3JvIHdn
ZXRzKGN0eCwgZmllbGQsIGRzdCkKICAgICBjdHgobWFjcm8ob3Bjb2RlTmFtZSwgb3Bjb2RlU3Ry
dWN0LCBzaXplKQpAQCAtNjIxLDEwICs2MzUsMTAgQEAgX3dhc21fZW50ZXI6CiAgICAgY2hlY2tT
dGFja1BvaW50ZXJBbGlnbm1lbnQodDIsIDB4ZGVhZDAwZTEpCiAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQyICAgICAgICAgICAgICAgIC8vIHQyPENvZGVCbG9jaz4gPSBjZnIuQ29kZUJsb2Nr
CiAgICAgbG9hZGkgV2FzbTo6TExJbnRDYWxsZWU6Om1fbnVtVmFyc1t0Ml0sIHQyICAgICAgLy8g
dDI8c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4ubV9udW1WYXJzCi0gICAgc3VicSBDYWxsZWVTYXZl
U3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKyBOdW1iZXJPZldhc21Bcmd1bWVudHMsIHQyCisgICAg
c3VicSBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKyBXYXNtQXJndW1lbnRzU2l6
ZUluUmVnaXN0ZXJzLCB0MgogICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZQogICAgIG1vdmUgY2Zy
LCB0MQotICAgIHN1YnEgQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzICogOCArIE51
bWJlck9mV2FzbUFyZ3VtZW50cyAqIDgsIHQxCisgICAgc3VicSBDYWxsZWVTYXZlU3BhY2VBc1Zp
cnR1YWxSZWdpc3RlcnMgKiA4ICsgV2FzbUFyZ3VtZW50c1NpemVJblJlZ2lzdGVycyAqIDgsIHQx
CiAgICAgbmVnaSB0MgogICAgIHN4aTJxIHQyLCB0MgogLm9wRW50ZXJMb29wOgpAQCAtNjM4LDYg
KzY1MiwxMSBAQCB1bnByZWZpeGVkV2FzbU9wKHdhc21fbm9wLCBXYXNtTm9wLCBtYWNybyhjdHgp
CiAgICAgZGlzcGF0Y2goY3R4KQogZW5kKQogCit1bnByZWZpeGVkV2FzbU9wKHdhc21fYnJlYWss
IFdhc21CcmVhaywgbWFjcm8oY3R4KQorICAgIGJyZWFrCisgICAgZGlzcGF0Y2goY3R4KQorZW5k
KQorCiB3YXNtT3AobG9vcF9oaW50LCBXYXNtTG9vcEhpbnQsIG1hY3JvKGN0eCkKICAgICBjaGVj
a1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgZGlzcGF0Y2goY3R4KQpAQCAtNzAzLDcgKzcyMiw3
IEBAIHVucHJlZml4ZWRXYXNtT3Aod2FzbV9yZXQsIFdhc21SZXQsIG1hY3JvKGN0eCkKICAgICAg
ICAgbG9hZHEgLW9mZnNldCAtIDggLSBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMg
KiA4W2Nmcl0sIGdwcgogICAgIGVuZCkKICAgICBmb3JFYWNoQXJndW1lbnRGUFIobWFjcm8gKG9m
ZnNldCwgZnByKQotICAgICAgICBsb2FkZCAtb2Zmc2V0IC0gOCAtIENhbGxlZVNhdmVTcGFjZUFz
VmlydHVhbFJlZ2lzdGVycyAqIDhbY2ZyXSwgZnByCisgICAgICAgIGxvYWR2IC1vZmZzZXQgLSA4
IC0gQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzICogOFtjZnJdLCBmcHIKICAgICBl
bmQpCiAgICAgZG9SZXR1cm4oKQogZW5kKQpAQCAtNzczLDcgKzc5Miw3IEBAIG1hY3JvIHNsb3dQ
YXRoRm9yV2FzbUNhbGwoY3R4LCBzbG93UGF0aCwgc3RvcmVXYXNtSW5zdGFuY2UpCiAgICAgICAg
ICAgICBsc2hpZnRpIDMsIHdzMQogICAgICAgICAgICAgc3VicCBjZnIsIHdzMSwgc3AKIAotICAg
ICAgICAgICAgd2dldHUoY3R4LCBtX251bWJlck9mU3RhY2tBcmdzLCB3czEpCisgICAgICAgICAg
ICB3Z2V0dShjdHgsIG1fc2l6ZU9mU3RhY2tBcmdzLCB3czEpCiAKICAgICAgICAgICAgICMgUHJl
c2VydmUgdGhlIGN1cnJlbnQgaW5zdGFuY2UKICAgICAgICAgICAgIG1vdmUgd2FzbUluc3RhbmNl
LCBQQgpAQCAtNzg3LDcgKzgwNiw3IEBAIG1hY3JvIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBz
bG93UGF0aCwgc3RvcmVXYXNtSW5zdGFuY2UpCiAgICAgICAgICAgICBlbmQpCiAKICAgICAgICAg
ICAgIGZvckVhY2hBcmd1bWVudEZQUihtYWNybyAob2Zmc2V0LCBmcHIpCi0gICAgICAgICAgICAg
ICAgbG9hZGQgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBvZmZzZXRbc3AsIHdzMSwgOF0sIGZw
cgorICAgICAgICAgICAgICAgIGxvYWR2IENhbGxGcmFtZUhlYWRlclNpemUgKyA4ICsgb2Zmc2V0
W3NwLCB3czEsIDhdLCBmcHIKICAgICAgICAgICAgIGVuZCkKIAogICAgICAgICAgICAgYWRkcCBD
YWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKQEAgLTg0MiwxNCArODYxLDE0IEBAIG1hY3JvIHNsb3dQ
YXRoRm9yV2FzbUNhbGwoY3R4LCBzbG93UGF0aCwgc3RvcmVXYXNtSW5zdGFuY2UpCiAKICAgICAg
ICAgICAgICMgQXJndW1lbnQgcmVnaXN0ZXJzIGFyZSBhbHNvIHJldHVybiByZWdpc3RlcnMsIHNv
IHRoZXkgbXVzdCBiZSBzdG9yZWQgdG8gdGhlIHN0YWNrCiAgICAgICAgICAgICAjIGluIGNhc2Ug
dGhleSBjb250YWluIHJldHVybiB2YWx1ZXMuCi0gICAgICAgICAgICB3Z2V0dShjdHgsIG1fbnVt
YmVyT2ZTdGFja0FyZ3MsIHdzMCkKKyAgICAgICAgICAgIHdnZXR1KGN0eCwgbV9zaXplT2ZTdGFj
a0FyZ3MsIHdzMCkKICAgICAgICAgICAgIG1vdmUgbWVtb3J5QmFzZSwgUEMKICAgICAgICAgICAg
IGZvckVhY2hBcmd1bWVudEdQUihtYWNybyAob2Zmc2V0LCBncHIpCiAgICAgICAgICAgICAgICAg
c3RvcmVxIGdwciwgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBvZmZzZXRbd3MxLCB3czAsIDhd
CiAgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgICAgIGZvckVhY2hBcmd1bWVudEZQUihtYWNy
byAob2Zmc2V0LCBmcHIpCi0gICAgICAgICAgICAgICAgc3RvcmVkIGZwciwgQ2FsbEZyYW1lSGVh
ZGVyU2l6ZSArIDggKyBvZmZzZXRbd3MxLCB3czAsIDhdCisgICAgICAgICAgICAgICAgc3RvcmV2
IGZwciwgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBvZmZzZXRbd3MxLCB3czAsIDhdCiAgICAg
ICAgICAgICBlbmQpCiAKICAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCkBAIC0yOTE1LDMgKzI5MzQsMTIgQEAgZW5kKQogY29t
bW9uV2FzbU9wKHdhc21fY2F0Y2hfYWxsX25vX3RscywgV2FzbUNhdGNoQWxsLCBtYWNybygpIGVu
ZCwgbWFjcm8oY3R4KQogICAgIGNhdGNoQWxsSW1wbChjdHgsIG1hY3JvKGluc3RhbmNlKSBlbmQp
CiBlbmQpCisKK3dhc21PcChzaW1kX2V4dHJhY3RfbGFuZV9pOHgxNl91LCBXYXNtU2ltZEV4dHJh
Y3RMYW5lSTh4MTZVLCBtYWNybyhjdHgpCisgICAgbWxvYWR2KGN0eCwgbV92LCBmdDApCisgICAg
d2dldHUoY3R4LCBtX2xhbmUsIHQwKQorICAgIHNwbGF0X2xhbmVfYnl0ZSB0MCwgZnQxCisgICAg
c3dpenpsZV9ieXRlIGZ0MSwgZnQwCisgICAgZXh0cmFjdF9sYW5lX2J5dGUgMCwgZnQwLCB0MAor
ICAgIHJldHVybmkoY3R4LCB0MCkKK2VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYXJtNjQucmIKaW5kZXggMWFkZDU0MGQ4MzVjLi5jMWZiN2M0MGFhMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCkBAIC0xMDIsNiArMTAyLDggQEAgZGVm
IGFybTY0RlBSTmFtZShuYW1lLCBraW5kKQogICAgIHdoZW4gOmZsb2F0CiAgICAgICAgICJzIiAr
IG5hbWVbMS4uLTFdCiAgICAgd2hlbiA6dmVjdG9yCisgICAgICAgICJxIiArIG5hbWVbMS4uLTFd
CisgICAgd2hlbiA6dmVjdG9yX3N1ZmZpeGVkCiAgICAgICAgICJ2IiArIG5hbWVbMS4uLTFdCiAg
ICAgZWxzZQogICAgICAgICByYWlzZSAiYmFkIEZQUiBraW5kICN7a2luZH0iCkBAIC0xNzcsNiAr
MTc5LDE3IEBAIGNsYXNzIFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlICJCYWQgcmVnaXN0
ZXIgbmFtZSAje0BuYW1lfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgogICAgICAgICBlbmQKICAg
ICBlbmQKKyAgICAKKyAgICBkZWYgYXJtNjRPcGVyYW5kU3VmZml4ZWQoKQorICAgICAgICBiYXNl
ID0gc2VsZi5hcm02NE9wZXJhbmQoQHN1ZmZpeF9raW5kKQorICAgICAgICBiYXNlICsgQHN1ZmZp
eAorICAgIGVuZAorICAgIAorICAgIGRlZiB3aXRoU3VmZml4KHN1ZmZpeF9raW5kLCBzdWZmaXgp
CisgICAgICAgIEBzdWZmaXhfa2luZCA9IHN1ZmZpeF9raW5kCisgICAgICAgIEBzdWZmaXggPSBz
dWZmaXguZW1wdHk/ID8gIiIgOiAiLiN7c3VmZml4fSIKKyAgICAgICAgc2VsZgorICAgIGVuZAog
ZW5kCiAKIGNsYXNzIEZQUmVnaXN0ZXJJRApAQCAtMjE3LDEyICsyMzAsNDMgQEAgY2xhc3MgRlBS
ZWdpc3RlcklECiAgICAgICAgIGVsc2UgIkJhZCByZWdpc3RlciBuYW1lICN7QG5hbWV9IGF0ICN7
Y29kZU9yaWdpblN0cmluZ30iCiAgICAgICAgIGVuZAogICAgIGVuZAorICAgIAorICAgIGRlZiBh
cm02NE9wZXJhbmRTdWZmaXhlZCgpCisgICAgICAgIGJhc2UgPSBzZWxmLmFybTY0T3BlcmFuZChA
c3VmZml4X2tpbmQpCisgICAgICAgIGluZGV4ID0gQGluZGV4ID09IDpub25lID8gIiIgOiAiIFsg
I3tAaW5kZXguYXJtNjRJbmRleCgpfSBdIgorICAgICAgICBiYXNlICsgQHN1ZmZpeCArIGluZGV4
CisgICAgZW5kCisgICAgCisgICAgZGVmIHdpdGhTdWZmaXgoc3VmZml4X2tpbmQsIHN1ZmZpeCkK
KyAgICAgICAgQHN1ZmZpeF9raW5kID0gc3VmZml4X2tpbmQKKyAgICAgICAgQHN1ZmZpeCA9IHN1
ZmZpeC5lbXB0eT8gPyAiIiA6ICIuI3tzdWZmaXh9IgorICAgICAgICBAaW5kZXggPSA6bm9uZQor
ICAgICAgICBzZWxmCisgICAgZW5kCisgICAgCisgICAgZGVmIHdpdGhJbmRleChpbmRleCkKKyAg
ICAgICAgcmFpc2UgdW5sZXNzIGluZGV4LmlzX2E/IEltbWVkaWF0ZQorICAgICAgICBAaW5kZXgg
PSBpbmRleAorICAgICAgICBzZWxmCisgICAgZW5kCiBlbmQKIAogY2xhc3MgSW1tZWRpYXRlCiAg
ICAgZGVmIGFybTY0T3BlcmFuZChraW5kKQogICAgICAgICAiXCMje3ZhbHVlfSIKICAgICBlbmQK
KyAgICAKKyAgICBkZWYgYXJtNjRPcGVyYW5kU3VmZml4ZWQoKQorICAgICAgICAiXCMje3ZhbHVl
fSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYXJtNjRJbmRleCgpCisgICAgICAgICIje3ZhbHVl
fSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgd2l0aFN1ZmZpeChfLCBfKQorICAgICAgICBzZWxm
CisgICAgZW5kCiBlbmQKIAogY2xhc3MgQWRkcmVzcwpAQCAtMzA3LDcgKzM1MSw3IEBAIGRlZiBh
cm02NExvd2VyTGFiZWxSZWZlcmVuY2VzKGxpc3QpCiAgICAgICAgIHwgbm9kZSB8CiAgICAgICAg
IGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUK
LSAgICAgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRpcyIsICJsb2FkcCIsICJsb2FkcSIsICJs
b2FkYiIsICJsb2FkYnNpIiwgImxvYWRic3EiLCAibG9hZGgiLCAibG9hZGhzaSIsICJsb2FkaHNx
IiwgImxlYXAiCisgICAgICAgICAgICB3aGVuICJsb2FkaSIsICJsb2FkaXMiLCAibG9hZHAiLCAi
bG9hZHEiLCAibG9hZGIiLCAibG9hZGJzaSIsICJsb2FkYnNxIiwgImxvYWRoIiwgImxvYWRoc2ki
LCAibG9hZGhzcSIsICJsZWFwIiwgImxvYWR2IgogICAgICAgICAgICAgICAgIGxhYmVsUmVmID0g
bm9kZS5vcGVyYW5kc1swXQogICAgICAgICAgICAgICAgIGlmIGxhYmVsUmVmLmlzX2E/IExhYmVs
UmVmZXJlbmNlCiAgICAgICAgICAgICAgICAgICAgIGRlc3QgPSBub2RlLm9wZXJhbmRzWzFdCkBA
IC0zODksNyArNDMzLDcgQEAgY2xhc3MgU2VxdWVuY2UKICAgICAgICAgICAgIHdoZW4gImxvYWRw
IiwgInN0b3JlcCIsICJsb2FkcSIsICJzdG9yZXEiLCAibG9hZGQiLCAic3RvcmVkIiwgImxzaGlm
dHAiLCAibHNoaWZ0cSIsICJuZWdwIiwgIm5lZ3EiLCAicnNoaWZ0cCIsICJyc2hpZnRxIiwKICAg
ICAgICAgICAgICAgICAidXJzaGlmdHAiLCAidXJzaGlmdHEiLCAiYWRkcCIsICJhZGRxIiwgIm11
bHAiLCAibXVscSIsICJhbmRwIiwgImFuZHEiLCAib3JwIiwgIm9ycSIsICJzdWJwIiwgInN1YnEi
LCAieG9ycCIsICJ4b3JxIiwgImFkZGQiLAogICAgICAgICAgICAgICAgICJkaXZkIiwgInN1YmQi
LCAibXVsZCIsICJzcXJ0ZCIsIC9eYnAvLCAvXmJxLywgL15idHAvLCAvXmJ0cS8sIC9eY3AvLCAv
XmNxLywgL150cC8sIC9edHEvLCAvXmJkLywKLSAgICAgICAgICAgICAgICAiam1wIiwgImNhbGwi
LCAibGVhcCIsICJsZWFxIiwgImxvYWRsaW5rYWNxcSIsICJzdG9yZWNvbmRyZWxxIiwgL15hdG9t
aWNbYS16XStxJC8KKyAgICAgICAgICAgICAgICAiam1wIiwgImNhbGwiLCAibGVhcCIsICJsZWFx
IiwgImxvYWRsaW5rYWNxcSIsICJzdG9yZWNvbmRyZWxxIiwgL15hdG9taWNbYS16XStxJC8sICJs
b2FkdiIsICJzdG9yZXYiCiAgICAgICAgICAgICAgICAgc2l6ZSA9ICRjdXJyZW50U2V0dGluZ3Nb
IkFERFJFU1M2NCJdID8gOCA6IDQKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBy
YWlzZSAiQmFkIGluc3RydWN0aW9uICN7bm9kZS5vcGNvZGV9IGZvciBoZWFwIGFjY2VzcyBhdCAj
e25vZGUuY29kZU9yaWdpblN0cmluZ306ICN7bm9kZS5kdW1wfSIKQEAgLTU4Myw3ICs2MjcsNyBA
QCBkZWYgZW1pdEFSTTY0VEFDV2l0aE9wZXJhbmRTdWZmaXgob3Bjb2RlLCBvcGVyYW5kcywga2lu
ZCkKICAgICBzaXplID0ga2luZCA9PSA6ZmxvYXQgPyA4IDogMTYKICAgICBvcGVyYW5kcyA9IG9w
ZXJhbmRzLm1hcCB7IHxvcGVyYW5kfAogICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZC5pc19h
PyBGUFJlZ2lzdGVySUQKLSAgICAgICAgIiN7b3BlcmFuZC5hcm02NE9wZXJhbmQoOnZlY3Rvcil9
LiN7c2l6ZX1iIgorICAgICAgICAiI3tvcGVyYW5kLmFybTY0T3BlcmFuZCg6dmVjdG9yX3N1ZmZp
eGVkKX0uI3tzaXplfWIiCiAgICAgfQogICAgIGlmIG9wZXJhbmRzLmxlbmd0aCA9PSAyCiAgICAg
ICBvcGVyYW5kcyA9IFtvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzBdXQpAQCAt
NTk0LDYgKzYzOCwyMyBAQCBkZWYgZW1pdEFSTTY0VEFDV2l0aE9wZXJhbmRTdWZmaXgob3Bjb2Rl
LCBvcGVyYW5kcywga2luZCkKICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzLmpv
aW4oIiwgIil9IgogZW5kCiAKK2RlZiBlbWl0QVJNNjRXaXRoT3BlcmFuZFN1ZmZpeGVzKG9wY29k
ZSwgKm9wZXJhbmRzKQorICAgIG9wZXJhbmRzID0gb3BlcmFuZHMubWFwIHsgfG9wZXJhbmR8Cisg
ICAgICAgIGlmIG9wZXJhbmQua2luZF9vZj8gQXJyYXkKKyAgICAgICAgICAgICJ7ICIgKyAob3Bl
cmFuZC5tYXAgeyB8IG8gfCBvLmFybTY0T3BlcmFuZFN1ZmZpeGVkKCkgfSkuam9pbigiLCIpICsg
IiB9IgorICAgICAgICBlbHNlCisgICAgICAgICAgICBvcGVyYW5kLmFybTY0T3BlcmFuZFN1ZmZp
eGVkKCkKKyAgICAgICAgZW5kCisgICAgfQorICAgIGlmIG9wZXJhbmRzLmxlbmd0aCA9PSAyCisg
ICAgICBvcGVyYW5kcyA9IFtvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMF1dCisgICAgZWxzZQorICAg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzLmxlbmd0aCA9PSAzCisgICAgICBvcGVyYW5kcyA9IFtv
cGVyYW5kc1syXSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdXQorICAgIGVuZAorICAgICRhc20u
cHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHMuam9pbigiLCAiKX0iCitlbmQKKwogZGVmIGVtaXRB
Uk02NChvcGNvZGUsIG9wZXJhbmRzLCBraW5kKQogICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7
YXJtNjRGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMsIGtpbmQpfSIKIGVuZApAQCAtNzg5LDYgKzg1
MCw4IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBlbWl0QVJNNjRVbmZsaXBwZWQo
InN0ciIsIG9wZXJhbmRzLCA6cHRyKQogICAgICAgICB3aGVuICJzdG9yZXEiCiAgICAgICAgICAg
ICBlbWl0QVJNNjRVbmZsaXBwZWQoInN0ciIsIG9wZXJhbmRzLCA6cXVhZCkKKyAgICAgICAgd2hl
biAic3RvcmV2IgorICAgICAgICAgICAgZW1pdEFSTTY0VW5mbGlwcGVkKCJzdHIiLCBvcGVyYW5k
cywgOnZlY3RvcikKICAgICAgICAgd2hlbiAibG9hZGIiCiAgICAgICAgICAgICBlbWl0QVJNNjRB
Y2Nlc3MoImxkcmIiLCAibGR1cmIiLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMF0sIDp3b3JkKQog
ICAgICAgICB3aGVuICJsb2FkYnNpIgpAQCAtODE5LDYgKzg4MiwxNCBAQCBjbGFzcyBJbnN0cnVj
dGlvbgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJmbXVsIiwgb3BlcmFuZHMsIDpkb3VibGUp
CiAgICAgICAgIHdoZW4gInNxcnRkIgogICAgICAgICAgICAgZW1pdEFSTTY0KCJmc3FydCIsIG9w
ZXJhbmRzLCA6ZG91YmxlKQorICAgICAgICB3aGVuICJsb2FkdiIKKyAgICAgICAgICAgIGVtaXRB
Uk02NEFjY2VzcygibGRyIiwgImxkdXIiLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMF0sIDp2ZWN0
b3IpCisgICAgICAgIHdoZW4gInNwbGF0X2xhbmVfYnl0ZSIKKyAgICAgICAgICAgIGVtaXRBUk02
NFdpdGhPcGVyYW5kU3VmZml4ZXMoImR1cCIsIG9wZXJhbmRzWzBdLndpdGhTdWZmaXgoOndvcmQs
ICIiKSwgb3BlcmFuZHNbMV0ud2l0aFN1ZmZpeCg6dmVjdG9yX3N1ZmZpeGVkLCAiMTZiIikpCisg
ICAgICAgIHdoZW4gInN3aXp6bGVfYnl0ZSIKKyAgICAgICAgICAgIGVtaXRBUk02NFdpdGhPcGVy
YW5kU3VmZml4ZXMoInRibCIsIFsgb3BlcmFuZHNbMV0ud2l0aFN1ZmZpeCg6dmVjdG9yX3N1ZmZp
eGVkLCAiMTZiIikgXSwgb3BlcmFuZHNbMF0ud2l0aFN1ZmZpeCg6dmVjdG9yX3N1ZmZpeGVkLCAi
MTZiIiksIG9wZXJhbmRzWzFdLndpdGhTdWZmaXgoOnZlY3Rvcl9zdWZmaXhlZCwgIjE2YiIpKQor
ICAgICAgICB3aGVuICJleHRyYWN0X2xhbmVfYnl0ZSIKKyAgICAgICAgICAgIGVtaXRBUk02NFdp
dGhPcGVyYW5kU3VmZml4ZXMoInVtb3YiLCBvcGVyYW5kc1sxXS53aXRoU3VmZml4KDp2ZWN0b3Jf
c3VmZml4ZWQsICJCIikud2l0aEluZGV4KG9wZXJhbmRzWzBdKSwgb3BlcmFuZHNbMl0ud2l0aFN1
ZmZpeCg6d29yZCwgIiIpKQogICAgICAgICB3aGVuICJiZGVxIgogICAgICAgICAgICAgZW1pdEFS
TTY0QnJhbmNoKCJmY21wIiwgb3BlcmFuZHMsIDpkb3VibGUsICJiLmVxIikKICAgICAgICAgd2hl
biAiYmRuZXEiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9p
bnN0cnVjdGlvbnMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVj
dGlvbnMucmIKaW5kZXggNDgxNDNhOTBiMDgwLi43ZTAzN2VjZTliMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKQEAgLTcyLDYgKzcy
LDExIEBAIE1BQ1JPX0lOU1RSVUNUSU9OUyA9CiAgICAgICJzdG9yZWIiLAogICAgICAibG9hZGYi
LAogICAgICAibG9hZGQiLAorICAgICAibG9hZHYiLAorICAgICAiZXh0cmFjdF9sYW5lX2J5dGUi
LAorICAgICAic3dpenpsZV9ieXRlIiwKKyAgICAgInJlcGxhY2VfbGFuZV9ieXRlIiwKKyAgICAg
InNwbGF0X2xhbmVfYnl0ZSIsCiAgICAgICJtb3ZlZCIsCiAgICAgICJzdG9yZWYiLAogICAgICAi
c3RvcmVkIiwKQEAgLTI4OSw2ICsyOTQsNyBAQCBNQUNST19JTlNUUlVDVElPTlMgPQogICAgICAi
Y3FsdCIsCiAgICAgICJjcWx0ZXEiLAogICAgICAic3RvcmVxIiwKKyAgICAgInN0b3JldiIsCiAg
ICAgICJidHFzIiwKICAgICAgImJ0cXoiLAogICAgICAiYnRxbnoiLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIKaW5kZXggMGYwNzJlOWZkMTFlLi4xYTI3M2NhYjMyNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgpAQCAtMjU5LDggKzI1
OSwxMiBAQCBkZWYgcmlzY0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzRG91YmxlKGxpc3QpCiAgICAg
ICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCiAgICAgICAgICAgICB3aGVuICJsb2FkZCIKICAgICAg
ICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJs
b2FkZCIsIFtub2RlLm9wZXJhbmRzWzBdLnJpc2NEb3VibGVBZGRyZXNzKG5ld0xpc3QpLCBub2Rl
Lm9wZXJhbmRzWzFdXSwgbm9kZS5hbm5vdGF0aW9uKQorICAgICAgICAgICAgd2hlbiAibG9hZHYi
CisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3Jp
Z2luLCAibG9hZHYiLCBbbm9kZS5vcGVyYW5kc1swXS5yaXNjRG91YmxlQWRkcmVzcyhuZXdMaXN0
KSwgbm9kZS5vcGVyYW5kc1sxXV0sIG5vZGUuYW5ub3RhdGlvbikKICAgICAgICAgICAgIHdoZW4g
InN0b3JlZCIKICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2Rl
LmNvZGVPcmlnaW4sICJzdG9yZWQiLCBbbm9kZS5vcGVyYW5kc1swXSwgbm9kZS5vcGVyYW5kc1sx
XS5yaXNjRG91YmxlQWRkcmVzcyhuZXdMaXN0KV0sIG5vZGUuYW5ub3RhdGlvbikKKyAgICAgICAg
ICAgIHdoZW4gInN0b3JldiIKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhub2RlLmNvZGVPcmlnaW4sICJzdG9yZXYiLCBbbm9kZS5vcGVyYW5kc1swXSwgbm9kZS5v
cGVyYW5kc1sxXS5yaXNjRG91YmxlQWRkcmVzcyhuZXdMaXN0KV0sIG5vZGUuYW5ub3RhdGlvbikK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKICAgICAg
ICAgICAgIGVuZApAQCAtNDMyLDcgKzQzNiw3IEBAIGRlZiByaXNjTG93ZXJPcGVyYW5kVG9SZWdp
c3RlcihpbnNuLCBwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFuZEluZGV4LCBzdWZmaXgsIG5lCiAg
ICAgb3BlcmFuZCA9IGluc24ub3BlcmFuZHNbb3BlcmFuZEluZGV4XQogICAgIHJldHVybiBvcGVy
YW5kIHVubGVzcyBvcGVyYW5kLmFkZHJlc3M/CiAKLSAgICB0bXAgPSBUbXAubmV3KGluc24uY29k
ZU9yaWdpbiwgaWYgc3VmZml4ID09ICJkIiB0aGVuIDpmcHIgZWxzZSA6Z3ByIGVuZCkKKyAgICB0
bXAgPSBUbXAubmV3KGluc24uY29kZU9yaWdpbiwgaWYgc3VmZml4ID09ICJkIiBvciBzdWZmaXgg
PT0gInYiIHRoZW4gOmZwciBlbHNlIDpncHIgZW5kKQogICAgIHByZUxpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KGluc24uY29kZU9yaWdpbiwgImxvYWQiICsgc3VmZml4LCBbb3BlcmFuZCwgdG1wXSkK
ICAgICBpZiBuZWVkU3RvcmUKICAgICAgICAgcG9zdExpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGlu
c24uY29kZU9yaWdpbiwgInN0b3JlIiArIHN1ZmZpeCwgW3RtcCwgb3BlcmFuZF0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKaW5kZXggOTVlNGM5YzJmYzczLi45ZDI4ZGM1
OTNlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5y
YgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKQEAgLTMzMSw3
ICszMzEsNyBAQCBlbmQKIAogY2xhc3MgRlBSZWdpc3RlcklECiAgICAgZGVmIHg4Nk9wZXJhbmQo
a2luZCkKLSAgICAgICAgcmFpc2UgdW5sZXNzIFs6ZmxvYXQsIDpkb3VibGVdLmluY2x1ZGU/IGtp
bmQKKyAgICAgICAgcmFpc2UgdW5sZXNzIFs6ZmxvYXQsIDpkb3VibGUsIDp2ZWN0b3JdLmluY2x1
ZGU/IGtpbmQKICAgICAgICAgY2FzZSBuYW1lCiAgICAgICAgIHdoZW4gImZ0MCIsICJmYTAiLCAi
ZnIiLCAid2ZhMCIKICAgICAgICAgICAgIHJlZ2lzdGVyKCJ4bW0wIikKQEAgLTEyMzAsMTIgKzEy
MzAsMjYgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgICRhc20ucHV0cyAibW92c3Mg
I3t4ODZPcGVyYW5kcyg6ZmxvYXQsIDpmbG9hdCl9IgogICAgICAgICB3aGVuICJsb2FkZCIKICAg
ICAgICAgICAgICRhc20ucHV0cyAibW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91Ymxl
KX0iCisgICAgICAgIHdoZW4gImxvYWR2IgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZkcXUg
I3t4ODZPcGVyYW5kcyg6aW50LCA6ZG91YmxlKX0iCisgICAgICAgIHdoZW4gImV4dHJhY3RfbGFu
ZV9ieXRlIgorICAgICAgICAgICAgJGFzbS5wdXRzICJwZXh0cmIgI3t4ODZPcGVyYW5kcyg6Ynl0
ZSwgOmRvdWJsZSwgOmludCl9IgorICAgICAgICB3aGVuICJzd2l6emxlX2J5dGUiCisgICAgICAg
ICAgICAkYXNtLnB1dHMgInBzaHVmYiAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIK
KyAgICAgICAgd2hlbiAicmVwbGFjZV9sYW5lX2J5dGUiCisgICAgICAgICAgICAkYXNtLnB1dHMg
InBpbnNyYiAje3g4Nk9wZXJhbmRzKDpieXRlLCA6aW50LCA6ZG91YmxlKX0iCisgICAgICAgIHdo
ZW4gInNwbGF0X2xhbmVfYnl0ZSIKKyAgICAgICAgICAgICRhc20ucHV0cyAicHhvciAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOnZlY3Rvcil9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOnZl
Y3Rvcil9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJwaW5zcmIgI3tjb25zdCgwKX0sICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6dmVj
dG9yKX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgInZwYnJvYWRjYXN0YiAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmZsb2F0KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6dmVjdG9yKX0i
CiAgICAgICAgIHdoZW4gIm1vdmVkIgogICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZzZCAje3g4
Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKICAgICAgICAgd2hlbiAic3RvcmVmIgogICAg
ICAgICAgICAgJGFzbS5wdXRzICJtb3ZzcyAje3g4Nk9wZXJhbmRzKDpmbG9hdCwgOmZsb2F0KX0i
CiAgICAgICAgIHdoZW4gInN0b3JlZCIKICAgICAgICAgICAgICRhc20ucHV0cyAibW92c2QgI3t4
ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgICAgIHdoZW4gInN0b3JldiIKKyAg
ICAgICAgICAgICRhc20ucHV0cyAibW92dXBzICN7eDg2T3BlcmFuZHMoOnZlY3RvciwgOnZlY3Rv
cil9IgogICAgICAgICB3aGVuICJhZGRmIgogICAgICAgICAgICAgaGFuZGxlWDg2QWRkRlAoOmZs
b2F0KQogICAgICAgICB3aGVuICJhZGRkIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnNMaXN0LmgKaW5kZXggYmY5ZDhhMzgzZjczLi5mZTk1NTI1ZmY4MGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTQ5LDYgKzU0OSw3
IEBAIGJvb2wgY2FuVXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCk7CiAgICAgdihCb29sLCB1c2VX
ZWJBc3NlbWJseVRocmVhZGluZywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgaW5zdHJ1Y3Rpb25zIGZy
b20gdGhlIHdhc20gdGhyZWFkaW5nIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1i
bHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcywgZmFsc2UsIE5vcm1hbCwgIkFsbG93IGZ1bmN0aW9u
IHR5cGVzIGZyb20gdGhlIHdhc20gdHlwZWQgZnVuY3Rpb24gcmVmZXJlbmNlcyBzcGVjLiIpIFwK
ICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5RXhjZXB0aW9ucywgdHJ1ZSwgTm9ybWFsLCAiQWxs
b3cgdGhlIG5ldyBzZWN0aW9uIGFuZCBpbnN0cnVjdGlvbnMgZnJvbSB0aGUgd2FzbSBleGNlcHRp
b24gaGFuZGxpbmcgc3BlYy4iKSBcCisgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVNJTUQsIHRy
dWUsIE5vcm1hbCwgIkFsbG93IHRoZSBuZXcgc2ltZCBpbnN0cnVjdGlvbnMgYW5kIHR5cGVzIGZy
b20gdGhlIHdhc20gc2ltZCBzcGVjLiIpIFwKIAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3Bw
CmluZGV4IDViYzQyNjA5MmI5MS4uYTAwNDNiYzE4NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTMyNyw4ICszMjcsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBmaW5hbGl6ZUVudHJ5cG9pbnRzKCk7CiAKICAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJik7
Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkTG9jYWwoVHlwZSwgdWlu
dDMyX3QpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZExvY2FsKFR5
cGUsIHVpbnQzMl90LCB1aW50MzJfdCk7CiAgICAgRXhwcmVzc2lvblR5cGUgYWRkQ29uc3RhbnQo
VHlwZSwgdWludDY0X3QpOworICAgIEV4cHJlc3Npb25UeXBlIGFkZENvbnN0YW50KHYxMjhfdCk7
CiAgICAgRXhwcmVzc2lvblR5cGUgYWRkQ29uc3RhbnQoQmFzaWNCbG9jayosIFR5cGUsIHVpbnQ2
NF90KTsKICAgICBFeHByZXNzaW9uVHlwZSBhZGRCb3R0b20oQmFzaWNCbG9jayosIFR5cGUpOwog
CkBAIC0zNDcsOCArMzQ4LDggQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIGFkZFRhYmxlQ29weSh1bnNpZ25lZCwgdW5zaWduZWQsIEV4cHJlc3Npb25UeXBl
IGRzdE9mZnNldCwgRXhwcmVzc2lvblR5cGUgc3JjT2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBsZW5n
dGgpOwogCiAgICAgLy8gTG9jYWxzCi0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHNldExvY2FsKHVpbnQzMl90IGluZGV4
LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIFdhc206OlR5cGUsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHNldExvY2Fs
KHVpbnQzMl90IGluZGV4LCBXYXNtOjpUeXBlLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSk7CiAKICAg
ICAvLyBHbG9iYWxzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZ2V0R2xv
YmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTM5OCw3ICsz
OTksNyBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRk
Q2F0Y2hBbGxUb1VucmVhY2hhYmxlKENvbnRyb2xUeXBlJik7CiAgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYWRkRGVsZWdhdGUoQ29udHJvbFR5cGUmLCBDb250cm9sVHlwZSYp
OwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZERlbGVnYXRlVG9VbnJl
YWNoYWJsZShDb250cm9sVHlwZSYsIENvbnRyb2xUeXBlJik7Ci0gICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFZlY3Rv
cjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFN0YWNrJik7CisgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFN0YWNrJiBh
cmdzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXRocm93KHVu
c2lnbmVkLCBDb250cm9sVHlwZSYpOwogCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkUmV0dXJuKGNvbnN0IENvbnRyb2xEYXRhJiwgY29uc3QgU3RhY2smIHJldHVyblZh
bHVlcyk7CkBAIC00MjEsMTEgKzQyMiwxNSBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBh
ZGRJbnRlZ2VyU3ViKEIzOjpBaXI6Ok9wY29kZSwgRXhwcmVzc2lvblR5cGUgbGhzLCBFeHByZXNz
aW9uVHlwZSByaHMsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogICAgIFBhcnRpYWxSZXN1bHQg
YWRkRmxvYXRpbmdQb2ludEFicyhCMzo6QWlyOjpPcGNvZGUsIEV4cHJlc3Npb25UeXBlIHZhbHVl
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKICAgICBQYXJ0aWFsUmVzdWx0IGFkZEZsb2F0aW5n
UG9pbnRCaW5PcChUeXBlLCBCMzo6QWlyOjpPcGNvZGUsIEV4cHJlc3Npb25UeXBlIGxocywgRXhw
cmVzc2lvblR5cGUgcmhzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICAKKyAgICAvLyBT
aW1kCisgICAgdGVtcGxhdGU8RXh0U2ltZE9wVHlwZSwgc2l6ZV90IG51bUltbWVkaWF0ZXMsIHNp
emVfdCBudW1Bcmd1bWVudHM+CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
YWRkU2ltZE9wKHN0ZDo6YXJyYXk8dWludDhfdCwgbnVtSW1tZWRpYXRlcz4gaW1tZWRpYXRlcywg
c3RkOjphcnJheTxFeHByZXNzaW9uVHlwZSwgbnVtQXJndW1lbnRzPiBhcmd1bWVudHMsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgdm9pZCBkdW1wKGNvbnN0IENvbnRyb2xTdGFjayYs
IGNvbnN0IFN0YWNrKiBleHByZXNzaW9uU3RhY2spOwogICAgIHZvaWQgc2V0UGFyc2VyKEZ1bmN0
aW9uUGFyc2VyPEFpcklSR2VuZXJhdG9yPiogcGFyc2VyKSB7IG1fcGFyc2VyID0gcGFyc2VyOyB9
OwogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZ0xvY2FscygpIHsgfQotICAgIHZvaWQgZGlkUG9w
VmFsdWVGcm9tU3RhY2soKSB7IH0KKyAgICB2b2lkIGRpZFBvcFZhbHVlRnJvbVN0YWNrKFdhc206
OlR5cGUpIHsgfQogCiAgICAgVG1wIGVtaXRDYXRjaEltcGwoQ2F0Y2hLaW5kLCBDb250cm9sVHlw
ZSYsIHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4ID0gMCk7CiAgICAgdGVtcGxhdGUgPHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KQEAgLTUxMiw2ICs1MTcsNyBAQCBwcml2YXRlOgogICAgIFR5cGVkVG1w
IGdSZWYoVHlwZSB0eXBlKSB7IHJldHVybiB7IG5ld1RtcChCMzo6R1ApLCB0eXBlIH07IH0KICAg
ICBUeXBlZFRtcCBmMzIoKSB7IHJldHVybiB7IG5ld1RtcChCMzo6RlApLCBUeXBlczo6RjMyIH07
IH0KICAgICBUeXBlZFRtcCBmNjQoKSB7IHJldHVybiB7IG5ld1RtcChCMzo6RlApLCBUeXBlczo6
RjY0IH07IH0KKyAgICBUeXBlZFRtcCB2MTI4KCkgeyByZXR1cm4geyBuZXdUbXAoQjM6OkZQKSwg
VHlwZXM6OlYxMjggfTsgfQogCiAgICAgVHlwZWRUbXAgdG1wRm9yVHlwZShUeXBlIHR5cGUpCiAg
ICAgewpAQCAtNTMxLDYgKzUzNyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gZjMy
KCk7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkY2NDoKICAgICAgICAgICAgIHJldHVybiBmNjQo
KTsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VjEyODoKKyAgICAgICAgICAgIHJldHVybiB2MTI4
KCk7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgICAgICByZXR1cm4geyB9
OwogICAgICAgICBkZWZhdWx0OgpAQCAtNjI3LDcgKzYzNSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAvLyB2YWxpZGF0aW9uLiBXZSBzaG91bGQgYWJzdHJjYXQgUGF0Y2ggZW5vdWdoIHNvIFZh
bHVlUmVwJ3MgZG9uJ3QgbmVlZCB0byBiZQogICAgICAgICAgICAgLy8gYmFja2VkIGJ5IFZhbHVl
cy4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTQwNDAKLSAgICAgICAgICAgIEIzOjpWYWx1ZSogZHVtbXlWYWx1ZSA9IG1fcHJvYy5hZGRD
b25zdGFudChCMzo6T3JpZ2luKCksIHRtcC50bXAuaXNHUCgpID8gQjM6OkludDY0IDogQjM6OkRv
dWJsZSwgMCk7CisgICAgICAgICAgICBCMzo6VmFsdWUqIGR1bW15VmFsdWUgPSBtX3Byb2MuYWRk
Q29uc3RhbnQoQjM6Ok9yaWdpbigpLCB0bXAudG1wLmlzR1AoKSA/IEIzOjpJbnQ2NCA6IEIzOjpW
MTI4LCAwKTsKICAgICAgICAgICAgIHBhdGNoLT5hcHBlbmQoZHVtbXlWYWx1ZSwgdG1wLnJlcCk7
CiAgICAgICAgICAgICBzd2l0Y2ggKHRtcC5yZXAua2luZCgpKSB7CiAgICAgICAgICAgICAvLyBC
Mzo6VmFsdWUgcHJvcGFnYXRlcyAoTGF0ZSlDb2xkQW55IGluZm9ybWF0aW9uIGFuZCBsYXRlciBB
aXIgd2lsbCBhbGxvY2F0ZSBhcHByb3ByaWF0ZSBzdGFjay4KQEAgLTYzOCwxMiArNjQ2LDEyIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEIzOjpW
YWx1ZVJlcDo6UmVnaXN0ZXI6CiAgICAgICAgICAgICAgICAgcGF0Y2gtPmVhcmx5Q2xvYmJlcmVk
KCkuY2xlYXIodG1wLnJlcC5yZWcoKSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKGJhc2ljQmxv
Y2ssIHRtcC50bXAuaXNHUCgpID8gTW92ZSA6IE1vdmVEb3VibGUsIHRtcC50bXAsIHRtcC5yZXAu
cmVnKCkpOworICAgICAgICAgICAgICAgIGFwcGVuZChiYXNpY0Jsb2NrLCB0bXAudG1wLmlzR1Ao
KSA/IE1vdmUgOiBNb3ZlVmVjdG9yLCB0bXAudG1wLCB0bXAucmVwLnJlZygpKTsKICAgICAgICAg
ICAgICAgICBpbnN0LmFyZ3MuYXBwZW5kKFRtcCh0bXAucmVwLnJlZygpKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEIzOjpWYWx1ZVJlcDo6U3RhY2tBcmd1bWVu
dDogewogICAgICAgICAgICAgICAgIEFyZyBhcmcgPSBBcmc6OmNhbGxBcmcodG1wLnJlcC5vZmZz
ZXRGcm9tU1AoKSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKGJhc2ljQmxvY2ssIHRtcC50bXAu
aXNHUCgpID8gTW92ZSA6IE1vdmVEb3VibGUsIHRtcC50bXAsIGFyZyk7CisgICAgICAgICAgICAg
ICAgYXBwZW5kKGJhc2ljQmxvY2ssIHRtcC50bXAuaXNHUCgpID8gTW92ZSA6IE1vdmVWZWN0b3Is
IHRtcC50bXAsIGFyZyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGFyZy5jYW5SZXByZXNlbnQo
cGF0Y2gtPmNoaWxkKGkpLT50eXBlKCkpKTsKICAgICAgICAgICAgICAgICBpbnN0LmFyZ3MuYXBw
ZW5kKGFyZyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC03NjYsNiArNzc0LDggQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHJldHVybiBNb3ZlRmxvYXQ7CiAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OkY2NDoKICAgICAgICAgICAgIHJldHVybiBNb3ZlRG91YmxlOworICAgICAgICBjYXNlIFR5
cGVLaW5kOjpWMTI4OgorICAgICAgICAgICAgcmV0dXJuIE1vdmVWZWN0b3I7CiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICB9CkBAIC0xMDY2LDYgKzEwNzYsOSBAQCBBaXJJUkdlbmVyYXRvcjo6QWlySVJHZW5lcmF0b3Io
Y29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIEIzOjpQcm9jZWR1cmUmIHBybwogICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpGNjQ6CiAgICAgICAgICAgICBhcHBlbmQoTW92ZURvdWJsZSwgYXJn
LCBtX2xvY2Fsc1tpXSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6VjEyODoKKyAgICAgICAgICAgIGFwcGVuZChNb3ZlVmVjdG9yLCBhcmcsIG1fbG9jYWxzW2ld
KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjI1LDcg
QEAgdm9pZCBBaXJJUkdlbmVyYXRvcjo6Zm9yRWFjaExpdmVWYWx1ZShGdW5jdGlvbiBmdW5jdGlv
bikKICAgICB9CiB9CiAKLWF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZExvY2FsKFR5cGUgdHlwZSwg
dWludDMyX3QgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZExvY2FsKFR5cGUgdHlwZSwgdWludDMyX3QsIHVpbnQzMl90IGNvdW50KSAtPiBQYXJ0aWFsUmVz
dWx0CiB7CiAgICAgc2l6ZV90IG5ld1NpemUgPSBtX2xvY2Fscy5zaXplKCkgKyBjb3VudDsKICAg
ICBBU1NFUlQoIShDaGVja2VkVWludDMyKGNvdW50KSArIG1fbG9jYWxzLnNpemUoKSkuaGFzT3Zl
cmZsb3dlZCgpKTsKQEAgLTEyNDIsNiArMTI1NSwxNCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjph
ZGRMb2NhbChUeXBlIHR5cGUsIHVpbnQzMl90IGNvdW50KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAg
ICAgICAgICBhcHBlbmQodHlwZS5pc0YzMigpID8gTW92ZTMyVG9GbG9hdCA6IE1vdmU2NFRvRG91
YmxlLCB0ZW1wLCBsb2NhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpWMTI4OiB7CisgICAgICAgICAgICBhdXRvIGxhbmVJbmZvID0gQXJn
OjpzaW1kSW5mbyhTaW1kTGFuZUludGVycHJldGF0aW9uOjppNjR4MiwgU2ltZFNpZ25FeHRlbmRN
b2RlOjpOQSk7CisgICAgICAgICAgICBhdXRvIHRlbXAgPSBnNjQoKTsKKyAgICAgICAgICAgIGFw
cGVuZChYb3I2NCwgdGVtcCwgdGVtcCk7CisgICAgICAgICAgICBhcHBlbmQoUmVwbGFjZUxhbmUs
IGxhbmVJbmZvLCBBcmc6OmltbSgwKSwgdGVtcCwgbG9jYWwpOworICAgICAgICAgICAgYXBwZW5k
KFJlcGxhY2VMYW5lLCBsYW5lSW5mbywgQXJnOjppbW0oMSksIHRlbXAsIGxvY2FsKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CkBAIC0xMjU0LDYgKzEyNzUs
MTggQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ29uc3RhbnQoVHlwZSB0eXBlLCB1aW50NjRf
dCB2YWx1ZSkgLT4gRXhwcmVzc2lvblR5cGUKICAgICByZXR1cm4gYWRkQ29uc3RhbnQobV9jdXJy
ZW50QmxvY2ssIHR5cGUsIHZhbHVlKTsKIH0KIAorYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ29u
c3RhbnQodjEyOF90IHZhbHVlKSAtPiBFeHByZXNzaW9uVHlwZQoreworICAgIGF1dG8gbGFuZUlu
Zm8gPSBBcmc6OnNpbWRJbmZvKFNpbWRMYW5lSW50ZXJwcmV0YXRpb246Omk2NHgyLCBTaW1kU2ln
bkV4dGVuZE1vZGU6Ok5BKTsKKyAgICBhdXRvIGEgPSBnNjQoKTsKKyAgICBhdXRvIHJlc3VsdCA9
IHRtcEZvclR5cGUoVHlwZXM6OlYxMjgpOworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0ltbSh2
YWx1ZS51NjR4MlswXSksIGEpOworICAgIGFwcGVuZChSZXBsYWNlTGFuZSwgbGFuZUluZm8sIEFy
Zzo6aW1tKDApLCBhLCByZXN1bHQpOworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0ltbSh2YWx1
ZS51NjR4MlsxXSksIGEpOworICAgIGFwcGVuZChSZXBsYWNlTGFuZSwgbGFuZUluZm8sIEFyZzo6
aW1tKDEpLCBhLCByZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIGF1dG8gQWlySVJH
ZW5lcmF0b3I6OmFkZENvbnN0YW50KEJhc2ljQmxvY2sqIGJsb2NrLCBUeXBlIHR5cGUsIHVpbnQ2
NF90IHZhbHVlKSAtPiBFeHByZXNzaW9uVHlwZQogewogICAgIGF1dG8gcmVzdWx0ID0gdG1wRm9y
VHlwZSh0eXBlKTsKQEAgLTE0NTksNyArMTQ5Miw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZFRhYmxlQ29weSh1bnNpZ25lZCBkc3RUYWJsZUluZGV4LCB1bnNpZ25lZCBzcmNUYWJsZUluZGV4
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBBaXJJUkdlbmVyYXRvcjo6Z2V0TG9jYWwodWlu
dDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1
dG8gQWlySVJHZW5lcmF0b3I6OmdldExvY2FsKHVpbnQzMl90IGluZGV4LCBXYXNtOjpUeXBlLCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgQVNTRVJUKG1f
bG9jYWxzW2luZGV4XS50bXAoKSk7CiAgICAgcmVzdWx0ID0gdG1wRm9yVHlwZShtX2xvY2Fsc1tp
bmRleF0udHlwZSgpKTsKQEAgLTE1OTEsNyArMTYyNCw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6
OmFkZERhdGFEcm9wKHVuc2lnbmVkIGRhdGFTZWdtZW50SW5kZXgpIC0+IFBhcnRpYWxSZXN1bHQK
ICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIEFpcklSR2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50
MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8g
QWlySVJHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBXYXNtOjpUeXBlLCBFeHBy
ZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIEFTU0VSVChtX2xvY2Fs
c1tpbmRleF0udG1wKCkpOwogICAgIGFwcGVuZChtb3ZlT3BGb3JWYWx1ZVR5cGUobV9sb2NhbHNb
aW5kZXhdLnR5cGUoKSksIHZhbHVlLCBtX2xvY2Fsc1tpbmRleF0udG1wKCkpOwpAQCAtMjE0NCw2
ICsyMTc3LDkgQEAgdm9pZCBBaXJJUkdlbmVyYXRvcjo6c2FuaXRpemVBdG9taWNSZXN1bHQoRXh0
QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHVlVHlwZSwgVG0KICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgc291cmNlLCBkZXN0KTsKICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgY2FzZSBCMzo6V2lkdGgxMjg6CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTYxLDYgKzIxOTcsOSBAQCB2b2lkIEFpcklSR2Vu
ZXJhdG9yOjpzYW5pdGl6ZUF0b21pY1Jlc3VsdChFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUgdmFs
dWVUeXBlLCBUbQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGFwcGVuZChN
b3ZlLCBzb3VyY2UsIGRlc3QpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEIz
OjpXaWR0aDEyODoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1
bHQ6CkBAIC0yMjM5LDYgKzIyNzgsOSBAQCBUeXBlZFRtcCBBaXJJUkdlbmVyYXRvcjo6YXBwZW5k
R2VuZXJhbEF0b21pYyhFeHRBdG9taWNPcFR5cGUgb3AsIEIzOjpBaXI6Ok9wY29kZQogICAgICAg
ICBjYXNlIEIzOjpXaWR0aDY0OgogICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IE1vdmU7CiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCMzo6V2lkdGgxMjg6CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwpA
QCAtMzMyMyw3ICszMzY1LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkRGVsZWdhdGVUb1Vu
cmVhY2hhYmxlKENvbnRyb2xUeXBlJiB0YXJnZXQsIENvbnRyb2xUeXBlJgogICAgIHJldHVybiB7
IH07CiB9CiAKLWF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlv
bkluZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBTdGFjayYpIC0+IFBhcnRpYWxS
ZXN1bHQKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlvbklu
ZGV4LCBTdGFjayYgYXJncykgLT4gUGFydGlhbFJlc3VsdAogewogICAgIEIzOjpQYXRjaHBvaW50
VmFsdWUqIHBhdGNoID0gYWRkUGF0Y2hwb2ludChCMzo6Vm9pZCk7CiAgICAgcGF0Y2gtPmVmZmVj
dHMudGVybWluYWwgPSB0cnVlOwpAQCAtMzMzMyw3ICszMzc1LDcgQEAgYXV0byBBaXJJUkdlbmVy
YXRvcjo6YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFZlY3RvcjxFeHByZXNzaW9u
VHlwZT4mIGEKICAgICBwYXRjaEFyZ3MuYXBwZW5kKENvbnN0cmFpbmVkVG1wKGluc3RhbmNlVmFs
dWUoKSwgQjM6OlZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwogICAgIHBh
dGNoQXJncy5hcHBlbmQoQ29uc3RyYWluZWRUbXAoVG1wKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyKSwgQjM6OlZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQotICAgICAgICBwYXRjaEFy
Z3MuYXBwZW5kKENvbnN0cmFpbmVkVG1wKGFyZ3NbaV0sIEIzOjpWYWx1ZVJlcDo6c3RhY2tBcmd1
bWVudChpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpKTsKKyAgICAgICAgcGF0Y2hBcmdzLmFw
cGVuZChDb25zdHJhaW5lZFRtcChhcmdzW2ldLnZhbHVlKCksIEIzOjpWYWx1ZVJlcDo6c3RhY2tB
cmd1bWVudChpICogYXJnc1tpXS50eXBlKCkuc2l6ZSgpKSkpOwogCiAgICAgUGF0Y2hwb2ludEV4
Y2VwdGlvbkhhbmRsZSBoYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0
Y2gsIHBhdGNoQXJncyk7CiAKQEAgLTU1MTksNiArNTU2MSwyMyBAQCBQYXRjaHBvaW50RXhjZXB0
aW9uSGFuZGxlIEFpcklSR2VuZXJhdG9yOjpwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMo
QjM6OlBhdAogICAgIHJldHVybiBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlIHsgbV9jYWxsU2l0
ZUluZGV4LCBudW1MaXZlVmFsdWVzIH07CiB9CiAKKyNkZWZpbmUgQ1JFQVRFX1NJTURfQ0FTRShu
YW1lLCBpZCwgYjNvcCwgaW5jLCB3YXNtT3AsIHJldHVyblR5cGUsIG51bUltbWVkaWF0ZXMsIGlt
bWVkaWF0ZVNpemVzLCBudW1Bcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIGxhbmVJbnRlcnByZXRh
dGlvbiwgc2lnbkV4dGVuZE1vZGUpIFwKK3RlbXBsYXRlPD4gXAorYXV0byBBaXJJUkdlbmVyYXRv
cjo6YWRkU2ltZE9wPEV4dFNpbWRPcFR5cGU6Om5hbWUsIG51bUltbWVkaWF0ZXMsIG51bUFyZ3Vt
ZW50cz4oc3RkOjphcnJheTx1aW50OF90LCBudW1JbW1lZGlhdGVzPiBpbW1lZGlhdGVzLCBzdGQ6
OmFycmF5PEV4cHJlc3Npb25UeXBlLCBudW1Bcmd1bWVudHM+IGFyZ3VtZW50cywgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdCBcCit7IFwKKyAgICByZXN1bHQgPSB0bXBG
b3JUeXBlKHJldHVyblR5cGUpOyBcCisgICAgc3RkOjphcnJheTxBcmcsIG51bUltbWVkaWF0ZXM+
IHRydXN0ZWRJbW1zOyBcCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1JbW1lZGlhdGVz
OyArK2kpIHsgXAorICAgICAgICB0cnVzdGVkSW1tc1tpXSA9IEFyZzo6aW1tKGltbWVkaWF0ZXNb
aV0pOyBcCisgICAgfSBcCisgICAgYXV0byBhcmdzVG9BcHBseSA9IHN0ZDo6dHVwbGVfY2F0KHN0
ZDo6Zm9yd2FyZF9hc190dXBsZShiM29wLCBBcmc6OnNpbWRJbmZvKGxhbmVJbnRlcnByZXRhdGlv
biwgc2lnbkV4dGVuZE1vZGUpKSwgdHJ1c3RlZEltbXMsIGFyZ3VtZW50cywgc3RkOjpmb3J3YXJk
X2FzX3R1cGxlKHJlc3VsdCkpOyBcCisgICAgc3RkOjphcHBseShbPV0oYXV0byAmJi4uLiBhcmdz
KSB7IGFwcGVuZChhcmdzLi4uKTsgfSwgYXJnc1RvQXBwbHkpOyBcCisgICAgcmV0dXJuIHsgfTsg
XAorfQorCitGT1JfRUFDSF9XQVNNX0VYVF9TSU1EX09QKENSRUFURV9TSU1EX0NBU0UpCisjdW5k
ZWYgQ1JFQVRFX1NJTURfQ0FTRQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZX0IzSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDNkYThjNzliZGUzOS4uMWYyNzRi
NzI3Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCkBAIC0zMiwxMSArMzIsMTMgQEAKICNpbmNsdWRlICJBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2VJZi5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNp
bmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnN0MTI4VmFsdWUuaCIKICNp
bmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKICNpbmNsdWRlICJCM0VzdGltYXRlU3RhdGljRXhl
Y3V0aW9uQ291bnRzLmgiCiAjaW5jbHVkZSAiQjNGaXhTU0EuaCIKICNpbmNsdWRlICJCM0dlbmVy
YXRlLmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJCM1NpbWRWYWx1
ZS5oIgogI2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAi
QjNTd2l0Y2hWYWx1ZS5oIgogI2luY2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCkBAIC02Myw2ICs2
NSw3IEBACiAjaW5jbHVkZSAiV2FzbU9TUkVudHJ5RGF0YS5oIgogI2luY2x1ZGUgIldhc21PcGNv
ZGVPcmlnaW4uaCIKICNpbmNsdWRlICJXYXNtT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIldhc21P
cHMuaCIKICNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldhc21U
aHVua3MuaCIKICNpbmNsdWRlIDxsaW1pdHM+CkBAIC0zMDYsOCArMzA5LDkgQEAgcHVibGljOgog
ICAgIEIzSVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mLCBQcm9jZWR1cmUmLCBJ
bnRlcm5hbEZ1bmN0aW9uKiwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiwgdW5zaWdu
ZWQmIG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUsIE1lbW9yeU1vZGUsIENvbXBpbGF0aW9uTW9k
ZSwgdW5zaWduZWQgZnVuY3Rpb25JbmRleCwgdW5zaWduZWQgbG9vcEluZGV4Rm9yT1NSRW50cnks
IFRpZXJVcENvdW50Kik7CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJik7Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkTG9jYWwoVHlwZSwgdWludDMyX3QpOworICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZExvY2FsKFR5cGUsIHVpbnQzMl90LCB1aW50MzJfdCk7CiAg
ICAgRXhwcmVzc2lvblR5cGUgYWRkQ29uc3RhbnQoVHlwZSwgdWludDY0X3QpOworICAgIEV4cHJl
c3Npb25UeXBlIGFkZENvbnN0YW50KHYxMjhfdCk7CiAKICAgICAvLyBSZWZlcmVuY2VzCiAgICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmSXNOdWxsKEV4cHJlc3Npb25U
eXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTMyNCw4ICszMjgsOCBAQCBw
dWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVDb3B5
KHVuc2lnbmVkLCB1bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUgZHN0T2Zmc2V0LCBFeHByZXNzaW9u
VHlwZSBzcmNPZmZzZXQsIEV4cHJlc3Npb25UeXBlIGxlbmd0aCk7CiAKICAgICAvLyBMb2NhbHMK
LSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRMb2NhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gc2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVl
KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRMb2NhbCh1aW50MzJf
dCBpbmRleCwgV2FzbTo6VHlwZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gc2V0TG9jYWwodWludDMyX3QgaW5kZXgsIFdhc206
OlR5cGUsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKIAogICAgIC8vIEdsb2JhbHMKICAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpOwpAQCAtMzc3LDcgKzM4MSw3IEBAIHB1YmxpYzoKICAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYXRjaEFsbFRvVW5yZWFjaGFibGUo
Q29udHJvbFR5cGUmKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRE
ZWxlZ2F0ZShDb250cm9sVHlwZSYsIENvbnRyb2xUeXBlJik7CiAgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYWRkRGVsZWdhdGVUb1VucmVhY2hhYmxlKENvbnRyb2xUeXBlJiwg
Q29udHJvbFR5cGUmKTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRU
aHJvdyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJn
cywgU3RhY2smKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUaHJv
dyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgU3RhY2smIGFyZ3MpOwogICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJldGhyb3codW5zaWduZWQsIENvbnRyb2xUeXBlJik7
CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1cm4oY29uc3Qg
Q29udHJvbERhdGEmLCBjb25zdCBTdGFjayYgcmV0dXJuVmFsdWVzKTsKQEAgLTM5NSwxMSArMzk5
LDE1IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRV
bnJlYWNoYWJsZSgpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGVtaXRJ
bmRpcmVjdENhbGwoVmFsdWUqIGNhbGxlZUluc3RhbmNlLCBWYWx1ZSogY2FsbGVlQ29kZSwgY29u
c3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYp
OwogICAgIEIzOjpWYWx1ZSogY3JlYXRlQ2FsbFBhdGNocG9pbnQoQmFzaWNCbG9jayosIE9yaWdp
biwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgY29uc3Qg
U2NvcGVkTGFtYmRhPHZvaWQoUGF0Y2hwb2ludFZhbHVlKiwgQm94PFBhdGNocG9pbnRFeGNlcHRp
b25IYW5kbGU+KT4mIHBhdGNocG9pbnRGdW5jdG9yKTsKKyAgICAKKyAgICAvLyBTaW1kCisgICAg
dGVtcGxhdGU8RXh0U2ltZE9wVHlwZSwgc2l6ZV90IG51bUltbWVkaWF0ZXMsIHNpemVfdCBudW1B
cmd1bWVudHM+CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU2ltZE9w
KHN0ZDo6YXJyYXk8dWludDhfdCwgbnVtSW1tZWRpYXRlcz4gaW1tZWRpYXRlcywgc3RkOjphcnJh
eTxFeHByZXNzaW9uVHlwZSwgbnVtQXJndW1lbnRzPiBhcmd1bWVudHMsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpOwogCiAgICAgdm9pZCBkdW1wKGNvbnN0IENvbnRyb2xTdGFjayYsIGNvbnN0IFN0
YWNrKiBleHByZXNzaW9uU3RhY2spOwogICAgIHZvaWQgc2V0UGFyc2VyKEZ1bmN0aW9uUGFyc2Vy
PEIzSVJHZW5lcmF0b3I+KiBwYXJzZXIpIHsgbV9wYXJzZXIgPSBwYXJzZXI7IH07CiAgICAgdm9p
ZCBkaWRGaW5pc2hQYXJzaW5nTG9jYWxzKCkgeyB9Ci0gICAgdm9pZCBkaWRQb3BWYWx1ZUZyb21T
dGFjaygpIHsgLS1tX3N0YWNrU2l6ZTsgfQorICAgIHZvaWQgZGlkUG9wVmFsdWVGcm9tU3RhY2so
V2FzbTo6VHlwZSkgeyAtLW1fc3RhY2tTaXplOyB9CiAKICAgICBWYWx1ZSogY29uc3RhbnQoQjM6
OlR5cGUsIHVpbnQ2NF90IGJpdHMsIHN0ZDo6b3B0aW9uYWw8T3JpZ2luPiA9IHN0ZDo6bnVsbG9w
dCk7CiAgICAgVmFsdWUqIGZyYW1lUG9pbnRlcigpOwpAQCAtODg0LDcgKzg5Miw3IEBAIEIzOjpU
eXBlIEIzSVJHZW5lcmF0b3I6OnRvQjNSZXN1bHRUeXBlKEJsb2NrU2lnbmF0dXJlIHJldHVyblR5
cGUpCiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLWF1dG8gQjNJUkdl
bmVyYXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1aW50MzJfdCBjb3VudCkgLT4gUGFydGlhbFJl
c3VsdAorYXV0byBCM0lSR2VuZXJhdG9yOjphZGRMb2NhbChUeXBlIHR5cGUsIHVpbnQzMl90LCB1
aW50MzJfdCBjb3VudCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIHNpemVfdCBuZXdTaXplID0g
bV9sb2NhbHMuc2l6ZSgpICsgY291bnQ7CiAgICAgQVNTRVJUKCEoQ2hlY2tlZFVpbnQzMihjb3Vu
dCkgKyBtX2xvY2Fscy5zaXplKCkpLmhhc092ZXJmbG93ZWQoKSk7CkBAIC0xMDc5LDcgKzEwODcs
NyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlQ29weSh1bnNpZ25lZCBkc3RUYWJsZUlu
ZGV4LCB1bnNpZ25lZCBzcmNUYWJsZUluZGV4LAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8g
QjNJUkdlbmVyYXRvcjo6Z2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQjNJUkdlbmVyYXRvcjo6Z2V0TG9jYWwodWlu
dDMyX3QgaW5kZXgsIFdhc206OlR5cGUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRp
YWxSZXN1bHQKIHsKICAgICBBU1NFUlQobV9sb2NhbHNbaW5kZXhdKTsKICAgICByZXN1bHQgPSBw
dXNoKG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4obV9wcm9jLCBCMzo6
R2V0LCBvcmlnaW4oKSwgbV9sb2NhbHNbaW5kZXhdKSk7CkBAIC0xMjg3LDcgKzEyOTUsNyBAQCBh
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZERhdGFEcm9wKHVuc2lnbmVkIGRhdGFTZWdtZW50SW5kZXgp
IC0+IFBhcnRpYWxSZXN1bHQKICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIEIzSVJHZW5lcmF0
b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFy
dGlhbFJlc3VsdAorYXV0byBCM0lSR2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwg
V2FzbTo6VHlwZSwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAg
ICBBU1NFUlQobV9sb2NhbHNbaW5kZXhdKTsKICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgQjM6OlNldCwgb3JpZ2luKCksIG1fbG9jYWxzW2luZGV4
XSwgZ2V0KHZhbHVlKSk7CkBAIC0xNzUxLDYgKzE3NTksOSBAQCBpbmxpbmUgVmFsdWUqIEIzSVJH
ZW5lcmF0b3I6OmVtaXRBdG9taWNMb2FkT3AoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHVl
VHlwZQogICAgIGNhc2UgQjM6OldpZHRoNjQ6CiAgICAgICAgIHZhbHVlID0gY29uc3RhbnQoSW50
NjQsIDApOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEIzOjpXaWR0aDEyODoKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHNhbml0aXplQXRvbWljUmVzdWx0KG9wLCB2YWx1ZVR5cGUsIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KG1fcHJvYywgbWVtb3J5S2luZChBdG9taWNYY2hn
QWRkKSwgb3JpZ2luKCksIGFjY2Vzc1dpZHRoKG9wKSwgdmFsdWUsIHBvaW50ZXIpKTsKQEAgLTE5
MzQsNiArMTk0NSw3IEBAIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0QXRvbWljQ29tcGFyZUV4
Y2hhbmdlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1ZVR5CiAgICAgICAgICAgICBtYXhp
bXVtID0gY29uc3RhbnQoSW50NjQsIFVJTlQzMl9NQVgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQjM6OldpZHRoNjQ6CisgICAgICAgIGNhc2UgQjM6OldpZHRoMTI4OgogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKQEAgLTE5NDgsNiArMTk2MCw3IEBAIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0
QXRvbWljQ29tcGFyZUV4Y2hhbmdlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1ZVR5CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCMzo6V2lkdGgzMjoKICAgICAgICAgY2Fz
ZSBCMzo6V2lkdGg2NDoKKyAgICAgICAgY2FzZSBCMzo6V2lkdGgxMjg6CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpA
QCAtMTk5Myw2ICsyMDA2LDkgQEAgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmVtaXRBdG9taWNDb21w
YXJlRXhjaGFuZ2UoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHVlVHkKICAgICAgICAgY2Fz
ZSBCMzo6V2lkdGg2NDoKICAgICAgICAgICAgIGFkZGluZ1ZhbHVlID0gY29uc3RhbnQoSW50NjQs
IDApOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQjM6OldpZHRoMTI4OgorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxBdG9taWNWYWx1ZT4obV9wcm9jLCBtZW1vcnlLaW5kKEF0b21pY1hjaGdBZGQpLCBvcmln
aW4oKSwgYWNjZXNzV2lkdGgsIGFkZGluZ1ZhbHVlLCBwb2ludGVyKTsKICAgICAgICAgZmFpbHVy
ZVZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxCMzo6VXBzaWxvblZhbHVlPihtX3By
b2MsIG9yaWdpbigpLCByZXN1bHQpOwpAQCAtMjI1OSwxMCArMjI3NSwxNCBAQCBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZFNlbGVjdChFeHByZXNzaW9uVHlwZSBjb25kaXRpb24sIEV4cHJlc3Npb25U
eXBlIG5vblplcm8sCiAKIEIzSVJHZW5lcmF0b3I6OkV4cHJlc3Npb25UeXBlIEIzSVJHZW5lcmF0
b3I6OmFkZENvbnN0YW50KFR5cGUgdHlwZSwgdWludDY0X3QgdmFsdWUpCiB7Ci0KICAgICByZXR1
cm4gcHVzaChjb25zdGFudCh0b0IzVHlwZSh0eXBlKSwgdmFsdWUpKTsKIH0KIAorQjNJUkdlbmVy
YXRvcjo6RXhwcmVzc2lvblR5cGUgQjNJUkdlbmVyYXRvcjo6YWRkQ29uc3RhbnQodjEyOF90IHZh
bHVlKQoreworICAgIHJldHVybiBwdXNoKG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3Qx
MjhWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdmFsdWUpKTsKK30KKwogdm9pZCBCM0lSR2VuZXJh
dG9yOjplbWl0RW50cnlUaWVyVXBDaGVjaygpCiB7CiAgICAgaWYgKCFtX3RpZXJVcCkKQEAgLTI2
NDcsMTQgKzI2NjcsMTQgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGREZWxlZ2F0ZVRvVW5yZWFj
aGFibGUoQ29udHJvbFR5cGUmIHRhcmdldCwgQ29udHJvbFR5cGUmIGQKICAgICByZXR1cm4geyB9
OwogfQogCi1hdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlvbklu
ZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBTdGFjayYpIC0+IFBhcnRpYWxSZXN1
bHQKK2F1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgs
IFN0YWNrJiBhcmdzKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgUGF0Y2hwb2ludFZhbHVlKiBw
YXRjaCA9IG1fcHJvYy5hZGQ8UGF0Y2hwb2ludFZhbHVlPihCMzo6Vm9pZCwgb3JpZ2luKCkpOwog
ICAgIHBhdGNoLT5lZmZlY3RzLnRlcm1pbmFsID0gdHJ1ZTsKICAgICBwYXRjaC0+YXBwZW5kKGlu
c3RhbmNlVmFsdWUoKSwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKICAg
ICBwYXRjaC0+YXBwZW5kKGZyYW1lUG9pbnRlcigpLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsg
KytpKQotICAgICAgICBwYXRjaC0+YXBwZW5kKGdldChhcmdzW2ldKSwgVmFsdWVSZXA6OnN0YWNr
QXJndW1lbnQoaSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKKyAgICAgICAgcGF0Y2gtPmFw
cGVuZChnZXQoYXJnc1tpXS52YWx1ZSgpKSwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQoaSAqIHNp
emVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKICAgICBwYXRjaC0+Y2xvYmJlcihSZWdpc3RlclNldDo6
dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7CiAgICAgUGF0Y2hwb2ludEV4Y2VwdGlvbkhh
bmRsZSBoYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMobV9jdXJyZW50Qmxv
Y2ssIHBhdGNoKTsKICAgICBwYXRjaC0+c2V0R2VuZXJhdG9yKFt0aGlzLCBleGNlcHRpb25JbmRl
eCwgaGFuZGxlXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgewpAQCAtMzczNyw2ICszNzU3LDIyIEBAIGF1dG8gQjNJUkdlbmVy
YXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRUcnVuY1VGMzI+KEV4cHJlc3Npb25UeXBlIGFyZ1Zhciwg
RXhwcmVzc2lvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAorI2RlZmluZSBDUkVBVEVfU0lNRF9DQVNF
KG5hbWUsIGlkLCBiM29wLCBpbmMsIHdhc21PcCwgcmV0dXJuVHlwZSwgbnVtSW1tZWRpYXRlcywg
aW1tZWRpYXRlU2l6ZXMsIG51bUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgbGFuZUludGVycHJl
dGF0aW9uLCBzaWduRXh0ZW5kTW9kZSkgXAordGVtcGxhdGU8PiBcCithdXRvIEIzSVJHZW5lcmF0
b3I6OmFkZFNpbWRPcDxFeHRTaW1kT3BUeXBlOjpuYW1lLCBudW1JbW1lZGlhdGVzLCBudW1Bcmd1
bWVudHM+KHN0ZDo6YXJyYXk8dWludDhfdCwgbnVtSW1tZWRpYXRlcz4gaW1tZWRpYXRlcywgc3Rk
OjphcnJheTxFeHByZXNzaW9uVHlwZSwgbnVtQXJndW1lbnRzPiBhcmd1bWVudHMsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQgXAoreyBcCisgICAgc3RkOjphcnJheTxW
YWx1ZSosIG51bUFyZ3VtZW50cz4gYXJndW1lbnRWYWx1ZXM7IFwKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG51bUFyZ3VtZW50czsgKytpKSB7IFwKKyAgICAgICAgYXJndW1lbnRWYWx1ZXNb
aV0gPSBnZXQoYXJndW1lbnRzW2ldKTsgXAorICAgIH1cCisgICAgYXV0byBhcmdzVG9BcHBseSA9
IHN0ZDo6dHVwbGVfY2F0KHN0ZDo6Zm9yd2FyZF9hc190dXBsZShtX3Byb2MsIG9yaWdpbigpLCBi
M29wLCB0b0IzVHlwZShyZXR1cm5UeXBlKSwgbnVtQXJndW1lbnRzLCBsYW5lSW50ZXJwcmV0YXRp
b24sIHNpZ25FeHRlbmRNb2RlKSwgaW1tZWRpYXRlcywgYXJndW1lbnRWYWx1ZXMpOyBcCisgICAg
cmVzdWx0ID0gcHVzaChzdGQ6OmFwcGx5KFs9XShhdXRvICYmLi4uIGFyZ3MpIHsgcmV0dXJuIG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8U2ltZFZhbHVlPihhcmdzLi4uKTsgfSwgYXJnc1RvQXBw
bHkpKTsgXAorICAgIHJldHVybiB7IH07IFwKK30KKworRk9SX0VBQ0hfV0FTTV9FWFRfU0lNRF9P
UChDUkVBVEVfU0lNRF9DQVNFKQorI3VuZGVmIENSRUFURV9TSU1EX0NBU0UKKwogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6Oldhc20KIAogI2luY2x1ZGUgIldhc21CM0lSR2VuZXJhdG9ySW5saW5lcy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252
ZW50aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVu
dGlvbi5jcHAKaW5kZXggMjAzYzg0M2FlOGU2Li5iYzFlMTU3OGU2ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcApAQCAt
MzgsNyArMzgsNyBAQCBjb25zdCBKU0NhbGxpbmdDb252ZW50aW9uJiBqc0NhbGxpbmdDb252ZW50
aW9uKCkKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgc3RhdGljSlNDQ2FsbGluZ0NvbnZlbnRp
b25GbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKHN0YXRpY0pTQ0NhbGxpbmdDb252ZW50aW9uRmxh
ZywgW10gKCkgewogICAgICAgICBSZWdpc3RlclNldCBjYWxsZXJTYXZlUmVnaXN0ZXJzID0gUmVn
aXN0ZXJTZXQ6OmFsbFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsZXJTYXZlUmVnaXN0ZXJzLmV4
Y2x1ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisvLyAgICAgICAgY2Fs
bGVyU2F2ZVJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJz
KCkpOyAvLyBUT0RPCiAKICAgICAgICAgc3RhdGljSlNDYWxsaW5nQ29udmVudGlvbi5jb25zdHJ1
Y3QoVmVjdG9yPFJlZz4oKSwgVmVjdG9yPFJlZz4oKSwgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVS
ZWdpc3RlcnMoKSwgV1RGTW92ZShjYWxsZXJTYXZlUmVnaXN0ZXJzKSk7CiAgICAgfSk7CkBAIC03
Myw3ICs3Myw3IEBAIGNvbnN0IFdhc21DYWxsaW5nQ29udmVudGlvbiYgd2FzbUNhbGxpbmdDb252
ZW50aW9uKCkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2NyYXRjaEdQUnMuc2l6ZSgpID49IDIp
OwogCiAgICAgICAgIFJlZ2lzdGVyU2V0IGNhbGxlclNhdmVSZWdpc3RlcnMgPSBSZWdpc3RlclNl
dDo6YWxsUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxlclNhdmVSZWdpc3RlcnMuZXhjbHVkZShS
ZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKy8vICAgICAgICBjYWxsZXJTYXZl
UmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7IC8v
VE9ETwogCiAgICAgICAgIHN0YXRpY1dhc21DYWxsaW5nQ29udmVudGlvbi5jb25zdHJ1Y3QoV1RG
TW92ZShncHJBcmd1bWVudFJlZ2lzdGVycyksIFdURk1vdmUoZnByQXJndW1lbnRSZWdpc3RlcnMp
LCBXVEZNb3ZlKHNjcmF0Y2hHUFJzKSwgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMo
KSwgV1RGTW92ZShjYWxsZXJTYXZlUmVnaXN0ZXJzKSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5oCmluZGV4IDU5MWVl
YjI3YjAxNi4uZjhmNmUwNGRkNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaApAQCAtODgsMTQgKzg4LDE0IEBAIHB1YmxpYzoK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXYXNtQ2FsbGluZ0NvbnZlbnRpb24pOwogCiBwcml2
YXRlOgotICAgIEFyZ3VtZW50TG9jYXRpb24gbWFyc2hhbGxMb2NhdGlvbkltcGwoQ2FsbFJvbGUg
cm9sZSwgY29uc3QgVmVjdG9yPFJlZz4mIHJlZ0FyZ3MsIHNpemVfdCYgY291bnQsIHNpemVfdCYg
c3RhY2tPZmZzZXQpIGNvbnN0CisgICAgQXJndW1lbnRMb2NhdGlvbiBtYXJzaGFsbExvY2F0aW9u
SW1wbChDYWxsUm9sZSByb2xlLCBjb25zdCBWZWN0b3I8UmVnPiYgcmVnQXJncywgc2l6ZV90JiBj
b3VudCwgc2l6ZV90JiBzdGFja09mZnNldCwgc2l6ZV90IGFyZ1NpemUpIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAoY291bnQgPCByZWdBcmdzLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiBB
cmd1bWVudExvY2F0aW9uOjpyZWcocmVnQXJnc1tjb3VudCsrXSk7CiAKICAgICAgICAgY291bnQr
KzsKICAgICAgICAgQXJndW1lbnRMb2NhdGlvbiByZXN1bHQgPSByb2xlID09IENhbGxSb2xlOjpD
YWxsZXIgPyBBcmd1bWVudExvY2F0aW9uOjpzdGFja0FyZ3VtZW50KHN0YWNrT2Zmc2V0KSA6IEFy
Z3VtZW50TG9jYXRpb246OnN0YWNrKHN0YWNrT2Zmc2V0KTsKLSAgICAgICAgc3RhY2tPZmZzZXQg
Kz0gc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAgICAgc3RhY2tPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lz
dGVyKSAqIGFyZ1NpemU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xMDks
MTAgKzEwOSwxMSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6
CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVm
TnVsbDoKLSAgICAgICAgICAgIHJldHVybiBtYXJzaGFsbExvY2F0aW9uSW1wbChyb2xlLCBncHJB
cmdzLCBncEFyZ3VtZW50Q291bnQsIHN0YWNrT2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiBt
YXJzaGFsbExvY2F0aW9uSW1wbChyb2xlLCBncHJBcmdzLCBncEFyZ3VtZW50Q291bnQsIHN0YWNr
T2Zmc2V0LCB2YWx1ZVR5cGUuc2l6ZSgpIC8gOCk7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYz
MjoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgotICAgICAgICAgICAgcmV0dXJuIG1hcnNo
YWxsTG9jYXRpb25JbXBsKHJvbGUsIGZwckFyZ3MsIGZwQXJndW1lbnRDb3VudCwgc3RhY2tPZmZz
ZXQpOworICAgICAgICBjYXNlIFR5cGVLaW5kOjpWMTI4OgorICAgICAgICAgICAgcmV0dXJuIG1h
cnNoYWxsTG9jYXRpb25JbXBsKHJvbGUsIGZwckFyZ3MsIGZwQXJndW1lbnRDb3VudCwgc3RhY2tP
ZmZzZXQsIHZhbHVlVHlwZS5zaXplKCkgLyA4KTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0
LmgKaW5kZXggYzc5ZTMzN2M3YTdhLi5mZTUzODM1YzE5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTY4LDYgKzY4LDcgQEAgaW5saW5lIGJvb2wgaXNWYWx1
ZVR5cGUoVHlwZSB0eXBlKQogICAgIGNhc2UgVHlwZUtpbmQ6Okk2NDoKICAgICBjYXNlIFR5cGVL
aW5kOjpGMzI6CiAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgorICAgIGNhc2UgVHlwZUtpbmQ6OlYx
Mjg6CiAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgIGNhc2UgVHlwZUtpbmQ6OkZ1
bmNyZWY6CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODIsNyArODMsNyBAQCBpbmxpbmUgYm9v
bCBpc1ZhbHVlVHlwZShUeXBlIHR5cGUpCiAKIGlubGluZSBKU1N0cmluZyogdHlwZVRvU3RyaW5n
KFZNJiB2bSwgVHlwZUtpbmQgdHlwZSkKIHsKLSNkZWZpbmUgVFlQRV9DQVNFKG1hY3JvTmFtZSwg
dmFsdWUsIGIzLCBpbmMsIHdhc21OYW1lKSBcCisjZGVmaW5lIFRZUEVfQ0FTRShtYWNyb05hbWUs
IHZhbHVlLCBiMywgaW5jLCB3YXNtTmFtZSwgLi4uKSBcCiAgICAgY2FzZSBUeXBlS2luZDo6bWFj
cm9OYW1lOiBcCiAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICN3YXNtTmFt
ZSk7IFwKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0
aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaAppbmRleCA3ZTRhNDBiZjQ1MDguLmEwODk5OTk5
OGU0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9u
Q29kZUJsb2NrR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmgKQEAgLTgxLDYgKzgxLDcgQEAgcHVibGljOgog
ICAgIHVpbnQzMl90IG51bUFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQXJndW1lbnRz
OyB9CiAgICAgY29uc3QgVmVjdG9yPFR5cGU+JiBjb25zdGFudFR5cGVzKCkgY29uc3QgeyByZXR1
cm4gbV9jb25zdGFudFR5cGVzOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgY29uc3Rh
bnRzKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHM7IH0KKyAgICBjb25zdCBWZWN0b3I8dWlu
dDY0X3Q+JiBjb25zdGFudFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzOyB9
CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0
dXJuICptX2luc3RydWN0aW9uczsgfQogCiAgICAgdm9pZCBzZXROdW1WYXJzKHVuc2lnbmVkIG51
bVZhcnMpIHsgbV9udW1WYXJzID0gbnVtVmFyczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCBkOTdlN2U3NTlhNGYuLjE4Mzg1YTQy
NjYxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9u
UGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFy
c2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXYXNtUGFyc2VyLmgiCiAjaW5jbHVk
ZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20g
ewogCkBAIC04NSw2ICs4NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG9wZXJhdG9yIEV4cHJlc3Np
b25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiAgICAgICAgIEV4cHJlc3Npb25U
eXBlIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgICAgIAorICAg
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgb3V0LnByaW50KG1fdmFsdWUsICI6ICIsIG1fdHlwZSk7CisgICAgICAgIH0KIAogICAg
IHByaXZhdGU6CiAgICAgICAgIFR5cGUgbV90eXBlOwpAQCAtMTI1LDcgKzEzMSw3IEBAIHByaXZh
dGU6CiAjZGVmaW5lIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8ocmVzdWx0LCB3
aGF0KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRihtX2V4cHJlc3Npb25TdGFjay5pc0VtcHR5KCksICJjYW4ndCBwb3AgZW1w
dHkgc3RhY2sgaW4gIiB3aGF0KTsgXAogICAgICAgICByZXN1bHQgPSBtX2V4cHJlc3Npb25TdGFj
ay50YWtlTGFzdCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjaygpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9jb250
ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKHJlc3VsdC50eXBlKCkpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKICAgICB0ZW1wbGF0ZTxP
cFR5cGU+CkBAIC0xNDcsNiArMTUzLDExIEBAIHByaXZhdGU6CiAgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYXRvbWljTm90aWZ5KEV4dEF0b21pY09wVHlwZSk7CiAgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYXRvbWljRmVuY2UoRXh0QXRvbWljT3BUeXBl
KTsKIAorICAgIHRlbXBsYXRlPEV4dFNpbWRPcFR5cGUsIHNpemVfdCBudW1JbW1lZGlhdGVzLCBz
aXplX3QgbnVtQXJndW1lbnRzPgorICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IHNpbWRDYXNlKGJvb2wgcmVhY2hhYmxlLCBUeXBlIHJldHVyblR5cGUsIGNvbnN0IHN0ZDo6YXJy
YXk8aW50LCBudW1JbW1lZGlhdGVzPiYgaW1tZWRpYXRlU2l6ZXMsIGNvbnN0IHN0ZDo6YXJyYXk8
Y29uc3QgVHlwZSosIG51bUFyZ3VtZW50cz4mIGFyZ3VtZW50VHlwZXMpOworICAgIHRlbXBsYXRl
PFNpbWRMYW5lT3BlcmF0aW9uLCBTaW1kTGFuZUludGVycHJldGF0aW9uLCBTaW1kU2lnbkV4dGVu
ZE1vZGU+CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gc2ltZFNwZWNpYWxD
YXNlKGJvb2wgcmVhY2hhYmxlID0gdHJ1ZSk7CisKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBwYXJzZVRhYmxlSW5kZXgodW5zaWduZWQmKTsKICAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUVsZW1lbnRJbmRleCh1bnNpZ25lZCYpOwogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRGF0YVNlZ21lbnRJbmRleCh1bnNp
Z25lZCYpOwpAQCAtMjY0LDcgKzI3NSw3IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46
OnBhcnNlKCkgLT4gUmVzdWx0CiAgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBudW1i
ZXJPZkxvY2FsczsgKytpKQogICAgICAgICAgICAgbV9sb2NhbHMudW5jaGVja2VkQXBwZW5kKHR5
cGVPZkxvY2FsKTsKIAotICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRMb2NhbCh0
eXBlT2ZMb2NhbCwgbnVtYmVyT2ZMb2NhbHMpKTsKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NP
TlRFWFQoYWRkTG9jYWwodHlwZU9mTG9jYWwsIG1fbG9jYWxzLnNpemUoKSAtIG51bWJlck9mTG9j
YWxzLCBudW1iZXJPZkxvY2FscykpOwogICAgIH0KIAogICAgIG1fY29udGV4dC5kaWRGaW5pc2hQ
YXJzaW5nTG9jYWxzKCk7CkBAIC01NDksNiArNTYwLDY2IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8
Q29udGV4dD46OmF0b21pY0ZlbmNlKEV4dEF0b21pY09wVHlwZSBvcCkgLT4gUGFydGlhbFJlc3Vs
dAogICAgIHJldHVybiB7IH07CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+Cit0ZW1w
bGF0ZTxTaW1kTGFuZU9wZXJhdGlvbiBvcCwgU2ltZExhbmVJbnRlcnByZXRhdGlvbiBsYW5lSW50
ZXJwcmV0YXRpb24sIFNpbWRTaWduRXh0ZW5kTW9kZSBzaWduTW9kZT4KK2F1dG8gRnVuY3Rpb25Q
YXJzZXI8Q29udGV4dD46OnNpbWRTcGVjaWFsQ2FzZShib29sIHJlYWNoYWJsZSkgLT4gUGFydGlh
bFJlc3VsdAoreworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9u
OjpDb25zdDogeworICAgICAgICB2MTI4X3QgY29uc3RhbnQ7CisgICAgICAgIEFTU0VSVChsYW5l
SW50ZXJwcmV0YXRpb24gPT0gU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6djEyOCk7CisgICAgICAg
IEFTU0VSVChzaWduTW9kZSA9PSBTaW1kU2lnbkV4dGVuZE1vZGU6Ok5BKTsKKyAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighcGFyc2VJbW1CeXRlQXJyYXkxNihjb25zdGFudCksICJjYW4ndCBw
YXJzZSAxMjgtYml0IHZlY3RvciBjb25zdGFudCIpOworICAgICAgICBpZiAoIXJlYWNoYWJsZSkK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29u
c3RydWN0QW5kQXBwZW5kKFR5cGVzOjpWMTI4LCBtX2NvbnRleHQuYWRkQ29uc3RhbnQoY29uc3Rh
bnQpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwg
ImludmFsaWQgc2ltZCBvcCAiLCBTaW1kTGFuZU9wZXJhdGlvbkR1bXAob3ApKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIHJldHVybiB7IH07Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENv
bnRleHQ+Cit0ZW1wbGF0ZTxFeHRTaW1kT3BUeXBlIG9wLCBzaXplX3QgbnVtSW1tZWRpYXRlcywg
c2l6ZV90IG51bUFyZ3VtZW50cz4KK2F1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnNpbWRD
YXNlKGJvb2wgcmVhY2hhYmxlLCBUeXBlIHJlc3VsdFR5cGUsIGNvbnN0IHN0ZDo6YXJyYXk8aW50
LCBudW1JbW1lZGlhdGVzPiYgaW1tZWRpYXRlU2l6ZXMsIGNvbnN0IHN0ZDo6YXJyYXk8Y29uc3Qg
VHlwZSosIG51bUFyZ3VtZW50cz4mIGFyZ3VtZW50VHlwZXMpIC0+IFBhcnRpYWxSZXN1bHQKK3sK
KyAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIG51bUltbWVkaWF0ZXM+IGltbXM7CisgICAgc3RkOjph
cnJheTxFeHByZXNzaW9uVHlwZSwgbnVtQXJndW1lbnRzPiBhcmdzOworICAgIAorICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtSW1tZWRpYXRlczsgKytpKSB7CisgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIXBhcnNlSW1tTGFuZUlkeChpbW1lZGlhdGVTaXplc1tpXSwgaW1tc1tpXSks
ICJjYW4ndCBwYXJzZSBsYW5lIGluZGV4IGltbWVkaWF0ZSIpOworICAgIH0KKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtQXJndW1lbnRzOyArK2kpIHsKKyAgICAgICAgVHlwZWRFeHBy
ZXNzaW9uIGU7CisgICAgICAgIAorICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFD
S19JTlRPKGUsICJzaW1kIGFyZ3VtZW50Iik7CisgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxf
SUYoZS50eXBlKCkgIT0gKmFyZ3VtZW50VHlwZXNbaV0sICJ0eXBlIG1pc21hdGNoIGZvciBhcmd1
bWVudCAiLCBpKTsKKyAgICAgICAgYXJnc1tpXSA9IGUudmFsdWUoKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKCFyZWFjaGFibGUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAocmVzdWx0
VHlwZS5pc1ZvaWQoKSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdDsK
KyAgICBQYXJ0aWFsUmVzdWx0IG9wUmVzdWx0ID0gbV9jb250ZXh0LnRlbXBsYXRlIGFkZFNpbWRP
cDxvcD4oaW1tcywgYXJncywgcmVzdWx0KTsKKyAgICBpZiAoVU5MSUtFTFkoIW9wUmVzdWx0KSkK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUob3BSZXN1bHQuZXJyb3IoKSkp
OworICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChyZXN1bHRUeXBlLCBy
ZXN1bHQpOworICAgIAorICAgIHJldHVybiB7IH07Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIENv
bnRleHQ+CiBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVRhYmxlSW5kZXgodW5z
aWduZWQmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewpAQCAtMTEyNyw3ICsxMTk4LDcgQEAg
Rk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIFdBU01f
RkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbmRleEZvckxvY2FsKGluZGV4KSk7CiAKICAgICAg
ICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OwotICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVY
VChnZXRMb2NhbChpbmRleCwgcmVzdWx0KSk7CisgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05U
RVhUKGdldExvY2FsKGluZGV4LCBtX2xvY2Fsc1tpbmRleF0sIHJlc3VsdCkpOwogICAgICAgICBt
X2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQobV9sb2NhbHNbaW5kZXhdLCByZXN1
bHQpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KQEAgLTExNDAsNyArMTIxMSw3IEBAIEZP
Ul9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBXQVNNX1RS
WV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKHZhbHVlLCAic2V0X2xvY2FsIik7CiAgICAgICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoaW5kZXggPj0gbV9sb2NhbHMuc2l6ZSgpLCAiYXR0ZW1w
dCB0byBzZXQgdW5rbm93biBsb2NhbCAiLCBpbmRleCwgIiBsYXN0IG9uZSBpcyAiLCBtX2xvY2Fs
cy5zaXplKCkpOwogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUodmFs
dWUudHlwZSgpLCBtX2xvY2Fsc1tpbmRleF0pLCAic2V0X2xvY2FsIHRvIHR5cGUgIiwgdmFsdWUu
dHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQgIiwgbV9sb2NhbHNbaW5kZXhdLmtpbmQpOwotICAgICAg
ICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChzZXRMb2NhbChpbmRleCwgdmFsdWUpKTsKKyAgICAg
ICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoc2V0TG9jYWwoaW5kZXgsIG1fbG9jYWxzW2luZGV4
XSwgdmFsdWUpKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTExNTIsNyArMTIy
Myw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAg
ICBUeXBlZEV4cHJlc3Npb24gdmFsdWUgPSBtX2V4cHJlc3Npb25TdGFjay5sYXN0KCk7CiAgICAg
ICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoaW5kZXggPj0gbV9sb2NhbHMuc2l6ZSgpLCAiYXR0
ZW1wdCB0byB0ZWUgdW5rbm93biBsb2NhbCAiLCBpbmRleCwgIiBsYXN0IG9uZSBpcyAiLCBtX2xv
Y2Fscy5zaXplKCkpOwogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUo
dmFsdWUudHlwZSgpLCBtX2xvY2Fsc1tpbmRleF0pLCAic2V0X2xvY2FsIHRvIHR5cGUgIiwgdmFs
dWUudHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQgIiwgbV9sb2NhbHNbaW5kZXhdLmtpbmQpOwotICAg
ICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChzZXRMb2NhbChpbmRleCwgdmFsdWUpKTsKKyAg
ICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoc2V0TG9jYWwoaW5kZXgsIG1fbG9jYWxzW2lu
ZGV4XSwgdmFsdWUpKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTEyMDAsNyAr
MTI3MSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAg
ICAgICAgICAgVHlwZWRFeHByZXNzaW9uIGFyZyA9IG1fZXhwcmVzc2lvblN0YWNrLmF0KGkpOwog
ICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKGFyZy50eXBlKCks
IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4KSksICJhcmd1
bWVudCB0eXBlIG1pc21hdGNoIGluIGNhbGwsIGdvdCAiLCBhcmcudHlwZSgpLmtpbmQsICIsIGV4
cGVjdGVkICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4
KS5raW5kKTsKICAgICAgICAgICAgIGFyZ3MudW5jaGVja2VkQXBwZW5kKGFyZyk7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsKKyAgICAgICAgICAgIG1fY29u
dGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjayhhcmcudHlwZSgpKTsKICAgICAgICAgfQogICAgICAg
ICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1bWVudEluZGV4KTsKIApAQCAtMTI0
MSw3ICsxMzEyLDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0Up
CiAgICAgICAgICAgICBpZiAoaSA8IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSAtIDEpCiAgICAg
ICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKGFyZy50eXBlKCks
IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4KSksICJhcmd1
bWVudCB0eXBlIG1pc21hdGNoIGluIGNhbGxfaW5kaXJlY3QsIGdvdCAiLCBhcmcudHlwZSgpLmtp
bmQsICIsIGV4cGVjdGVkICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1
bWVudEluZGV4KS5raW5kKTsKICAgICAgICAgICAgIGFyZ3MudW5jaGVja2VkQXBwZW5kKGFyZyk7
Ci0gICAgICAgICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsKKyAgICAgICAg
ICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjayhhcmcudHlwZSgpKTsKICAgICAgICAg
fQogICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1bWVudEluZGV4KTsK
IApAQCAtMTI3MSw3ICsxMzQyLDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JF
QVRFX0NBU0UpCiAgICAgICAgICAgICBpZiAoaSA8IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSAt
IDEpCiAgICAgICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihhcmcudHlwZSgpICE9
IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4KSwgImFyZ3Vt
ZW50IHR5cGUgbWlzbWF0Y2ggaW4gY2FsbF9pbmRpcmVjdCwgZ290ICIsIGFyZy50eXBlKCkua2lu
ZCwgIiwgZXhwZWN0ZWQgIiwgY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50KGkgLSBmaXJzdEFyZ3Vt
ZW50SW5kZXgpLmtpbmQpOwogICAgICAgICAgICAgYXJncy51bmNoZWNrZWRBcHBlbmQoYXJnKTsK
LSAgICAgICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjaygpOworICAgICAgICAg
ICAgbV9jb250ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKGFyZy50eXBlKCkpOwogICAgICAgICB9
CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLnNocmluayhmaXJzdEFyZ3VtZW50SW5kZXgpOwog
CkBAIC0xNDYyLDE3ICsxNTMzLDE3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENS
RUFURV9DQVNFKQogCiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYobV9leHByZXNzaW9u
U3RhY2suc2l6ZSgpIDwgZXhjZXB0aW9uU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwgIlRvbyBm
ZXcgYXJndW1lbnRzIG9uIHN0YWNrIGZvciB0aGUgZXhjZXB0aW9uIGJlaW5nIHRocm93bi4gVGhl
IGV4Y2VwdGlvbiBleHBlY3RzICIsIGV4Y2VwdGlvblNpZ25hdHVyZS5hcmd1bWVudENvdW50KCks
ICIsIGJ1dCBvbmx5ICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB3ZXJlIHByZXNlbnQu
IEV4Y2VwdGlvbiBoYXMgc2lnbmF0dXJlOiAiLCBleGNlcHRpb25TaWduYXR1cmUudG9TdHJpbmco
KSk7CiAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSAt
IGV4Y2VwdGlvblNpZ25hdHVyZS5hcmd1bWVudENvdW50KCk7Ci0gICAgICAgIFZlY3RvcjxFeHBy
ZXNzaW9uVHlwZT4gYXJnczsKKyAgICAgICAgU3RhY2sgYXJncyhleGNlcHRpb25TaWduYXR1cmUu
YXJndW1lbnRDb3VudCgpKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighYXJncy50cnlS
ZXNlcnZlQ2FwYWNpdHkoZXhjZXB0aW9uU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSksICJjYW4n
dCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciB0aHJvdydzICIsIGV4Y2VwdGlvblNpZ25hdHVy
ZS5hcmd1bWVudENvdW50KCksICIgYXJndW1lbnRzIik7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBleGNlcHRpb25TaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyArK2kpIHsKICAg
ICAgICAgICAgIFR5cGVkRXhwcmVzc2lvbiBhcmcgPSBtX2V4cHJlc3Npb25TdGFjay5hdChvZmZz
ZXQgKyBpKTsKICAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoYXJnLnR5cGUoKSAh
PSBleGNlcHRpb25TaWduYXR1cmUuYXJndW1lbnQoaSksICJUaGUgZXhjZXB0aW9uIGJlaW5nIHRo
cm93biBleHBlY3RzIHRoZSBhcmd1bWVudCBhdCBpbmRleCAiLCBpLCAiIHRvIGJlICIsIGV4Y2Vw
dGlvblNpZ25hdHVyZS5hcmd1bWVudChpKS5raW5kLCAiIGJ1dCBhcmd1bWVudCBoYXMgdHlwZSAi
LCBhcmcudHlwZSgpLmtpbmQpOwogICAgICAgICAgICAgYXJncy51bmNoZWNrZWRBcHBlbmQoYXJn
KTsKLSAgICAgICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjaygpOworICAgICAg
ICAgICAgbV9jb250ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKGFyZy50eXBlKCkpOwogICAgICAg
ICB9CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLnNocmluayhvZmZzZXQpOwogCi0gICAgICAg
IFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFRocm93KGV4Y2VwdGlvbkluZGV4LCBhcmdzLCBt
X2V4cHJlc3Npb25TdGFjaykpOworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRU
aHJvdyhleGNlcHRpb25JbmRleCwgYXJncykpOwogICAgICAgICBtX3VucmVhY2hhYmxlQmxvY2tz
ID0gMTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CkBAIC0xNTgwLDggKzE2NTEsMTAgQEAg
Rk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAKICAgICBjYXNlIERy
b3A6IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9leHByZXNzaW9uU3RhY2suc2l6
ZSgpLCAiY2FuJ3QgZHJvcCBvbiBlbXB0eSBzdGFjayIpOwotICAgICAgICBtX2V4cHJlc3Npb25T
dGFjay50YWtlTGFzdCgpOwotICAgICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2so
KTsKKyAgICAgICAgCisgICAgICAgIFR5cGVkRXhwcmVzc2lvbiB1bnVzZWQ7CisgICAgICAgIFdB
U01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8odW51c2VkLCAiZXhwZWN0IGFuIGFyZ3Vt
ZW50IHRvIGRyb3Agb24gdGhlIHN0YWNrIik7CisgICAgICAgIAogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KIApAQCAtMTYyMCw2ICsxNjkzLDI3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NU
T1JFX09QKENSRUFURV9DQVNFKQogCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQorCisgICAg
Y2FzZSBFeHRTaW1kOiB7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5U0lNRCgpLCAid2FzbS1zaW1kIGlzIG5vdCBlbmFibGVkIik7CisgICAgICAg
IHVpbnQ4X3Qgc2ltZE9wOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4
KHNpbWRPcCksICJjYW4ndCBwYXJzZSB3YXNtIGV4dGVuZGVkIG9wY29kZSIpOworCisgICAgICAg
IEV4dFNpbWRPcFR5cGUgb3AgPSBzdGF0aWNfY2FzdDxFeHRTaW1kT3BUeXBlPihzaW1kT3ApOwor
ICAgICAgICBzd2l0Y2ggKG9wKSB7CisjZGVmaW5lIENSRUFURV9TSU1EX0NBU0UobmFtZSwgaWQs
IGIzb3AsIGluYywgd2FzbU9wLCByZXR1cm5UeXBlLCBudW1JbW1lZGlhdGVzLCBpbW1lZGlhdGVT
aXplcywgbnVtQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzLCBsYW5lSW50ZXJwcmV0YXRpb24sIHNp
Z25FeHRlbmRNb2RlKSBcCisgICAgICAgIGNhc2UgRXh0U2ltZE9wVHlwZTo6bmFtZTogcmV0dXJu
IHNpbWRDYXNlPEV4dFNpbWRPcFR5cGU6Om5hbWUsIG51bUltbWVkaWF0ZXMsIG51bUFyZ3VtZW50
cz4odHJ1ZSwgcmV0dXJuVHlwZSwgaW1tZWRpYXRlU2l6ZXMsIGFyZ3VtZW50VHlwZXMpOworICAg
ICAgICBGT1JfRUFDSF9XQVNNX0VYVF9TSU1EX09QKENSRUFURV9TSU1EX0NBU0UpCisjdW5kZWYg
Q1JFQVRFX1NJTURfQ0FTRQorI2RlZmluZSBDUkVBVEVfU0lNRF9DQVNFKG5hbWUsIGlkLCBiM29w
LCBpbmMsIGxhbmVPcCwgbGFuZUludGVycHJldGF0aW9uLCBzaWduTW9kZSkgY2FzZSBFeHRTaW1k
T3BUeXBlOjpuYW1lOiByZXR1cm4gc2ltZFNwZWNpYWxDYXNlPGxhbmVPcCwgbGFuZUludGVycHJl
dGF0aW9uLCBzaWduTW9kZT4odHJ1ZSk7CisgICAgICAgIEZPUl9FQUNIX1dBU01fRVhUX1NJTURf
U1BFQ0lBTF9PUChDUkVBVEVfU0lNRF9DQVNFKQorI3VuZGVmIENSRUFURV9TSU1EX0NBU0UKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwgImlu
dmFsaWQgZXh0ZW5kZWQgc2ltZCBvcCAiLCBzaW1kT3ApOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CiAgICAgfQogCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC0xOTcwLDYgKzIwNjQsMjcgQEAgYXV0byBGdW5jdGlvblBhcnNl
cjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0
CiAgICAgfQogI3VuZGVmIENSRUFURV9BVE9NSUNfQ0FTRQogCisgICAgY2FzZSBFeHRTaW1kOiB7
CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5U0lN
RCgpLCAid2FzbS1zaW1kIGlzIG5vdCBlbmFibGVkIik7CisgICAgICAgIHVpbnQ4X3Qgc2ltZE9w
OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KHNpbWRPcCksICJjYW4n
dCBwYXJzZSB3YXNtIGV4dGVuZGVkIG9wY29kZSIpOworCisgICAgICAgIEV4dFNpbWRPcFR5cGUg
b3AgPSBzdGF0aWNfY2FzdDxFeHRTaW1kT3BUeXBlPihzaW1kT3ApOworICAgICAgICBzd2l0Y2gg
KG9wKSB7CisjZGVmaW5lIENSRUFURV9TSU1EX0NBU0UobmFtZSwgaWQsIGIzb3AsIGluYywgd2Fz
bU9wLCByZXR1cm5UeXBlLCBudW1JbW1lZGlhdGVzLCBpbW1lZGlhdGVTaXplcywgbnVtQXJndW1l
bnRzLCBhcmd1bWVudFR5cGVzLCBsYW5lSW50ZXJwcmV0YXRpb24sIHNpZ25FeHRlbmRNb2RlKSBc
CisgICAgICAgIGNhc2UgRXh0U2ltZE9wVHlwZTo6bmFtZTogcmV0dXJuIHNpbWRDYXNlPEV4dFNp
bWRPcFR5cGU6Om5hbWUsIG51bUltbWVkaWF0ZXMsIG51bUFyZ3VtZW50cz4oZmFsc2UsIHJldHVy
blR5cGUsIGltbWVkaWF0ZVNpemVzLCBhcmd1bWVudFR5cGVzKTsKKyAgICAgICAgRk9SX0VBQ0hf
V0FTTV9FWFRfU0lNRF9PUChDUkVBVEVfU0lNRF9DQVNFKQorI3VuZGVmIENSRUFURV9TSU1EX0NB
U0UKKyNkZWZpbmUgQ1JFQVRFX1NJTURfQ0FTRShuYW1lLCBpZCwgYjNvcCwgaW5jLCBsYW5lT3As
IGxhbmVJbnRlcnByZXRhdGlvbiwgc2lnbk1vZGUpIGNhc2UgRXh0U2ltZE9wVHlwZTo6bmFtZTog
cmV0dXJuIHNpbWRTcGVjaWFsQ2FzZTxsYW5lT3AsIGxhbmVJbnRlcnByZXRhdGlvbiwgc2lnbk1v
ZGU+KGZhbHNlKTsKKyAgICAgICAgRk9SX0VBQ0hfV0FTTV9FWFRfU0lNRF9TUEVDSUFMX09QKENS
RUFURV9TSU1EX0NBU0UpCisjdW5kZWYgQ1JFQVRFX1NJTURfQ0FTRQorICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0cnVlLCAiaW52YWxpZCBleHRlbmRl
ZCBzaW1kIG9wICIsIHNpbWRPcCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKwogICAgIC8vIG5vIGltbWVkaWF0ZSBjYXNlcwogICAg
IEZPUl9FQUNIX1dBU01fQklOQVJZX09QKENSRUFURV9DQVNFKQogICAgIEZPUl9FQUNIX1dBU01f
VU5BUllfT1AoQ1JFQVRFX0NBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUxMSW50R2VuZXJhdG9yLmNwcAppbmRleCAzMjg5MzJlYTMwMTguLmI3MzhjYzJhNzg4NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3Iu
Y3BwCkBAIC00NCw5ICs0NCwxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20g
ewogCituYW1lc3BhY2UgTExJbnRHZW5lcmF0b3JJbnRlcm5hbCB7CitzdGF0aWMgY29uc3RleHBy
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQorCiBjbGFzcyBMTEludEdlbmVyYXRvciA6IHB1Ymxp
YyBCeXRlY29kZUdlbmVyYXRvckJhc2U8R2VuZXJhdG9yVHJhaXRzPiB7CiBwdWJsaWM6CiAgICAg
dXNpbmcgRXhwcmVzc2lvblR5cGUgPSBWaXJ0dWFsUmVnaXN0ZXI7CisgICAgdXNpbmcgRXJyb3JU
eXBlID0gU3RyaW5nOworICAgIHVzaW5nIFBhcnRpYWxSZXN1bHQgPSBFeHBlY3RlZDx2b2lkLCBF
cnJvclR5cGU+OworICAgIHVzaW5nIFVuZXhwZWN0ZWRSZXN1bHQgPSBVbmV4cGVjdGVkPEVycm9y
VHlwZT47CiAKICAgICBzdHJ1Y3QgQ29udHJvbExvb3AgIHsKICAgICAgICAgUmVmPExhYmVsPiBt
X2JvZHk7CkBAIC03OSw2ICs4NiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVkIG1faW5z
dHJ1Y3Rpb25PZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIG1fdHJ5RGVwdGg7CiAgICAgfTsKKyAg
ICAKKyAgICBzdHJ1Y3QgV2FzbUV4cHJlc3Npb25TbG90IHsKKyAgICAgICAgV2FzbTo6VHlwZSB0
eXBlOworICAgICAgICBDaGVja2VkPHVuc2lnbmVkPiBzbG90SW5kZXg7CisgICAgICAgIAorICAg
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgb3V0LnByaW50KCIoIiwgc2xvdEluZGV4LnZhbHVlKCksICI6ICIsIHR5cGUsICIpIik7
CisgICAgICAgIH0KKyAgICB9OworICAgIHVzaW5nIFdhc21FeHByZXNzaW9uU2xvdFN0YWNrID0g
VmVjdG9yPFdhc21FeHByZXNzaW9uU2xvdCwgMTY+OwogCiAgICAgc3RydWN0IENvbnRyb2xUeXBl
IDogcHVibGljIHN0ZDo6dmFyaWFudDxDb250cm9sTG9vcCwgQ29udHJvbFRvcExldmVsLCBDb250
cm9sQmxvY2ssIENvbnRyb2xJZiwgQ29udHJvbFRyeSwgQ29udHJvbENhdGNoPiB7CiAgICAgICAg
IHVzaW5nIEJhc2UgPSBzdGQ6OnZhcmlhbnQ8Q29udHJvbExvb3AsIENvbnRyb2xUb3BMZXZlbCwg
Q29udHJvbEJsb2NrLCBDb250cm9sSWYsIENvbnRyb2xUcnksIENvbnRyb2xDYXRjaD47CkBAIC04
OCwzNCArMTA2LDQ0IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAg
c3RhdGljIENvbnRyb2xUeXBlIHRvcExldmVsKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgdW5z
aWduZWQgc3RhY2tTaXplLCBSZWZQdHI8TGFiZWw+JiYgY29udGludWF0aW9uKQorICAgICAgICBz
dGF0aWMgQ29udHJvbFR5cGUgdG9wTGV2ZWwoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBjb25z
dCBXYXNtRXhwcmVzc2lvblNsb3RTdGFjayYgc3RhY2tTbG90cywgUmVmUHRyPExhYmVsPiYmIGNv
bnRpbnVhdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIENvbnRyb2xUeXBlKHNp
Z25hdHVyZSwgc3RhY2tTaXplLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xUb3BMZXZl
bCB7IH0pOworICAgICAgICAgICAgcmV0dXJuIENvbnRyb2xUeXBlKHNpZ25hdHVyZSwgc3RhY2tT
bG90cywgV1RGTW92ZShjb250aW51YXRpb24pLCBDb250cm9sVG9wTGV2ZWwgeyB9KTsKICAgICAg
ICAgfQogCi0gICAgICAgIHN0YXRpYyBDb250cm9sVHlwZSBsb29wKEJsb2NrU2lnbmF0dXJlIHNp
Z25hdHVyZSwgdW5zaWduZWQgc3RhY2tTaXplLCBSZWY8TGFiZWw+JiYgYm9keSwgUmVmUHRyPExh
YmVsPiYmIGNvbnRpbnVhdGlvbikKKyAgICAgICAgc3RhdGljIENvbnRyb2xUeXBlIGxvb3AoQmxv
Y2tTaWduYXR1cmUgc2lnbmF0dXJlLCBjb25zdCBXYXNtRXhwcmVzc2lvblNsb3RTdGFjayYgc3Rh
Y2tTbG90cywgUmVmPExhYmVsPiYmIGJvZHksIFJlZlB0cjxMYWJlbD4mJiBjb250aW51YXRpb24p
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIHN0
YWNrU2l6ZSAtIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCBXVEZNb3ZlKGNvbnRpbnVhdGlv
biksIENvbnRyb2xMb29wIHsgV1RGTW92ZShib2R5KSB9KTsKKyAgICAgICAgICAgIFdhc21FeHBy
ZXNzaW9uU2xvdFN0YWNrIG5ld1N0YWNrIHsgc3RhY2tTbG90cyB9OworICAgICAgICAgICAgbmV3
U3RhY2sucmVtb3ZlKDAsIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpKTsKKyAgICAgICAgICAg
IHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIG5ld1N0YWNrLCBXVEZNb3ZlKGNvbnRpbnVh
dGlvbiksIENvbnRyb2xMb29wIHsgV1RGTW92ZShib2R5KSB9KTsKICAgICAgICAgfQogCi0gICAg
ICAgIHN0YXRpYyBDb250cm9sVHlwZSBibG9jayhCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIHVu
c2lnbmVkIHN0YWNrU2l6ZSwgUmVmUHRyPExhYmVsPiYmIGNvbnRpbnVhdGlvbikKKyAgICAgICAg
c3RhdGljIENvbnRyb2xUeXBlIGJsb2NrKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgY29uc3Qg
V2FzbUV4cHJlc3Npb25TbG90U3RhY2smIHN0YWNrU2xvdHMsIFJlZlB0cjxMYWJlbD4mJiBjb250
aW51YXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBDb250cm9sVHlwZShzaWdu
YXR1cmUsIHN0YWNrU2l6ZSAtIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCBXVEZNb3ZlKGNv
bnRpbnVhdGlvbiksIENvbnRyb2xCbG9jayB7IH0pOworICAgICAgICAgICAgV2FzbUV4cHJlc3Np
b25TbG90U3RhY2sgbmV3U3RhY2sgeyBzdGFja1Nsb3RzIH07CisgICAgICAgICAgICBuZXdTdGFj
ay5yZW1vdmUoMCwgc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCkpOworICAgICAgICAgICAgcmV0
dXJuIENvbnRyb2xUeXBlKHNpZ25hdHVyZSwgbmV3U3RhY2ssIFdURk1vdmUoY29udGludWF0aW9u
KSwgQ29udHJvbEJsb2NrIHsgfSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgQ29udHJv
bFR5cGUgaWZfKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgdW5zaWduZWQgc3RhY2tTaXplLCBS
ZWY8TGFiZWw+JiYgYWx0ZXJuYXRlLCBSZWZQdHI8TGFiZWw+JiYgY29udGludWF0aW9uKQorICAg
ICAgICBzdGF0aWMgQ29udHJvbFR5cGUgaWZfKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgY29u
c3QgV2FzbUV4cHJlc3Npb25TbG90U3RhY2smIHN0YWNrU2xvdHMsIFJlZjxMYWJlbD4mJiBhbHRl
cm5hdGUsIFJlZlB0cjxMYWJlbD4mJiBjb250aW51YXRpb24pCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIHN0YWNrU2l6ZSAtIHNpZ25hdHVyZS0+
YXJndW1lbnRDb3VudCgpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xJZiB7IFdURk1v
dmUoYWx0ZXJuYXRlKSB9KTsKKyAgICAgICAgICAgIFdhc21FeHByZXNzaW9uU2xvdFN0YWNrIG5l
d1N0YWNrIHsgc3RhY2tTbG90cyB9OworICAgICAgICAgICAgbmV3U3RhY2sucmVtb3ZlKDAsIHNp
Z25hdHVyZS0+YXJndW1lbnRDb3VudCgpKTsKKyAgICAgICAgICAgIHJldHVybiBDb250cm9sVHlw
ZShzaWduYXR1cmUsIG5ld1N0YWNrLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xJZiB7
IFdURk1vdmUoYWx0ZXJuYXRlKSB9KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBDb250
cm9sVHlwZSBjcmVhdGVUcnkoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCB1bnNpZ25lZCBzdGFj
a1NpemUsIFJlZjxMYWJlbD4mJiB0cnlMYWJlbCwgUmVmUHRyPExhYmVsPiYmIGNvbnRpbnVhdGlv
biwgdW5zaWduZWQgdHJ5RGVwdGgpCisgICAgICAgIHN0YXRpYyBDb250cm9sVHlwZSBjcmVhdGVU
cnkoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBjb25zdCBXYXNtRXhwcmVzc2lvblNsb3RTdGFj
ayYgc3RhY2tTbG90cywgUmVmPExhYmVsPiYmIHRyeUxhYmVsLCBSZWZQdHI8TGFiZWw+JiYgY29u
dGludWF0aW9uLCB1bnNpZ25lZCB0cnlEZXB0aCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIENvbnRyb2xUeXBlKHNpZ25hdHVyZSwgc3RhY2tTaXplIC0gc2lnbmF0dXJlLT5hcmd1bWVu
dENvdW50KCksIFdURk1vdmUoY29udGludWF0aW9uKSwgQ29udHJvbFRyeSB7IFdURk1vdmUodHJ5
TGFiZWwpLCB0cnlEZXB0aCB9KTsKKyAgICAgICAgICAgIFdhc21FeHByZXNzaW9uU2xvdFN0YWNr
IG5ld1N0YWNrIHsgc3RhY2tTbG90cyB9OworICAgICAgICAgICAgbmV3U3RhY2sucmVtb3ZlKDAs
IHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpKTsKKyAgICAgICAgICAgIHJldHVybiBDb250cm9s
VHlwZShzaWduYXR1cmUsIG5ld1N0YWNrLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xU
cnkgeyBXVEZNb3ZlKHRyeUxhYmVsKSwgdHJ5RGVwdGggfSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBzdGF0aWMgQ29udHJvbFR5cGUgY3JlYXRlQ2F0Y2goQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJl
LCB1bnNpZ25lZCBzdGFja1NpemUsIFJlZjxMYWJlbD4mJiB0cnlTdGFydCwgUmVmUHRyPExhYmVs
PiYmIGNvbnRpbnVhdGlvbiwgUmVmPExhYmVsPiB0cnlFbmQsIHVuc2lnbmVkIHRyeURlcHRoLCBW
aXJ0dWFsUmVnaXN0ZXIgZXhjZXB0aW9uKQorICAgICAgICBzdGF0aWMgQ29udHJvbFR5cGUgY3Jl
YXRlQ2F0Y2goQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBjb25zdCBXYXNtRXhwcmVzc2lvblNs
b3RTdGFjayYgc3RhY2tTbG90cywgUmVmPExhYmVsPiYmIHRyeVN0YXJ0LCBSZWZQdHI8TGFiZWw+
JiYgY29udGludWF0aW9uLCBSZWY8TGFiZWw+IHRyeUVuZCwgdW5zaWduZWQgdHJ5RGVwdGgsIFZp
cnR1YWxSZWdpc3RlciBleGNlcHRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBD
b250cm9sVHlwZShzaWduYXR1cmUsIHN0YWNrU2l6ZSAtIHNpZ25hdHVyZS0+YXJndW1lbnRDb3Vu
dCgpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xDYXRjaCB7IENhdGNoS2luZDo6Q2F0
Y2gsIFdURk1vdmUodHJ5U3RhcnQpLCBXVEZNb3ZlKHRyeUVuZCksIHRyeURlcHRoLCBleGNlcHRp
b24gfSk7CisgICAgICAgICAgICBXYXNtRXhwcmVzc2lvblNsb3RTdGFjayBuZXdTdGFjayB7IHN0
YWNrU2xvdHMgfTsKKyAgICAgICAgICAgIG5ld1N0YWNrLnJlbW92ZSgwLCBzaWduYXR1cmUtPmFy
Z3VtZW50Q291bnQoKSk7CisgICAgICAgICAgICByZXR1cm4gQ29udHJvbFR5cGUoc2lnbmF0dXJl
LCBuZXdTdGFjaywgV1RGTW92ZShjb250aW51YXRpb24pLCBDb250cm9sQ2F0Y2ggeyBDYXRjaEtp
bmQ6OkNhdGNoLCBXVEZNb3ZlKHRyeVN0YXJ0KSwgV1RGTW92ZSh0cnlFbmQpLCB0cnlEZXB0aCwg
ZXhjZXB0aW9uIH0pOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGJvb2wgaXNMb29wKGNv
bnN0IENvbnRyb2xUeXBlJiBjb250cm9sKSB7IHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PENvbnRyb2xMb29wPihjb250cm9sKTsgfQpAQCAtMTMyLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBjYXRjaERhdGEubV9raW5kID09IENhdGNoS2luZDo6Q2F0Y2g7CiAg
ICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBzdGFja1NpemUoKSBjb25zdCB7IHJldHVybiBt
X3N0YWNrU2l6ZTsgfQorICAgICAgICB1bnNpZ25lZCBzdGFja0NvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9leHByZXNzaW9uU3RhY2tTbG90cy5zaXplKCk7IH0KICAgICAgICAgQmxvY2tTaWduYXR1
cmUgc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmU7IH0KIAogICAgICAgICBS
ZWZQdHI8TGFiZWw+IHRhcmdldExhYmVsRm9yQnJhbmNoKCkgY29uc3QKQEAgLTE1OCwyNCArMTg2
LDIwIEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIEJsb2NrU2lnbmF0dXJlIG1fc2ln
bmF0dXJlOwotICAgICAgICB1bnNpZ25lZCBtX3N0YWNrU2l6ZTsKKyAgICAgICAgV2FzbUV4cHJl
c3Npb25TbG90U3RhY2sgbV9leHByZXNzaW9uU3RhY2tTbG90czsKICAgICAgICAgUmVmUHRyPExh
YmVsPiBtX2NvbnRpbnVhdGlvbjsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci0gICAgICAgIENvbnRyb2xUeXBlKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwg
dW5zaWduZWQgc3RhY2tTaXplLCBSZWZQdHI8TGFiZWw+JiYgY29udGludWF0aW9uLCBUJiYgdCkK
KyAgICAgICAgQ29udHJvbFR5cGUoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBjb25zdCBXYXNt
RXhwcmVzc2lvblNsb3RTdGFjayYgc3RhY2tTbG90cywgUmVmUHRyPExhYmVsPiYmIGNvbnRpbnVh
dGlvbiwgVCYmIHQpCiAgICAgICAgICAgICA6IEJhc2UoV1RGTW92ZSh0KSkKICAgICAgICAgICAg
ICwgbV9zaWduYXR1cmUoc2lnbmF0dXJlKQotICAgICAgICAgICAgLCBtX3N0YWNrU2l6ZShzdGFj
a1NpemUpCisgICAgICAgICAgICAsIG1fZXhwcmVzc2lvblN0YWNrU2xvdHMoc3RhY2tTbG90cykK
ICAgICAgICAgICAgICwgbV9jb250aW51YXRpb24oV1RGTW92ZShjb250aW51YXRpb24pKQogICAg
ICAgICB7CiAgICAgICAgIH0KICAgICB9OwotCi0gICAgdXNpbmcgRXJyb3JUeXBlID0gU3RyaW5n
OwotICAgIHVzaW5nIFBhcnRpYWxSZXN1bHQgPSBFeHBlY3RlZDx2b2lkLCBFcnJvclR5cGU+Owot
ICAgIHVzaW5nIFVuZXhwZWN0ZWRSZXN1bHQgPSBVbmV4cGVjdGVkPEVycm9yVHlwZT47Ci0KKyAg
ICAKICAgICB1c2luZyBDb250cm9sRW50cnkgPSBGdW5jdGlvblBhcnNlcjxMTEludEdlbmVyYXRv
cj46OkNvbnRyb2xFbnRyeTsKICAgICB1c2luZyBDb250cm9sU3RhY2sgPSBGdW5jdGlvblBhcnNl
cjxMTEludEdlbmVyYXRvcj46OkNvbnRyb2xTdGFjazsKICAgICB1c2luZyBSZXN1bHRMaXN0ID0g
RnVuY3Rpb25QYXJzZXI8TExJbnRHZW5lcmF0b3I+OjpSZXN1bHRMaXN0OwpAQCAtMTgzLDYgKzIw
NywzMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgVHlwZWRFeHByZXNzaW9uID0gRnVuY3Rpb25QYXJz
ZXI8TExJbnRHZW5lcmF0b3I+OjpUeXBlZEV4cHJlc3Npb247CiAKICAgICBzdGF0aWMgRXhwcmVz
c2lvblR5cGUgZW1wdHlFeHByZXNzaW9uKCkgeyByZXR1cm4geyB9OyB9OworICAgIHN0YXRpYyBW
aXJ0dWFsUmVnaXN0ZXIgbmV4dFNsb3RGb3JVcHBlckJpdHMoVmlydHVhbFJlZ2lzdGVyIGxvdykK
KyAgICB7CisgICAgICAgIHJldHVybiBsb3cgKyAxOworICAgIH0KKyAgICAKKyAgICB2b2lkIHR5
cGVkTW92ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBUeXBlZEV4cHJlc3Npb24gc3JjKQorICAgIHsK
KyAgICAgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlsi
LCBtX2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAgICAgICAgICJNb3ZlIHR5cGUgIiwgc3JjLnR5
cGUoKSwgIiBhdCBpbmRleCAiLCBzcmMudmFsdWUoKSwgIiwgIiwgbmV4dFNsb3RGb3JVcHBlckJp
dHMoc3JjLnZhbHVlKCkpLCAiIHRvICIsIGRzdCwgIiwgIiwgbmV4dFNsb3RGb3JVcHBlckJpdHMo
ZHN0KSk7CisgICAgICAgIAorICAgICAgICBXYXNtTW92OjplbWl0KHRoaXMsIGRzdCwgc3JjKTsK
KyAgICAgICAgaWYgKHNyYy50eXBlKCkuc2l6ZSgpID09IDE2KQorICAgICAgICAgICAgV2FzbU1v
djo6ZW1pdCh0aGlzLCBuZXh0U2xvdEZvclVwcGVyQml0cyhkc3QpLCBuZXh0U2xvdEZvclVwcGVy
Qml0cyhzcmMudmFsdWUoKSkpOworICAgIH0KKyAgICAKKyAgICBDaGVja2VkPHVuc2lnbmVkPiBu
ZXh0U2xvdEluZGV4KFR5cGUgdHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh0eXBl
LnNpemUoKSA9PSA4IHx8IHR5cGUuc2l6ZSgpID09IDE2KTsKKyAgICAgICAgQ2hlY2tlZDx1bnNp
Z25lZD4gc2xvdEluZGV4ID0gbV9maXJzdFN0YWNrU2xvdEluZGV4OworICAgICAgICBpZiAobV9l
eHByZXNzaW9uU3RhY2tTbG90cy5zaXplKCkpCisgICAgICAgICAgICBzbG90SW5kZXggPSBtX2V4
cHJlc3Npb25TdGFja1Nsb3RzLmxhc3QoKS5zbG90SW5kZXggKyAxOworICAgICAgICBzbG90SW5k
ZXggKz0gdHlwZS5zaXplKCkgLyA4IC0gMTsKKyAgICAgICAgcmV0dXJuIHNsb3RJbmRleDsKKyAg
ICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgLi4uQXJncz4KICAgICBORVZFUl9JTkxJTkUg
VW5leHBlY3RlZFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZmFpbChBcmdzLi4uIGFyZ3MpIGNv
bnN0CkBAIC0xOTgsMzQgKzI0Niw1NyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RXhwcmVzc2lvbkxpc3RBLCB0eXBlbmFtZSBFeHByZXNzaW9uTGlzdEI+CiAgICAgdm9pZCB1bmlm
eVZhbHVlc1dpdGhCbG9jayhjb25zdCBFeHByZXNzaW9uTGlzdEEmIGRlc3RpbmF0aW9ucywgY29u
c3QgRXhwcmVzc2lvbkxpc3RCJiB2YWx1ZXMpCiAgICAgeworICAgICAgICBkYXRhTG9nTG5JZihM
TEludEdlbmVyYXRvckludGVybmFsOjp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0i
LAorICAgICAgICAgICAgIlVuaWZ5ICIsIGxpc3REdW1wKGRlc3RpbmF0aW9ucyksICIgPC0gIiwg
bGlzdER1bXAodmFsdWVzKSk7CiAgICAgICAgIEFTU0VSVChkZXN0aW5hdGlvbnMuc2l6ZSgpIDw9
IHZhbHVlcy5zaXplKCkpOwogICAgICAgICBhdXRvIG9mZnNldCA9IHZhbHVlcy5zaXplKCkgLSBk
ZXN0aW5hdGlvbnMuc2l6ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlc3Rp
bmF0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgYXV0byYgc3JjID0gdmFsdWVzW29m
ZnNldCArIGldOwogICAgICAgICAgICAgYXV0byYgZHN0ID0gZGVzdGluYXRpb25zW2ldOwotICAg
ICAgICAgICAgaWYgKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oc3JjKSAhPSBzdGF0aWNf
Y2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KGRzdCkpCi0gICAgICAgICAgICAgICAgV2FzbU1vdjo6ZW1p
dCh0aGlzLCBkc3QsIHNyYyk7CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8VmlydHVhbFJl
Z2lzdGVyPihzcmMudmFsdWUoKSkgIT0gc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihkc3Qu
dmFsdWUoKSkpCisgICAgICAgICAgICAgICAgdHlwZWRNb3ZlKGRzdCwgc3JjKTsKICAgICAgICAg
fQogICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBzdGFja0NvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9leHByZXNzaW9uU3RhY2tTbG90cy5zaXplKCk7IH0KKyAgICB1bnNpZ25lZCBzdGFja1Nsb3RT
aXplKCkgY29uc3QgeyByZXR1cm4gbmV4dFNsb3RJbmRleChUeXBlczo6STY0KTsgfQogCiAgICAg
ZW51bSBOb0NvbnNpc3RlbmN5Q2hlY2tUYWcgeyBOb0NvbnNpc3RlbmN5Q2hlY2sgfTsKLSAgICBF
eHByZXNzaW9uVHlwZSBwdXNoKE5vQ29uc2lzdGVuY3lDaGVja1RhZykKKyAgICBFeHByZXNzaW9u
VHlwZSBwdXNoKFdhc206OlR5cGUgdHlwZSwgTm9Db25zaXN0ZW5jeUNoZWNrVGFnKQogICAgIHsK
LSAgICAgICAgbV9tYXhTdGFja1NpemUgPSBzdGQ6Om1heChtX21heFN0YWNrU2l6ZSwgKyttX3N0
YWNrU2l6ZSk7Ci0gICAgICAgIHJldHVybiB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX3N0YWNr
U2l6ZSAtIDEpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KG5leHRTbG90SW5kZXgodHlwZSkpOworICAgICAgICBtX2V4cHJlc3Npb25TdGFja1Nsb3RzLmFw
cGVuZCggeyB0eXBlLCBuZXh0U2xvdEluZGV4KHR5cGUpIH0gKTsKKyAgICAgICAgCisgICAgICAg
IGRhdGFMb2dMbklmKExMSW50R2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJbIiwgbV9mdW5j
dGlvbkluZGV4LCAiXSIsCisgICAgICAgICAgICAiUHVzaCB0eXBlICIsIHR5cGUsICIgYXQgaW5k
ZXggIiwgbV9leHByZXNzaW9uU3RhY2tTbG90cy5zaXplKCkgLSAxLCAiIGdvZXMgaW4gIiwKKyAg
ICAgICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fZXhwcmVzc2lvblN0YWNrU2xvdHMu
bGFzdCgpLnNsb3RJbmRleCksICIsICIsCisgICAgICAgICAgICBuZXh0U2xvdEZvclVwcGVyQml0
cyh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2V4cHJlc3Npb25TdGFja1Nsb3RzLmxhc3QoKS5z
bG90SW5kZXgpKSk7CisgICAgICAgIAorICAgICAgICBtX21heFN0YWNrU2xvdFNpemUgPSBzdGQ6
Om1heChzdGFja1Nsb3RTaXplKCksIG1fbWF4U3RhY2tTbG90U2l6ZS52YWx1ZSgpKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uVHlwZSBwdXNoKCkKKyAg
ICBFeHByZXNzaW9uVHlwZSBwdXNoKFdhc206OlR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIGNo
ZWNrQ29uc2lzdGVuY3koKTsKLSAgICAgICAgcmV0dXJuIHB1c2goTm9Db25zaXN0ZW5jeUNoZWNr
KTsKKyAgICAgICAgcmV0dXJuIHB1c2godHlwZSwgTm9Db25zaXN0ZW5jeUNoZWNrKTsKICAgICB9
CiAKLSAgICB2b2lkIGRpZFBvcFZhbHVlRnJvbVN0YWNrKCkgeyAtLW1fc3RhY2tTaXplOyB9Cisg
ICAgdm9pZCBkaWRQb3BWYWx1ZUZyb21TdGFjayhXYXNtOjpUeXBlIHR5cGUpCisgICAgeworICAg
ICAgICBhdXRvIHBvcHBlZFNsb3QgPSBtX2V4cHJlc3Npb25TdGFja1Nsb3RzLnRha2VMYXN0KCk7
CisgICAgICAgIAorICAgICAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVybmFsOjp2
ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAgICAgIlBvcHBlZCAi
LCBwb3BwZWRTbG90LnR5cGUsICIgaW5kZXggIiwgbV9leHByZXNzaW9uU3RhY2tTbG90cy5zaXpl
KCksICIgc2xvdCBpbmRleCAiLCBwb3BwZWRTbG90LnNsb3RJbmRleC52YWx1ZSgpLCAiIC0gZXhw
ZWN0aW5nICIsIHR5cGUpOworICAgICAgICAKKyAgICAgICAgQVNTRVJUX1VOVVNFRChwb3BwZWRT
bG90LCBwb3BwZWRTbG90LnR5cGUgPT0gdHlwZSk7CisgICAgICAgIEFTU0VSVChwb3BwZWRTbG90
LnNsb3RJbmRleCA9PSBuZXh0U2xvdEluZGV4KHR5cGUpKTsKKyAgICB9CiAKICAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJik7
Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkTG9jYWwoVHlwZSwgdWlu
dDMyX3QpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZExvY2FsKFR5
cGUsIHVpbnQzMl90LCB1aW50MzJfdCk7CiAgICAgRXhwcmVzc2lvblR5cGUgYWRkQ29uc3RhbnQo
VHlwZSwgaW50NjRfdCk7CisgICAgRXhwcmVzc2lvblR5cGUgYWRkQ29uc3RhbnQodjEyOF90KTsK
IAogICAgIC8vIFJlZmVyZW5jZXMKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBhZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpOwpAQCAtMjQyLDggKzMxMyw4IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRUYWJsZUNvcHkodW5zaWduZWQsIHVuc2lnbmVkLCBFeHByZXNzaW9u
VHlwZSBkc3RPZmZzZXQsIEV4cHJlc3Npb25UeXBlIHNyY09mZnNldCwgRXhwcmVzc2lvblR5cGUg
bGVuZ3RoKTsKIAogICAgIC8vIExvY2FscwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
LSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBzZXRMb2NhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBXYXNtOjpUeXBlLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBzZXRM
b2NhbCh1aW50MzJfdCBpbmRleCwgV2FzbTo6VHlwZSwgRXhwcmVzc2lvblR5cGUgdmFsdWUpOwog
CiAgICAgLy8gR2xvYmFscwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdl
dEdsb2JhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CkBAIC0yOTMs
NyArMzY0LDcgQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZENhdGNoQWxsVG9VbnJlYWNoYWJsZShDb250cm9sVHlwZSYpOwogICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZERlbGVnYXRlKENvbnRyb2xUeXBlJiwgQ29udHJvbFR5
cGUmKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGREZWxlZ2F0ZVRv
VW5yZWFjaGFibGUoQ29udHJvbFR5cGUmLCBDb250cm9sVHlwZSYpOwotICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBTdGFjayYpOworICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBTdGFj
ayYgYXJncyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0aHJv
dyh1bnNpZ25lZCwgQ29udHJvbFR5cGUmKTsKIAogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIGFkZFJldHVybihjb25zdCBDb250cm9sVHlwZSYsIFN0YWNrJiByZXR1cm5WYWx1
ZXMpOwpAQCAtMzA4LDYgKzM3OSwxMCBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0
IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJl
c3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxSZWYo
Y29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlz
dCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVW5y
ZWFjaGFibGUoKTsKKyAgICAKKyAgICAvLyBTaW1kCisgICAgdGVtcGxhdGU8RXh0U2ltZE9wVHlw
ZSwgc2l6ZV90IG51bUltbWVkaWF0ZXMsIHNpemVfdCBudW1Bcmd1bWVudHM+CisgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU2ltZE9wKHN0ZDo6YXJyYXk8dWludDhfdCwg
bnVtSW1tZWRpYXRlcz4gaW1tZWRpYXRlcywgc3RkOjphcnJheTxFeHByZXNzaW9uVHlwZSwgbnVt
QXJndW1lbnRzPiBhcmd1bWVudHMsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgdm9p
ZCBkaWRGaW5pc2hQYXJzaW5nTG9jYWxzKCk7CiAKQEAgLTMyMywxMyArMzk4LDEzIEBAIHByaXZh
dGU6CiAKICAgICBzdHJ1Y3QgTExJbnRDYWxsSW5mb3JtYXRpb24gewogICAgICAgICB1bnNpZ25l
ZCBzdGFja09mZnNldDsKLSAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0FyZ3VtZW50czsK
LSAgICAgICAgUmVzdWx0TGlzdCBhcmd1bWVudHM7CisgICAgICAgIHVuc2lnbmVkIHNpemVPZlN0
YWNrQXJndW1lbnRzOworICAgICAgICBWZWN0b3I8VHlwZWRFeHByZXNzaW9uLCAyPiBhcmd1bWVu
dHM7CiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzdWx0TGlzdCYpPiBjb21taXRS
ZXN1bHRzOwogICAgIH07CiAKICAgICBMTEludENhbGxJbmZvcm1hdGlvbiBjYWxsSW5mb3JtYXRp
b25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0dXJlJik7Ci0gICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rl
ciwgMj4gY2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVlKGNvbnN0IFNpZ25hdHVyZSYpOworICAgIFZl
Y3RvcjxUeXBlZEV4cHJlc3Npb24sIDI+IGNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZShjb25zdCBT
aWduYXR1cmUmKTsKICAgICB2b2lkIGxpbmtTd2l0Y2hUYXJnZXRzKExhYmVsJiwgdW5zaWduZWQg
bG9jYXRpb24pOwogCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlckZvcldhc21M
b2NhbCh1aW50MzJfdCBpbmRleCkKQEAgLTMzNywxMCArNDEyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgaWYgKGluZGV4IDwgbV9jb2RlQmxvY2stPm1fbnVtQXJndW1lbnRzKQogICAgICAgICAgICAg
cmV0dXJuIG1fbm9ybWFsaXplZEFyZ3VtZW50c1tpbmRleF07CiAKLSAgICAgICAgY29uc3QgYXV0
byYgY2FsbGluZ0NvbnZlbnRpb24gPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKTsKLSAgICAgICAg
Y29uc3QgdWludDMyX3QgZ3ByQ291bnQgPSBjYWxsaW5nQ29udmVudGlvbi5ncHJBcmdzLnNpemUo
KTsKLSAgICAgICAgY29uc3QgdWludDMyX3QgZnByQ291bnQgPSBjYWxsaW5nQ29udmVudGlvbi5m
cHJBcmdzLnNpemUoKTsKLSAgICAgICAgcmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGlu
ZGV4IC0gbV9jb2RlQmxvY2stPm1fbnVtQXJndW1lbnRzICsgZ3ByQ291bnQgKyBmcHJDb3VudCAr
IG51bWJlck9mTExJbnRDYWxsZWVTYXZlUmVnaXN0ZXJzKTsKKyAgICAgICAgcmV0dXJuIG1fbG9j
YWxzW2luZGV4IC0gbV9jb2RlQmxvY2stPm1fbnVtQXJndW1lbnRzXTsKICAgICB9CiAKICAgICBF
eHByZXNzaW9uVHlwZSBqc051bGxDb25zdGFudCgpCkBAIC0zNjcsOSArNDM5LDkgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZ2V0RHJvcEtlZXBDb3VudChjb25zdCBDb250cm9sVHlwZSYgdGFyZ2V0
LCB1bnNpZ25lZCYgc3RhcnRPZmZzZXQsIHVuc2lnbmVkJiBkcm9wLCB1bnNpZ25lZCYga2VlcCkK
ICAgICB7Ci0gICAgICAgIHN0YXJ0T2Zmc2V0ID0gdGFyZ2V0LnN0YWNrU2l6ZSgpICsgMTsKKyAg
ICAgICAgc3RhcnRPZmZzZXQgPSB0YXJnZXQuc3RhY2tDb3VudCgpICsgMTsKICAgICAgICAga2Vl
cCA9IHRhcmdldC5icmFuY2hUYXJnZXRBcml0eSgpOwotICAgICAgICBkcm9wID0gbV9zdGFja1Np
emUgLSB0YXJnZXQuc3RhY2tTaXplKCkgLSB0YXJnZXQuYnJhbmNoVGFyZ2V0QXJpdHkoKTsKKyAg
ICAgICAgZHJvcCA9IHN0YWNrQ291bnQoKSAtIHRhcmdldC5zdGFja0NvdW50KCkgLSB0YXJnZXQu
YnJhbmNoVGFyZ2V0QXJpdHkoKTsKICAgICB9CiAKICAgICB2b2lkIGRyb3BLZWVwKFN0YWNrJiB2
YWx1ZXMsIGNvbnN0IENvbnRyb2xUeXBlJiB0YXJnZXQsIGJvb2wgZHJvcFZhbHVlcykKQEAgLTM4
OSwzMCArNDYxLDY1IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChrZWVwKQogICAgICAgICAgICAg
V2FzbURyb3BLZWVwOjplbWl0KHRoaXMsIHN0YXJ0T2Zmc2V0LCBkcm9wLCBrZWVwKTsKICAgICB9
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdGFjaywgdHlwZW5hbWUgRnVuY3Rvcj4KKyAgICAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgd2Fsa0V4cHJlc3Npb25T
dGFjayhTdGFjayYgZXhwcmVzc2lvblN0YWNrLCB1bnNpZ25lZCBzdGFja1NpemUsIGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBleHByZXNz
aW9uU3RhY2suc2l6ZSgpOyBpID4gMDsgLS1pKSB7Ci0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgc2xvdCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKHN0YWNrU2l6ZSAtIGkpOwotICAgICAg
ICAgICAgZnVuY3RvcihleHByZXNzaW9uU3RhY2tbZXhwcmVzc2lvblN0YWNrLnNpemUoKSAtIGld
LCBzbG90KTsKKyAgICAgICAgdW5zaWduZWQgc2xvdEluZGV4ID0gbV9maXJzdFN0YWNrU2xvdElu
ZGV4OworICAgICAgICB1bnNpZ25lZCB3YXNtU2xvdEluZGV4ID0gMDsKKyAgICAgICAgCisgICAg
ICAgIHdoaWxlICh3YXNtU2xvdEluZGV4IDwgc3RhY2tTaXplKSB7CisgICAgICAgICAgICBhdXRv
JiBleHByZXNzaW9uID0gZXhwcmVzc2lvblN0YWNrW3dhc21TbG90SW5kZXhdOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbi50eXBlKCkuc2l6ZSgpID09IDE2KQorICAg
ICAgICAgICAgICAgICsrc2xvdEluZGV4OworICAgICAgICAgICAgCisgICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgc2xvdCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKHNsb3RJbmRleCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVChleHByZXNzaW9uLnZhbHVlKCkgPT0gc2xv
dCB8fCBleHByZXNzaW9uLnZhbHVlKCkuaXNDb25zdGFudCgpIHx8IGV4cHJlc3Npb24udmFsdWUo
KS5pc0FyZ3VtZW50KCkKKyAgICAgICAgICAgICAgICAgICB8fCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZXhwcmVzc2lvbi52YWx1ZSgpLnRvTG9jYWwoKSkgPCBtX2NvZGVCbG9jay0+bV9udW1WYXJz
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGV4cHJlc3Npb24udHlwZSgpLnNpemUo
KSA9PSAxNikgeworICAgICAgICAgICAgICAgIEFTU0VSVChuZXh0U2xvdEZvclVwcGVyQml0cyhz
bG90KSA9PSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzbG90SW5kZXggLSAxKSk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKG5leHRTbG90Rm9yVXBwZXJCaXRzKGV4cHJlc3Npb24udmFsdWUoKSkg
PT0gbmV4dFNsb3RGb3JVcHBlckJpdHMoc2xvdCkKKyAgICAgICAgICAgICAgICAgICAgICAgfHwg
bmV4dFNsb3RGb3JVcHBlckJpdHMoZXhwcmVzc2lvbi52YWx1ZSgpKS5pc0NvbnN0YW50KCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgfHwgbmV4dFNsb3RGb3JVcHBlckJpdHMoZXhwcmVzc2lvbi52
YWx1ZSgpKS5pc0FyZ3VtZW50KCkKKyAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG5leHRTbG90Rm9yVXBwZXJCaXRzKGV4cHJlc3Npb24udmFsdWUoKSkudG9M
b2NhbCgpKSA8IG1fY29kZUJsb2NrLT5tX251bVZhcnMpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAoJmV4cHJlc3Npb25TdGFjayA9PSAmbV9wYXJzZXItPmV4
cHJlc3Npb25TdGFjaygpKSB7CisgICAgICAgICAgICAgICAgYXV0byBzbG90RGF0YSA9IG1fZXhw
cmVzc2lvblN0YWNrU2xvdHNbd2FzbVNsb3RJbmRleF07CisgICAgICAgICAgICAgICAgQVNTRVJU
KGV4cHJlc3Npb24udHlwZSgpID09IHNsb3REYXRhLnR5cGUpOworICAgICAgICAgICAgICAgIEFT
U0VSVChzbG90RGF0YS5zbG90SW5kZXggPT0gc2xvdEluZGV4KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3RvcihleHByZXNzaW9uLCBzbG90KTsKKyAgICAg
ICAgICAgICsrc2xvdEluZGV4OworICAgICAgICAgICAgKyt3YXNtU2xvdEluZGV4OwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU3RhY2ssIHR5cGVuYW1lIEZ1bmN0
b3I+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIHdhbGtFeHByZXNz
aW9uU3RhY2soU3RhY2smIGV4cHJlc3Npb25TdGFjaywgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
ICAgICB7Ci0gICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2soZXhwcmVzc2lvblN0YWNrLCBtX3N0
YWNrU2l6ZSwgZnVuY3Rvcik7CisgICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2soZXhwcmVzc2lv
blN0YWNrLCBleHByZXNzaW9uU3RhY2suc2l6ZSgpLCBmdW5jdG9yKTsKKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIHdhbGtFeHByZXNzaW9uU3Rh
Y2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIHdhbGtFeHByZXNzaW9u
U3RhY2sobV9wYXJzZXItPmV4cHJlc3Npb25TdGFjaygpLCBmdW5jdG9yKTsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgd2Fsa0V4cHJlc3Npb25TdGFj
ayhDb250cm9sRW50cnkmIGVudHJ5LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKLSAg
ICAgICAgdW5zaWduZWQgc3RhY2tTaXplID0gZW50cnkuY29udHJvbERhdGEuc3RhY2tTaXplKCk7
CisgICAgICAgIHVuc2lnbmVkIHN0YWNrU2l6ZSA9IGVudHJ5LmNvbnRyb2xEYXRhLnN0YWNrQ291
bnQoKTsKKyAgICAgICAgQVNTRVJUKGVudHJ5LmVuY2xvc2VkRXhwcmVzc2lvblN0YWNrLnNpemUo
KSA9PSBzdGFja1NpemUpOwogICAgICAgICB3YWxrRXhwcmVzc2lvblN0YWNrKGVudHJ5LmVuY2xv
c2VkRXhwcmVzc2lvblN0YWNrLCBzdGFja1NpemUsIGZ1bmN0b3IpOwogICAgIH0KIAotICAgIHZv
aWQgY2hlY2tDb25zaXN0ZW5jeSgpCisgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KHVuc2lnbmVk
IHN0YWNrQ291bnQpCiAgICAgewogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIC8vIFRoZSBy
dWxlcyBmb3IgbG9jYWxzIGFuZCBjb25zdGFudHMgaW4gdGhlIHN0YWNrIGFyZToKQEAgLTQyNyw0
OCArNTM0LDU2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24g
PT0gc2xvdCB8fCBleHByZXNzaW9uLmlzQ29uc3RhbnQoKSk7CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfQotICAgICAgICB3YWxrRXhwcmVzc2lvblN0YWNrKG1fcGFyc2VyLT5leHByZXNzaW9u
U3RhY2soKSwgWyZdKFZpcnR1YWxSZWdpc3RlciBleHByZXNzaW9uLCBWaXJ0dWFsUmVnaXN0ZXIg
c2xvdCkgewotICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24gPT0gc2xvdCB8fCBleHByZXNz
aW9uLmlzQ29uc3RhbnQoKSB8fCBleHByZXNzaW9uLmlzQXJndW1lbnQoKSB8fCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZXhwcmVzc2lvbi50b0xvY2FsKCkpIDwgbV9jb2RlQmxvY2stPm1fbnVtVmFy
cyk7CisgICAgICAgIAorICAgICAgICAvLyBXZSBtaWdodCBiZSBpbiB0aGUgcHJvY2VzcyBvZiBh
ZGRpbmcgc3RhY2sgc2xvdHMgZnJvbSB0aGUgcGFyc2VyLgorICAgICAgICBBU1NFUlQoc3RhY2tD
b3VudCA8PSBtX3BhcnNlci0+ZXhwcmVzc2lvblN0YWNrKCkuc2l6ZSgpKTsKKyAgICAgICAgQVNT
RVJUKHN0YWNrQ291bnQgPD0gdGhpcy0+c3RhY2tDb3VudCgpKTsKKyAgICAgICAgQVNTRVJUKHRo
aXMtPnN0YWNrQ291bnQoKSA+PSBtX3BhcnNlci0+ZXhwcmVzc2lvblN0YWNrKCkuc2l6ZSgpKTsK
KyAgICAgICAgCisgICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2sobV9wYXJzZXItPmV4cHJlc3Np
b25TdGFjaygpLCBzdGFja0NvdW50LCBbJl0oY29uc3QgVHlwZWRFeHByZXNzaW9uJiBleHByZXNz
aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkgeworICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Np
b24udmFsdWUoKSA9PSBzbG90IHx8IGV4cHJlc3Npb24udmFsdWUoKS5pc0NvbnN0YW50KCkgfHwg
ZXhwcmVzc2lvbi52YWx1ZSgpLmlzQXJndW1lbnQoKQorICAgICAgICAgICAgICAgICAgIHx8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihleHByZXNzaW9uLnZhbHVlKCkudG9Mb2NhbCgpKSA8IG1fY29k
ZUJsb2NrLT5tX251bVZhcnMpOwogICAgICAgICB9KTsKKyNlbHNlCisgICAgICAgICh2b2lkKSBz
dGFja0NvdW50OwogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAgICAgfQorICAgIAorICAgIHZv
aWQgY2hlY2tDb25zaXN0ZW5jeSgpCisgICAgeworICAgICAgICBjaGVja0NvbnNpc3RlbmN5KG1f
cGFyc2VyLT5leHByZXNzaW9uU3RhY2soKS5zaXplKCkpOworICAgIH0KIAotICAgIHZvaWQgbWF0
ZXJpYWxpemVDb25zdGFudHNBbmRMb2NhbHMoU3RhY2smIGV4cHJlc3Npb25TdGFjaywgTm9Db25z
aXN0ZW5jeUNoZWNrVGFnKQorICAgIHZvaWQgbWF0ZXJpYWxpemVDb25zdGFudHNBbmRMb2NhbHMo
U3RhY2smIGV4cHJlc3Npb25TdGFjaywgYm9vbCBtYXRlcmlhbGl6ZUNvbnN0YW50cywgTm9Db25z
aXN0ZW5jeUNoZWNrVGFnKQogICAgIHsKLSAgICAgICAgd2Fsa0V4cHJlc3Npb25TdGFjayhleHBy
ZXNzaW9uU3RhY2ssIFsmXShhdXRvJiBleHByZXNzaW9uLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkg
ewotICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24udmFsdWUoKSA9PSBzbG90IHx8IGV4cHJl
c3Npb24udmFsdWUoKS5pc0NvbnN0YW50KCkgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQXJndW1l
bnQoKSB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZXhwcmVzc2lvbi52YWx1ZSgpLnRvTG9jYWwo
KSkgPCBtX2NvZGVCbG9jay0+bV9udW1WYXJzKTsKKyAgICAgICAgd2Fsa0V4cHJlc3Npb25TdGFj
ayhleHByZXNzaW9uU3RhY2ssIFsmXShUeXBlZEV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFZpcnR1
YWxSZWdpc3RlciBzbG90KSB7CisgICAgICAgICAgICBBU1NFUlQoZXhwcmVzc2lvbi52YWx1ZSgp
ID09IHNsb3QgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQ29uc3RhbnQoKSB8fCBleHByZXNzaW9u
LnZhbHVlKCkuaXNBcmd1bWVudCgpCisgICAgICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGV4cHJlc3Npb24udmFsdWUoKS50b0xvY2FsKCkpIDwgbV9jb2RlQmxvY2stPm1f
bnVtVmFycyk7CiAgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbi52YWx1ZSgpID09IHNsb3QpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgV2FzbU1vdjo6ZW1pdCh0aGlzLCBz
bG90LCBleHByZXNzaW9uKTsKKyAgICAgICAgICAgIGlmIChleHByZXNzaW9uLnZhbHVlKCkuaXND
b25zdGFudCgpICYmICFtYXRlcmlhbGl6ZUNvbnN0YW50cykKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB0eXBlZE1vdmUoc2xvdCwgZXhwcmVzc2lvbik7CiAgICAgICAgICAg
ICBleHByZXNzaW9uID0gVHlwZWRFeHByZXNzaW9uIHsgZXhwcmVzc2lvbi50eXBlKCksIHNsb3Qg
fTsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgdm9pZCBtYXRlcmlhbGl6ZUNvbnN0YW50c0Fu
ZExvY2FscyhTdGFjayYgZXhwcmVzc2lvblN0YWNrKQorICAgIHZvaWQgbWF0ZXJpYWxpemVDb25z
dGFudHNBbmRMb2NhbHMoU3RhY2smIGV4cHJlc3Npb25TdGFjaywgYm9vbCBtYXRlcmlhbGl6ZUNv
bnN0YXRhbnRzID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIGlmIChleHByZXNzaW9uU3RhY2suaXNF
bXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3ko
KTsKLSAgICAgICAgbWF0ZXJpYWxpemVDb25zdGFudHNBbmRMb2NhbHMoZXhwcmVzc2lvblN0YWNr
LCBOb0NvbnNpc3RlbmN5Q2hlY2spOworICAgICAgICBtYXRlcmlhbGl6ZUNvbnN0YW50c0FuZExv
Y2FscyhleHByZXNzaW9uU3RhY2ssIG1hdGVyaWFsaXplQ29uc3RhdGFudHMsIE5vQ29uc2lzdGVu
Y3lDaGVjayk7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAKICAgICB2b2lk
IHNwbGl0U3RhY2soQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTdGFjayYgZW5jbG9zaW5nU3Rh
Y2ssIFN0YWNrJiBuZXdTdGFjaykKICAgICB7CiAgICAgICAgIEpTQzo6V2FzbTo6c3BsaXRTdGFj
ayhzaWduYXR1cmUsIGVuY2xvc2luZ1N0YWNrLCBuZXdTdGFjayk7Ci0KLSAgICAgICAgbV9zdGFj
a1NpemUgLT0gbmV3U3RhY2suc2l6ZSgpOworICAgICAgICBjaGVja0NvbnNpc3RlbmN5KGVuY2xv
c2luZ1N0YWNrLnNpemUoKSAtIG5ld1N0YWNrLnNpemUoKSk7CisgICAgICAgIG1hdGVyaWFsaXpl
Q29uc3RhbnRzQW5kTG9jYWxzKGVuY2xvc2luZ1N0YWNrLCAvKiBtYXRlcmlhbGl6ZUNvbnN0YW50
cyA9ICovIGZhbHNlKTsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwotICAgICAgICB3YWxr
RXhwcmVzc2lvblN0YWNrKGVuY2xvc2luZ1N0YWNrLCBbJl0oVHlwZWRFeHByZXNzaW9uJiBleHBy
ZXNzaW9uLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkgewotICAgICAgICAgICAgQVNTRVJUKGV4cHJl
c3Npb24udmFsdWUoKSA9PSBzbG90IHx8IGV4cHJlc3Npb24udmFsdWUoKS5pc0NvbnN0YW50KCkg
fHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQXJndW1lbnQoKSB8fCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZXhwcmVzc2lvbi52YWx1ZSgpLnRvTG9jYWwoKSkgPCBtX2NvZGVCbG9jay0+bV9udW1WYXJz
KTsKLSAgICAgICAgICAgIGlmIChleHByZXNzaW9uLnZhbHVlKCkgPT0gc2xvdCB8fCBleHByZXNz
aW9uLnZhbHVlKCkuaXNDb25zdGFudCgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIFdhc21Nb3Y6OmVtaXQodGhpcywgc2xvdCwgZXhwcmVzc2lvbik7Ci0gICAgICAgICAg
ICBleHByZXNzaW9uID0gVHlwZWRFeHByZXNzaW9uIHsgZXhwcmVzc2lvbi50eXBlKCksIHNsb3Qg
fTsKLSAgICAgICAgfSk7Ci0gICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKLSAgICAgICAgbV9z
dGFja1NpemUgKz0gbmV3U3RhY2suc2l6ZSgpOwogICAgIH0KIAogICAgIHZvaWQgZmluYWxpemVQ
cmV2aW91c0Jsb2NrRm9yQ2F0Y2goQ29udHJvbFR5cGUmLCBTdGFjayYpOwpAQCAtNDkyLDEwICs2
MDcsMTIgQEAgcHJpdmF0ZToKICAgICBFeHByZXNzaW9uVHlwZSBtX2pzTnVsbENvbnN0YW50Owog
ICAgIEV4cHJlc3Npb25UeXBlIG1femVyb0NvbnN0YW50OwogICAgIFJlc3VsdExpc3QgbV91bml0
aWFsaXplZExvY2FsczsKKyAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyLCAyPiBtX2xvY2FsczsK
ICAgICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBWaXJ0dWFsUmVnaXN0ZXIsIFdURjo6SW50SGFz
aDxFbmNvZGVkSlNWYWx1ZT4sIENvbnN0YW50TWFwSGFzaFRyYWl0cz4gbV9jb25zdGFudE1hcDsK
LSAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyLCAyPiBtX3Jlc3VsdHM7Ci0gICAgQ2hlY2tlZDx1
bnNpZ25lZD4gbV9zdGFja1NpemUgeyAwIH07Ci0gICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV9tYXhT
dGFja1NpemUgeyAwIH07CisgICAgVmVjdG9yPFR5cGVkRXhwcmVzc2lvbiwgMj4gbV9yZXN1bHRz
OworICAgIFdhc21FeHByZXNzaW9uU2xvdFN0YWNrIG1fZXhwcmVzc2lvblN0YWNrU2xvdHM7Cisg
ICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV9tYXhTdGFja1Nsb3RTaXplIHsgMCB9OworICAgIHVuc2ln
bmVkIG1fZmlyc3RTdGFja1Nsb3RJbmRleCA9IDA7CiAgICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV90
cnlEZXB0aCB7IDAgfTsKICAgICBib29sIG1fdXNlc0V4Y2VwdGlvbnMgeyBmYWxzZSB9OwogfTsK
QEAgLTUzNSwxOSArNjUyLDE2IEBAIExMSW50R2VuZXJhdG9yOjpMTEludEdlbmVyYXRvcihNb2R1
bGVJbmZvcm1hdGlvbiYgaW5mbywgdW5zaWduZWQgZnVuY3Rpb25JbmRleCwKICAgICAgICAgKnRo
cmVhZFNwZWNpZmljID0gQnVmZmVyKCk7CiAgICAgICAgIG1fd3JpdGVyLnNldEluc3RydWN0aW9u
QnVmZmVyKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgfQotCi0gICAgbV9jb2RlQmxvY2stPm1fbnVt
VmFycyA9IG51bWJlck9mTExJbnRDYWxsZWVTYXZlUmVnaXN0ZXJzOwotICAgIG1fc3RhY2tTaXpl
ID0gbnVtYmVyT2ZMTEludENhbGxlZVNhdmVSZWdpc3RlcnM7Ci0gICAgbV9tYXhTdGFja1NpemUg
PSBudW1iZXJPZkxMSW50Q2FsbGVlU2F2ZVJlZ2lzdGVyczsKLQorICAgIG1fY29kZUJsb2NrLT5t
X251bVZhcnMgPSAwOwogICAgIFdhc21FbnRlcjo6ZW1pdCh0aGlzKTsKIH0KIAogc3RkOjp1bmlx
dWVfcHRyPEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yPiBMTEludEdlbmVyYXRvcjo6ZmluYWxp
emUoKQogeworICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Nv
ZGVCbG9jayk7CiAKLSAgICBzaXplX3QgbnVtQ2FsbGVlTG9jYWxzID0gV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG1fbWF4U3RhY2tTaXplKTsKKyAg
ICBzaXplX3QgbnVtQ2FsbGVlTG9jYWxzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNr
QWxpZ25tZW50UmVnaXN0ZXJzKCksIG1fbWF4U3RhY2tTbG90U2l6ZSArIG51bWJlck9mTExJbnRD
YWxsZWVTYXZlUmVnaXN0ZXJzKTsKICAgICBtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMg
PSBudW1DYWxsZWVMb2NhbHM7CiAgICAgUkVMRUFTRV9BU1NFUlQobnVtQ2FsbGVlTG9jYWxzID09
IG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fscyk7CiAKQEAgLTU4OSwxMyArNzAzLDExIEBA
IGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWdu
YXR1cmUmIHNpZ25hdHVyZSkgLT4gTExJCiAgICAgLy8gV2UgbmVlZCB0byBhbGxvY2F0ZSBhdCBs
ZWFzdCBzcGFjZSBmb3IgYWxsIEdQUnMgYW5kIEZQUnMuCiAgICAgLy8gUmV0dXJuIHZhbHVlcyB1
c2UgdGhlIHNhbWUgYWxsb2NhdGlvbiBsYXlvdXQuCiAKLSAgICBjb25zdCBhdXRvIGluaXRpYWxT
dGFja1NpemUgPSBtX3N0YWNrU2l6ZTsKLQogICAgIGNvbnN0IGF1dG8mIGNhbGxpbmdDb252ZW50
aW9uID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCk7CiAgICAgY29uc3QgdWludDMyX3QgZ3ByQ291
bnQgPSBjYWxsaW5nQ29udmVudGlvbi5ncHJBcmdzLnNpemUoKTsKICAgICBjb25zdCB1aW50MzJf
dCBmcHJDb3VudCA9IGNhbGxpbmdDb252ZW50aW9uLmZwckFyZ3Muc2l6ZSgpOwogCi0gICAgdWlu
dDMyX3Qgc3RhY2tDb3VudCA9IDA7CisgICAgdWludDMyX3QgbWF4U3RhY2tJbmRleCA9IDA7CiAg
ICAgdWludDMyX3QgZ3BySW5kZXggPSAwOwogICAgIHVpbnQzMl90IGZwckluZGV4ID0gMDsKICAg
ICB1aW50MzJfdCBzdGFja0luZGV4ID0gMDsKQEAgLTYxMCwyMyArNzIyLDI1IEBAIGF1dG8gTExJ
bnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWduYXR1cmUmIHNp
Z25hdHVyZSkgLT4gTExJCiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAg
IGlmIChncHJJbmRleCA8IGdwckNvdW50KQogICAgICAgICAgICAgICAgICsrZ3BySW5kZXg7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChzdGFja0luZGV4KysgPj0gc3RhY2tDb3VudCkKLSAgICAgICAg
ICAgICAgICArK3N0YWNrQ291bnQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
KytzdGFja0luZGV4OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkYzMjoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgorICAgICAgICBjYXNlIFR5cGVLaW5k
OjpWMTI4OgogICAgICAgICAgICAgaWYgKGZwckluZGV4IDwgZnByQ291bnQpCiAgICAgICAgICAg
ICAgICAgKytmcHJJbmRleDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHN0YWNrSW5kZXgrKyA+PSBz
dGFja0NvdW50KQotICAgICAgICAgICAgICAgICsrc3RhY2tDb3VudDsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBzdGFja0luZGV4ICs9IHR5cGUuc2l6ZSgpIC8gODsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNl
IFR5cGVLaW5kOjpGdW5jOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbWF4U3RhY2tJbmRleCA9IHN0ZDo6bWF4
KG1heFN0YWNrSW5kZXgsIHN0YWNrSW5kZXgpOwogICAgIH07CiAKLQogICAgIGZvciAodWludDMy
X3QgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyBpKyspCiAgICAgICAgIGFs
bG9jYXRlU3RhY2tSZWdpc3RlcihzaWduYXR1cmUuYXJndW1lbnQoaSkpOwogCkBAIC02MzUsMzAg
Kzc0OSw0MCBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIo
Y29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IExMSQogICAgIHN0YWNrSW5kZXggPSAwOwog
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUucmV0dXJuQ291bnQoKTsgaSsr
KQogICAgICAgICBhbGxvY2F0ZVN0YWNrUmVnaXN0ZXIoc2lnbmF0dXJlLnJldHVyblR5cGUoaSkp
OworICAgIAorICAgIGNvbnN0IHVpbnQzMl90IHN0YWNrQXJnc1NpemUgPSBtYXhTdGFja0luZGV4
OwogCiAgICAgLy8gRklYTUU6IHdlIGFyZSBhbGxvY2F0aW5nIHRoZSBleHRyYSBzcGFjZSBmb3Ig
dGhlIGFyZ3VtZW50L3JldHVybiBjb3VudCBpbiBvcmRlciB0byBhdm9pZCBpbnRlcmZlcmVuY2Us
IGJ1dCB3ZSBjb3VsZCBkbyBiZXR0ZXIKICAgICAvLyBOT1RFOiBXZSBpbmNyZWFzZSBhcmcgY291
bnQgYnkgMSBmb3IgdGhlIGNhc2Ugb2YgaW5kaXJlY3QgY2FsbHMKLSAgICBtX3N0YWNrU2l6ZSAr
PSBzdGQ6Om1heChzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMSwgc2lnbmF0dXJlLnJldHVy
bkNvdW50KCkpICsgZ3ByQ291bnQgKyBmcHJDb3VudCArIHN0YWNrQ291bnQgKyBDYWxsRnJhbWU6
OmhlYWRlclNpemVJblJlZ2lzdGVycyArIDE7Ci0gICAgaWYgKG1fc3RhY2tTaXplLnZhbHVlKCkg
JSBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpKQotICAgICAgICArK21fc3RhY2tTaXplOwotICAg
IGlmIChtX21heFN0YWNrU2l6ZSA8IG1fc3RhY2tTaXplKQotICAgICAgICBtX21heFN0YWNrU2l6
ZSA9IG1fc3RhY2tTaXplOworICAgIENoZWNrZWQ8dW5zaWduZWQ+IG5ld1N0YWNrU2l6ZSA9IHN0
YWNrU2xvdFNpemUoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICsgMQorICAg
ICAgICArIChCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkdQKSkg
LyA4ICogZ3ByQ291bnQpCisgICAgICAgICsgKEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2
YXRpdmVXaWR0aChCMzo6RlApKSAvIDggKiBmcHJDb3VudCkKKyAgICAgICAgKyBzdGFja0FyZ3NT
aXplOworICAgIGlmIChuZXdTdGFja1NpemUgJSBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpKQor
ICAgICAgICArK25ld1N0YWNrU2l6ZTsKKyAgICBpZiAobV9tYXhTdGFja1Nsb3RTaXplIDwgbmV3
U3RhY2tTaXplKQorICAgICAgICBtX21heFN0YWNrU2xvdFNpemUgPSBuZXdTdGFja1NpemU7CiAK
IAotICAgIFJlc3VsdExpc3QgYXJndW1lbnRzKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkpOwot
ICAgIFJlc3VsdExpc3QgdGVtcG9yYXJ5UmVzdWx0cyhzaWduYXR1cmUucmV0dXJuQ291bnQoKSk7
CisgICAgVmVjdG9yPFR5cGVkRXhwcmVzc2lvbiwgMj4gYXJndW1lbnRzKHNpZ25hdHVyZS5hcmd1
bWVudENvdW50KCkpOworICAgIFZlY3RvcjxUeXBlZEV4cHJlc3Npb24sIDI+IHRlbXBvcmFyeVJl
c3VsdHMoc2lnbmF0dXJlLnJldHVybkNvdW50KCkpOwogCi0gICAgY29uc3QgdW5zaWduZWQgc3Rh
Y2tPZmZzZXQgPSBtX3N0YWNrU2l6ZTsKKyAgICBjb25zdCB1bnNpZ25lZCBzdGFja09mZnNldCA9
IG5ld1N0YWNrU2l6ZTsKICAgICBjb25zdCB1bnNpZ25lZCBiYXNlID0gc3RhY2tPZmZzZXQgLSBD
YWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAtIDE7CiAKLSAgICBjb25zdCB1aW50MzJf
dCBncHJMaW1pdCA9IGJhc2UgLSBzdGFja0NvdW50IC0gZ3ByQ291bnQ7Ci0gICAgY29uc3QgdWlu
dDMyX3QgZnByTGltaXQgPSBncHJMaW1pdCAtIGZwckNvdW50OwotCisgICAgY29uc3QgdWludDMy
X3QgZ3ByTGltaXQgPSBiYXNlIC0gc3RhY2tBcmdzU2l6ZSAtIGdwckNvdW50OworICAgIGNvbnN0
IHVpbnQzMl90IGZwckxpbWl0ID0gZ3ByTGltaXQgLSBmcHJDb3VudCAqIDI7CisgICAgCiAgICAg
c3RhY2tJbmRleCA9IGJhc2U7Ci0gICAgZ3BySW5kZXggPSBiYXNlIC0gc3RhY2tDb3VudDsKKyAg
ICBncHJJbmRleCA9IGJhc2UgLSBzdGFja0FyZ3NTaXplOwogICAgIGZwckluZGV4ID0gZ3BySW5k
ZXggLSBncHJDb3VudDsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLmFy
Z3VtZW50Q291bnQoKTsgaSsrKSB7Ci0gICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLmFyZ3VtZW50
KGkpLmtpbmQpIHsKKyAgICAKKyAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVybmFs
Ojp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAiQ2FsbCBpbmZv
OiBhbGxvY2F0aW5nIHN0YWNrIGZyYW1lIGZvciBhcmd1bWVudHM6IHN0YWNrT2Zmc2V0OiAiLCBz
dGFja09mZnNldCwgIiBiYXNlOiAiLCBiYXNlLCAiIGdwcnM6IFsiLCBncHJJbmRleCwgIiwgIiwg
Z3ByTGltaXQsICIpLCBmcHJzOiBbIiwgZnBySW5kZXgsICIsICIsIGZwckxpbWl0LCAiKSwgY3Vy
cmVudCBzdGFjayBzbG90IHNpemU6ICIsIHN0YWNrU2xvdFNpemUoKSk7CisgICAgCisgICAgYXV0
byBhbGxvY2F0ZUNhbGxlZUNvcHlSZWdpc3RlciA9IFsmXShUeXBlIHR5cGUpIHsKKyAgICAgICAg
dWludDMyX3QgcmVzdWx0ID0gMDsKKyAgICAgICAgc3dpdGNoICh0eXBlLmtpbmQpIHsKICAgICAg
ICAgY2FzZSBUeXBlS2luZDo6STMyOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6CiAgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKQEAgLTY2Niw2NyArNzkwLDU3IEBAIGF1dG8g
TExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWduYXR1cmUm
IHNpZ25hdHVyZSkgLT4gTExJCiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CiAgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAgIGlmIChncHJJbmRleCA+IGdwckxp
bWl0KQotICAgICAgICAgICAgICAgIGFyZ3VtZW50c1tpXSA9IHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKC0tZ3BySW5kZXgpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IC0tZ3BySW5kZXg7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoLS1zdGFja0luZGV4KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAt
LXN0YWNrSW5kZXg7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6
RjMyOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6Ci0gICAgICAgICAgICBpZiAoZnBySW5k
ZXggPiBmcHJMaW1pdCkKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNbaV0gPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbCgtLWZwckluZGV4KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBhcmd1bWVudHNbaV0gPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgtLXN0YWNrSW5kZXgp
OworICAgICAgICBjYXNlIFR5cGVLaW5kOjpWMTI4OgorICAgICAgICAgICAgaWYgKGZwckluZGV4
ID49IGZwckxpbWl0ICsgdHlwZS5zaXplKCkgLyA4KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0
ID0gZnBySW5kZXggLSB0eXBlLnNpemUoKSAvIDggKyAxOworICAgICAgICAgICAgICAgIGZwcklu
ZGV4IC09IHR5cGUuc2l6ZSgpIC8gODsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gc3RhY2tJbmRleCAtIHR5cGUuc2l6ZSgpIC8gOCArIDE7CisgICAgICAg
ICAgICAgICAgc3RhY2tJbmRleCAtPSB0eXBlLnNpemUoKSAvIDg7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAg
Y2FzZSBUeXBlS2luZDo6RnVuYzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIH0KLSAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfTsK
KworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgp
OyBpKyspCisgICAgICAgIGFyZ3VtZW50c1tpXSA9IHsgc2lnbmF0dXJlLmFyZ3VtZW50KGkpLCB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChhbGxvY2F0ZUNhbGxlZUNvcHlSZWdpc3RlcihzaWduYXR1
cmUuYXJndW1lbnQoaSkpKSB9OwogCiAgICAgc3RhY2tJbmRleCA9IGJhc2U7Ci0gICAgZ3BySW5k
ZXggPSBiYXNlIC0gc3RhY2tDb3VudDsKKyAgICBncHJJbmRleCA9IGJhc2UgLSBzdGFja0FyZ3NT
aXplOwogICAgIGZwckluZGV4ID0gZ3BySW5kZXggLSBncHJDb3VudDsKLSAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNvdW50KCk7IGkrKykgewotICAgICAgICBz
d2l0Y2ggKHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLmtpbmQpIHsKLSAgICAgICAgY2FzZSBUeXBl
S2luZDo6STMyOgotICAgICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6Ci0gICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OkV4dGVybnJlZjoKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoKLSAgICAg
ICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmOgot
ICAgICAgICAgICAgaWYgKGdwckluZGV4ID4gZ3ByTGltaXQpCi0gICAgICAgICAgICAgICAgdGVt
cG9yYXJ5UmVzdWx0c1tpXSA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKC0tZ3BySW5kZXgpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRlbXBvcmFyeVJlc3VsdHNbaV0gPSB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgtLXN0YWNrSW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0
OgotICAgICAgICAgICAgaWYgKGZwckluZGV4ID4gZnByTGltaXQpCi0gICAgICAgICAgICAgICAg
dGVtcG9yYXJ5UmVzdWx0c1tpXSA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKC0tZnBySW5kZXgp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRlbXBvcmFyeVJlc3VsdHNbaV0g
PSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgtLXN0YWNrSW5kZXgpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkZ1bmM6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgbV9zdGFja1NpemUgPSBpbml0aWFsU3RhY2tTaXplOworICAgIAor
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUucmV0dXJuQ291bnQoKTsgaSsr
KQorICAgICAgICB0ZW1wb3JhcnlSZXN1bHRzW2ldID0geyBzaWduYXR1cmUucmV0dXJuVHlwZShp
KSwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoYWxsb2NhdGVDYWxsZWVDb3B5UmVnaXN0ZXIoc2ln
bmF0dXJlLnJldHVyblR5cGUoaSkpKSB9OworICAgIAorICAgIGRhdGFMb2dMbklmKExMSW50R2Vu
ZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJbIiwgbV9mdW5jdGlvbkluZGV4LCAiXSIsCisgICAg
ICAgICJDYWxsIGluZm86IGFyZ3M6ICIsIGxpc3REdW1wKGFyZ3VtZW50cyksICIgdGVtcG9yYXJ5
UmVzdWx0czogIiwgbGlzdER1bXAodGVtcG9yYXJ5UmVzdWx0cykpOwogCiAgICAgYXV0byBjb21t
aXRSZXN1bHRzID0gW3RoaXMsIHRlbXBvcmFyeVJlc3VsdHMgPSBXVEZNb3ZlKHRlbXBvcmFyeVJl
c3VsdHMpXShSZXN1bHRMaXN0JiByZXN1bHRzKSB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3ko
KTsKICAgICAgICAgZm9yIChhdXRvIHRlbXBvcmFyeVJlc3VsdCA6IHRlbXBvcmFyeVJlc3VsdHMp
IHsKLSAgICAgICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdCA9IHB1c2goTm9Db25zaXN0ZW5j
eUNoZWNrKTsKLSAgICAgICAgICAgIFdhc21Nb3Y6OmVtaXQodGhpcywgcmVzdWx0LCB0ZW1wb3Jh
cnlSZXN1bHQpOworICAgICAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0ID0gcHVzaCh0ZW1w
b3JhcnlSZXN1bHQudHlwZSgpLCBOb0NvbnNpc3RlbmN5Q2hlY2spOworICAgICAgICAgICAgdHlw
ZWRNb3ZlKHJlc3VsdCwgdGVtcG9yYXJ5UmVzdWx0KTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKHJlc3VsdCk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRhdGFMb2dMbklmKExM
SW50R2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJbIiwgbV9mdW5jdGlvbkluZGV4LCAiXSIs
CisgICAgICAgICAgICAiQ2FsbCBpbmZvIHJlc3VsdHMgKGNvbW1pdGVkKTogIiwgbGlzdER1bXAo
cmVzdWx0cykpOwogICAgIH07CiAKLSAgICByZXR1cm4gTExJbnRDYWxsSW5mb3JtYXRpb24geyBz
dGFja09mZnNldCwgc3RhY2tDb3VudCwgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGNvbW1p
dFJlc3VsdHMpIH07CisgICAgcmV0dXJuIExMSW50Q2FsbEluZm9ybWF0aW9uIHsgc3RhY2tPZmZz
ZXQsIHN0YWNrQXJnc1NpemUsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShjb21taXRSZXN1
bHRzKSB9OwogfQogCi1hdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxs
ZWUoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXIs
IDI+CithdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUoY29uc3Qg
U2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IFZlY3RvcjxUeXBlZEV4cHJlc3Npb24sIDI+CiB7CiAg
ICAgaWYgKG1fcmVzdWx0cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBtX3Jlc3VsdHM7CkBAIC03
NDEsNyArODU1LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2Fs
bGVlKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBWZWMKICAgICB1aW50MzJfdCBmcHJJ
bmRleCA9IGdwckNvdW50OwogICAgIHVpbnQzMl90IHN0YWNrSW5kZXggPSAxOwogICAgIGNvbnN0
IHVpbnQzMl90IG1heEdQUkluZGV4ID0gZ3ByQ291bnQ7Ci0gICAgY29uc3QgdWludDMyX3QgbWF4
RlBSSW5kZXggPSBtYXhHUFJJbmRleCArIGZwckNvdW50OworICAgIGNvbnN0IHVpbnQzMl90IG1h
eEZQUkluZGV4ID0gbWF4R1BSSW5kZXggKyBmcHJDb3VudCAqIDI7CiAKICAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNvdW50KCk7IGkrKykgewogICAgICAgICBz
d2l0Y2ggKHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLmtpbmQpIHsKQEAgLTc1MiwyMiArODY2LDI5
IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZShjb25zdCBT
aWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gVmVjCiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51
bGw6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAgIGlmIChncHJJbmRl
eCA8IG1heEdQUkluZGV4KQotICAgICAgICAgICAgICAgIG1fcmVzdWx0cy5hcHBlbmQodmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwobnVtYmVyT2ZMTEludENhbGxlZVNhdmVSZWdpc3RlcnMgKyBncHJJ
bmRleCsrKSk7CisgICAgICAgICAgICAgICAgbV9yZXN1bHRzLmFwcGVuZCh7IHNpZ25hdHVyZS5y
ZXR1cm5UeXBlKGkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChudW1iZXJPZkxMSW50Q2FsbGVl
U2F2ZVJlZ2lzdGVycyArIGdwckluZGV4KyspIH0pOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIG1fcmVzdWx0cy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNs
dWRpbmdUaGlzKHN0YWNrSW5kZXgrKykpOworICAgICAgICAgICAgICAgIG1fcmVzdWx0cy5hcHBl
bmQoeyBzaWduYXR1cmUucmV0dXJuVHlwZShpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJ
bmNsdWRpbmdUaGlzKHN0YWNrSW5kZXgrKykgfSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBUeXBlS2luZDo6RjMyOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6Ci0gICAg
ICAgICAgICBpZiAoZnBySW5kZXggPCBtYXhGUFJJbmRleCkKLSAgICAgICAgICAgICAgICBtX3Jl
c3VsdHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG51bWJlck9mTExJbnRDYWxsZWVT
YXZlUmVnaXN0ZXJzICsgZnBySW5kZXgrKykpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIG1fcmVzdWx0cy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRp
bmdUaGlzKHN0YWNrSW5kZXgrKykpOworICAgICAgICBjYXNlIFR5cGVLaW5kOjpWMTI4OgorICAg
ICAgICAgICAgaWYgKGZwckluZGV4ICsgc2lnbmF0dXJlLnJldHVyblR5cGUoaSkuc2l6ZSgpIC8g
OCA8PSBtYXhGUFJJbmRleCkgeworICAgICAgICAgICAgICAgIG1fcmVzdWx0cy5hcHBlbmQoeyBz
aWduYXR1cmUucmV0dXJuVHlwZShpKSwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobnVtYmVyT2ZM
TEludENhbGxlZVNhdmVSZWdpc3RlcnMgKyBmcHJJbmRleCArIHNpZ25hdHVyZS5yZXR1cm5UeXBl
KGkpLnNpemUoKSAvIDggLSAxKSB9KTsKKyAgICAgICAgICAgICAgICBmcHJJbmRleCArPSBzaWdu
YXR1cmUucmV0dXJuVHlwZShpKS5zaXplKCkgLyA4OworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBtX3Jlc3VsdHMuYXBwZW5kKHsgc2lnbmF0dXJlLnJldHVyblR5cGUoaSks
IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGFja0luZGV4KSB9KTsK
KyAgICAgICAgICAgICAgICBzdGFja0luZGV4ICs9IHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLnNp
emUoKSAvIDg7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CisgICAg
CisgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlsiLCBt
X2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAgICAgIkNhbGxlZSBpbmZvOiByZXN1bHRzOiAiLCBs
aXN0RHVtcChtX3Jlc3VsdHMpKTsKIAogICAgIHJldHVybiBtX3Jlc3VsdHM7CiB9CkBAIC03ODcs
MTggKzkwOCwzMiBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRBcmd1bWVudHMoY29uc3QgU2ln
bmF0dXJlJiBzaWduYXR1cmUpIC0+IFBhcnRpYWxSZXN1bHQKICAgICB1aW50MzJfdCBncHJJbmRl
eCA9IDA7CiAgICAgdWludDMyX3QgZnBySW5kZXggPSBtYXhHUFJJbmRleDsKICAgICB1aW50MzJf
dCBzdGFja0luZGV4ID0gMTsKKyAgICAKKyAgICBBU1NFUlQoc3RhY2tDb3VudCgpID09IDApOwor
ICAgIEFTU0VSVChtX2ZpcnN0U3RhY2tTbG90SW5kZXggPT0gMCk7CisgICAgbV9maXJzdFN0YWNr
U2xvdEluZGV4ICs9IG51bWJlck9mTExJbnRDYWxsZWVTYXZlUmVnaXN0ZXJzOwogCiAgICAgVmVj
dG9yPFZpcnR1YWxSZWdpc3Rlcj4gcmVnaXN0ZXJBcmd1bWVudHMoZ3ByQ291bnQgKyBmcHJDb3Vu
dCk7Ci0gICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGdwckNvdW50ICsgZnByQ291bnQ7IGkr
KykKLSAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNbaV0gPSBwdXNoKE5vQ29uc2lzdGVuY3lDaGVj
ayk7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGdwckNvdW50OyBpKyspCisgICAgICAg
IHJlZ2lzdGVyQXJndW1lbnRzW2ldID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9maXJzdFN0
YWNrU2xvdEluZGV4KyspOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBmcHJDb3VudDsg
aSsrKSB7CisgICAgICAgIHJlZ2lzdGVyQXJndW1lbnRzW2dwckNvdW50ICsgaV0gPSB2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChtX2ZpcnN0U3RhY2tTbG90SW5kZXggKyAxKTsKKyAgICAgICAgQVNT
RVJUKG5leHRTbG90Rm9yVXBwZXJCaXRzKHJlZ2lzdGVyQXJndW1lbnRzW2dwckNvdW50ICsgaV0p
ID09IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fZmlyc3RTdGFja1Nsb3RJbmRleCkpOworICAg
ICAgICBtX2ZpcnN0U3RhY2tTbG90SW5kZXggKz0gMjsKKyAgICB9CisgICAgCisgICAgZGF0YUxv
Z0xuSWYoTExJbnRHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlsiLCBtX2Z1bmN0aW9uSW5k
ZXgsICJdIiwKKyAgICAgICAgIlJlZ2lzdGVyIGFyZ3VtZW50cyBhbGxvY2F0ZWQgYXM6ICIsIGxp
c3REdW1wKHJlZ2lzdGVyQXJndW1lbnRzKSwgIiA6IHRoZXJlIGFyZSAiLCBncHJDb3VudCwgIiBn
cHJzIGFuZCAiLCBmcHJDb3VudCwgIiAxMjgtYml0IGZwcnMiKTsKIAotICAgIGNvbnN0IGF1dG8g
YWRkQXJndW1lbnQgPSBbJl0odWludDMyX3QgaW5kZXgsIHVpbnQzMl90JiBjb3VudCwgdWludDMy
X3QgbWF4KSB7Ci0gICAgICAgIGlmIChjb3VudCA8IG1heCkKKyAgICBjb25zdCBhdXRvIGFkZEFy
Z3VtZW50ID0gWyZdKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBzaXplLCB1aW50MzJfdCYgY291
bnQsIHVpbnQzMl90IG1heCkgeworICAgICAgICBpZiAoY291bnQgPCBtYXgpIHsKICAgICAgICAg
ICAgIG1fbm9ybWFsaXplZEFyZ3VtZW50c1tpbmRleF0gPSByZWdpc3RlckFyZ3VtZW50c1tjb3Vu
dCsrXTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9ub3JtYWxpemVkQXJndW1lbnRzW2lu
ZGV4XSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGFja0luZGV4
KyspOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9ub3JtYWxpemVkQXJndW1lbnRz
W2luZGV4XSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGFja0lu
ZGV4KTsKKyAgICAgICAgICAgIHN0YWNrSW5kZXggKz0gc2l6ZTsKKyAgICAgICAgfQogICAgIH07
Ci0KKyAgICAKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLmFyZ3VtZW50
Q291bnQoKTsgaSsrKSB7CiAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLmFyZ3VtZW50KGkpLmtp
bmQpIHsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6STMyOgpAQCAtODA3LDExICs5NDIsMTIgQEAg
YXV0byBMTEludEdlbmVyYXRvcjo6YWRkQXJndW1lbnRzKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0
dXJlKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CiAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJl
ZjoKLSAgICAgICAgICAgIGFkZEFyZ3VtZW50KGksIGdwckluZGV4LCBtYXhHUFJJbmRleCk7Cisg
ICAgICAgICAgICBhZGRBcmd1bWVudChpLCAxLCBncHJJbmRleCwgbWF4R1BSSW5kZXgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RjY0OgotICAgICAgICAgICAgYWRkQXJndW1lbnQoaSwgZnBySW5kZXgsIG1h
eEZQUkluZGV4KTsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VjEyODoKKyAgICAgICAgICAgIGFk
ZEFyZ3VtZW50KGksIHNpZ25hdHVyZS5hcmd1bWVudChpKS5zaXplKCkgLyA4LCBmcHJJbmRleCwg
bWF4RlBSSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CkBAIC04MTksMjYgKzk1NSw1MyBA
QCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fY29kZUJs
b2NrLT5tX251bVZhcnMgKz0gZ3ByQ291bnQgKyBmcHJDb3VudDsKKyAgICBtX2NvZGVCbG9jay0+
bV9udW1WYXJzICs9IGdwckNvdW50ICsgZnByQ291bnQgKiAyICsgbnVtYmVyT2ZMTEludENhbGxl
ZVNhdmVSZWdpc3RlcnM7CisgICAgCisgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5lcmF0b3JJbnRl
cm5hbDo6dmVyYm9zZSwgIlsiLCBtX2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAgICAgIk5vcm1h
bGl6ZWQgYXJndW1lbnRzOiAiLCBsaXN0RHVtcChtX25vcm1hbGl6ZWRBcmd1bWVudHMpKTsKKyAg
ICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVybmFsOjp2ZXJib3NlLCAiWyIsIG1fZnVu
Y3Rpb25JbmRleCwgIl0iLAorICAgICAgICAiTmV4dCBhdmFpbGFibGUgc2xvdCBhZnRlciBhZGRp
bmcgYXJndW1lbnRzIGlzICIsIG1fZmlyc3RTdGFja1Nsb3RJbmRleCwgIiBhdCAiLCB2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChtX2ZpcnN0U3RhY2tTbG90SW5kZXgpKTsKIAogICAgIHJldHVybiB7
IH07CiB9CiAKLWF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZExvY2FsKFR5cGUgdHlwZSwgdWludDMy
X3QgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmFkZExvY2Fs
KFR5cGUgdHlwZSwgdWludDMyX3QgbG9jYWxJbmRleCwgdWludDMyX3QgY291bnQpIC0+IFBhcnRp
YWxSZXN1bHQKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CisgICAgQVNTRVJUX1VOVVNFRChs
b2NhbEluZGV4LCBsb2NhbEluZGV4ID09IG1fbG9jYWxzLnNpemUoKSArIG1fbm9ybWFsaXplZEFy
Z3VtZW50cy5zaXplKCkpOworICAgIEFTU0VSVChtX2V4cHJlc3Npb25TdGFja1Nsb3RzLnNpemUo
KSA9PSAwKTsKKyAgICBzaXplX3Qgc2xvdENvdW50ID0gKChzaXplX3QpIGNvdW50KSAqICh0eXBl
LnNpemUoKS84KTsKIAotICAgIG1fY29kZUJsb2NrLT5tX251bVZhcnMgKz0gY291bnQ7CisgICAg
bV9jb2RlQmxvY2stPm1fbnVtVmFycyArPSBzbG90Q291bnQ7CiAgICAgaWYgKGlzRnVuY3JlZih0
eXBlKSB8fCBpc0V4dGVybnJlZih0eXBlKSkgewotICAgICAgICB3aGlsZSAoY291bnQtLSkKLSAg
ICAgICAgICAgIG1fdW5pdGlhbGl6ZWRMb2NhbHMuYXBwZW5kKHB1c2goTm9Db25zaXN0ZW5jeUNo
ZWNrKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fc3RhY2tTaXplICs9IGNvdW50OworICAgICAg
ICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICAgICAgYXV0byBzbG90ID0gdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwobV9maXJzdFN0YWNrU2xvdEluZGV4KyspOworICAgICAgICAgICAgbV9sb2Nh
bHMuYXBwZW5kKHNsb3QpOworICAgICAgICAgICAgbV91bml0aWFsaXplZExvY2Fscy5hcHBlbmQo
c2xvdCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB3aGlsZSAoY291bnQtLSkg
eworICAgICAgICAgICAgaWYgKHR5cGUuc2l6ZSgpID09IDE2KQorICAgICAgICAgICAgICAgICsr
bV9maXJzdFN0YWNrU2xvdEluZGV4OworICAgICAgICAgICAgbV9sb2NhbHMuYXBwZW5kKHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKG1fZmlyc3RTdGFja1Nsb3RJbmRleCsrKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKExMSW50R2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJv
c2UsICJbIiwgbV9mdW5jdGlvbkluZGV4LCAiXSIsCisgICAgICAgICAgICAgICAgIkxvY2FsICIs
IGxvY2FsSW5kZXgsICIgZ29lcyBpbiAiLCBtX2xvY2Fscy5sYXN0KCksICIsICIsIG5leHRTbG90
Rm9yVXBwZXJCaXRzKG1fbG9jYWxzLmxhc3QoKSksICJ0YWtpbmcgc2xvdHMgIiwgbV9maXJzdFN0
YWNrU2xvdEluZGV4LTEsICIgYW5kICIsIG1fZmlyc3RTdGFja1Nsb3RJbmRleC0yKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVybmFs
Ojp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAiTmV4dCBhdmFp
bGFibGUgc2xvdCBhZnRlciBhZGRpbmcgbG9jYWwocykgaXMgIiwgbV9maXJzdFN0YWNrU2xvdElu
ZGV4LCAiIGF0ICIsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fZmlyc3RTdGFja1Nsb3RJbmRl
eCkpOworICAgIAorICAgIEFTU0VSVChuZXh0U2xvdEluZGV4KFR5cGVzOjpJNjQpID09IG1fZmly
c3RTdGFja1Nsb3RJbmRleCk7CisgICAgQVNTRVJUKG5leHRTbG90SW5kZXgoVHlwZXM6OlYxMjgp
ID09IG1fZmlyc3RTdGFja1Nsb3RJbmRleCArIDEpOworICAgIAogICAgIHJldHVybiB7IH07CiB9
CiAKIHZvaWQgTExJbnRHZW5lcmF0b3I6OmRpZEZpbmlzaFBhcnNpbmdMb2NhbHMoKQogeworICAg
IGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICBpZiAobV91bml0aWFsaXplZExvY2Fscy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtODUwLDQ4ICsxMDEzLDYwIEBAIHZvaWQgTExJbnRH
ZW5lcmF0b3I6OmRpZEZpbmlzaFBhcnNpbmdMb2NhbHMoKQogCiBhdXRvIExMSW50R2VuZXJhdG9y
OjphZGRDb25zdGFudChUeXBlIHR5cGUsIGludDY0X3QgdmFsdWUpIC0+IEV4cHJlc3Npb25UeXBl
CiB7Ci0gICAgYXV0byBjb25zdGFudCA9IFsmXSB7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAg
ICAgICAgICByZXR1cm4gemVyb0NvbnN0YW50KCk7Ci0KLSAgICAgICAgaWYgKHZhbHVlID09IEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSkpCi0gICAgICAgICAgICByZXR1cm4ganNOdWxsQ29uc3Rh
bnQoKTsKLQotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc291cmNlKEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4ICsgbV9jb2RlQmxvY2stPm1fY29uc3RhbnRzLnNpemUoKSk7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9jb25zdGFudE1hcC5hZGQodmFsdWUsIHNvdXJjZSk7Ci0gICAgICAgIGlm
ICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZTsKLSAgICAgICAgbV9jb2RlQmxvY2stPm1fY29uc3RhbnRzLmFwcGVuZCh2YWx1ZSk7
Ci0gICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wR2VuZXJhdGVkV2FzbUJ5dGVjb2Rl
cygpKSkKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50VHlwZXMuYXBwZW5kKHR5
cGUpOwotICAgICAgICByZXR1cm4gc291cmNlOwotICAgIH07CiAgICAgLy8gbGVhdmUgYSBob2xl
IGlmIHdlIG5lZWQgdG8gbWF0ZXJpYWxpemUgdGhlIGNvbnN0YW50Ci0gICAgcHVzaCgpOwotICAg
IHJldHVybiBjb25zdGFudCgpOworICAgIHB1c2godHlwZSk7CisgICAgaWYgKCF2YWx1ZSkKKyAg
ICAgICAgcmV0dXJuIHplcm9Db25zdGFudCgpOworCisgICAgaWYgKHZhbHVlID09IEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSkpCisgICAgICAgIHJldHVybiBqc051bGxDb25zdGFudCgpOworCisg
ICAgVmlydHVhbFJlZ2lzdGVyIHNvdXJjZShGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCArIG1f
Y29kZUJsb2NrLT5tX2NvbnN0YW50cy5zaXplKCkpOworICAgIGF1dG8gcmVzdWx0ID0gbV9jb25z
dGFudE1hcC5hZGQodmFsdWUsIHNvdXJjZSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgbV9jb2RlQmxvY2st
Pm1fY29uc3RhbnRzLmFwcGVuZCh2YWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1
bXBHZW5lcmF0ZWRXYXNtQnl0ZWNvZGVzKCkpKQorICAgICAgICBtX2NvZGVCbG9jay0+bV9jb25z
dGFudFR5cGVzLmFwcGVuZCh0eXBlKTsKKyAgICByZXR1cm4gc291cmNlOworfQorCithdXRvIExM
SW50R2VuZXJhdG9yOjphZGRDb25zdGFudCh2MTI4X3QgdmFsdWUpIC0+IEV4cHJlc3Npb25UeXBl
Cit7CisgICAgLy8gbGVhdmUgYSBob2xlIGlmIHdlIG5lZWQgdG8gbWF0ZXJpYWxpemUgdGhlIGNv
bnN0YW50CisgICAgcHVzaChUeXBlczo6VjEyOCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHNvdXJj
ZShGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCArIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50cy5z
aXplKCkpOworICAgIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50cy5hcHBlbmQodmFsdWUudTY0eDJb
MF0pOworICAgIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50cy5hcHBlbmQodmFsdWUudTY0eDJbMV0p
OworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wR2VuZXJhdGVkV2FzbUJ5dGVjb2Rlcygp
KSkgeworICAgICAgICBtX2NvZGVCbG9jay0+bV9jb25zdGFudFR5cGVzLmFwcGVuZChUeXBlczo6
VjEyOCk7CisgICAgICAgIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50VHlwZXMuYXBwZW5kKFR5cGVz
OjpWMTI4KTsKKyAgICB9CisgICAgcmV0dXJuIHNvdXJjZTsKIH0KIAotYXV0byBMTEludEdlbmVy
YXRvcjo6Z2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+
IFBhcnRpYWxSZXN1bHQKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmdldExvY2FsKHVpbnQzMl90IGlu
ZGV4LCBXYXNtOjpUeXBlIHR5cGUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxS
ZXN1bHQKIHsKICAgICAvLyBsZWF2ZSBhIGhvbGUgaWYgd2UgbmVlZCB0byBtYXRlcmlhbGl6ZSB0
aGUgbG9jYWwKLSAgICBwdXNoKCk7CisgICAgcHVzaCh0eXBlKTsKICAgICByZXN1bHQgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JXYXNtTG9jYWwoaW5kZXgpOwogICAgIHJldHVybiB7IH07CiB9CiAKLWF1
dG8gTExJbnRHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlw
ZSB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBMTEludEdlbmVyYXRvcjo6c2V0TG9jYWwo
dWludDMyX3QgaW5kZXgsIFdhc206OlR5cGUgdHlwZSwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+
IFBhcnRpYWxSZXN1bHQKIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGFyZ2V0ID0gdmlydHVhbFJl
Z2lzdGVyRm9yV2FzbUxvY2FsKGluZGV4KTsKLQorICAgIAogICAgIC8vIElmIHRoaXMgbG9jYWwg
aXMgY3VycmVudGx5IG9uIHRoZSBzdGFjayB3ZSBuZWVkIHRvIG1hdGVyaWFsaXplIGl0LCBvdGhl
cndpc2UgaXQnbGwgc2VlIHRoZSBuZXcgdmFsdWUgaW5zdGVhZCBvZiB0aGUgb2xkIG9uZQotICAg
IHdhbGtFeHByZXNzaW9uU3RhY2sobV9wYXJzZXItPmV4cHJlc3Npb25TdGFjaygpLCBbJl0oVHlw
ZWRFeHByZXNzaW9uJiBleHByZXNzaW9uLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkgeworICAgIHdh
bGtFeHByZXNzaW9uU3RhY2soWyZdKFR5cGVkRXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgVmlydHVh
bFJlZ2lzdGVyIHNsb3QpIHsKICAgICAgICAgaWYgKGV4cHJlc3Npb24udmFsdWUoKSAhPSB0YXJn
ZXQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFdhc21Nb3Y6OmVtaXQodGhpcywgc2xv
dCwgZXhwcmVzc2lvbik7CisgICAgICAgIHR5cGVkTW92ZShzbG90LCBleHByZXNzaW9uKTsKKyAg
ICAgICAgQVNTRVJUKHR5cGUgPT0gZXhwcmVzc2lvbi50eXBlKCkpOwogICAgICAgICBleHByZXNz
aW9uID0gVHlwZWRFeHByZXNzaW9uIHsgZXhwcmVzc2lvbi50eXBlKCksIHNsb3QgfTsKICAgICB9
KTsKIAotICAgIFdhc21Nb3Y6OmVtaXQodGhpcywgdGFyZ2V0LCB2YWx1ZSk7CisgICAgdHlwZWRN
b3ZlKHRhcmdldCwgeyB0eXBlLCB2YWx1ZSB9KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC04
OTksNyArMTA3NCw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFJlCiBhdXRvIExMSW50R2VuZXJh
dG9yOjpnZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+
IFBhcnRpYWxSZXN1bHQKIHsKICAgICBjb25zdCBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbiYgZ2xv
YmFsID0gbV9pbmZvLmdsb2JhbHNbaW5kZXhdOwotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICBy
ZXN1bHQgPSBwdXNoKGdsb2JhbC50eXBlKTsKICAgICBzd2l0Y2ggKGdsb2JhbC5iaW5kaW5nTW9k
ZSkgewogICAgIGNhc2UgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246OkJpbmRpbmdNb2RlOjpFbWJl
ZGRlZEluSW5zdGFuY2U6CiAgICAgICAgIFdhc21HZXRHbG9iYWw6OmVtaXQodGhpcywgcmVzdWx0
LCBpbmRleCk7CkBAIC05NTMsNyArMTEyOCw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZExv
b3AoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTdGFjayYgZW5jbG9zaW5nU3RhY2ssIENvCiAg
ICAgUmVmPExhYmVsPiBib2R5ID0gbmV3RW1pdHRlZExhYmVsKCk7CiAgICAgUmVmPExhYmVsPiBj
b250aW51YXRpb24gPSBuZXdMYWJlbCgpOwogCi0gICAgYmxvY2sgPSBDb250cm9sVHlwZTo6bG9v
cChzaWduYXR1cmUsIG1fc3RhY2tTaXplLCBXVEZNb3ZlKGJvZHkpLCBXVEZNb3ZlKGNvbnRpbnVh
dGlvbikpOworICAgIGJsb2NrID0gQ29udHJvbFR5cGU6Omxvb3Aoc2lnbmF0dXJlLCBtX2V4cHJl
c3Npb25TdGFja1Nsb3RzLCBXVEZNb3ZlKGJvZHkpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwog
CiAgICAgVmVjdG9yPHVuc2lnbmVkPiB1bnJlc29sdmVkT2Zmc2V0czsKICAgICBWZWN0b3I8Vmly
dHVhbFJlZ2lzdGVyPiBvc3JFbnRyeURhdGE7CkBAIC05ODcsMTMgKzExNjIsMTMgQEAgYXV0byBM
TEludEdlbmVyYXRvcjo6YWRkTG9vcChCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBl
bmNsb3NpbmdTdGFjaywgQ28KIAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkVG9wTGV2ZWwoQmxv
Y2tTaWduYXR1cmUgc2lnbmF0dXJlKSAtPiBDb250cm9sVHlwZQogewotICAgIHJldHVybiBDb250
cm9sVHlwZTo6dG9wTGV2ZWwoc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwgbmV3TGFiZWwoKSk7Cisg
ICAgcmV0dXJuIENvbnRyb2xUeXBlOjp0b3BMZXZlbChzaWduYXR1cmUsIG1fZXhwcmVzc2lvblN0
YWNrU2xvdHMsIG5ld0xhYmVsKCkpOwogfQogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRCbG9j
ayhCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29udHJv
bFR5cGUmIG5ld0Jsb2NrLCBTdGFjayYgbmV3U3RhY2spIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAg
ICBzcGxpdFN0YWNrKHNpZ25hdHVyZSwgZW5jbG9zaW5nU3RhY2ssIG5ld1N0YWNrKTsKLSAgICBu
ZXdCbG9jayA9IENvbnRyb2xUeXBlOjpibG9jayhzaWduYXR1cmUsIG1fc3RhY2tTaXplLCBuZXdM
YWJlbCgpKTsKKyAgICBuZXdCbG9jayA9IENvbnRyb2xUeXBlOjpibG9jayhzaWduYXR1cmUsIG1f
ZXhwcmVzc2lvblN0YWNrU2xvdHMsIG5ld0xhYmVsKCkpOwogICAgIHJldHVybiB7IH07CiB9CiAK
QEAgLTEwMDYsNyArMTE4MSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZElmKEV4cHJlc3Np
b25UeXBlIGNvbmRpdGlvbiwgQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTCiAKICAgICBXYXNt
SmZhbHNlOjplbWl0KHRoaXMsIGNvbmRpdGlvbiwgYWx0ZXJuYXRlLT5iaW5kKHRoaXMpKTsKIAot
ICAgIHJlc3VsdCA9IENvbnRyb2xUeXBlOjppZl8oc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwgV1RG
TW92ZShhbHRlcm5hdGUpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOworICAgIHJlc3VsdCA9IENv
bnRyb2xUeXBlOjppZl8oc2lnbmF0dXJlLCBtX2V4cHJlc3Npb25TdGFja1Nsb3RzLCBXVEZNb3Zl
KGFsdGVybmF0ZSksIFdURk1vdmUoY29udGludWF0aW9uKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0K
IApAQCAtMTAyMCwxMSArMTE5NSwxMiBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRFbHNlKENv
bnRyb2xUeXBlJiBkYXRhLCBTdGFjayYgZXhwcmVzc2lvblN0YWNrKSAtPiBQYXJ0aQogCiBhdXRv
IExMSW50R2VuZXJhdG9yOjphZGRFbHNlVG9VbnJlYWNoYWJsZShDb250cm9sVHlwZSYgZGF0YSkg
LT4gUGFydGlhbFJlc3VsdAogewotICAgIG1fc3RhY2tTaXplID0gZGF0YS5zdGFja1NpemUoKSAr
IGRhdGEubV9zaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBtX2V4cHJlc3Npb25TdGFj
a1Nsb3RzID0gZGF0YS5tX2V4cHJlc3Npb25TdGFja1Nsb3RzOworLy8gICAgYWRkQXJndW1lbnRz
VG9TbG90U3RhY2soZGF0YS5tX3NpZ25hdHVyZSk7CiAKICAgICBDb250cm9sSWYmIGNvbnRyb2wg
PSBzdGQ6OmdldDxDb250cm9sSWY+KGRhdGEpOwogICAgIGVtaXRMYWJlbChjb250cm9sLm1fYWx0
ZXJuYXRlLmdldCgpKTsKLSAgICBkYXRhID0gQ29udHJvbFR5cGU6OmJsb2NrKGRhdGEubV9zaWdu
YXR1cmUsIG1fc3RhY2tTaXplLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRpb24pKTsKKyAgICBk
YXRhID0gQ29udHJvbFR5cGU6OmJsb2NrKGRhdGEubV9zaWduYXR1cmUsIG1fZXhwcmVzc2lvblN0
YWNrU2xvdHMsIFdURk1vdmUoZGF0YS5tX2NvbnRpbnVhdGlvbikpOwogICAgIHJldHVybiB7IH07
CiB9CiAKQEAgLTEwMzYsNyArMTIxMiw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFRyeShC
bG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29uCiAgICAg
c3BsaXRTdGFjayhzaWduYXR1cmUsIGVuY2xvc2luZ1N0YWNrLCBuZXdTdGFjayk7CiAgICAgUmVm
PExhYmVsPiB0cnlMYWJlbCA9IG5ld0VtaXR0ZWRMYWJlbCgpOwogICAgIFJlZjxMYWJlbD4gY29u
dGludWF0aW9uID0gbmV3TGFiZWwoKTsKLSAgICByZXN1bHQgPSBDb250cm9sVHlwZTo6Y3JlYXRl
VHJ5KHNpZ25hdHVyZSwgbV9zdGFja1NpemUsIFdURk1vdmUodHJ5TGFiZWwpLCBXVEZNb3ZlKGNv
bnRpbnVhdGlvbiksIG1fdHJ5RGVwdGgpOworICAgIHJlc3VsdCA9IENvbnRyb2xUeXBlOjpjcmVh
dGVUcnkoc2lnbmF0dXJlLCBtX2V4cHJlc3Npb25TdGFja1Nsb3RzLCBXVEZNb3ZlKHRyeUxhYmVs
KSwgV1RGTW92ZShjb250aW51YXRpb24pLCBtX3RyeURlcHRoKTsKICAgICByZXR1cm4geyB9Owog
fQogCkBAIC0xMDQ2LDkgKzEyMjIsMTMgQEAgdm9pZCBMTEludEdlbmVyYXRvcjo6ZmluYWxpemVQ
cmV2aW91c0Jsb2NrRm9yQ2F0Y2goQ29udHJvbFR5cGUmIGRhdGEsIFN0YWNrJiBleHAKICAgICAg
ICAgbWF0ZXJpYWxpemVDb25zdGFudHNBbmRMb2NhbHMoZXhwcmVzc2lvblN0YWNrKTsKICAgICBl
bHNlIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwotICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZGF0YS5zdGFja1NpemUoKSk7CisgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChkYXRhLnN0
YWNrQ291bnQoKSk7CiAgICAgICAgIGZvciAoVHlwZWRFeHByZXNzaW9uJiB2YWx1ZSA6IGV4cHJl
c3Npb25TdGFjaykgewotICAgICAgICAgICAgV2FzbU1vdjo6ZW1pdCh0aGlzLCBkc3QsIHZhbHVl
KTsKKyAgICAgICAgICAgIHR5cGVkTW92ZShkc3QsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2
YWx1ZS50eXBlKCkuc2l6ZSgpID09IDE2KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRzdCAt
IDEgPT0gbmV4dFNsb3RGb3JVcHBlckJpdHMoZHN0KSk7CisgICAgICAgICAgICAgICAgZHN0IC09
IDE7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB2YWx1ZSA9IFR5cGVkRXhwcmVzc2lvbiB7
IHZhbHVlLnR5cGUoKSwgZHN0IH07CiAgICAgICAgICAgICBkc3QgLT0gMTsKICAgICAgICAgfQpA
QCAtMTA2NywxNCArMTI0NywxNiBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRDYXRjaFRvVW5y
ZWFjaGFibGUodW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdAogICAgIG1fdXNl
c0V4Y2VwdGlvbnMgPSB0cnVlOwogICAgIFJlZjxMYWJlbD4gY2F0Y2hMYWJlbCA9IG5ld0VtaXR0
ZWRMYWJlbCgpOwogCi0gICAgbV9zdGFja1NpemUgPSBkYXRhLnN0YWNrU2l6ZSgpOwotICAgIFZp
cnR1YWxSZWdpc3RlciBleGNlcHRpb24gPSBwdXNoKCk7CisgICAgbV9leHByZXNzaW9uU3RhY2tT
bG90cyA9IGRhdGEubV9leHByZXNzaW9uU3RhY2tTbG90czsKKyAgICAKKyAgICBWaXJ0dWFsUmVn
aXN0ZXIgZXhjZXB0aW9uID0gcHVzaChUeXBlczo6Vm9pZCwgTm9Db25zaXN0ZW5jeUNoZWNrKTsK
KyAgICBBU1NFUlQoZXhjZXB0aW9uU2lnbmF0dXJlLnJldHVybnNWb2lkKCkpOwogICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPENvbnRyb2xUcnk+KGRhdGEpKSB7CiAgICAgICAgIENvbnRy
b2xUcnkmIHRyeURhdGEgPSBzdGQ6OmdldDxDb250cm9sVHJ5PihkYXRhKTsKLSAgICAgICAgZGF0
YSA9IENvbnRyb2xUeXBlOjpjcmVhdGVDYXRjaChkYXRhLm1fc2lnbmF0dXJlLCBkYXRhLnN0YWNr
U2l6ZSgpLCBXVEZNb3ZlKHRyeURhdGEubV90cnkpLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRp
b24pLCBjYXRjaExhYmVsLCB0cnlEYXRhLm1fdHJ5RGVwdGgsIGV4Y2VwdGlvbik7CisgICAgICAg
IGRhdGEgPSBDb250cm9sVHlwZTo6Y3JlYXRlQ2F0Y2goZGF0YS5tX3NpZ25hdHVyZSwgZGF0YS5t
X2V4cHJlc3Npb25TdGFja1Nsb3RzLCBXVEZNb3ZlKHRyeURhdGEubV90cnkpLCBXVEZNb3ZlKGRh
dGEubV9jb250aW51YXRpb24pLCBjYXRjaExhYmVsLCB0cnlEYXRhLm1fdHJ5RGVwdGgsIGV4Y2Vw
dGlvbik7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGNlcHRpb25TaWdu
YXR1cmUuYXJndW1lbnRDb3VudCgpOyArK2kpCi0gICAgICAgIHJlc3VsdHMuYXBwZW5kKHB1c2go
KSk7CisgICAgICAgIHJlc3VsdHMuYXBwZW5kKHB1c2goZXhjZXB0aW9uU2lnbmF0dXJlLmFyZ3Vt
ZW50KGkpKSk7CiAKICAgICBpZiAoQ29udGV4dDo6dXNlRmFzdFRMUygpKQogICAgICAgICBXYXNt
Q2F0Y2g6OmVtaXQodGhpcywgZXhjZXB0aW9uSW5kZXgsIGV4Y2VwdGlvbiwgZXhjZXB0aW9uU2ln
bmF0dXJlLmFyZ3VtZW50Q291bnQoKSwgcmVzdWx0cy5pc0VtcHR5KCkgPyAwIDogLXJlc3VsdHNb
MF0ub2Zmc2V0KCkpOwpAQCAtMTEyMCwxMSArMTMwMiwxMSBAQCBhdXRvIExMSW50R2VuZXJhdG9y
OjphZGRDYXRjaEFsbFRvVW5yZWFjaGFibGUoQ29udHJvbFR5cGUmIGRhdGEpIC0+IFBhcnRpYWxS
ZXN1bAogewogICAgIG1fdXNlc0V4Y2VwdGlvbnMgPSB0cnVlOwogICAgIFJlZjxMYWJlbD4gY2F0
Y2hMYWJlbCA9IG5ld0VtaXR0ZWRMYWJlbCgpOwotICAgIG1fc3RhY2tTaXplID0gZGF0YS5zdGFj
a1NpemUoKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZXhjZXB0aW9uID0gcHVzaCgpOworICAgIG1f
ZXhwcmVzc2lvblN0YWNrU2xvdHMgPSBkYXRhLm1fZXhwcmVzc2lvblN0YWNrU2xvdHM7CisgICAg
VmlydHVhbFJlZ2lzdGVyIGV4Y2VwdGlvbiA9IHB1c2goVHlwZXM6OlZvaWQsIE5vQ29uc2lzdGVu
Y3lDaGVjayk7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29udHJvbFRyeT4oZGF0
YSkpIHsKICAgICAgICAgQ29udHJvbFRyeSYgdHJ5RGF0YSA9IHN0ZDo6Z2V0PENvbnRyb2xUcnk+
KGRhdGEpOwotICAgICAgICBkYXRhID0gQ29udHJvbFR5cGU6OmNyZWF0ZUNhdGNoKGRhdGEubV9z
aWduYXR1cmUsIGRhdGEuc3RhY2tTaXplKCksIFdURk1vdmUodHJ5RGF0YS5tX3RyeSksIFdURk1v
dmUoZGF0YS5tX2NvbnRpbnVhdGlvbiksIGNhdGNoTGFiZWwsIHRyeURhdGEubV90cnlEZXB0aCwg
ZXhjZXB0aW9uKTsKKyAgICAgICAgZGF0YSA9IENvbnRyb2xUeXBlOjpjcmVhdGVDYXRjaChkYXRh
Lm1fc2lnbmF0dXJlLCBkYXRhLm1fZXhwcmVzc2lvblN0YWNrU2xvdHMsIFdURk1vdmUodHJ5RGF0
YS5tX3RyeSksIFdURk1vdmUoZGF0YS5tX2NvbnRpbnVhdGlvbiksIGNhdGNoTGFiZWwsIHRyeURh
dGEubV90cnlEZXB0aCwgZXhjZXB0aW9uKTsKICAgICB9CiAgICAgQ29udHJvbENhdGNoJiBjYXRj
aERhdGEgPSBzdGQ6OmdldDxDb250cm9sQ2F0Y2g+KGRhdGEpOwogICAgIGNhdGNoRGF0YS5tX2tp
bmQgPSBDYXRjaEtpbmQ6OkNhdGNoQWxsOwpAQCAtMTE1NywxOCArMTMzOSwxOCBAQCBhdXRvIExM
SW50R2VuZXJhdG9yOjphZGREZWxlZ2F0ZVRvVW5yZWFjaGFibGUoQ29udHJvbFR5cGUmIHRhcmdl
dCwgQ29udHJvbFR5cGUmCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBMTEludEdlbmVyYXRv
cjo6YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFZlY3RvcjxFeHByZXNzaW9uVHlw
ZT4mIGFyZ3MsIFN0YWNrJikgLT4gUGFydGlhbFJlc3VsdAorYXV0byBMTEludEdlbmVyYXRvcjo6
YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFN0YWNrJiBhcmdzKSAtPiBQYXJ0aWFs
UmVzdWx0CiB7CiAgICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7CiAgICAgLy8gV2UgaGF2ZSB0
byBtYXRlcmlhbGl6ZSB0aGUgYXJndW1lbnRzIGhlcmUgc2luY2UgaXQgbWlnaHQgaW5jbHVkZSBj
b25zdGFudHMgb3IKICAgICAvLyBkZWxheWVkIG1vdmVzLCBidXQgdGhlIHdhc21fdGhyb3cgb3Bj
b2RlIGV4cGVjdHMgYWxsIHRoZSBhcmd1bWVudHMgdG8gYmUgY29udGlndW91cwogICAgIC8vIGlu
IHRoZSBzdGFjay4gVGhlIHJlYXNvbiB3ZSBkb24ndCBjYWxsIG1hdGVyaWFsaXplQ29uc3RhbnRz
QW5kTG9jYWxzIGhlcmUgaXMgdGhhdAogICAgIC8vIGl0IGV4cGVjdHMgYSBzdGFjaywgbm90IGEg
dmVjdG9yIG9mIEV4cHJlc3Npb25UeXBlIGFyZ3VtZW50cy4KLSAgICB3YWxrRXhwcmVzc2lvblN0
YWNrKGFyZ3MsIFsmXShWaXJ0dWFsUmVnaXN0ZXImIGFyZywgVmlydHVhbFJlZ2lzdGVyIHNsb3Qp
IHsKLSAgICAgICAgaWYgKGFyZyA9PSBzbG90KQorICAgIHdhbGtFeHByZXNzaW9uU3RhY2soYXJn
cywgWyZdKFR5cGVkRXhwcmVzc2lvbiYgYXJnLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkgeworICAg
ICAgICBpZiAoYXJnLnZhbHVlKCkgPT0gc2xvdCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgV2FzbU1vdjo6ZW1pdCh0aGlzLCBzbG90LCBhcmcpOwotICAgICAgICBhcmcgPSBzbG90Owor
ICAgICAgICB0eXBlZE1vdmUoc2xvdCwgYXJnKTsKKyAgICAgICAgYXJnID0gVHlwZWRFeHByZXNz
aW9uIHsgYXJnLnR5cGUoKSwgc2xvdCB9OwogICAgIH0pOwogICAgIFdhc21UaHJvdzo6ZW1pdCh0
aGlzLCBleGNlcHRpb25JbmRleCwgYXJncy5pc0VtcHR5KCkgPyB2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbCgwKSA6IGFyZ3NbMF0pOwogICAgIHJldHVybiB7IH07CkBAIC0xMjY2LDE1ICsxNDQ4LDE4
IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEVuZFRvVW5yZWFjaGFibGUoQ29udHJvbEVudHJ5
JiBlbnRyeSwgU3RhY2smIGV4cHJlc3Npb25TCiB7CiAgICAgQ29udHJvbFR5cGUmIGRhdGEgPSBl
bnRyeS5jb250cm9sRGF0YTsKIAotICAgIHVuc2lnbmVkIHN0YWNrU2l6ZSA9IGRhdGEuc3RhY2tT
aXplKCk7CisgICAgdW5zaWduZWQgc3RhY2tTaXplID0gZGF0YS5zdGFja0NvdW50KCk7CiAgICAg
aWYgKENvbnRyb2xUeXBlOjppc0FueUNhdGNoKGVudHJ5LmNvbnRyb2xEYXRhKSkKICAgICAgICAg
KytzdGFja1NpemU7IC8vIEFjY291bnQgZm9yIHRoZSBjYXVnaHQgZXhjZXB0aW9uCi0gICAgUkVM
RUFTRV9BU1NFUlQodW5yZWFjaGFibGUgfHwgbV9zdGFja1NpemUgPT0gIHN0YWNrU2l6ZSArIGRh
dGEubV9zaWduYXR1cmUtPnJldHVybkNvdW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHVucmVh
Y2hhYmxlIHx8IHRoaXMtPnN0YWNrQ291bnQoKSA9PSAgc3RhY2tTaXplICsgZGF0YS5tX3NpZ25h
dHVyZS0+cmV0dXJuQ291bnQoKSk7CiAKLSAgICBtX3N0YWNrU2l6ZSA9IGRhdGEuc3RhY2tTaXpl
KCk7CisgICAgbV9leHByZXNzaW9uU3RhY2tTbG90cyA9IGRhdGEubV9leHByZXNzaW9uU3RhY2tT
bG90czsKIAogICAgIGlmIChDb250cm9sVHlwZTo6aXNUcnkoZGF0YSkgfHwgc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxDb250cm9sQ2F0Y2g+KGRhdGEpKQogICAgICAgICAtLW1fdHJ5RGVwdGg7Cisg
ICAgCisgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlsi
LCBtX2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAgICAgIkFkZCBlbmQsIG5ldyBzdGFjayBzbG90
czogIiwgbGlzdER1bXAobV9leHByZXNzaW9uU3RhY2tTbG90cyksICJyZWFjaGFibGU6ICIsICF1
bnJlYWNoYWJsZSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3NpZ25h
dHVyZS0+cmV0dXJuQ291bnQoKTsgKytpKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8g
ZG8gYSBjb25zaXN0ZW5jeSBjaGVjayBoZXJlIGJlY2F1c2Ugd2UganVzdCByZXNldCB0aGUgc3Rh
Y2sgc2l6ZQpAQCAtMTI4Miw3ICsxNDY3LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkRW5k
VG9VbnJlYWNoYWJsZShDb250cm9sRW50cnkmIGVudHJ5LCBTdGFjayYgZXhwcmVzc2lvblMKICAg
ICAgICAgLy8gVGhlIG9ubHkgcmVhc29uIHdlIGRvIHRoaW5ncyB0aGlzIHdheSBpcyBzbyB0aGF0
IGl0IGFsc28gd29ya3MgZm9yIHVucmVhY2hhYmxlIGJsb2NrcywKICAgICAgICAgLy8gc2luY2Ug
dGhleSBtaWdodCBub3QgaGF2ZSB0aGUgcmlnaHQgbnVtYmVyIG9mIHZhbHVlcyBpbiB0aGUgZXhw
cmVzc2lvbiBzdGFjay4KICAgICAgICAgLy8gSW5zdGVhZCwgd2UgZG8gYSBzdHJpY3RlciBjb25z
aXN0ZW5jeSBjaGVjayBiZWxvdy4KLSAgICAgICAgYXV0byB0bXAgPSBwdXNoKE5vQ29uc2lzdGVu
Y3lDaGVjayk7CisgICAgICAgIGF1dG8gdG1wID0gcHVzaChkYXRhLm1fc2lnbmF0dXJlLT5yZXR1
cm5UeXBlKGkpLCBOb0NvbnNpc3RlbmN5Q2hlY2spOwogICAgICAgICBBU1NFUlQodW5yZWFjaGFi
bGUgfHwgdG1wID09IGV4cHJlc3Npb25TdGFja1tpXS52YWx1ZSgpKTsKICAgICAgICAgaWYgKHVu
cmVhY2hhYmxlKQogICAgICAgICAgICAgZW50cnkuZW5jbG9zZWRFeHByZXNzaW9uU3RhY2suY29u
c3RydWN0QW5kQXBwZW5kKGRhdGEubV9zaWduYXR1cmUtPnJldHVyblR5cGUoaSksIHRtcCk7CkBA
IC0xMzIwLDExICsxNTA1LDE1IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhbGwodWludDMy
X3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiB7CiAgICAgQVNT
RVJUKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgPT0gYXJncy5zaXplKCkpOwogICAgIExMSW50
Q2FsbEluZm9ybWF0aW9uIGluZm8gPSBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoc2lnbmF0dXJl
KTsKLSAgICB1bmlmeVZhbHVlc1dpdGhCbG9jayhpbmZvLmFyZ3VtZW50cywgYXJncyk7CisgICAg
VmVjdG9yPFR5cGVkRXhwcmVzc2lvbj4gdHlwZWRBcmdzIChhcmdzLnNpemUoKSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQorICAgICAgICB0eXBlZEFyZ3Nb
aV0gPSB7IHNpZ25hdHVyZS5hcmd1bWVudChpKSwgYXJnc1tpXSB9OworICAgIHVuaWZ5VmFsdWVz
V2l0aEJsb2NrKGluZm8uYXJndW1lbnRzLCB0eXBlZEFyZ3MpOworICAgIAogICAgIGlmIChDb250
ZXh0Ojp1c2VGYXN0VExTKCkpCi0gICAgICAgIFdhc21DYWxsOjplbWl0KHRoaXMsIGZ1bmN0aW9u
SW5kZXgsIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cyk7Cisg
ICAgICAgIFdhc21DYWxsOjplbWl0KHRoaXMsIGZ1bmN0aW9uSW5kZXgsIGluZm8uc3RhY2tPZmZz
ZXQsIGluZm8uc2l6ZU9mU3RhY2tBcmd1bWVudHMpOwogICAgIGVsc2UKLSAgICAgICAgV2FzbUNh
bGxOb1Rsczo6ZW1pdCh0aGlzLCBmdW5jdGlvbkluZGV4LCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZv
Lm51bWJlck9mU3RhY2tBcmd1bWVudHMpOworICAgICAgICBXYXNtQ2FsbE5vVGxzOjplbWl0KHRo
aXMsIGZ1bmN0aW9uSW5kZXgsIGluZm8uc3RhY2tPZmZzZXQsIGluZm8uc2l6ZU9mU3RhY2tBcmd1
bWVudHMpOwogICAgIGluZm8uY29tbWl0UmVzdWx0cyhyZXN1bHRzKTsKIAogICAgIHJldHVybiB7
IH07CkBAIC0xMzM5LDExICsxNTI4LDE1IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhbGxJ
bmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hCiAgICAg
QVNTRVJUKG1faW5mby50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpID09IFRhYmxlRWxlbWVudFR5
cGU6OkZ1bmNyZWYpOwogCiAgICAgTExJbnRDYWxsSW5mb3JtYXRpb24gaW5mbyA9IGNhbGxJbmZv
cm1hdGlvbkZvckNhbGxlcihzaWduYXR1cmUpOwotICAgIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGlu
Zm8uYXJndW1lbnRzLCBhcmdzKTsKKyAgICBWZWN0b3I8VHlwZWRFeHByZXNzaW9uPiB0eXBlZEFy
Z3MgKGFyZ3Muc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3Muc2l6ZSgp
OyArK2kpCisgICAgICAgIHR5cGVkQXJnc1tpXSA9IHsgc2lnbmF0dXJlLmFyZ3VtZW50KGkpLCBh
cmdzW2ldIH07CisgICAgdW5pZnlWYWx1ZXNXaXRoQmxvY2soaW5mby5hcmd1bWVudHMsIHR5cGVk
QXJncyk7CisgICAgCiAgICAgaWYgKENvbnRleHQ6OnVzZUZhc3RUTFMoKSkKLSAgICAgICAgV2Fz
bUNhbGxJbmRpcmVjdDo6ZW1pdCh0aGlzLCBjYWxsZWVJbmRleCwgbV9jb2RlQmxvY2stPmFkZFNp
Z25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tB
cmd1bWVudHMsIHRhYmxlSW5kZXgpOworICAgICAgICBXYXNtQ2FsbEluZGlyZWN0OjplbWl0KHRo
aXMsIGNhbGxlZUluZGV4LCBtX2NvZGVCbG9jay0+YWRkU2lnbmF0dXJlKHNpZ25hdHVyZSksIGlu
Zm8uc3RhY2tPZmZzZXQsIGluZm8uc2l6ZU9mU3RhY2tBcmd1bWVudHMsIHRhYmxlSW5kZXgpOwog
ICAgIGVsc2UKLSAgICAgICAgV2FzbUNhbGxJbmRpcmVjdE5vVGxzOjplbWl0KHRoaXMsIGNhbGxl
ZUluZGV4LCBtX2NvZGVCbG9jay0+YWRkU2lnbmF0dXJlKHNpZ25hdHVyZSksIGluZm8uc3RhY2tP
ZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cywgdGFibGVJbmRleCk7CisgICAgICAg
IFdhc21DYWxsSW5kaXJlY3ROb1Rsczo6ZW1pdCh0aGlzLCBjYWxsZWVJbmRleCwgbV9jb2RlQmxv
Y2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLnNpemVP
ZlN0YWNrQXJndW1lbnRzLCB0YWJsZUluZGV4KTsKICAgICBpbmZvLmNvbW1pdFJlc3VsdHMocmVz
dWx0cyk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTM1NCwxMSArMTU0NywxNCBAQCBhdXRvIExM
SW50R2VuZXJhdG9yOjphZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0
b3I8RXhwcmVzc2lvblR5cAogICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZSA9IGFyZ3MudGFrZUxh
c3QoKTsKIAogICAgIExMSW50Q2FsbEluZm9ybWF0aW9uIGluZm8gPSBjYWxsSW5mb3JtYXRpb25G
b3JDYWxsZXIoc2lnbmF0dXJlKTsKLSAgICB1bmlmeVZhbHVlc1dpdGhCbG9jayhpbmZvLmFyZ3Vt
ZW50cywgYXJncyk7CisgICAgVmVjdG9yPFR5cGVkRXhwcmVzc2lvbj4gdHlwZWRBcmdzIChhcmdz
LnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQor
ICAgICAgICB0eXBlZEFyZ3NbaV0gPSB7IHNpZ25hdHVyZS5hcmd1bWVudChpKSwgYXJnc1tpXSB9
OworICAgIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGluZm8uYXJndW1lbnRzLCB0eXBlZEFyZ3MpOwog
ICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0VExTKCkpCi0gICAgICAgIFdhc21DYWxsUmVmOjplbWl0
KHRoaXMsIGNhbGxlZSwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZv
LnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMpOworICAgICAgICBXYXNt
Q2FsbFJlZjo6ZW1pdCh0aGlzLCBjYWxsZWUsIG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUoc2ln
bmF0dXJlKSwgaW5mby5zdGFja09mZnNldCwgaW5mby5zaXplT2ZTdGFja0FyZ3VtZW50cyk7CiAg
ICAgZWxzZQotICAgICAgICBXYXNtQ2FsbFJlZk5vVGxzOjplbWl0KHRoaXMsIGNhbGxlZSwgbV9j
b2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZv
Lm51bWJlck9mU3RhY2tBcmd1bWVudHMpOworICAgICAgICBXYXNtQ2FsbFJlZk5vVGxzOjplbWl0
KHRoaXMsIGNhbGxlZSwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZv
LnN0YWNrT2Zmc2V0LCBpbmZvLnNpemVPZlN0YWNrQXJndW1lbnRzKTsKICAgICBpbmZvLmNvbW1p
dFJlc3VsdHMocmVzdWx0cyk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTM2Niw3ICsxNTYyLDcg
QEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQ2FsbFJlZihjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXAKIAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkUmVm
SXNOdWxsKEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQ
YXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHJlc3VsdCA9IHB1c2go
VHlwZXM6OkkzMik7CiAgICAgV2FzbVJlZklzTnVsbDo6ZW1pdCh0aGlzLCByZXN1bHQsIHZhbHVl
KTsKIAogICAgIHJldHVybiB7IH07CkBAIC0xMzc0LDcgKzE1NzAsNyBAQCBhdXRvIExMSW50R2Vu
ZXJhdG9yOjphZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpCiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFJlZkZ1bmModWludDMyX3QgaW5k
ZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1
bHQgPSBwdXNoKCk7CisgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6RnVuY3JlZik7CiAgICAgV2Fz
bVJlZkZ1bmM6OmVtaXQodGhpcywgcmVzdWx0LCBpbmRleCk7CiAKICAgICByZXR1cm4geyB9OwpA
QCAtMTM4Miw3ICsxNTc4LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkUmVmRnVuYyh1aW50
MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGkKIAogYXV0byBMTElu
dEdlbmVyYXRvcjo6YWRkVGFibGVHZXQodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5
cGUgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAg
ICByZXN1bHQgPSBwdXNoKCk7CisgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6Vm9pZCk7IC8vIFRP
RE8KICAgICBXYXNtVGFibGVHZXQ6OmVtaXQodGhpcywgcmVzdWx0LCBpbmRleCwgdGFibGVJbmRl
eCk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTQxMSw3ICsxNjA3LDcgQEAgYXV0byBMTEludEdl
bmVyYXRvcjo6YWRkRWxlbURyb3AodW5zaWduZWQgZWxlbWVudEluZGV4KSAtPiBQYXJ0aWFsUmVz
dWx0CiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFRhYmxlU2l6ZSh1bnNpZ25lZCB0YWJsZUlu
ZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVz
dWx0ID0gcHVzaCgpOworICAgIHB1c2goVHlwZXM6OkkzMik7CiAgICAgV2FzbVRhYmxlU2l6ZTo6
ZW1pdCh0aGlzLCByZXN1bHQsIHRhYmxlSW5kZXgpOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTE0
MTksNyArMTYxNSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFRhYmxlU2l6ZSh1bnNpZ25l
ZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtCiAKIGF1dG8gTExJbnRHZW5l
cmF0b3I6OmFkZFRhYmxlR3Jvdyh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSBm
aWxsLCBFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFy
dGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICByZXN1bHQgPSBwdXNoKFR5
cGVzOjpJMzIpOwogICAgIFdhc21UYWJsZUdyb3c6OmVtaXQodGhpcywgcmVzdWx0LCBmaWxsLCBk
ZWx0YSwgdGFibGVJbmRleCk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTQ0Nyw3ICsxNjQzLDcg
QEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkVW5yZWFjaGFibGUoKSAtPiBQYXJ0aWFsUmVzdWx0
CiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEN1cnJlbnRNZW1vcnkoRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICBy
ZXN1bHQgPSBwdXNoKFR5cGVzOjpJMzIpOwogICAgIFdhc21DdXJyZW50TWVtb3J5OjplbWl0KHRo
aXMsIHJlc3VsdCk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTQ2OSw3ICsxNjY1LDcgQEAgYXV0
byBMTEludEdlbmVyYXRvcjo6YWRkRGF0YURyb3AodW5zaWduZWQgZGF0YVNlZ21lbnRJbmRleCkg
LT4gUGFydGlhbFJlc3VsdAogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4
cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVz
dWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6Okkz
Mik7CiAgICAgV2FzbUdyb3dNZW1vcnk6OmVtaXQodGhpcywgcmVzdWx0LCBkZWx0YSk7CiAKICAg
ICByZXR1cm4geyB9OwpAQCAtMTQ4OSw3ICsxNjg1LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6
YWRkTWVtb3J5Q29weShFeHByZXNzaW9uVHlwZSBkc3RBZGRyZXNzLCBFeHByZXNzaW9uVHlwZSBz
cmMKIAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkU2VsZWN0KEV4cHJlc3Npb25UeXBlIGNvbmRp
dGlvbiwgRXhwcmVzc2lvblR5cGUgbm9uWmVybywgRXhwcmVzc2lvblR5cGUgemVybywgRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2go
KTsKKyAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpWb2lkKTsgLy8gVE9ETwogICAgIFdhc21TZWxl
Y3Q6OmVtaXQodGhpcywgcmVzdWx0LCBjb25kaXRpb24sIG5vblplcm8sIHplcm8pOwogCiAgICAg
cmV0dXJuIHsgfTsKQEAgLTE0OTcsNyArMTY5MywzNCBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjph
ZGRTZWxlY3QoRXhwcmVzc2lvblR5cGUgY29uZGl0aW9uLCBFeHByZXNzaW9uVHlwZSBub25aZXJv
LAogCiBhdXRvIExMSW50R2VuZXJhdG9yOjpsb2FkKExvYWRPcFR5cGUgb3AsIEV4cHJlc3Npb25U
eXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQsIHVpbnQzMl90IG9mZnNldCkgLT4g
UGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICBzd2l0Y2ggKG9wKSB7
CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkOFM6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJ
MzJMb2FkOFU6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkMTZTOgorICAgIGNhc2UgTG9h
ZE9wVHlwZTo6STMyTG9hZDE2VToKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ6CisgICAg
ICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6OkkzMik7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBMb2FkT3BUeXBlOjpJNjRMb2FkOFM6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkOFU6
CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMTZTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6
STY0TG9hZDE2VToKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQzMlU6CisgICAgY2FzZSBM
b2FkT3BUeXBlOjpJNjRMb2FkMzJTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDoKKyAg
ICAgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6STY0KTsKKyAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAKKyAgICBjYXNlIExvYWRPcFR5cGU6OkYzMkxvYWQ6CisgICAgICAgIHJlc3VsdCA9IHB1
c2goVHlwZXM6OkYzMik7CisgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgY2FzZSBM
b2FkT3BUeXBlOjpGNjRMb2FkOgorICAgICAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpGNjQpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBMb2Fk
T3BUeXBlOjpJMzJMb2FkOFM6CiAgICAgICAgIFdhc21JMzJMb2FkOFM6OmVtaXQodGhpcywgcmVz
dWx0LCBwb2ludGVyLCBvZmZzZXQpOwpAQCAtMTU3NCw3ICsxNzk3LDIyIEBAIGF1dG8gTExJbnRH
ZW5lcmF0b3I6OnN0b3JlKFN0b3JlT3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBF
eHByZXNzaW9uVHlwCiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmF0b21pY0xvYWQoRXh0QXRvbWlj
T3BUeXBlIG9wLCBUeXBlLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0LCB1aW50MzJfdCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQg
PSBwdXNoKCk7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJ
MzJBdG9taWNMb2FkOFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY0xvYWQx
NlU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY0xvYWQ6CisgICAgICAgIHJl
c3VsdCA9IHB1c2goVHlwZXM6OkkzMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXh0QXRv
bWljT3BUeXBlOjpJNjRBdG9taWNMb2FkOFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2
NEF0b21pY0xvYWQxNlU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY0xvYWQz
MlU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY0xvYWQ6CisgICAgICAgIHJl
c3VsdCA9IHB1c2goVHlwZXM6Okk2NCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAogICAgIHN3
aXRjaCAob3ApIHsKICAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljTG9hZDhVOgog
ICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNMb2FkOFU6CkBAIC0xNjAwLDcgKzE4
MzgsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphdG9taWNMb2FkKEV4dEF0b21pY09wVHlwZSBv
cCwgVHlwZSwgRXhwcmVzc2lvblR5cGUgcG9pbnRlcgogCiBhdXRvIExMSW50R2VuZXJhdG9yOjph
dG9taWNTdG9yZShFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50
ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50MzJfdCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1
bHQKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHB1c2goKTsKKyAgICBhdXRvIHJlc3VsdCA9IHB1c2go
VHlwZXM6Okk2NCk7CiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgRXh0QXRvbWljT3BUeXBl
OjpJMzJBdG9taWNTdG9yZThVOgogICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNT
dG9yZThVOgpAQCAtMTYyMSwxMyArMTg1OSw2NiBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphdG9t
aWNTdG9yZShFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50ZQog
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIGRpZFBv
cFZhbHVlRnJvbVN0YWNrKCk7IC8vIElnbm9yZSB0aGUgcmVzdWx0LgorICAgIGRpZFBvcFZhbHVl
RnJvbVN0YWNrKFR5cGVzOjpJNjQpOyAvLyBJZ25vcmUgdGhlIHJlc3VsdC4KICAgICByZXR1cm4g
eyB9OwogfQogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphdG9taWNCaW5hcnlSTVcoRXh0QXRvbWlj
T3BUeXBlIG9wLCBUeXBlLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSB2
YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgdWludDMyX3Qgb2Zmc2V0KSAtPiBQYXJ0aWFs
UmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHN3aXRjaCAob3ApIHsKKyAgICBj
YXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13OEFkZFU6CisgICAgY2FzZSBFeHRBdG9t
aWNPcFR5cGU6OkkzMkF0b21pY1JtdzE2QWRkVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6
STMyQXRvbWljUm13QWRkOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXc4
U3ViVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13MTZTdWJVOgorICAg
IGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXdTdWI6CisgICAgY2FzZSBFeHRBdG9t
aWNPcFR5cGU6OkkzMkF0b21pY1JtdzhBbmRVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJ
MzJBdG9taWNSbXcxNkFuZFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1Jt
d0FuZDoKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13OE9yVToKKyAgICBj
YXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13MTZPclU6CisgICAgY2FzZSBFeHRBdG9t
aWNPcFR5cGU6OkkzMkF0b21pY1Jtd09yOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJB
dG9taWNSbXc4WG9yVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13MTZY
b3JVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXdYb3I6CisgICAgY2Fz
ZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1JtdzhYY2hnVToKKyAgICBjYXNlIEV4dEF0b21p
Y09wVHlwZTo6STMyQXRvbWljUm13MTZYY2hnVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6
STMyQXRvbWljUm13WGNoZzoKKyAgICAgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6STMyKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0
QXRvbWljUm13OEFkZFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzE2
QWRkVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13MzJBZGRVOgorICAg
IGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXdBZGQ6CisgICAgY2FzZSBFeHRBdG9t
aWNPcFR5cGU6Okk2NEF0b21pY1JtdzhTdWJVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJ
NjRBdG9taWNSbXcxNlN1YlU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1Jt
dzMyU3ViVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13U3ViOgorICAg
IGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXc4QW5kVToKKyAgICBjYXNlIEV4dEF0
b21pY09wVHlwZTo6STY0QXRvbWljUm13MTZBbmRVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBl
OjpJNjRBdG9taWNSbXczMkFuZFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21p
Y1Jtd0FuZDoKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13OE9yVToKKyAg
ICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13MTZPclU6CisgICAgY2FzZSBFeHRB
dG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzMyT3JVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBl
OjpJNjRBdG9taWNSbXdPcjoKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13
OFhvclU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzE2WG9yVToKKyAg
ICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13MzJYb3JVOgorICAgIGNhc2UgRXh0
QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXdYb3I6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6
Okk2NEF0b21pY1JtdzhYY2hnVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWlj
Um13MTZYY2hnVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13MzJYY2hn
VToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13WGNoZzoKKyAgICAgICAg
cmVzdWx0ID0gcHVzaChUeXBlczo6STY0KTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
KyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgCiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgRXh0
QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXc4QWRkVToKICAgICBjYXNlIEV4dEF0b21pY09wVHlw
ZTo6STY0QXRvbWljUm13OEFkZFU6CkBAIC0xNzI5LDcgKzIwMjAsMjMgQEAgYXV0byBMTEludEdl
bmVyYXRvcjo6YXRvbWljQmluYXJ5Uk1XKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSwgRXhwcmVz
c2lvblR5cGUgcG8KIAogYXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWljQ29tcGFyZUV4Y2hhbmdl
KEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVz
c2lvblR5cGUgZXhwZWN0ZWQsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0LCB1aW50MzJfdCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQg
PSBwdXNoKCk7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJ
MzJBdG9taWNSbXc4Q21weGNoZ1U6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21p
Y1JtdzE2Q21weGNoZ1U6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1Jtd0Nt
cHhjaGc6CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6OkkzMik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXc4Q21weGNoZ1U6CisgICAg
Y2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzE2Q21weGNoZ1U6CisgICAgY2FzZSBF
eHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzMyQ21weGNoZ1U6CisgICAgY2FzZSBFeHRBdG9t
aWNPcFR5cGU6Okk2NEF0b21pY1Jtd0NtcHhjaGc6CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlw
ZXM6Okk2NCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKICAgICBz
d2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1JtdzhDbXB4
Y2hnVToKICAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13OENtcHhjaGdVOgpA
QCAtMTc1Niw3ICsyMDYzLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWljQ29tcGFyZUV4
Y2hhbmdlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSwgRXhwcmVzc2lvblQKIAogYXV0byBMTElu
dEdlbmVyYXRvcjo6YXRvbWljV2FpdChFeHRBdG9taWNPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBl
IHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSB0aW1lb3V0LCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0LCB1aW50MzJfdCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1bHQK
IHsKLSAgICByZXN1bHQgPSBwdXNoKCk7CisgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6STMyKTsK
ICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Ok1lbW9yeUF0b21p
Y1dhaXQzMjoKICAgICAgICAgV2FzbU1lbW9yeUF0b21pY1dhaXQzMjo6ZW1pdCh0aGlzLCByZXN1
bHQsIHBvaW50ZXIsIG9mZnNldCwgdmFsdWUsIHRpbWVvdXQpOwpAQCAtMTc3Myw3ICsyMDgwLDcg
QEAgYXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWljV2FpdChFeHRBdG9taWNPcFR5cGUgb3AsIEV4
cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHIKIAogYXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWlj
Tm90aWZ5KEV4dEF0b21pY09wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVz
c2lvblR5cGUgY291bnQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQsIHVpbnQzMl90IG9mZnNldCkg
LT4gUGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICByZXN1bHQgPSBw
dXNoKFR5cGVzOjpJMzIpOwogICAgIFJFTEVBU0VfQVNTRVJUKG9wID09IEV4dEF0b21pY09wVHlw
ZTo6TWVtb3J5QXRvbWljTm90aWZ5KTsKICAgICBXYXNtTWVtb3J5QXRvbWljTm90aWZ5OjplbWl0
KHRoaXMsIHJlc3VsdCwgcG9pbnRlciwgb2Zmc2V0LCBjb3VudCk7CiAgICAgcmV0dXJuIHsgfTsK
QEAgLTE3ODcsNyArMjA5NCwyNCBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphdG9taWNGZW5jZShF
eHRBdG9taWNPcFR5cGUsIHVpbnQ4X3QpIC0+IFBhcnRpYWxSZXN1bHQKIAogYXV0byBMTEludEdl
bmVyYXRvcjo6dHJ1bmNTYXR1cmF0ZWQoRXh0MU9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgb3Bl
cmFuZCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgVHlwZSwgVHlwZSkgLT4gUGFydGlhbFJlc3Vs
dAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBF
eHQxT3BUeXBlOjpJMzJUcnVuY1NhdEYzMlM6CisgICAgY2FzZSBFeHQxT3BUeXBlOjpJMzJUcnVu
Y1NhdEYzMlU6CisgICAgY2FzZSBFeHQxT3BUeXBlOjpJMzJUcnVuY1NhdEY2NFM6CisgICAgY2Fz
ZSBFeHQxT3BUeXBlOjpJMzJUcnVuY1NhdEY2NFU6CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlw
ZXM6OkkzMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXh0MU9wVHlwZTo6STY0VHJ1bmNT
YXRGMzJTOgorICAgIGNhc2UgRXh0MU9wVHlwZTo6STY0VHJ1bmNTYXRGMzJVOgorICAgIGNhc2Ug
RXh0MU9wVHlwZTo6STY0VHJ1bmNTYXRGNjRTOgorICAgIGNhc2UgRXh0MU9wVHlwZTo6STY0VHJ1
bmNTYXRGNjRVOgorICAgICAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpJNjQpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgCiAgICAgc3dpdGNoIChvcCkgewogICAgIGNh
c2UgRXh0MU9wVHlwZTo6STMyVHJ1bmNTYXRGMzJTOgogICAgICAgICBXYXNtSTMyVHJ1bmNTYXRG
MzJTOjplbWl0KHRoaXMsIHJlc3VsdCwgb3BlcmFuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT1NSRW50cnlEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtT1NSRW50cnlEYXRhLmgKaW5kZXggODM0MjdkMjA3MzJlLi42ZGZjYWFmMTIx
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PU1JFbnRyeURh
dGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT1NSRW50cnlEYXRhLmgK
QEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fZnVuY3Rpb25JbmRleChmdW5j
dGlvbkluZGV4KQogICAgICAgICAsIG1fbG9vcEluZGV4KGxvb3BJbmRleCkKICAgICAgICAgLCBt
X3ZhbHVlcyhXVEZNb3ZlKHN0YWNrTWFwKSkKLSAgICB7CisgICAgeyBpZiAoIU9wdGlvbnM6OnZh
bGlkYXRlR3JhcGgoKSB8fCBPcHRpb25zOjp2YWxpZGF0ZUdyYXBoQXRFYWNoUGhhc2UoKSkgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCiAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleCgp
IGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25JbmRleDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBhcnNlci5oCmluZGV4IGVkMDBkOWEwYTQyYi4uODBjMWM4NjJlZDMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oCkBAIC00NSw2ICs0NSw5IEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IE1BWF9TSU1EX0FSR1VNRU5UUyA9IDI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBNQVhfU0lN
RF9JTU1FRElBVEVTID0gMjsKKwogbmFtZXNwYWNlIEZhaWx1cmVIZWxwZXIgewogLy8gRklYTUUg
V2Ugc2hvdWxkIG1vdmUgdGhpcyB0byBtYWtlU3RyaW5nLiBJdCdzIGluIGl0cyBvd24gbmFtZXNw
YWNlIHRvIGVuYWJsZSBDKysgQXJndW1lbnQgRGVwZW5kZW50IExvb2t1cCDDoCBsYSBzdGQ6OnN3
YXA6IHVzZXIgY29kZSBjYW4gZGVibGFyZSBpdHMgb3duICJib3hGYWlsdXJlIiBhbmQgdGhlIGZh
aWwoKSBoZWxwZXIgd2lsbCBmaW5kIGl0LgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTc3LDYg
KzgwLDggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVUlu
dDgodWludDhfdCYpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVUludDMyKHVp
bnQzMl90Jik7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VVSW50NjQodWludDY0
X3QmKTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUltbUJ5dGVBcnJheTE2KHYx
MjhfdCYpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlSW1tTGFu
ZUlkeCh1aW50OF90IGxhbmVDb3VudCwgdWludDhfdCYpOwogICAgIGJvb2wgV0FSTl9VTlVTRURf
UkVUVVJOIHBhcnNlVmFyVUludDMyKHVpbnQzMl90Jik7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9S
RVRVUk4gcGFyc2VWYXJVSW50NjQodWludDY0X3QmKTsKIApAQCAtMjIzLDYgKzIyOCwyNSBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VVSW50NjQodWludDY0
X3QmIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgU3Vj
Y2Vzc1R5cGU+CitBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VJ
bW1CeXRlQXJyYXkxNih2MTI4X3QmIHJlc3VsdCkKK3sKKyAgICBpZiAobGVuZ3RoKCkgPCAxNiB8
fCBtX29mZnNldCA+IGxlbmd0aCgpIC0gMTYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBz
dGQ6OmNvcHkoc291cmNlKCkgKyBtX29mZnNldCwgc291cmNlKCkgKyBtX29mZnNldCArIDE2LCBy
ZXN1bHQudTh4MTYpOworICAgIG1fb2Zmc2V0ICs9IDE2OworICAgIHJldHVybiB0cnVlOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTdWNjZXNzVHlwZT4KK0FMV0FZU19JTkxJTkUgdHlwZW5hbWUg
UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6UGFydGlhbFJlc3VsdCBQYXJzZXI8U3VjY2Vzc1R5cGU+Ojpw
YXJzZUltbUxhbmVJZHgodWludDhfdCBsYW5lQ291bnQsIHVpbnQ4X3QmIHJlc3VsdCkKK3sKKyAg
ICBSRUxFQVNFX0FTU0VSVChsYW5lQ291bnQgPT0gMiB8fCBsYW5lQ291bnQgPT0gNCB8fCBsYW5l
Q291bnQgPT0gOCB8fCBsYW5lQ291bnQgPT0gMTYgfHwgbGFuZUNvdW50ID09IDMyKTsKKyAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KHJlc3VsdCksICJDb3VsZCBub3QgcGFyc2Ug
dGhlIGxhbmUgaW5kZXggaW1tZWRpYXRlIGJ5dGUuIik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RihyZXN1bHQgPj0gbGFuZUNvdW50LCAiTGFuZSBpbmRleCBpbW1lZGlhdGUgaXMgdG9vIGxhcmdl
LCBzYXcgIiwgbGFuZUNvdW50LCAiLCBleHBlY3RlZCBhbiBJbW1MYW5lSWR4IiwgbGFuZUNvdW50
KTsKKyAgICByZXR1cm4geyB9OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdWNjZXNzVHlwZT4K
IEFMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVVJbnQ4KHVpbnQ4
X3QmIHJlc3VsdCkKIHsKQEAgLTI3NCw3ICsyOTgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUGFy
c2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYXJVSW50MSh1aW50OF90JiByZXN1bHQpCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFN1Y2Nlc3NUeXBlPgotQUxXQVlTX0lOTElORSB0eXBlbmFtZSBQYXJz
ZXI8U3VjY2Vzc1R5cGU+OjpQYXJ0aWFsUmVzdWx0IFBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNl
QmxvY2tTaWduYXR1cmUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIEJsb2NrU2lnbmF0
dXJlJiByZXN1bHQpCitBTFdBWVNfSU5MSU5FIGF1dG8gUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFy
c2VCbG9ja1NpZ25hdHVyZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgQmxvY2tTaWdu
YXR1cmUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIGludDhfdCB0eXBlS2luZDsK
ICAgICBpZiAocGVla0ludDcodHlwZUtpbmQpICYmIGlzVmFsaWRUeXBlS2luZCh0eXBlS2luZCkp
IHsKQEAgLTMzMSw3ICszNTUsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NU
eXBlPjo6cGFyc2VWYWx1ZVR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mCiAgICAgVHlwZUtp
bmQgdHlwZUtpbmQgPSBzdGF0aWNfY2FzdDxUeXBlS2luZD4oa2luZCk7CiAgICAgYm9vbCBpc051
bGxhYmxlID0gdHJ1ZTsKICAgICBTaWduYXR1cmVJbmRleCBzaWdJbmRleCA9IDA7Ci0KKyAgICAK
ICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygp
ICYmICh0eXBlS2luZCA9PSBUeXBlS2luZDo6RnVuY3JlZiB8fCB0eXBlS2luZCA9PSBUeXBlS2lu
ZDo6RXh0ZXJucmVmKSkgewogICAgICAgICBzaWdJbmRleCA9IHN0YXRpY19jYXN0PFNpZ25hdHVy
ZUluZGV4Pih0eXBlS2luZCk7CiAgICAgICAgIHR5cGVLaW5kID0gVHlwZUtpbmQ6OlJlZk51bGw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwCmluZGV4IGY5
YTU2MWI4NTBmYy4uMDgxM2Q0NjAzYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtOTYsNyArOTYsNyBAQCBSZWZQdHI8U2lnbmF0dXJlPiBT
aWduYXR1cmU6OnRyeUNyZWF0ZShTaWduYXR1cmVBcmdDb3VudCByZXR1cm5Db3VudCwgU2lnbmF0
dXJlQQogCiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6U2lnbmF0dXJlSW5mb3JtYXRpb24oKQogewot
I2RlZmluZSBNQUtFX1RIVU5LX1NJR05BVFVSRSh0eXBlLCBlbmMsIHN0ciwgdmFsLCBfKSAgICAg
ICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBNQUtFX1RIVU5LX1NJR05BVFVSRSh0eXBlLCBl
bmMsIHN0ciwgdmFsLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgICAgIGlmIChUeXBlS2luZDo6dHlwZSAhPSBUeXBlS2luZDo6Vm9pZCkgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBSZWZQdHI8U2lnbmF0dXJl
PiBzaWcgPSBTaWduYXR1cmU6OnRyeUNyZWF0ZSgxLCAwKTsgICAgICAgICAgICBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVNpbWRPcGNvZGVzLnB5IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVTaW1kT3Bjb2Rlcy5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjMjZiNmNhODVmNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlU2ltZE9wY29kZXMu
cHkKQEAgLTAsMCArMSwxMTggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworIyBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIHRoZSBv
cGNvZGUgZGF0YSBmb3Igc2ltZCBvcGNvZGVzCisjIGNzdiBzb3VyY2U6IGh0dHBzOi8vZG9jcy5n
b29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzFtSXRBUEREeVVEOTdRZHRCOXlwNDR1dFRQOXZSUlM5
WE12MFlaX2VQejlzL2VkaXQ/dXNwPXNoYXJpbmcKKworaW1wb3J0IGNzdgoraW1wb3J0IGpzb24K
KwordmVyYm9zZSA9IEZhbHNlCisKK2RlZiBjcHBUeXBlKHR5cGUpOgorICAgIGlmIHR5cGUgPT0g
ImJvb2wiOgorICAgICAgICByZXR1cm4gIkkzMiIKKyAgICByZXR1cm4gIiIuam9pbihtYXAobGFt
YmRhIHg6IHguY2FwaXRhbGl6ZSgpLCB0eXBlLnNwbGl0KCdfJykpKQorCitkZWYgc2ltZE9wY29k
ZXMoY3N2RGlyZWN0b3J5KToKKyAgICBvcHMgPSB7fQorCisgICAgd2l0aCBvcGVuKGNzdkRpcmVj
dG9yeSArICIvc2ltZF9vcGNvZGVzLmNzdiIsICdyJykgYXMgY3N2ZmlsZToKKyAgICAgICAgcmVh
ZGVyID0gY3N2LkRpY3RSZWFkZXIoY3N2ZmlsZSkKKyAgICAgICAgZm9yIHJvdyBpbiByZWFkZXI6
CisgICAgICAgICAgICBvcHNbcm93WyJJbnN0cnVjdGlvbiJdXSA9IGNvbnZlcnRSb3cocm93KQor
CisgICAgaWYgdmVyYm9zZToKKyAgICAgICAgcHJpbnQoanNvbi5kdW1wcyhvcHMsIHNvcnRfa2V5
cz1UcnVlLCBpbmRlbnQ9NCkpCisKKyAgICByZXR1cm4gb3BzCisKK2RlZiBjb252ZXJ0Um93KHJv
dyk6IAorICAgIHJlcyA9IHt9CisKKyAgICByZXNbImNhdGVnb3J5Il0gPSByb3dbImNhdGVnb3J5
Il0KKyAgICByZXNbInZhbHVlIl0gPSBpbnQocm93WyJ2YWx1ZSJdLDApCisgICAgcmVzWyJleHRl
bmRlZE9wIl0gPSBpbnQocm93WyJleHRlbmRlZE9wIl0sMCkKKyAgICBzY2FsYXJUeXBlID0gcm93
WyJzY2FsYXJUeXBlIl0KKyAgICByZXNbInNpbWRfc2NhbGFyX3R5cGUiXSA9IHNjYWxhclR5cGUK
KyAgICBpZiBzY2FsYXJUeXBlIG5vdCBpbiBbJ3ZvaWQnLCAiaTMyIiwgImk2NCIsICJmMzIiLCAi
ZjY0Il06CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihmImludmFsaWQgc2NhbGFyIHR5cGU6IHtz
Y2FsYXJUeXBlfSIpCisgICAgcmVzWydzaW1kX29wZXJhdGlvbiddID0gcm93WyJvcCJdCisgICAg
cmVzWydzaW1kX3NpZ25fZXh0ZW5kX21vZGUnXSA9IHJvd1sic2lnbkV4dGVuZCJdCisgICAgcmVz
WydzaW1kX2xhbmVfaW50ZXJwcmV0YXRpb24nXSA9IHJvd1siaW50ZXJwcmV0YXRpb24iXQorICAg
IHJlc1siaXNfc2ltZF9zcGVjaWFsX29wIl0gPSAocm93WyJzcGVjaWFsIl0gPT0gJ3knKQorCisg
ICAgZGVmIGZpeFBhcmFtcyhwKToKKyAgICAgICAgcCA9IHAuc3RyaXAoKQorICAgICAgICBwID0g
cC5zcGxpdCgiLCIpCisgICAgICAgIHAgPSBbdC5zdHJpcCgpIGZvciB0IGluIHAgaWYgdCAhPSAn
J10KKyAgICAgICAgcmV0dXJuIFtmaXhUeXBlKHQpIGZvciB0IGluIHBdCisKKyAgICBkZWYgZml4
VHlwZSh0KToKKyAgICAgICAgdCA9IHQuc3BsaXQoIjoiKQorICAgICAgICB0ID0gdFstMV0uc3Ry
aXAoKQorCisgICAgICAgIGlmIHQgPT0gInYiOgorICAgICAgICAgICAgcmV0dXJuICJ2MTI4Igor
ICAgICAgICBpZiB0ID09ICJzIjoKKyAgICAgICAgICAgIGlmIHNjYWxhclR5cGUgPT0gJ3ZvaWQn
OgorICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKGYiaW5zdHJ1Y3Rpb24ge3Jlc30gZG9lcyBu
b3QgaGF2ZSBhIHNjYWxhciB0eXBlIikKKyAgICAgICAgICAgIHJldHVybiBzY2FsYXJUeXBlCisK
KyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKGYiZXJyb3I6IHR5cGUge3R9IG5vdCBmb3VuZCwgdXBk
YXRlIGdlbmVyYXRlU2ltZE9wY29kZXMucHkiKQorICAgIAorICAgIGRlZiBmaXhJbW1zKHApOgor
ICAgICAgICBwID0gcC5zdHJpcCgpCisgICAgICAgIHAgPSBwLnNwbGl0KCIsIikKKyAgICAgICAg
cCA9IFt0LnN0cmlwKCkgZm9yIHQgaW4gcCBpZiB0ICE9ICcnXQorICAgICAgICBwID0gW2ZpeElt
bSh0KSBmb3IgdCBpbiBwXQorICAgICAgICByZXR1cm4gW2ogZm9yIGkgaW4gcCBmb3IgaiBpbiBp
XQorICAgIAorICAgIGRlZiBmaXhJbW0odCk6CisgICAgICAgIHQgPSB0LnNwbGl0KCI6IikKKyAg
ICAgICAgdCA9IHRbLTFdLnN0cmlwKCkKKworICAgICAgICBpZiB0ID09ICJtZW1hcmciOgorICAg
ICAgICAgICAgcmV0dXJuIFt7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn0s
IHsibmFtZSI6ICJhbGdpbiIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XQorICAgICAgICBpZiB0ID09
ICJJbW1CeXRlWzE2XSI6CisgICAgICAgICAgICByZXR1cm4gW3sibmFtZSI6ICJpbW1ieXRlWzA6
OF0iLCAidHlwZSI6ICJ2YXJ1aW50NjQifSwgeyJuYW1lIjogImltbWJ5dGVbODoxNl0iLCAidHlw
ZSI6ICJ2YXJ1aW50NjQifV0KKyAgICAgICAgaWYgdCBpbiBbIkltbUxhbmVJZHgyIiwgIkltbUxh
bmVJZHg0IiwgIkltbUxhbmVJZHg4IiwgIkltbUxhbmVJZHgxNiIsICJJbW1MYW5lSWR4Il06Cisg
ICAgICAgICAgICByZXR1cm4gW3sibmFtZSI6ICJsYW5laWR4IiwgInR5cGUiOiAidmFydWludDgi
LCAibGFuZVNpemUiOiB0W2xlbigiSW1tTGFuZUlkeCIpOl19XQorCisgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbihmImVycm9yOiB0eXBlIHt0fSBub3QgZm91bmQsIHVwZGF0ZSBnZW5lcmF0ZVNpbWRP
cGNvZGVzLnB5IikKKworICAgIHJlc1siaW1tZWRpYXRlIl0gPSBmaXhJbW1zKHJvd1siSW1tIl0p
CisgICAgcmVzWyJwYXJhbWV0ZXIiXSA9IGZpeFBhcmFtcyhyb3dbInBhcmFtcyJdKQorICAgIHJl
c1sicmV0dXJuIl0gPSBbZml4VHlwZShyb3dbInJldHVybiJdKV0gaWYgcm93WyJyZXR1cm4iXSAh
PSAnJyBlbHNlIFtdCisKKyAgICB3YXNtT3AgPSBjcHBUeXBlKHJlc1sic2ltZF9vcGVyYXRpb24i
XSkgKyBjcHBUeXBlKHJlc1sic2ltZF9sYW5lX2ludGVycHJldGF0aW9uIl0pCisgICAgaWYgcmVz
WyJzaW1kX3NpZ25fZXh0ZW5kX21vZGUiXSA9PSAiVSI6CisgICAgICAgIHdhc21PcCArPSAiVSIK
KyAgICBlbGlmIHJlc1sic2ltZF9zaWduX2V4dGVuZF9tb2RlIl0gPT0gIlMiOgorICAgICAgICB3
YXNtT3AgKz0gIlMiCisgICAgcmVzWyJiM29wIl0gPSBjcHBUeXBlKHJlc1sic2ltZF9vcGVyYXRp
b24iXSkKKyAgICByZXNbIndhc21PcCJdID0gIldhc21TaW1kIiArIHdhc21PcAorCisgICAgcmV0
dXJuIHJlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbS5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2dlbmVyYXRlV2FzbS5weQppbmRleCBkNGU2MTBlMWYyMTcuLjU3OGYzNmEwNTM1NiAx
MDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbS5weQpAQCAtMjcsMTkg
KzI3LDIzIEBACiAKIGltcG9ydCBqc29uCiBpbXBvcnQgbWF0aAoraW1wb3J0IG9zCiBpbXBvcnQg
cmUKK2Zyb20gZ2VuZXJhdGVTaW1kT3Bjb2RlcyBpbXBvcnQgKgogCiBjbGFzcyBXYXNtOgogICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBzY3JpcHROYW1lLCBqc29uUGF0aCk6CiAgICAgICAgIHdhc21G
aWxlID0gb3Blbihqc29uUGF0aCwgInIiKQogICAgICAgICB3YXNtID0ganNvbi5sb2FkKG9wZW4o
anNvblBhdGgsICJyIikpCiAgICAgICAgIHdhc21GaWxlLmNsb3NlKCkKKyAgICAgICAganNvbkRp
cmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoanNvblBhdGgpKQogICAg
ICAgICBmb3IgcHJlIGluIHdhc21bInByZWFtYmxlIl06CiAgICAgICAgICAgICBpZiBwcmVbIm5h
bWUiXSA9PSAidmVyc2lvbiI6CiAgICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZFZlcnNpb25O
dW1iZXIgPSBzdHIocHJlWyJ2YWx1ZSJdKQogICAgICAgICBzZWxmLnByZWFtYmxlID0gd2FzbVsi
cHJlYW1ibGUiXQogICAgICAgICBzZWxmLnR5cGVzID0gd2FzbVsidHlwZSJdCiAgICAgICAgIHNl
bGYub3Bjb2RlcyA9IHdhc21bIm9wY29kZSJdCisgICAgICAgIHNlbGYub3Bjb2Rlcy51cGRhdGUo
c2ltZE9wY29kZXMoanNvbkRpcmVjdG9yeSkpCiAgICAgICAgIHNlbGYuaGVhZGVyID0gIiIiLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCkBAIC0xMTAsNiArMTE0LDggQEAgZGVmIGlzQXRvbWljU3RvcmUob3ApOgogZGVmIGlz
QXRvbWljQmluYXJ5Uk1XKG9wKToKICAgICByZXR1cm4gb3BbImNhdGVnb3J5Il0gPT0gImF0b21p
Yy5ybXcuYmluYXJ5IgogCitkZWYgaXNTaW1kKG9wKToKKyAgICByZXR1cm4gb3BbImNhdGVnb3J5
Il0uc3RhcnRzd2l0aCgic2ltZCIpCiAKIGRlZiBpc1NpbXBsZShvcCk6CiAgICAgcmV0dXJuICJi
M29wIiBpbiBvcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJh
dGVXYXNtT3BzSGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVX
YXNtT3BzSGVhZGVyLnB5CmluZGV4IDY1NzZhNjljNTY4My4uNWNmMDE4OTdlMjQxIDEwMDc1NQot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3BzSGVhZGVyLnB5
CkBAIC00Myw3ICs0Myw3IEBAIHdhc21PcHNIRmlsZSA9IG9wZW4oYXJnc1syXSwgInciKQogZGVm
IGNwcFR5cGUodHlwZSk6CiAgICAgaWYgdHlwZSA9PSAiYm9vbCI6CiAgICAgICAgIHJldHVybiAi
STMyIgotICAgIHJldHVybiB0eXBlLmNhcGl0YWxpemUoKQorICAgIHJldHVybiAiIi5qb2luKG1h
cChsYW1iZGEgeDogeC5jYXBpdGFsaXplKCksIHR5cGUuc3BsaXQoJ18nKSkpCiAKIAogZGVmIGNw
cE1hY3JvKHdhc21PcGNvZGUsIHZhbHVlLCBiMywgaW5jLCAqZXh0cmFBcmdzKToKQEAgLTUzLDEz
ICs1MywyNSBAQCBkZWYgY3BwTWFjcm8od2FzbU9wY29kZSwgdmFsdWUsIGIzLCBpbmMsICpleHRy
YUFyZ3MpOgogZGVmIHR5cGVNYWNyb2l6ZXIoKToKICAgICBpbmMgPSAwCiAgICAgZm9yIHR5IGlu
IHdhc20udHlwZXM6Ci0gICAgICAgIHlpZWxkIGNwcE1hY3JvKHR5LCB3YXNtLnR5cGVzW3R5XVsi
dmFsdWUiXSwgd2FzbS50eXBlc1t0eV1bImIzdHlwZSJdLCBpbmMsIHR5KQorICAgICAgICB5aWVs
ZCBjcHBNYWNybyh0eSwgd2FzbS50eXBlc1t0eV1bInZhbHVlIl0sIHdhc20udHlwZXNbdHldWyJi
M3R5cGUiXSwgaW5jLCB0eSwgc3RyKHdhc20udHlwZXNbdHldWyJzaXplIl0pKQogICAgICAgICBp
bmMgKz0gMQogCiB0eXBlX2RlZmluaXRpb25zID0gWyIjZGVmaW5lIEZPUl9FQUNIX1dBU01fVFlQ
RShtYWNybykiXQogdHlwZV9kZWZpbml0aW9ucy5leHRlbmQoW3QgZm9yIHQgaW4gdHlwZU1hY3Jv
aXplcigpXSkKIHR5cGVfZGVmaW5pdGlvbnMgPSAiIi5qb2luKHR5cGVfZGVmaW5pdGlvbnMpCiAK
K3NpbWRMYW5lT3BlcmF0aW9ucyA9IHNldChbY3BwVHlwZShvcFsnb3Bjb2RlJ11bJ3NpbWRfb3Bl
cmF0aW9uJ10pIGZvciBvcCBpbiB3YXNtLm9wY29kZUl0ZXJhdG9yKGlzU2ltZCldKQorc2ltZExh
bmVPcGVyYXRpb25zUHJpbnRlciA9ICIiIgorICAgIHN0YXRpYyB2b2lkIGR1bXBTaW1kTGFuZU9w
ZXJhdGlvbihQcmludFN0cmVhbSYgb3V0LCBTaW1kTGFuZU9wZXJhdGlvbiBvcCkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgIiIiICsgIlxuICAgICAgICAiLmpvaW4oWyJj
YXNlIFNpbWRMYW5lT3BlcmF0aW9uOjoiICsgeCArICI6IG91dC5wcmludChcIiIgKyB4ICArICJc
Iik7IGJyZWFrOyIgZm9yIHggaW4gc2ltZExhbmVPcGVyYXRpb25zXSkgKyAiIiIKKyAgICAgICAg
fQorICAgIH0KKyAgICBNQUtFX1BSSU5UX0FEQVBUT1IoU2ltZExhbmVPcGVyYXRpb25EdW1wLCBT
aW1kTGFuZU9wZXJhdGlvbiwgZHVtcFNpbWRMYW5lT3BlcmF0aW9uKTsKKyIiIgorc2ltZExhbmVP
cGVyYXRpb25zID0gIixcbiAgICAiLmpvaW4oc2ltZExhbmVPcGVyYXRpb25zKQorCiAKIGRlZiBv
cGNvZGVNYWNyb2l6ZXIoZmlsdGVyLCBvcGNvZGVGaWVsZD0idmFsdWUiLCBtb2RpZmllcj1Ob25l
KToKICAgICBpbmMgPSAwCkBAIC0xMTUsOCArMTI3LDMxIEBAIGRlZiBhdG9taWNCaW5hcnlSTVdN
YWNyb2l6ZXIoKToKICAgICByZXR1cm4gb3Bjb2RlTWFjcm9pemVyKGxhbWJkYSBvcDogaXNBdG9t
aWNCaW5hcnlSTVcob3ApLCBtb2RpZmllcj1tb2RpZmllciwgb3Bjb2RlRmllbGQ9ImV4dGVuZGVk
T3AiKQogCiAKK2RlZiBzaW1kTWFjcm9saXplcigpOgorICAgIGRlZiBtb2RpZmllcihvcCk6Cisg
ICAgICAgIHJldHVyblR5cGUgPSAiVHlwZXM6OiIgKyBjcHBUeXBlKG9wWydyZXR1cm4nXVswXSkg
aWYgbGVuKG9wWyJyZXR1cm4iXSkgPT0gMSBlbHNlICJUeXBlczo6Vm9pZCIKKyAgICAgICAgaW1t
ZWRpYXRlcyA9IGxpc3QobWFwKGxhbWJkYSB4OiB4WyJsYW5lU2l6ZSJdLCBvcFsiaW1tZWRpYXRl
Il0pKQorICAgICAgICBpbW1lZGlhdGVzQXJyID0gInsiICsgJywnLmpvaW4oaW1tZWRpYXRlcykg
KyAifSIKKyAgICAgICAgYXJndW1lbnRzID0gbGlzdChtYXAobGFtYmRhIHg6ICImVHlwZXM6OiIg
KyBjcHBUeXBlKHgpLCBvcFsicGFyYW1ldGVyIl0pKQorICAgICAgICBhcmd1bWVudHNBcnIgPSAi
eyIgKyAnLCcuam9pbihhcmd1bWVudHMpICsgIn0iCisgICAgICAgIHJldHVybiBbb3BbIndhc21P
cCJdLCByZXR1cm5UeXBlLCAKKyAgICAgICAgICAgIHN0cihsZW4oaW1tZWRpYXRlcykpLCBpbW1l
ZGlhdGVzQXJyLCBzdHIobGVuKGFyZ3VtZW50cykpLCBhcmd1bWVudHNBcnIsIAorICAgICAgICAg
ICAgIlNpbWRMYW5lSW50ZXJwcmV0YXRpb246OiIgKyBvcFsnc2ltZF9sYW5lX2ludGVycHJldGF0
aW9uJ10sIAorICAgICAgICAgICAgIlNpbWRTaWduRXh0ZW5kTW9kZTo6IiArIG9wWydzaW1kX3Np
Z25fZXh0ZW5kX21vZGUnXV0KKyAgICByZXR1cm4gb3Bjb2RlTWFjcm9pemVyKGxhbWJkYSBvcDog
aXNTaW1kKG9wKSBhbmQgbm90IG9wWyJpc19zaW1kX3NwZWNpYWxfb3AiXSwgbW9kaWZpZXI9bW9k
aWZpZXIsIG9wY29kZUZpZWxkPSJleHRlbmRlZE9wIikKKworCitkZWYgc2ltZFNwZWNpYWxNYWNy
b2xpemVyKCk6CisgICAgZGVmIG1vZGlmaWVyKG9wKToKKyAgICAgICAgcmV0dXJuIFsKKyAgICAg
ICAgICAgICJTaW1kTGFuZU9wZXJhdGlvbjo6IiArIGNwcFR5cGUob3BbJ3NpbWRfb3BlcmF0aW9u
J10pLCAKKyAgICAgICAgICAgICJTaW1kTGFuZUludGVycHJldGF0aW9uOjoiICsgb3BbJ3NpbWRf
bGFuZV9pbnRlcnByZXRhdGlvbiddLCAKKyAgICAgICAgICAgICJTaW1kU2lnbkV4dGVuZE1vZGU6
OiIgKyBvcFsnc2ltZF9zaWduX2V4dGVuZF9tb2RlJ11dCisgICAgcmV0dXJuIG9wY29kZU1hY3Jv
aXplcihsYW1iZGEgb3A6IGlzU2ltZChvcCkgYW5kIG9wWyJpc19zaW1kX3NwZWNpYWxfb3AiXSwg
bW9kaWZpZXI9bW9kaWZpZXIsIG9wY29kZUZpZWxkPSJleHRlbmRlZE9wIikKKworCiBkZWZpbmVz
ID0gWyIjZGVmaW5lIEZPUl9FQUNIX1dBU01fU1BFQ0lBTF9PUChtYWNybykiXQotZGVmaW5lcy5l
eHRlbmQoW29wIGZvciBvcCBpbiBvcGNvZGVNYWNyb2l6ZXIobGFtYmRhIG9wOiBub3QgKGlzVW5h
cnkob3ApIG9yIGlzQmluYXJ5KG9wKSBvciBvcFsiY2F0ZWdvcnkiXSA9PSAiY29udHJvbCIgb3Ig
b3BbImNhdGVnb3J5Il0gPT0gIm1lbW9yeSIgb3Igb3BbInZhbHVlIl0gPT0gMHhmYyBvciBpc0F0
b21pYyhvcCkpKV0pCitkZWZpbmVzLmV4dGVuZChbb3AgZm9yIG9wIGluIG9wY29kZU1hY3JvaXpl
cihsYW1iZGEgb3A6IG5vdCAoaXNVbmFyeShvcCkgb3IgaXNCaW5hcnkob3ApIG9yIG9wWyJjYXRl
Z29yeSJdID09ICJjb250cm9sIiBvciBvcFsiY2F0ZWdvcnkiXSA9PSAibWVtb3J5IiBvciBvcFsi
dmFsdWUiXSA9PSAweGZjIG9yIGlzQXRvbWljKG9wKSBvciBpc1NpbWQob3ApKSldKQogZGVmaW5l
cy5hcHBlbmQoIlxuXG4jZGVmaW5lIEZPUl9FQUNIX1dBU01fQ09OVFJPTF9GTE9XX09QKG1hY3Jv
KSIpCiBkZWZpbmVzLmV4dGVuZChbb3AgZm9yIG9wIGluIG9wY29kZU1hY3JvaXplcihsYW1iZGEg
b3A6IG9wWyJjYXRlZ29yeSJdID09ICJjb250cm9sIildKQogZGVmaW5lcy5hcHBlbmQoIlxuXG4j
ZGVmaW5lIEZPUl9FQUNIX1dBU01fU0lNUExFX1VOQVJZX09QKG1hY3JvKSIpCkBAIC0xNDMsNiAr
MTc4LDEwIEBAIGRlZmluZXMuYXBwZW5kKCJcblxuI2RlZmluZSBGT1JfRUFDSF9XQVNNX0VYVF9B
VE9NSUNfQklOQVJZX1JNV19PUChtYWNybykiKQogZGVmaW5lcy5leHRlbmQoW29wIGZvciBvcCBp
biBhdG9taWNCaW5hcnlSTVdNYWNyb2l6ZXIoKV0pCiBkZWZpbmVzLmFwcGVuZCgiXG5cbiNkZWZp
bmUgRk9SX0VBQ0hfV0FTTV9FWFRfQVRPTUlDX09USEVSX09QKG1hY3JvKSIpCiBkZWZpbmVzLmV4
dGVuZChbb3AgZm9yIG9wIGluIG9wY29kZU1hY3JvaXplcihsYW1iZGEgb3A6IGlzQXRvbWljKG9w
KSBhbmQgKG5vdCBpc0F0b21pY0xvYWQob3ApIGFuZCBub3QgaXNBdG9taWNTdG9yZShvcCkgYW5k
IG5vdCBpc0F0b21pY0JpbmFyeVJNVyhvcCkpLCBvcGNvZGVGaWVsZD0iZXh0ZW5kZWRPcCIpXSkK
K2RlZmluZXMuYXBwZW5kKCJcblxuI2RlZmluZSBGT1JfRUFDSF9XQVNNX0VYVF9TSU1EX09QKG1h
Y3JvKSIpCitkZWZpbmVzLmV4dGVuZChbb3AgZm9yIG9wIGluIHNpbWRNYWNyb2xpemVyKCldKQor
ZGVmaW5lcy5hcHBlbmQoIlxuXG4jZGVmaW5lIEZPUl9FQUNIX1dBU01fRVhUX1NJTURfU1BFQ0lB
TF9PUChtYWNybykiKQorZGVmaW5lcy5leHRlbmQoW29wIGZvciBvcCBpbiBzaW1kU3BlY2lhbE1h
Y3JvbGl6ZXIoKV0pCiBkZWZpbmVzLmFwcGVuZCgiXG5cbiIpCiAKIGRlZmluZXMgPSAiIi5qb2lu
KGRlZmluZXMpCkBAIC0yNDAsNiArMjc5LDIyIEBAIHN0cnVjdCBUeXBlIHsKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGJvb2w+KG51bGxhYmxlKTsKICAgICB9CiAKKyAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgI2RlZmluZSBDUkVBVEVf
Q0FTRShuYW1lLCBpZCwgYjN0eXBlLCBpbmMsIHdhc21OYW1lLCBzaXplLCAuLi4pIGNhc2UgVHlw
ZUtpbmQ6Om5hbWU6IHJldHVybiBzaXplOworICAgIEZPUl9FQUNIX1dBU01fVFlQRShDUkVBVEVf
Q0FTRSkKKyAgICAjdW5kZWYgQ1JFQVRFX0NBU0UKKyAgICAgICAgfQorICAgIH0KKworICAgIHZv
aWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdCB7CisgICAgICAgIHN3aXRjaCAoa2luZCkg
eworICAgICNkZWZpbmUgQ1JFQVRFX0NBU0UobmFtZSwgaWQsIGIzdHlwZSwgaW5jLCB3YXNtTmFt
ZSwgc2l6ZSwgLi4uKSBjYXNlIFR5cGVLaW5kOjpuYW1lOiBvdXQucHJpbnQoI25hbWUpOyBicmVh
azsKKyAgICBGT1JfRUFDSF9XQVNNX1RZUEUoQ1JFQVRFX0NBU0UpCisgICAgI3VuZGVmIENSRUFU
RV9DQVNFCisgICAgICAgIH0KKyAgICB9CisKICAgICAjZGVmaW5lIENSRUFURV9QUkVESUNBVEUo
bmFtZSwgLi4uKSBib29sIGlzICMjIG5hbWUoKSBjb25zdCB7IHJldHVybiBraW5kID09IFR5cGVL
aW5kOjpuYW1lOyB9CiAgICAgRk9SX0VBQ0hfV0FTTV9UWVBFKENSRUFURV9QUkVESUNBVEUpCiAg
ICAgI3VuZGVmIENSRUFURV9QUkVESUNBVEUKQEAgLTMyMSw3ICszNzYsOCBAQCBpbmxpbmUgVHlw
ZUtpbmQgbGluZWFyaXplZFRvVHlwZShpbnQgaSkKICAgICBGT1JfRUFDSF9XQVNNX01FTU9SWV9M
T0FEX09QKG1hY3JvKSBcXAogICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKG1hY3Jv
KSBcXAogICAgIG1hY3JvKEV4dDEsICAweEZDLCBPb3BzLCAwKSBcXAotICAgIG1hY3JvKEV4dEF0
b21pYywgMHhGRSwgT29wcywgMCkKKyAgICBtYWNybyhFeHRBdG9taWMsIDB4RkUsIE9vcHMsIDAp
IFxcCisgICAgbWFjcm8oRXh0U2ltZCwgMHhGRCwgT29wcywgMCkKIAogI2RlZmluZSBDUkVBVEVf
RU5VTV9WQUxVRShuYW1lLCBpZCwgLi4uKSBuYW1lID0gaWQsCiAKQEAgLTM2NSw4ICs0MjEsMjIg
QEAgZW51bSBjbGFzcyBFeHRBdG9taWNPcFR5cGUgOiB1aW50OF90IHsKICAgICBGT1JfRUFDSF9X
QVNNX0VYVF9BVE9NSUNfT1RIRVJfT1AoQ1JFQVRFX0VOVU1fVkFMVUUpCiB9OwogCitlbnVtIGNs
YXNzIEV4dFNpbWRPcFR5cGUgOiB1aW50OF90IHsKKyAgICBGT1JfRUFDSF9XQVNNX0VYVF9TSU1E
X09QKENSRUFURV9FTlVNX1ZBTFVFKQorICAgIEZPUl9FQUNIX1dBU01fRVhUX1NJTURfU1BFQ0lB
TF9PUChDUkVBVEVfRU5VTV9WQUxVRSkKK307CisKK2VudW0gY2xhc3MgRXh0V2FzbU9wVHlwZSA6
IHVpbnQ4X3QgeworICAgIEZPUl9FQUNIX1dBU01fRVhUX1NJTURfT1AoQ1JFQVRFX0VOVU1fVkFM
VUUpCit9OworCiAjdW5kZWYgQ1JFQVRFX0VOVU1fVkFMVUUKIAorZW51bSBjbGFzcyBTaW1kTGFu
ZU9wZXJhdGlvbiA6IHVpbnQ4X3QgeworICAgICIiIiArIHNpbWRMYW5lT3BlcmF0aW9ucyArICIi
IgorfTsKKyIiIiArIHNpbWRMYW5lT3BlcmF0aW9uc1ByaW50ZXIgKyAiIiIKKwogaW5saW5lIGJv
b2wgaXNDb250cm9sT3AoT3BUeXBlIG9wKQogewogICAgIHN3aXRjaCAob3ApIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAppbmRleCAwOGZlMWE3ODcxMzIuLjk2
MzgwNDgwMDVlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Fz
bVRvSlMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNw
cApAQCAtMTA2LDYgKzEwNiw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNt
RW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpGdW5jOgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVs
bDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKKyAgICAgICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OlYxMjg6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsgLy8gSGFuZGxlZCBhYm92ZS4KICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJl
ZjoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CkBAIC0xODAsNiArMTgxLDcg
QEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRp
bmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1
bmM6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgogICAgICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6UmVmOgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6VjEyODoKICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBIYW5kbGVkIGFib3Zl
LgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RnVuY3JlZjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL3NpbWRfb3Bjb2Rlcy5jc3YgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9zaW1kX29w
Y29kZXMuY3N2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWNiODEx
ZDJhMmJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vc2lt
ZF9vcGNvZGVzLmNzdgpAQCAtMCwwICsxLDMgQEAKK0luc3RydWN0aW9uLGNhdGVnb3J5LG9wLHJl
dHVybixJbW0scGFyYW1zLGludGVycHJldGF0aW9uLHNpZ25FeHRlbmQsdmFsdWUsZXh0ZW5kZWRP
cCxzY2FsYXJUeXBlQmFzZSxzY2FsYXJUeXBlLHNwZWNpYWwNCit2MTI4LmNvbnN0LHNpbWQuc3Bl
Y2lhbCxjb25zdCx2LGk6SW1tQnl0ZVsxNl0sLHYxMjgsTkEsMHhGRCwweDBjLHZvaWQsdm9pZCx5
DQoraTh4MTYuZXh0cmFjdF9sYW5lX3Usc2ltZC5sYW5lLGV4dHJhY3RfbGFuZSxzLGk6SW1tTGFu
ZUlkeDE2LGE6dixpOHgxNixVLDB4RkQsMHgxNixpOCxpMzIsbgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgppbmRleCBjYWJkZTIwYWVj
ZWEuLmIyMGEyNTRlMjA5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
d2FzbS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgpAQCAt
NywxOCArNywxOSBAQAogICAgICAgICB7ICJuYW1lIjogInZlcnNpb24iLCAgICAgICJ0eXBlIjog
InVpbnQzMiIsICJ2YWx1ZSI6ICAgICAgICAgIDEsICJkZXNjcmlwdGlvbiI6ICJWZXJzaW9uIG51
bWJlciIgfQogICAgIF0sCiAgICAgInR5cGUiIDogewotICAgICAgICAiaTMyIjogICAgICAgeyAi
dHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogICAtMSwgImIzdHlwZSI6ICJCMzo6SW50MzIiIH0s
Ci0gICAgICAgICJpNjQiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgIC0y
LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKLSAgICAgICAgImYzMiI6ICAgICAgIHsgInR5cGUi
OiAidmFyaW50NyIsICJ2YWx1ZSI6ICAgLTMsICJiM3R5cGUiOiAiQjM6OkZsb2F0IiB9LAotICAg
ICAgICAiZjY0IjogICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogICAtNCwgImIz
dHlwZSI6ICJCMzo6RG91YmxlIiB9LAotICAgICAgICAiZnVuY3JlZiI6ICAgeyAidHlwZSI6ICJ2
YXJpbnQ3IiwgInZhbHVlIjogIC0xNiwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCi0gICAgICAg
ICJleHRlcm5yZWYiOiB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTE3LCAiYjN0eXBl
IjogIkIzOjpJbnQ2NCIgfSwKLSAgICAgICAgInJlZl9udWxsIjogIHsgInR5cGUiOiAidmFyaW50
NyIsICJ2YWx1ZSI6ICAtMjAsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAotICAgICAgICAicmVm
IjogICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0yMSwgImIzdHlwZSI6ICJC
Mzo6SW50NjQiIH0sCi0gICAgICAgICJmdW5jIjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAi
dmFsdWUiOiAgLTMyLCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9LAotICAgICAgICAidm9pZCI6ICAg
ICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC02NCwgImIzdHlwZSI6ICJCMzo6Vm9p
ZCIgfQorICAgICAgICAiaTMyIjogICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjog
ICAtMSwgImIzdHlwZSI6ICJCMzo6SW50MzIiLCAic2l6ZSI6IDggfSwKKyAgICAgICAgImk2NCI6
ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAgLTIsICJiM3R5cGUiOiAiQjM6
OkludDY0IiwgInNpemUiOiA4IH0sCisgICAgICAgICJmMzIiOiAgICAgICB7ICJ0eXBlIjogInZh
cmludDciLCAidmFsdWUiOiAgIC0zLCAiYjN0eXBlIjogIkIzOjpGbG9hdCIsICJzaXplIjogOCB9
LAorICAgICAgICAiZjY0IjogICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogICAt
NCwgImIzdHlwZSI6ICJCMzo6RG91YmxlIiwgInNpemUiOiA4IH0sCisgICAgICAgICJ2MTI4Ijog
ICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTUsICAiYjN0eXBlIjogIkIzOjpW
MTI4IiwgICJzaXplIjogMTYgfSwKKyAgICAgICAgImZ1bmNyZWYiOiAgIHsgInR5cGUiOiAidmFy
aW50NyIsICJ2YWx1ZSI6ICAtMTYsICJiM3R5cGUiOiAiQjM6OkludDY0IiwgInNpemUiOiA4IH0s
CisgICAgICAgICJleHRlcm5yZWYiOiB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTE3
LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIsICJzaXplIjogOCB9LAorICAgICAgICAicmVmX251bGwi
OiAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0yMCwgImIzdHlwZSI6ICJCMzo6SW50
NjQiLCAic2l6ZSI6IDggfSwKKyAgICAgICAgInJlZiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50
NyIsICJ2YWx1ZSI6ICAtMjEsICJiM3R5cGUiOiAiQjM6OkludDY0IiwgInNpemUiOiA4IH0sCisg
ICAgICAgICJmdW5jIjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTMyLCAi
YjN0eXBlIjogIkIzOjpWb2lkIiwgICJzaXplIjogMCB9LAorICAgICAgICAidm9pZCI6ICAgICAg
eyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC02NCwgImIzdHlwZSI6ICJCMzo6Vm9pZCIs
ICAic2l6ZSI6IDAgfQogICAgIH0sCi0gICAgInZhbHVlX3R5cGUiOiBbImkzMiIsICJpNjQiLCAi
ZjMyIiwgImY2NCIsICJleHRlcm5yZWYiLCAiZnVuY3JlZiJdLAorICAgICJ2YWx1ZV90eXBlIjog
WyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAiZXh0ZXJucmVmIiwgImZ1bmNyZWYiLCAidjEy
OCJdLAogICAgICJibG9ja190eXBlIjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAidm9p
ZCIsICJleHRlcm5yZWYiLCAiZnVuY3JlZiJdLAogICAgICJyZWZfdHlwZSI6IFsiZnVuY3JlZiIs
ICJleHRlcm5yZWYiLCAicmVmIiwgInJlZl9udWxsIl0sCiAgICAgImV4dGVybmFsX2tpbmQiOiB7
Cg==
</data>
<flag name="commit-queue"
          id="475239"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449230</attachid>
            <date>2022-01-14 15:04:42 -0800</date>
            <delta_ts>2022-03-03 11:17:01 -0800</delta_ts>
            <desc>SIMD Megapatch WIP 1.3</desc>
            <filename>simd.patch</filename>
            <type>text/plain</type>
            <size>283091</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9hc3NlcnQuanMgYi9KU1Rlc3RzL3dhc20vYXNzZXJ0
LmpzCmluZGV4IGNjMGFmODA0ZDUzYy4uZWU4YTJkNTQyMzExIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L3dhc20vYXNzZXJ0LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9hc3NlcnQuanMKQEAgLTE4MCwxMSAr
MTgwLDExIEBAIGNvbnN0IHByaW50RXhuID0gKGUpID0+IHsKICAgICBwcmludChlLnN0YWNrKTsK
IH07CiAKLWV4cG9ydCBjb25zdCBhc3luY1Rlc3QgPSAocHJvbWlzZSkgPT4gYXN5bmNUZXN0SW1w
bChwcm9taXNlLCBoYXJuZXNzQ2FsbChhc3luY1Rlc3RQYXNzZWQpLCBwcmludEV4bik7CitleHBv
cnQgY29uc3QgYXN5bmNUZXN0ID0gKHByb21pc2UpID0+IGFzeW5jVGVzdEltcGwocHJvbWlzZSwg
aGFybmVzc0NhbGwoKCkgPT4gYXN5bmNUZXN0UGFzc2VkKCkpLCBwcmludEV4bik7CiBleHBvcnQg
Y29uc3QgYXN5bmNUZXN0RXEgPSAocHJvbWlzZSwgZXhwZWN0ZWQpID0+IHsKICAgICBjb25zdCB0
aGVuQ2hlY2sgPSAodmFsdWUpID0+IHsKICAgICAgICAgaWYgKHZhbHVlID09PSBleHBlY3RlZCkK
LSAgICAgICAgICAgIHJldHVybiBoYXJuZXNzQ2FsbChhc3luY1Rlc3RQYXNzZWQpOworICAgICAg
ICAgICAgcmV0dXJuIGhhcm5lc3NDYWxsKCgpID0+IGFzeW5jVGVzdFBhc3NlZCgpKTsKICAgICAg
ICAgcHJpbnQoIkZhaWxlZDogZ290ICIsIHZhbHVlLCAiIGJ1dCBleHBlY3RlZCAiLCBleHBlY3Rl
ZCk7CiAKICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vc3RyZXNzL3NpbWQtY29uc3Qt
c3BpbGwuanMgYi9KU1Rlc3RzL3dhc20vc3RyZXNzL3NpbWQtY29uc3Qtc3BpbGwuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NjUxZjYxOWY2NTYKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3dhc20vc3RyZXNzL3NpbWQtY29uc3Qtc3BpbGwuanMKQEAgLTAs
MCArMSwxNTAgQEAKK2ltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSAiLi4vd2FidC13cmFwcGVy
LmpzIgoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gIi4uL2Fzc2VydC5qcyIKKworbGV0IHdhdCA9
IGAKKyhtb2R1bGUKKyAgICAoZnVuYyAkanNfaWRlbnQgKGltcG9ydCAiaW1wb3J0cyIgImlkZW50
IikgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKQorCisgICAgKGZ1bmMgKGV4cG9ydCAidGVzdCIp
IChwYXJhbSAkc3ogaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgKGxvY2FsICRhIHYxMjgpCisg
ICAgICAgIChsb2NhbCAkYiB2MTI4KQorCisgICAgICAgIChsb2NhbC5zZXQgJGEgKHYxMjguY29u
c3QgaTh4MTYgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYpKQorICAgICAg
ICAobG9jYWwuc2V0ICRiICh2MTI4LmNvbnN0IGk4eDE2IDkgMCAyIDAgMCAwIDAgMCAwIDAgNSAw
IDAgMCAwIDEpKQorCisgICAgICAgIChpOHgxNi5leHRyYWN0X2xhbmVfdSAxNSAobG9jYWwuZ2V0
ICRhKSkKKyAgICAgICAgKGk4eDE2LmV4dHJhY3RfbGFuZV91IDE1IChsb2NhbC5nZXQgJGIpKQor
CisgICAgICAgIChpMzIuYWRkKQorICAgICAgICAKKyAgICAgICAgKHJldHVybikKKyAgICApCisK
KyAgICAoZnVuYyAkaWRlbnQxMjggKHBhcmFtICRpIGkzMikgKHBhcmFtICR2IHYxMjgpIChwYXJh
bSAkaTIgaTMyKSAocmVzdWx0IHYxMjgpCisgICAgICAgIChyZXR1cm4gKGxvY2FsLmdldCAkdikp
CisgICAgKQorCisgICAgKGZ1bmMgJGlkZW50MzIgKHBhcmFtICRpIGkzMikgKHBhcmFtICR2IHYx
MjgpIChwYXJhbSAkaTIgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgKHJldHVybiAobG9jYWwu
Z2V0ICRpMikpCisgICAgKQorCisgICAgKGZ1bmMgKGV4cG9ydCAidGVzdF9zcGlsbCIpIChwYXJh
bSAkaSBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgICAobG9jYWwgJGEgdjEyOCkKKyAgICAgICAg
KGxvY2FsLnNldCAkYSAodjEyOC5jb25zdCBpOHgxNiAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAx
MiAxMyAxNCAxNSAxNikpCisKKyAgICAgICAgKGk4eDE2LmV4dHJhY3RfbGFuZV91IDEzIAorICAg
ICAgICAgICAgKGNhbGwgJGlkZW50MTI4CisgICAgICAgICAgICAgICAgKGkzMi5jb25zdCAxMzM3
KSAKKyAgICAgICAgICAgICAgICAodjEyOC5jb25zdCBpOHgxNiAxMCAyMCAzMCA0MCA1MCA2MCA3
MCA4MCA5MCAxMDAgMTEwIDEyMCAxMzAgMTQwIDE1MCAxNjApIAorICAgICAgICAgICAgICAgIChp
MzIuY29uc3QgNDIwMDAwMCkpKQorICAgICAgICAobG9jYWwuZ2V0ICRpKQorICAgICAgICAoaTh4
MTYuZXh0cmFjdF9sYW5lX3UgMTQgKGxvY2FsLmdldCAkYSkpCisKKyAgICAgICAgKGNhbGwgJGlk
ZW50MzIgCisgICAgICAgICAgICAoaTMyLmNvbnN0IDEzMzcpIAorICAgICAgICAgICAgKHYxMjgu
Y29uc3QgaTh4MTYgMTAgMjAgMzAgNDAgNTAgNjAgNzAgODAgOTAgMTAwIDExMCAxMjAgMTMwIDE0
MCAxNTAgMTYwKSAKKyAgICAgICAgICAgIChpMzIuY29uc3QgNDIwMDAwMCkpCisKKyAgICAgICAg
KGkzMi5hZGQpCisgICAgICAgIChpMzIuYWRkKQorICAgICAgICAoaTMyLmFkZCkKKyAgICAgICAg
CisgICAgICAgIChyZXR1cm4pCisgICAgKQorCisgICAgKGZ1bmMgKGV4cG9ydCAidGVzdF9zcGls
bF9qc2NhbGwiKSAocGFyYW0gJGkgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgKGxvY2FsICRh
IHYxMjgpCisgICAgICAgIChsb2NhbC5zZXQgJGEgKHYxMjguY29uc3QgaTh4MTYgMSAyIDMgNCA1
IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYpKQorCisgICAgICAgIChpOHgxNi5leHRyYWN0
X2xhbmVfdSAxMyAKKyAgICAgICAgICAgIChjYWxsICRpZGVudDEyOCAKKyAgICAgICAgICAgICAg
ICAoaTMyLmNvbnN0IDEzMzcpIAorICAgICAgICAgICAgICAgICh2MTI4LmNvbnN0IGk4eDE2IDEw
IDIwIDMwIDQwIDUwIDYwIDcwIDgwIDkwIDEwMCAxMTAgMTIwIDEzMCAxNDAgMTUwIDE2MCkgCisg
ICAgICAgICAgICAgICAgKGkzMi5jb25zdCA0MjAwMDAwKSkpCisgICAgICAgIChsb2NhbC5nZXQg
JGkpCisKKyAgICAgICAgKGxvY2FsLmdldCAkYSkKKyAgICAgICAgKGNhbGwgJGpzX2lkZW50IChp
MzIuY29uc3QgMCkpCisgICAgICAgIChkcm9wKQorICAgICAgICAoaTh4MTYuZXh0cmFjdF9sYW5l
X3UgMTQpCisKKyAgICAgICAgKGNhbGwgJGlkZW50MzIgCisgICAgICAgICAgICAoaTMyLmNvbnN0
IDEzMzcpIAorICAgICAgICAgICAgKHYxMjguY29uc3QgaTh4MTYgMTAgMjAgMzAgNDAgNTAgNjAg
NzAgODAgOTAgMTAwIDExMCAxMjAgMTMwIDE0MCAxNTAgMTYwKSAKKyAgICAgICAgICAgIChpMzIu
Y29uc3QgNDIwMDAwMCkpCisKKyAgICAgICAgKGkzMi5hZGQpCisgICAgICAgIChpMzIuYWRkKQor
ICAgICAgICAoaTMyLmFkZCkKKyAgICAgICAgCisgICAgICAgIChyZXR1cm4pCisgICAgKQorCisg
ICAgKGZ1bmMgKGV4cG9ydCAidGVzdF9pZl9pMzIiKSAocGFyYW0gJGkgaTMyKSAocmVzdWx0IGkz
MikKKyAgICAgICAgKGxvY2FsICRhIHYxMjgpCisgICAgICAgIChsb2NhbC5zZXQgJGEgKHYxMjgu
Y29uc3QgaTh4MTYgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYpKQorCisg
ICAgICAgIChsb2NhbC5nZXQgJGkpCisgICAgICAgIChpZiAocmVzdWx0IGkzMikKKyAgICAgICAg
ICAgICh0aGVuIAorICAgICAgICAgICAgICAgIChpOHgxNi5leHRyYWN0X2xhbmVfdSAxMyAKKyAg
ICAgICAgICAgICAgICAgICAgKGNhbGwgJGlkZW50MTI4IAorICAgICAgICAgICAgICAgICAgICAg
ICAgKGkzMi5jb25zdCAxMzM3KSAKKyAgICAgICAgICAgICAgICAgICAgICAgICh2MTI4LmNvbnN0
IGk4eDE2IDEwIDIwIDMwIDQwIDUwIDYwIDcwIDgwIDkwIDEwMCAxMTAgMTIwIDEzMCAxNDAgMTUw
IDE2MCkgCisgICAgICAgICAgICAgICAgICAgICAgICAoaTMyLmNvbnN0IDQyMDAwMDApKSkpCisg
ICAgICAgICAgICAoZWxzZSAKKyAgICAgICAgICAgICAgICAoaTh4MTYuZXh0cmFjdF9sYW5lX3Ug
MTQgKGxvY2FsLmdldCAkYSkpKSkKKworICAgICAgICAoY2FsbCAkaWRlbnQzMiAKKyAgICAgICAg
ICAgIChpMzIuY29uc3QgMTMzNykgCisgICAgICAgICAgICAodjEyOC5jb25zdCBpOHgxNiAxMCAy
MCAzMCA0MCA1MCA2MCA3MCA4MCA5MCAxMDAgMTEwIDEyMCAxMzAgMTQwIDE1MCAxNjApIAorICAg
ICAgICAgICAgKGkzMi5jb25zdCA0MjAwMDAwKSkKKworICAgICAgICAoaTMyLmFkZCkKKyAgICAg
ICAgCisgICAgICAgIChyZXR1cm4pCisgICAgKQorCisgICAgKGZ1bmMgKGV4cG9ydCAidGVzdF9p
Zl92MTI4IikgKHBhcmFtICRpIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIChsb2NhbCAkYSB2
MTI4KQorICAgICAgICAobG9jYWwuc2V0ICRhICh2MTI4LmNvbnN0IGk4eDE2IDEgMiAzIDQgNSA2
IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2KSkKKworICAgICAgICAobG9jYWwuZ2V0ICRpKQor
ICAgICAgICAoaWYgKHJlc3VsdCB2MTI4KQorICAgICAgICAgICAgKHRoZW4KKyAgICAgICAgICAg
ICAgICAoY2FsbCAkaWRlbnQxMjggCisgICAgICAgICAgICAgICAgICAgIChpMzIuY29uc3QgMTMz
NykgCisgICAgICAgICAgICAgICAgICAgICh2MTI4LmNvbnN0IGk4eDE2IDEwIDIwIDMwIDQwIDUw
IDYwIDcwIDgwIDkwIDEwMCAxMTAgMTIwIDEzMCAxNDAgMTUwIDE2MCkgCisgICAgICAgICAgICAg
ICAgICAgIChpMzIuY29uc3QgNDIwMDAwMCkpKQorICAgICAgICAgICAgKGVsc2UgCisgICAgICAg
ICAgICAgICAgKGxvY2FsLmdldCAkYSkpKQorICAgICAgICAoaTh4MTYuZXh0cmFjdF9sYW5lX3Ug
MTQpCisKKyAgICAgICAgKGNhbGwgJGlkZW50MzIgCisgICAgICAgICAgICAoaTMyLmNvbnN0IDEz
MzcpIAorICAgICAgICAgICAgKHYxMjguY29uc3QgaTh4MTYgMTAgMjAgMzAgNDAgNTAgNjAgNzAg
ODAgOTAgMTAwIDExMCAxMjAgMTMwIDE0MCAxNTAgMTYwKSAKKyAgICAgICAgICAgIChpMzIuY29u
c3QgNDIwMDAwMCkpCisKKyAgICAgICAgKGkzMi5hZGQpCisgICAgICAgIAorICAgICAgICAocmV0
dXJuKQorICAgICkKKykKK2AKKworYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBjb25zdCBp
bnN0YW5jZSA9IGF3YWl0IGluc3RhbnRpYXRlKHdhdCwgeyBpbXBvcnRzOiB7IGlkZW50OiAoeCkg
PT4geCB9IH0sIHsgc2ltZDogdHJ1ZSB9KQorICAgIGNvbnN0IHsgdGVzdCwgdGVzdF9zcGlsbCwg
dGVzdF9zcGlsbF9qc2NhbGwsIHRlc3RfaWZfaTMyLCB0ZXN0X2lmX3YxMjggfSA9IGluc3RhbmNl
LmV4cG9ydHMKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDsgKytpKSB7CisgICAgICAg
IGFzc2VydC5lcSh0ZXN0KDQyKSwgMTYrMSkKKyAgICAgICAgYXNzZXJ0LmVxKHRlc3Rfc3BpbGwo
NTAwMCksIDE0MCs1MDAwKzE1KzQyMDAwMDApCisgICAgICAgIGFzc2VydC5lcSh0ZXN0X3NwaWxs
X2pzY2FsbCg1MDAwKSwgMTQwKzUwMDArMTUrNDIwMDAwMCkKKyAgICAgICAgYXNzZXJ0LmVxKHRl
c3RfaWZfaTMyKDApLCAxNSs0MjAwMDAwKQorICAgICAgICBhc3NlcnQuZXEodGVzdF9pZl9pMzIo
MSksIDE0MCs0MjAwMDAwKQorICAgICAgICBhc3NlcnQuZXEodGVzdF9pZl92MTI4KDApLCAxNSs0
MjAwMDAwKQorICAgICAgICBhc3NlcnQuZXEodGVzdF9pZl92MTI4KDEpLCAxNTArNDIwMDAwMCkK
KyAgICB9Cit9CisKK2Fzc2VydC5hc3luY1Rlc3QodGVzdCgpKQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy93YXNtL3N0cmVzcy9zaW1kLWNvbnN0LmpzIGIvSlNUZXN0cy93YXNtL3N0cmVzcy9zaW1kLWNv
bnN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2EwN2VhYzk1
ZDhjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL3N0cmVzcy9zaW1kLWNvbnN0Lmpz
CkBAIC0wLDAgKzEsMjggQEAKK2ltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSAiLi4vd2FidC13
cmFwcGVyLmpzIgoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gIi4uL2Fzc2VydC5qcyIKKworbGV0
IHdhdCA9IGAKKyhtb2R1bGUKKyAgICAoZnVuYyAoZXhwb3J0ICJ0ZXN0IikgKHBhcmFtICRzeiBp
MzIpIChyZXN1bHQgaTMyKQorICAgICAgICAoaTMyLmNvbnN0IDkpCisgICAgICAgIChkcm9wKQor
ICAgICAgICAocmV0dXJuIChpOHgxNi5leHRyYWN0X2xhbmVfdSAxICh2MTI4LmNvbnN0IGk4eDE2
IDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2KSkpCisgICAgKQorCisgICAg
KGZ1bmMgKGV4cG9ydCAidGVzdDIiKSAocGFyYW0gJHN6IGkzMikgKHJlc3VsdCBpMzIpCisgICAg
ICAgIChyZXR1cm4gKGk4eDE2LmV4dHJhY3RfbGFuZV91IDEyICh2MTI4LmNvbnN0IGk4eDE2IDEg
MiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2KSkpCisgICAgKQorKQorYAorCith
c3luYyBmdW5jdGlvbiB0ZXN0KCkgeworICAgIGNvbnN0IGluc3RhbmNlID0gYXdhaXQgaW5zdGFu
dGlhdGUod2F0LCB7fSwgeyBzaW1kOiB0cnVlIH0pCisgICAgY29uc3QgeyB0ZXN0LCB0ZXN0MiB9
ID0gaW5zdGFuY2UuZXhwb3J0cworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KSB7CisgICAgICAgIGFzc2VydC5lcSh0ZXN0KDQyKSwgMikKKyAgICAgICAgYXNzZXJ0LmVxKHRl
c3QyKDQ4KSwgMTMpOworICAgIH0KK30KKworYXNzZXJ0LmFzeW5jVGVzdCh0ZXN0KCkpCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgpp
bmRleCAzMmM4YWY4YmJmNTcuLjVjYWY3MWE5YTllZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
L3dhc20uanNvbgorKysgYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCkBAIC0xMSw2ICsxMSw3IEBA
CiAgICAgICAgICJpNjQiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgIC0y
LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKICAgICAgICAgImYzMiI6ICAgICAgIHsgInR5cGUi
OiAidmFyaW50NyIsICJ2YWx1ZSI6ICAgLTMsICJiM3R5cGUiOiAiQjM6OkZsb2F0IiB9LAogICAg
ICAgICAiZjY0IjogICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogICAtNCwgImIz
dHlwZSI6ICJCMzo6RG91YmxlIiB9LAorICAgICAgICAidjEyOCI6ICAgICAgeyAidHlwZSI6ICJ2
YXJpbnQ3IiwgInZhbHVlIjogIDEyMywgImIzdHlwZSI6ICJCMzo6VjEyOCIgfSwKICAgICAgICAg
ImZ1bmNyZWYiOiAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMTYsICJiM3R5cGUi
OiAiQjM6OkludDY0IiB9LAogICAgICAgICAiZXh0ZXJucmVmIjogeyAidHlwZSI6ICJ2YXJpbnQ3
IiwgInZhbHVlIjogIC0xNywgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCiAgICAgICAgICJyZWZf
bnVsbCI6ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIwLCAiYjN0eXBlIjogIkIz
OjpJbnQ2NCIgfSwKQEAgLTE4LDcgKzE5LDcgQEAKICAgICAgICAgImZ1bmMiOiAgICAgIHsgInR5
cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMzIsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAg
ICAgICAgICJ2b2lkIjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTY0LCAi
YjN0eXBlIjogIkIzOjpWb2lkIiB9CiAgICAgfSwKLSAgICAidmFsdWVfdHlwZSI6IFsiaTMyIiwg
Imk2NCIsICJmMzIiLCAiZjY0IiwgImV4dGVybnJlZiIsICJmdW5jcmVmIl0sCisgICAgInZhbHVl
X3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJleHRlcm5yZWYiLCAiZnVuY3Jl
ZiIsICJ2MTI4Il0sCiAgICAgImJsb2NrX3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2
NCIsICJ2b2lkIiwgImV4dGVybnJlZiIsICJmdW5jcmVmIl0sCiAgICAgInJlZl90eXBlIjogWyJm
dW5jcmVmIiwgImV4dGVybnJlZiIsICJyZWYiLCAicmVmX251bGwiXSwKICAgICAiZXh0ZXJuYWxf
a2luZCI6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTZiZGZlMDc1Mzg0Li5k
OTJiNWVjMWExZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NzMsNyArODcz
LDEwIEBACiAJCTQ0NDNBRTMzMTZFMTg4RDkwMDc2RjExMCAvKiBGb3VuZGF0aW9uLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBF
QjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKIAkJNDUx
NTM5QjkxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MTUzOUI4MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDczREE0
QTQ3NjRDNDVGRTg3MUIwNDg1IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTY5OTQ4RURFNjhENDA1NEIw
MUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTRCMTE2N0EwMjc1RUFBMzYwMDhCNEQwOCAv
KiBTaW1kSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEIxMTY3OUYyNzVFQUEzNjAwOEI0RDA4IC8qIFNpbWRJbmZvLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNEI2MjVBMjYyNzNDMzk0RTAwM0JG
NTAzIC8qIEIzQ29uc3QxMjhWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QjYyNUEyNTI3M0MzOTRFMDAzQkY1MDMgLyogQjNDb25zdDEyOFZh
bHVlLmNwcCAqLzsgfTsKIAkJNEJBQTA3Q0VCODFGNDlBMjk2RTAyMjAzIC8qIFdhc21TaWduYXR1
cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVyZUlubGluZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0QkU4OUJGQjI3
NDg1MTMzMDA3OTA5NzcgLyogQjNTaW1kVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRTg5QkY4Mjc0ODUxMzMwMDc5MDk3NyAvKiBCM1NpbWRW
YWx1ZS5oICovOyB9OwogCQk1MjBEOTlGMTIzODhDQzgxMDAwNTA5QTMgLyogR2V0QnlWYWxIaXN0
b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjBE
OTlGMDIzODhDQzc4MDAwNTA5QTMgLyogR2V0QnlWYWxIaXN0b3J5LmggKi87IH07CiAJCTUyMTEz
MUY3MUY4MkJGMTQwMDdDQ0VFRSAvKiBQb2x5UHJvdG9BY2Nlc3NDaGFpbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTIxMTMxRjYxRjgyQkYxMTAwN0ND
RUVFIC8qIFBvbHlQcm90b0FjY2Vzc0NoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTIxMzIyNDYxRUNCQ0U4MjAwRjY1NjE1IC8qIFdlYkFz
c2VtYmx5RnVuY3Rpb25CYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MjEzMjI0NDFFQ0JDRTgyMDBGNjU2MTUgLyogV2ViQXNzZW1ibHlGdW5jdGlv
bkJhc2UuaCAqLzsgfTsKQEAgLTE3OTQsNiArMTc5Nyw3IEBACiAJCUNEMUY5QjRCMjcwQ0ZFMEYw
MDYxN0VCNiAvKiBTdHJvbmdGb3J3YXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDFGOUI0QTI3MENGRTBGMDA2MTdFQjYgLyogU3Ryb25nRm9yd2Fy
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNF
MjBCRDA1MjM3RDNFMjMwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjBCRDAzMjM3RDNB
RDQwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuaCAqLzsgfTsKIAkJQ0UyMEJE
MDcyMzdEM0U0ODAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyMEJEMDEy
MzdEM0FENDAwNDZFNTIwIC8qIFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5oICov
OyB9OworCQlDRTZFQzIxRTI3M0I0NUFFMDAxNTk4RTMgLyogQjNDb25zdDEyOFZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZFQzIxRDI3M0I0
NUFFMDAxNTk4RTMgLyogQjNDb25zdDEyOFZhbHVlLmggKi87IH07CiAJCUNFQUU3RDdCODg5QjQ3
N0JBOTNBQkE2QyAvKiBTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4ODUyMTUxQTlDMzg0MjM4OUIzMjE1QjcgLyogU2NyaXB0RmV0
Y2hlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUNFQ0ZBRDM2MjM3MkRBRDAwMDI5MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDRkFEMzQyMzcyREFBNzAw
MjkxNTk5IC8qIEZ1enplclByZWRpY3Rpb25zLmggKi87IH07CiAJCUNFQ0ZBRDM3MjM3MkRBRDQw
MDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDRkFEMzIyMzcyREFBNzAwMjkxNTk5IC8qIEZpbGVC
YXNlZEZ1enplckFnZW50LmggKi87IH07CkBAIC0zNzQ4LDYgKzM3NTIsMTAgQEAKIAkJNDQyRkJE
ODUyMTQ5RDFFMDAwNzM1MTlDIC8qIGhhc2hlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgbmFtZSA9IGhhc2hl
ci5weTsgcGF0aCA9IHlhcnIvaGFzaGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NTE1MzlCODEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBZYXJyLmg7IHBhdGggPSB5YXJyL1lhcnIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBqc2MuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IH07CisJCTRCMTE2NzlGMjc1
RUFBMzYwMDhCNEQwOCAvKiBTaW1kSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1kSW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjYyNUEyNTI3M0MzOTRFMDAzQkY1MDMgLyog
QjNDb25zdDEyOFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQ29uc3QxMjhWYWx1ZS5j
cHA7IHBhdGggPSBiMy9CM0NvbnN0MTI4VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0QkU4OUJGNzI3NDg1MTMzMDA3OTA5NzcgLyogQjNTaW1kVmFsdWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQjNTaW1kVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNTaW1kVmFsdWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QkU4OUJGODI3NDg1MTMzMDA3OTA5Nzcg
LyogQjNTaW1kVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNTaW1kVmFsdWUuaDsgcGF0aCA9IGIz
L0IzU2ltZFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRDRTk3OEUzODVB
ODQ5ODE5OTA1MjE1MyAvKiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5k
YXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBGb3VuZGF0aW9uLmZyYW1ld29yazsg
cGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrOyBz
b3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQk1MUYwRUMwNzA1Qzg2QzlBMDBFNkRGMUIg
LyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGlib2JqYy5keWxpYjsg
cGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7
IH07CkBAIC01MTU4LDYgKzUxNjYsNyBAQAogCQlDRTI3QTNEODIzNzU5QkFDMDA4OTYwNUUgLyog
TmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5h
cnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRTI3QTNEOTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE51bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjdBM0RBMjM3NUE2REMw
MDg5NjA1RSAvKiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNFNkVDMjFEMjczQjQ1QUUwMDE1OThFMyAvKiBCM0NvbnN0MTI4VmFsdWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNDb25zdDEyOFZhbHVlLmg7IHBhdGggPSBiMy9CM0NvbnN0MTI4VmFsdWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VDRkFEMzIyMzcyREFBNzAwMjkxNTk5IC8q
IEZpbGVCYXNlZEZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVCYXNlZEZ1enplckFn
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQ0ZBRDMzMjM3MkRBQTcwMDI5
MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxl
QmFzZWRGdXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQ0ZB
RDM0MjM3MkRBQTcwMDI5MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGdXp6ZXJQcmVkaWN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjEw
Myw2ICs2MTEyLDEwIEBACiAJCQkJMEZFQzg0QzQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29uc3Qz
MlZhbHVlLmggKi8sCiAJCQkJMEZFQzg0QzUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29uc3Q2NFZh
bHVlLmNwcCAqLywKIAkJCQkwRkVDODRDNjFCREFDREFDMDA4MEZGNzQgLyogQjNDb25zdDY0VmFs
dWUuaCAqLywKKwkJCQk0QjYyNUEyNTI3M0MzOTRFMDAzQkY1MDMgLyogQjNDb25zdDEyOFZhbHVl
LmNwcCAqLywKKwkJCQlDRTZFQzIxRDI3M0I0NUFFMDAxNTk4RTMgLyogQjNDb25zdDEyOFZhbHVl
LmggKi8sCisJCQkJNEJFODlCRjcyNzQ4NTEzMzAwNzkwOTc3IC8qIEIzU2ltZFZhbHVlLmNwcCAq
LywKKwkJCQk0QkU4OUJGODI3NDg1MTMzMDA3OTA5NzcgLyogQjNTaW1kVmFsdWUuaCAqLywKIAkJ
CQkwRkVDODRDNzFCREFDREFDMDA4MEZGNzQgLyogQjNDb25zdERvdWJsZVZhbHVlLmNwcCAqLywK
IAkJCQkwRkVDODRDODFCREFDREFDMDA4MEZGNzQgLyogQjNDb25zdERvdWJsZVZhbHVlLmggKi8s
CiAJCQkJNDM0MjJBNjAxQzE1ODcxQjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmNwcCAq
LywKQEAgLTY2MDcsNiArNjYyMCw3IEBACiAJCQkJQTczODY1NTIxMTg2OTdCNDAwNTQwMjc5IC8q
IFRodW5rR2VuZXJhdG9ycy5jcHAgKi8sCiAJCQkJQTczODY1NTMxMTg2OTdCNDAwNTQwMjc5IC8q
IFRodW5rR2VuZXJhdG9ycy5oICovLAogCQkJCTY1OTg3RjJGMTY4MjhBN0UwMDNDMkY4RCAvKiBV
bnVzZWRQb2ludGVyLmggKi8sCisJCQkJNEIxMTY3OUYyNzVFQUEzNjAwOEI0RDA4IC8qIFNpbWRJ
bmZvLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGppdDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC05NjI3LDYgKzk2NDEsNyBAQAogCQkJCTBGNjE4MzMxMUM0NUJGMDcwMDcyNDUwQiAv
KiBBaXJMb3dlck1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1Q0Y5ODQxRTlENTM3NzAw
QzE4NjkyIC8qIEFpckxvd2VyU3RhY2tBcmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQwRTRB
NzFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0QkU4
OUJGQjI3NDg1MTMzMDA3OTA5NzcgLyogQjNTaW1kVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAvKiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNDBFNEE5MUM0OTdGNzQwMEE1NzdGQSAvKiBBaXJPcGNvZGVVdGlscy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMzg3OTAxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpck9wdGlt
aXplQmxvY2tPcmRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDQwNyw2ICsxMDQyMiw3IEBACiAJ
CQkJMEZCMzk5QkYyMEFGNkIzRjAwMTdFMjEzIC8qIEluc3RhbmNlT2ZTdGF0dXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjM5OUMwMjBBRjZCNDMwMDE3RTIxMyAvKiBJbnN0YW5jZU9mVmFyaWFu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBNDY4MEMyMTZGQTU2NTAwMEQyQjFBIC8qIEluc3Ry
dWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRTZFQzIxRTI3M0I0NUFFMDAxNTk4RTMgLyog
QjNDb25zdDEyOFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEMyNUI5RTIxNkVBMzZBMDAx
Mzc3NjQgLyogSW5zdHJ1Y3Rpb25TdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNC
MTdBREI1RjMwMDVBQjE3NCAvKiBJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4
QUYzQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MTI1MCw2ICsxMTI2Niw3IEBACiAJCQkJQTdEQ0I5NzMxMkU1MTkzRjAwOTExOTQwIC8qIFdyaXRl
QmFycmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJCNkQ3NTMxOEEzMzc5MzAwNEE5MzAxIC8q
IFdyaXRlQmFycmllcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzgxNTBBMTQwNDNC
RjUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0
QjExNjdBMDI3NUVBQTM2MDA4QjREMDggLyogU2ltZEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5MiAvKiBYODZfNjRSZWdpc3RlcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5MSAvKiBYODZSZWdpc3RlcnMu
aCBpbiBIZWFkZXJzICovLApAQCAtMTIwMzUsNiArMTIwNTIsNyBAQAogCQkJCUUzOTJFNkY4MjRE
MjVGQTYwMEIyMDc2NyAvKiBCM0JvdHRvbVR1cGxlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTJFNjVBMUMyNzY4Mjc2MDAwMkI0QzBBIC8qIEIzRXN0aW1hdGVTdGF0aWNFeGVjdXRpb25D
b3VudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1QUYxQkRCNUQ1RTAwODBGRjc0IC8q
IHRlc3RiM18xLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRCNjI1QTI2MjczQzM5NEUwMDNCRjUw
MyAvKiBCM0NvbnN0MTI4VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMzQTc3QkEyMkYy
NDgwRjAwMzgyN0ZGIC8qIHRlc3RiM18yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDM0E3N0I5
MjJGMjQ4MEIwMDM4MjdGRiAvKiB0ZXN0YjNfMy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzNB
NzdCODIyRjI0ODA5MDAzODI3RkYgLyogdGVzdGIzXzQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggN2EwZWJmZTY5ODFkLi5mYzQyODZlOWJmNzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTEyNCw2ICsxMjQsNyBAQCBiMy9CM0NvbW11
dGF0aXZpdHkuY3BwCiBiMy9CM0NvbXBpbGUuY3BwCiBiMy9CM0NvbnN0MzJWYWx1ZS5jcHAKIGIz
L0IzQ29uc3Q2NFZhbHVlLmNwcAorYjMvQjNDb25zdDEyOFZhbHVlLmNwcAogYjMvQjNDb25zdERv
dWJsZVZhbHVlLmNwcAogYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwCiBiMy9CM0NvbnN0cmFpbmVk
VmFsdWUuY3BwCkBAIC0xNjQsNiArMTY1LDcgQEAgYjMvQjNQdXJlQ1NFLmNwcAogYjMvQjNSZWR1
Y2VEb3VibGVUb0Zsb2F0LmNwcAogYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwCiBiMy9CM1Jl
ZHVjZVN0cmVuZ3RoLmNwcAorYjMvQjNTaW1kVmFsdWUuY3BwCiBiMy9CM1NTQUNhbGN1bGF0b3Iu
Y3BwCiBiMy9CM1Nsb3RCYXNlVmFsdWUuY3BwCiBiMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRB
c3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaAppbmRleCA2ZTkxZDkyMzBhMzkuLjY0OTFhZDJmYWYzYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaApAQCAtNDEsOSArNDEsOSBA
QAogI2luY2x1ZGUgPHppcmNvbi9zeXNjYWxscy5oPgogI2VuZGlmCiAKLSNkZWZpbmUgQ0hFQ0tf
REFUQVNJWkVfT0YoZGF0YXNpemUpIHN0YXRpY19hc3NlcnQoZGF0YXNpemUgPT0gMzIgfHwgZGF0
YXNpemUgPT0gNjQpCisjZGVmaW5lIENIRUNLX0RBVEFTSVpFX09GKGRhdGFzaXplKSBzdGF0aWNf
YXNzZXJ0KGRhdGFzaXplID09IDMyIHx8IGRhdGFzaXplID09IDY0IHx8IGRhdGFzaXplID09IDEy
OCkKICNkZWZpbmUgQ0hFQ0tfTUVNT1BTSVpFX09GKHNpemUpIHN0YXRpY19hc3NlcnQoc2l6ZSA9
PSA4IHx8IHNpemUgPT0gMTYgfHwgc2l6ZSA9PSAzMiB8fCBzaXplID09IDY0IHx8IHNpemUgPT0g
MTI4KTsKLSNkZWZpbmUgREFUQVNJWkVfT0YoZGF0YXNpemUpICgoZGF0YXNpemUgPT0gNjQpID8g
RGF0YXNpemVfNjQgOiBEYXRhc2l6ZV8zMikKKyNkZWZpbmUgREFUQVNJWkVfT0YoZGF0YXNpemUp
ICgoZGF0YXNpemUgPT0gNjQpID8gRGF0YXNpemVfNjQgOiAoKGRhdGFzaXplID09IDEyOCkgPyBE
YXRhc2l6ZV8xMjggOiBEYXRhc2l6ZV8zMikpCiAjZGVmaW5lIE1FTU9QU0laRV9PRihkYXRhc2l6
ZSkgKChkYXRhc2l6ZSA9PSA4IHx8IGRhdGFzaXplID09IDEyOCkgPyBNZW1PcFNpemVfOF9vcl8x
MjggOiAoZGF0YXNpemUgPT0gMTYpID8gTWVtT3BTaXplXzE2IDogKGRhdGFzaXplID09IDMyKSA/
IE1lbU9wU2l6ZV8zMiA6IE1lbU9wU2l6ZV82NCkKICNkZWZpbmUgQ0hFQ0tfREFUQVNJWkUoKSBD
SEVDS19EQVRBU0laRV9PRihkYXRhc2l6ZSkKICNkZWZpbmUgQ0hFQ0tfTUVNT1BTSVpFKCkgQ0hF
Q0tfTUVNT1BTSVpFX09GKGRhdGFzaXplKQpAQCAtMTg3LDcgKzE4Nyw2IEBAIHR5cGVkZWYgZW51
bSA6IGludDhfdCB7CiAKIC8vIEFSTTY0IGFsd2F5cyBoYXMgMzIgRlBVIHJlZ2lzdGVycyAxMjgt
Yml0cyBlYWNoLiBTZWUgaHR0cDovL2xsdm0ub3JnL2Rldm10Zy8yMDEyLTExL05vcnRob3Zlci1B
QXJjaDY0LnBkZgogLy8gYW5kIFNlY3Rpb24gNS4xLjIgaW4gaHR0cDovL2luZm9jZW50ZXIuYXJt
LmNvbS9oZWxwL3RvcGljL2NvbS5hcm0uZG9jLmloaTAwNTViL0lISTAwNTVCX2FhcGNzNjQucGRm
LgotLy8gSG93ZXZlciwgd2Ugb25seSB1c2UgdGhlbSBmb3IgNjQtYml0IGRvdWJsZXMuCiB0eXBl
ZGVmIGVudW0gOiBpbnQ4X3QgewogI2RlZmluZSBSRUdJU1RFUl9JRChpZCwgbmFtZSwgciwgY3Mp
IGlkLAogICAgIEZPUl9FQUNIX0ZQX1JFR0lTVEVSKFJFR0lTVEVSX0lEKQpAQCAtNTIyLDggKzUy
MSw4IEBAIHByb3RlY3RlZDoKICAgICBlbnVtIERhdGFzaXplIHsKICAgICAgICAgRGF0YXNpemVf
MzIsCiAgICAgICAgIERhdGFzaXplXzY0LAotICAgICAgICBEYXRhc2l6ZV82NF90b3AsCi0gICAg
ICAgIERhdGFzaXplXzE2CisgICAgICAgIERhdGFzaXplXzEyOCwKKyAgICAgICAgRGF0YXNpemVf
MTYsCiAgICAgfTsKIAogICAgIGVudW0gTWVtT3BTaXplIHsKQEAgLTE0NzgsNiArMTQ3Nyw0NCBA
QCBwdWJsaWM6CiAgICAgICAgIG1zdWI8ZGF0YXNpemU+KHJkLCBybiwgcm0sIEFSTTY0UmVnaXN0
ZXJzOjp6cik7CiAgICAgfQogCisgICAgdGVtcGxhdGU8aW50IGxhbmVzaXplPgorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBpbnMoRlBSZWdpc3RlcklEIHZkLCB1aW50MzJfdCBsYW5lLCBSZWdpc3Rl
cklEIHJuKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChsYW5lc2l6ZSA9PSA2NCkgewor
ICAgICAgICAgICAgQVNTRVJUKGxhbmUgPCAyKTsKKyAgICAgICAgICAgIGludCBUcyA9IDBiMDEw
MDA7CisgICAgICAgICAgICBpbnQgaW1tNSA9IChsYW5lIDw8IDQpIHwgVHM7CisgICAgICAgICAg
ICBpbnQgaW1tNCA9IDBiMDAxMTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW5zbihzaW1k
RWxlbWVudCgxLCBpbW01LCBpbW00LCBybiwgdmQpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBzdGF0aWNfYXNzZXJ0KGxhbmVzaXplIHx8ICFsYW5lc2l6ZSwgInRoaXMgbGFuZXNpemUg
aXMgbm90IHN1cHBvcnRlZCIpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgbGFuZXNp
emU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHVtb3YoUmVnaXN0ZXJJRCByZCwgRlBSZWdpc3Rl
cklEIHZuLCB1aW50MzJfdCBsYW5lKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChsYW5l
c2l6ZSA9PSA4KSB7CisgICAgICAgICAgICBBU1NFUlQobGFuZSA8IDE2KTsKKyAgICAgICAgICAg
IGJvb2wgUSA9IDA7CisgICAgICAgICAgICBpbnQgVHMgPSAwYjAwMDAxOworICAgICAgICAgICAg
aW50IGltbTUgPSAobGFuZSA8PCAxKSB8IFRzOworICAgICAgICAgICAgaW50IGltbTQgPSAwYjAx
MTE7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGluc24oc2ltZEVsZW1lbnQoUSwgaW1tNSwg
aW1tNCwgdm4sIHJkKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc3RhdGljX2Fzc2Vy
dChsYW5lc2l6ZSB8fCAhbGFuZXNpemUsICJ0aGlzIGxhbmVzaXplIGlzIG5vdCBzdXBwb3J0ZWQi
KTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGxhbmVzaXplPgorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCB1bW92KEZQUmVnaXN0ZXJJRCByZCwgdWludDMyX3QgbGFuZSwgRlBSZWdpc3Rl
cklEIHJ0KQorICAgIHsKKyAgICAgICAgKHZvaWQpIHJkOworICAgICAgICAodm9pZCkgcnQ7Cisg
ICAgICAgICh2b2lkKSBsYW5lOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KKyAgICAKICAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIG1vdihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJtKQogICAgIHsKQEAgLTIz
OTcsMTQgKzI0MzQsMTQgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB2YW5kKEZQ
UmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdm0pCiAgICAgewog
ICAgICAgICBDSEVDS19WRUNUT1JfREFUQVNJWkUoKTsKLSAgICAgICAgaW5zbih2ZWN0b3JEYXRh
UHJvY2Vzc2luZ0xvZ2ljYWwoU0lNRF9Mb2dpY2FsT3BfQU5ELCB2bSwgdm4sIHZkKSk7CisgICAg
ICAgIGluc24odmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsKGRhdGFzaXplLCBTSU1EX0xvZ2lj
YWxPcF9BTkQsIHZtLCB2biwgdmQpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNp
emU+CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHZvcnIoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lz
dGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2bSkKICAgICB7CiAgICAgICAgIENIRUNLX1ZFQ1RPUl9E
QVRBU0laRSgpOwotICAgICAgICBpbnNuKHZlY3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbChTSU1E
X0xvZ2ljYWxPcF9PUlIsIHZtLCB2biwgdmQpKTsKKyAgICAgICAgaW5zbih2ZWN0b3JEYXRhUHJv
Y2Vzc2luZ0xvZ2ljYWwoZGF0YXNpemUsIFNJTURfTG9naWNhbE9wX09SUiwgdm0sIHZuLCB2ZCkp
OwogICAgIH0KIAogICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KQEAgLTM1ODAsOSArMzYxNyw5
IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuICgweDFlMjAwODAwIHwgTSA8PCAzMSB8IFMg
PDwgMjkgfCB0eXBlIDw8IDIyIHwgcm0gPDwgMTYgfCBvcGNvZGUgPDwgMTIgfCBybiA8PCA1IHwg
cmQpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGludCB2ZWN0b3JEYXRhUHJv
Y2Vzc2luZ0xvZ2ljYWwoU0lNRDNTYW1lTG9naWNhbCB1QW5kU2l6ZSwgRlBSZWdpc3RlcklEIHZt
LCBGUFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2ZCkKKyAgICBBTFdBWVNfSU5MSU5FIHN0
YXRpYyBpbnQgdmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsKGludCBkYXRhc2l6ZSwgU0lNRDNT
YW1lTG9naWNhbCB1QW5kU2l6ZSwgRlBSZWdpc3RlcklEIHZtLCBGUFJlZ2lzdGVySUQgdm4sIEZQ
UmVnaXN0ZXJJRCB2ZCkKICAgICB7Ci0gICAgICAgIGNvbnN0IGludCBRID0gMDsKKyAgICAgICAg
aW50IFEgPSBkYXRhc2l6ZSAvIDEyODsKICAgICAgICAgcmV0dXJuICgweGUyMDA0MDAgfCBRIDw8
IDMwIHwgdUFuZFNpemUgPDwgMjIgfCB2bSA8PCAxNiB8IFNJTURfTG9naWNhbE9wIDw8IDExIHwg
dm4gPDwgNSB8IHZkKTsKICAgICB9CiAKQEAgLTM4NDQsNiArMzg4MSwxMSBAQCBwcm90ZWN0ZWQ6
CiAgICAgewogICAgICAgICByZXR1cm4gMHgxZTdlMDAwMCB8IChkbiA8PCA1KSB8IHJkOwogICAg
IH0KKyAgICAKKyAgICBzdGF0aWMgaW50IHNpbWRFbGVtZW50KGJvb2wgUSwgaW50IGltbTUsIGlu
dCBpbW00LCBpbnQgcm4sIGludCByZCkKKyAgICB7CisgICAgICAgIHJldHVybiAwYjAnMCcwJzAx
MTEwMDAwJzAwMDAwJzAnMDAnMScxJzEnMDAwMDAnMDAwMDAgfCAoUSA8PCAzMCkgfCAoaW1tNSA8
PCAxNikgfCAoaW1tNCA8PCAxMSkgfCAocm4gPDwgNSkgfCByZDsKKyAgICB9CiAKICAgICBWZWN0
b3I8TGlua1JlY29yZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fanVtcHNUb0xpbms7CiAg
ICAgaW50IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCAxYzE1ZjJmZTQw
NjEuLmQ2NDA3M2MwYzBkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJBUk02NEFzc2VtYmxlci5oIgogI2luY2x1ZGUgIkFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCIK
ICNpbmNsdWRlICJKSVRPcGVyYXRpb25WYWxpZGF0aW9uLmgiCisjaW5jbHVkZSAiU2ltZEluZm8u
aCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTI0
NDMsNiArMjQ0NCwzNSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5mZGl2
PDMyPihkZXN0LCBvcDEsIG9wMik7CiAgICAgfQorICAgIAorICAgIHZvaWQgbG9hZFZlY3RvcihB
ZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHRy
eUxvYWRXaXRoT2Zmc2V0PDEyOD4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCkp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3Rl
ZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5sZHI8MTI4PihkZXN0LCBhZGRyZXNz
LmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgfQorCisgICAgdm9pZCBsb2FkVmVjdG9y
KEJhc2VJbmRleCBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlm
IChhZGRyZXNzLnNjYWxlID09IFRpbWVzT25lIHx8IGFkZHJlc3Muc2NhbGUgPT0gVGltZXNFaWdo
dCkgeworICAgICAgICAgICAgaWYgKGF1dG8gYmFzZUdQUiA9IHRyeUZvbGRCYXNlQW5kT2Zmc2V0
UGFydChhZGRyZXNzKSkgeworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwxMjg+KGRl
c3QsIGJhc2VHUFIudmFsdWUoKSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJl
c3MpLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIo
YWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRh
dGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDwxMjg+KG1lbW9yeVRlbXBSZWdpc3Rlciwg
bWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVz
cyksIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5sZHI8MTI4PihkZXN0LCBh
ZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgfQorICAgIAorICAgIHZvaWQg
bG9hZFZlY3RvcihUcnVzdGVkSW1tUHRyIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbW92ZVRvQ2FjaGVkUmVnKGFkZHJlc3MsIGNhY2hlZE1lbW9yeVRlbXBSZWdp
c3RlcigpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRyPDEyOD4oZGVzdCwgbWVtb3J5VGVtcFJl
Z2lzdGVyLCBBUk02NFJlZ2lzdGVyczo6enIpOworICAgIH0KIAogICAgIHZvaWQgbG9hZERvdWJs
ZShBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKQEAgLTI1MDYsNiAr
MjUzNiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5mbW92PDY0Pihk
ZXN0LCBzcmMpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIG1vdmVWZWN0b3IoRlBSZWdpc3RlcklE
IHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci52b3Jy
PDEyOD4oZGVzdCwgc3JjLCBzcmMpOworICAgIH0KIAogICAgIHZvaWQgbW92ZVplcm9Ub0RvdWJs
ZShGUFJlZ2lzdGVySUQgcmVnKQogICAgIHsKQEAgLTI3OTcsNiArMjgzMiwzNSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlU
ZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRk
cmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjwzMj4oc3JjLCBhZGRyZXNzLmJh
c2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVWZWN0
b3IoRlBSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYg
KHRyeVN0b3JlV2l0aE9mZnNldDwxMjg+KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNl
dCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1
c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MTI4PihzcmMsIGFkZHJl
c3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlVmVj
dG9yKEZQUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW1QdHIgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1vdmVUb0NhY2hlZFJlZyhhZGRyZXNzLCBjYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXIoKSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN0cjwxMjg+KHNyYywgbWVtb3J5VGVtcFJlZ2lzdGVyLCBB
Uk02NFJlZ2lzdGVyczo6enIpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVWZWN0b3IoRlBSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBpZiAoYWRkcmVz
cy5zY2FsZSA9PSBUaW1lc09uZSB8fCBhZGRyZXNzLnNjYWxlID09IFRpbWVzRWlnaHQpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvIGJhc2VHUFIgPSB0cnlGb2xkQmFzZUFuZE9mZnNldFBhcnQoYWRk
cmVzcykpIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MTI4PihzcmMsIGJhc2VH
UFIudmFsdWUoKSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5v
ZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmFkZDwxMjg+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVt
cFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJl
c3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MTI4PihzcmMsIGFkZHJlc3MuYmFz
ZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICB9CiAKICAgICB2b2lkIHN1YkRvdWJsZShGUFJl
Z2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC00NTYxLDYgKzQ2MjUs
MTYgQEAgcHVibGljOgogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoRkFTVF9UTFNfSklUKQogICAg
IAorICAgIHZvaWQgcmVwbGFjZUxhbmUoU2ltZExhbmVJbnRlcnByZXRhdGlvbiwgU2ltZFNpZ25F
eHRlbmRNb2RlLCBUcnVzdGVkSW1tMzIgbGFuZSwgUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuaW5zPDY0PihkZXN0LCBsYW5lLm1f
dmFsdWUsIHNyYyk7CisgICAgfQorICAgIAorICAgIHZvaWQgZXh0cmFjdExhbmUoU2ltZExhbmVJ
bnRlcnByZXRhdGlvbiwgU2ltZFNpZ25FeHRlbmRNb2RlLCBUcnVzdGVkSW1tMzIgbGFuZSwgRlBS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIudW1vdjw4PihkZXN0LCBzcmMsIGxhbmUubV92YWx1ZSk7CisgICAgfQorICAgIAogICAgIC8v
IE1pc2MgaGVscGVyIGZ1bmN0aW9ucy4KIAogICAgIC8vIEludmVydCBhIHJlbGF0aW9uYWwgY29u
ZGl0aW9uLCBlLmcuID09IGJlY29tZXMgIT0sIDwgYmVjb21lcyA+PSwgZXRjLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
CmluZGV4IDA0NWRlZmVkYjE1NC4uOTRiZDQ2NzVkNjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgQ1BVKFg4Nl82NCkKIAogI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgiCisjaW5jbHVkZSAiU2ltZEluZm8uaCIKIAog
I2RlZmluZSBSRVBBVENIX09GRlNFVF9DQUxMX1IxMSAzCiAKQEAgLTEwNDcsNiArMTA0OCwzNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX3JyKHNyYywgZGVzdCk7
CiAgICAgfQorICAgIAorICAgIHZvaWQgbW92ZVZlY3RvcihGUFJlZ2lzdGVySUQgc3JjLCBGUFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmFwc19ycihzcmMs
IGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRWZWN0b3IoVHJ1c3RlZEltbVB0ciBh
ZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoYWRkcmVzcywg
c2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICBsb2FkVmVjdG9yKEFkZHJlc3Moc2NyYXRjaFJl
Z2lzdGVyKCkpLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRWZWN0b3IoQWRkcmVzcyBh
ZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnZt
b3Z1cHNfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CisgICAgfQorCisg
ICAgdm9pZCBsb2FkVmVjdG9yKEJhc2VJbmRleCBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3Z1cHNfbXIoYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSwgZGVzdCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgc3RvcmVWZWN0b3IoRlBSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdnVwc19ybShzcmMsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlVmVjdG9y
KEZQUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIudm1vdnVwc19ybShzcmMsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KIAogICAgIHZvaWQgY29tcGFyZTY0
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIg
cmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC0xOTc0LDYgKzIwMDYsMTYgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hZGRzc19ycihkZXN0LCBkZXN0KTsKICAgICAgICAg
bV9hc3NlbWJsZXIubGlua0p1bXAoZG9uZSwgbV9hc3NlbWJsZXIubGFiZWwoKSk7CiAgICAgfQor
ICAgIAorICAgIHZvaWQgcmVwbGFjZUxhbmUoU2ltZExhbmVJbnRlcnByZXRhdGlvbiwgU2ltZFNp
Z25FeHRlbmRNb2RlLCBUcnVzdGVkSW1tMzIgbGFuZSwgUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIucGluc3I8NjQ+KGRlc3QsIGxh
bmUubV92YWx1ZSwgc3JjKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBleHRyYWN0TGFuZShTaW1k
TGFuZUludGVycHJldGF0aW9uLCBTaW1kU2lnbkV4dGVuZE1vZGUsIFRydXN0ZWRJbW0zMiBsYW5l
LCBGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5wZXh0cjw4PihkZXN0LCBzcmMsIGxhbmUubV92YWx1ZSk7CisgICAgfQogCiAgICAg
c3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkgeyByZXR1cm4gdHJ1
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgK
aW5kZXggOTUwM2I5OWJhYTI5Li4zZWY2MzFjMDU5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtMzE5LDYgKzMxOSwxMCBAQCBwcml2
YXRlOgogICAgICAgICBPUDNfTEZFTkNFICAgICAgICAgICA9IDB4RTgsCiAgICAgICAgIE9QM19N
RkVOQ0UgICAgICAgICAgID0gMHhGMCwKICAgICAgICAgT1AzX1NGRU5DRSAgICAgICAgICAgPSAw
eEY4LAorICAgICAgICBPUDNfUEVYVFJCICAgICAgICAgICA9IDB4MTQsCisgICAgICAgIE9QM19Q
RVhUUkQgICAgICAgICAgID0gMHgxNiwKKyAgICAgICAgT1AzX1BJTlNSQiAgICAgICAgICAgPSAw
eDIwLAorICAgICAgICBPUDNfUElOU1JEICAgICAgICAgICA9IDB4MjIsCiAgICAgfSBUaHJlZUJ5
dGVPcGNvZGVJRDsKIAogICAgIHN0cnVjdCBWZXhQcmVmaXggewpAQCAtMjM2MCw2ICsyMzY0LDMw
IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWENIR19Fdkd2
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CiAjZW5kaWYKKyAgICAK
KyAgICB0ZW1wbGF0ZTxpbnQgbGFuZXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHBpbnNy
KFhNTVJlZ2lzdGVySUQgdmQsIHVpbnQzMl90IGxhbmUsIFJlZ2lzdGVySUQgcm4pCisgICAgewor
ICAgICAgICBpZiBjb25zdGV4cHIgKGxhbmVzaXplID09IDY0KSB7CisgICAgICAgICAgICBBU1NF
UlQobGFuZSA8IDIpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5E
X1NJWkUpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIudGhyZWVCeXRlT3A2NChPUDJfM0JZVEVf
RVNDQVBFXzNBLCBPUDNfUElOU1JELCAoUmVnaXN0ZXJJRCkgdmQsIHJuKTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoKHVpbnQ4X3QpIGxhbmUpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQobGFuZXNpemUgfHwgIWxhbmVzaXplLCAidGhpcyBs
YW5lc2l6ZSBpcyBub3Qgc3VwcG9ydGVkIik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGlu
dCBsYW5lc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcGV4dHIoUmVnaXN0ZXJJRCByZCwg
WE1NUmVnaXN0ZXJJRCB2biwgdWludDMyX3QgbGFuZSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0
ZXhwciAobGFuZXNpemUgPT0gOCkgeworICAgICAgICAgICAgQVNTRVJUKGxhbmUgPCAxNik7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci50aHJlZUJ5dGVPcDY0KE9QMl8zQllURV9FU0NBUEVfM0EsIE9QM19Q
RVhUUkIsIChSZWdpc3RlcklEKSB2biwgcmQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlOCgodWludDhfdCkgbGFuZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc3Rh
dGljX2Fzc2VydChsYW5lc2l6ZSB8fCAhbGFuZXNpemUsICJ0aGlzIGxhbmVzaXplIGlzIG5vdCBz
dXBwb3J0ZWQiKTsKKyAgICB9CiAKICAgICB2b2lkIG1vdmxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTMxODEsNiArMzIwOSwyNiBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX01PVkFQU19WcGRXcGQsIChSZWdp
c3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpc3JjKTsKICAgICB9CisgICAgCisgICAgdm9pZCB2bW92
dXBzX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci52ZXhXaWdUd29CeXRlT3AoT1BfMkJZVEVfRVNDQVBF
LCBPUDJfTU9WU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgdm1vdnVwc19tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci52ZXhXaWdUd29CeXRlT3AoT1BfMkJZVEVfRVNDQVBFLCBPUDJf
TU9WU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxl
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB2bW92dXBzX3JtKFhNTVJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci52
ZXhXaWdUd29CeXRlT3AoT1BfMkJZVEVfRVNDQVBFLCBPUDJfTU9WU0RfV3NkVnNkLCAoUmVnaXN0
ZXJJRClzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgdm1vdnVwc19y
bShYTU1SZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci52ZXhXaWdU
d29CeXRlT3AoT1BfMkJZVEVfRVNDQVBFLCBPUDJfTU9WU0RfV3NkVnNkLCAoUmVnaXN0ZXJJRClz
cmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CiAKICAgICB2b2lkIG1vdnNk
X3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC00MzI4
LDkgKzQzNzYsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgMHhGMjoKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDM7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAgICAgfQogCiAgICAgICAgIH07CkBAIC00NDU5LDYgKzQ1MDYsMjIg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTUFkZHIocmVnLCBhZGRy
ZXNzKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgdmV4V2lnVHdvQnl0ZU9wKE9uZUJ5dGVP
cGNvZGVJRCBzaW1kUHJlZml4LCBUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBSZWdpc3RlcklEIGRl
c3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50IG9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAg
U2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAg
ICAgIHdyaXRlci50aHJlZUJ5dGVzVmV4TmRzKHNpbWRQcmVmaXgsIFZleEltcGxpZWRCeXRlczo6
VHdvQnl0ZXNPcCwgZGVzdCwgKFJlZ2lzdGVySUQpIDAsIGJhc2UpOworICAgICAgICAgICAgd3Jp
dGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlN
b2RSTShkZXN0LCBiYXNlLCBvZmZzZXQpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB2ZXhX
aWdUd29CeXRlT3AoT25lQnl0ZU9wY29kZUlEIHNpbWRQcmVmaXgsIFR3b0J5dGVPcGNvZGVJRCBv
cGNvZGUsIFJlZ2lzdGVySUQgZGVzdCwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUlu
c3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0
ZXIudGhyZWVCeXRlc1ZleE5kcyhzaW1kUHJlZml4LCBWZXhJbXBsaWVkQnl0ZXM6OlR3b0J5dGVz
T3AsIGRlc3QsIChSZWdpc3RlcklEKSAwLCBpbmRleCwgYmFzZSk7CisgICAgICAgICAgICB3cml0
ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1v
ZFJNKGRlc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgfQorCiAgICAg
ICAgIHZvaWQgdmV4TmRzTGlnV2lnVHdvQnl0ZU9wKE9uZUJ5dGVPcGNvZGVJRCBzaW1kUHJlZml4
LCBUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgYSwg
UmVnaXN0ZXJJRCBiKQogICAgICAgICB7CiAgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1
ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOwpAQCAtNDYzMSw2ICs0Njk0LDE2IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwogICAgICAg
ICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgdm9pZCB0aHJlZUJ5dGVPcDY0KFR3
b0J5dGVPcGNvZGVJRCB0d29CeXRlUHJlZml4LCBUaHJlZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGlu
dCByZWcsIFJlZ2lzdGVySUQgcm0pCisgICAgICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3Ry
dWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIu
ZW1pdFJleCh0cnVlLCByZWcsIDAsIHJtKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5j
aGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hl
Y2tlZCh0d29CeXRlUHJlZml4KTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2Vk
KG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIucmVnaXN0ZXJNb2RSTShyZWcsIHJtKTsKKyAg
ICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgLy8gQnl0ZS1vcGVyYW5kczoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAppbmRleCAxZGU1YjVkZmQyZDUu
LjIzMzc5ZTdhYzI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXJn
dW1lbnRSZWdWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50
UmVnVmFsdWUuaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBPcGNvZGUg
b3Bjb2RlRnJvbUNvbnN0cnVjdG9yKE9yaWdpbiwgUmVnKSB7IHJldHVybiBBcmd1bWVudFJlZzsg
fQogCiAgICAgQXJndW1lbnRSZWdWYWx1ZShPcmlnaW4gb3JpZ2luLCBSZWcgcmVnKQotICAgICAg
ICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIEFyZ3VtZW50UmVnLCByZWcuaXNHUFIoKSA/IHBvaW50
ZXJUeXBlKCkgOiBEb3VibGUsIFplcm8sIG9yaWdpbikKKyAgICAgICAgOiBWYWx1ZShDaGVja2Vk
T3Bjb2RlLCBBcmd1bWVudFJlZywgcmVnLmlzR1BSKCkgPyBwb2ludGVyVHlwZSgpIDogVjEyOCwg
WmVybywgb3JpZ2luKQogICAgICAgICAsIG1fcmVnKHJlZykKICAgICB7CiAgICAgICAgIEFTU0VS
VChyZWcuaXNTZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNC
YW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0JhbmsuY3BwCmluZGV4IDZkZDM2
NmMxZjVjZS4uNzM1Mjc4MWE5Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNCYW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYW5rLmNwcApA
QCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkIzQmFuay5o
IgogCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKQEAgLTQ3LDUgKzQ1LDMgQEAgdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIEpTQzo6QjM6OkJhbmsgYmFuaykKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQmFuay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFuay5o
CmluZGV4IDViZWJmMjZhYzRjNy4uYTZmZTM5ODQ1NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNCYW5rLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
QmFuay5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKEIz
X0pJVCkKLQogI2luY2x1ZGUgIkIzVHlwZS5oIgogI2luY2x1ZGUgIlJlZy5oIgogCkBAIC00Niw2
ICs0NCwxMiBAQCB2b2lkIGZvckVhY2hCYW5rKGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgZnVuYyhG
UCk7CiB9CiAKK2lubGluZSBCYW5rIGJhbmtGb3JSZWcoUmVnIHJlZykKK3sKKyAgICByZXR1cm4g
cmVnLmlzR1BSKCkgPyBHUCA6IEZQOworfQorCisjaWYgRU5BQkxFKEIzX0pJVCkKIGlubGluZSBC
YW5rIGJhbmtGb3JUeXBlKFR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUua2luZCgpKSB7
CkBAIC01OCwxNiArNjIsMTMgQEAgaW5saW5lIEJhbmsgYmFua0ZvclR5cGUoVHlwZSB0eXBlKQog
ICAgICAgICByZXR1cm4gR1A7CiAgICAgY2FzZSBGbG9hdDoKICAgICBjYXNlIERvdWJsZToKKyAg
ICBjYXNlIFYxMjg6CiAgICAgICAgIHJldHVybiBGUDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIEdQOwogfQotCi1pbmxpbmUgQmFuayBiYW5rRm9yUmVnKFJl
ZyByZWcpCi17Ci0gICAgcmV0dXJuIHJlZy5pc0dQUigpID8gR1AgOiBGUDsKLX0KKyNlbmRpZiAv
LyBFTkFCTEUoQjNfSklUKQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIApAQCAtNzksNSAr
ODAsMyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkIzOjpCYW5rKTsK
IAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDEyOFZhbHVlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MTI4VmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTBlNmNmZjM2MTQ4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QxMjhWYWx1ZS5jcHAKQEAgLTAsMCAr
MSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCM0NvbnN0MTI4VmFsdWUuaCIKKworI2lmIEVO
QUJMRShCM19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitDb25zdDEy
OFZhbHVlOjp+Q29uc3QxMjhWYWx1ZSgpCit7Cit9CisKK3ZvaWQgQ29uc3QxMjhWYWx1ZTo6ZHVt
cE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAg
ICBvdXQucHJpbnQoY29tbWEsIG1fdmFsdWUudTY0eDJbMF0sIGNvbW1hLCBtX3ZhbHVlLnU2NHgy
WzFdKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUo
QjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QxMjhW
YWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QxMjhWYWx1ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2JlZWVmODlmMzc4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QxMjhWYWx1ZS5oCkBA
IC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM1Zh
bHVlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBKU19FWFBP
UlRfUFJJVkFURSBDb25zdDEyOFZhbHVlIDogcHVibGljIFZhbHVlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkgeyByZXR1cm4ga2luZCA9PSBDb25zdDEyODsg
fQorICAgIAorICAgIH5Db25zdDEyOFZhbHVlKCkgb3ZlcnJpZGU7CisgICAgCisgICAgdjEyOF90
IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgQjNfU1BFQ0lBTElaRV9W
QUxVRV9GT1JfTk9fQ0hJTERSRU4KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZHVtcE1ldGEoQ29t
bWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKworICAgIENvbnN0MTI4
VmFsdWUoT3JpZ2luIG9yaWdpbiwgdjEyOF90IHZhbHVlKQorICAgICAgICA6IFZhbHVlKENoZWNr
ZWRPcGNvZGUsIENvbnN0MTI4LCBWMTI4LCBaZXJvLCBvcmlnaW4pCisgICAgICAgICwgbV92YWx1
ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBPcGNvZGUgb3Bj
b2RlRnJvbUNvbnN0cnVjdG9yKE9yaWdpbiwgdjEyOF90KSB7IHJldHVybiBDb25zdDEyODsgfQor
ICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgZnJpZW5kIGNsYXNzIFZhbHVlOworCisg
ICAgdjEyOF90IG1fdmFsdWU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2Vu
ZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwCmluZGV4IGQ0MjJjMzgwMmZhNi4uMmFhYTY3YjA5NDcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMTE4OSw2ICsxMTg5LDggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICByZXR1cm4gTW92ZURvdWJsZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CkBAIC0xODU1LDYgKzE4NTcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxlZnQuY29uc3VtZSgqdGhpcyksIHJpZ2h0LmNvbnN1bWUoKnRoaXMpKSk7CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEluc3QoKTsKKyAg
ICAgICAgICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICB9LApAQCAtMTg4NSw2ICsxODg5LDggQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsZWZ0LmNvbnN1bWUoKnRoaXMpLCByaWdodC5jb25zdW1lKCp0
aGlzKSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBJbnN0KCk7CisgICAgICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgfSwKQEAgLTE5MzMsNiArMTkzOSw4IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdC5jb25zdW1lKCp0aGlzKSwgcmln
aHQuY29uc3VtZSgqdGhpcyksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJbnN0KCk7CisgICAgICAgICAgICAgICAgY2Fz
ZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgfSwK
QEAgLTE5NTcsNiArMTk2NSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGVmdC5jb25zdW1lKCp0aGlzKSwgcmlnaHQuY29uc3VtZSgqdGhpcyksIHRtcChtX3ZhbHVl
KSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJ
bnN0KCk7CisgICAgICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICAgICAgfSwKQEAgLTIwMjQsNiArMjAzNCw4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RJbnN0cnVjdGlvbihjb25m
aWcubW92ZUNvbmRpdGlvbmFsbHkzMiwgcmVsQ29uZCwgbGVmdCwgcmlnaHQpOwogICAgICAgICAg
ICAgICAgIGNhc2UgV2lkdGg2NDoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVNl
bGVjdEluc3RydWN0aW9uKGNvbmZpZy5tb3ZlQ29uZGl0aW9uYWxseTY0LCByZWxDb25kLCBsZWZ0
LCByaWdodCk7CisgICAgICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgfSwKQEAgLTIwMzksNiArMjA1MSw4IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RJbnN0cnVjdGlvbihj
b25maWcubW92ZUNvbmRpdGlvbmFsbHlUZXN0MzIsIHJlc0NvbmQsIGxlZnQsIHJpZ2h0KTsKICAg
ICAgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBj
cmVhdGVTZWxlY3RJbnN0cnVjdGlvbihjb25maWcubW92ZUNvbmRpdGlvbmFsbHlUZXN0NjQsIHJl
c0NvbmQsIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9LApAQCAtMjMxNCw2ICsyMzI4
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFdpZHRoMzI6CiAgICAgICAgICAg
ICAgICAgY2FzZSBXaWR0aDY0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVGb3JU
eXBlKGF0b21pYy0+YWNjZXNzVHlwZSgpKSwgZXhwZWN0ZWRWYWx1ZVRtcCwgdmFsdWVSZXN1bHRU
bXApOwpAQCAtMjMzMCw2ICsyMzQ3LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNl
IFdpZHRoNjQ6CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRyYXBwaW5nKEFpcjo6QnJhbmNo
NjQsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpLCB2YWx1ZVJlc3VsdFRtcCwg
ZXhwZWN0ZWRWYWx1ZVRtcCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgV2lkdGgxMjg6CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+c2V0U3VjY2Vz
c29ycyhzdWNjZXNzLCBmYWlsdXJlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDg4
LDYgKzI1MDgsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgogICAgICAg
ICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBNb3ZlOwogICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsK
QEAgLTM1ODQsNiArMzYwNywxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKKyAgICAgICAgY2FzZSBCMzo6RXh0cmFjdExhbmU6IHsKKyAgICAgICAgICAgIFNp
bWRWYWx1ZSogc2ltZCA9IG1fdmFsdWUtPmFzPFNpbWRWYWx1ZT4oKTsKKyAgICAgICAgICAgIGF1
dG8gbGFuZUluZm8gPSBBcmc6OnNpbWRJbmZvKHNpbWQtPmxhbmVJbnRlcnByZXRhdGlvbigpLCBz
aW1kLT5zaWduRXh0ZW5kTW9kZSgpKTsKKyAgICAgICAgICAgIGFwcGVuZChBaXI6OkV4dHJhY3RM
YW5lLCBsYW5lSW5mbywgQXJnOjppbW0oc2ltZC0+aW1tZWRpYXRlKDApKSwgdG1wKHNpbWQtPmNo
aWxkKDApKSwgdG1wKHNpbWQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAg
ICAgICAgIGNhc2UgRmVuY2U6IHsKICAgICAgICAgICAgIEZlbmNlVmFsdWUqIGZlbmNlID0gbV92
YWx1ZS0+YXM8RmVuY2VWYWx1ZT4oKTsKICAgICAgICAgICAgIGlmICghZmVuY2UtPndyaXRlICYm
ICFmZW5jZS0+cmVhZCkKQEAgLTM2NjYsMTIgKzM2OTYsMjUgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGFwcGVuZChNb3ZlWmVyb1RvRG91YmxlLCB0bXAobV92YWx1ZSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBDb25zdDEyODog
eworICAgICAgICAgICAgYXV0byBsYW5lSW5mbyA9IEFyZzo6c2ltZEluZm8oU2ltZExhbmVJbnRl
cnByZXRhdGlvbjo6aTY0eDIsIFNpbWRTaWduRXh0ZW5kTW9kZTo6TkEpOworICAgICAgICAgICAg
YXV0byB2YWx1ZSA9IG1fdmFsdWUtPmFzPENvbnN0MTI4VmFsdWU+KCktPnZhbHVlKCk7CisgICAg
ICAgICAgICBhdXRvIGEgPSB0bXBGb3JUeXBlKEludDY0KTsKKyAgICAgICAgICAgIGF1dG8gcmVz
dWx0ID0gdG1wKG1fdmFsdWUpOworICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YmlnSW1t
KHZhbHVlLnU2NHgyWzBdKSwgYSk7CisgICAgICAgICAgICBhcHBlbmQoUmVwbGFjZUxhbmUsIGxh
bmVJbmZvLCBBcmc6OmltbSgwKSwgYSwgcmVzdWx0KTsKKyAgICAgICAgICAgIGFwcGVuZChNb3Zl
LCBBcmc6OmJpZ0ltbSh2YWx1ZS51NjR4MlsxXSksIGEpOworICAgICAgICAgICAgYXBwZW5kKFJl
cGxhY2VMYW5lLCBsYW5lSW5mbywgQXJnOjppbW0oMSksIGEsIHJlc3VsdCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBjYXNlIEJvdHRvbVR1cGxlOiB7CiAgICAg
ICAgICAgICBmb3JFYWNoSW1tT3JUbXAobV92YWx1ZSwgWyZdIChBcmcgdG1wLCBUeXBlIHR5cGUs
IHVuc2lnbmVkKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlLmtpbmQoKSkgewogICAg
ICAgICAgICAgICAgIGNhc2UgVm9pZDoKICAgICAgICAgICAgICAgICBjYXNlIFR1cGxlOgorICAg
ICAgICAgICAgICAgIGNhc2UgVjEyODoKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgY2FzZSBJbnQzMjoKQEAgLTQyNTUsNiArNDI5OCwxMSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGFwcGVuZChNb3ZlRG91YmxlLCB0bXAodmFsdWUpLCByZXR1cm5WYWx1ZUZQUik7
CiAgICAgICAgICAgICAgICAgYXBwZW5kKFJldERvdWJsZSwgcmV0dXJuVmFsdWVGUFIpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBWMTI4OiAvLyBUT0RPCisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAg
ICBhcHBlbmQoTW92ZURvdWJsZSwgdG1wKHZhbHVlKSwgcmV0dXJuVmFsdWVGUFIpOworICAgICAg
ICAgICAgICAgIGFwcGVuZChSZXREb3VibGUsIHJldHVyblZhbHVlRlBSKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCmluZGV4IGFlNTlj
NjA5NTNhMy4uY2JhODQ1ODUxYmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNNZW1vcnlWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVt
b3J5VmFsdWUuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEJhbmsgTWVtb3J5VmFsdWU6OmFjY2Vzc0Jh
bmsoKSBjb25zdAogCiBzaXplX3QgTWVtb3J5VmFsdWU6OmFjY2Vzc0J5dGVTaXplKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gYnl0ZXMoYWNjZXNzV2lkdGgoKSk7CisgICAgcmV0dXJuIGJ5dGVzRm9y
V2lkdGgoYWNjZXNzV2lkdGgoKSk7CiB9CiAKIHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENv
bW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzT3Bjb2RlLmNwcAppbmRleCAxMzE5NTZlNTBiNzkuLjM0MDFiYzY2MGY4YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCkBAIC0xMjAsNiArMTIwLDkgQEAgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE9wY29kZSBvcGNvZGUpCiAgICAgY2Fz
ZSBDb25zdEZsb2F0OgogICAgICAgICBvdXQucHJpbnQoIkNvbnN0RmxvYXQiKTsKICAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgQ29uc3QxMjg6CisgICAgICAgIG91dC5wcmludCgiQ29uc3QxMjgi
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQm90dG9tVHVwbGU6CiAgICAgICAgIG91dC5w
cmludCgiQm90dG9tVHVwbGUiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzYzLDYgKzM2Niw5IEBA
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGNvZGUgb3Bjb2RlKQogICAg
IGNhc2UgSnVtcDoKICAgICAgICAgb3V0LnByaW50KCJKdW1wIik7CiAgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEV4dHJhY3RMYW5lOgorICAgICAgICBvdXQucHJpbnQoIkV4dHJhY3RMYW5lIik7
CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEJyYW5jaDoKICAgICAgICAgb3V0LnByaW50KCJC
cmFuY2giKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaApp
bmRleCA2NWE3ZGEzYjBhYTIuLmUwZTg0MjNmNzQzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
T3Bjb2RlLmgKQEAgLTU0LDYgKzU0LDcgQEAgZW51bSBPcGNvZGUgOiB1aW50OF90IHsKICAgICBD
b25zdDY0LAogICAgIENvbnN0RG91YmxlLAogICAgIENvbnN0RmxvYXQsCisgICAgQ29uc3QxMjgs
CiAKICAgICAvLyBUdXBsZSBmaWxsZWQgd2l0aCB6ZXJvcy4gVGhpcyBhcHBlYXJzIHdoZW4gVHVw
bGUgUGF0Y2hwb2ludHMgYXJlIHJlcGxhY2VkIHdpdGggQm90dG9tIHZhbHVlcy4KICAgICBCb3R0
b21UdXBsZSwKQEAgLTM0Miw2ICszNDMsOSBAQCBlbnVtIE9wY29kZSA6IHVpbnQ4X3QgewogICAg
IC8vIFdpdGhvdXQgc29tZSBzdWNoIG5vZGUgQjMgd291bGQgbm90IGhhdmUgZW5vdWdoIGluZm9y
bWF0aW9uIGFib3V0IHRoZSBpbm5lciB3b3JraW5ncyBvZiB3YXNtCiAgICAgLy8gdG8gYmUgYWJs
ZSB0byBwZXJmb3JtIHN1Y2ggb3B0aW1pemF0aW9ucy4KICAgICBXYXNtQm91bmRzQ2hlY2ssCisg
ICAgCisgICAgLy8gU2ltZCBpbnN0cnVjdGlvbnMKKyAgICBFeHRyYWN0TGFuZSwKIAogICAgIC8v
IFNTQSBzdXBwb3J0LCBpbiB0aGUgc3R5bGUgb2YgREZHIFNTQS4KICAgICBVcHNpbG9uLCAvLyBU
aGlzIHVzZXMgdGhlIFVwc2lsb25WYWx1ZSBjbGFzcy4KQEAgLTM5OCw2ICs0MDIsNyBAQCBpbmxp
bmUgYm9vbCBpc0NvbnN0YW50KE9wY29kZSBvcGNvZGUpCiAgICAgY2FzZSBDb25zdDY0OgogICAg
IGNhc2UgQ29uc3REb3VibGU6CiAgICAgY2FzZSBDb25zdEZsb2F0OgorICAgIGNhc2UgQ29uc3Qx
Mjg6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTQxMSw2ICs0MTYsNyBAQCBpbmxpbmUgT3Bjb2RlIG9wY29kZUZvckNvbnN0YW50
KFR5cGUgdHlwZSkKICAgICBjYXNlIEludDY0OiByZXR1cm4gQ29uc3Q2NDsKICAgICBjYXNlIEZs
b2F0OiByZXR1cm4gQ29uc3RGbG9hdDsKICAgICBjYXNlIERvdWJsZTogcmV0dXJuIENvbnN0RG91
YmxlOworICAgIGNhc2UgVjEyODogcmV0dXJuIENvbnN0MTI4OwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKaW5kZXggMWUxNGFlODNlMzBiLi43OGQ3NGIzNjQxZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcApAQCAtMTQ0LDYgKzE0
NCwxMiBAQCBWYWx1ZSogUHJvY2VkdXJlOjphZGRDb25zdGFudChPcmlnaW4gb3JpZ2luLCBUeXBl
IHR5cGUsIHVpbnQ2NF90IGJpdHMpCiAgICAgICAgIHJldHVybiBhZGQ8Q29uc3RGbG9hdFZhbHVl
PihvcmlnaW4sIGJpdHdpc2VfY2FzdDxmbG9hdD4oc3RhdGljX2Nhc3Q8aW50MzJfdD4oYml0cykp
KTsKICAgICBjYXNlIERvdWJsZToKICAgICAgICAgcmV0dXJuIGFkZDxDb25zdERvdWJsZVZhbHVl
PihvcmlnaW4sIGJpdHdpc2VfY2FzdDxkb3VibGU+KGJpdHMpKTsKKyAgICBjYXNlIFYxMjg6IHsK
KyAgICAgICAgdjEyOF90IGNvbnN0YW50OworICAgICAgICBjb25zdGFudC51NjR4MlswXSA9IGJp
dHM7CisgICAgICAgIGNvbnN0YW50LnU2NHgyWzFdID0gYml0czsKKyAgICAgICAgcmV0dXJuIGFk
ZDxDb25zdDEyOFZhbHVlPihvcmlnaW4sIGNvbnN0YW50KTsKKyAgICB9CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTaW1kVmFsdWUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU2ltZFZhbHVlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmEwZThkZDU3NjY1YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NpbWRWYWx1ZS5jcHAKQEAgLTAsMCAr
MSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCM1NpbWRWYWx1ZS5oIgorCisjaWYgRU5BQkxF
KEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK1NpbWRWYWx1ZTo6
flNpbWRWYWx1ZSgpCit7Cit9CisKK3ZvaWQgU2ltZFZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50
ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0Cit7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
MworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1NpbWRWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU2lt
ZFZhbHVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jODkyMTUz
ZWJiODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTaW1k
VmFsdWUuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5j
bHVkZSAiQjNWYWx1ZS5oIgorI2luY2x1ZGUgIlNpbWRJbmZvLmgiCisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBTaW1kVmFsdWUgOiBw
dWJsaWMgVmFsdWUgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5k
KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgICAgIGNhc2Ug
RXh0cmFjdExhbmU6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB+
U2ltZFZhbHVlKCkgb3ZlcnJpZGU7CisgICAgCisgICAgU2ltZExhbmVJbnRlcnByZXRhdGlvbiBs
YW5lSW50ZXJwcmV0YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xhbmVJbnRlcnByZXRhdGlvbjsg
fQorICAgIFNpbWRTaWduRXh0ZW5kTW9kZSBzaWduRXh0ZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2lnbk1vZGU7IH0KKyAgICB1aW50OF90IGltbWVkaWF0ZShzaXplX3QgaSkgY29uc3QgeyBy
ZXR1cm4gaW1tc1tpXTsgfQorCisgICAgQjNfU1BFQ0lBTElaRV9WQUxVRV9GT1JfRklOQUxfU0la
RV9GSVhFRF9DSElMRFJFTgorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVBy
aW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIFNpbWRWYWx1ZShPcmlnaW4gb3JpZ2luLCBLaW5kIGtp
bmQsIFR5cGUgdHlwZSwgdWludDhfdCBudW1DaGlsZHJlbiwgU2ltZExhbmVJbnRlcnByZXRhdGlv
biBsYW5lSW50ZXJwcmV0YXRpb24sIFNpbWRTaWduRXh0ZW5kTW9kZSBzaWduTW9kZSwgQXJndW1l
bnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0
eXBlLCAoTnVtQ2hpbGRyZW4pKG51bUNoaWxkcmVuKSwgb3JpZ2luLCBhcmd1bWVudHMuLi4pCisg
ICAgICAgICwgbV9sYW5lSW50ZXJwcmV0YXRpb24obGFuZUludGVycHJldGF0aW9uKQorICAgICAg
ICAsIG1fc2lnbk1vZGUoc2lnbk1vZGUpCisgICAgeworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgU2ltZFZhbHVlKE9yaWdpbiBvcmlnaW4sIEtp
bmQga2luZCwgVHlwZSB0eXBlLCB1aW50OF90IG51bUNoaWxkcmVuLCBTaW1kTGFuZUludGVycHJl
dGF0aW9uIGxhbmVJbnRlcnByZXRhdGlvbiwgU2ltZFNpZ25FeHRlbmRNb2RlIHNpZ25Nb2RlLCB1
aW50OF90IGltbTEsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogVmFsdWUoQ2hl
Y2tlZE9wY29kZSwga2luZCwgdHlwZSwgKE51bUNoaWxkcmVuKShudW1DaGlsZHJlbiksIG9yaWdp
biwgYXJndW1lbnRzLi4uKQorICAgICAgICAsIG1fbGFuZUludGVycHJldGF0aW9uKGxhbmVJbnRl
cnByZXRhdGlvbikKKyAgICAgICAgLCBtX3NpZ25Nb2RlKHNpZ25Nb2RlKQorICAgIHsKKyAgICAg
ICAgaW1tc1swXSA9IGltbTE7CisgICAgfQorCitwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4KKyAgICBzdGF0aWMgT3Bjb2RlIG9wY29kZUZyb21Db25zdHJ1Y3Rv
cihPcmlnaW4sIEtpbmQga2luZCwgVHlwZSwgdWludDhfdCwgU2ltZExhbmVJbnRlcnByZXRhdGlv
biwgU2ltZFNpZ25FeHRlbmRNb2RlLCBBcmd1bWVudHMuLi4pIHsgcmV0dXJuIGtpbmQub3Bjb2Rl
KCk7IH0KKyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIGZyaWVuZCBjbGFzcyBWYWx1
ZTsKKworICAgIFNpbWRMYW5lSW50ZXJwcmV0YXRpb24gbV9sYW5lSW50ZXJwcmV0YXRpb247Cisg
ICAgU2ltZFNpZ25FeHRlbmRNb2RlIG1fc2lnbk1vZGU7CisgICAgCisgICAgdWludDhfdCBpbW1z
WzJdIHsgMCB9OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBF
TkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmNwcAppbmRleCA2Nzg0MWJk
ZGMyYjYuLjQ1M2MyMzc1ZDFiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5jcHAKQEAg
LTUyLDYgKzUyLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFR5cGUg
dHlwZSkKICAgICBjYXNlIERvdWJsZToKICAgICAgICAgb3V0LnByaW50KCJEb3VibGUiKTsKICAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgVjEyODoKKyAgICAgICAgb3V0LnByaW50KCJWMTI4Iik7
CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFR1cGxlOgogICAgICAgICBvdXQucHJpbnQoIlR1
cGxlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuaAppbmRleCA5
MzIyZjg4ZWQ5YjkuLmYzYWJhYzQ3Yzc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJCM0NvbW1v
bi5oIgorI2luY2x1ZGUgIlNpbWRJbmZvLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCiAjaWYgIUFTU0VSVF9FTkFCTEVECkBAIC00NSw2ICs0Niw3IEBAIGVudW0gVHlwZUtpbmQg
OiB1aW50MzJfdCB7CiAgICAgSW50NjQsCiAgICAgRmxvYXQsCiAgICAgRG91YmxlLAorICAgIFYx
MjgsCiAKICAgICAvLyBUdXBsZXMgYXJlIHJlcHJlc2VudGVkIGFzIHRoZSB0dXBsZUZsYWcgfCB3
aXRoIHRoZSB0dXBsZSdzIGluZGV4IGludG8gUHJvY2VkdXJlJ3MgbV90dXBsZXMgdGFibGUuCiAg
ICAgVHVwbGUgPSB0dXBsZUZsYWcsCkBAIC03MCw2ICs3Miw3IEBAIHB1YmxpYzoKICAgICBpbmxp
bmUgYm9vbCBpc0Zsb2F0KCkgY29uc3Q7CiAgICAgaW5saW5lIGJvb2wgaXNOdW1lcmljKCkgY29u
c3Q7CiAgICAgaW5saW5lIGJvb2wgaXNUdXBsZSgpIGNvbnN0OworICAgIGlubGluZSBib29sIGlz
VmVjdG9yKCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHlwZUtpbmQmIG90
aGVyS2luZCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IG90aGVyS2luZDsgfQogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBUeXBlJiB0eXBlKSBjb25zdCB7IHJldHVybiBtX2tpbmQgPT0gdHlw
ZS5tX2tpbmQ7IH0KQEAgLTgwLDYgKzgzLDQ0IEBAIHByaXZhdGU6CiAgICAgVHlwZUtpbmQgbV9r
aW5kIHsgVm9pZCB9OwogfTsKIAoraW5saW5lIFR5cGVLaW5kIHNpbWRTY2FsYXJUeXBlKFNpbWRM
YW5lSW50ZXJwcmV0YXRpb24gaSkKK3sKKyAgICBzd2l0Y2ggKGkpIHsKKyAgICBjYXNlIFNpbWRM
YW5lSW50ZXJwcmV0YXRpb246Omk4eDE2OgorICAgIGNhc2UgU2ltZExhbmVJbnRlcnByZXRhdGlv
bjo6aTE2eDg6CisgICAgY2FzZSBTaW1kTGFuZUludGVycHJldGF0aW9uOjppMzJ4NDoKKyAgICAg
ICAgcmV0dXJuIEludDMyOworICAgIGNhc2UgU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6aTY0eDI6
CisgICAgICAgIHJldHVybiBJbnQ2NDsKKyAgICBjYXNlIFNpbWRMYW5lSW50ZXJwcmV0YXRpb246
OmYzMng0OgorICAgICAgICByZXR1cm4gRmxvYXQ7CisgICAgY2FzZSBTaW1kTGFuZUludGVycHJl
dGF0aW9uOjpmNjR4MjoKKyAgICAgICAgcmV0dXJuIERvdWJsZTsKKyAgICBjYXNlIFNpbWRMYW5l
SW50ZXJwcmV0YXRpb246OnYxMjg6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiBJbnQ2NDsKKyAgICB9Cit9CisKK2lubGluZSB1aW50OF90IHNp
bWRMYW5lQ291bnQoU2ltZExhbmVJbnRlcnByZXRhdGlvbiBpKQoreworICAgIHN3aXRjaCAoaSkg
eworICAgIGNhc2UgU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6aTh4MTY6CisgICAgICAgIHJldHVy
biAxNjsKKyAgICBjYXNlIFNpbWRMYW5lSW50ZXJwcmV0YXRpb246OmkxNng4OgorICAgICAgICBy
ZXR1cm4gODsKKyAgICBjYXNlIFNpbWRMYW5lSW50ZXJwcmV0YXRpb246OmYzMng0OgorICAgIGNh
c2UgU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6aTMyeDQ6CisgICAgICAgIHJldHVybiA0OworICAg
IGNhc2UgU2ltZExhbmVJbnRlcnByZXRhdGlvbjo6ZjY0eDI6CisgICAgY2FzZSBTaW1kTGFuZUlu
dGVycHJldGF0aW9uOjppNjR4MjoKKyAgICAgICAgcmV0dXJuIDI7CisgICAgY2FzZSBTaW1kTGFu
ZUludGVycHJldGF0aW9uOjp2MTI4OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KFR5cGVLaW5kKSA9PSBzaXplb2YoVHlwZSkpOwogCiBpbmxpbmUgYm9vbCBUeXBlOjppc0ludCgp
IGNvbnN0CkBAIC05NCw3ICsxMzUsNyBAQCBpbmxpbmUgYm9vbCBUeXBlOjppc0Zsb2F0KCkgY29u
c3QKIAogaW5saW5lIGJvb2wgVHlwZTo6aXNOdW1lcmljKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
aXNJbnQoKSB8fCBpc0Zsb2F0KCk7CisgICAgcmV0dXJuIGlzSW50KCkgfHwgaXNGbG9hdCgpIHx8
IGlzVmVjdG9yKCk7CiB9CiAKIGlubGluZSBib29sIFR5cGU6OmlzVHVwbGUoKSBjb25zdApAQCAt
MTAyLDYgKzE0MywxMSBAQCBpbmxpbmUgYm9vbCBUeXBlOjppc1R1cGxlKCkgY29uc3QKICAgICBy
ZXR1cm4ga2luZCgpID09IFR1cGxlOwogfQogCitpbmxpbmUgYm9vbCBUeXBlOjppc1ZlY3Rvcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGtpbmQoKSA9PSBWMTI4OworfQorCiBpbmxpbmUgVHlwZSBw
b2ludGVyVHlwZSgpCiB7CiAgICAgaWYgKGlzMzJCaXQoKSkKQEAgLTEyMSw2ICsxNjcsOCBAQCBp
bmxpbmUgc2l6ZV90IHNpemVvZlR5cGUoVHlwZSB0eXBlKQogICAgIGNhc2UgSW50NjQ6CiAgICAg
Y2FzZSBEb3VibGU6CiAgICAgICAgIHJldHVybiA4OworICAgIGNhc2UgVjEyODoKKyAgICAgICAg
cmV0dXJuIDE2OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGVNYXAuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1R5cGVNYXAuaAppbmRleCBmNTMyOWM0NjczYjAuLjg0N2VkOGNjZmM2MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZU1hcC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGVNYXAuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gbV9kb3VibGU7CiAgICAgICAgIGNhc2UgVHVwbGU6CiAg
ICAgICAgICAgICByZXR1cm4gbV90dXBsZTsKKyAgICAgICAgY2FzZSBWMTI4OgorICAgICAgICAg
ICAgcmV0dXJuIG1fdmVjdG9yOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KQEAgLTgyLDcgKzg0LDkgQEAgcHVibGljOgogICAgICAgICAgICAgIiwgaW50
MzIgPSAiLCBtX2ludDMyLAogICAgICAgICAgICAgIiwgaW50NjQgPSAiLCBtX2ludDY0LAogICAg
ICAgICAgICAgIiwgZmxvYXQgPSAiLCBtX2Zsb2F0LAotICAgICAgICAgICAgIiwgZG91YmxlID0g
IiwgbV9kb3VibGUsICJ9Iik7CisgICAgICAgICAgICAiLCBkb3VibGUgPSAiLCBtX2RvdWJsZSwK
KyAgICAgICAgICAgICIsIHZlY3RvciA9ICIsIG1fdmVjdG9yLAorICAgICAgICAgICAgIiwgdHVw
bGUgPSAiLCBtX3R1cGxlLCAifSIpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkBAIC05MSw2ICs5
NSw3IEBAIHByaXZhdGU6CiAgICAgVCBtX2ludDY0IHsgfTsKICAgICBUIG1fZmxvYXQgeyB9Owog
ICAgIFQgbV9kb3VibGUgeyB9OworICAgIFQgbV92ZWN0b3IgeyB9OwogICAgIFQgbV90dXBsZSB7
IH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKaW5kZXggYWVm
Y2QzNDFkNjM2Li40NTM5ODkzNjA0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxp
ZGF0ZS5jcHAKQEAgLTE3MSw2ICsxNzEsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZB
TElEQVRFKCF2YWx1ZS0+bnVtQ2hpbGRyZW4oKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEZsb2F0LCAoIkF0ICIsICp2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDb25zdDEyODoKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxk
cmVuKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
PnR5cGUoKSA9PSBWMTI4LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBCb3R0b21UdXBsZToKICAgICAgICAgICAgICAgICBWQUxJREFU
RSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAg
ICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZhbHVl
KSk7CkBAIC0xOTYsNyArMjAxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRF
KCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAg
ICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+bnVtQ2hpbGRyZW4oKSwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgKLSAgICAgICAgICAgICAgICAgICAgKHZhbHVl
LT5hczxBcmd1bWVudFJlZ1ZhbHVlPigpLT5hcmd1bWVudFJlZygpLmlzR1BSKCkgPyBwb2ludGVy
VHlwZSgpIDogRG91YmxlKQorICAgICAgICAgICAgICAgICAgICAodmFsdWUtPmFzPEFyZ3VtZW50
UmVnVmFsdWU+KCktPmFyZ3VtZW50UmVnKCkuaXNHUFIoKSA/IHBvaW50ZXJUeXBlKCkgOiBWMTI4
KQogICAgICAgICAgICAgICAgICAgICA9PSB2YWx1ZS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBZGQ6CkBAIC00NDEs
NiArNDQ2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hp
bGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRXh0
cmFjdExhbmU6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0
cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHNpbWRTY2FsYXJUeXBlKHZhbHVlLT5hc1NpbWRW
YWx1ZSgpLT5sYW5lSW50ZXJwcmV0YXRpb24oKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gVjEyOCwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ0Nh
bGw6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRz
KCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51
bUNoaWxkcmVuKCkgPj0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKQEAgLTYyOSw3ICs2NDAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS52YWx1ZSgpLT50eXBlKCkuaXNUdXBs
ZSgpKQogICAgICAgICAgICAgICAgICAgICBWQUxJREFURShtX3Byb2NlZHVyZS5leHRyYWN0RnJv
bVR1cGxlKHZhbHVlLnZhbHVlKCktPnR5cGUoKSwgdHVwbGVJbmRleCkuaXNGbG9hdCgpLCAoIkF0
ICIsICpjb250ZXh0LCAiOiAiLCB2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUudmFsdWUoKS0+dHlwZSgpLmlzRmxvYXQoKSwg
KCJBdCAiLCAqY29udGV4dCwgIjogIiwgdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUudmFsdWUoKS0+dHlwZSgpLmlzRmxvYXQoKSB8fCB2YWx1ZS52YWx1ZSgpLT50
eXBlKCkuaXNWZWN0b3IoKSwgKCJBdCAiLCAqY29udGV4dCwgIjogIiwgdmFsdWUpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWUuY3BwCmluZGV4IGUzZWVmZmM3N2M3Ny4uZTE1MDgwNzZjMjJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC0xNzMsNiArMTczLDEwIEBAIHZv
aWQgVmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgb3V0LnByaW50
KCIkIiwgYXNEb3VibGUoKSwgIigiKTsKICAgICAgICAgaXNDb25zdGFudCA9IHRydWU7CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ29uc3QxMjg6CisgICAgICAgIG91dC5wcmludCgiJFsiLCBh
c1YxMjgoKS51NjR4MlswXSwgIjo6IiwgYXNWMTI4KCkudTY0eDJbMV0sICJdKCIpOworICAgICAg
ICBpc0NvbnN0YW50ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpAQCAtNTQwLDYgKzU0NCw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVj
dHMoKSBjb25zdAogICAgIGNhc2UgT3BhcXVlOgogICAgIGNhc2UgQ29uc3QzMjoKICAgICBjYXNl
IENvbnN0NjQ6CisgICAgY2FzZSBDb25zdDEyODoKICAgICBjYXNlIENvbnN0RG91YmxlOgogICAg
IGNhc2UgQ29uc3RGbG9hdDoKICAgICBjYXNlIEJvdHRvbVR1cGxlOgpAQCAtNTg5LDYgKzU5NCw3
IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgRXh0cmFjdDoKICAg
ICBjYXNlIEZNaW46CiAgICAgY2FzZSBGTWF4OgorICAgIGNhc2UgRXh0cmFjdExhbmU6CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRGl2OgogICAgIGNhc2UgVURpdjoKQEAgLTg4OSw2ICs4OTUs
NyBAQCBUeXBlIFZhbHVlOjp0eXBlRm9yKEtpbmQga2luZCwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZh
bHVlKiBzZWNvbmRDaGlsZCkKICAgICAgICAgICAgIHJldHVybiBJbnQzMjsKICAgICAgICAgY2Fz
ZSBWb2lkOgogICAgICAgICBjYXNlIFR1cGxlOgorICAgICAgICBjYXNlIFYxMjg6CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gVm9p
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCmluZGV4IDI1MGEwMmRmZjIxOC4uMDhjYzg2
ZjNjM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiBjbGFzcyBCYXNpY0Jsb2NrOwogY2xhc3Mg
Q2hlY2tWYWx1ZTsKIGNsYXNzIEluc2VydGlvblNldDsKK2NsYXNzIFNpbWRWYWx1ZTsKIGNsYXNz
IFBoaUNoaWxkcmVuOwogY2xhc3MgUHJvY2VkdXJlOwogCkBAIC0yNjMsNiArMjY0LDkgQEAgcHVi
bGljOgogICAgIGJvb2wgaGFzSW50NjQoKSBjb25zdDsKICAgICBpbnQ2NF90IGFzSW50NjQoKSBj
b25zdDsKICAgICBib29sIGlzSW50NjQoaW50NjRfdCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBo
YXNWMTI4KCkgY29uc3Q7CisgICAgdjEyOF90IGFzVjEyOCgpIGNvbnN0OwogCiAgICAgYm9vbCBo
YXNJbnQoKSBjb25zdDsKICAgICBpbnQ2NF90IGFzSW50KCkgY29uc3Q7CkBAIC0yOTQsNiArMjk4
LDkgQEAgcHVibGljOgogICAgIFRyaVN0YXRlIGFzVHJpU3RhdGUoKSBjb25zdDsKICAgICBib29s
IGlzTGlrZVplcm8oKSBjb25zdCB7IHJldHVybiBhc1RyaVN0YXRlKCkgPT0gVHJpU3RhdGU6OkZh
bHNlOyB9CiAgICAgYm9vbCBpc0xpa2VOb25aZXJvKCkgY29uc3QgeyByZXR1cm4gYXNUcmlTdGF0
ZSgpID09IFRyaVN0YXRlOjpUcnVlOyB9CisgICAgCisgICAgYm9vbCBpc1NpbWRWYWx1ZSgpIGNv
bnN0OworICAgIFNpbWRWYWx1ZSogYXNTaW1kVmFsdWUoKTsKIAogICAgIEVmZmVjdHMgZWZmZWN0
cygpIGNvbnN0OwogCkBAIC0zOTEsNiArMzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBjYXNl
IEFyZ3VtZW50UmVnOgogICAgICAgICBjYXNlIENvbnN0MzI6CiAgICAgICAgIGNhc2UgQ29uc3Q2
NDoKKyAgICAgICAgY2FzZSBDb25zdDEyODoKICAgICAgICAgY2FzZSBDb25zdEZsb2F0OgogICAg
ICAgICBjYXNlIENvbnN0RG91YmxlOgogICAgICAgICBjYXNlIEJvdHRvbVR1cGxlOgpAQCAtNDMw
LDYgKzQzOCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgY2FzZSBTZXQ6CiAgICAgICAgIGNhc2Ug
V2FzbUFkZHJlc3M6CiAgICAgICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrOgorICAgICAgICBjYXNl
IEV4dHJhY3RMYW5lOgogICAgICAgICAgICAgcmV0dXJuIHNpemVvZihWYWx1ZSopOwogICAgICAg
ICBjYXNlIEFkZDoKICAgICAgICAgY2FzZSBTdWI6CkBAIC01OTUsNiArNjA0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAg
ICAgIGNhc2UgRGVwZW5kOgorICAgICAgICBjYXNlIEV4dHJhY3RMYW5lOgogICAgICAgICAgICAg
aWYgKFVOTElLRUxZKG51bUFyZ3MgIT0gMSkpCiAgICAgICAgICAgICAgICAgYmFkS2luZChraW5k
LCBudW1BcmdzKTsKICAgICAgICAgICAgIHJldHVybiBPbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbHVlSW5saW5lcy5oCmluZGV4IDkzOWEyNjQ3ZWM2YS4uNzAyMTgyODQyMDc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkIzQm90dG9tVHVwbGVWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQ0NhbGxW
YWx1ZS5oIgogI2luY2x1ZGUgIkIzQ2hlY2tWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQ29uc3QxMjhW
YWx1ZS5oIgogI2luY2x1ZGUgIkIzQ29uc3QzMlZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDb25zdDY0
VmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbnN0RG91YmxlVmFsdWUuaCIKQEAgLTQyLDYgKzQzLDcg
QEAKICNpbmNsdWRlICJCM1BhdGNocG9pbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzUGhpQ2hpbGRy
ZW4uaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgorI2luY2x1ZGUgIkIzU2ltZFZhbHVlLmgi
CiAjaW5jbHVkZSAiQjNTbG90QmFzZVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNTd2l0Y2hWYWx1ZS5o
IgogI2luY2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCkBAIC0xMTgsNiArMTIwLDggQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAgICAgICAgIHJldHVybiBNQUNSTyhDb25zdDMyVmFs
dWUpOyBcCiAgICAgY2FzZSBDb25zdDY0OiBcCiAgICAgICAgIHJldHVybiBNQUNSTyhDb25zdDY0
VmFsdWUpOyBcCisgICAgY2FzZSBDb25zdDEyODogXAorICAgICAgICByZXR1cm4gTUFDUk8oQ29u
c3QxMjhWYWx1ZSk7IFwKICAgICBjYXNlIENvbnN0RmxvYXQ6IFwKICAgICAgICAgcmV0dXJuIE1B
Q1JPKENvbnN0RmxvYXRWYWx1ZSk7IFwKICAgICBjYXNlIENvbnN0RG91YmxlOiBcCkBAIC0xNTAs
NiArMTU0LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAgICAgICAgIHJldHVy
biBNQUNSTyhXYXNtQWRkcmVzc1ZhbHVlKTsgXAogICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrOiBc
CiAgICAgICAgIHJldHVybiBNQUNSTyhXYXNtQm91bmRzQ2hlY2tWYWx1ZSk7IFwKKyAgICBjYXNl
IEV4dHJhY3RMYW5lOiBcCisgICAgICAgIHJldHVybiBNQUNSTyhTaW1kVmFsdWUpOyBcCiAgICAg
Y2FzZSBBdG9taWNYY2hnQWRkOiBcCiAgICAgY2FzZSBBdG9taWNYY2hnQW5kOiBcCiAgICAgY2Fz
ZSBBdG9taWNYY2hnT3I6IFwKQEAgLTI5OCw2ICszMDQsMTYgQEAgaW5saW5lIGRvdWJsZSBWYWx1
ZTo6YXNEb3VibGUoKSBjb25zdAogICAgIHJldHVybiBhczxDb25zdERvdWJsZVZhbHVlPigpLT52
YWx1ZSgpOwogfQogCitpbmxpbmUgYm9vbCBWYWx1ZTo6aGFzVjEyOCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICEhYXM8Q29uc3QxMjhWYWx1ZT4oKTsKK30KKworaW5saW5lIHYxMjhfdCBWYWx1ZTo6
YXNWMTI4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYXM8Q29uc3QxMjhWYWx1ZT4oKS0+dmFsdWUo
KTsKK30KKwogaW5saW5lIGJvb2wgVmFsdWU6OmlzRXF1YWxUb0RvdWJsZShkb3VibGUgdmFsdWUp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGhhc0RvdWJsZSgpICYmIGFzRG91YmxlKCkgPT0gdmFsdWU7
CkBAIC0zODgsNiArNDA0LDE2IEBAIHZvaWQgVmFsdWU6OndhbGsoY29uc3QgRnVuY3RvciYgZnVu
Y3RvciwgUGhpQ2hpbGRyZW4qIHBoaUNoaWxkcmVuKQogICAgIH0KIH0KIAoraW5saW5lIGJvb2wg
VmFsdWU6OmlzU2ltZFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFhczxTaW1kVmFsdWU+
KCk7Cit9CisKK2lubGluZSBTaW1kVmFsdWUqIFZhbHVlOjphc1NpbWRWYWx1ZSgpCit7CisgICAg
cmV0dXJuIGFzPFNpbWRWYWx1ZT4oKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAK
ICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzV2lkdGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3Bw
CmluZGV4IGUzNTM1NmVhMzNmMC4uZjk4MzNjZTdlMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzV2lkdGguY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQjNXaWR0aC5oIgogCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQogI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKQEAgLTU1LDYg
KzUzLDggQEAgVHlwZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKQogICAgICAgICB9
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBW
b2lkOworICAgIGNhc2UgV2lkdGgxMjg6CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBWb2lkOwpAQCAtNzksNiArNzks
OSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpCMzo6V2lkdGgg
d2lkdGgpCiAgICAgY2FzZSBKU0M6OkIzOjpXaWR0aDY0OgogICAgICAgICBvdXQucHJpbnQoIjY0
Iik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6QjM6OldpZHRoMTI4OgorICAgICAg
ICBvdXQucHJpbnQoIjEyOCIpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTg2LDUgKzg5LDMgQEAgdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QjM6OldpZHRoIHdpZHRoKQogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAotI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCi0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNXaWR0aC5oCmluZGV4IDQwNDEyZjlmZjZjNi4uODRkYzVlMGQ5YzAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1dpZHRoLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
ZiBFTkFCTEUoQjNfSklUKQotCiAjaW5jbHVkZSAiQjNCYW5rLmgiCiAjaW5jbHVkZSAiQjNUeXBl
LmgiCiAKQEAgLTM3LDEwICszNSwxMSBAQCBJR05PUkVfUkVUVVJOX1RZUEVfV0FSTklOR1NfQkVH
SU4KIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBlbnVtIFdpZHRoIDogaW50OF90
IHsKLSAgICBXaWR0aDggPSAwLAorICAgIFdpZHRoOCA9IDIsCiAgICAgV2lkdGgxNiwKICAgICBX
aWR0aDMyLAotICAgIFdpZHRoNjQKKyAgICBXaWR0aDY0LAorICAgIFdpZHRoMTI4CiB9OwogCiBj
b25zdGV4cHIgV2lkdGggcG9pbnRlcldpZHRoKCkKQEAgLTUwLDYgKzQ5LDcgQEAgY29uc3RleHBy
IFdpZHRoIHBvaW50ZXJXaWR0aCgpCiAgICAgcmV0dXJuIFdpZHRoMzI7CiB9CiAKKyNpZiBFTkFC
TEUoQjNfSklUKQogaW5saW5lIFdpZHRoIHdpZHRoRm9yVHlwZShUeXBlIHR5cGUpCiB7CiAgICAg
c3dpdGNoICh0eXBlLmtpbmQoKSkgewpAQCAtNjMsMTAgKzYzLDEzIEBAIGlubGluZSBXaWR0aCB3
aWR0aEZvclR5cGUoVHlwZSB0eXBlKQogICAgIGNhc2UgSW50NjQ6CiAgICAgY2FzZSBEb3VibGU6
CiAgICAgICAgIHJldHVybiBXaWR0aDY0OworICAgIGNhc2UgVjEyODoKKyAgICAgICAgcmV0dXJu
IFdpZHRoMTI4OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
V2lkdGg4OwogfQorI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCiAKIGlubGluZSBXaWR0aCBjYW5v
bmljYWxXaWR0aChXaWR0aCB3aWR0aCkKIHsKQEAgLTgyLDcgKzg1LDcgQEAgVHlwZSBiZXN0VHlw
ZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKTsKIAogaW5saW5lIFdpZHRoIGNvbnNlcnZhdGl2ZVdp
ZHRoKEJhbmsgYmFuaykKIHsKLSAgICByZXR1cm4gYmFuayA9PSBHUCA/IHBvaW50ZXJXaWR0aCgp
IDogV2lkdGg2NDsKKyAgICByZXR1cm4gYmFuayA9PSBHUCA/IHBvaW50ZXJXaWR0aCgpIDogV2lk
dGgxMjg7CiB9CiAKIGlubGluZSBXaWR0aCBtaW5pbXVtV2lkdGgoQmFuayBiYW5rKQpAQCAtOTAs
MTEgKzkzLDYgQEAgaW5saW5lIFdpZHRoIG1pbmltdW1XaWR0aChCYW5rIGJhbmspCiAgICAgcmV0
dXJuIGJhbmsgPT0gR1AgPyBXaWR0aDggOiBXaWR0aDMyOwogfQogCi1pbmxpbmUgdW5zaWduZWQg
Ynl0ZXMoV2lkdGggd2lkdGgpCi17Ci0gICAgcmV0dXJuIDEgPDwgd2lkdGg7Ci19Ci0KIGlubGlu
ZSBXaWR0aCB3aWR0aEZvckJ5dGVzKHVuc2lnbmVkIGJ5dGVzKQogewogICAgIHN3aXRjaCAoYnl0
ZXMpIHsKQEAgLTEwNiw2ICsxMDQsOCBAQCBpbmxpbmUgV2lkdGggd2lkdGhGb3JCeXRlcyh1bnNp
Z25lZCBieXRlcykKICAgICBjYXNlIDM6CiAgICAgY2FzZSA0OgogICAgICAgICByZXR1cm4gV2lk
dGgzMjsKKyAgICBjYXNlIDE2OgorICAgICAgICByZXR1cm4gV2lkdGgxMjg7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgcmV0dXJuIFdpZHRoNjQ7CiAgICAgfQpAQCAtMTIyLDYgKzEyMiw4IEBAIGlu
bGluZSB1bnNpZ25lZCBieXRlc0ZvcldpZHRoKFdpZHRoIHdpZHRoKQogICAgICAgICByZXR1cm4g
NDsKICAgICBjYXNlIFdpZHRoNjQ6CiAgICAgICAgIHJldHVybiA4OworICAgIGNhc2UgV2lkdGgx
Mjg6CisgICAgICAgIHJldHVybiAxNjsKICAgICB9CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0xMzcs
NiArMTM5LDkgQEAgaW5saW5lIHVpbnQ2NF90IG1hc2soV2lkdGggd2lkdGgpCiAgICAgICAgIHJl
dHVybiAweDAwMDAwMDAwZmZmZmZmZmZsbHU7CiAgICAgY2FzZSBXaWR0aDY0OgogICAgICAgICBy
ZXR1cm4gMHhmZmZmZmZmZmZmZmZmZmZmbGx1OworICAgIGNhc2UgV2lkdGgxMjg6CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTE1NSw1ICsxNjAsMyBAQCB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkIzOjpXaWR0aCk7CiBJR05PUkVfUkVUVVJO
X1RZUEVfV0FSTklOR1NfRU5ECiAjZW5kaWYKIAotI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdp
c3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwCmlu
ZGV4IDI2NzcyNzYzYjQ5NS4uMzQxZjZiNWQ3ZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNv
ZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdp
c3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAKQEAgLTQwLDYgKzQwLDEwIEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIAorbmFtZXNwYWNl
IEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnNJbnRlcm5hbCB7CitzdGF0aWMgYm9vbCB2ZXJi
b3NlID0gZmFsc2U7Cit9CisKIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OkdlbmVyYXRl
QW5kQWxsb2NhdGVSZWdpc3RlcnMoQ29kZSYgY29kZSkKICAgICA6IG1fY29kZShjb2RlKQogICAg
ICwgbV9tYXAoY29kZSkKQEAgLTE3Myw3ICsxNzcsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgR2Vu
ZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6Zmx1c2goVG1wIHRtcCwgUmVnIHJlZykKICAgICBp
ZiAodG1wLmlzR1AoKSkKICAgICAgICAgbV9qaXQtPnN0b3JlNjQocmVnLmdwcigpLCBjYWxsRnJh
bWVBZGRyKCptX2ppdCwgb2Zmc2V0KSk7CiAgICAgZWxzZQotICAgICAgICBtX2ppdC0+c3RvcmVE
b3VibGUocmVnLmZwcigpLCBjYWxsRnJhbWVBZGRyKCptX2ppdCwgb2Zmc2V0KSk7CisgICAgICAg
IG1faml0LT5zdG9yZVZlY3RvcihyZWcuZnByKCksIGNhbGxGcmFtZUFkZHIoKm1faml0LCBvZmZz
ZXQpKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3Rl
cnM6OnNwaWxsKFRtcCB0bXAsIFJlZyByZWcpCkBAIC0yMDIsNyArMjA2LDcgQEAgQUxXQVlTX0lO
TElORSB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmFsbG9jKFRtcCB0bXAsIFJl
ZyByZWcsIGJvb2wgaXMKICAgICAgICAgaWYgKHRtcC5iYW5rKCkgPT0gR1ApCiAgICAgICAgICAg
ICBtX2ppdC0+bG9hZDY0KGNhbGxGcmFtZUFkZHIoKm1faml0LCBvZmZzZXQpLCByZWcuZ3ByKCkp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2ppdC0+bG9hZERvdWJsZShjYWxsRnJhbWVB
ZGRyKCptX2ppdCwgb2Zmc2V0KSwgcmVnLmZwcigpKTsKKyAgICAgICAgICAgIG1faml0LT5sb2Fk
VmVjdG9yKGNhbGxGcmFtZUFkZHIoKm1faml0LCBvZmZzZXQpLCByZWcuZnByKCkpOwogICAgIH0K
IH0KIApAQCAtMzEwLDExICszMTQsMTMgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0
ZXJzOjpwcmVwYXJlRm9yR2VuZXJhdGlvbigpCiAgICAgICAgICAgICAgICAgICAgICAgICB0b0Zy
ZWUuYXBwZW5kKGRhdGEuc3BpbGxTbG90KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChmcmVlU2xvdHMuc2l6ZSgp
KQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChmcmVlU2xvdHMuc2l6ZSgp
ICYmIGZyZWVTbG90cy5sYXN0KCktPmJ5dGVTaXplKCkgPj0gYnl0ZXNGb3JXaWR0aChjb25zZXJ2
YXRpdmVXaWR0aCh0bXAuYmFuaygpKSkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3BpbGxT
bG90ID0gZnJlZVNsb3RzLnRha2VMYXN0KCk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICBkYXRhLnNwaWxsU2xvdCA9IG1fY29kZS5hZGRTdGFja1Nsb3QoOCwgU3Rh
Y2tTbG90S2luZDo6U3BpbGwpOworICAgICAgICAgICAgICAgICAgICBkYXRhLnNwaWxsU2xvdCA9
IG1fY29kZS5hZGRTdGFja1Nsb3QoYnl0ZXNGb3JXaWR0aChjb25zZXJ2YXRpdmVXaWR0aCh0bXAu
YmFuaygpKSksIFN0YWNrU2xvdEtpbmQ6OlNwaWxsKTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nTG5JZihHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzSW50ZXJu
YWw6OnZlcmJvc2UsICJhc3NpZ25TdGFja1Nsb3RUb1RtcCBibG9jazogIiwgKmJsb2NrLCAiLCB0
bXA6ICIsIHRtcCwgIiAtPiBzbG90ICIsIGRhdGEuc3BpbGxTbG90KTsKICAgICAgICAgICAgICAg
ICBkYXRhLnJlZyA9IFJlZygpOwogICAgICAgICAgICAgfTsKIApAQCAtMzU5LDcgKzM2NSw4IEBA
IHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6cHJlcGFyZUZvckdlbmVyYXRpb24o
KQogICAgICAgICBmb3IgKFJlZyByZWcgOiBtX3JlZ2lzdGVyc1tiYW5rXSkgewogICAgICAgICAg
ICAgbV9hbGxvd2VkUmVnaXN0ZXJzLnNldChyZWcpOwogICAgICAgICAgICAgVG1wRGF0YSYgZGF0
YSA9IG1fbWFwW1RtcChyZWcpXTsKLSAgICAgICAgICAgIGRhdGEuc3BpbGxTbG90ID0gbV9jb2Rl
LmFkZFN0YWNrU2xvdCg4LCBTdGFja1Nsb3RLaW5kOjpTcGlsbCk7CisgICAgICAgICAgICBkYXRh
LnNwaWxsU2xvdCA9IG1fY29kZS5hZGRTdGFja1Nsb3QoYnl0ZXNGb3JXaWR0aChjb25zZXJ2YXRp
dmVXaWR0aChiYW5rRm9yUmVnKHJlZykpKSwgU3RhY2tTbG90S2luZDo6U3BpbGwpOworICAgICAg
ICAgICAgZGF0YUxvZ0xuSWYoR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyc0ludGVybmFsOjp2
ZXJib3NlLCAiYWxsb3dlZFJlZ2lzdGVyczogcmVnOiAiLCByZWcsICIgLT4gc2xvdCAiLCBkYXRh
LnNwaWxsU2xvdCk7CiAgICAgICAgICAgICBkYXRhLnJlZyA9IFJlZygpOwogICAgICAgICB9CiAg
ICAgfSk7CkBAIC0zNjksOCArMzc2LDggQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0
ZXJzOjpwcmVwYXJlRm9yR2VuZXJhdGlvbigpCiAgICAgICAgIGZvciAoU3RhY2tTbG90KiBzbG90
IDogbV9jb2RlLnN0YWNrU2xvdHMoKSkgewogICAgICAgICAgICAgaWYgKHNsb3QtPmlzTG9ja2Vk
KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpbnRwdHJfdCBvZmZz
ZXQgPSAtc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG1fY29kZS5mcmFtZVNpemUoKSkgLSBzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4obmV4dEluZGV4KSAqIDggLSA4OwotICAgICAgICAgICAgKytuZXh0SW5k
ZXg7CisgICAgICAgICAgICBpbnRwdHJfdCBvZmZzZXQgPSAtc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KG1fY29kZS5mcmFtZVNpemUoKSkgLSBzdGF0aWNfY2FzdDxpbnRwdHJfdD4obmV4dEluZGV4KSAq
IDggLSAoc2xvdC0+Ynl0ZVNpemUoKSAtIDgpIC0gODsKKyAgICAgICAgICAgIG5leHRJbmRleCAr
PSBzbG90LT5ieXRlU2l6ZSgpIC8gODsKICAgICAgICAgICAgIHNsb3QtPnNldE9mZnNldEZyb21G
UChvZmZzZXQpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQnlMaW5lYXJTY2FuLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRT
dGFja0J5TGluZWFyU2Nhbi5jcHAKaW5kZXggZjc5NzlhYWYzNDg5Li5iMmY1NDc4YzZiMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3Rl
cnNBbmRTdGFja0J5TGluZWFyU2Nhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQnlMaW5lYXJTY2FuLmNwcApAQCAtNTc3
LDcgKzU3Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBTdGFja1Nsb3Qq
IHNwaWxsZWQgPSBtX21hcFt0bXBdLnNwaWxsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIXNwaWxsZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgICAgICAgICAgT3Bjb2RlIG1vdmUgPSBiYW5rID09IEdQID8gTW92ZSA6IE1vdmVE
b3VibGU7CisgICAgICAgICAgICAgICAgICAgICAgICBPcGNvZGUgbW92ZSA9IGJhbmsgPT0gR1Ag
PyBNb3ZlIDogTW92ZVZlY3RvcjsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IGFkZFNw
aWxsVG1wV2l0aEludGVydmFsKGJhbmssIGludGVydmFsRm9yU3BpbGwoaW5kZXhPZkVhcmx5LCBy
b2xlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm9sZSA9PSBBcmc6OlNjcmF0Y2gp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmlu
Zy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJz
QnlHcmFwaENvbG9yaW5nLmNwcAppbmRleCBiMGQyNWQxNmFlNmEuLjcxOGMzMjA0YjlhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVy
c0J5R3JhcGhDb2xvcmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5jcHAKQEAgLTE3MTAsNiArMTcxMCw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIHN3aXRjaCAoaW5zdC5raW5kLm9wY29kZSkgewog
ICAgICAgICAgICAgY2FzZSBNb3ZlRmxvYXQ6CiAgICAgICAgICAgICBjYXNlIE1vdmVEb3VibGU6
CisgICAgICAgICAgICBjYXNlIE1vdmVWZWN0b3I6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5
NzUsNyArMTk3Niw4IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdW5zaWduZWQgc3RhY2tTbG90
TWluaW11bVdpZHRoKFdpZHRoIHdpZHRoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHdpZHRoIDw9
IFdpZHRoMzIgPyA0IDogODsKKyAgICAgICAgdW5zaWduZWQgYnl0ZXMgPSBieXRlc0ZvcldpZHRo
KHdpZHRoKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVzIDwgNCA/IDQgOiBieXRlczsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTxCYW5rIGJhbmssIHR5cGVuYW1lIEFsbG9jYXRvclR5cGU+CkBAIC0yMDM0
LDYgKzIwMzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCJIYXZlIGFuIGluc3QgdGhhdCB3b24ndCBhZG1pdCBzdGFjazogIiwgaW5zdCwgIlxu
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnN0LmtpbmQub3Bjb2Rl
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBNb3ZlOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgTW92ZVZlY3RvcjoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIE1vdmVEb3VibGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBN
b3ZlRmxvYXQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBNb3ZlMzI6IHsKQEAg
LTIwODEsNyArMjA4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FuVXNlTW92ZTMySWZEaWRTcGlsbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja1Nsb3RFbnRyeS0+dmFsdWUtPmVuc3VyZVNp
emUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuVXNlTW92ZTMySWZEaWRTcGlsbCA/
IDQgOiBieXRlcyh3aWR0aCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhblVzZU1v
dmUzMklmRGlkU3BpbGwgPyA0IDogYnl0ZXNGb3JXaWR0aCh3aWR0aCkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgYXJnID0gQXJnOjpzdGFjayhzdGFja1Nsb3RFbnRyeS0+dmFsdWUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgZGlkU3BpbGwgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG5lZWRTY3JhdGNoSWZTcGlsbGVkSW5QbGFjZSkKQEAgLTIxMDAsNiArMjEwMyw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBNb3ZlRG91YmxlOgogICAgICAgICAgICAgICAgICAgICBjYXNlIE1vdmVG
bG9hdDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBNb3ZlVmVjdG9yOgogICAgICAgICAgICAg
ICAgICAgICAgICAgaW5zdEJhbmsgPSBGUDsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtMjE1MCw2ICsyMTU0LDEwIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vdmUgPSBiYW5rID09IEdQID8gTW92ZSA6IE1vdmVEb3VibGU7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxNjoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gRlApOworICAgICAgICAgICAg
ICAgICAgICAgICAgbW92ZSA9IE1vdmVWZWN0b3I7CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxs
b2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwCmluZGV4IGMyZjFhZWYyOGE4
My4uN2Y2NTQyNjg5OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5jcHAKQEAgLTkw
LDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgU3RhY2tTbG90KiBzbG90ID0gYXJn
LnN0YWNrU2xvdCgpOwogICAgICAgICAgICAgaWYgKHNsb3QtPmtpbmQoKSAhPSBTdGFja1Nsb3RL
aW5kOjpTcGlsbCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBp
ZiAoc2xvdC0+Ynl0ZVNpemUoKSAhPSBieXRlcyh3aWR0aCkpCisgICAgICAgICAgICBpZiAoc2xv
dC0+Ynl0ZVNpemUoKSAhPSBieXRlc0ZvcldpZHRoKHdpZHRoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBcmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
cmcuY3BwCmluZGV4IDc3ZWU4NDI1MTI0Yi4uMTA0YTA3NjNkZmM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCkBAIC05Niw2ICs5Niw3IEBAIHVuc2lnbmVkIEFyZzo6
anNIYXNoKCkgY29uc3QKICAgICBzd2l0Y2ggKG1fa2luZCkgewogICAgIGNhc2UgSW52YWxpZDoK
ICAgICBjYXNlIFNwZWNpYWw6CisgICAgY2FzZSBTaW1kSW5mbzoKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBUbXA6CiAgICAgICAgIHJlc3VsdCArPSBtX2Jhc2UuaW50ZXJuYWxWYWx1ZSgpOwpA
QCAtMjE5LDYgKzIyMCw5IEBAIHZvaWQgQXJnOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CiAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgb3V0LnByaW50KHdpZHRoKCkpOwogICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBTaW1kSW5mbzoKKyAgICAgICAgb3V0LnByaW50KCJTSU1EID0g
eyBzaWduRXh0ZW5kOiAiLCAodWludDhfdCkgbV9zaWduRXh0ZW5kTW9kZSwgIiwgbGFuZUludGVy
cHJldGF0aW9uOiAiLCAodWludDhfdCkgbV9sYW5lSW50ZXJwcmV0YXRpb24sICIgfSIpOworICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTI5Niw2ICszMDAsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
QXJnOjpLaW5kIGtpbmQpCiAgICAgY2FzZSBBcmc6OldpZHRoQXJnOgogICAgICAgICBvdXQucHJp
bnQoIldpZHRoQXJnIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFyZzo6U2ltZEluZm86
CisgICAgICAgIG91dC5wcmludCgiU2ltZEluZm8iKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJBcmcuaAppbmRleCBmYmY2NjM3YjI4NjAuLjhjMzNiYjZmNGI4MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCkBAIC05MCw3ICs5MCw5IEBAIHB1YmxpYzoKICAg
ICAgICAgV2lkdGhBcmcsCiAKICAgICAgICAgLy8gWmVyb1JlZyBpcyBpbnRlcnByZXRlZCBhcyBh
IHplcm8gcmVnaXN0ZXIgaW4gQVJNNjQKLSAgICAgICAgWmVyb1JlZworICAgICAgICBaZXJvUmVn
LAorICAgICAgICAKKyAgICAgICAgU2ltZEluZm8KICAgICB9OwogICAgIAogICAgIGVudW0gVGVt
cGVyYXR1cmUgOiBpbnQ4X3QgewpAQCAtNDkyLDYgKzQ5NCwxNSBAQCBwdWJsaWM6CiAgICAgICAg
IDogQXJnKEFpcjo6VG1wKHJlZykpCiAgICAgewogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgQXJn
IHNpbWRJbmZvKFNpbWRMYW5lSW50ZXJwcmV0YXRpb24gbGFuZUludGVycHJldGF0aW9uLCBTaW1k
U2lnbkV4dGVuZE1vZGUgc2lnbkV4dGVuZE1vZGUpCisgICAgeworICAgICAgICBBcmcgcmVzdWx0
OworICAgICAgICByZXN1bHQubV9raW5kID0gU2ltZEluZm87CisgICAgICAgIHJlc3VsdC5tX2xh
bmVJbnRlcnByZXRhdGlvbiA9IGxhbmVJbnRlcnByZXRhdGlvbjsKKyAgICAgICAgcmVzdWx0Lm1f
c2lnbkV4dGVuZE1vZGUgPSBzaWduRXh0ZW5kTW9kZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CiAKICAgICBzdGF0aWMgQXJnIGltbShpbnQ2NF90IHZhbHVlKQogICAgIHsKQEAgLTYw
NSw3ICs2MTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCF3aWR0aCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNjYWxlID09IDEgfHwgc2NhbGUgPT0gYnl0ZXMoKndp
ZHRoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2NhbGUgPT0gMSB8fCBzY2FsZSA9PSBieXRl
c0ZvcldpZHRoKCp3aWR0aCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC05MDksNiArOTIwLDExIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBpc1RtcCgpIHx8IGlzU3RhY2soKTsKICAgICB9CisgICAgCisgICAg
Ym9vbCBpc1NpbWRJbmZvKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBraW5kKCkgPT0g
U2ltZEluZm87CisgICAgfQogCiAgICAgQWlyOjpUbXAgdG1wKCkgY29uc3QKICAgICB7CkBAIC05
NDEsNiArOTU3LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiBCMzo6aXNSZXBy
ZXNlbnRhYmxlQXM8aW50MzJfdD4odmFsdWUpOwogICAgICAgICAgICAgY2FzZSBXaWR0aDY0Ogog
ICAgICAgICAgICAgICAgIHJldHVybiBCMzo6aXNSZXByZXNlbnRhYmxlQXM8aW50NjRfdD4odmFs
dWUpOworICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBjYXNlIFVuc2lnbmVkOgpAQCAtOTUzLDYgKzk3MSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICByZXR1cm4gQjM6OmlzUmVwcmVzZW50YWJsZUFzPHVpbnQzMl90
Pih2YWx1ZSk7CiAgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CiAgICAgICAgICAgICAgICAgcmV0
dXJuIEIzOjppc1JlcHJlc2VudGFibGVBczx1aW50NjRfdD4odmFsdWUpOworICAgICAgICAgICAg
Y2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAg
LTk3Myw2ICs5OTMsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludDMyX3Q+KHZhbHVlKTsKICAgICAgICAgICAgIGNhc2UgV2lkdGg2NDoKICAgICAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpOworICAgICAgICAgICAg
Y2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGNhc2UgVW5z
aWduZWQ6CkBAIC05ODUsNiArMTAwNyw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKTsKICAgICAgICAgICAgIGNhc2UgV2lkdGg2
NDoKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKTsK
KyAgICAgICAgICAgIGNhc2UgV2lkdGgxMjg6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTEwOTUsNiArMTExOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIFRtcDoKICAgICAgICAgICAgIHJldHVybiBpc0dQVG1wKCk7CisgICAg
ICAgIGNhc2UgU2ltZEluZm86CiAgICAgICAgIGNhc2UgSW52YWxpZDoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTExNiw2ICsxMTQxLDcgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICBjYXNlIEludmFsaWQ6CiAgICAgICAgIGNhc2Ug
WmVyb1JlZzoKKyAgICAgICAgY2FzZSBTaW1kSW5mbzoKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAgICBjYXNlIEFkZHI6CkBAIC0xMjYy
LDYgKzEyODgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRTY2Fs
ZWRVSW1tMTI8MzI+KG9mZnNldCk7CiAgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGlzVmFsaWRTY2FsZWRVSW1tMTI8NjQ+KG9mZnNldCk7CisgICAgICAg
ICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzA4LDYgKzEz
MzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWmVyb1JlZzoKICAgICAgICAgY2FzZSBTaW1w
bGVBZGRyOgogICAgICAgICBjYXNlIEV4dGVuZGVkT2Zmc2V0QWRkcjoKKyAgICAgICAgY2FzZSBT
aW1kSW5mbzoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIEFkZHI6CiAg
ICAgICAgIGNhc2UgU3RhY2s6CkBAIC0xNDc4LDYgKzE1MDcsMTggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbj4obV9v
ZmZzZXQpOwogICAgIH0KICAgICAKKyAgICBTaW1kTGFuZUludGVycHJldGF0aW9uIGxhbmVJbnRl
cnByZXRhdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNTaW1kSW5mbygpKTsK
KyAgICAgICAgcmV0dXJuIG1fbGFuZUludGVycHJldGF0aW9uOworICAgIH0KKyAgICAKKyAgICBT
aW1kU2lnbkV4dGVuZE1vZGUgc2lnbkV4dGVuZE1vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
QVNTRVJUKGlzU2ltZEluZm8oKSk7CisgICAgICAgIHJldHVybiBtX3NpZ25FeHRlbmRNb2RlOwor
ICAgIH0KKyAgICAKICAgICAvLyBUZWxscyB5b3UgaWYgdGhlIEFyZyBpcyBpbnZlcnRpYmxlLiBP
bmx5IGNvbmRpdGlvbiBhcmd1bWVudHMgYXJlIGludmVydGlibGUsIGFuZCBldmVuIGZvciB0aG9z
ZSwgdGhlcmUKICAgICAvLyBhcmUgYSBmZXcgZXhjZXB0aW9ucyAtIG5vdGFibHkgT3ZlcmZsb3cg
YW5kIFNpZ25lZC4KICAgICBib29sIGlzSW52ZXJ0aWJsZSgpIGNvbnN0CkBAIC0xNTYwLDYgKzE2
MDEsOCBAQCBwcml2YXRlOgogICAgIGludDMyX3QgbV9zY2FsZSB7IDEgfTsKICAgICBBaXI6OlRt
cCBtX2Jhc2U7CiAgICAgQWlyOjpUbXAgbV9pbmRleDsKKyAgICBTaW1kTGFuZUludGVycHJldGF0
aW9uIG1fbGFuZUludGVycHJldGF0aW9uOworICAgIFNpbWRTaWduRXh0ZW5kTW9kZSBtX3NpZ25F
eHRlbmRNb2RlOwogfTsKIAogc3RydWN0IEFyZ0hhc2ggewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwCmluZGV4IDhmZTBhYWU5N2I0NS4uNGRj
ZmZhZTAzMzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckND
YWxsU3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2Fs
bFNwZWNpYWwuY3BwCkBAIC0zNyw3ICszNyw3IEBAIENDYWxsU3BlY2lhbDo6Q0NhbGxTcGVjaWFs
KCkKICAgICBtX2Nsb2JiZXJlZFJlZ3MgPSBSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCk7CiAg
ICAgbV9jbG9iYmVyZWRSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkp
OwogICAgIG1fY2xvYmJlcmVkUmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3
YXJlUmVnaXN0ZXJzKCkpOwotICAgIG1fY2xvYmJlcmVkUmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0
OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIG1fY2xvYmJlcmVkUmVncy5zZXQoUmVnaXN0
ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7IC8vIFRPRE8KICAgICBtX2Nsb2JiZXJlZFJl
Z3MuY2xlYXIoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgIG1fY2xvYmJlcmVkUmVncy5j
bGVhcihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwogICAgIG1fY2xvYmJlcmVkUmVncy5jbGVh
cihGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckNDYWxsaW5nQ29udmVudGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckNDYWxsaW5nQ29udmVudGlvbi5jcHAKaW5kZXggZDIzZWExYjRlZjMy
Li40NjY1M2RhNjA4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckNDYWxsaW5nQ29udmVudGlvbi5jcHAKQEAgLTk5LDYgKzk5LDcgQEAgVG1wIGNDYWxs
UmVzdWx0KFR5cGUgdHlwZSkKICAgICBjYXNlIEZsb2F0OgogICAgIGNhc2UgRG91YmxlOgogICAg
ICAgICByZXR1cm4gVG1wKEZQUkluZm86OnJldHVyblZhbHVlRlBSKTsKKyAgICBjYXNlIFYxMjg6
CiAgICAgY2FzZSBUdXBsZToKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmNwcAppbmRleCA1YzI3YjRlYmY5N2Iu
LmY4MzAxYWRiMTYzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJFbWl0U2h1ZmZsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJF
bWl0U2h1ZmZsZS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogbmFtZXNwYWNlIHsKIAogbmFtZXNwYWNlIEFpckVtaXRT
aHVmZmxlSW50ZXJuYWwgewotc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsK
K3N0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRm9ybVRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZvcm1UYWJs
ZS5oCmluZGV4IDZhNDJkMmVlYmQ1ZS4uMDE3ZmM2N2ZiNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZvcm1UYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyRm9ybVRhYmxlLmgKQEAgLTM2LDEyICszNiwxMiBAQCBzdGF0aWMg
Y29uc3RleHByIHVpbnQ4X3QgZm9ybVJvbGVNYXNrID0gMTU7CiBzdGF0aWMgY29uc3RleHByIHVp
bnQ4X3QgZm9ybUJhbmtTaGlmdCA9IDQ7CiBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgZm9ybUJh
bmtNYXNrID0gMTsKIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBmb3JtV2lkdGhTaGlmdCA9IDU7
Ci1zdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgZm9ybVdpZHRoTWFzayA9IDM7Ci1zdGF0aWMgY29u
c3RleHByIHVpbnQ4X3QgZm9ybUludmFsaWRTaGlmdCA9IDc7CitzdGF0aWMgY29uc3RleHByIHVp
bnQ4X3QgZm9ybVdpZHRoTWFzayA9IDQ7CitzdGF0aWMgY29uc3RleHByIHVpbnQxNl90IGZvcm1J
bnZhbGlkU2hpZnQgPSA4OwogCiAjZGVmaW5lIEVOQ09ERV9JTlNUX0ZPUk0ocm9sZSwgYmFuaywg
d2lkdGgpIChzdGF0aWNfY2FzdDx1aW50OF90Pihyb2xlKSA8PCBmb3JtUm9sZVNoaWZ0IHwgc3Rh
dGljX2Nhc3Q8dWludDhfdD4oYmFuaykgPDwgZm9ybUJhbmtTaGlmdCB8IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHdpZHRoKSA8PCBmb3JtV2lkdGhTaGlmdCkKIAotI2RlZmluZSBJTlZBTElEX0lOU1Rf
Rk9STSAoMSA8PCBmb3JtSW52YWxpZFNoaWZ0KQorI2RlZmluZSBJTlZBTElEX0lOU1RfRk9STSAo
MCkKIAogSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIGNvbnN0IHVpbnQ4X3QgZ19mb3JtVGFibGVb
XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIZWxwZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckhlbHBlcnMuaAppbmRleCA5MDcw
NDEzY2JlZGUuLmFiZDdmMDU2NTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJIZWxwZXJzLmgKQEAgLTQzLDYgKzQzLDggQEAgaW5saW5lIEFpcjo6T3Bjb2RlIG1vdmVGb3JU
eXBlKFR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIE1vdmVGbG9hdDsKICAgICBjYXNlIERvdWJs
ZToKICAgICAgICAgcmV0dXJuIE1vdmVEb3VibGU7CisgICAgY2FzZSBWMTI4OgorICAgICAgICBy
ZXR1cm4gTW92ZVZlY3RvcjsKICAgICBjYXNlIFZvaWQ6CiAgICAgY2FzZSBUdXBsZToKICAgICAg
ICAgYnJlYWs7CkBAIC03Nyw2ICs3OSw4IEBAIGlubGluZSBBaXI6Ok9wY29kZSByZWxheGVkTW92
ZUZvclR5cGUoVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gTW92ZUZsb2F0OwogICAgIGNhc2Ug
RG91YmxlOgogICAgICAgICByZXR1cm4gTW92ZURvdWJsZTsKKyAgICBjYXNlIFYxMjg6CisgICAg
ICAgIHJldHVybiBNb3ZlVmVjdG9yOwogICAgIGNhc2UgVm9pZDoKICAgICBjYXNlIFR1cGxlOgog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcAppbmRleCAyMjFhZTczYTFjYjUuLjMyODYxOTgwMzFi
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVy
UmVnQWxsb2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJB
ZnRlclJlZ0FsbG9jLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0Fs
bG9jKENvZGUmIGNvZGUpCiAgICAgICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICAg
ICAgU3RhY2tTbG90KiYgc2xvdCA9IHNsb3RzW2JhbmtdW2ldOwogICAgICAgICAgICAgICAgIGlm
ICghc2xvdCkKLSAgICAgICAgICAgICAgICAgICAgc2xvdCA9IGNvZGUuYWRkU3RhY2tTbG90KGJ5
dGVzKGNvbnNlcnZhdGl2ZVdpZHRoKGJhbmspKSwgU3RhY2tTbG90S2luZDo6U3BpbGwpOworICAg
ICAgICAgICAgICAgICAgICBzbG90ID0gY29kZS5hZGRTdGFja1Nsb3QoYnl0ZXNGb3JXaWR0aChj
b25zZXJ2YXRpdmVXaWR0aChiYW5rKSksIFN0YWNrU2xvdEtpbmQ6OlNwaWxsKTsKICAgICAgICAg
ICAgICAgICByZXN1bHRbaV0gPSBBcmc6OnN0YWNrKHNsb3RzW2JhbmtdW2ldKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0Fs
bG9jKENvZGUmIGNvZGUpCiAKICAgICAgICAgICAgICAgICBSZWdpc3RlclNldCBsaXZlUmVncyA9
IHVzZWRSZWdpc3RlcnMuZ2V0KCZpbnN0KTsKICAgICAgICAgICAgICAgICBSZWdpc3RlclNldCBy
ZWdzVG9TYXZlID0gbGl2ZVJlZ3M7Ci0gICAgICAgICAgICAgICAgcmVnc1RvU2F2ZS5leGNsdWRl
KFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworLy8gICAgICAgICAgICAgICAg
cmVnc1RvU2F2ZS5leGNsdWRlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOyAv
LyBUT0RPCiAgICAgICAgICAgICAgICAgcmVnc1RvU2F2ZS5leGNsdWRlKFJlZ2lzdGVyU2V0Ojpz
dGFja1JlZ2lzdGVycygpKTsKICAgICAgICAgICAgICAgICByZWdzVG9TYXZlLmV4Y2x1ZGUoUmVn
aXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CiAKQEAgLTIxOSw3ICsyMTks
NyBAQCB2b2lkIGxvd2VyQWZ0ZXJSZWdBbGxvYyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgQXJnIGFyZyh0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgV2lkdGggd2lk
dGggPSBjb25zZXJ2YXRpdmVXaWR0aChhcmcuYmFuaygpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIFN0YWNrU2xvdCogc3RhY2tTbG90ID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b2RlLmFkZFN0YWNrU2xvdChieXRlcyh3aWR0aCksIFN0YWNrU2xvdEtpbmQ6OlNwaWxsKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLmFkZFN0YWNrU2xvdChieXRlc0ZvcldpZHRo
KHdpZHRoKSwgU3RhY2tTbG90S2luZDo6U3BpbGwpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cGFpcnMuYXBwZW5kKFNodWZmbGVQYWlyKGFyZywgQXJnOjpzdGFjayhzdGFja1Nsb3QpLCB3aWR0
aCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tTbG90cy5hcHBlbmQoc3RhY2tTbG90
KTsKICAgICAgICAgICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpckxvd2VyTWFjcm9zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyTG93ZXJNYWNyb3MuY3BwCmluZGV4IDg1MTgwZTMyNTY1Mi4uYTdiNmJiYjhiMTBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyTWFjcm9z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyTWFjcm9zLmNw
cApAQCAtMTE0LDYgKzExNCw5IEBAIHZvaWQgbG93ZXJNYWNyb3MoQ29kZSYgY29kZSkKICAgICAg
ICAgICAgICAgICBjYXNlIEludDY0OgogICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQu
aW5zZXJ0KGluc3RJbmRleCArIDEsIE1vdmUsIHZhbHVlLCByZXN1bHQsIHJlc3VsdERzdCk7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVjEyODoKKyAg
ICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5kZXggKyAxLCBNb3Zl
VmVjdG9yLCB2YWx1ZSwgcmVzdWx0LCByZXN1bHREc3QpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyU3RhY2tBcmdzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJTdGFja0FyZ3MuY3BwCmluZGV4IDA1NTc0
ODkxMjI2ZS4uMjcxNjI0NzBhMWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpckxvd2VyU3RhY2tBcmdzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpckxvd2VyU3RhY2tBcmdzLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgbG93
ZXJTdGFja0FyZ3MoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWNrU2xv
dCogc2xvdCA9IGFyZy5zdGFja1Nsb3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChB
cmc6OmlzWkRlZihyb2xlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHNsb3QtPmtp
bmQoKSA9PSBTdGFja1Nsb3RLaW5kOjpTcGlsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICYmIHNsb3QtPmJ5dGVTaXplKCkgPiBieXRlcyh3aWR0aCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmJiBzbG90LT5ieXRlU2l6ZSgpID4gYnl0ZXNGb3JXaWR0aCh3aWR0aCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBoYW5kbGUg
dGhpcyBzaW1wbGUgY2FzZSBiZWNhdXNlIGl0J3MgdGhlIG9ubHkgb25lCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gdGhhdCBhcmlzZXM6IFpEZWYncyBhcmUgb25seSAzMi1iaXQgcmln
aHQgbm93LiBTbywgd2hlbiB3ZSBoaXQgdGhlc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBhc3NlcnRpb25zIGl0IG1lYW5zIHRoYXQgd2UgbmVlZCB0byBpbXBsZW1lbnQgdGhvc2Ug
b3RoZXIga2luZHMgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzCmluZGV4IDg0ZmJlMTI4OWYzNC4uMTA5NTBmMTBkY2E4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTEwNyw2ICsxMDcs
OCBAQAogCiBOb3AKIAorQnJlYWtwb2ludCAvZWZmZWN0cworCiBBZGQzMiBVOkc6MzIsIFU6Rzoz
MiwgWkQ6RzozMgogICAgIEltbSwgVG1wLCBUbXAKICAgICBUbXAsIFRtcCwgVG1wCkBAIC03NDAs
NiArNzQyLDEzIEBAIE1vdmVEb3VibGUgVTpGOjY0LCBEOkY6NjQKIAogTW92ZURvdWJsZSBVOkY6
NjQsIEQ6Rjo2NCwgUzpGOjY0CiAgICAgQWRkciwgQWRkciwgVG1wCisgICAgCitNb3ZlVmVjdG9y
IFU6Rjo2NCwgRDpGOjY0CisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAgYXMgbG9hZERvdWJs
ZQorICAgIEluZGV4LCBUbXAgYXMgbG9hZERvdWJsZQorICAgIFRtcCwgQWRkciBhcyBzdG9yZURv
dWJsZQorICAgIFRtcCwgSW5kZXggYXMgc3RvcmVEb3VibGUKIAogTW92ZVplcm9Ub0RvdWJsZSBE
OkY6NjQKICAgICBUbXAKQEAgLTE2MTUsNiArMTYyNCwxMiBAQCBSZXRGbG9hdCBVOkY6MzIgL3Jl
dHVybgogUmV0RG91YmxlIFU6Rjo2NCAvcmV0dXJuCiAgICAgVG1wCiAKK1JlcGxhY2VMYW5lIFU6
RzpQdHIsIFU6Rzo4LCBVOkc6NjQsIFVEOkY6MTI4CisgICAgU2ltZEluZm8sIEltbSwgVG1wLCBU
bXAKKyAgICAKK0V4dHJhY3RMYW5lIFU6RzpQdHIsIFU6Rzo4LCBVOkY6MTI4LCBEOkc6NjQKKyAg
ICBTaW1kSW5mbywgSW1tLCBUbXAsIFRtcAorCiBPb3BzIC90ZXJtaW5hbAogCiAjIFRoaXMgaXMg
YSB0ZXJtaW5hbCBidXQgd2UgZXhwcmVzcyBpdCBhcyBhIEN1c3RvbSBiZWNhdXNlIHdlIGRvbid0
IHdhbnQgaXQgdG8gaGF2ZSBhIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvb3Bjb2RlX2dlbmVyYXRvci5yYgppbmRleCAwNTVjMDVhMGEzYzguLmY4MDc5NTNiZjMyZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9y
LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5y
YgpAQCAtMjI5LDcgKzIyOSw3IEBAIGRlZiBpc0dGKHRva2VuKQogZW5kCiAKIGRlZiBpc0tpbmQo
dG9rZW4pCi0gICAgdG9rZW4gPX4gL1xBKChUbXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChC
aXRJbW02NCl8KFplcm9SZWcpfChTaW1wbGVBZGRyKXwoQWRkcil8KEV4dGVuZGVkT2Zmc2V0QWRk
cil8KEluZGV4KXwoUHJlSW5kZXgpfChQb3N0SW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERv
dWJsZUNvbmQpfChTdGF0dXNDb25kKSlcWi8KKyAgICB0b2tlbiA9fiAvXEEoKFRtcCl8KEltbSl8
KEJpZ0ltbSl8KEJpdEltbSl8KEJpdEltbTY0KXwoWmVyb1JlZyl8KFNpbXBsZUFkZHIpfChBZGRy
KXwoRXh0ZW5kZWRPZmZzZXRBZGRyKXwoSW5kZXgpfChQcmVJbmRleCl8KFBvc3RJbmRleCl8KFJl
bENvbmQpfChSZXNDb25kKXwoRG91YmxlQ29uZCl8KFN0YXR1c0NvbmQpfChTaW1kSW5mbykpXFov
CiBlbmQKIAogZGVmIGlzQXJjaCh0b2tlbikKQEAgLTIzNyw3ICsyMzcsNyBAQCBkZWYgaXNBcmNo
KHRva2VuKQogZW5kCiAKIGRlZiBpc1dpZHRoKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgoOCl8
KDE2KXwoMzIpfCg2NCl8KFB0cikpXFovCisgICAgdG9rZW4gPX4gL1xBKCg4KXwoMTYpfCgzMil8
KDY0KXwoUHRyKXwoMTI4KSlcWi8KIGVuZAogCiBkZWYgaXNLZXl3b3JkKHRva2VuKQpAQCAtMzEw
LDcgKzMxMCw3IEBAIGNsYXNzIFBhcnNlcgogCiAgICAgZGVmIGNvbnN1bWVXaWR0aAogICAgICAg
ICByZXN1bHQgPSB0b2tlbi5zdHJpbmcKLSAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQgd2lk
dGggKDgsIDE2LCAzMiwgb3IgNjQpIikgdW5sZXNzIGlzV2lkdGgocmVzdWx0KQorICAgICAgICBw
YXJzZUVycm9yKCJFeHBlY3RlZCB3aWR0aCAoOCwgMTYsIDMyLCA2NCwgb3IgMTI4KSIpIHVubGVz
cyBpc1dpZHRoKHJlc3VsdCkKICAgICAgICAgYWR2YW5jZQogICAgICAgICByZXN1bHQKICAgICBl
bmQKQEAgLTk0MSw2ICs5NDEsNyBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAg
ICAgICAgICAgICB3aGVuICJEb3VibGVDb25kIgogICAgICAgICAgICAgICAgIHdoZW4gIlN0YXR1
c0NvbmQiCiAgICAgICAgICAgICAgICAgd2hlbiAiWmVyb1JlZyIKKyAgICAgICAgICAgICAgICB3
aGVuICJTaW1kSW5mbyIKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IHJhaXNlICJVbmV4cGVjdGVkIGtpbmQ6ICN7a2luZC5uYW1lfSIKICAgICAgICAgICAgICAgICBl
bmQKQEAgLTEyNTMsNiArMTI1NCw4IEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAg
ICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc0RvdWJsZUNvbmRp
dGlvbigpIgogICAgICAgICAgICAgICAgIHdoZW4gIlN0YXR1c0NvbmQiCiAgICAgICAgICAgICAg
ICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzU3RhdHVzQ29uZGl0aW9uKCkiCisg
ICAgICAgICAgICAgICAgd2hlbiAiU2ltZEluZm8iCisgICAgICAgICAgICAgICAgICAgIG91dHAu
cHJpbnQgImFyZ3NbI3tpbmRleH1dLmxhbmVJbnRlcnByZXRhdGlvbigpLCBhcmdzWyN7aW5kZXh9
XS5zaWduRXh0ZW5kTW9kZSgpIgogICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1w
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNw
cAppbmRleCA1YmY2N2I2MWI2MmIuLmRiM2NjZDQ0NjdjYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBAIC04Niw2ICs4Niw4IEBA
IGludCBCeXRlY29kZUR1bXBlcjxCbG9jaz46Om91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCBvZmZzZXQpCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KIENTdHJpbmcg
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpjb25zdGFudE5hbWUoVmlydHVhbFJlZ2lzdGVyIHJlZykg
Y29uc3QKIHsKKyAgICBpZiAocmVnLnRvQ29uc3RhbnRJbmRleCgpID49IChpbnQpIGJsb2NrKCkt
PmNvbnN0YW50UmVnaXN0ZXJzKCkuc2l6ZSgpKQorICAgICAgICByZXR1cm4gdG9DU3RyaW5nKCJJ
TlZBTElEX0NPTlNUQU5UKCIsIHJlZywgIikiKTsKICAgICBhdXRvIHZhbHVlID0gYmxvY2soKS0+
Z2V0Q29uc3RhbnQocmVnKTsKICAgICByZXR1cm4gdG9DU3RyaW5nKHZhbHVlLCAiKCIsIHJlZywg
IikiKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCmluZGV4IGI5NjJiMjhjZTYyZi4uZmQ0NjUwOTY3ZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTE1MjIsNiArMTUyMiw3IEBA
IG9wIDp3aWRlMzIKIAogb3AgOmVudGVyCiBvcCA6bm9wCitvcCA6YnJlYWsKIG9wIDpsb29wX2hp
bnQKIAogb3AgOm1vdiwKQEAgLTE2NzYsMTQgKzE2NzcsMTQgQEAgb3AgOmNhbGwsCiAgICAgYXJn
czogewogICAgICAgICBmdW5jdGlvbkluZGV4OiB1bnNpZ25lZCwKICAgICAgICAgc3RhY2tPZmZz
ZXQ6IHVuc2lnbmVkLAotICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCisgICAg
ICAgIHNpemVPZlN0YWNrQXJnczogdW5zaWduZWQsCiAgICAgfQogCiBvcCA6Y2FsbF9ub190bHMs
CiAgICAgYXJnczogewogICAgICAgICBmdW5jdGlvbkluZGV4OiB1bnNpZ25lZCwKICAgICAgICAg
c3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAotICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWdu
ZWQsCisgICAgICAgIHNpemVPZlN0YWNrQXJnczogdW5zaWduZWQsCiAgICAgfQogCiBvcCA6Y2Fs
bF9pbmRpcmVjdCwKQEAgLTE2OTEsNyArMTY5Miw3IEBAIG9wIDpjYWxsX2luZGlyZWN0LAogICAg
ICAgICBmdW5jdGlvbkluZGV4OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHNpZ25hdHVyZUlu
ZGV4OiB1bnNpZ25lZCwKICAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAotICAgICAgICBu
dW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCisgICAgICAgIHNpemVPZlN0YWNrQXJnczogdW5z
aWduZWQsCiAgICAgICAgIHRhYmxlSW5kZXg6IHVuc2lnbmVkLAogICAgIH0KIApAQCAtMTcwMCw3
ICsxNzAxLDcgQEAgb3AgOmNhbGxfaW5kaXJlY3Rfbm9fdGxzLAogICAgICAgICBmdW5jdGlvbklu
ZGV4OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHNpZ25hdHVyZUluZGV4OiB1bnNpZ25lZCwK
ICAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAotICAgICAgICBudW1iZXJPZlN0YWNrQXJn
czogdW5zaWduZWQsCisgICAgICAgIHNpemVPZlN0YWNrQXJnczogdW5zaWduZWQsCiAgICAgICAg
IHRhYmxlSW5kZXg6IHVuc2lnbmVkLAogICAgIH0KIApAQCAtMTcwOSw3ICsxNzEwLDcgQEAgb3Ag
OmNhbGxfcmVmLAogICAgICAgICBmdW5jdGlvblJlZmVyZW5jZTogVmlydHVhbFJlZ2lzdGVyLAog
ICAgICAgICBzaWduYXR1cmVJbmRleDogdW5zaWduZWQsCiAgICAgICAgIHN0YWNrT2Zmc2V0OiB1
bnNpZ25lZCwKLSAgICAgICAgbnVtYmVyT2ZTdGFja0FyZ3M6IHVuc2lnbmVkLAorICAgICAgICBz
aXplT2ZTdGFja0FyZ3M6IHVuc2lnbmVkLAogICAgIH0KIAogb3AgOmNhbGxfcmVmX25vX3RscywK
QEAgLTE3MTcsNyArMTcxOCw3IEBAIG9wIDpjYWxsX3JlZl9ub190bHMsCiAgICAgICAgIGZ1bmN0
aW9uUmVmZXJlbmNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHNpZ25hdHVyZUluZGV4OiB1
bnNpZ25lZCwKICAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAotICAgICAgICBudW1iZXJP
ZlN0YWNrQXJnczogdW5zaWduZWQsCisgICAgICAgIHNpemVPZlN0YWNrQXJnczogdW5zaWduZWQs
CiAgICAgfQogCiBvcCA6Y3VycmVudF9tZW1vcnksCkBAIC0xODkxLDUgKzE4OTIsMTYgQEAgb3Bf
Z3JvdXAgOkNhdGNoQWxsLAogICAgIGFyZ3M6IHsKICAgICAgICAgZXhjZXB0aW9uOiBWaXJ0dWFs
UmVnaXN0ZXIsCiAgICAgfQorICAgIAorc2ltZF9vcF9ncm91cCA6U2ltZExhbmUsCisgICAgWwor
ICAgICAgICA6c2ltZF9leHRyYWN0X2xhbmUsCisgICAgXSwKKyAgICBhcmdzOiB7CisgICAgICAg
IGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBsYW5lOiB1bnNpZ25lZCwKKyAgICAgICAg
djogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisgICAgbWFrZVNpZ25lZFZhcmlhbnRzOiB0cnVl
CiAKIGVuZF9zZWN0aW9uIDpXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAppbmRleCBkYmEwZmUzMjJiZjguLjk2OGI1Njgx
OTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXJDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlckNvbW1vbi5oCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQgYWRqdXN0RnJhbWVBbmRTdGFj
a0luT1NSRXhpdENvbXBpbGVyVGh1bmsoTWFjcm9Bc3NlbWJsZXImIGppdCwgVk0mIHZtLCBKSVRU
CiAgICAgICAgIHJlZ2lzdGVyc1RvUHJlc2VydmUubWVyZ2UoUmVnaXN0ZXJTZXQ6Om1hY3JvU2Ny
YXRjaFJlZ2lzdGVycygpKTsKICAgICB9CiAKKyAgICBBU1NFUlQoIXJlZ2lzdGVyc1RvUHJlc2Vy
dmUubnVtYmVyT2ZTZXRGUFJzKCkpOwogICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZih2
b2lkKikgKiByZWdpc3RlcnNUb1ByZXNlcnZlLm51bWJlck9mU2V0R1BScygpOwogICAgIGlmIChp
c0ZUTE9TUkV4aXQpCiAgICAgICAgIHNjcmF0Y2hTaXplICs9IHNpemVvZih2b2lkKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKaW5kZXggMGM0ZDE5NWQ5MTQ4Li41YmYz
ODg2NGU4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkFzc2VtYmx5SGVs
cGVyc1Nwb29sZXJzLmgiCisjaW5jbHVkZSAiQjNXaWR0aC5oIgogI2luY2x1ZGUgIkNDYWxsSGVs
cGVycy5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0Lmgi
CkBAIC00Nyw3ICs0OCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
b3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgLy8gVGhpcyBuZWVk
cyB0byBoYXBwZW4gYmVmb3JlIHdlIHVzZSB0aGUgc2NyYXRjaCBidWZmZXIgYmVjYXVzZSB0aGlz
IGZ1bmN0aW9uIGFsc28gdXNlcyB0aGUgc2NyYXRjaCBidWZmZXIuCiAgICAgYWRqdXN0RnJhbWVB
bmRTdGFja0luT1NSRXhpdENvbXBpbGVyVGh1bms8REZHOjpKSVRDb2RlPihqaXQsIHZtLCBKSVRU
eXBlOjpERkdKSVQpOwogICAgIAotICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1i
ZXJPZlJlZ2lzdGVycyk7CisgICAgc2l6ZV90IHNjcmF0Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSAqIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgQjM6OmJ5dGVzRm9yV2lkdGgo
QjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpICogRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnM7CiAgICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJG
b3JTaXplKHNjcmF0Y2hTaXplKTsKICAgICBFbmNvZGVkSlNWYWx1ZSogYnVmZmVyID0gc3RhdGlj
X2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpOwogCkBA
IC04NCw4ICs4NSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3Ny
RXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgc3RvcmVTcG9vbGVyLmZp
bmFsaXplR1BSKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnM7ICsraSkgewotICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gKEdQUklu
Zm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSkgKiBzaXplb2YoZG91YmxlKTsKLSAgICAgICAgc3Rv
cmVTcG9vbGVyLnN0b3JlRlBSKHsgRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgb2Zmc2V0IH0pOwor
ICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsg
aSAqIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSAvIDgp
ICogc2l6ZW9mKGRvdWJsZSk7CisgICAgICAgIHN0b3JlU3Bvb2xlci5zdG9yZUZQUih7IEZQUklu
Zm86OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9LCBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2Vy
dmF0aXZlV2lkdGgoQjM6OkZQKSkpOwogICAgIH0KICAgICBzdG9yZVNwb29sZXIuZmluYWxpemVG
UFIoKTsKIApAQCAtMTA1LDggKzEwNiw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gb3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgbG9h
ZFNwb29sZXIuZmluYWxpemVHUFIoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBG
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0gICAgICAgIHB0cmRpZmZfdCBvZmZz
ZXQgPSAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSAqIHNpemVvZihkb3VibGUpOwot
ICAgICAgICBsb2FkU3Bvb2xlci5sb2FkRlBSKHsgRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgb2Zm
c2V0IH0pOworICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gKEdQUkluZm86Om51bWJlck9mUmVn
aXN0ZXJzICsgaSAqIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6
RlApKSAvIDgpICogc2l6ZW9mKGRvdWJsZSk7CisgICAgICAgIGxvYWRTcG9vbGVyLmxvYWRGUFIo
eyBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBvZmZzZXQgfSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6
OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpKTsKICAgICB9CiAgICAgbG9hZFNwb29sZXIuZmlu
YWxpemVGUFIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2Vt
Ymxlci9BUk02NC9BNjRET3Bjb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3Nl
bWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAKaW5kZXggOGQ0ZDEyOTUxNWQ2Li5iYWMyZjE4Yjcz
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQv
QTY0RE9wY29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9B
Uk02NC9BNjRET3Bjb2RlLmNwcApAQCAtNzQsNiArNzQsOCBAQCBzdGF0aWMgY29uc3QgT3Bjb2Rl
R3JvdXBJbml0aWFsaXplciBvcGNvZGVHcm91cExpc3RbXSA9IHsKICAgICBPUENPREVfR1JPVVBf
RU5UUlkoMHgwYiwgQTY0RE9wY29kZUFkZFN1YnRyYWN0U2hpZnRlZFJlZ2lzdGVyKSwKICAgICBP
UENPREVfR1JPVVBfRU5UUlkoMHgwYywgQTY0RE9wY29kZUxvYWRTdG9yZVJlZ2lzdGVyUGFpciks
CiAgICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MGQsIEE2NERPcGNvZGVMb2FkU3RvcmVSZWdpc3Rl
clBhaXIpLAorICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDBlLCBBNjRET3Bjb2RlVmVjdG9yRGF0
YVByb2Nlc3NpbmdMb2dpY2FsMVNvdXJjZSksCisgICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MGUs
IEE2NERPcGNvZGVWZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwyU291cmNlKSwKICAgICBPUENP
REVfR1JPVVBfRU5UUlkoMHgxMSwgQTY0RE9wY29kZUFkZFN1YnRyYWN0SW1tZWRpYXRlKSwKICAg
ICBPUENPREVfR1JPVVBfRU5UUlkoMHgxMiwgQTY0RE9wY29kZU1vdmVXaWRlKSwKICAgICBPUENP
REVfR1JPVVBfRU5UUlkoMHgxMiwgQTY0RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGUpLApAQCAtMTY0
Myw2ICsxNjQ1LDU2IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVVbmNvbmRpdGlvbmFsQnJhbmNo
UmVnaXN0ZXI6OmZvcm1hdCgpCiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCitjb25z
dCBjaGFyKiBBNjRET3Bjb2RlVmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsMVNvdXJjZTo6Zm9y
bWF0KCkKK3sKKyAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUob3BOYW1lKCkpOworICAgIGFwcGVu
ZFNpbWRMYW5lSW5kZXhBbmRUeXBlKChxKCkgPDwgNikgfCBpbW01KCkpOworICAgIGFwcGVuZFNl
cGFyYXRvcigpOworICAgIGFwcGVuZFJlZ2lzdGVyTmFtZShyZCgpKTsKKyAgICBhcHBlbmRTZXBh
cmF0b3IoKTsKKyAgICBhcHBlbmRSZWdpc3Rlck5hbWUocnQoKSk7CisgICAgYXBwZW5kU2VwYXJh
dG9yKCk7CisgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOworfQorCitjb25zdCBjaGFyKiBBNjRE
T3Bjb2RlVmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsMVNvdXJjZTo6b3BOYW1lKCkKK3sKKyAg
ICBzd2l0Y2ggKG9wMTBfMTUoKSkgeworICAgIGNhc2UgMGIwMDAxMTE6CisgICAgICAgIHJldHVy
biAiaW5zIjsKKyAgICBjYXNlIDBiMDAxMTExOgorICAgICAgICByZXR1cm4gInVtb3YiOworICAg
IGRlZmF1bHQ6CisgICAgICAgIGRhdGFMb2dMbigiRGlzc2Fzc2VtYmxlciBzYXcgdW5rbm93biBz
aW1kIG9uZSBzb3VyY2UgaW5zdHJ1Y3Rpb24gb3Bjb2RlICIsIG9wMTBfMTUoKSk7CisgICAgICAg
IHJldHVybiAiU0lNRFVLIjsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIqIEE2NERPcGNvZGVWZWN0
b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwyU291cmNlOjpmb3JtYXQoKQoreworICAgIGFwcGVuZElu
c3RydWN0aW9uTmFtZShvcE5hbWUoKSk7CisgICAgYXBwZW5kU2ltZExhbmVUeXBlKHEoKSk7Cisg
ICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgYXBwZW5kUmVnaXN0ZXJOYW1lKHJkKCkpOworICAg
IGFwcGVuZFNlcGFyYXRvcigpOworICAgIGFwcGVuZFJlZ2lzdGVyTmFtZShybigpKTsKKyAgICBh
cHBlbmRTZXBhcmF0b3IoKTsKKyAgICBhcHBlbmRSZWdpc3Rlck5hbWUocm0oKSk7CisgICAgYXBw
ZW5kU2VwYXJhdG9yKCk7CisgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOworfQorCitjb25zdCBj
aGFyKiBBNjRET3Bjb2RlVmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsMlNvdXJjZTo6b3BOYW1l
KCkKK3sKKyAgICBzd2l0Y2ggKG9wMTBfMTUoKSkgeworICAgIGNhc2UgMGIwMDExMToKKyAgICAg
ICAgcmV0dXJuICJvcnIiOworICAgIGRlZmF1bHQ6CisgICAgICAgIGRhdGFMb2dMbigiRGlzc2Fz
c2VtYmxlciBzYXcgdW5rbm93biBzaW1kIDIgc291cmNlIGluc3RydWN0aW9uIG9wY29kZSAiLCBv
cDEwXzE1KCkpOworICAgICAgICByZXR1cm4gIlNJTURVSyI7CisgICAgfQorfQorCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QVJNNjREaXNhc3NlbWJsZXIKIAogI2VuZGlmIC8vIEVOQUJMRShBUk02
NF9ESVNBU1NFTUJMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNz
ZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3Nl
bWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oCmluZGV4IGZhZmViZWE2NzE4Ni4uZTg5NWMyZDA4YTMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2
NERPcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0
L0E2NERPcGNvZGUuaApAQCAtMTk0LDYgKzE5NCw0MCBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAg
ICAgICBidWZmZXJQcmludGYoImxzbCAjJXUiLCAxNiAqIGFtb3VudCk7CiAgICAgfQorICAgIAor
ICAgIHZvaWQgYXBwZW5kU2ltZExhbmVJbmRleEFuZFR5cGUodW5zaWduZWQgaW1tNikKKyAgICB7
CisgICAgICAgIHVuc2lnbmVkIGxhbmUgPSAwOworICAgICAgICBpZiAoKGltbTYgJiAwYjEwMDAw
MSkgPT0gMGIwMDAwMDEpIHsKKyAgICAgICAgICAgIGJ1ZmZlclByaW50ZigiLjhCIik7CisgICAg
ICAgICAgICBsYW5lID0gKChpbW02ICYgMGIwMTExMTApID4+IDEpOworICAgICAgICB9IGVsc2Ug
aWYgKChpbW02ICYgMGIxMDAwMDEpID09IDBiMDAwMDAxKSB7CisgICAgICAgICAgICBidWZmZXJQ
cmludGYoIi4xNkIiKTsKKyAgICAgICAgICAgIGxhbmUgPSAoKGltbTYgJiAwYjAxMTExMCkgPj4g
MSk7CisgICAgICAgIH0gZWxzZSBpZiAoKGltbTYgJiAwYjEwMDAxMSkgPT0gMGIwMDAwMTApIHsK
KyAgICAgICAgICAgIGJ1ZmZlclByaW50ZigiLkgiKTsKKyAgICAgICAgICAgIGxhbmUgPSAoKGlt
bTYgJiAwYjAxMTEwMCkgPj4gMik7CisgICAgICAgIH0gZWxzZSBpZiAoKGltbTYgJiAwYjEwMDEx
MSkgPT0gMGIwMDAxMDApIHsKKyAgICAgICAgICAgIGJ1ZmZlclByaW50ZigiLlMiKTsKKyAgICAg
ICAgICAgIGxhbmUgPSAoKGltbTYgJiAwYjAxMTAwMCkgPj4gMyk7CisgICAgICAgICAgICAvLyBU
aGlzIGlzIG92ZXJseSBwZXJtaXNzaXZlOyBmb3Igc29tZSBpbnN0cnVjdGlvbnMgKGxpa2UgdW1v
diksIGJpdCA2IG11c3QgYmUgMS4KKyAgICAgICAgfSBlbHNlIGlmICgoaW1tNiAmIDBiMDAxMTEx
KSA9PSAwYjAwMTAwMCkgeworICAgICAgICAgICAgYnVmZmVyUHJpbnRmKCIuRCIpOworICAgICAg
ICAgICAgbGFuZSA9ICgoaW1tNiAmIDBiMDEwMDAwKSA+PiA0KTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGRhdGFMb2dMbigiRGlzc2Fzc2VtYmxlciBzYXcgaW52YWxpZCBzaW1kIGxh
bmUgdHlwZSAiLCBpbW02KTsKKyAgICAgICAgICAgIGJ1ZmZlclByaW50ZigiLklOVkFMSURfTEFO
RV9UWVBFIik7CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyUHJpbnRmKCJbIyV1XSIsIGxhbmUp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGFwcGVuZFNpbWRMYW5lVHlwZSh1bnNpZ25lZCBxKQor
ICAgIHsKKyAgICAgICAgaWYgKHEpCisgICAgICAgICAgICBidWZmZXJQcmludGYoIi4xNkIiKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnVmZmVyUHJpbnRmKCIuOEIiKTsKKyAgICB9CiAK
ICAgICBzdGF0aWMgY29uc3RleHByIGludCBidWZmZXJTaXplID0gODE7CiAKQEAgLTkyOSw2ICs5
NjMsNDIgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHJtKCkgeyByZXR1cm4gcmQoKTsgfQogfTsK
IAorY2xhc3MgQTY0RE9wY29kZVZlY3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbDFTb3VyY2UgOiBw
dWJsaWMgQTY0RE9wY29kZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJf
dCBtYXNrICAgID0gMGIxMDEnMTExMTEnMTEnMScwMDAwMDAwMDAwMDAwMDAwMDAwMDA7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMGIwMDAnMDExMTAnMDAnMCcwMDAw
MDAwMDAwMDAwMDAwMDAwMDA7CisKKyAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2Rl
VmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsMVNvdXJjZSwgdGhpc09iaik7CisKKyAgICBjb25z
dCBjaGFyKiBmb3JtYXQoKTsKKyAgICBjb25zdCBjaGFyKiBvcE5hbWUoKTsKKyAgICAKKyAgICB1
bnNpZ25lZCByZCgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAwKSAmIDBiMTExMTE7IH0KKyAgICB1
bnNpZ25lZCBydCgpIHsgcmV0dXJuIChtX29wY29kZSA+PiA1KSAmIDBiMTExMTE7IH0KKyAgICB1
bnNpZ25lZCBvcDEwXzE1KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDEwKSAmIDBiMTExMTE7IH0K
KyAgICB1bnNpZ25lZCBpbW01KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDE2KSAmIDBiMTExMTE7
IH0KKyAgICB1bnNpZ25lZCBxKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDMwKSAmIDBiMTsgfQor
fTsKKworY2xhc3MgQTY0RE9wY29kZVZlY3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbDJTb3VyY2Ug
OiBwdWJsaWMgQTY0RE9wY29kZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
MzJfdCBtYXNrICAgID0gMGIxMDEnMTExMTEnMTEnMScwMDAwMDAwMDAwMDAwMDAwMDAwMDA7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMGIwMDAnMDExMTAnMTAnMScw
MDAwMDAwMDAwMDAwMDAwMDAwMDA7CisKKyAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bj
b2RlVmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsMlNvdXJjZSwgdGhpc09iaik7CisKKyAgICBj
b25zdCBjaGFyKiBmb3JtYXQoKTsKKyAgICBjb25zdCBjaGFyKiBvcE5hbWUoKTsKKyAgICAKKyAg
ICB1bnNpZ25lZCByZCgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAwKSAmIDBiMTExMTE7IH0KKyAg
ICB1bnNpZ25lZCBybigpIHsgcmV0dXJuIChtX29wY29kZSA+PiA1KSAmIDBiMTExMTE7IH0KKyAg
ICB1bnNpZ25lZCBvcDEwXzE1KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDEwKSAmIDBiMTExMTE7
IH0KKyAgICB1bnNpZ25lZCBybSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxNikgJiAwYjExMTEx
OyB9CisgICAgdW5zaWduZWQgcSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAzMCkgJiAwYjE7IH0K
K307CisKKworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QVJNNjREaXNhc3NlbWJsZXIKIAogdXNp
bmcgSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExTYXZlUmVzdG9yZS5jcHAKaW5kZXggMGYyYzA1ZTU2YjdjLi40ZWFjN2Y2
NDcxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3Bw
CkBAIC00MSw2ICs0MSwxNCBAQCBzdGF0aWMgc2l6ZV90IGJ5dGVzRm9yR1BScygpCiAgICAgcmV0
dXJuIE1hY3JvQXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lzdGVycygpICogc2l6ZW9mKGludDY0X3Qp
OwogfQogCitzdGF0aWMgc2l6ZV90IGJ5dGVzRm9yRlBSKCkKK3sKKyAgICAvLyBGSVhNRTogSXQg
bWlnaHQgYmUgd29ydGh3aGlsZSBzYXZpbmcgdGhlIGZ1bGwgc3RhdGUgb2YgdGhlIEZQIHJlZ2lz
dGVycywgYXQgc29tZSBwb2ludC4KKyAgICAvLyBSaWdodCBub3cgd2UgZG9uJ3QgbmVlZCB0aGlz
IHNpbmNlIHdlIG9ubHkgZG8gdGhlIHNhdmUvcmVzdG9yZSBqdXN0IHByaW9yIHRvIE9TUiBleGl0
LCBhbmQKKyAgICAvLyBPU1IgZXhpdCB3aWxsIGJlIGd1YXJhbnRlZWQgdG8gb25seSBuZWVkIHRo
ZSBkb3VibGUgcG9ydGlvbiBvZiB0aGUgRlAgcmVnaXN0ZXJzLgorICAgIHJldHVybiBzaXplb2Yo
ZG91YmxlKTsKK30KKwogc3RhdGljIHNpemVfdCBieXRlc0ZvckZQUnMoKQogewogICAgIC8vIEZJ
WE1FOiBJdCBtaWdodCBiZSB3b3J0aHdoaWxlIHNhdmluZyB0aGUgZnVsbCBzdGF0ZSBvZiB0aGUg
RlAgcmVnaXN0ZXJzLCBhdCBzb21lIHBvaW50LgpAQCAtNjEsNyArNjksNyBAQCBzaXplX3Qgb2Zm
c2V0T2ZHUFIoR1BSUmVnIHJlZykKIAogc2l6ZV90IG9mZnNldE9mRlBSKEZQUlJlZyByZWcpCiB7
Ci0gICAgcmV0dXJuIGJ5dGVzRm9yR1BScygpICsgTWFjcm9Bc3NlbWJsZXI6OmZwUmVnaXN0ZXJJ
bmRleChyZWcpICogc2l6ZW9mKGRvdWJsZSk7CisgICAgcmV0dXJuIGJ5dGVzRm9yR1BScygpICsg
TWFjcm9Bc3NlbWJsZXI6OmZwUmVnaXN0ZXJJbmRleChyZWcpICogYnl0ZXNGb3JGUFIoKTsKIH0K
IAogc2l6ZV90IG9mZnNldE9mUmVnKFJlZyByZWcpCkBAIC0xMzksNyArMTQ3LDcgQEAgdm9pZCBz
YXZlQWxsUmVnaXN0ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5
KQogICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2Vt
Ymxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVn
aXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJlZykpIHsKICAg
ICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5nZXQocmVnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KG9m
ZnNldE9mRlBSKHJlZykpIH0pOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKHsgcmVnLCBzdGF0
aWNfY2FzdDxwdHJkaWZmX3Q+KG9mZnNldE9mRlBSKHJlZykpIH0sIGJ5dGVzRm9yRlBSKCkpOwog
ICAgIH0KICAgICBzcG9vbGVyLmZpbmFsaXplRlBSKCk7CiB9CkBAIC0xNTgsNyArMTY2LDcgQEAg
dm9pZCByZXN0b3JlQWxsUmVnaXN0ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0LCBjaGFyKiBzY3Jh
dGNoTWVtb3J5KQogICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBN
YWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6
bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJl
ZykpIHsKICAgICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5nZXQocmVnKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBzcG9vbGVyLmxvYWRGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRp
ZmZfdD4ob2Zmc2V0T2ZGUFIocmVnKSkgfSk7CisgICAgICAgIHNwb29sZXIubG9hZEZQUih7IHJl
Zywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkZQUihyZWcpKSB9LCBieXRlc0ZvckZQ
UigpKTsKICAgICB9CiAgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigpOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCmluZGV4IGI0ZTQ3NThlNThm
Yi4uMmUyMzU1YjQxMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFNsb3dQYXRoQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93
UGF0aENhbGwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFNsb3dQYXRoQ2FsbENvbnRleHQ6OlNsb3dQ
YXRoQ2FsbENvbnRleHQoCiAgICAgLy8gV2UgZG9uJ3QgY2FyZSB0aGF0IHlvdSdyZSB1c2luZyBj
YWxsZWUtc2F2ZSwgc3RhY2ssIG9yIGhhcmR3YXJlIHJlZ2lzdGVycy4KICAgICB1c2VkUmVnaXN0
ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOwogICAgIHVzZWRSZWdp
c3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsK
LSAgICB1c2VkUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3Rl
cnMoKSk7CisgICAgdXNlZFJlZ2lzdGVycy5zZXQoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdp
c3RlcnMoKSk7IC8vIFRPRE8KICAgICAgICAgCiAgICAgLy8gVGhlIHJldHVybiByZWdpc3RlciBk
b2Vzbid0IG5lZWQgdG8gYmUgc2F2ZWQuCiAgICAgaWYgKG1fcmV0dXJuUmVnaXN0ZXIgIT0gSW52
YWxpZEdQUlJlZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1
bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAppbmRleCBk
ZTgyMTM4NTEwZjEuLjZhYTA2YzYwZWJmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VGh1bmtzLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShGVExfSklUKQogCiAjaW5j
bHVkZSAiQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCiAj
aW5jbHVkZSAiREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiRlRMT1NSRXhp
dENvbXBpbGVyLmgiCiAjaW5jbHVkZSAiRlRMT3BlcmF0aW9ucy5oIgpAQCAtMTQ1LDcgKzE0Niw3
IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQ2xvYmJlckNoZWNrKEFzc2VtYmx5SGVscGVycyYgaml0
LCBSZWdpc3RlclNldCBkb250Q2xvYmJlcikKICAgICBSZWdpc3RlclNldCBjbG9iYmVyID0gUmVn
aXN0ZXJTZXQ6OmFsbFJlZ2lzdGVycygpOwogICAgIGNsb2JiZXIuZXhjbHVkZShSZWdpc3RlclNl
dDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKICAgICBjbG9iYmVyLmV4Y2x1ZGUoUmVn
aXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOwotICAgIGNsb2JiZXIuZXhjbHVkZShSZWdpc3Rl
clNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyLnNldChSZWdpc3RlclNl
dDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsgLy8gVE9ETwogICAgIGNsb2JiZXIuZXhjbHVkZShk
b250Q2xvYmJlcik7CiAgICAgCiAgICAgR1BSUmVnIHNvbWVHUFIgPSBJbnZhbGlkR1BSUmVnOwpA
QCAtMTkzLDggKzE5NCw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
c2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBTCiAgICAgZm9yIChNYWNy
b0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVn
aXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpOyByZWcgPSBz
dGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEPihyZWcgKyAxKSkgewogICAg
ICAgICBpZiAoIWtleS51c2VkUmVnaXN0ZXJzKCkuZ2V0KHJlZykpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgc3RvcmVTcG9vbGVyLnN0b3JlRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxw
dHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0pOwotICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IHNp
emVvZihkb3VibGUpOworICAgICAgICBzdG9yZVNwb29sZXIuc3RvcmVGUFIoeyByZWcsIHN0YXRp
Y19jYXN0PHB0cmRpZmZfdD4oY3VycmVudE9mZnNldCkgfSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6
OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpKTsKKyAgICAgICAgY3VycmVudE9mZnNldCArPSBC
Mzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSk7CiAgICAgfQog
ICAgIHN0b3JlU3Bvb2xlci5maW5hbGl6ZUZQUigpOwogCkBAIC0yMjAsOCArMjIxLDggQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVy
YXRvcihWTSYgdm0sIGNvbnN0IFMKIAogICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0
ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgOyByZWcgPSBzdGF0
aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEPihyZWcgLSAxKSkgewogICAgICAg
ICBpZiAoa2V5LnVzZWRSZWdpc3RlcnMoKS5nZXQocmVnKSkgewotICAgICAgICAgICAgY3VycmVu
dE9mZnNldCAtPSBzaXplb2YoZG91YmxlKTsKLSAgICAgICAgICAgIGxvYWRTcG9vbGVyLmxvYWRG
UFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oY3VycmVudE9mZnNldCkgfSk7CisgICAg
ICAgICAgICBjdXJyZW50T2Zmc2V0IC09IEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRp
dmVXaWR0aChCMzo6RlApKTsKKyAgICAgICAgICAgIGxvYWRTcG9vbGVyLmxvYWRGUFIoeyByZWcs
IHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oY3VycmVudE9mZnNldCkgfSwgQjM6OmJ5dGVzRm9yV2lk
dGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpKTsKICAgICAgICAgfQogICAgICAgICBp
ZiAocmVnID09IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKSkKICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wu
cmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCA2ZjBhOGYx
YTgwM2UuLmJlMGZlMzZiZDIxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRvci9EU0wucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wu
cmIKQEAgLTYwLDcgKzYwLDI2IEBAIG1vZHVsZSBEU0wKICAgICAgICAgYXNzZXJ0KCJgb3BfZ3Jv
dXBgIGNhbiBvbmx5IGJlIGNhbGxlZCBpbiBiZXR3ZWVuIGBiZWdpbl9zZWN0aW9uYCBhbmQgYGVu
ZF9zZWN0aW9uYCIpIHsgbm90IEBjdXJyZW50X3NlY3Rpb24ubmlsPyB9CiAgICAgICAgIEBjdXJy
ZW50X3NlY3Rpb24uYWRkX29wY29kZV9ncm91cChkZXNjLCBvcHMsIGNvbmZpZykKICAgICBlbmQK
LQorICAgIAorICAgIGRlZiBzZWxmLnNpbWRfb3BfZ3JvdXAoZGVzYywgb3BzLCBjb25maWcpCisg
ICAgICAgIGFzc2VydCgiYHNpbWRfb3BfZ3JvdXBgIGNhbiBvbmx5IGJlIGNhbGxlZCBpbiBiZXR3
ZWVuIGBiZWdpbl9zZWN0aW9uYCBhbmQgYGVuZF9zZWN0aW9uYCIpIHsgbm90IEBjdXJyZW50X3Nl
Y3Rpb24ubmlsPyB9CisKKyAgICAgICAgZm9yIG9wIGluIG9wcyBkbworICAgICAgICAgICAgdmFy
aWFudHMgPSBbImkzMng0IiwgImk2NHgyIiwgImYzMng0IiwgImY2NHgyIl0KKyAgICAgICAgICAg
IGlmIGNvbmZpZ1s6bWFrZVNpZ25lZFZhcmlhbnRzXSB0aGVuCisgICAgICAgICAgICAgICAgdmFy
aWFudHMgKz0gWyJpOHgxNl91IiwgImk4eDE2X3MiLCAiaTE2eDhfdSIsICJpMTZ4OF9zIl0KKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB2YXJpYW50cyArPSBbImk4eDE2IiwgImkx
Nng4Il0KKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgdmFyaWFudHMgPSBbImk4eDE2X3Ui
XSAjIFRPRE8KKyAgICAgICAgICAgIG9wTGlzdCA9IFtdCisgICAgICAgICAgICBmb3IgdiBpbiB2
YXJpYW50cyBkbworICAgICAgICAgICAgICAgIG9wTGlzdCA8PCAoKG9wLnRvX3MgKyAiXyIgKyB2
KS50b19zeW0pCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIEBjdXJyZW50X3NlY3Rpb24u
YWRkX29wY29kZV9ncm91cCgoZGVzYy50b19zICsgb3AudG9fcykudG9fc3ltLCBvcExpc3QsIGNv
bmZpZykKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCiAgICAgZGVmIHNlbGYudHlwZXModHlw
ZXMpCiAgICAgICAgIHR5cGVzLm1hcCBkbyB8dHlwZXwKICAgICAgICAgICAgIHR5cGUgPSAoQG5h
bWVzcGFjZXMgKyBbdHlwZV0pLmpvaW4gIjo6IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRvci9XYXNtLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRv
ci9XYXNtLnJiCmluZGV4IDJjMTFiYWYyMGQyZi4uNjk3NDI0ZTA5NWU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1dhc20ucmIKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRvci9XYXNtLnJiCkBAIC01Niw3ICs1NiwyMyBAQCBtb2R1bGUgV2Fz
bQogICAgICAgICAgICAgICAgIGFzc2VydCgiSW52YWxpZCBhcmd1bWVudCBjb3VudCAje29wLmFy
Z3Muc2l6ZX0gZm9yIG9wICN7b3AubmFtZX0iKSB7IGZhbHNlIH0KICAgICAgICAgICAgIGVuZAog
ICAgICAgICBlbmQKLSAgICAgICAgbWV0aG9kcy5qb2luKCJcbiIpCisgICAgICAgIG1ldGhvZHMu
am9pbigiXG4iKSArIGdlbmVyYXRlX2xsaW50X2dlbmVyYXRvcl9zaW1kKHNlY3Rpb24pCisgICAg
ZW5kCisKKyAgICBkZWYgc2VsZi5nZW5lcmF0ZV9sbGludF9nZW5lcmF0b3Jfc2ltZChzZWN0aW9u
KQorICAgICAgICA8PC1FT0YKKyNkZWZpbmUgQ1JFQVRFX1NJTURfQ0FTRShuYW1lLCBpZCwgYjNv
cCwgaW5jLCB3YXNtT3AsIHJldHVyblR5cGUsIG51bUltbWVkaWF0ZXMsIGltbWVkaWF0ZVNpemVz
LCBudW1Bcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIC4uLikgXAordGVtcGxhdGU8PiBcCithdXRv
IExMSW50R2VuZXJhdG9yOjphZGRTaW1kT3A8RXh0U2ltZE9wVHlwZTo6bmFtZSwgbnVtSW1tZWRp
YXRlcywgbnVtQXJndW1lbnRzPihzdGQ6OmFycmF5PHVpbnQ4X3QsIG51bUltbWVkaWF0ZXM+IGlt
bWVkaWF0ZXMsIHN0ZDo6YXJyYXk8RXhwcmVzc2lvblR5cGUsIG51bUFyZ3VtZW50cz4gYXJndW1l
bnRzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0IFwKK3sgXAorICAg
IHJlc3VsdCA9IHB1c2gocmV0dXJuVHlwZSk7IFwKKyAgICBzdGQ6OmFwcGx5KCZ3YXNtT3A6OmVt
aXQ8TExJbnRHZW5lcmF0b3I+LCBzdGQ6OnR1cGxlX2NhdChzdGQ6Om1ha2VfdHVwbGUodGhpcywg
cmVzdWx0KSwgaW1tZWRpYXRlcywgYXJndW1lbnRzKSk7IFwKKyAgICByZXR1cm4geyB9OyBcCit9
CisKK0ZPUl9FQUNIX1dBU01fRVhUX1NJTURfT1AoQ1JFQVRFX1NJTURfQ0FTRSkKKyN1bmRlZiBD
UkVBVEVfU0lNRF9DQVNFCisgICAgICAgIEVPRgogICAgIGVuZAogCiAgICAgZGVmIHNlbGYuZ2Vu
ZXJhdGVfYmluYXJ5X29wKG9wKQpAQCAtNjQsNyArODAsNyBAQCBtb2R1bGUgV2FzbQogdGVtcGxh
dGU8PgogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkT3A8I3tvcF90eXBlKG9wKX0+KEV4cHJlc3Np
b25UeXBlIGxocywgRXhwcmVzc2lvblR5cGUgcmhzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAt
PiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHJlc3VsdCA9IHB1
c2goI3tvcF9yZXR1cm4ob3ApfSk7CiAgICAgI3tvcC5jYXBpdGFsaXplZF9uYW1lfTo6ZW1pdCh0
aGlzLCByZXN1bHQsIGxocywgcmhzKTsKICAgICByZXR1cm4geyB9OwogfQpAQCAtNzYsNyArOTIs
NyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRPcDwje29wX3R5cGUob3ApfT4oRXhwcmVzc2lv
blR5cGUgbGhzLCBFeHByZXNzaW9uVHlwZSByaAogdGVtcGxhdGU8PgogYXV0byBMTEludEdlbmVy
YXRvcjo6YWRkT3A8I3tvcF90eXBlKG9wKX0+KEV4cHJlc3Npb25UeXBlIG9wZXJhbmQsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBwdXNo
KCk7CisgICAgcmVzdWx0ID0gcHVzaCgje29wX3JldHVybihvcCl9KTsKICAgICAje29wLmNhcGl0
YWxpemVkX25hbWV9OjplbWl0KHRoaXMsIHJlc3VsdCwgb3BlcmFuZCk7CiAgICAgcmV0dXJuIHsg
fTsKIH0KQEAgLTg2LDQgKzEwMiwxMiBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRPcDwje29w
X3R5cGUob3ApfT4oRXhwcmVzc2lvblR5cGUgb3BlcmFuZCwgRXhwcmVzc2lvblR5cAogICAgIGRl
ZiBzZWxmLm9wX3R5cGUob3ApCiAgICAgICAgICJPcFR5cGU6OiN7b3AudW5wcmVmaXhlZF9uYW1l
LmdzdWIoL14ufFteYS16MC05XS4vKSB7IHxjfCBjWy0xXS51cGNhc2UgfX0iCiAgICAgZW5kCisK
KyAgICBkZWYgc2VsZi5vcF9yZXR1cm4ob3ApCisgICAgICAgIHQgPSBvcC5leHRyYXNbInJldHVy
biJdWzBdCisgICAgICAgIGlmIHQgPT0gImJvb2wiIHRoZW4KKyAgICAgICAgICAgIHQgPSAiaTMy
IgorICAgICAgICBlbmQKKyAgICAgICAgIlR5cGVzOjoje3QudXBjYXNlfSIKKyAgICBlbmQKIGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNRW50cnlS
ZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUVudHJ5UmVjb3Jk
LmgKaW5kZXggYmU3YmY4ODk4NzlkLi45OTVhY2UzOTkzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUVudHJ5UmVjb3JkLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaApAQCAtNDgsNyArNDgsNyBA
QCBzdHJ1Y3QgVk1FbnRyeVJlY29yZCB7CiAgICAgSlNPYmplY3QqIGNhbGxlZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FsbGVlOyB9CiAKICNpZiAhRU5BQkxFKENfTE9PUCkgJiYgTlVNQkVSX09GX0NB
TExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCi0gICAgQ1BVUmVnaXN0ZXIgY2FsbGVlU2F2ZVJlZ2lz
dGVyc0J1ZmZlcltOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSU107CisgICAgQ1BVUmVn
aXN0ZXIgY2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlcltTSVpFX09GX0NBTExFRV9TQVZFU19SRUdJ
U1RFUlNdOwogI2VsaWYgRU5BQkxFKENfTE9PUCkKICAgICBDUFVSZWdpc3RlciBjYWxsZWVTYXZl
UmVnaXN0ZXJzQnVmZmVyWzFdOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggZGU4ZDY1M2RkODJiLi5lOWE2MjNiNWM5MjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNpbmNsdWRlICJBc3NlbWJs
eUhlbHBlcnNTcG9vbGVycy5oIgorI2luY2x1ZGUgIkIzV2lkdGguaCIKICNpbmNsdWRlICJKSVRP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgpAQCAtNzMyLDcgKzczMyw3IEBAIHZvaWQgQXNzZW1ibHlIZWxw
ZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXJJ
bXBsKEdQCiAgICAgICAgIGlmIChza2lwTGlzdC5jb250YWlucyhlbnRyeS5yZWcoKSkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgQVNTRVJUKCFlbnRyeS5yZWcoKS5pc0dQUigpKTsK
LSAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGVudHJ5KTsKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBS
KGVudHJ5LCBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkp
OwogICAgIH0KICAgICBzcG9vbGVyLmZpbmFsaXplRlBSKCk7CiAKQEAgLTExMTksNyArMTEyMCw3
IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxs
ZWVTYXZlc0J1ZmZlckltcGwoR1BSUmVnIGNhCiAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50
cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7CiAgICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVy
cy5jb250YWlucyhlbnRyeS5yZWcoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
c3Bvb2xlci5zdG9yZUZQUihlbnRyeSk7CisgICAgICAgIHNwb29sZXIuc3RvcmVGUFIoZW50cnks
IEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CiAgICAg
fQogICAgIHNwb29sZXIuZmluYWxpemVGUFIoKTsKIApAQCAtMTIzNSw3ICsxMjM2LDcgQEAgdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiBs
aXN0KQogICAgIHNwb29sZXIuZmluYWxpemVHUFIoKTsKIAogICAgIGZvciAoOyBpIDwgbGlzdFNp
emU7IGkrKykKLSAgICAgICAgc3Bvb2xlci5zdG9yZUZQUihsaXN0LmF0KGkpKTsKKyAgICAgICAg
c3Bvb2xlci5zdG9yZUZQUihsaXN0LmF0KGkpLCBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2Vy
dmF0aXZlV2lkdGgoQjM6OkZQKSkpOwogICAgIHNwb29sZXIuZmluYWxpemVGUFIoKTsKIH0KIApA
QCAtMTI1NCw3ICsxMjU1LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlKGNv
bnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiBsaXN0KQogICAgIHNwb29sZXIuZmluYWxpemVHUFIo
KTsKIAogICAgIGZvciAoOyBpIDwgbGlzdFNpemU7IGkrKykKLSAgICAgICAgc3Bvb2xlci5sb2Fk
RlBSKGxpc3QuYXQoaSkpOworICAgICAgICBzcG9vbGVyLmxvYWRGUFIobGlzdC5hdChpKSwgQjM6
OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpKTsKICAgICBzcG9v
bGVyLmZpbmFsaXplRlBSKCk7CiB9CiAKQEAgLTEyNzksNyArMTI4MCw3IEBAIHZvaWQgQXNzZW1i
bHlIZWxwZXJzOjplbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRM
aXN0KiBjYWxsZWVTCiAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZl
cy0+YXQoaSk7CiAgICAgICAgIGlmIChkb250U2F2ZVJlZ2lzdGVycy5jb250YWlucyhlbnRyeS5y
ZWcoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgc3Bvb2xlci5zdG9yZUZQUihl
bnRyeSk7CisgICAgICAgIHNwb29sZXIuc3RvcmVGUFIoZW50cnksIEIzOjpieXRlc0ZvcldpZHRo
KEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CiAgICAgfQogICAgIHNwb29sZXIuZmlu
YWxpemVGUFIoKTsKIH0KQEAgLTEzMDUsNyArMTMwNiw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJz
OjplbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBj
YWxsCiAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7
CiAgICAgICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHNwb29sZXIubG9hZEZQUihlbnRyeSk7CisgICAg
ICAgIHNwb29sZXIubG9hZEZQUihlbnRyeSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZh
dGl2ZVdpZHRoKEIzOjpGUCkpKTsKICAgICB9CiAgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigpOwog
fQpAQCAtMTM1NSwxMCArMTM1NiwxMCBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y29weUxMSW50
QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbQogCiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGVudHJ5LnJlZygpLmlzRlBSKCkpOwogICAgICAgICBpZiAoY3Vy
cmVudEZyYW1lRW50cnkpCi0gICAgICAgICAgICBzcG9vbGVyLmxvYWRGUFIoY3VycmVudEZyYW1l
RW50cnktPm9mZnNldCgpKTsKKyAgICAgICAgICAgIHNwb29sZXIubG9hZEZQUihjdXJyZW50RnJh
bWVFbnRyeS0+b2Zmc2V0KCksIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0
aChCMzo6RlApKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNwb29sZXIuY29weUZQUihl
bnRyeS5yZWcoKS5mcHIoKSk7Ci0gICAgICAgIHNwb29sZXIuc3RvcmVGUFIoZW50cnkub2Zmc2V0
KCkpOworICAgICAgICAgICAgc3Bvb2xlci5jb3B5RlBSKGVudHJ5LnJlZygpLmZwcigpLCBCMzo6
Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOworICAgICAgICBz
cG9vbGVyLnN0b3JlRlBSKGVudHJ5Lm9mZnNldCgpLCBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29u
c2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOwogICAgIH0KICAgICBzcG9vbGVyLmZpbmFsaXplRlBS
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzU3Bvb2xlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
U3Bvb2xlcnMuaAppbmRleCA3ODMxZWYzNjY5MGQuLjBjOWNmOTU0M2M0NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaApAQCAt
NzAsNyArNzAsNyBAQCBzdHJ1Y3QgUmVnRGlzcGF0Y2g8RlBSUmVnPiB7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgU3Bvb2xlcj4gc3RhdGljIEZQUlJlZyB0ZW1wMihjb25zdCBTcG9vbGVyKiBzcG9v
bGVyKSB7IHJldHVybiBzcG9vbGVyLT5tX3RlbXAyRlBSOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgU3Bvb2xlcj4gc3RhdGljIEZQUlJlZyYgcmVnVG9TdG9yZShTcG9vbGVyKiBzcG9vbGVyKSB7
IHJldHVybiBzcG9vbGVyLT5tX2ZwclRvU3RvcmU7IH0KICAgICBzdGF0aWMgY29uc3RleHByIEZQ
UlJlZyBpbnZhbGlkKCkgeyByZXR1cm4gSW52YWxpZEZQUlJlZzsgfQotICAgIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IHJlZ1NpemUoKSB7IHJldHVybiBzaXplb2YoZG91YmxlKTsgfQorICAgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IHJlZ1NpemUoKSB7IHJldHVybiAxNjsgfQogI2lmIENQVShB
Uk02NCkKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkTG9hZFBhaXJJbW0oaW50IG9mZnNldCkgeyBy
ZXR1cm4gQVJNNjRBc3NlbWJsZXI6OmlzVmFsaWRMRFBGUEltbTw2ND4ob2Zmc2V0KTsgfQogICAg
IHN0YXRpYyBib29sIGlzVmFsaWRTdG9yZVBhaXJJbW0oaW50IG9mZnNldCkgeyByZXR1cm4gQVJN
NjRBc3NlbWJsZXI6OmlzVmFsaWRTVFBGUEltbTw2ND4ob2Zmc2V0KTsgfQpAQCAtOTEsMjkgKzkx
LDM1IEBAIHB1YmxpYzoKICAgICB7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+
Ci0gICAgdm9pZCBleGVjdXRlKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5KQorICAgIHZv
aWQgZXhlY3V0ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSwgdW5zaWduZWQgYnl0ZXNX
aWR0aCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+
OjpoYXNTYW1lVHlwZShlbnRyeS5yZWcoKSkpOwogICAgICAgICBpZiBjb25zdGV4cHIgKCFoYXNQ
YWlyT3ApCi0gICAgICAgICAgICByZXR1cm4gb3AoKS5leGVjdXRlU2luZ2xlKGVudHJ5Lm9mZnNl
dCgpLCBSZWdEaXNwYXRjaDxSZWdUeXBlPjo6Z2V0KGVudHJ5LnJlZygpKSk7CisgICAgICAgICAg
ICByZXR1cm4gb3AoKS5leGVjdXRlU2luZ2xlKGVudHJ5Lm9mZnNldCgpLCBSZWdEaXNwYXRjaDxS
ZWdUeXBlPjo6Z2V0KGVudHJ5LnJlZygpKSwgYnl0ZXNXaWR0aCk7CisgICAgICAgIGlmIChieXRl
c1dpZHRoID4gOCkKKyAgICAgICAgICAgIHJldHVybiBvcCgpLmV4ZWN1dGVTaW5nbGUoZW50cnku
b2Zmc2V0KCksIFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+OjpnZXQoZW50cnkucmVnKCkpLCBieXRlc1dp
ZHRoKTsKIAogICAgICAgICBpZiAoIW1fYnVmZmVyZWRFbnRyeS5yZWcoKS5pc1NldCgpKSB7CiAg
ICAgICAgICAgICBtX2J1ZmZlcmVkRW50cnkgPSBlbnRyeTsKKyAgICAgICAgICAgIG1fYnVmZmVy
ZWRCeXRlc1dpZHRoID0gYnl0ZXNXaWR0aDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotCi0gICAgICAgIGNvbnN0ZXhwciBwdHJkaWZmX3QgcmVnU2l6ZSA9IFJlZ0Rpc3BhdGNoPFJl
Z1R5cGU+OjpyZWdTaXplKCk7CisgICAgICAgIAorICAgICAgICBwdHJkaWZmX3QgcmVnU2l6ZSA9
IGJ5dGVzV2lkdGg7CisgICAgICAgIEFTU0VSVChieXRlc1dpZHRoIDw9IFJlZ0Rpc3BhdGNoPFJl
Z1R5cGU+OjpyZWdTaXplKCkpOwogICAgICAgICBSZWdUeXBlIGJ1ZmZlcmVkRW50cnlSZWcgPSBS
ZWdEaXNwYXRjaDxSZWdUeXBlPjo6Z2V0KG1fYnVmZmVyZWRFbnRyeS5yZWcoKSk7CiAgICAgICAg
IFJlZ1R5cGUgZW50cnlSZWcgPSBSZWdEaXNwYXRjaDxSZWdUeXBlPjo6Z2V0KGVudHJ5LnJlZygp
KTsKIAogICAgICAgICBpZiAoZW50cnkub2Zmc2V0KCkgPT0gbV9idWZmZXJlZEVudHJ5Lm9mZnNl
dCgpICsgcmVnU2l6ZSkgewogICAgICAgICAgICAgb3AoKS5leGVjdXRlUGFpcihtX2J1ZmZlcmVk
RW50cnkub2Zmc2V0KCksIGJ1ZmZlcmVkRW50cnlSZWcsIGVudHJ5UmVnKTsKICAgICAgICAgICAg
IG1fYnVmZmVyZWRFbnRyeSA9IHsgfTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRCeXRlc1dpZHRo
ID0gMDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAobV9idWZm
ZXJlZEVudHJ5Lm9mZnNldCgpID09IGVudHJ5Lm9mZnNldCgpICsgcmVnU2l6ZSkgewogICAgICAg
ICAgICAgb3AoKS5leGVjdXRlUGFpcihlbnRyeS5vZmZzZXQoKSwgZW50cnlSZWcsIGJ1ZmZlcmVk
RW50cnlSZWcpOwogICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0geyB9OworICAgICAgICAg
ICAgbV9idWZmZXJlZEJ5dGVzV2lkdGggPSAwOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTEyMSw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEV4ZWN1dGUgdGhl
IHByZXZpb3VzIG9uZSBhcyBhIHNpbmdsZSAoZmluYWxpemUgd2lsbCBkbyB0aGF0KSwgYW5kIHRo
ZW4KICAgICAgICAgLy8gYnVmZmVyIHRoZSBjdXJyZW50IGVudHJ5IHRvIHBvdGVudGlhbGx5IGJl
IHBhaXJlZCB3aXRoIHRoZSBuZXh0IGVudHJ5LgogICAgICAgICBmaW5hbGl6ZTxSZWdUeXBlPigp
OwotICAgICAgICBleGVjdXRlPFJlZ1R5cGU+KGVudHJ5KTsKKyAgICAgICAgZXhlY3V0ZTxSZWdU
eXBlPihlbnRyeSwgYnl0ZXNXaWR0aCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
UmVnVHlwZT4KQEAgLTEyOSw4ICsxMzUsMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYg
Y29uc3RleHByIChoYXNQYWlyT3ApIHsKICAgICAgICAgICAgIGlmIChtX2J1ZmZlcmVkRW50cnku
cmVnKCkuaXNTZXQoKSkgewotICAgICAgICAgICAgICAgIG9wKCkuZXhlY3V0ZVNpbmdsZShtX2J1
ZmZlcmVkRW50cnkub2Zmc2V0KCksIFJlZ0Rpc3BhdGNoPFJlZ1R5cGU+OjpnZXQobV9idWZmZXJl
ZEVudHJ5LnJlZygpKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyZWRCeXRlc1dp
ZHRoKTsKKyAgICAgICAgICAgICAgICBvcCgpLmV4ZWN1dGVTaW5nbGUobV9idWZmZXJlZEVudHJ5
Lm9mZnNldCgpLCBSZWdEaXNwYXRjaDxSZWdUeXBlPjo6Z2V0KG1fYnVmZmVyZWRFbnRyeS5yZWco
KSksIG1fYnVmZmVyZWRCeXRlc1dpZHRoKTsKICAgICAgICAgICAgICAgICBtX2J1ZmZlcmVkRW50
cnkgPSB7IH07CisgICAgICAgICAgICAgICAgbV9idWZmZXJlZEJ5dGVzV2lkdGggPSAwOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTQ4LDYgKzE1Niw3IEBAIHByb3RlY3Rl
ZDoKICAgICBKSVQmIG1faml0OwogICAgIEdQUlJlZyBtX2Jhc2VHUFI7CiAgICAgUmVnaXN0ZXJB
dE9mZnNldCBtX2J1ZmZlcmVkRW50cnk7CisgICAgdW5zaWduZWQgbV9idWZmZXJlZEJ5dGVzV2lk
dGg7CiB9OwogCiBjbGFzcyBBc3NlbWJseUhlbHBlcnM6OkxvYWRSZWdTcG9vbGVyIDogcHVibGlj
IEFzc2VtYmx5SGVscGVyczo6U3Bvb2xlcjxMb2FkUmVnU3Bvb2xlcj4gewpAQCAtMTU4LDkgKzE2
Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgOiBCYXNlKGppdCwgYmFzZUdQUikKICAgICB7IH0KIAot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkR1BSKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVu
dHJ5KSB7IGV4ZWN1dGU8R1BSUmVnPihlbnRyeSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
bG9hZEdQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkgeyBleGVjdXRlPEdQUlJlZz4o
ZW50cnksIDgpOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGZpbmFsaXplR1BSKCkgeyBmaW5h
bGl6ZTxHUFJSZWc+KCk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEZQUihjb25zdCBS
ZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkgeyBleGVjdXRlPEZQUlJlZz4oZW50cnkpOyB9CisgICAg
QUxXQVlTX0lOTElORSB2b2lkIGxvYWRGUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnks
IHVuc2lnbmVkIGJ5dGVzV2lkdGgpIHsgZXhlY3V0ZTxGUFJSZWc+KGVudHJ5LCBieXRlc1dpZHRo
KTsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaW5hbGl6ZUZQUigpIHsgZmluYWxpemU8RlBS
UmVnPigpOyB9CiAKIHByaXZhdGU6CkBAIC0xNzUsNyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0ZVBhaXIocHRyZGlmZl90LCBSZWdUeXBlLCBSZWdUeXBl
KSB7IH0KICNlbmRpZgogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVTaW5nbGUocHRy
ZGlmZl90IG9mZnNldCwgR1BSUmVnIHJlZykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0
ZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0LCBHUFJSZWcgcmVnLCBzaXplX3QpCiAgICAgewogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIG1faml0LmxvYWQ2NChBZGRyZXNzKG1fYmFzZUdQUiwg
b2Zmc2V0KSwgcmVnKTsKQEAgLTE4NCw5ICsxOTMsMTIgQEAgcHJpdmF0ZToKICNlbmRpZgogICAg
IH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlU2luZ2xlKHB0cmRpZmZfdCBvZmZz
ZXQsIEZQUlJlZyByZWcpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVTaW5nbGUocHRy
ZGlmZl90IG9mZnNldCwgRlBSUmVnIHJlZywgc2l6ZV90IGJ5dGVzV2lkdGgpCiAgICAgewotICAg
ICAgICBtX2ppdC5sb2FkRG91YmxlKEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpLCByZWcpOwor
ICAgICAgICBpZiAoYnl0ZXNXaWR0aCA+IDgpCisgICAgICAgICAgICBtX2ppdC5sb2FkVmVjdG9y
KEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpLCByZWcpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBtX2ppdC5sb2FkRG91YmxlKEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpLCByZWcpOwog
ICAgIH0KIAogICAgIGZyaWVuZCBjbGFzcyBBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI8TG9hZFJl
Z1Nwb29sZXI+OwpAQCAtMjAwLDkgKzIxMiw5IEBAIHB1YmxpYzoKICAgICAgICAgOiBCYXNlKGpp
dCwgYmFzZUdQUikKICAgICB7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZUdQUihj
b25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkgeyBleGVjdXRlPEdQUlJlZz4oZW50cnkpOyB9
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlR1BSKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQm
IGVudHJ5KSB7IGV4ZWN1dGU8R1BSUmVnPihlbnRyeSwgOCk7IH0KICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgZmluYWxpemVHUFIoKSB7IGZpbmFsaXplPEdQUlJlZz4oKTsgfQotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzdG9yZUZQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkgeyBleGVj
dXRlPEZQUlJlZz4oZW50cnkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlRlBSKGNv
bnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5LCB1bnNpZ25lZCBieXRlc1dpZHRoKSB7IGV4ZWN1
dGU8RlBSUmVnPihlbnRyeSwgYnl0ZXNXaWR0aCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
ZmluYWxpemVGUFIoKSB7IGZpbmFsaXplPEZQUlJlZz4oKTsgfQogCiBwcml2YXRlOgpAQCAtMjE3
LDcgKzIyOSw3IEBAIHByaXZhdGU6CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVQYWly
KHB0cmRpZmZfdCwgUmVnVHlwZSwgUmVnVHlwZSkgeyB9CiAjZW5kaWYKIAotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBleGVjdXRlU2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEdQUlJlZyByZWcpCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVTaW5nbGUocHRyZGlmZl90IG9mZnNldCwgR1BS
UmVnIHJlZywgc2l6ZV90KQogICAgIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBtX2pp
dC5zdG9yZTY0KHJlZywgQWRkcmVzcyhtX2Jhc2VHUFIsIG9mZnNldCkpOwpAQCAtMjI2LDkgKzIz
OCwxMiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IGV4ZWN1dGVTaW5nbGUocHRyZGlmZl90IG9mZnNldCwgRlBSUmVnIHJlZykKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgZXhlY3V0ZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0LCBGUFJSZWcgcmVnLCBz
aXplX3QgYnl0ZXNXaWR0aCkKICAgICB7Ci0gICAgICAgIG1faml0LnN0b3JlRG91YmxlKHJlZywg
QWRkcmVzcyhtX2Jhc2VHUFIsIG9mZnNldCkpOworICAgICAgICBpZiAoYnl0ZXNXaWR0aCA+IDgp
CisgICAgICAgICAgICBtX2ppdC5zdG9yZVZlY3RvcihyZWcsIEFkZHJlc3MobV9iYXNlR1BSLCBv
ZmZzZXQpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUocmVn
LCBBZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSk7CiAgICAgfQogCiAgICAgZnJpZW5kIGNsYXNz
IEFzc2VtYmx5SGVscGVyczo6U3Bvb2xlcjxTdG9yZVJlZ1Nwb29sZXI+OwpAQCAtMjg0LDEyICsy
OTksMTkgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPiBzdGF0aWMg
Ym9vbCBpc1ZhbGlkU3RvcmVQYWlySW1tKGludCBvZmZzZXQpIHsgcmV0dXJuIFJlZ0Rpc3BhdGNo
PFJlZ1R5cGU+Ojppc1ZhbGlkU3RvcmVQYWlySW1tKG9mZnNldCk7IH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFJlZ1R5cGU+Ci0gICAgdm9pZCBsb2FkKGludCBvZmZzZXQpCisgICAgdm9pZCBs
b2FkKGludCBvZmZzZXQsIHVuc2lnbmVkIGJ5dGVzV2lkdGgpCiAgICAgewogICAgICAgICBpZiBj
b25zdGV4cHIgKCFoYXNQYWlyT3ApIHsKICAgICAgICAgICAgIGF1dG8mIHJlZ1RvU3RvcmUgPSB0
aGlzLT5yZWdUb1N0b3JlPFJlZ1R5cGU+KCk7CiAgICAgICAgICAgICByZWdUb1N0b3JlID0gdGVt
cDE8UmVnVHlwZT4oKTsKLSAgICAgICAgICAgIGxvYWQob2Zmc2V0LCByZWdUb1N0b3JlKTsKKyAg
ICAgICAgICAgIGxvYWQob2Zmc2V0LCByZWdUb1N0b3JlLCBieXRlc1dpZHRoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGJ5dGVzV2lkdGgg
PiA4KSB7CisgICAgICAgICAgICBhdXRvJiByZWdUb1N0b3JlID0gdGhpcy0+cmVnVG9TdG9yZTxS
ZWdUeXBlPigpOworICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHRlbXAxPFJlZ1R5cGU+KCk7Cisg
ICAgICAgICAgICBsb2FkKG9mZnNldCwgcmVnVG9TdG9yZSwgYnl0ZXNXaWR0aCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjk4LDcgKzMyMCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHNvdXJjZS5vZmZzZXQgPSBvZmZzZXQ7CiAgICAgfQogCi0gICAgdm9pZCBtb3ZlKEVu
Y29kZWRKU1ZhbHVlIHZhbHVlKQorICAgIHZvaWQgbW92ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYnl0ZXNXaWR0aCkKICAgICB7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoIWhhc1Bh
aXJPcCkgewogICAgICAgICAgICAgYXV0byYgcmVnVG9TdG9yZSA9IHRoaXMtPnJlZ1RvU3RvcmU8
R1BSUmVnPigpOwpAQCAtMzA2LDYgKzMyOCwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbW92
ZSh2YWx1ZSwgcmVnVG9TdG9yZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGlmIChieXRlc1dpZHRoID4gOCkgeworICAgICAgICAgICAgYXV0byYg
cmVnVG9TdG9yZSA9IHRoaXMtPnJlZ1RvU3RvcmU8R1BSUmVnPigpOworICAgICAgICAgICAgcmVn
VG9TdG9yZSA9IHRlbXAxPEdQUlJlZz4oKTsKKyAgICAgICAgICAgIG1vdmUodmFsdWUsIHJlZ1Rv
U3RvcmUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgYXV0byYg
c291cmNlID0gbV9zb3VyY2VzW21fY3VycmVudFNvdXJjZSsrXTsKICAgICAgICAgc291cmNlLnR5
cGUgPSBTb3VyY2U6OlR5cGU6OkVuY29kZWRKU1ZhbHVlOwpAQCAtMzEzLDEzICszNDIsMTkgQEAg
cHJpdmF0ZToKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgotICAgIHZv
aWQgY29weShSZWdUeXBlIHJlZykKKyAgICB2b2lkIGNvcHkoUmVnVHlwZSByZWcsIHVuc2lnbmVk
IGJ5dGVzV2lkdGgpCiAgICAgewogICAgICAgICBpZiBjb25zdGV4cHIgKCFoYXNQYWlyT3ApIHsK
ICAgICAgICAgICAgIGF1dG8mIHJlZ1RvU3RvcmUgPSB0aGlzLT5yZWdUb1N0b3JlPFJlZ1R5cGU+
KCk7CiAgICAgICAgICAgICByZWdUb1N0b3JlID0gcmVnOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYnl0ZXNXaWR0aCA+IDgpIHsKKyAgICAg
ICAgICAgIGF1dG8mIHJlZ1RvU3RvcmUgPSB0aGlzLT5yZWdUb1N0b3JlPFJlZ1R5cGU+KCk7Cisg
ICAgICAgICAgICByZWdUb1N0b3JlID0gcmVnOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CiAKICAgICAgICAgYXV0byYgc291cmNlID0gbV9zb3VyY2VzW21fY3VycmVudFNvdXJjZSsr
XTsKICAgICAgICAgc291cmNlLnR5cGUgPSBTb3VyY2U6OlR5cGU6OlJlZzsKQEAgLTMyNywxMSAr
MzYyLDE3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlw
ZT4KLSAgICB2b2lkIHN0b3JlKGludCBzdG9yZU9mZnNldCkKKyAgICB2b2lkIHN0b3JlKGludCBz
dG9yZU9mZnNldCwgdW5zaWduZWQgYnl0ZXNXaWR0aCkKICAgICB7CiAgICAgICAgIGlmIGNvbnN0
ZXhwciAoIWhhc1BhaXJPcCkgewogICAgICAgICAgICAgYXV0byByZWdUb1N0b3JlID0gdGhpcy0+
cmVnVG9TdG9yZTxSZWdUeXBlPigpOwotICAgICAgICAgICAgc3RvcmUocmVnVG9TdG9yZSwgc3Rv
cmVPZmZzZXQpOworICAgICAgICAgICAgc3RvcmUocmVnVG9TdG9yZSwgc3RvcmVPZmZzZXQsIGJ5
dGVzV2lkdGgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpZiAoYnl0ZXNXaWR0aCA+IDgpIHsKKyAgICAgICAgICAgIGF1dG8gcmVnVG9TdG9yZSA9
IHRoaXMtPnJlZ1RvU3RvcmU8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3Rv
cmUsIHN0b3JlT2Zmc2V0LCBieXRlc1dpZHRoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCkBAIC0zNTksOCArNDAwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJvb2wgaXNW
YWxpZE9mZnNldCA9IGlzVmFsaWRMb2FkUGFpckltbTxSZWdUeXBlPihtaW5PZmZzZXQpOwogCiAg
ICAgICAgICAgICBpZiAob2Zmc2V0RGVsdGEgIT0gcmVnaXN0ZXJTaXplIHx8ICghaXNWYWxpZE9m
ZnNldCAmJiBtX2J1ZmZlclJlZ3NBdHRyICE9IEJ1ZmZlclJlZ3M6OkFsbG93TW9kaWZpY2F0aW9u
KSkgewotICAgICAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MSwgcmVnVG9TdG9yZTEpOwotICAg
ICAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MiwgcmVnVG9TdG9yZTIpOworICAgICAgICAgICAg
ICAgIGxvYWQoc3JjT2Zmc2V0MSwgcmVnVG9TdG9yZTEsIGJ5dGVzV2lkdGgpOworICAgICAgICAg
ICAgICAgIGxvYWQoc3JjT2Zmc2V0MiwgcmVnVG9TdG9yZTIsIGJ5dGVzV2lkdGgpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQpIHsKICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyUmVnc0F0dHIgPT0gQnVmZmVyUmVnczo6
QWxsb3dNb2RpZmljYXRpb24pOwpAQCAtMzc4LDcgKzQxOSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoc291cmNlMS50eXBlID09IFNvdXJjZTo6VHlwZTo6
QnVmZmVyT2Zmc2V0KSB7CiAgICAgICAgICAgICByZWdUb1N0b3JlMSA9IHRlbXAxPFJlZ1R5cGU+
KCk7Ci0gICAgICAgICAgICBsb2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUxKTsKKyAgICAgICAg
ICAgIGxvYWQoc3JjT2Zmc2V0MSwgcmVnVG9TdG9yZTEsIGJ5dGVzV2lkdGgpOwogICAgICAgICAg
ICAgaWYgKHNvdXJjZTIudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkVuY29kZWRKU1ZhbHVlKSB7CiAg
ICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChyZWdUeXBlSXNHUFIpIHsKICAgICAgICAgICAg
ICAgICAgICAgcmVnVG9TdG9yZTIgPSB0ZW1wMjxSZWdUeXBlPigpOwpAQCAtMzk4LDcgKzQzOSw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICByZWdUb1N0
b3JlMSA9IHNvdXJjZTEuZ2V0UmVnPFJlZ1R5cGU+KCk7CiAgICAgICAgICAgICByZWdUb1N0b3Jl
MiA9IHRlbXAyPFJlZ1R5cGU+KCk7Ci0gICAgICAgICAgICBsb2FkKHNyY09mZnNldDIsIHJlZ1Rv
U3RvcmUyKTsKKyAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MiwgcmVnVG9TdG9yZTIsIGJ5dGVz
V2lkdGgpOwogCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoc291cmNlMS50eXBl
ID09IFNvdXJjZTo6VHlwZTo6RW5jb2RlZEpTVmFsdWUpIHsKQEAgLTQyOCw4ICs0NjksOCBAQCBw
cml2YXRlOgogICAgICAgICBib29sIGlzVmFsaWRPZmZzZXQgPSBpc1ZhbGlkU3RvcmVQYWlySW1t
PFJlZ1R5cGU+KG1pbk9mZnNldCk7CiAKICAgICAgICAgaWYgKG9mZnNldERlbHRhICE9IHJlZ2lz
dGVyU2l6ZSB8fCAoIWlzVmFsaWRPZmZzZXQgJiYgbV9idWZmZXJSZWdzQXR0ciAhPSBCdWZmZXJS
ZWdzOjpBbGxvd01vZGlmaWNhdGlvbikpIHsKLSAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUx
LCBkc3RPZmZzZXQxKTsKLSAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUyLCBkc3RPZmZzZXQy
KTsKKyAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUxLCBkc3RPZmZzZXQxLCBieXRlc1dpZHRo
KTsKKyAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUyLCBkc3RPZmZzZXQyLCBieXRlc1dpZHRo
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldCkgewog
ICAgICAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlclJlZ3NBdHRyID09IEJ1ZmZlclJlZ3M6OkFs
bG93TW9kaWZpY2F0aW9uKTsKQEAgLTQ2Nyw3ICs1MDgsNyBAQCBwcml2YXRlOgogCiAgICAgICAg
IGlmIChzb3VyY2UudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkJ1ZmZlck9mZnNldCkgewogICAgICAg
ICAgICAgcmVnVG9TdG9yZSA9IHRlbXAxPFJlZ1R5cGU+KCk7Ci0gICAgICAgICAgICBsb2FkKHNy
Y09mZnNldCAtIG1fc3JjT2Zmc2V0QWRqdXN0bWVudCwgcmVnVG9TdG9yZSk7CisgICAgICAgICAg
ICBsb2FkKHNyY09mZnNldCAtIG1fc3JjT2Zmc2V0QWRqdXN0bWVudCwgcmVnVG9TdG9yZSwgc2l6
ZW9mKHZvaWQqKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc291cmNlLnR5cGUgPT0gU291cmNlOjpU
eXBlOjpSZWcpCiAgICAgICAgICAgICByZWdUb1N0b3JlID0gc291cmNlLmdldFJlZzxSZWdUeXBl
PigpOwogICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAocmVnVHlwZUlzR1BSKSB7CkBAIC00NzYs
MjAgKzUxNywyMCBAQCBwcml2YXRlOgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICAgICAgc3RvcmUocmVnVG9TdG9yZSwgbV9k
ZWZlcnJlZFN0b3JlT2Zmc2V0IC0gbV9kc3RPZmZzZXRBZGp1c3RtZW50KTsKKyAgICAgICAgc3Rv
cmUocmVnVG9TdG9yZSwgbV9kZWZlcnJlZFN0b3JlT2Zmc2V0IC0gbV9kc3RPZmZzZXRBZGp1c3Rt
ZW50LCBzaXplb2Yodm9pZCopKTsKICAgICAgICAgbV9jdXJyZW50U291cmNlID0gMDsKICAgICB9
CiAKIHB1YmxpYzoKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEdQUihpbnQgc3JjT2Zmc2V0
KSB7IGxvYWQ8R1BSUmVnPihzcmNPZmZzZXQpOyB9Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGNv
cHlHUFIoR1BSUmVnIGdwcikgeyBjb3B5PEdQUlJlZz4oZ3ByKTsgfQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBtb3ZlQ29uc3RhbnQoRW5jb2RlZEpTVmFsdWUgdmFsdWUpIHsgbW92ZSh2YWx1ZSk7
IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVHUFIoaW50IGRzdE9mZnNldCkgeyBzdG9y
ZTxHUFJSZWc+KGRzdE9mZnNldCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEdQUihp
bnQgc3JjT2Zmc2V0KSB7IGxvYWQ8R1BSUmVnPihzcmNPZmZzZXQsIHNpemVvZih2b2lkKikpOyB9
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNvcHlHUFIoR1BSUmVnIGdwcikgeyBjb3B5PEdQUlJl
Zz4oZ3ByLCBzaXplb2Yodm9pZCopKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtb3ZlQ29u
c3RhbnQoRW5jb2RlZEpTVmFsdWUgdmFsdWUpIHsgbW92ZSh2YWx1ZSwgc2l6ZW9mKHZvaWQqKSk7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVHUFIoaW50IGRzdE9mZnNldCkgeyBzdG9y
ZTxHUFJSZWc+KGRzdE9mZnNldCwgc2l6ZW9mKHZvaWQqKSk7IH0KICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgZmluYWxpemVHUFIoKSB7IGZpbmFsaXplPEdQUlJlZz4oKTsgfQogCi0gICAgQUxXQVlT
X0lOTElORSB2b2lkIGxvYWRGUFIoaW50IHNyY09mZnNldCkgeyBsb2FkPEZQUlJlZz4oc3JjT2Zm
c2V0KTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb3B5RlBSKEZQUlJlZyBncHIpIHsgY29w
eTxGUFJSZWc+KGdwcik7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVGUFIoaW50IGRz
dE9mZnNldCkgeyBzdG9yZTxGUFJSZWc+KGRzdE9mZnNldCk7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgbG9hZEZQUihpbnQgc3JjT2Zmc2V0LCB1bnNpZ25lZCBieXRlc1dpZHRoKSB7IGxvYWQ8
RlBSUmVnPihzcmNPZmZzZXQsIGJ5dGVzV2lkdGgpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IGNvcHlGUFIoRlBSUmVnIGdwciwgdW5zaWduZWQgYnl0ZXNXaWR0aCkgeyBjb3B5PEZQUlJlZz4o
Z3ByLCBieXRlc1dpZHRoKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZUZQUihpbnQg
ZHN0T2Zmc2V0LCB1bnNpZ25lZCBieXRlc1dpZHRoKSB7IHN0b3JlPEZQUlJlZz4oZHN0T2Zmc2V0
LCBieXRlc1dpZHRoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaW5hbGl6ZUZQUigpIHsg
ZmluYWxpemU8RlBSUmVnPigpOyB9CiAKIHByb3RlY3RlZDoKQEAgLTUwMiwyNCArNTQzLDMyIEBA
IHByb3RlY3RlZDoKICAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgbW92ZShFbmNvZGVk
SlNWYWx1ZSwgR1BSUmVnKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICNlbmRp
ZgogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWQoaW50IG9mZnNldCwgR1BSUmVnIGRlc3Qp
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWQoaW50IG9mZnNldCwgR1BSUmVnIGRlc3QsIHVu
c2lnbmVkIGJ5dGVzV2lkdGgpCiAgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVzV2lk
dGgsIGJ5dGVzV2lkdGggPT0gc2l6ZW9mKHZvaWQqKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIo
QWRkcmVzcyhtX3NyY0J1ZmZlckdQUiwgb2Zmc2V0KSwgZGVzdCk7CiAgICAgfQogCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHN0b3JlKEdQUlJlZyBzcmMsIGludCBvZmZzZXQpCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHN0b3JlKEdQUlJlZyBzcmMsIGludCBvZmZzZXQsIHVuc2lnbmVkIGJ5dGVz
V2lkdGgpCiAgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVzV2lkdGgsIGJ5dGVzV2lk
dGggPT0gc2l6ZW9mKHZvaWQqKSk7CiAgICAgICAgIG1faml0LnN0b3JlUHRyKHNyYywgQWRkcmVz
cyhtX2RzdEJ1ZmZlckdQUiwgb2Zmc2V0KSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2
b2lkIGxvYWQoaW50IG9mZnNldCwgRlBSUmVnIGRlc3QpCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IGxvYWQoaW50IG9mZnNldCwgRlBSUmVnIGRlc3QsIHVuc2lnbmVkIGJ5dGVzV2lkdGgpCiAgICAg
ewotICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEFkZHJlc3MobV9zcmNCdWZmZXJHUFIsIG9mZnNl
dCksIGRlc3QpOworICAgICAgICBpZiAoYnl0ZXNXaWR0aCA+IDgpCisgICAgICAgICAgICBtX2pp
dC5sb2FkVmVjdG9yKEFkZHJlc3MobV9zcmNCdWZmZXJHUFIsIG9mZnNldCksIGRlc3QpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEFkZHJlc3MobV9zcmNCdWZm
ZXJHUFIsIG9mZnNldCksIGRlc3QpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
dG9yZShGUFJSZWcgc3JjLCBpbnQgb2Zmc2V0KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9y
ZShGUFJSZWcgc3JjLCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBieXRlc1dpZHRoKQogICAgIHsKLSAg
ICAgICAgbV9qaXQuc3RvcmVEb3VibGUoc3JjLCBBZGRyZXNzKG1fZHN0QnVmZmVyR1BSLCBvZmZz
ZXQpKTsKKyAgICAgICAgaWYgKGJ5dGVzV2lkdGggPiA4KQorICAgICAgICAgICAgbV9qaXQuc3Rv
cmVWZWN0b3Ioc3JjLCBBZGRyZXNzKG1fZHN0QnVmZmVyR1BSLCBvZmZzZXQpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUoc3JjLCBBZGRyZXNzKG1fZHN0QnVm
ZmVyR1BSLCBvZmZzZXQpKTsKICAgICB9CiAKICNpZiBDUFUoQVJNNjQpCkBAIC01NTMsOSArNjAy
LDYgQEAgcHJvdGVjdGVkOgogICAgIEZQUlJlZyBtX3RlbXAyRlBSOwogCiBwcml2YXRlOgotICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50IGdwclNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihD
UFVSZWdpc3RlcikpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGZwclNpemUgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihkb3VibGUpKTsKLQogICAgIC8vIFRoZXNlIHBvaW50IHRvIHdoaWNo
IHJlZ2lzdGVyIHRvIHVzZS4KICAgICBHUFJSZWcgbV9ncHJUb1N0b3JlIHsgSW52YWxpZEdQUlJl
ZyB9OyAvLyBPbmx5IHVzZWQgd2hlbiAhaGFzUGFpck9wLgogICAgIEZQUlJlZyBtX2ZwclRvU3Rv
cmUgeyBJbnZhbGlkRlBSUmVnIH07IC8vIE9ubHkgdXNlZCB3aGVuICFoYXNQYWlyT3AuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCmluZGV4IDUyYTEzYWFhZmI3Ny4uMTdiZWQzNWIwNzM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtNDEwLDkgKzQxMCwxMSBAQCBw
dWJsaWM6CiAjaWYgIU9TKFdJTkRPV1MpCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJ
U1RFUlMgNnUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgNXUKKyNk
ZWZpbmUgU0laRV9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDV1CiAjZWxzZQogI2RlZmluZSBO
VU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDR1CiAjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVf
U0FWRVNfUkVHSVNURVJTIDd1CisjZGVmaW5lIFNJWkVfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVS
UyA3dQogI2VuZGlmCiAKIGNsYXNzIEdQUkluZm8gewpAQCAtNTUyLDYgKzU1NCw3IEBAIHN0YXRp
Y19hc3NlcnQoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyID09IFg4NlJlZ2lzdGVyczo6ZWR4KTsK
ICNpZiBDUFUoQVJNX1RIVU1CMikKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVS
UyA0dQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAydQorI2RlZmlu
ZSBTSVpFX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMnUKIAogY2xhc3MgR1BSSW5mbyB7CiBw
dWJsaWM6CkBAIC02MjAsNyArNjIzLDggQEAgcHVibGljOgogI2lmIENQVShBUk02NCkKICNkZWZp
bmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA4dQogLy8gQ2FsbGVlIFNhdmVzIGluY2x1
ZGVzIHgxOS4ueDI4IGFuZCBGUCByZWdpc3RlcnMgcTguLnExNQotI2RlZmluZSBOVU1CRVJfT0Zf
Q0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAxOHUKKyNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZF
U19SRUdJU1RFUlMgKDEwdSs4dSkKKyNkZWZpbmUgU0laRV9PRl9DQUxMRUVfU0FWRVNfUkVHSVNU
RVJTICgxMHUrOHUqMikKIAogY2xhc3MgR1BSSW5mbyB7CiBwdWJsaWM6CkBAIC03NDEsNiArNzQ1
LDcgQEAgcHVibGljOgogI2lmIENQVShNSVBTKQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRf
UkVHSVNURVJTIDR1CiAjZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDJ1
CisjZGVmaW5lIFNJWkVfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAydQogCiBjbGFzcyBHUFJJ
bmZvIHsKIHB1YmxpYzoKQEAgLTgyMCw2ICs4MjUsNyBAQCBwdWJsaWM6CiAKICNkZWZpbmUgTlVN
QkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA4dQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NB
VkVTX1JFR0lTVEVSUyAyM3UKKyNkZWZpbmUgU0laRV9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJT
IDIzdQogCiBjbGFzcyBHUFJJbmZvIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAKaW5kZXggZWQ4MzAzZGU0MWI1Li5k
NGY3Yzk4M2UyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0
ZXJBdE9mZnNldExpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0
ZXJBdE9mZnNldExpc3QuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoQVNTRU1C
TEVSKQogCisjaW5jbHVkZSAiQjNXaWR0aC5oIgorCiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzksMTYgKzQxLDE3IEBAIFJlZ2lzdGVyQXRPZmZzZXRM
aXN0OjpSZWdpc3RlckF0T2Zmc2V0TGlzdCgpIHsgfQogUmVnaXN0ZXJBdE9mZnNldExpc3Q6OlJl
Z2lzdGVyQXRPZmZzZXRMaXN0KFJlZ2lzdGVyU2V0IHJlZ2lzdGVyU2V0LCBPZmZzZXRCYXNlVHlw
ZSBvZmZzZXRCYXNlVHlwZSkKICAgICA6IG1fcmVnaXN0ZXJzKHJlZ2lzdGVyU2V0Lm51bWJlck9m
U2V0UmVnaXN0ZXJzKCkpCiB7Ci0gICAgc2l6ZV90IG51bWJlck9mUmVnaXN0ZXJzID0gcmVnaXN0
ZXJTZXQubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKTsKKyAgICBzaXplX3QgbnVtYmVyT2ZGUFJzID0g
cmVnaXN0ZXJTZXQubnVtYmVyT2ZTZXRGUFJzKCk7CisgICAgc2l6ZV90IG51bWJlck9mR1BScyA9
IHJlZ2lzdGVyU2V0Lm51bWJlck9mU2V0UmVnaXN0ZXJzKCkgLSBudW1iZXJPZkZQUnM7CiAgICAg
cHRyZGlmZl90IG9mZnNldCA9IDA7CiAgICAgCiAgICAgaWYgKG9mZnNldEJhc2VUeXBlID09IEZy
YW1lUG9pbnRlckJhc2VkKQotICAgICAgICBvZmZzZXQgPSAtKHN0YXRpY19jYXN0PHB0cmRpZmZf
dD4obnVtYmVyT2ZSZWdpc3RlcnMpICogc2l6ZW9mKENQVVJlZ2lzdGVyKSk7CisgICAgICAgIG9m
ZnNldCA9IC0oc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihudW1iZXJPZkdQUnMpICogQjM6OmJ5dGVz
Rm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpHUCkpICsgc3RhdGljX2Nhc3Q8cHRy
ZGlmZl90PihudW1iZXJPZkZQUnMpICogQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2
ZVdpZHRoKEIzOjpGUCkpKTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICByZWdpc3Rl
clNldC5mb3JFYWNoKFsmXSAoUmVnIHJlZykgewogICAgICAgICBtX3JlZ2lzdGVyc1tpbmRleF0g
PSBSZWdpc3RlckF0T2Zmc2V0KHJlZywgb2Zmc2V0KTsKLSAgICAgICAgb2Zmc2V0ICs9IHNpemVv
ZihDUFVSZWdpc3Rlcik7CisgICAgICAgIG9mZnNldCArPSBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6
Y29uc2VydmF0aXZlV2lkdGgoQjM6OmJhbmtGb3JSZWcocmVnKSkpOwogICAgICAgICArK2luZGV4
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwCmluZGV4IDIyNGUyNTM0OTM0Yi4uOTNiNmZjYzM5Njgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3IuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdW5zaWduZWQgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKEFzc2VtYmx5SGVs
cGUKICAgICBpZiAoIXVzZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgCi0gICAgdW5zaWduZWQgc3RhY2tPZmZzZXQgPSAodXNlZFJlZ2lz
dGVycy5udW1iZXJPZlNldFJlZ2lzdGVycygpKSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7Cisg
ICAgdW5zaWduZWQgc3RhY2tPZmZzZXQgPSAodXNlZFJlZ2lzdGVycy5udW1iZXJPZlNldEdQUnMo
KSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpICsgKHVzZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRG
UFJzKCkgKiBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkp
OwogICAgIHN0YWNrT2Zmc2V0ICs9IGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2s7CiAgICAgc3RhY2tP
ZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBz
dGFja09mZnNldCk7CiAgICAgaml0LnN1YlB0cigKQEAgLTE4NiwxMiArMTg2LDE0IEBAIHVuc2ln
bmVkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9y
Q2FsbChBc3NlbWJseUhlbHBlCiAgICAgfQogICAgIHNwb29sZXIuZmluYWxpemVHUFIoKTsKIAor
ICAgIHVuc2lnbmVkIGZwckNvdW50ID0gMDsKICAgICBmb3IgKEZQUlJlZyByZWcgPSBNYWNyb0Fz
c2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQ
UmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJlZykpIHsK
ICAgICAgICAgaWYgKHVzZWRSZWdpc3RlcnMuZ2V0KHJlZykpIHsKLSAgICAgICAgICAgIHNwb29s
ZXIuc3RvcmVGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZXh0cmFCeXRlc0F0VG9w
T2ZTdGFjayArIChjb3VudCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKSB9KTsKLSAgICAgICAg
ICAgIGNvdW50Kys7CisgICAgICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKHsgcmVnLCBzdGF0aWNf
Y2FzdDxwdHJkaWZmX3Q+KGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAoY291bnQgKiBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpKSArIChmcHJDb3VudCAqIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25z
ZXJ2YXRpdmVXaWR0aChCMzo6RlApKSkpIH0sIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2
YXRpdmVXaWR0aChCMzo6RlApKSk7CisgICAgICAgICAgICBmcHJDb3VudCsrOwogICAgICAgICB9
CiAgICAgfQorICAgIGNvdW50ICs9IGZwckNvdW50OwogICAgIHNwb29sZXIuZmluYWxpemVGUFIo
KTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKGNvdW50ID09IHVzZWRSZWdpc3RlcnMubnVtYmVyT2ZT
ZXRSZWdpc3RlcnMoKSk7CkBAIC0yMTksMTYgKzIyMSwxOCBAQCB2b2lkIFNjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvcjo6cmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoQXNzZW1ibHlIZWxw
ZXJzJgogICAgIH0KICAgICBzcG9vbGVyLmZpbmFsaXplR1BSKCk7CiAKKyAgICB1bnNpZ25lZCBm
cHJDb3VudCA9IDA7CiAgICAgZm9yIChGUFJSZWcgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0
RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IHJl
ZyA9IE1hY3JvQXNzZW1ibGVyOjpuZXh0RlBSZWdpc3RlcihyZWcpKSB7CiAgICAgICAgIGlmICh1
c2VkUmVnaXN0ZXJzLmdldChyZWcpKSB7CiAgICAgICAgICAgICBpZiAoIWlnbm9yZS5nZXQocmVn
KSkKLSAgICAgICAgICAgICAgICBzcG9vbGVyLmxvYWRGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0
cmRpZmZfdD4oZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChzaXplb2YoRW5jb2RlZEpTVmFsdWUp
ICogY291bnQpKSB9KTsKLSAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgICAgICAgICAgc3Bv
b2xlci5sb2FkRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGV4dHJhQnl0ZXNBdFRv
cE9mU3RhY2sgKyAoY291bnQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSArIChmcHJDb3VudCAq
IEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSkpIH0sIEIz
OjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CisgICAgICAg
ICAgICBmcHJDb3VudCsrOwogICAgICAgICB9CiAgICAgfQorICAgIGNvdW50ICs9IGZwckNvdW50
OwogICAgIHNwb29sZXIuZmluYWxpemVGUFIoKTsKIAotICAgIHVuc2lnbmVkIHN0YWNrT2Zmc2V0
ID0gKHVzZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSkgKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpOworICAgIHVuc2lnbmVkIHN0YWNrT2Zmc2V0ID0gKHVzZWRSZWdpc3RlcnMubnVt
YmVyT2ZTZXRHUFJzKCkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSArICh1c2VkUmVnaXN0ZXJz
Lm51bWJlck9mU2V0RlBScygpICogQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdp
ZHRoKEIzOjpGUCkpKTsKICAgICBzdGFja09mZnNldCArPSBleHRyYUJ5dGVzQXRUb3BPZlN0YWNr
OwogICAgIHN0YWNrT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25t
ZW50Qnl0ZXMoKSwgc3RhY2tPZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NpbWRJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NpbWRJbmZv
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NTRlODMyMTJkNGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NpbWRJbmZvLmgK
QEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKwordHlwZWRlZiB1bmlvbiB2
MTI4X3UgeworICAgIHVpbnQ4X3QgdTh4MTZbMTZdOworICAgIHVpbnQxNl90IHUxNng4WzhdOwor
ICAgIHVpbnQzMl90IHUzMng0WzRdOworICAgIHVpbnQ2NF90IHU2NHgyWzJdID0geyAwLCAwIH07
Cit9IHYxMjhfdDsKKworZW51bSBjbGFzcyBTaW1kTGFuZUludGVycHJldGF0aW9uIDogdWludDhf
dCB7CisgICAgdjEyOCwgaTh4MTYsIGkxNng4LCBpMzJ4NCwgaTY0eDIsIGYzMng0LCBmNjR4Mgor
fTsKKworZW51bSBjbGFzcyBTaW1kU2lnbkV4dGVuZE1vZGUgOiB1aW50OF90IHsKKyAgICBOQSwg
UywgVQorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L1dlYkFzc2VtYmx5LmFzbQppbmRleCAzZTUzNzkwNTIyNzEuLmNhM2U4ZDBlOTE4OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCkBAIC0zOSw2ICsz
OSw3IEBAIGVsc2UKIGVuZAogY29uc3QgTnVtYmVyT2ZXYXNtQXJndW1lbnRGUFJzID0gOAogY29u
c3QgTnVtYmVyT2ZXYXNtQXJndW1lbnRzID0gTnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICsgTnVt
YmVyT2ZXYXNtQXJndW1lbnRGUFJzCitjb25zdCBXYXNtQXJndW1lbnRzU2l6ZUluUmVnaXN0ZXJz
ID0gTnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICsgMipOdW1iZXJPZldhc21Bcmd1bWVudEZQUnMK
IAogIyBBbGwgY2FsbGVlIHNhdmVzIG11c3QgbWF0Y2ggdGhlIGRlZmluaXRpb24gaW4gV2FzbUNh
bGxlZS5jcHAKIApAQCAtNzAsMTQgKzcxLDE0IEBAIG1hY3JvIGZvckVhY2hBcmd1bWVudEdQUihm
bikKIGVuZAogCiBtYWNybyBmb3JFYWNoQXJndW1lbnRGUFIoZm4pCi0gICAgZm4oKE51bWJlck9m
V2FzbUFyZ3VtZW50R1BScyArIDApICogOCwgd2ZhMCkKLSAgICBmbigoTnVtYmVyT2ZXYXNtQXJn
dW1lbnRHUFJzICsgMSkgKiA4LCB3ZmExKQotICAgIGZuKChOdW1iZXJPZldhc21Bcmd1bWVudEdQ
UnMgKyAyKSAqIDgsIHdmYTIpCi0gICAgZm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDMp
ICogOCwgd2ZhMykKLSAgICBmbigoTnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICsgNCkgKiA4LCB3
ZmE0KQotICAgIGZuKChOdW1iZXJPZldhc21Bcmd1bWVudEdQUnMgKyA1KSAqIDgsIHdmYTUpCi0g
ICAgZm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDYpICogOCwgd2ZhNikKLSAgICBmbigo
TnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICsgNykgKiA4LCB3ZmE3KQorICAgIGZuKChOdW1iZXJP
Zldhc21Bcmd1bWVudEdQUnMgKyAwICogMikgKiA4LCB3ZmEwKQorICAgIGZuKChOdW1iZXJPZldh
c21Bcmd1bWVudEdQUnMgKyAxICogMikgKiA4LCB3ZmExKQorICAgIGZuKChOdW1iZXJPZldhc21B
cmd1bWVudEdQUnMgKyAyICogMikgKiA4LCB3ZmEyKQorICAgIGZuKChOdW1iZXJPZldhc21Bcmd1
bWVudEdQUnMgKyAzICogMikgKiA4LCB3ZmEzKQorICAgIGZuKChOdW1iZXJPZldhc21Bcmd1bWVu
dEdQUnMgKyA0ICogMikgKiA4LCB3ZmE0KQorICAgIGZuKChOdW1iZXJPZldhc21Bcmd1bWVudEdQ
UnMgKyA1ICogMikgKiA4LCB3ZmE1KQorICAgIGZuKChOdW1iZXJPZldhc21Bcmd1bWVudEdQUnMg
KyA2ICogMikgKiA4LCB3ZmE2KQorICAgIGZuKChOdW1iZXJPZldhc21Bcmd1bWVudEdQUnMgKyA3
ICogMikgKiA4LCB3ZmE3KQogZW5kCiAKICMgSGVscGVyIG1hY3JvcwpAQCAtMTM1LDcgKzEzNiw3
IEBAIG1hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JQcm9sb2d1ZShjb2RlQmxvY2tSZWdpc3RlcikK
ICAgICAgICAgICAgIGVuZCkKIAogICAgICAgICAgICAgZm9yRWFjaEFyZ3VtZW50RlBSKG1hY3Jv
IChvZmZzZXQsIGZwcikKLSAgICAgICAgICAgICAgICBsb2FkZCAtb2Zmc2V0IC0gOCAtIENhbGxl
ZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyAqIDhbY2ZyXSwgZnByCisgICAgICAgICAgICAg
ICAgbG9hZHYgLW9mZnNldCAtIDggLSBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMg
KiA4W2Nmcl0sIGZwcgogICAgICAgICAgICAgZW5kKQogCiAgICAgICAgICAgICByZXN0b3JlQ2Fs
bGVlU2F2ZXNVc2VkQnlXYXNtKCkKQEAgLTMxNiw3ICszMTcsNyBAQCBtYWNybyB3YXNtUHJvbG9n
dWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRXYXNtSW5zdGFuY2UpCiAg
ICAgZW5kKQogCiAgICAgZm9yRWFjaEFyZ3VtZW50RlBSKG1hY3JvIChvZmZzZXQsIGZwcikKLSAg
ICAgICAgc3RvcmVkIGZwciwgLW9mZnNldCAtIDggLSBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxS
ZWdpc3RlcnMgKiA4W2Nmcl0KKyAgICAgICAgc3RvcmV2IGZwciwgLW9mZnNldCAtIDggLSBDYWxs
ZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKiA4W2Nmcl0KICAgICBlbmQpCiAKICAgICBj
aGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUod3MwKQpAQCAtMzI2LDExICszMjcsMTEgQEAgbWFj
cm8gd2FzbVByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBsb2FkV2Fz
bUluc3RhbmNlKQogICAgIG1vdmUgMCwgUEMKIAogICAgIGxvYWRpIFdhc206OkxMSW50Q2FsbGVl
OjptX251bVZhcnNbd3MwXSwgd3MxCi0gICAgc3ViaSBOdW1iZXJPZldhc21Bcmd1bWVudHMgKyBD
YWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMsIHdzMQorICAgIHN1YmkgV2FzbUFyZ3Vt
ZW50c1NpemVJblJlZ2lzdGVycyArIENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycywg
d3MxCiAgICAgYnRpeiB3czEsIC56ZXJvSW5pdGlhbGl6ZUxvY2Fsc0RvbmUKICAgICBuZWdpIHdz
MQogICAgIHN4aTJxIHdzMSwgd3MxCi0gICAgbGVhcCAoTnVtYmVyT2ZXYXNtQXJndW1lbnRzICsg
Q2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzICsgMSkgKiAtOFtjZnJdLCB3czAKKyAg
ICBsZWFwIChXYXNtQXJndW1lbnRzU2l6ZUluUmVnaXN0ZXJzICsgQ2FsbGVlU2F2ZVNwYWNlQXNW
aXJ0dWFsUmVnaXN0ZXJzICsgMSkgKiAtOFtjZnJdLCB3czAKIC56ZXJvSW5pdGlhbGl6ZUxvY2Fs
c0xvb3A6CiAgICAgYWRkcSAxLCB3czEKICAgICBzdG9yZXEgMCwgW3dzMCwgd3MxLCA4XQpAQCAt
NDMxLDYgKzQzMiwxMyBAQCBtYWNybyBtbG9hZGQoY3R4LCBmaWVsZCwgZHN0KQogICAgIGVuZCkK
IGVuZAogCittYWNybyBtbG9hZHYoY3R4LCBmaWVsZCwgZHN0KQorICAgIHdnZXRzKGN0eCwgZmll
bGQsIHQ1KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoY3R4LCB0NSwgbWFjcm8gKGZyb20p
CisgICAgICAgIGxvYWR2IGZyb20sIGRzdAorICAgIGVuZCkKK2VuZAorCiAjIFR5cGVkIHJldHVy
bnMKIAogbWFjcm8gcmV0dXJucShjdHgsIHZhbHVlKQpAQCAtNDU3LDYgKzQ2NSwxMiBAQCBtYWNy
byByZXR1cm5kKGN0eCwgdmFsdWUpCiAgICAgZGlzcGF0Y2goY3R4KQogZW5kCiAKK21hY3JvIHJl
dHVybnYoY3R4LCB2YWx1ZSkKKyAgICB3Z2V0cyhjdHgsIG1fZHN0LCB0NSkKKyAgICBzdG9yZXYg
dmFsdWUsIFtjZnIsIHQ1LCA4XQorICAgIGRpc3BhdGNoKGN0eCkKK2VuZAorCiAjIFdhc20gd3Jh
cHBlciBvZiBnZXQvZ2V0dSB0aGF0IG9wZXJhdGUgb24gY3R4CiBtYWNybyB3Z2V0cyhjdHgsIGZp
ZWxkLCBkc3QpCiAgICAgY3R4KG1hY3JvKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2l6ZSkK
QEAgLTYyMSwxMCArNjM1LDEwIEBAIF93YXNtX2VudGVyOgogICAgIGNoZWNrU3RhY2tQb2ludGVy
QWxpZ25tZW50KHQyLCAweGRlYWQwMGUxKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MiAg
ICAgICAgICAgICAgICAvLyB0MjxDb2RlQmxvY2s+ID0gY2ZyLkNvZGVCbG9jawogICAgIGxvYWRp
IFdhc206OkxMSW50Q2FsbGVlOjptX251bVZhcnNbdDJdLCB0MiAgICAgIC8vIHQyPHNpemVfdD4g
PSB0MjxDb2RlQmxvY2s+Lm1fbnVtVmFycwotICAgIHN1YnEgQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0
dWFsUmVnaXN0ZXJzICsgTnVtYmVyT2ZXYXNtQXJndW1lbnRzLCB0MgorICAgIHN1YnEgQ2FsbGVl
U2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzICsgV2FzbUFyZ3VtZW50c1NpemVJblJlZ2lzdGVy
cywgdDIKICAgICBidGl6IHQyLCAub3BFbnRlckRvbmUKICAgICBtb3ZlIGNmciwgdDEKLSAgICBz
dWJxIENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyAqIDggKyBOdW1iZXJPZldhc21B
cmd1bWVudHMgKiA4LCB0MQorICAgIHN1YnEgQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0
ZXJzICogOCArIFdhc21Bcmd1bWVudHNTaXplSW5SZWdpc3RlcnMgKiA4LCB0MQogICAgIG5lZ2kg
dDIKICAgICBzeGkycSB0MiwgdDIKIC5vcEVudGVyTG9vcDoKQEAgLTYzOCw2ICs2NTIsMTEgQEAg
dW5wcmVmaXhlZFdhc21PcCh3YXNtX25vcCwgV2FzbU5vcCwgbWFjcm8oY3R4KQogICAgIGRpc3Bh
dGNoKGN0eCkKIGVuZCkKIAordW5wcmVmaXhlZFdhc21PcCh3YXNtX2JyZWFrLCBXYXNtQnJlYWss
IG1hY3JvKGN0eCkKKyAgICBicmVhaworICAgIGRpc3BhdGNoKGN0eCkKK2VuZCkKKwogd2FzbU9w
KGxvb3BfaGludCwgV2FzbUxvb3BIaW50LCBtYWNybyhjdHgpCiAgICAgY2hlY2tTd2l0Y2hUb0pJ
VEZvckxvb3AoKQogICAgIGRpc3BhdGNoKGN0eCkKQEAgLTcwMyw3ICs3MjIsNyBAQCB1bnByZWZp
eGVkV2FzbU9wKHdhc21fcmV0LCBXYXNtUmV0LCBtYWNybyhjdHgpCiAgICAgICAgIGxvYWRxIC1v
ZmZzZXQgLSA4IC0gQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzICogOFtjZnJdLCBn
cHIKICAgICBlbmQpCiAgICAgZm9yRWFjaEFyZ3VtZW50RlBSKG1hY3JvIChvZmZzZXQsIGZwcikK
LSAgICAgICAgbG9hZGQgLW9mZnNldCAtIDggLSBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdp
c3RlcnMgKiA4W2Nmcl0sIGZwcgorICAgICAgICBsb2FkdiAtb2Zmc2V0IC0gOCAtIENhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyAqIDhbY2ZyXSwgZnByCiAgICAgZW5kKQogICAgIGRv
UmV0dXJuKCkKIGVuZCkKQEAgLTc3Myw3ICs3OTIsNyBAQCBtYWNybyBzbG93UGF0aEZvcldhc21D
YWxsKGN0eCwgc2xvd1BhdGgsIHN0b3JlV2FzbUluc3RhbmNlKQogICAgICAgICAgICAgbHNoaWZ0
aSAzLCB3czEKICAgICAgICAgICAgIHN1YnAgY2ZyLCB3czEsIHNwCiAKLSAgICAgICAgICAgIHdn
ZXR1KGN0eCwgbV9udW1iZXJPZlN0YWNrQXJncywgd3MxKQorICAgICAgICAgICAgd2dldHUoY3R4
LCBtX3NpemVPZlN0YWNrQXJncywgd3MxKQogCiAgICAgICAgICAgICAjIFByZXNlcnZlIHRoZSBj
dXJyZW50IGluc3RhbmNlCiAgICAgICAgICAgICBtb3ZlIHdhc21JbnN0YW5jZSwgUEIKQEAgLTc4
Nyw3ICs4MDYsNyBAQCBtYWNybyBzbG93UGF0aEZvcldhc21DYWxsKGN0eCwgc2xvd1BhdGgsIHN0
b3JlV2FzbUluc3RhbmNlKQogICAgICAgICAgICAgZW5kKQogCiAgICAgICAgICAgICBmb3JFYWNo
QXJndW1lbnRGUFIobWFjcm8gKG9mZnNldCwgZnByKQotICAgICAgICAgICAgICAgIGxvYWRkIENh
bGxGcmFtZUhlYWRlclNpemUgKyA4ICsgb2Zmc2V0W3NwLCB3czEsIDhdLCBmcHIKKyAgICAgICAg
ICAgICAgICBsb2FkdiBDYWxsRnJhbWVIZWFkZXJTaXplICsgOCArIG9mZnNldFtzcCwgd3MxLCA4
XSwgZnByCiAgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgICAgIGFkZHAgQ2FsbGVyRnJhbWVB
bmRQQ1NpemUsIHNwCkBAIC04NDIsMTQgKzg2MSwxNCBAQCBtYWNybyBzbG93UGF0aEZvcldhc21D
YWxsKGN0eCwgc2xvd1BhdGgsIHN0b3JlV2FzbUluc3RhbmNlKQogCiAgICAgICAgICAgICAjIEFy
Z3VtZW50IHJlZ2lzdGVycyBhcmUgYWxzbyByZXR1cm4gcmVnaXN0ZXJzLCBzbyB0aGV5IG11c3Qg
YmUgc3RvcmVkIHRvIHRoZSBzdGFjawogICAgICAgICAgICAgIyBpbiBjYXNlIHRoZXkgY29udGFp
biByZXR1cm4gdmFsdWVzLgotICAgICAgICAgICAgd2dldHUoY3R4LCBtX251bWJlck9mU3RhY2tB
cmdzLCB3czApCisgICAgICAgICAgICB3Z2V0dShjdHgsIG1fc2l6ZU9mU3RhY2tBcmdzLCB3czAp
CiAgICAgICAgICAgICBtb3ZlIG1lbW9yeUJhc2UsIFBDCiAgICAgICAgICAgICBmb3JFYWNoQXJn
dW1lbnRHUFIobWFjcm8gKG9mZnNldCwgZ3ByKQogICAgICAgICAgICAgICAgIHN0b3JlcSBncHIs
IENhbGxGcmFtZUhlYWRlclNpemUgKyA4ICsgb2Zmc2V0W3dzMSwgd3MwLCA4XQogICAgICAgICAg
ICAgZW5kKQogCiAgICAgICAgICAgICBmb3JFYWNoQXJndW1lbnRGUFIobWFjcm8gKG9mZnNldCwg
ZnByKQotICAgICAgICAgICAgICAgIHN0b3JlZCBmcHIsIENhbGxGcmFtZUhlYWRlclNpemUgKyA4
ICsgb2Zmc2V0W3dzMSwgd3MwLCA4XQorICAgICAgICAgICAgICAgIHN0b3JldiBmcHIsIENhbGxG
cmFtZUhlYWRlclNpemUgKyA4ICsgb2Zmc2V0W3dzMSwgd3MwLCA4XQogICAgICAgICAgICAgZW5k
KQogCiAgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09m
ZnNldFtjZnJdLCBQQwpAQCAtMjkxNSwzICsyOTM0LDEyIEBAIGVuZCkKIGNvbW1vbldhc21PcCh3
YXNtX2NhdGNoX2FsbF9ub190bHMsIFdhc21DYXRjaEFsbCwgbWFjcm8oKSBlbmQsIG1hY3JvKGN0
eCkKICAgICBjYXRjaEFsbEltcGwoY3R4LCBtYWNybyhpbnN0YW5jZSkgZW5kKQogZW5kKQorCit3
YXNtT3Aoc2ltZF9leHRyYWN0X2xhbmVfaTh4MTZfdSwgV2FzbVNpbWRFeHRyYWN0TGFuZUk4eDE2
VSwgbWFjcm8oY3R4KQorICAgIG1sb2FkdihjdHgsIG1fdiwgZnQwKQorICAgIHdnZXR1KGN0eCwg
bV9sYW5lLCB0MCkKKyAgICBzcGxhdF9sYW5lX2J5dGUgdDAsIGZ0MQorICAgIHN3aXp6bGVfYnl0
ZSBmdDEsIGZ0MAorICAgIGV4dHJhY3RfbGFuZV9ieXRlIDAsIGZ0MCwgdDAKKyAgICByZXR1cm5p
KGN0eCwgdDApCitlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hcm02NC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJi
CmluZGV4IDFhZGQ1NDBkODM1Yy4uYzFmYjdjNDBhYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9hcm02NC5yYgpAQCAtMTAyLDYgKzEwMiw4IEBAIGRlZiBhcm02NEZQUk5h
bWUobmFtZSwga2luZCkKICAgICB3aGVuIDpmbG9hdAogICAgICAgICAicyIgKyBuYW1lWzEuLi0x
XQogICAgIHdoZW4gOnZlY3RvcgorICAgICAgICAicSIgKyBuYW1lWzEuLi0xXQorICAgIHdoZW4g
OnZlY3Rvcl9zdWZmaXhlZAogICAgICAgICAidiIgKyBuYW1lWzEuLi0xXQogICAgIGVsc2UKICAg
ICAgICAgcmFpc2UgImJhZCBGUFIga2luZCAje2tpbmR9IgpAQCAtMTc3LDYgKzE3OSwxNyBAQCBj
bGFzcyBSZWdpc3RlcklECiAgICAgICAgICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyIG5hbWUgI3tA
bmFtZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKICAgICAgICAgZW5kCiAgICAgZW5kCisgICAg
CisgICAgZGVmIGFybTY0T3BlcmFuZFN1ZmZpeGVkKCkKKyAgICAgICAgYmFzZSA9IHNlbGYuYXJt
NjRPcGVyYW5kKEBzdWZmaXhfa2luZCkKKyAgICAgICAgYmFzZSArIEBzdWZmaXgKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgd2l0aFN1ZmZpeChzdWZmaXhfa2luZCwgc3VmZml4KQorICAgICAgICBA
c3VmZml4X2tpbmQgPSBzdWZmaXhfa2luZAorICAgICAgICBAc3VmZml4ID0gc3VmZml4LmVtcHR5
PyA/ICIiIDogIi4je3N1ZmZpeH0iCisgICAgICAgIHNlbGYKKyAgICBlbmQKIGVuZAogCiBjbGFz
cyBGUFJlZ2lzdGVySUQKQEAgLTIxNywxMiArMjMwLDQzIEBAIGNsYXNzIEZQUmVnaXN0ZXJJRAog
ICAgICAgICBlbHNlICJCYWQgcmVnaXN0ZXIgbmFtZSAje0BuYW1lfSBhdCAje2NvZGVPcmlnaW5T
dHJpbmd9IgogICAgICAgICBlbmQKICAgICBlbmQKKyAgICAKKyAgICBkZWYgYXJtNjRPcGVyYW5k
U3VmZml4ZWQoKQorICAgICAgICBiYXNlID0gc2VsZi5hcm02NE9wZXJhbmQoQHN1ZmZpeF9raW5k
KQorICAgICAgICBpbmRleCA9IEBpbmRleCA9PSA6bm9uZSA/ICIiIDogIiBbICN7QGluZGV4LmFy
bTY0SW5kZXgoKX0gXSIKKyAgICAgICAgYmFzZSArIEBzdWZmaXggKyBpbmRleAorICAgIGVuZAor
ICAgIAorICAgIGRlZiB3aXRoU3VmZml4KHN1ZmZpeF9raW5kLCBzdWZmaXgpCisgICAgICAgIEBz
dWZmaXhfa2luZCA9IHN1ZmZpeF9raW5kCisgICAgICAgIEBzdWZmaXggPSBzdWZmaXguZW1wdHk/
ID8gIiIgOiAiLiN7c3VmZml4fSIKKyAgICAgICAgQGluZGV4ID0gOm5vbmUKKyAgICAgICAgc2Vs
ZgorICAgIGVuZAorICAgIAorICAgIGRlZiB3aXRoSW5kZXgoaW5kZXgpCisgICAgICAgIHJhaXNl
IHVubGVzcyBpbmRleC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgQGluZGV4ID0gaW5kZXgKKyAg
ICAgICAgc2VsZgorICAgIGVuZAogZW5kCiAKIGNsYXNzIEltbWVkaWF0ZQogICAgIGRlZiBhcm02
NE9wZXJhbmQoa2luZCkKICAgICAgICAgIlwjI3t2YWx1ZX0iCiAgICAgZW5kCisgICAgCisgICAg
ZGVmIGFybTY0T3BlcmFuZFN1ZmZpeGVkKCkKKyAgICAgICAgIlwjI3t2YWx1ZX0iCisgICAgZW5k
CisgICAgCisgICAgZGVmIGFybTY0SW5kZXgoKQorICAgICAgICAiI3t2YWx1ZX0iCisgICAgZW5k
CisgICAgCisgICAgZGVmIHdpdGhTdWZmaXgoXywgXykKKyAgICAgICAgc2VsZgorICAgIGVuZAog
ZW5kCiAKIGNsYXNzIEFkZHJlc3MKQEAgLTMwNyw3ICszNTEsNyBAQCBkZWYgYXJtNjRMb3dlckxh
YmVsUmVmZXJlbmNlcyhsaXN0KQogICAgICAgICB8IG5vZGUgfAogICAgICAgICBpZiBub2RlLmlz
X2E/IEluc3RydWN0aW9uCiAgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCi0gICAgICAgICAg
ICB3aGVuICJsb2FkaSIsICJsb2FkaXMiLCAibG9hZHAiLCAibG9hZHEiLCAibG9hZGIiLCAibG9h
ZGJzaSIsICJsb2FkYnNxIiwgImxvYWRoIiwgImxvYWRoc2kiLCAibG9hZGhzcSIsICJsZWFwIgor
ICAgICAgICAgICAgd2hlbiAibG9hZGkiLCAibG9hZGlzIiwgImxvYWRwIiwgImxvYWRxIiwgImxv
YWRiIiwgImxvYWRic2kiLCAibG9hZGJzcSIsICJsb2FkaCIsICJsb2FkaHNpIiwgImxvYWRoc3Ei
LCAibGVhcCIsICJsb2FkdiIKICAgICAgICAgICAgICAgICBsYWJlbFJlZiA9IG5vZGUub3BlcmFu
ZHNbMF0KICAgICAgICAgICAgICAgICBpZiBsYWJlbFJlZi5pc19hPyBMYWJlbFJlZmVyZW5jZQog
ICAgICAgICAgICAgICAgICAgICBkZXN0ID0gbm9kZS5vcGVyYW5kc1sxXQpAQCAtMzg5LDcgKzQz
Myw3IEBAIGNsYXNzIFNlcXVlbmNlCiAgICAgICAgICAgICB3aGVuICJsb2FkcCIsICJzdG9yZXAi
LCAibG9hZHEiLCAic3RvcmVxIiwgImxvYWRkIiwgInN0b3JlZCIsICJsc2hpZnRwIiwgImxzaGlm
dHEiLCAibmVncCIsICJuZWdxIiwgInJzaGlmdHAiLCAicnNoaWZ0cSIsCiAgICAgICAgICAgICAg
ICAgInVyc2hpZnRwIiwgInVyc2hpZnRxIiwgImFkZHAiLCAiYWRkcSIsICJtdWxwIiwgIm11bHEi
LCAiYW5kcCIsICJhbmRxIiwgIm9ycCIsICJvcnEiLCAic3VicCIsICJzdWJxIiwgInhvcnAiLCAi
eG9ycSIsICJhZGRkIiwKICAgICAgICAgICAgICAgICAiZGl2ZCIsICJzdWJkIiwgIm11bGQiLCAi
c3FydGQiLCAvXmJwLywgL15icS8sIC9eYnRwLywgL15idHEvLCAvXmNwLywgL15jcS8sIC9edHAv
LCAvXnRxLywgL15iZC8sCi0gICAgICAgICAgICAgICAgImptcCIsICJjYWxsIiwgImxlYXAiLCAi
bGVhcSIsICJsb2FkbGlua2FjcXEiLCAic3RvcmVjb25kcmVscSIsIC9eYXRvbWljW2Etel0rcSQv
CisgICAgICAgICAgICAgICAgImptcCIsICJjYWxsIiwgImxlYXAiLCAibGVhcSIsICJsb2FkbGlu
a2FjcXEiLCAic3RvcmVjb25kcmVscSIsIC9eYXRvbWljW2Etel0rcSQvLCAibG9hZHYiLCAic3Rv
cmV2IgogICAgICAgICAgICAgICAgIHNpemUgPSAkY3VycmVudFNldHRpbmdzWyJBRERSRVNTNjQi
XSA/IDggOiA0CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmFpc2UgIkJhZCBp
bnN0cnVjdGlvbiAje25vZGUub3Bjb2RlfSBmb3IgaGVhcCBhY2Nlc3MgYXQgI3tub2RlLmNvZGVP
cmlnaW5TdHJpbmd9OiAje25vZGUuZHVtcH0iCkBAIC01ODMsNyArNjI3LDcgQEAgZGVmIGVtaXRB
Uk02NFRBQ1dpdGhPcGVyYW5kU3VmZml4KG9wY29kZSwgb3BlcmFuZHMsIGtpbmQpCiAgICAgc2l6
ZSA9IGtpbmQgPT0gOmZsb2F0ID8gOCA6IDE2CiAgICAgb3BlcmFuZHMgPSBvcGVyYW5kcy5tYXAg
eyB8b3BlcmFuZHwKICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmQuaXNfYT8gRlBSZWdpc3Rl
cklECi0gICAgICAgICIje29wZXJhbmQuYXJtNjRPcGVyYW5kKDp2ZWN0b3IpfS4je3NpemV9YiIK
KyAgICAgICAgIiN7b3BlcmFuZC5hcm02NE9wZXJhbmQoOnZlY3Rvcl9zdWZmaXhlZCl9LiN7c2l6
ZX1iIgogICAgIH0KICAgICBpZiBvcGVyYW5kcy5sZW5ndGggPT0gMgogICAgICAgb3BlcmFuZHMg
PSBbb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1swXV0KQEAgLTU5NCw2ICs2Mzgs
MjMgQEAgZGVmIGVtaXRBUk02NFRBQ1dpdGhPcGVyYW5kU3VmZml4KG9wY29kZSwgb3BlcmFuZHMs
IGtpbmQpCiAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kcy5qb2luKCIsICIpfSIK
IGVuZAogCitkZWYgZW1pdEFSTTY0V2l0aE9wZXJhbmRTdWZmaXhlcyhvcGNvZGUsICpvcGVyYW5k
cykKKyAgICBvcGVyYW5kcyA9IG9wZXJhbmRzLm1hcCB7IHxvcGVyYW5kfAorICAgICAgICBpZiBv
cGVyYW5kLmtpbmRfb2Y/IEFycmF5CisgICAgICAgICAgICAieyAiICsgKG9wZXJhbmQubWFwIHsg
fCBvIHwgby5hcm02NE9wZXJhbmRTdWZmaXhlZCgpIH0pLmpvaW4oIiwiKSArICIgfSIKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgb3BlcmFuZC5hcm02NE9wZXJhbmRTdWZmaXhlZCgpCisgICAg
ICAgIGVuZAorICAgIH0KKyAgICBpZiBvcGVyYW5kcy5sZW5ndGggPT0gMgorICAgICAgb3BlcmFu
ZHMgPSBbb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzBdXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHVu
bGVzcyBvcGVyYW5kcy5sZW5ndGggPT0gMworICAgICAgb3BlcmFuZHMgPSBbb3BlcmFuZHNbMl0s
IG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXV0KKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIiN7b3Bj
b2RlfSAje29wZXJhbmRzLmpvaW4oIiwgIil9IgorZW5kCisKIGRlZiBlbWl0QVJNNjQob3Bjb2Rl
LCBvcGVyYW5kcywga2luZCkKICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje2FybTY0RmxpcHBl
ZE9wZXJhbmRzKG9wZXJhbmRzLCBraW5kKX0iCiBlbmQKQEAgLTc4OSw2ICs4NTAsOCBAQCBjbGFz
cyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW1pdEFSTTY0VW5mbGlwcGVkKCJzdHIiLCBvcGVy
YW5kcywgOnB0cikKICAgICAgICAgd2hlbiAic3RvcmVxIgogICAgICAgICAgICAgZW1pdEFSTTY0
VW5mbGlwcGVkKCJzdHIiLCBvcGVyYW5kcywgOnF1YWQpCisgICAgICAgIHdoZW4gInN0b3JldiIK
KyAgICAgICAgICAgIGVtaXRBUk02NFVuZmxpcHBlZCgic3RyIiwgb3BlcmFuZHMsIDp2ZWN0b3Ip
CiAgICAgICAgIHdoZW4gImxvYWRiIgogICAgICAgICAgICAgZW1pdEFSTTY0QWNjZXNzKCJsZHJi
IiwgImxkdXJiIiwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzBdLCA6d29yZCkKICAgICAgICAgd2hl
biAibG9hZGJzaSIKQEAgLTgxOSw2ICs4ODIsMTQgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAg
ICAgICAgIGVtaXRBUk02NFRBQygiZm11bCIsIG9wZXJhbmRzLCA6ZG91YmxlKQogICAgICAgICB3
aGVuICJzcXJ0ZCIKICAgICAgICAgICAgIGVtaXRBUk02NCgiZnNxcnQiLCBvcGVyYW5kcywgOmRv
dWJsZSkKKyAgICAgICAgd2hlbiAibG9hZHYiCisgICAgICAgICAgICBlbWl0QVJNNjRBY2Nlc3Mo
ImxkciIsICJsZHVyIiwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzBdLCA6dmVjdG9yKQorICAgICAg
ICB3aGVuICJzcGxhdF9sYW5lX2J5dGUiCisgICAgICAgICAgICBlbWl0QVJNNjRXaXRoT3BlcmFu
ZFN1ZmZpeGVzKCJkdXAiLCBvcGVyYW5kc1swXS53aXRoU3VmZml4KDp3b3JkLCAiIiksIG9wZXJh
bmRzWzFdLndpdGhTdWZmaXgoOnZlY3Rvcl9zdWZmaXhlZCwgIjE2YiIpKQorICAgICAgICB3aGVu
ICJzd2l6emxlX2J5dGUiCisgICAgICAgICAgICBlbWl0QVJNNjRXaXRoT3BlcmFuZFN1ZmZpeGVz
KCJ0YmwiLCBbIG9wZXJhbmRzWzFdLndpdGhTdWZmaXgoOnZlY3Rvcl9zdWZmaXhlZCwgIjE2YiIp
IF0sIG9wZXJhbmRzWzBdLndpdGhTdWZmaXgoOnZlY3Rvcl9zdWZmaXhlZCwgIjE2YiIpLCBvcGVy
YW5kc1sxXS53aXRoU3VmZml4KDp2ZWN0b3Jfc3VmZml4ZWQsICIxNmIiKSkKKyAgICAgICAgd2hl
biAiZXh0cmFjdF9sYW5lX2J5dGUiCisgICAgICAgICAgICBlbWl0QVJNNjRXaXRoT3BlcmFuZFN1
ZmZpeGVzKCJ1bW92Iiwgb3BlcmFuZHNbMV0ud2l0aFN1ZmZpeCg6dmVjdG9yX3N1ZmZpeGVkLCAi
QiIpLndpdGhJbmRleChvcGVyYW5kc1swXSksIG9wZXJhbmRzWzJdLndpdGhTdWZmaXgoOndvcmQs
ICIiKSkKICAgICAgICAgd2hlbiAiYmRlcSIKICAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgi
ZmNtcCIsIG9wZXJhbmRzLCA6ZG91YmxlLCAiYi5lcSIpCiAgICAgICAgIHdoZW4gImJkbmVxIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25z
LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCmlu
ZGV4IDQ4MTQzYTkwYjA4MC4uN2UwMzdlY2U5YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCkBAIC03Miw2ICs3MiwxMSBAQCBNQUNS
T19JTlNUUlVDVElPTlMgPQogICAgICAic3RvcmViIiwKICAgICAgImxvYWRmIiwKICAgICAgImxv
YWRkIiwKKyAgICAgImxvYWR2IiwKKyAgICAgImV4dHJhY3RfbGFuZV9ieXRlIiwKKyAgICAgInN3
aXp6bGVfYnl0ZSIsCisgICAgICJyZXBsYWNlX2xhbmVfYnl0ZSIsCisgICAgICJzcGxhdF9sYW5l
X2J5dGUiLAogICAgICAibW92ZWQiLAogICAgICAic3RvcmVmIiwKICAgICAgInN0b3JlZCIsCkBA
IC0yODksNiArMjk0LDcgQEAgTUFDUk9fSU5TVFJVQ1RJT05TID0KICAgICAgImNxbHQiLAogICAg
ICAiY3FsdGVxIiwKICAgICAgInN0b3JlcSIsCisgICAgICJzdG9yZXYiLAogICAgICAiYnRxcyIs
CiAgICAgICJidHF6IiwKICAgICAgImJ0cW56IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9yaXNjLnJiCmluZGV4IDBmMDcyZTlmZDExZS4uMWEyNzNjYWIzMjUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIKQEAgLTI1OSw4ICsyNTksMTIgQEAgZGVm
IHJpc2NMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc0RvdWJsZShsaXN0KQogICAgICAgICAgICAgY2Fz
ZSBub2RlLm9wY29kZQogICAgICAgICAgICAgd2hlbiAibG9hZGQiCiAgICAgICAgICAgICAgICAg
bmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibG9hZGQiLCBbbm9k
ZS5vcGVyYW5kc1swXS5yaXNjRG91YmxlQWRkcmVzcyhuZXdMaXN0KSwgbm9kZS5vcGVyYW5kc1sx
XV0sIG5vZGUuYW5ub3RhdGlvbikKKyAgICAgICAgICAgIHdoZW4gImxvYWR2IgorICAgICAgICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgImxvYWR2
IiwgW25vZGUub3BlcmFuZHNbMF0ucmlzY0RvdWJsZUFkZHJlc3MobmV3TGlzdCksIG5vZGUub3Bl
cmFuZHNbMV1dLCBub2RlLmFubm90YXRpb24pCiAgICAgICAgICAgICB3aGVuICJzdG9yZWQiCiAg
ICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2lu
LCAic3RvcmVkIiwgW25vZGUub3BlcmFuZHNbMF0sIG5vZGUub3BlcmFuZHNbMV0ucmlzY0RvdWJs
ZUFkZHJlc3MobmV3TGlzdCldLCBub2RlLmFubm90YXRpb24pCisgICAgICAgICAgICB3aGVuICJz
dG9yZXYiCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5j
b2RlT3JpZ2luLCAic3RvcmV2IiwgW25vZGUub3BlcmFuZHNbMF0sIG5vZGUub3BlcmFuZHNbMV0u
cmlzY0RvdWJsZUFkZHJlc3MobmV3TGlzdCldLCBub2RlLmFubm90YXRpb24pCiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCiAgICAgICAgICAgICBlbmQK
QEAgLTQzMiw3ICs0MzYsNyBAQCBkZWYgcmlzY0xvd2VyT3BlcmFuZFRvUmVnaXN0ZXIoaW5zbiwg
cHJlTGlzdCwgcG9zdExpc3QsIG9wZXJhbmRJbmRleCwgc3VmZml4LCBuZQogICAgIG9wZXJhbmQg
PSBpbnNuLm9wZXJhbmRzW29wZXJhbmRJbmRleF0KICAgICByZXR1cm4gb3BlcmFuZCB1bmxlc3Mg
b3BlcmFuZC5hZGRyZXNzPwogCi0gICAgdG1wID0gVG1wLm5ldyhpbnNuLmNvZGVPcmlnaW4sIGlm
IHN1ZmZpeCA9PSAiZCIgdGhlbiA6ZnByIGVsc2UgOmdwciBlbmQpCisgICAgdG1wID0gVG1wLm5l
dyhpbnNuLmNvZGVPcmlnaW4sIGlmIHN1ZmZpeCA9PSAiZCIgb3Igc3VmZml4ID09ICJ2IiB0aGVu
IDpmcHIgZWxzZSA6Z3ByIGVuZCkKICAgICBwcmVMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhpbnNu
LmNvZGVPcmlnaW4sICJsb2FkIiArIHN1ZmZpeCwgW29wZXJhbmQsIHRtcF0pCiAgICAgaWYgbmVl
ZFN0b3JlCiAgICAgICAgIHBvc3RMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhpbnNuLmNvZGVPcmln
aW4sICJzdG9yZSIgKyBzdWZmaXgsIFt0bXAsIG9wZXJhbmRdKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20veDg2LnJiCmluZGV4IDk1ZTRjOWMyZmM3My4uOWQyOGRjNTkzZTRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCkBAIC0zMzEsNyArMzMxLDcgQEAg
ZW5kCiAKIGNsYXNzIEZQUmVnaXN0ZXJJRAogICAgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCi0gICAg
ICAgIHJhaXNlIHVubGVzcyBbOmZsb2F0LCA6ZG91YmxlXS5pbmNsdWRlPyBraW5kCisgICAgICAg
IHJhaXNlIHVubGVzcyBbOmZsb2F0LCA6ZG91YmxlLCA6dmVjdG9yXS5pbmNsdWRlPyBraW5kCiAg
ICAgICAgIGNhc2UgbmFtZQogICAgICAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZyIiwgIndmYTAi
CiAgICAgICAgICAgICByZWdpc3RlcigieG1tMCIpCkBAIC0xMjMwLDEyICsxMjMwLDI2IEBAIGNs
YXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnNzICN7eDg2T3BlcmFu
ZHMoOmZsb2F0LCA6ZmxvYXQpfSIKICAgICAgICAgd2hlbiAibG9hZGQiCiAgICAgICAgICAgICAk
YXNtLnB1dHMgIm1vdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgICAg
ICB3aGVuICJsb2FkdiIKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92ZHF1ICN7eDg2T3BlcmFu
ZHMoOmludCwgOmRvdWJsZSl9IgorICAgICAgICB3aGVuICJleHRyYWN0X2xhbmVfYnl0ZSIKKyAg
ICAgICAgICAgICRhc20ucHV0cyAicGV4dHJiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpkb3VibGUs
IDppbnQpfSIKKyAgICAgICAgd2hlbiAic3dpenpsZV9ieXRlIgorICAgICAgICAgICAgJGFzbS5w
dXRzICJwc2h1ZmIgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgICAgIHdo
ZW4gInJlcGxhY2VfbGFuZV9ieXRlIgorICAgICAgICAgICAgJGFzbS5wdXRzICJwaW5zcmIgI3t4
ODZPcGVyYW5kcyg6Ynl0ZSwgOmludCwgOmRvdWJsZSl9IgorICAgICAgICB3aGVuICJzcGxhdF9s
YW5lX2J5dGUiCisgICAgICAgICAgICAkYXNtLnB1dHMgInB4b3IgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDp2ZWN0b3IpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDp2ZWN0b3IpfSIKKyAg
ICAgICAgICAgICRhc20ucHV0cyAicGluc3JiICN7Y29uc3QoMCl9LCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOnZlY3Rvcil9IgorICAg
ICAgICAgICAgJGFzbS5wdXRzICJ2cGJyb2FkY2FzdGIgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDpmbG9hdCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOnZlY3Rvcil9IgogICAgICAgICB3
aGVuICJtb3ZlZCIKICAgICAgICAgICAgICRhc20ucHV0cyAibW92c2QgI3t4ODZPcGVyYW5kcyg6
ZG91YmxlLCA6ZG91YmxlKX0iCiAgICAgICAgIHdoZW4gInN0b3JlZiIKICAgICAgICAgICAgICRh
c20ucHV0cyAibW92c3MgI3t4ODZPcGVyYW5kcyg6ZmxvYXQsIDpmbG9hdCl9IgogICAgICAgICB3
aGVuICJzdG9yZWQiCiAgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnNkICN7eDg2T3BlcmFuZHMo
OmRvdWJsZSwgOmRvdWJsZSl9IgorICAgICAgICB3aGVuICJzdG9yZXYiCisgICAgICAgICAgICAk
YXNtLnB1dHMgIm1vdnVwcyAje3g4Nk9wZXJhbmRzKDp2ZWN0b3IsIDp2ZWN0b3IpfSIKICAgICAg
ICAgd2hlbiAiYWRkZiIKICAgICAgICAgICAgIGhhbmRsZVg4NkFkZEZQKDpmbG9hdCkKICAgICAg
ICAgd2hlbiAiYWRkZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oCmluZGV4IGJmOWQ4YTM4M2Y3My4uZmU5NTUyNWZmODBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTU0OSw2ICs1NDksNyBAQCBib29sIGNh
blVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpOwogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlU
aHJlYWRpbmcsIHRydWUsIE5vcm1hbCwgIkFsbG93IGluc3RydWN0aW9ucyBmcm9tIHRoZSB3YXNt
IHRocmVhZGluZyBzcGVjLiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5VHlwZWRGdW5j
dGlvblJlZmVyZW5jZXMsIGZhbHNlLCBOb3JtYWwsICJBbGxvdyBmdW5jdGlvbiB0eXBlcyBmcm9t
IHRoZSB3YXNtIHR5cGVkIGZ1bmN0aW9uIHJlZmVyZW5jZXMgc3BlYy4iKSBcCiAgICAgdihCb29s
LCB1c2VXZWJBc3NlbWJseUV4Y2VwdGlvbnMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHRoZSBuZXcg
c2VjdGlvbiBhbmQgaW5zdHJ1Y3Rpb25zIGZyb20gdGhlIHdhc20gZXhjZXB0aW9uIGhhbmRsaW5n
IHNwZWMuIikgXAorICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlTSU1ELCB0cnVlLCBOb3JtYWws
ICJBbGxvdyB0aGUgbmV3IHNpbWQgaW5zdHJ1Y3Rpb25zIGFuZCB0eXBlcyBmcm9tIHRoZSB3YXNt
IHNpbWQgc3BlYy4iKSBcCiAKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCA1YmM0
MjYwOTJiOTEuLmYzMzg1NmJlOTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC0zMjcsOCArMzI3LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgZmluYWxpemVFbnRyeXBvaW50cygpOwogCiAgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkQXJndW1lbnRzKGNvbnN0IFNpZ25hdHVyZSYpOwotICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZExvY2FsKFR5cGUsIHVpbnQzMl90KTsKKyAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRMb2NhbChUeXBlLCB1aW50MzJf
dCwgdWludDMyX3QpOwogICAgIEV4cHJlc3Npb25UeXBlIGFkZENvbnN0YW50KFR5cGUsIHVpbnQ2
NF90KTsKKyAgICBFeHByZXNzaW9uVHlwZSBhZGRDb25zdGFudCh2MTI4X3QpOwogICAgIEV4cHJl
c3Npb25UeXBlIGFkZENvbnN0YW50KEJhc2ljQmxvY2sqLCBUeXBlLCB1aW50NjRfdCk7CiAgICAg
RXhwcmVzc2lvblR5cGUgYWRkQm90dG9tKEJhc2ljQmxvY2sqLCBUeXBlKTsKIApAQCAtMzQ3LDgg
KzM0OCw4IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRUYWJsZUNvcHkodW5zaWduZWQsIHVuc2lnbmVkLCBFeHByZXNzaW9uVHlwZSBkc3RPZmZzZXQs
IEV4cHJlc3Npb25UeXBlIHNyY09mZnNldCwgRXhwcmVzc2lvblR5cGUgbGVuZ3RoKTsKIAogICAg
IC8vIExvY2FscwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2Fs
KHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBQYXJ0aWFsUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lv
blR5cGUgdmFsdWUpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldExv
Y2FsKHVpbnQzMl90IGluZGV4LCBXYXNtOjpUeXBlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
KyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBzZXRMb2NhbCh1aW50MzJfdCBp
bmRleCwgV2FzbTo6VHlwZSwgRXhwcmVzc2lvblR5cGUgdmFsdWUpOwogCiAgICAgLy8gR2xvYmFs
cwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldEdsb2JhbCh1aW50MzJf
dCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CkBAIC0zOTgsNyArMzk5LDcgQEAgcHVi
bGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhdGNoQWxsVG9V
bnJlYWNoYWJsZShDb250cm9sVHlwZSYpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIGFkZERlbGVnYXRlKENvbnRyb2xUeXBlJiwgQ29udHJvbFR5cGUmKTsKICAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGREZWxlZ2F0ZVRvVW5yZWFjaGFibGUoQ29u
dHJvbFR5cGUmLCBDb250cm9sVHlwZSYpOwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIGFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBWZWN0b3I8RXhwcmVzc2lv
blR5cGU+JiBhcmdzLCBTdGFjayYpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBTdGFjayYgYXJncyk7CiAgICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0aHJvdyh1bnNpZ25lZCwgQ29u
dHJvbFR5cGUmKTsKIAogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJl
dHVybihjb25zdCBDb250cm9sRGF0YSYsIGNvbnN0IFN0YWNrJiByZXR1cm5WYWx1ZXMpOwpAQCAt
NDIxLDExICs0MjIsMTUgQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgYWRkSW50ZWdlclN1
YihCMzo6QWlyOjpPcGNvZGUsIEV4cHJlc3Npb25UeXBlIGxocywgRXhwcmVzc2lvblR5cGUgcmhz
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKICAgICBQYXJ0aWFsUmVzdWx0IGFkZEZsb2F0aW5n
UG9pbnRBYnMoQjM6OkFpcjo6T3Bjb2RlLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBhZGRGbG9hdGluZ1BvaW50QmluT3Ao
VHlwZSwgQjM6OkFpcjo6T3Bjb2RlLCBFeHByZXNzaW9uVHlwZSBsaHMsIEV4cHJlc3Npb25UeXBl
IHJocywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgCisgICAgLy8gU2ltZAorICAgIHRl
bXBsYXRlPEV4dFNpbWRPcFR5cGUsIHNpemVfdCBudW1JbW1lZGlhdGVzLCBzaXplX3QgbnVtQXJn
dW1lbnRzPgorICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFNpbWRPcChz
dGQ6OmFycmF5PHVpbnQ4X3QsIG51bUltbWVkaWF0ZXM+LCBzdGQ6OmFycmF5PEV4cHJlc3Npb25U
eXBlLCBudW1Bcmd1bWVudHM+LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAogICAgIHZvaWQg
ZHVtcChjb25zdCBDb250cm9sU3RhY2smLCBjb25zdCBTdGFjayogZXhwcmVzc2lvblN0YWNrKTsK
ICAgICB2b2lkIHNldFBhcnNlcihGdW5jdGlvblBhcnNlcjxBaXJJUkdlbmVyYXRvcj4qIHBhcnNl
cikgeyBtX3BhcnNlciA9IHBhcnNlcjsgfTsKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmdMb2Nh
bHMoKSB7IH0KLSAgICB2b2lkIGRpZFBvcFZhbHVlRnJvbVN0YWNrKCkgeyB9CisgICAgdm9pZCBk
aWRQb3BWYWx1ZUZyb21TdGFjayhXYXNtOjpUeXBlKSB7IH0KIAogICAgIFRtcCBlbWl0Q2F0Y2hJ
bXBsKENhdGNoS2luZCwgQ29udHJvbFR5cGUmLCB1bnNpZ25lZCBleGNlcHRpb25JbmRleCA9IDAp
OwogICAgIHRlbXBsYXRlIDxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CkBAIC01MTIsNiArNTE3LDcg
QEAgcHJpdmF0ZToKICAgICBUeXBlZFRtcCBnUmVmKFR5cGUgdHlwZSkgeyByZXR1cm4geyBuZXdU
bXAoQjM6OkdQKSwgdHlwZSB9OyB9CiAgICAgVHlwZWRUbXAgZjMyKCkgeyByZXR1cm4geyBuZXdU
bXAoQjM6OkZQKSwgVHlwZXM6OkYzMiB9OyB9CiAgICAgVHlwZWRUbXAgZjY0KCkgeyByZXR1cm4g
eyBuZXdUbXAoQjM6OkZQKSwgVHlwZXM6OkY2NCB9OyB9CisgICAgVHlwZWRUbXAgdjEyOCgpIHsg
cmV0dXJuIHsgbmV3VG1wKEIzOjpGUCksIFR5cGVzOjpWMTI4IH07IH0KIAogICAgIFR5cGVkVG1w
IHRtcEZvclR5cGUoVHlwZSB0eXBlKQogICAgIHsKQEAgLTUzMSw2ICs1MzcsOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmV0dXJuIGYzMigpOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6
CiAgICAgICAgICAgICByZXR1cm4gZjY0KCk7CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlYxMjg6
CisgICAgICAgICAgICByZXR1cm4gdjEyOCgpOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lk
OgogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgZGVmYXVsdDoKQEAgLTYyNyw3ICs2
MzUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gdmFsaWRhdGlvbi4gV2Ugc2hvdWxkIGFi
c3RyY2F0IFBhdGNoIGVub3VnaCBzbyBWYWx1ZVJlcCdzIGRvbid0IG5lZWQgdG8gYmUKICAgICAg
ICAgICAgIC8vIGJhY2tlZCBieSBWYWx1ZXMuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDQwCi0gICAgICAgICAgICBCMzo6VmFsdWUq
IGR1bW15VmFsdWUgPSBtX3Byb2MuYWRkQ29uc3RhbnQoQjM6Ok9yaWdpbigpLCB0bXAudG1wLmlz
R1AoKSA/IEIzOjpJbnQ2NCA6IEIzOjpEb3VibGUsIDApOworICAgICAgICAgICAgQjM6OlZhbHVl
KiBkdW1teVZhbHVlID0gbV9wcm9jLmFkZENvbnN0YW50KEIzOjpPcmlnaW4oKSwgdG1wLnRtcC5p
c0dQKCkgPyBCMzo6SW50NjQgOiBCMzo6VjEyOCwgMCk7CiAgICAgICAgICAgICBwYXRjaC0+YXBw
ZW5kKGR1bW15VmFsdWUsIHRtcC5yZXApOwogICAgICAgICAgICAgc3dpdGNoICh0bXAucmVwLmtp
bmQoKSkgewogICAgICAgICAgICAgLy8gQjM6OlZhbHVlIHByb3BhZ2F0ZXMgKExhdGUpQ29sZEFu
eSBpbmZvcm1hdGlvbiBhbmQgbGF0ZXIgQWlyIHdpbGwgYWxsb2NhdGUgYXBwcm9wcmlhdGUgc3Rh
Y2suCkBAIC02MzgsMTIgKzY0NiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBCMzo6VmFsdWVSZXA6OlJlZ2lzdGVyOgogICAgICAgICAgICAg
ICAgIHBhdGNoLT5lYXJseUNsb2JiZXJlZCgpLmNsZWFyKHRtcC5yZXAucmVnKCkpOwotICAgICAg
ICAgICAgICAgIGFwcGVuZChiYXNpY0Jsb2NrLCB0bXAudG1wLmlzR1AoKSA/IE1vdmUgOiBNb3Zl
RG91YmxlLCB0bXAudG1wLCB0bXAucmVwLnJlZygpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQo
YmFzaWNCbG9jaywgdG1wLnRtcC5pc0dQKCkgPyBNb3ZlIDogTW92ZVZlY3RvciwgdG1wLnRtcCwg
dG1wLnJlcC5yZWcoKSk7CiAgICAgICAgICAgICAgICAgaW5zdC5hcmdzLmFwcGVuZChUbXAodG1w
LnJlcC5yZWcoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBC
Mzo6VmFsdWVSZXA6OlN0YWNrQXJndW1lbnQ6IHsKICAgICAgICAgICAgICAgICBBcmcgYXJnID0g
QXJnOjpjYWxsQXJnKHRtcC5yZXAub2Zmc2V0RnJvbVNQKCkpOwotICAgICAgICAgICAgICAgIGFw
cGVuZChiYXNpY0Jsb2NrLCB0bXAudG1wLmlzR1AoKSA/IE1vdmUgOiBNb3ZlRG91YmxlLCB0bXAu
dG1wLCBhcmcpOworICAgICAgICAgICAgICAgIGFwcGVuZChiYXNpY0Jsb2NrLCB0bXAudG1wLmlz
R1AoKSA/IE1vdmUgOiBNb3ZlVmVjdG9yLCB0bXAudG1wLCBhcmcpOwogICAgICAgICAgICAgICAg
IEFTU0VSVChhcmcuY2FuUmVwcmVzZW50KHBhdGNoLT5jaGlsZChpKS0+dHlwZSgpKSk7CiAgICAg
ICAgICAgICAgICAgaW5zdC5hcmdzLmFwcGVuZChhcmcpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNzY2LDYgKzc3NCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gTW92ZUZs
b2F0OwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6CiAgICAgICAgICAgICByZXR1cm4gTW92
ZURvdWJsZTsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VjEyODoKKyAgICAgICAgICAgIHJldHVy
biBNb3ZlVmVjdG9yOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQpAQCAtMTA2Niw2ICsxMDc2LDkgQEAgQWlySVJH
ZW5lcmF0b3I6OkFpcklSR2VuZXJhdG9yKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBC
Mzo6UHJvY2VkdXJlJiBwcm8KICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgogICAgICAgICAg
ICAgYXBwZW5kKE1vdmVEb3VibGUsIGFyZywgbV9sb2NhbHNbaV0pOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlYxMjg6CisgICAgICAgICAgICBhcHBlbmQoTW92
ZVZlY3RvciwgYXJnLCBtX2xvY2Fsc1tpXSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIH0KQEAgLTEyMTIsNyArMTIyNSw3IEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OmZvckVhY2hM
aXZlVmFsdWUoRnVuY3Rpb24gZnVuY3Rpb24pCiAgICAgfQogfQogCi1hdXRvIEFpcklSR2VuZXJh
dG9yOjphZGRMb2NhbChUeXBlIHR5cGUsIHVpbnQzMl90IGNvdW50KSAtPiBQYXJ0aWFsUmVzdWx0
CithdXRvIEFpcklSR2VuZXJhdG9yOjphZGRMb2NhbChUeXBlIHR5cGUsIHVpbnQzMl90LCB1aW50
MzJfdCBjb3VudCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIHNpemVfdCBuZXdTaXplID0gbV9s
b2NhbHMuc2l6ZSgpICsgY291bnQ7CiAgICAgQVNTRVJUKCEoQ2hlY2tlZFVpbnQzMihjb3VudCkg
KyBtX2xvY2Fscy5zaXplKCkpLmhhc092ZXJmbG93ZWQoKSk7CkBAIC0xMjQyLDYgKzEyNTUsMTQg
QEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1aW50MzJfdCBjb3Vu
dCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAgICAgYXBwZW5kKHR5cGUuaXNGMzIoKSA/IE1v
dmUzMlRvRmxvYXQgOiBNb3ZlNjRUb0RvdWJsZSwgdGVtcCwgbG9jYWwpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VjEyODogeworICAgICAg
ICAgICAgYXV0byBsYW5lSW5mbyA9IEFyZzo6c2ltZEluZm8oU2ltZExhbmVJbnRlcnByZXRhdGlv
bjo6aTY0eDIsIFNpbWRTaWduRXh0ZW5kTW9kZTo6TkEpOworICAgICAgICAgICAgYXV0byB0ZW1w
ID0gZzY0KCk7CisgICAgICAgICAgICBhcHBlbmQoWG9yNjQsIHRlbXAsIHRlbXApOworICAgICAg
ICAgICAgYXBwZW5kKFJlcGxhY2VMYW5lLCBsYW5lSW5mbywgQXJnOjppbW0oMCksIHRlbXAsIGxv
Y2FsKTsKKyAgICAgICAgICAgIGFwcGVuZChSZXBsYWNlTGFuZSwgbGFuZUluZm8sIEFyZzo6aW1t
KDEpLCB0ZW1wLCBsb2NhbCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgfQpAQCAtMTI1NCw2ICsxMjc1LDE4IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENv
bnN0YW50KFR5cGUgdHlwZSwgdWludDY0X3QgdmFsdWUpIC0+IEV4cHJlc3Npb25UeXBlCiAgICAg
cmV0dXJuIGFkZENvbnN0YW50KG1fY3VycmVudEJsb2NrLCB0eXBlLCB2YWx1ZSk7CiB9CiAKK2F1
dG8gQWlySVJHZW5lcmF0b3I6OmFkZENvbnN0YW50KHYxMjhfdCB2YWx1ZSkgLT4gRXhwcmVzc2lv
blR5cGUKK3sKKyAgICBhdXRvIGxhbmVJbmZvID0gQXJnOjpzaW1kSW5mbyhTaW1kTGFuZUludGVy
cHJldGF0aW9uOjppNjR4MiwgU2ltZFNpZ25FeHRlbmRNb2RlOjpOQSk7CisgICAgYXV0byBhID0g
ZzY0KCk7CisgICAgYXV0byByZXN1bHQgPSB0bXBGb3JUeXBlKFR5cGVzOjpWMTI4KTsKKyAgICBh
cHBlbmQoTW92ZSwgQXJnOjpiaWdJbW0odmFsdWUudTY0eDJbMF0pLCBhKTsKKyAgICBhcHBlbmQo
UmVwbGFjZUxhbmUsIGxhbmVJbmZvLCBBcmc6OmltbSgwKSwgYSwgcmVzdWx0KTsKKyAgICBhcHBl
bmQoTW92ZSwgQXJnOjpiaWdJbW0odmFsdWUudTY0eDJbMV0pLCBhKTsKKyAgICBhcHBlbmQoUmVw
bGFjZUxhbmUsIGxhbmVJbmZvLCBBcmc6OmltbSgxKSwgYSwgcmVzdWx0KTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDb25zdGFudChCYXNpY0Jsb2Nr
KiBibG9jaywgVHlwZSB0eXBlLCB1aW50NjRfdCB2YWx1ZSkgLT4gRXhwcmVzc2lvblR5cGUKIHsK
ICAgICBhdXRvIHJlc3VsdCA9IHRtcEZvclR5cGUodHlwZSk7CkBAIC0xNDU5LDcgKzE0OTIsNyBA
QCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZUNvcHkodW5zaWduZWQgZHN0VGFibGVJbmRl
eCwgdW5zaWduZWQgc3JjVGFibGVJbmRleAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQWly
SVJHZW5lcmF0b3I6OmdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KSAtPiBQYXJ0aWFsUmVzdWx0CithdXRvIEFpcklSR2VuZXJhdG9yOjpnZXRMb2NhbCh1aW50
MzJfdCBpbmRleCwgV2FzbTo6VHlwZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlh
bFJlc3VsdAogewogICAgIEFTU0VSVChtX2xvY2Fsc1tpbmRleF0udG1wKCkpOwogICAgIHJlc3Vs
dCA9IHRtcEZvclR5cGUobV9sb2NhbHNbaW5kZXhdLnR5cGUoKSk7CkBAIC0xNTkxLDcgKzE2MjQs
NyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGREYXRhRHJvcCh1bnNpZ25lZCBkYXRhU2VnbWVu
dEluZGV4KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBBaXJJ
UkdlbmVyYXRvcjo6c2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVl
KSAtPiBQYXJ0aWFsUmVzdWx0CithdXRvIEFpcklSR2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50MzJf
dCBpbmRleCwgV2FzbTo6VHlwZSwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXN1
bHQKIHsKICAgICBBU1NFUlQobV9sb2NhbHNbaW5kZXhdLnRtcCgpKTsKICAgICBhcHBlbmQobW92
ZU9wRm9yVmFsdWVUeXBlKG1fbG9jYWxzW2luZGV4XS50eXBlKCkpLCB2YWx1ZSwgbV9sb2NhbHNb
aW5kZXhdLnRtcCgpKTsKQEAgLTIxNDQsNiArMjE3Nyw5IEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6
OnNhbml0aXplQXRvbWljUmVzdWx0KEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1ZVR5cGUs
IFRtCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYXBwZW5kKE1vdmUsIHNv
dXJjZSwgZGVzdCk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgQjM6OldpZHRo
MTI4OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjE2MSw2
ICsyMTk3LDkgQEAgdm9pZCBBaXJJUkdlbmVyYXRvcjo6c2FuaXRpemVBdG9taWNSZXN1bHQoRXh0
QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHVlVHlwZSwgVG0KICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgc291cmNlLCBkZXN0KTsKICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgY2FzZSBCMzo6V2lkdGgxMjg6CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybjsKICAgICBkZWZhdWx0OgpAQCAtMjIzOSw2ICsyMjc4LDkgQEAgVHlwZWRU
bXAgQWlySVJHZW5lcmF0b3I6OmFwcGVuZEdlbmVyYWxBdG9taWMoRXh0QXRvbWljT3BUeXBlIG9w
LCBCMzo6QWlyOjpPcGNvZGUKICAgICAgICAgY2FzZSBCMzo6V2lkdGg2NDoKICAgICAgICAgICAg
IHByZXBhcmVPcGNvZGUgPSBNb3ZlOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
QjM6OldpZHRoMTI4OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKQEAgLTMzMjMsNyArMzM2NSw3IEBAIGF1dG8gQWlySVJH
ZW5lcmF0b3I6OmFkZERlbGVnYXRlVG9VbnJlYWNoYWJsZShDb250cm9sVHlwZSYgdGFyZ2V0LCBD
b250cm9sVHlwZSYKICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIEFpcklSR2VuZXJhdG9yOjph
ZGRUaHJvdyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYg
YXJncywgU3RhY2smKSAtPiBQYXJ0aWFsUmVzdWx0CithdXRvIEFpcklSR2VuZXJhdG9yOjphZGRU
aHJvdyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgU3RhY2smIGFyZ3MpIC0+IFBhcnRpYWxSZXN1
bHQKIHsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaCA9IGFkZFBhdGNocG9pbnQoQjM6
OlZvaWQpOwogICAgIHBhdGNoLT5lZmZlY3RzLnRlcm1pbmFsID0gdHJ1ZTsKQEAgLTMzMzMsNyAr
MzM3NSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlv
bkluZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhCiAgICAgcGF0Y2hBcmdzLmFwcGVuZChD
b25zdHJhaW5lZFRtcChpbnN0YW5jZVZhbHVlKCksIEIzOjpWYWx1ZVJlcDo6cmVnKEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpKTsKICAgICBwYXRjaEFyZ3MuYXBwZW5kKENvbnN0cmFpbmVkVG1wKFRt
cChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciksIEIzOjpWYWx1ZVJlcDo6cmVnKEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJncy5zaXpl
KCk7ICsraSkKLSAgICAgICAgcGF0Y2hBcmdzLmFwcGVuZChDb25zdHJhaW5lZFRtcChhcmdzW2ld
LCBCMzo6VmFsdWVSZXA6OnN0YWNrQXJndW1lbnQoaSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkp
KSk7CisgICAgICAgIHBhdGNoQXJncy5hcHBlbmQoQ29uc3RyYWluZWRUbXAoYXJnc1tpXS52YWx1
ZSgpLCBCMzo6VmFsdWVSZXA6OnN0YWNrQXJndW1lbnQoaSAqIGFyZ3NbaV0udHlwZSgpLnNpemUo
KSkpKTsKIAogICAgIFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUgaGFuZGxlID0gcHJlcGFyZVBh
dGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNoLCBwYXRjaEFyZ3MpOwogCkBAIC01NTE5LDYgKzU1
NjEsMjMgQEAgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZSBBaXJJUkdlbmVyYXRvcjo6cHJlcGFy
ZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKEIzOjpQYXQKICAgICByZXR1cm4gUGF0Y2hwb2ludEV4
Y2VwdGlvbkhhbmRsZSB7IG1fY2FsbFNpdGVJbmRleCwgbnVtTGl2ZVZhbHVlcyB9OwogfQogCisj
ZGVmaW5lIENSRUFURV9TSU1EX0NBU0UobmFtZSwgaWQsIGIzb3AsIGluYywgd2FzbU9wLCByZXR1
cm5UeXBlLCBudW1JbW1lZGlhdGVzLCBpbW1lZGlhdGVTaXplcywgbnVtQXJndW1lbnRzLCBhcmd1
bWVudFR5cGVzLCBsYW5lSW50ZXJwcmV0YXRpb24sIHNpZ25FeHRlbmRNb2RlKSBcCit0ZW1wbGF0
ZTw+IFwKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFNpbWRPcDxFeHRTaW1kT3BUeXBlOjpuYW1l
LCBudW1JbW1lZGlhdGVzLCBudW1Bcmd1bWVudHM+KHN0ZDo6YXJyYXk8dWludDhfdCwgbnVtSW1t
ZWRpYXRlcz4gaW1tZWRpYXRlcywgc3RkOjphcnJheTxFeHByZXNzaW9uVHlwZSwgbnVtQXJndW1l
bnRzPiBhcmd1bWVudHMsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQg
XAoreyBcCisgICAgcmVzdWx0ID0gdG1wRm9yVHlwZShyZXR1cm5UeXBlKTsgXAorICAgIHN0ZDo6
YXJyYXk8QXJnLCBudW1JbW1lZGlhdGVzPiB0cnVzdGVkSW1tczsgXAorICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbnVtSW1tZWRpYXRlczsgKytpKSB7IFwKKyAgICAgICAgdHJ1c3RlZEltbXNb
aV0gPSBBcmc6OmltbShpbW1lZGlhdGVzW2ldKTsgXAorICAgIH0gXAorICAgIGF1dG8gYXJnc1Rv
QXBwbHkgPSBzdGQ6OnR1cGxlX2NhdChzdGQ6OmZvcndhcmRfYXNfdHVwbGUoYjNvcCwgQXJnOjpz
aW1kSW5mbyhsYW5lSW50ZXJwcmV0YXRpb24sIHNpZ25FeHRlbmRNb2RlKSksIHRydXN0ZWRJbW1z
LCBhcmd1bWVudHMsIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShyZXN1bHQpKTsgXAorICAgIHN0ZDo6
YXBwbHkoWz1dKGF1dG8gJiYuLi4gYXJncykgeyBhcHBlbmQoYXJncy4uLik7IH0sIGFyZ3NUb0Fw
cGx5KTsgXAorICAgIHJldHVybiB7IH07IFwKK30KKworRk9SX0VBQ0hfV0FTTV9FWFRfU0lNRF9P
UChDUkVBVEVfU0lNRF9DQVNFKQorI3VuZGVmIENSRUFURV9TSU1EX0NBU0UKKwogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWV9CM0pJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApp
bmRleCAzZGE4Yzc5YmRlMzkuLmFjYTUxM2Y3MmFkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMzIsMTEgKzMyLDEzIEBACiAj
aW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaCIKICNpbmNsdWRlICJC
M0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCisjaW5jbHVk
ZSAiQjNDb25zdDEyOFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDb25zdFB0clZhbHVlLmgiCiAjaW5j
bHVkZSAiQjNFc3RpbWF0ZVN0YXRpY0V4ZWN1dGlvbkNvdW50cy5oIgogI2luY2x1ZGUgIkIzRml4
U1NBLmgiCiAjaW5jbHVkZSAiQjNHZW5lcmF0ZS5oIgogI2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0
LmgiCisjaW5jbHVkZSAiQjNTaW1kVmFsdWUuaCIKICNpbmNsdWRlICJCM1N0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzU3dpdGNoVmFsdWUuaCIKICNpbmNsdWRlICJCM1Vw
c2lsb25WYWx1ZS5oIgpAQCAtNjMsNiArNjUsNyBAQAogI2luY2x1ZGUgIldhc21PU1JFbnRyeURh
dGEuaCIKICNpbmNsdWRlICJXYXNtT3Bjb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiV2FzbU9wZXJh
dGlvbnMuaCIKKyNpbmNsdWRlICJXYXNtT3BzLmgiCiAjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlu
bGluZXMuaCIKICNpbmNsdWRlICJXYXNtVGh1bmtzLmgiCiAjaW5jbHVkZSA8bGltaXRzPgpAQCAt
MzA2LDggKzMwOSw5IEBAIHB1YmxpYzoKICAgICBCM0lSR2VuZXJhdG9yKGNvbnN0IE1vZHVsZUlu
Zm9ybWF0aW9uJiwgUHJvY2VkdXJlJiwgSW50ZXJuYWxGdW5jdGlvbiosIFZlY3RvcjxVbmxpbmtl
ZFdhc21Ub1dhc21DYWxsPiYsIHVuc2lnbmVkJiBvc3JFbnRyeVNjcmF0Y2hCdWZmZXJTaXplLCBN
ZW1vcnlNb2RlLCBDb21waWxhdGlvbk1vZGUsIHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXgsIHVuc2ln
bmVkIGxvb3BJbmRleEZvck9TUkVudHJ5LCBUaWVyVXBDb3VudCopOwogCiAgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQXJndW1lbnRzKGNvbnN0IFNpZ25hdHVyZSYpOwot
ICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZExvY2FsKFR5cGUsIHVpbnQz
Ml90KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRMb2NhbChUeXBl
LCB1aW50MzJfdCwgdWludDMyX3QpOwogICAgIEV4cHJlc3Npb25UeXBlIGFkZENvbnN0YW50KFR5
cGUsIHVpbnQ2NF90KTsKKyAgICBFeHByZXNzaW9uVHlwZSBhZGRDb25zdGFudCh2MTI4X3QpOwog
CiAgICAgLy8gUmVmZXJlbmNlcwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZFJlZklzTnVsbChFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCk7CkBAIC0zMjQsOCArMzI4LDggQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZFRhYmxlQ29weSh1bnNpZ25lZCwgdW5zaWduZWQsIEV4cHJlc3Npb25U
eXBlIGRzdE9mZnNldCwgRXhwcmVzc2lvblR5cGUgc3JjT2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBs
ZW5ndGgpOwogCiAgICAgLy8gTG9jYWxzCi0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwot
ICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHNldExvY2FsKHVpbnQzMl90IGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIFdhc206OlR5cGUsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHNldExv
Y2FsKHVpbnQzMl90IGluZGV4LCBXYXNtOjpUeXBlLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSk7CiAK
ICAgICAvLyBHbG9iYWxzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZ2V0
R2xvYmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTM3Nyw3
ICszODEsNyBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
YWRkQ2F0Y2hBbGxUb1VucmVhY2hhYmxlKENvbnRyb2xUeXBlJik7CiAgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkRGVsZWdhdGUoQ29udHJvbFR5cGUmLCBDb250cm9sVHlw
ZSYpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZERlbGVnYXRlVG9V
bnJlYWNoYWJsZShDb250cm9sVHlwZSYsIENvbnRyb2xUeXBlJik7Ci0gICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFZl
Y3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFN0YWNrJik7CisgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFN0YWNr
JiBhcmdzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXRocm93
KHVuc2lnbmVkLCBDb250cm9sVHlwZSYpOwogCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkUmV0dXJuKGNvbnN0IENvbnRyb2xEYXRhJiwgY29uc3QgU3RhY2smIHJldHVy
blZhbHVlcyk7CkBAIC0zOTUsMTEgKzM5OSwxNSBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVW5yZWFjaGFibGUoKTsKICAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBlbWl0SW5kaXJlY3RDYWxsKFZhbHVlKiBjYWxsZWVJbnN0YW5j
ZSwgVmFsdWUqIGNhbGxlZUNvZGUsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9u
VHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmKTsKICAgICBCMzo6VmFsdWUqIGNyZWF0ZUNhbGxQYXRj
aHBvaW50KEJhc2ljQmxvY2sqLCBPcmlnaW4sIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHBy
ZXNzaW9uVHlwZT4mIGFyZ3MsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKFBhdGNocG9pbnRWYWx1
ZSosIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPik+JiBwYXRjaHBvaW50RnVuY3Rvcik7
CisgICAgCisgICAgLy8gU2ltZAorICAgIHRlbXBsYXRlPEV4dFNpbWRPcFR5cGUsIHNpemVfdCBu
dW1JbW1lZGlhdGVzLCBzaXplX3QgbnVtQXJndW1lbnRzPgorICAgIFBhcnRpYWxSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIGFkZFNpbWRPcChzdGQ6OmFycmF5PHVpbnQ4X3QsIG51bUltbWVkaWF0
ZXM+LCBzdGQ6OmFycmF5PEV4cHJlc3Npb25UeXBlLCBudW1Bcmd1bWVudHM+LCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KTsKIAogICAgIHZvaWQgZHVtcChjb25zdCBDb250cm9sU3RhY2smLCBjb25z
dCBTdGFjayogZXhwcmVzc2lvblN0YWNrKTsKICAgICB2b2lkIHNldFBhcnNlcihGdW5jdGlvblBh
cnNlcjxCM0lSR2VuZXJhdG9yPiogcGFyc2VyKSB7IG1fcGFyc2VyID0gcGFyc2VyOyB9OwogICAg
IHZvaWQgZGlkRmluaXNoUGFyc2luZ0xvY2FscygpIHsgfQotICAgIHZvaWQgZGlkUG9wVmFsdWVG
cm9tU3RhY2soKSB7IC0tbV9zdGFja1NpemU7IH0KKyAgICB2b2lkIGRpZFBvcFZhbHVlRnJvbVN0
YWNrKFdhc206OlR5cGUpIHsgLS1tX3N0YWNrU2l6ZTsgfQogCiAgICAgVmFsdWUqIGNvbnN0YW50
KEIzOjpUeXBlLCB1aW50NjRfdCBiaXRzLCBzdGQ6Om9wdGlvbmFsPE9yaWdpbj4gPSBzdGQ6Om51
bGxvcHQpOwogICAgIFZhbHVlKiBmcmFtZVBvaW50ZXIoKTsKQEAgLTg4NCw3ICs4OTIsNyBAQCBC
Mzo6VHlwZSBCM0lSR2VuZXJhdG9yOjp0b0IzUmVzdWx0VHlwZShCbG9ja1NpZ25hdHVyZSByZXR1
cm5UeXBlKQogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQogCi1hdXRvIEIz
SVJHZW5lcmF0b3I6OmFkZExvY2FsKFR5cGUgdHlwZSwgdWludDMyX3QgY291bnQpIC0+IFBhcnRp
YWxSZXN1bHQKK2F1dG8gQjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1aW50MzJf
dCwgdWludDMyX3QgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBzaXplX3QgbmV3U2l6
ZSA9IG1fbG9jYWxzLnNpemUoKSArIGNvdW50OwogICAgIEFTU0VSVCghKENoZWNrZWRVaW50MzIo
Y291bnQpICsgbV9sb2NhbHMuc2l6ZSgpKS5oYXNPdmVyZmxvd2VkKCkpOwpAQCAtMTA3OSw3ICsx
MDg3LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZUNvcHkodW5zaWduZWQgZHN0VGFi
bGVJbmRleCwgdW5zaWduZWQgc3JjVGFibGVJbmRleCwKICAgICByZXR1cm4geyB9OwogfQogCi1h
dXRvIEIzSVJHZW5lcmF0b3I6OmdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CithdXRvIEIzSVJHZW5lcmF0b3I6OmdldExvY2Fs
KHVpbnQzMl90IGluZGV4LCBXYXNtOjpUeXBlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQ
YXJ0aWFsUmVzdWx0CiB7CiAgICAgQVNTRVJUKG1fbG9jYWxzW2luZGV4XSk7CiAgICAgcmVzdWx0
ID0gcHVzaChtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywg
QjM6OkdldCwgb3JpZ2luKCksIG1fbG9jYWxzW2luZGV4XSkpOwpAQCAtMTI4Nyw3ICsxMjk1LDcg
QEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGREYXRhRHJvcCh1bnNpZ25lZCBkYXRhU2VnbWVudElu
ZGV4KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBCM0lSR2Vu
ZXJhdG9yOjpzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+
IFBhcnRpYWxSZXN1bHQKK2F1dG8gQjNJUkdlbmVyYXRvcjo6c2V0TG9jYWwodWludDMyX3QgaW5k
ZXgsIFdhc206OlR5cGUsIEV4cHJlc3Npb25UeXBlIHZhbHVlKSAtPiBQYXJ0aWFsUmVzdWx0CiB7
CiAgICAgQVNTRVJUKG1fbG9jYWxzW2luZGV4XSk7CiAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxWYXJpYWJsZVZhbHVlPihtX3Byb2MsIEIzOjpTZXQsIG9yaWdpbigpLCBtX2xvY2Fsc1tp
bmRleF0sIGdldCh2YWx1ZSkpOwpAQCAtMTc1MSw2ICsxNzU5LDkgQEAgaW5saW5lIFZhbHVlKiBC
M0lSR2VuZXJhdG9yOjplbWl0QXRvbWljTG9hZE9wKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2
YWx1ZVR5cGUKICAgICBjYXNlIEIzOjpXaWR0aDY0OgogICAgICAgICB2YWx1ZSA9IGNvbnN0YW50
KEludDY0LCAwKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCMzo6V2lkdGgxMjg6CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIHJldHVybiBzYW5pdGl6ZUF0b21pY1Jlc3VsdChvcCwgdmFsdWVUeXBlLCBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPihtX3Byb2MsIG1lbW9yeUtpbmQoQXRvbWlj
WGNoZ0FkZCksIG9yaWdpbigpLCBhY2Nlc3NXaWR0aChvcCksIHZhbHVlLCBwb2ludGVyKSk7CkBA
IC0xOTM0LDYgKzE5NDUsNyBAQCBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6ZW1pdEF0b21pY0NvbXBh
cmVFeGNoYW5nZShFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUgdmFsdWVUeQogICAgICAgICAgICAg
bWF4aW11bSA9IGNvbnN0YW50KEludDY0LCBVSU5UMzJfTUFYKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEIzOjpXaWR0aDY0OgorICAgICAgICBjYXNlIEIzOjpXaWR0aDEyODoK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CkBAIC0xOTQ4LDYgKzE5NjAsNyBAQCBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6
ZW1pdEF0b21pY0NvbXBhcmVFeGNoYW5nZShFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUgdmFsdWVU
eQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQjM6OldpZHRoMzI6CiAgICAgICAg
IGNhc2UgQjM6OldpZHRoNjQ6CisgICAgICAgIGNhc2UgQjM6OldpZHRoMTI4OgogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgICAgICBicmVh
azsKQEAgLTE5OTMsNiArMjAwNiw5IEBAIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0QXRvbWlj
Q29tcGFyZUV4Y2hhbmdlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1ZVR5CiAgICAgICAg
IGNhc2UgQjM6OldpZHRoNjQ6CiAgICAgICAgICAgICBhZGRpbmdWYWx1ZSA9IGNvbnN0YW50KElu
dDY0LCAwKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEIzOjpXaWR0aDEyODoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8QXRvbWljVmFsdWU+KG1fcHJvYywgbWVtb3J5S2luZChBdG9taWNYY2hnQWRkKSwg
b3JpZ2luKCksIGFjY2Vzc1dpZHRoLCBhZGRpbmdWYWx1ZSwgcG9pbnRlcik7CiAgICAgICAgIGZh
aWx1cmVWYWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlVwc2lsb25WYWx1ZT4o
bV9wcm9jLCBvcmlnaW4oKSwgcmVzdWx0KTsKQEAgLTIyNTksMTAgKzIyNzUsMTQgQEAgYXV0byBC
M0lSR2VuZXJhdG9yOjphZGRTZWxlY3QoRXhwcmVzc2lvblR5cGUgY29uZGl0aW9uLCBFeHByZXNz
aW9uVHlwZSBub25aZXJvLAogCiBCM0lSR2VuZXJhdG9yOjpFeHByZXNzaW9uVHlwZSBCM0lSR2Vu
ZXJhdG9yOjphZGRDb25zdGFudChUeXBlIHR5cGUsIHVpbnQ2NF90IHZhbHVlKQogewotCiAgICAg
cmV0dXJuIHB1c2goY29uc3RhbnQodG9CM1R5cGUodHlwZSksIHZhbHVlKSk7CiB9CiAKK0IzSVJH
ZW5lcmF0b3I6OkV4cHJlc3Npb25UeXBlIEIzSVJHZW5lcmF0b3I6OmFkZENvbnN0YW50KHYxMjhf
dCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gcHVzaChtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENv
bnN0MTI4VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKSk7Cit9CisKIHZvaWQgQjNJUkdl
bmVyYXRvcjo6ZW1pdEVudHJ5VGllclVwQ2hlY2soKQogewogICAgIGlmICghbV90aWVyVXApCkBA
IC0yNjQ3LDE0ICsyNjY3LDE0IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkRGVsZWdhdGVUb1Vu
cmVhY2hhYmxlKENvbnRyb2xUeXBlJiB0YXJnZXQsIENvbnRyb2xUeXBlJiBkCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUaHJvdyh1bnNpZ25lZCBleGNlcHRp
b25JbmRleCwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgU3RhY2smKSAtPiBQYXJ0aWFs
UmVzdWx0CithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlvbklu
ZGV4LCBTdGFjayYgYXJncykgLT4gUGFydGlhbFJlc3VsdAogewogICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2ggPSBtX3Byb2MuYWRkPFBhdGNocG9pbnRWYWx1ZT4oQjM6OlZvaWQsIG9yaWdpbigp
KTsKICAgICBwYXRjaC0+ZWZmZWN0cy50ZXJtaW5hbCA9IHRydWU7CiAgICAgcGF0Y2gtPmFwcGVu
ZChpbnN0YW5jZVZhbHVlKCksIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
CiAgICAgcGF0Y2gtPmFwcGVuZChmcmFtZVBvaW50ZXIoKSwgVmFsdWVSZXA6OnJlZyhHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJncy5zaXpl
KCk7ICsraSkKLSAgICAgICAgcGF0Y2gtPmFwcGVuZChnZXQoYXJnc1tpXSksIFZhbHVlUmVwOjpz
dGFja0FyZ3VtZW50KGkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7CisgICAgICAgIHBhdGNo
LT5hcHBlbmQoZ2V0KGFyZ3NbaV0udmFsdWUoKSksIFZhbHVlUmVwOjpzdGFja0FyZ3VtZW50KGkg
KiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7CiAgICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkpOwogICAgIFBhdGNocG9pbnRFeGNlcHRp
b25IYW5kbGUgaGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKG1fY3VycmVu
dEJsb2NrLCBwYXRjaCk7CiAgICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbdGhpcywgZXhjZXB0aW9u
SW5kZXgsIGhhbmRsZV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAgLTM3MzcsNiArMzc1NywyMiBAQCBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNVRjMyPihFeHByZXNzaW9uVHlwZSBhcmdW
YXIsIEV4cHJlc3NpbwogICAgIHJldHVybiB7IH07CiB9CiAKKyNkZWZpbmUgQ1JFQVRFX1NJTURf
Q0FTRShuYW1lLCBpZCwgYjNvcCwgaW5jLCB3YXNtT3AsIHJldHVyblR5cGUsIG51bUltbWVkaWF0
ZXMsIGltbWVkaWF0ZVNpemVzLCBudW1Bcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIGxhbmVJbnRl
cnByZXRhdGlvbiwgc2lnbkV4dGVuZE1vZGUpIFwKK3RlbXBsYXRlPD4gXAorYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRTaW1kT3A8RXh0U2ltZE9wVHlwZTo6bmFtZSwgbnVtSW1tZWRpYXRlcywgbnVt
QXJndW1lbnRzPihzdGQ6OmFycmF5PHVpbnQ4X3QsIG51bUltbWVkaWF0ZXM+IGltbWVkaWF0ZXMs
IHN0ZDo6YXJyYXk8RXhwcmVzc2lvblR5cGUsIG51bUFyZ3VtZW50cz4gYXJndW1lbnRzLCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0IFwKK3sgXAorICAgIHN0ZDo6YXJy
YXk8VmFsdWUqLCBudW1Bcmd1bWVudHM+IGFyZ3VtZW50VmFsdWVzOyBcCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1Bcmd1bWVudHM7ICsraSkgeyBcCisgICAgICAgIGFyZ3VtZW50VmFs
dWVzW2ldID0gZ2V0KGFyZ3VtZW50c1tpXSk7IFwKKyAgICB9XAorICAgIGF1dG8gYXJnc1RvQXBw
bHkgPSBzdGQ6OnR1cGxlX2NhdChzdGQ6OmZvcndhcmRfYXNfdHVwbGUobV9wcm9jLCBvcmlnaW4o
KSwgYjNvcCwgdG9CM1R5cGUocmV0dXJuVHlwZSksIG51bUFyZ3VtZW50cywgbGFuZUludGVycHJl
dGF0aW9uLCBzaWduRXh0ZW5kTW9kZSksIGltbWVkaWF0ZXMsIGFyZ3VtZW50VmFsdWVzKTsgXAor
ICAgIHJlc3VsdCA9IHB1c2goc3RkOjphcHBseShbPV0oYXV0byAmJi4uLiBhcmdzKSB7IHJldHVy
biBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFNpbWRWYWx1ZT4oYXJncy4uLik7IH0sIGFyZ3NU
b0FwcGx5KSk7IFwKKyAgICByZXR1cm4geyB9OyBcCit9CisKK0ZPUl9FQUNIX1dBU01fRVhUX1NJ
TURfT1AoQ1JFQVRFX1NJTURfQ0FTRSkKKyN1bmRlZiBDUkVBVEVfU0lNRF9DQVNFCisKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKICNpbmNsdWRlICJXYXNtQjNJUkdlbmVyYXRvcklubGlu
ZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5n
Q29udmVudGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0Nv
bnZlbnRpb24uY3BwCmluZGV4IDIwM2M4NDNhZThlNi4uYmMxZTE1NzhlNjgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAgY29uc3QgSlNDYWxsaW5nQ29udmVudGlvbiYganNDYWxsaW5nQ29u
dmVudGlvbigpCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHN0YXRpY0pTQ0NhbGxpbmdDb252
ZW50aW9uRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShzdGF0aWNKU0NDYWxsaW5nQ29udmVudGlv
bkZsYWcsIFtdICgpIHsKICAgICAgICAgUmVnaXN0ZXJTZXQgY2FsbGVyU2F2ZVJlZ2lzdGVycyA9
IFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbGVyU2F2ZVJlZ2lzdGVy
cy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworLy8gICAgICAg
IGNhbGxlclNhdmVSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lz
dGVycygpKTsgLy8gVE9ETwogCiAgICAgICAgIHN0YXRpY0pTQ2FsbGluZ0NvbnZlbnRpb24uY29u
c3RydWN0KFZlY3RvcjxSZWc+KCksIFZlY3RvcjxSZWc+KCksIFJlZ2lzdGVyU2V0OjpjYWxsZWVT
YXZlUmVnaXN0ZXJzKCksIFdURk1vdmUoY2FsbGVyU2F2ZVJlZ2lzdGVycykpOwogICAgIH0pOwpA
QCAtNzMsNyArNzMsNyBAQCBjb25zdCBXYXNtQ2FsbGluZ0NvbnZlbnRpb24mIHdhc21DYWxsaW5n
Q29udmVudGlvbigpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjcmF0Y2hHUFJzLnNpemUoKSA+
PSAyKTsKIAogICAgICAgICBSZWdpc3RlclNldCBjYWxsZXJTYXZlUmVnaXN0ZXJzID0gUmVnaXN0
ZXJTZXQ6OmFsbFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsZXJTYXZlUmVnaXN0ZXJzLmV4Y2x1
ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisvLyAgICAgICAgY2FsbGVy
U2F2ZVJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkp
OyAvL1RPRE8KIAogICAgICAgICBzdGF0aWNXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY29uc3RydWN0
KFdURk1vdmUoZ3ByQXJndW1lbnRSZWdpc3RlcnMpLCBXVEZNb3ZlKGZwckFyZ3VtZW50UmVnaXN0
ZXJzKSwgV1RGTW92ZShzY3JhdGNoR1BScyksIFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0
ZXJzKCksIFdURk1vdmUoY2FsbGVyU2F2ZVJlZ2lzdGVycykpOwogICAgIH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAppbmRleCA1
OTFlZWIyN2IwMTYuLmY4ZjZlMDRkZDc2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmgKQEAgLTg4LDE0ICs4OCwxNCBAQCBwdWJs
aWM6CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2FzbUNhbGxpbmdDb252ZW50aW9uKTsKIAog
cHJpdmF0ZToKLSAgICBBcmd1bWVudExvY2F0aW9uIG1hcnNoYWxsTG9jYXRpb25JbXBsKENhbGxS
b2xlIHJvbGUsIGNvbnN0IFZlY3RvcjxSZWc+JiByZWdBcmdzLCBzaXplX3QmIGNvdW50LCBzaXpl
X3QmIHN0YWNrT2Zmc2V0KSBjb25zdAorICAgIEFyZ3VtZW50TG9jYXRpb24gbWFyc2hhbGxMb2Nh
dGlvbkltcGwoQ2FsbFJvbGUgcm9sZSwgY29uc3QgVmVjdG9yPFJlZz4mIHJlZ0FyZ3MsIHNpemVf
dCYgY291bnQsIHNpemVfdCYgc3RhY2tPZmZzZXQsIHNpemVfdCBhcmdTaXplKSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKGNvdW50IDwgcmVnQXJncy5zaXplKCkpCiAgICAgICAgICAgICByZXR1
cm4gQXJndW1lbnRMb2NhdGlvbjo6cmVnKHJlZ0FyZ3NbY291bnQrK10pOwogCiAgICAgICAgIGNv
dW50Kys7CiAgICAgICAgIEFyZ3VtZW50TG9jYXRpb24gcmVzdWx0ID0gcm9sZSA9PSBDYWxsUm9s
ZTo6Q2FsbGVyID8gQXJndW1lbnRMb2NhdGlvbjo6c3RhY2tBcmd1bWVudChzdGFja09mZnNldCkg
OiBBcmd1bWVudExvY2F0aW9uOjpzdGFjayhzdGFja09mZnNldCk7Ci0gICAgICAgIHN0YWNrT2Zm
c2V0ICs9IHNpemVvZihSZWdpc3Rlcik7CisgICAgICAgIHN0YWNrT2Zmc2V0ICs9IHNpemVvZihS
ZWdpc3RlcikgKiBhcmdTaXplOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAt
MTA5LDEwICsxMDksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJu
cmVmOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWY6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OlJlZk51bGw6Ci0gICAgICAgICAgICByZXR1cm4gbWFyc2hhbGxMb2NhdGlvbkltcGwocm9sZSwg
Z3ByQXJncywgZ3BBcmd1bWVudENvdW50LCBzdGFja09mZnNldCk7CisgICAgICAgICAgICByZXR1
cm4gbWFyc2hhbGxMb2NhdGlvbkltcGwocm9sZSwgZ3ByQXJncywgZ3BBcmd1bWVudENvdW50LCBz
dGFja09mZnNldCwgdmFsdWVUeXBlLnNpemUoKSAvIDgpOwogICAgICAgICBjYXNlIFR5cGVLaW5k
OjpGMzI6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkY2NDoKLSAgICAgICAgICAgIHJldHVybiBt
YXJzaGFsbExvY2F0aW9uSW1wbChyb2xlLCBmcHJBcmdzLCBmcEFyZ3VtZW50Q291bnQsIHN0YWNr
T2Zmc2V0KTsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VjEyODoKKyAgICAgICAgICAgIHJldHVy
biBtYXJzaGFsbExvY2F0aW9uSW1wbChyb2xlLCBmcHJBcmdzLCBmcEFyZ3VtZW50Q291bnQsIHN0
YWNrT2Zmc2V0LCB2YWx1ZVR5cGUuc2l6ZSgpIC8gOCk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZv
cm1hdC5oCmluZGV4IGM3OWUzMzdjN2E3YS4uZmU1MzgzNWMxOTRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCkBAIC02OCw2ICs2OCw3IEBAIGlubGluZSBib29sIGlz
VmFsdWVUeXBlKFR5cGUgdHlwZSkKICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6CiAgICAgY2FzZSBU
eXBlS2luZDo6RjMyOgogICAgIGNhc2UgVHlwZUtpbmQ6OkY2NDoKKyAgICBjYXNlIFR5cGVLaW5k
OjpWMTI4OgogICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKICAgICBjYXNlIFR5cGVLaW5k
OjpGdW5jcmVmOgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTgyLDcgKzgzLDcgQEAgaW5saW5l
IGJvb2wgaXNWYWx1ZVR5cGUoVHlwZSB0eXBlKQogCiBpbmxpbmUgSlNTdHJpbmcqIHR5cGVUb1N0
cmluZyhWTSYgdm0sIFR5cGVLaW5kIHR5cGUpCiB7Ci0jZGVmaW5lIFRZUEVfQ0FTRShtYWNyb05h
bWUsIHZhbHVlLCBiMywgaW5jLCB3YXNtTmFtZSkgXAorI2RlZmluZSBUWVBFX0NBU0UobWFjcm9O
YW1lLCB2YWx1ZSwgYjMsIGluYywgd2FzbU5hbWUsIC4uLikgXAogICAgIGNhc2UgVHlwZUtpbmQ6
Om1hY3JvTmFtZTogXAogICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAjd2Fz
bU5hbWUpOyBcCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
dW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmgKaW5kZXggN2U0YTQwYmY0NTA4Li5hMDg5
OTk5OThlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5j
dGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oCkBAIC04MSw2ICs4MSw3IEBAIHB1Ymxp
YzoKICAgICB1aW50MzJfdCBudW1Bcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX251bUFyZ3Vt
ZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxUeXBlPiYgY29uc3RhbnRUeXBlcygpIGNvbnN0IHsg
cmV0dXJuIG1fY29uc3RhbnRUeXBlczsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNv
bnN0YW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzOyB9CisgICAgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYgY29uc3RhbnRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50
czsgfQogICAgIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdCB7
IHJldHVybiAqbV9pbnN0cnVjdGlvbnM7IH0KIAogICAgIHZvaWQgc2V0TnVtVmFycyh1bnNpZ25l
ZCBudW1WYXJzKSB7IG1fbnVtVmFycyA9IG51bVZhcnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggZDk3ZTdlNzU5YTRmLi5jMjNl
MWE5YzNjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5j
dGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlv
blBhcnNlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2FzbVBhcnNlci5oIgogI2lu
Y2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4K
KyNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBX
YXNtIHsKIApAQCAtODUsNiArODYsMTEgQEAgcHVibGljOgogICAgICAgICBvcGVyYXRvciBFeHBy
ZXNzaW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogICAgICAgICBFeHByZXNz
aW9uVHlwZSBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgICAgICAK
KyAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIG91dC5wcmludChtX3ZhbHVlLCAiOiAiLCBtX3R5cGUpOworICAgICAgICB9CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBUeXBlIG1fdHlwZTsKQEAgLTEyNSw3ICsxMzEsNyBAQCBw
cml2YXRlOgogI2RlZmluZSBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKHJlc3Vs
dCwgd2hhdCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYobV9leHByZXNzaW9uU3RhY2suaXNFbXB0eSgpLCAiY2FuJ3QgcG9w
IGVtcHR5IHN0YWNrIGluICIgd2hhdCk7IFwKICAgICAgICAgcmVzdWx0ID0gbV9leHByZXNzaW9u
U3RhY2sudGFrZUxhc3QoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1f
Y29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjayhyZXN1bHQudHlwZSgpKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCiAgICAgdGVtcGxh
dGU8T3BUeXBlPgpAQCAtMTQ3LDYgKzE1MywxMSBAQCBwcml2YXRlOgogICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGF0b21pY05vdGlmeShFeHRBdG9taWNPcFR5cGUpOwogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGF0b21pY0ZlbmNlKEV4dEF0b21pY09w
VHlwZSk7CiAKKyAgICB0ZW1wbGF0ZTxFeHRTaW1kT3BUeXBlLCBzaXplX3QgbnVtSW1tZWRpYXRl
cywgc2l6ZV90IG51bUFyZ3VtZW50cz4KKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBzaW1kQ2FzZShib29sIHJlYWNoYWJsZSwgVHlwZSByZXR1cm5UeXBlLCBjb25zdCBzdGQ6
OmFycmF5PGludCwgbnVtSW1tZWRpYXRlcz4mIGltbWVkaWF0ZVNpemVzLCBjb25zdCBzdGQ6OmFy
cmF5PGNvbnN0IFR5cGUqLCBudW1Bcmd1bWVudHM+JiBhcmd1bWVudFR5cGVzKTsKKyAgICB0ZW1w
bGF0ZTxTaW1kTGFuZU9wZXJhdGlvbiwgU2ltZExhbmVJbnRlcnByZXRhdGlvbiwgU2ltZFNpZ25F
eHRlbmRNb2RlPgorICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHNpbWRTcGVj
aWFsQ2FzZShib29sIHJlYWNoYWJsZSA9IHRydWUpOworCiAgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gcGFyc2VUYWJsZUluZGV4KHVuc2lnbmVkJik7CiAgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VFbGVtZW50SW5kZXgodW5zaWduZWQmKTsKICAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZURhdGFTZWdtZW50SW5kZXgo
dW5zaWduZWQmKTsKQEAgLTI2NCw3ICsyNzUsNyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRl
eHQ+OjpwYXJzZSgpIC0+IFJlc3VsdAogICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwg
bnVtYmVyT2ZMb2NhbHM7ICsraSkKICAgICAgICAgICAgIG1fbG9jYWxzLnVuY2hlY2tlZEFwcGVu
ZCh0eXBlT2ZMb2NhbCk7CiAKLSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkTG9j
YWwodHlwZU9mTG9jYWwsIG51bWJlck9mTG9jYWxzKSk7CisgICAgICAgIFdBU01fVFJZX0FERF9U
T19DT05URVhUKGFkZExvY2FsKHR5cGVPZkxvY2FsLCBtX2xvY2Fscy5zaXplKCkgLSBudW1iZXJP
ZkxvY2FscywgbnVtYmVyT2ZMb2NhbHMpKTsKICAgICB9CiAKICAgICBtX2NvbnRleHQuZGlkRmlu
aXNoUGFyc2luZ0xvY2FscygpOwpAQCAtNTQ5LDYgKzU2MCw2NSBAQCBhdXRvIEZ1bmN0aW9uUGFy
c2VyPENvbnRleHQ+OjphdG9taWNGZW5jZShFeHRBdG9taWNPcFR5cGUgb3ApIC0+IFBhcnRpYWxS
ZXN1bHQKICAgICByZXR1cm4geyB9OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0Pgor
dGVtcGxhdGU8U2ltZExhbmVPcGVyYXRpb24gb3AsIFNpbWRMYW5lSW50ZXJwcmV0YXRpb24gbGFu
ZUludGVycHJldGF0aW9uLCBTaW1kU2lnbkV4dGVuZE1vZGUgc2lnbk1vZGU+CithdXRvIEZ1bmN0
aW9uUGFyc2VyPENvbnRleHQ+OjpzaW1kU3BlY2lhbENhc2UoYm9vbCByZWFjaGFibGUpIC0+IFBh
cnRpYWxSZXN1bHQKK3sKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBTaW1kTGFuZU9wZXJh
dGlvbjo6Q29uc3Q6IHsKKyAgICAgICAgdjEyOF90IGNvbnN0YW50OworICAgICAgICBBU1NFUlQo
bGFuZUludGVycHJldGF0aW9uID09IFNpbWRMYW5lSW50ZXJwcmV0YXRpb246OnYxMjgpOworICAg
ICAgICBBU1NFUlQoc2lnbk1vZGUgPT0gU2ltZFNpZ25FeHRlbmRNb2RlOjpOQSk7CisgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlSW1tQnl0ZUFycmF5MTYoY29uc3RhbnQpLCAiY2Fu
J3QgcGFyc2UgMTI4LWJpdCB2ZWN0b3IgY29uc3RhbnQiKTsKKyAgICAgICAgaWYgKCFyZWFjaGFi
bGUpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIG1fZXhwcmVzc2lvblN0YWNr
LmNvbnN0cnVjdEFuZEFwcGVuZChUeXBlczo6VjEyOCwgbV9jb250ZXh0LmFkZENvbnN0YW50KGNv
bnN0YW50KSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRy
dWUsICJpbnZhbGlkIHNpbWQgb3AgIiwgU2ltZExhbmVPcGVyYXRpb25EdW1wKG9wKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4geyB9OworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb250ZXh0PgordGVtcGxhdGU8RXh0U2ltZE9wVHlwZSBvcCwgc2l6ZV90IG51bUltbWVkaWF0
ZXMsIHNpemVfdCBudW1Bcmd1bWVudHM+CithdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+Ojpz
aW1kQ2FzZShib29sIHJlYWNoYWJsZSwgVHlwZSByZXN1bHRUeXBlLCBjb25zdCBzdGQ6OmFycmF5
PGludCwgbnVtSW1tZWRpYXRlcz4mIGltbWVkaWF0ZVNpemVzLCBjb25zdCBzdGQ6OmFycmF5PGNv
bnN0IFR5cGUqLCBudW1Bcmd1bWVudHM+JiBhcmd1bWVudFR5cGVzKSAtPiBQYXJ0aWFsUmVzdWx0
Cit7CisgICAgc3RkOjphcnJheTx1aW50OF90LCBudW1JbW1lZGlhdGVzPiBpbW1zOworICAgIHN0
ZDo6YXJyYXk8RXhwcmVzc2lvblR5cGUsIG51bUFyZ3VtZW50cz4gYXJnczsKKyAgICAKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUltbWVkaWF0ZXM7ICsraSkKKyAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighcGFyc2VJbW1MYW5lSWR4KGltbWVkaWF0ZVNpemVzW2ldLCBpbW1zW2ld
KSwgImNhbid0IHBhcnNlIGxhbmUgaW5kZXggaW1tZWRpYXRlIik7CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bUFyZ3VtZW50czsgKytpKSB7CisgICAgICAgIFR5cGVkRXhwcmVzc2lv
biBlOworICAgICAgICAKKyAgICAgICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5U
TyhlLCAic2ltZCBhcmd1bWVudCIpOworICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGUu
dHlwZSgpICE9ICphcmd1bWVudFR5cGVzW2ldLCAidHlwZSBtaXNtYXRjaCBmb3IgYXJndW1lbnQg
IiwgaSk7CisgICAgICAgIGFyZ3NbaV0gPSBlLnZhbHVlKCk7CisgICAgfQorICAgIAorICAgIGlm
ICghcmVhY2hhYmxlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKHJlc3VsdFR5cGUu
aXNWb2lkKCkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7CisgICAg
UGFydGlhbFJlc3VsdCBvcFJlc3VsdCA9IG1fY29udGV4dC50ZW1wbGF0ZSBhZGRTaW1kT3A8b3A+
KGltbXMsIGFyZ3MsIHJlc3VsdCk7CisgICAgaWYgKFVOTElLRUxZKCFvcFJlc3VsdCkpCisgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3ZlKG9wUmVzdWx0LmVycm9yKCkpKTsKKyAg
ICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQocmVzdWx0VHlwZSwgcmVzdWx0
KTsKKyAgICAKKyAgICByZXR1cm4geyB9OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0
PgogYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VUYWJsZUluZGV4KHVuc2lnbmVk
JiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKQEAgLTExMjcsNyArMTE5Nyw3IEBAIEZPUl9F
QUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBXQVNNX0ZBSUxf
SUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW5kZXhGb3JMb2NhbChpbmRleCkpOwogCiAgICAgICAgIEV4
cHJlc3Npb25UeXBlIHJlc3VsdDsKLSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoZ2V0
TG9jYWwoaW5kZXgsIHJlc3VsdCkpOworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChn
ZXRMb2NhbChpbmRleCwgbV9sb2NhbHNbaW5kZXhdLCByZXN1bHQpKTsKICAgICAgICAgbV9leHBy
ZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKG1fbG9jYWxzW2luZGV4XSwgcmVzdWx0KTsK
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CkBAIC0xMTQwLDcgKzEyMTAsNyBAQCBGT1JfRUFD
SF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgV0FTTV9UUllfUE9Q
X0VYUFJFU1NJT05fU1RBQ0tfSU5UTyh2YWx1ZSwgInNldF9sb2NhbCIpOwogICAgICAgICBXQVNN
X1ZBTElEQVRPUl9GQUlMX0lGKGluZGV4ID49IG1fbG9jYWxzLnNpemUoKSwgImF0dGVtcHQgdG8g
c2V0IHVua25vd24gbG9jYWwgIiwgaW5kZXgsICIgbGFzdCBvbmUgaXMgIiwgbV9sb2NhbHMuc2l6
ZSgpKTsKICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKHZhbHVlLnR5
cGUoKSwgbV9sb2NhbHNbaW5kZXhdKSwgInNldF9sb2NhbCB0byB0eXBlICIsIHZhbHVlLnR5cGUo
KS5raW5kLCAiIGV4cGVjdGVkICIsIG1fbG9jYWxzW2luZGV4XS5raW5kKTsKLSAgICAgICAgV0FT
TV9UUllfQUREX1RPX0NPTlRFWFQoc2V0TG9jYWwoaW5kZXgsIHZhbHVlKSk7CisgICAgICAgIFdB
U01fVFJZX0FERF9UT19DT05URVhUKHNldExvY2FsKGluZGV4LCBtX2xvY2Fsc1tpbmRleF0sIHZh
bHVlKSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xMTUyLDcgKzEyMjIsNyBA
QCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgVHlw
ZWRFeHByZXNzaW9uIHZhbHVlID0gbV9leHByZXNzaW9uU3RhY2subGFzdCgpOwogICAgICAgICBX
QVNNX1ZBTElEQVRPUl9GQUlMX0lGKGluZGV4ID49IG1fbG9jYWxzLnNpemUoKSwgImF0dGVtcHQg
dG8gdGVlIHVua25vd24gbG9jYWwgIiwgaW5kZXgsICIgbGFzdCBvbmUgaXMgIiwgbV9sb2NhbHMu
c2l6ZSgpKTsKICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKHZhbHVl
LnR5cGUoKSwgbV9sb2NhbHNbaW5kZXhdKSwgInNldF9sb2NhbCB0byB0eXBlICIsIHZhbHVlLnR5
cGUoKS5raW5kLCAiIGV4cGVjdGVkICIsIG1fbG9jYWxzW2luZGV4XS5raW5kKTsKLSAgICAgICAg
V0FTTV9UUllfQUREX1RPX0NPTlRFWFQoc2V0TG9jYWwoaW5kZXgsIHZhbHVlKSk7CisgICAgICAg
IFdBU01fVFJZX0FERF9UT19DT05URVhUKHNldExvY2FsKGluZGV4LCBtX2xvY2Fsc1tpbmRleF0s
IHZhbHVlKSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xMjAwLDcgKzEyNzAs
NyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAg
ICAgIFR5cGVkRXhwcmVzc2lvbiBhcmcgPSBtX2V4cHJlc3Npb25TdGFjay5hdChpKTsKICAgICAg
ICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZShhcmcudHlwZSgpLCBjYWxs
ZWVTaWduYXR1cmUuYXJndW1lbnQoaSAtIGZpcnN0QXJndW1lbnRJbmRleCkpLCAiYXJndW1lbnQg
dHlwZSBtaXNtYXRjaCBpbiBjYWxsLCBnb3QgIiwgYXJnLnR5cGUoKS5raW5kLCAiLCBleHBlY3Rl
ZCAiLCBjYWxsZWVTaWduYXR1cmUuYXJndW1lbnQoaSAtIGZpcnN0QXJndW1lbnRJbmRleCkua2lu
ZCk7CiAgICAgICAgICAgICBhcmdzLnVuY2hlY2tlZEFwcGVuZChhcmcpOwotICAgICAgICAgICAg
bV9jb250ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKCk7CisgICAgICAgICAgICBtX2NvbnRleHQu
ZGlkUG9wVmFsdWVGcm9tU3RhY2soYXJnLnR5cGUoKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9l
eHByZXNzaW9uU3RhY2suc2hyaW5rKGZpcnN0QXJndW1lbnRJbmRleCk7CiAKQEAgLTEyNDEsNyAr
MTMxMSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAg
ICAgICAgICAgaWYgKGkgPCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSAxKQogICAgICAgICAg
ICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZShhcmcudHlwZSgpLCBjYWxs
ZWVTaWduYXR1cmUuYXJndW1lbnQoaSAtIGZpcnN0QXJndW1lbnRJbmRleCkpLCAiYXJndW1lbnQg
dHlwZSBtaXNtYXRjaCBpbiBjYWxsX2luZGlyZWN0LCBnb3QgIiwgYXJnLnR5cGUoKS5raW5kLCAi
LCBleHBlY3RlZCAiLCBjYWxsZWVTaWduYXR1cmUuYXJndW1lbnQoaSAtIGZpcnN0QXJndW1lbnRJ
bmRleCkua2luZCk7CiAgICAgICAgICAgICBhcmdzLnVuY2hlY2tlZEFwcGVuZChhcmcpOwotICAg
ICAgICAgICAgbV9jb250ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKCk7CisgICAgICAgICAgICBt
X2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soYXJnLnR5cGUoKSk7CiAgICAgICAgIH0KICAg
ICAgICAgbV9leHByZXNzaW9uU3RhY2suc2hyaW5rKGZpcnN0QXJndW1lbnRJbmRleCk7CiAKQEAg
LTEyNzEsNyArMTM0MSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9D
QVNFKQogICAgICAgICAgICAgaWYgKGkgPCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSAxKQog
ICAgICAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoYXJnLnR5cGUoKSAhPSBjYWxs
ZWVTaWduYXR1cmUuYXJndW1lbnQoaSAtIGZpcnN0QXJndW1lbnRJbmRleCksICJhcmd1bWVudCB0
eXBlIG1pc21hdGNoIGluIGNhbGxfaW5kaXJlY3QsIGdvdCAiLCBhcmcudHlwZSgpLmtpbmQsICIs
IGV4cGVjdGVkICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudElu
ZGV4KS5raW5kKTsKICAgICAgICAgICAgIGFyZ3MudW5jaGVja2VkQXBwZW5kKGFyZyk7Ci0gICAg
ICAgICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsKKyAgICAgICAgICAgIG1f
Y29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjayhhcmcudHlwZSgpKTsKICAgICAgICAgfQogICAg
ICAgICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1bWVudEluZGV4KTsKIApAQCAt
MTQ2MiwxNyArMTUzMiwxNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVf
Q0FTRSkKIAogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKG1fZXhwcmVzc2lvblN0YWNr
LnNpemUoKSA8IGV4Y2VwdGlvblNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksICJUb28gZmV3IGFy
Z3VtZW50cyBvbiBzdGFjayBmb3IgdGhlIGV4Y2VwdGlvbiBiZWluZyB0aHJvd24uIFRoZSBleGNl
cHRpb24gZXhwZWN0cyAiLCBleGNlcHRpb25TaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCAiLCBi
dXQgb25seSAiLCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgd2VyZSBwcmVzZW50LiBFeGNl
cHRpb24gaGFzIHNpZ25hdHVyZTogIiwgZXhjZXB0aW9uU2lnbmF0dXJlLnRvU3RyaW5nKCkpOwog
ICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSBleGNl
cHRpb25TaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOwotICAgICAgICBWZWN0b3I8RXhwcmVzc2lv
blR5cGU+IGFyZ3M7CisgICAgICAgIFN0YWNrIGFyZ3MoZXhjZXB0aW9uU2lnbmF0dXJlLmFyZ3Vt
ZW50Q291bnQoKSk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWFyZ3MudHJ5UmVzZXJ2
ZUNhcGFjaXR5KGV4Y2VwdGlvblNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkpLCAiY2FuJ3QgYWxs
b2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgdGhyb3cncyAiLCBleGNlcHRpb25TaWduYXR1cmUuYXJn
dW1lbnRDb3VudCgpLCAiIGFyZ3VtZW50cyIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZXhjZXB0aW9uU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAg
ICAgICBUeXBlZEV4cHJlc3Npb24gYXJnID0gbV9leHByZXNzaW9uU3RhY2suYXQob2Zmc2V0ICsg
aSk7CiAgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGFyZy50eXBlKCkgIT0gZXhj
ZXB0aW9uU2lnbmF0dXJlLmFyZ3VtZW50KGkpLCAiVGhlIGV4Y2VwdGlvbiBiZWluZyB0aHJvd24g
ZXhwZWN0cyB0aGUgYXJndW1lbnQgYXQgaW5kZXggIiwgaSwgIiB0byBiZSAiLCBleGNlcHRpb25T
aWduYXR1cmUuYXJndW1lbnQoaSkua2luZCwgIiBidXQgYXJndW1lbnQgaGFzIHR5cGUgIiwgYXJn
LnR5cGUoKS5raW5kKTsKICAgICAgICAgICAgIGFyZ3MudW5jaGVja2VkQXBwZW5kKGFyZyk7Ci0g
ICAgICAgICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsKKyAgICAgICAgICAg
IG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjayhhcmcudHlwZSgpKTsKICAgICAgICAgfQog
ICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmsob2Zmc2V0KTsKIAotICAgICAgICBXQVNN
X1RSWV9BRERfVE9fQ09OVEVYVChhZGRUaHJvdyhleGNlcHRpb25JbmRleCwgYXJncywgbV9leHBy
ZXNzaW9uU3RhY2spKTsKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkVGhyb3co
ZXhjZXB0aW9uSW5kZXgsIGFyZ3MpKTsKICAgICAgICAgbV91bnJlYWNoYWJsZUJsb2NrcyA9IDE7
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAtMTU4MCw4ICsxNjUwLDEwIEBAIEZPUl9F
QUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogCiAgICAgY2FzZSBEcm9wOiB7
CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIW1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwg
ImNhbid0IGRyb3Agb24gZW1wdHkgc3RhY2siKTsKLSAgICAgICAgbV9leHByZXNzaW9uU3RhY2su
dGFrZUxhc3QoKTsKLSAgICAgICAgbV9jb250ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKCk7Cisg
ICAgICAgIAorICAgICAgICBUeXBlZEV4cHJlc3Npb24gdW51c2VkOworICAgICAgICBXQVNNX1RS
WV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKHVudXNlZCwgImV4cGVjdCBhbiBhcmd1bWVudCB0
byBkcm9wIG9uIHRoZSBzdGFjayIpOworICAgICAgICAKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAKQEAgLTE2MjAsNiArMTY5MiwyNiBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9P
UChDUkVBVEVfQ0FTRSkKIAogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KKworICAgIGNhc2Ug
RXh0U2ltZDogeworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJB
c3NlbWJseVNJTUQoKSwgIndhc20tc2ltZCBpcyBub3QgZW5hYmxlZCIpOworICAgICAgICB1aW50
OF90IHNpbWRPcDsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50OChzaW1k
T3ApLCAiY2FuJ3QgcGFyc2Ugd2FzbSBleHRlbmRlZCBvcGNvZGUiKTsKKworICAgICAgICBFeHRT
aW1kT3BUeXBlIG9wID0gc3RhdGljX2Nhc3Q8RXh0U2ltZE9wVHlwZT4oc2ltZE9wKTsKKyNkZWZp
bmUgQ1JFQVRFX1NJTURfQ0FTRShuYW1lLCBpZCwgYjNvcCwgaW5jLCB3YXNtT3AsIHJldHVyblR5
cGUsIG51bUltbWVkaWF0ZXMsIGltbWVkaWF0ZVNpemVzLCBudW1Bcmd1bWVudHMsIGFyZ3VtZW50
VHlwZXMsIGxhbmVJbnRlcnByZXRhdGlvbiwgc2lnbkV4dGVuZE1vZGUpIGNhc2UgRXh0U2ltZE9w
VHlwZTo6bmFtZTogcmV0dXJuIHNpbWRDYXNlPEV4dFNpbWRPcFR5cGU6Om5hbWUsIG51bUltbWVk
aWF0ZXMsIG51bUFyZ3VtZW50cz4odHJ1ZSwgcmV0dXJuVHlwZSwgaW1tZWRpYXRlU2l6ZXMsIGFy
Z3VtZW50VHlwZXMpOworI2RlZmluZSBDUkVBVEVfU0lNRF9DQVNFX1NQRUNJQUwobmFtZSwgaWQs
IGIzb3AsIGluYywgbGFuZU9wLCBsYW5lSW50ZXJwcmV0YXRpb24sIHNpZ25Nb2RlKSBjYXNlIEV4
dFNpbWRPcFR5cGU6Om5hbWU6IHJldHVybiBzaW1kU3BlY2lhbENhc2U8bGFuZU9wLCBsYW5lSW50
ZXJwcmV0YXRpb24sIHNpZ25Nb2RlPih0cnVlKTsKKyAgICAgICAgc3dpdGNoIChvcCkgeworICAg
ICAgICBGT1JfRUFDSF9XQVNNX0VYVF9TSU1EX09QKENSRUFURV9TSU1EX0NBU0UpCisgICAgICAg
IEZPUl9FQUNIX1dBU01fRVhUX1NJTURfU1BFQ0lBTF9PUChDUkVBVEVfU0lNRF9DQVNFX1NQRUNJ
QUwpCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRy
dWUsICJpbnZhbGlkIGV4dGVuZGVkIHNpbWQgb3AgIiwgc2ltZE9wKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisjdW5kZWYgQ1JFQVRFX1NJTURfQ0FTRQorI3VuZGVmIENSRUFURV9T
SU1EX0NBU0VfU1BFQ0lBTAorICAgICAgICByZXR1cm4geyB9OworICAgIH0KICAgICB9CiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE5NzAsNiArMjA2MiwyNiBAQCBhdXRvIEZ1bmN0
aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbigpIC0+IFBhcnRp
YWxSZXN1bHQKICAgICB9CiAjdW5kZWYgQ1JFQVRFX0FUT01JQ19DQVNFCiAKKyAgICBjYXNlIEV4
dFNpbWQ6IHsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlTSU1EKCksICJ3YXNtLXNpbWQgaXMgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgdWludDhf
dCBzaW1kT3A7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVUludDgoc2ltZE9w
KSwgImNhbid0IHBhcnNlIHdhc20gZXh0ZW5kZWQgb3Bjb2RlIik7CisKKyAgICAgICAgRXh0U2lt
ZE9wVHlwZSBvcCA9IHN0YXRpY19jYXN0PEV4dFNpbWRPcFR5cGU+KHNpbWRPcCk7CisjZGVmaW5l
IENSRUFURV9TSU1EX0NBU0UobmFtZSwgaWQsIGIzb3AsIGluYywgd2FzbU9wLCByZXR1cm5UeXBl
LCBudW1JbW1lZGlhdGVzLCBpbW1lZGlhdGVTaXplcywgbnVtQXJndW1lbnRzLCBhcmd1bWVudFR5
cGVzLCBsYW5lSW50ZXJwcmV0YXRpb24sIHNpZ25FeHRlbmRNb2RlKSBjYXNlIEV4dFNpbWRPcFR5
cGU6Om5hbWU6IHJldHVybiBzaW1kQ2FzZTxFeHRTaW1kT3BUeXBlOjpuYW1lLCBudW1JbW1lZGlh
dGVzLCBudW1Bcmd1bWVudHM+KGZhbHNlLCByZXR1cm5UeXBlLCBpbW1lZGlhdGVTaXplcywgYXJn
dW1lbnRUeXBlcyk7CisjZGVmaW5lIENSRUFURV9TSU1EX0NBU0VfU1BFQ0lBTChuYW1lLCBpZCwg
YjNvcCwgaW5jLCBsYW5lT3AsIGxhbmVJbnRlcnByZXRhdGlvbiwgc2lnbk1vZGUpIGNhc2UgRXh0
U2ltZE9wVHlwZTo6bmFtZTogcmV0dXJuIHNpbWRTcGVjaWFsQ2FzZTxsYW5lT3AsIGxhbmVJbnRl
cnByZXRhdGlvbiwgc2lnbk1vZGU+KGZhbHNlKTsKKyAgICAgICAgc3dpdGNoIChvcCkgeworICAg
ICAgICBGT1JfRUFDSF9XQVNNX0VYVF9TSU1EX09QKENSRUFURV9TSU1EX0NBU0UpCisgICAgICAg
IEZPUl9FQUNIX1dBU01fRVhUX1NJTURfU1BFQ0lBTF9PUChDUkVBVEVfU0lNRF9DQVNFX1NQRUNJ
QUwpCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRy
dWUsICJpbnZhbGlkIGV4dGVuZGVkIHNpbWQgb3AgIiwgc2ltZE9wKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisjdW5kZWYgQ1JFQVRFX1NJTURfQ0FTRQorI3VuZGVmIENSRUFURV9T
SU1EX0NBU0VfU1BFQ0lBTAorICAgICAgICByZXR1cm4geyB9OworICAgIH0KKwogICAgIC8vIG5v
IGltbWVkaWF0ZSBjYXNlcwogICAgIEZPUl9FQUNIX1dBU01fQklOQVJZX09QKENSRUFURV9DQVNF
KQogICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1AoQ1JFQVRFX0NBU0UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAppbmRleCAzMjg5MzJl
YTMwMTguLmNmNDEzM2M1ZmYxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCkBAIC00NCw5ICs0NCwxNiBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIFdhc20gewogCituYW1lc3BhY2UgTExJbnRHZW5lcmF0b3JJbnRlcm5h
bCB7CitzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQorCiBjbGFzcyBM
TEludEdlbmVyYXRvciA6IHB1YmxpYyBCeXRlY29kZUdlbmVyYXRvckJhc2U8R2VuZXJhdG9yVHJh
aXRzPiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgRXhwcmVzc2lvblR5cGUgPSBWaXJ0dWFsUmVnaXN0
ZXI7CisgICAgdXNpbmcgRXJyb3JUeXBlID0gU3RyaW5nOworICAgIHVzaW5nIFBhcnRpYWxSZXN1
bHQgPSBFeHBlY3RlZDx2b2lkLCBFcnJvclR5cGU+OworICAgIHVzaW5nIFVuZXhwZWN0ZWRSZXN1
bHQgPSBVbmV4cGVjdGVkPEVycm9yVHlwZT47CiAKICAgICBzdHJ1Y3QgQ29udHJvbExvb3AgIHsK
ICAgICAgICAgUmVmPExhYmVsPiBtX2JvZHk7CkBAIC03OSw2ICs4NiwxNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHVuc2lnbmVkIG1faW5zdHJ1Y3Rpb25PZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIG1f
dHJ5RGVwdGg7CiAgICAgfTsKKyAgICAKKyAgICBzdHJ1Y3QgV2FzbUV4cHJlc3Npb25TbG90IHsK
KyAgICAgICAgV2FzbTo6VHlwZSB0eXBlOworICAgICAgICBDaGVja2VkPHVuc2lnbmVkPiBzbG90
SW5kZXg7CisgICAgICAgIAorICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgb3V0LnByaW50KCIoIiwgc2xvdEluZGV4LnZhbHVl
KCksICI6ICIsIHR5cGUsICIpIik7CisgICAgICAgIH0KKyAgICB9OworICAgIHVzaW5nIFdhc21F
eHByZXNzaW9uU2xvdFN0YWNrID0gVmVjdG9yPFdhc21FeHByZXNzaW9uU2xvdCwgMTY+OwogCiAg
ICAgc3RydWN0IENvbnRyb2xUeXBlIDogcHVibGljIHN0ZDo6dmFyaWFudDxDb250cm9sTG9vcCwg
Q29udHJvbFRvcExldmVsLCBDb250cm9sQmxvY2ssIENvbnRyb2xJZiwgQ29udHJvbFRyeSwgQ29u
dHJvbENhdGNoPiB7CiAgICAgICAgIHVzaW5nIEJhc2UgPSBzdGQ6OnZhcmlhbnQ8Q29udHJvbExv
b3AsIENvbnRyb2xUb3BMZXZlbCwgQ29udHJvbEJsb2NrLCBDb250cm9sSWYsIENvbnRyb2xUcnks
IENvbnRyb2xDYXRjaD47CkBAIC04OCwzNCArMTA2LDQ0IEBAIHB1YmxpYzoKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIENvbnRyb2xUeXBlIHRvcExldmVsKEJsb2NrU2ln
bmF0dXJlIHNpZ25hdHVyZSwgdW5zaWduZWQgc3RhY2tTaXplLCBSZWZQdHI8TGFiZWw+JiYgY29u
dGludWF0aW9uKQorICAgICAgICBzdGF0aWMgQ29udHJvbFR5cGUgdG9wTGV2ZWwoQmxvY2tTaWdu
YXR1cmUgc2lnbmF0dXJlLCBjb25zdCBXYXNtRXhwcmVzc2lvblNsb3RTdGFjayYgc3RhY2tTbG90
cywgUmVmUHRyPExhYmVsPiYmIGNvbnRpbnVhdGlvbikKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIENvbnRyb2xUeXBlKHNpZ25hdHVyZSwgc3RhY2tTaXplLCBXVEZNb3ZlKGNvbnRpbnVh
dGlvbiksIENvbnRyb2xUb3BMZXZlbCB7IH0pOworICAgICAgICAgICAgcmV0dXJuIENvbnRyb2xU
eXBlKHNpZ25hdHVyZSwgc3RhY2tTbG90cywgV1RGTW92ZShjb250aW51YXRpb24pLCBDb250cm9s
VG9wTGV2ZWwgeyB9KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBDb250cm9sVHlwZSBs
b29wKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgdW5zaWduZWQgc3RhY2tTaXplLCBSZWY8TGFi
ZWw+JiYgYm9keSwgUmVmUHRyPExhYmVsPiYmIGNvbnRpbnVhdGlvbikKKyAgICAgICAgc3RhdGlj
IENvbnRyb2xUeXBlIGxvb3AoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBjb25zdCBXYXNtRXhw
cmVzc2lvblNsb3RTdGFjayYgc3RhY2tTbG90cywgUmVmPExhYmVsPiYmIGJvZHksIFJlZlB0cjxM
YWJlbD4mJiBjb250aW51YXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBDb250
cm9sVHlwZShzaWduYXR1cmUsIHN0YWNrU2l6ZSAtIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgp
LCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xMb29wIHsgV1RGTW92ZShib2R5KSB9KTsK
KyAgICAgICAgICAgIFdhc21FeHByZXNzaW9uU2xvdFN0YWNrIG5ld1N0YWNrIHsgc3RhY2tTbG90
cyB9OworICAgICAgICAgICAgbmV3U3RhY2sucmVtb3ZlKDAsIHNpZ25hdHVyZS0+YXJndW1lbnRD
b3VudCgpKTsKKyAgICAgICAgICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIG5ld1N0
YWNrLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xMb29wIHsgV1RGTW92ZShib2R5KSB9
KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBDb250cm9sVHlwZSBibG9jayhCbG9ja1Np
Z25hdHVyZSBzaWduYXR1cmUsIHVuc2lnbmVkIHN0YWNrU2l6ZSwgUmVmUHRyPExhYmVsPiYmIGNv
bnRpbnVhdGlvbikKKyAgICAgICAgc3RhdGljIENvbnRyb2xUeXBlIGJsb2NrKEJsb2NrU2lnbmF0
dXJlIHNpZ25hdHVyZSwgY29uc3QgV2FzbUV4cHJlc3Npb25TbG90U3RhY2smIHN0YWNrU2xvdHMs
IFJlZlB0cjxMYWJlbD4mJiBjb250aW51YXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIHN0YWNrU2l6ZSAtIHNpZ25hdHVyZS0+YXJndW1l
bnRDb3VudCgpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xCbG9jayB7IH0pOworICAg
ICAgICAgICAgV2FzbUV4cHJlc3Npb25TbG90U3RhY2sgbmV3U3RhY2sgeyBzdGFja1Nsb3RzIH07
CisgICAgICAgICAgICBuZXdTdGFjay5yZW1vdmUoMCwgc2lnbmF0dXJlLT5hcmd1bWVudENvdW50
KCkpOworICAgICAgICAgICAgcmV0dXJuIENvbnRyb2xUeXBlKHNpZ25hdHVyZSwgbmV3U3RhY2ss
IFdURk1vdmUoY29udGludWF0aW9uKSwgQ29udHJvbEJsb2NrIHsgfSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBzdGF0aWMgQ29udHJvbFR5cGUgaWZfKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwg
dW5zaWduZWQgc3RhY2tTaXplLCBSZWY8TGFiZWw+JiYgYWx0ZXJuYXRlLCBSZWZQdHI8TGFiZWw+
JiYgY29udGludWF0aW9uKQorICAgICAgICBzdGF0aWMgQ29udHJvbFR5cGUgaWZfKEJsb2NrU2ln
bmF0dXJlIHNpZ25hdHVyZSwgY29uc3QgV2FzbUV4cHJlc3Npb25TbG90U3RhY2smIHN0YWNrU2xv
dHMsIFJlZjxMYWJlbD4mJiBhbHRlcm5hdGUsIFJlZlB0cjxMYWJlbD4mJiBjb250aW51YXRpb24p
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIHN0
YWNrU2l6ZSAtIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCBXVEZNb3ZlKGNvbnRpbnVhdGlv
biksIENvbnRyb2xJZiB7IFdURk1vdmUoYWx0ZXJuYXRlKSB9KTsKKyAgICAgICAgICAgIFdhc21F
eHByZXNzaW9uU2xvdFN0YWNrIG5ld1N0YWNrIHsgc3RhY2tTbG90cyB9OworICAgICAgICAgICAg
bmV3U3RhY2sucmVtb3ZlKDAsIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIG5ld1N0YWNrLCBXVEZNb3ZlKGNvbnRp
bnVhdGlvbiksIENvbnRyb2xJZiB7IFdURk1vdmUoYWx0ZXJuYXRlKSB9KTsKICAgICAgICAgfQog
Ci0gICAgICAgIHN0YXRpYyBDb250cm9sVHlwZSBjcmVhdGVUcnkoQmxvY2tTaWduYXR1cmUgc2ln
bmF0dXJlLCB1bnNpZ25lZCBzdGFja1NpemUsIFJlZjxMYWJlbD4mJiB0cnlMYWJlbCwgUmVmUHRy
PExhYmVsPiYmIGNvbnRpbnVhdGlvbiwgdW5zaWduZWQgdHJ5RGVwdGgpCisgICAgICAgIHN0YXRp
YyBDb250cm9sVHlwZSBjcmVhdGVUcnkoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBjb25zdCBX
YXNtRXhwcmVzc2lvblNsb3RTdGFjayYgc3RhY2tTbG90cywgUmVmPExhYmVsPiYmIHRyeUxhYmVs
LCBSZWZQdHI8TGFiZWw+JiYgY29udGludWF0aW9uLCB1bnNpZ25lZCB0cnlEZXB0aCkKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIENvbnRyb2xUeXBlKHNpZ25hdHVyZSwgc3RhY2tTaXpl
IC0gc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCksIFdURk1vdmUoY29udGludWF0aW9uKSwgQ29u
dHJvbFRyeSB7IFdURk1vdmUodHJ5TGFiZWwpLCB0cnlEZXB0aCB9KTsKKyAgICAgICAgICAgIFdh
c21FeHByZXNzaW9uU2xvdFN0YWNrIG5ld1N0YWNrIHsgc3RhY2tTbG90cyB9OworICAgICAgICAg
ICAgbmV3U3RhY2sucmVtb3ZlKDAsIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIG5ld1N0YWNrLCBXVEZNb3ZlKGNv
bnRpbnVhdGlvbiksIENvbnRyb2xUcnkgeyBXVEZNb3ZlKHRyeUxhYmVsKSwgdHJ5RGVwdGggfSk7
CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgQ29udHJvbFR5cGUgY3JlYXRlQ2F0Y2goQmxv
Y2tTaWduYXR1cmUgc2lnbmF0dXJlLCB1bnNpZ25lZCBzdGFja1NpemUsIFJlZjxMYWJlbD4mJiB0
cnlTdGFydCwgUmVmUHRyPExhYmVsPiYmIGNvbnRpbnVhdGlvbiwgUmVmPExhYmVsPiB0cnlFbmQs
IHVuc2lnbmVkIHRyeURlcHRoLCBWaXJ0dWFsUmVnaXN0ZXIgZXhjZXB0aW9uKQorICAgICAgICBz
dGF0aWMgQ29udHJvbFR5cGUgY3JlYXRlQ2F0Y2goQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBj
b25zdCBXYXNtRXhwcmVzc2lvblNsb3RTdGFjayYgc3RhY2tTbG90cywgUmVmPExhYmVsPiYmIHRy
eVN0YXJ0LCBSZWZQdHI8TGFiZWw+JiYgY29udGludWF0aW9uLCBSZWY8TGFiZWw+IHRyeUVuZCwg
dW5zaWduZWQgdHJ5RGVwdGgsIFZpcnR1YWxSZWdpc3RlciBleGNlcHRpb24pCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIHN0YWNrU2l6ZSAtIHNp
Z25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xD
YXRjaCB7IENhdGNoS2luZDo6Q2F0Y2gsIFdURk1vdmUodHJ5U3RhcnQpLCBXVEZNb3ZlKHRyeUVu
ZCksIHRyeURlcHRoLCBleGNlcHRpb24gfSk7CisgICAgICAgICAgICBXYXNtRXhwcmVzc2lvblNs
b3RTdGFjayBuZXdTdGFjayB7IHN0YWNrU2xvdHMgfTsKKyAgICAgICAgICAgIG5ld1N0YWNrLnJl
bW92ZSgwLCBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSk7CisgICAgICAgICAgICByZXR1cm4g
Q29udHJvbFR5cGUoc2lnbmF0dXJlLCBuZXdTdGFjaywgV1RGTW92ZShjb250aW51YXRpb24pLCBD
b250cm9sQ2F0Y2ggeyBDYXRjaEtpbmQ6OkNhdGNoLCBXVEZNb3ZlKHRyeVN0YXJ0KSwgV1RGTW92
ZSh0cnlFbmQpLCB0cnlEZXB0aCwgZXhjZXB0aW9uIH0pOwogICAgICAgICB9CiAKICAgICAgICAg
c3RhdGljIGJvb2wgaXNMb29wKGNvbnN0IENvbnRyb2xUeXBlJiBjb250cm9sKSB7IHJldHVybiBz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPENvbnRyb2xMb29wPihjb250cm9sKTsgfQpAQCAtMTMyLDcg
KzE2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBjYXRjaERhdGEubV9raW5kID09
IENhdGNoS2luZDo6Q2F0Y2g7CiAgICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBzdGFja1Np
emUoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrU2l6ZTsgfQorICAgICAgICB1bnNpZ25lZCBzdGFj
a0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uU3RhY2tTbG90cy5zaXplKCk7IH0K
ICAgICAgICAgQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWdu
YXR1cmU7IH0KIAogICAgICAgICBSZWZQdHI8TGFiZWw+IHRhcmdldExhYmVsRm9yQnJhbmNoKCkg
Y29uc3QKQEAgLTE1OCwyNCArMTg2LDIwIEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAg
IEJsb2NrU2lnbmF0dXJlIG1fc2lnbmF0dXJlOwotICAgICAgICB1bnNpZ25lZCBtX3N0YWNrU2l6
ZTsKKyAgICAgICAgV2FzbUV4cHJlc3Npb25TbG90U3RhY2sgbV9leHByZXNzaW9uU3RhY2tTbG90
czsKICAgICAgICAgUmVmUHRyPExhYmVsPiBtX2NvbnRpbnVhdGlvbjsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIENvbnRyb2xUeXBlKEJsb2Nr
U2lnbmF0dXJlIHNpZ25hdHVyZSwgdW5zaWduZWQgc3RhY2tTaXplLCBSZWZQdHI8TGFiZWw+JiYg
Y29udGludWF0aW9uLCBUJiYgdCkKKyAgICAgICAgQ29udHJvbFR5cGUoQmxvY2tTaWduYXR1cmUg
c2lnbmF0dXJlLCBjb25zdCBXYXNtRXhwcmVzc2lvblNsb3RTdGFjayYgc3RhY2tTbG90cywgUmVm
UHRyPExhYmVsPiYmIGNvbnRpbnVhdGlvbiwgVCYmIHQpCiAgICAgICAgICAgICA6IEJhc2UoV1RG
TW92ZSh0KSkKICAgICAgICAgICAgICwgbV9zaWduYXR1cmUoc2lnbmF0dXJlKQotICAgICAgICAg
ICAgLCBtX3N0YWNrU2l6ZShzdGFja1NpemUpCisgICAgICAgICAgICAsIG1fZXhwcmVzc2lvblN0
YWNrU2xvdHMoc3RhY2tTbG90cykKICAgICAgICAgICAgICwgbV9jb250aW51YXRpb24oV1RGTW92
ZShjb250aW51YXRpb24pKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICB9OwotCi0gICAgdXNp
bmcgRXJyb3JUeXBlID0gU3RyaW5nOwotICAgIHVzaW5nIFBhcnRpYWxSZXN1bHQgPSBFeHBlY3Rl
ZDx2b2lkLCBFcnJvclR5cGU+OwotICAgIHVzaW5nIFVuZXhwZWN0ZWRSZXN1bHQgPSBVbmV4cGVj
dGVkPEVycm9yVHlwZT47Ci0KKyAgICAKICAgICB1c2luZyBDb250cm9sRW50cnkgPSBGdW5jdGlv
blBhcnNlcjxMTEludEdlbmVyYXRvcj46OkNvbnRyb2xFbnRyeTsKICAgICB1c2luZyBDb250cm9s
U3RhY2sgPSBGdW5jdGlvblBhcnNlcjxMTEludEdlbmVyYXRvcj46OkNvbnRyb2xTdGFjazsKICAg
ICB1c2luZyBSZXN1bHRMaXN0ID0gRnVuY3Rpb25QYXJzZXI8TExJbnRHZW5lcmF0b3I+OjpSZXN1
bHRMaXN0OwpAQCAtMTgzLDYgKzIwNywzMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgVHlwZWRFeHBy
ZXNzaW9uID0gRnVuY3Rpb25QYXJzZXI8TExJbnRHZW5lcmF0b3I+OjpUeXBlZEV4cHJlc3Npb247
CiAKICAgICBzdGF0aWMgRXhwcmVzc2lvblR5cGUgZW1wdHlFeHByZXNzaW9uKCkgeyByZXR1cm4g
eyB9OyB9OworICAgIHN0YXRpYyBWaXJ0dWFsUmVnaXN0ZXIgbmV4dFNsb3RGb3JVcHBlckJpdHMo
VmlydHVhbFJlZ2lzdGVyIGxvdykKKyAgICB7CisgICAgICAgIHJldHVybiBsb3cgKyAxOworICAg
IH0KKyAgICAKKyAgICB2b2lkIHR5cGVkTW92ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBUeXBlZEV4
cHJlc3Npb24gc3JjKQorICAgIHsKKyAgICAgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5lcmF0b3JJ
bnRlcm5hbDo6dmVyYm9zZSwgIlsiLCBtX2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAgICAgICAg
ICJNb3ZlIHR5cGUgIiwgc3JjLnR5cGUoKSwgIiBhdCBpbmRleCAiLCBzcmMudmFsdWUoKSwgIiwg
IiwgbmV4dFNsb3RGb3JVcHBlckJpdHMoc3JjLnZhbHVlKCkpLCAiIHRvICIsIGRzdCwgIiwgIiwg
bmV4dFNsb3RGb3JVcHBlckJpdHMoZHN0KSk7CisgICAgICAgIAorICAgICAgICBXYXNtTW92Ojpl
bWl0KHRoaXMsIGRzdCwgc3JjKTsKKyAgICAgICAgaWYgKHNyYy50eXBlKCkuc2l6ZSgpID09IDE2
KQorICAgICAgICAgICAgV2FzbU1vdjo6ZW1pdCh0aGlzLCBuZXh0U2xvdEZvclVwcGVyQml0cyhk
c3QpLCBuZXh0U2xvdEZvclVwcGVyQml0cyhzcmMudmFsdWUoKSkpOworICAgIH0KKyAgICAKKyAg
ICBDaGVja2VkPHVuc2lnbmVkPiBuZXh0U2xvdEluZGV4KFR5cGUgdHlwZSkgY29uc3QKKyAgICB7
CisgICAgICAgIEFTU0VSVCh0eXBlLnNpemUoKSA9PSA4IHx8IHR5cGUuc2l6ZSgpID09IDE2KTsK
KyAgICAgICAgQ2hlY2tlZDx1bnNpZ25lZD4gc2xvdEluZGV4ID0gbV9maXJzdFN0YWNrU2xvdElu
ZGV4OworICAgICAgICBpZiAobV9leHByZXNzaW9uU3RhY2tTbG90cy5zaXplKCkpCisgICAgICAg
ICAgICBzbG90SW5kZXggPSBtX2V4cHJlc3Npb25TdGFja1Nsb3RzLmxhc3QoKS5zbG90SW5kZXgg
KyAxOworICAgICAgICBzbG90SW5kZXggKz0gdHlwZS5zaXplKCkgLyA4IC0gMTsKKyAgICAgICAg
cmV0dXJuIHNsb3RJbmRleDsKKyAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgLi4uQXJn
cz4KICAgICBORVZFUl9JTkxJTkUgVW5leHBlY3RlZFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
ZmFpbChBcmdzLi4uIGFyZ3MpIGNvbnN0CkBAIC0xOTgsMzQgKzI0Niw1NyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhwcmVzc2lvbkxpc3RBLCB0eXBlbmFtZSBFeHByZXNzaW9u
TGlzdEI+CiAgICAgdm9pZCB1bmlmeVZhbHVlc1dpdGhCbG9jayhjb25zdCBFeHByZXNzaW9uTGlz
dEEmIGRlc3RpbmF0aW9ucywgY29uc3QgRXhwcmVzc2lvbkxpc3RCJiB2YWx1ZXMpCiAgICAgewor
ICAgICAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVybmFsOjp2ZXJib3NlLCAiWyIs
IG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAgICAgIlVuaWZ5ICIsIGxpc3REdW1wKGRl
c3RpbmF0aW9ucyksICIgPC0gIiwgbGlzdER1bXAodmFsdWVzKSk7CiAgICAgICAgIEFTU0VSVChk
ZXN0aW5hdGlvbnMuc2l6ZSgpIDw9IHZhbHVlcy5zaXplKCkpOwogICAgICAgICBhdXRvIG9mZnNl
dCA9IHZhbHVlcy5zaXplKCkgLSBkZXN0aW5hdGlvbnMuc2l6ZSgpOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGRlc3RpbmF0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAg
YXV0byYgc3JjID0gdmFsdWVzW29mZnNldCArIGldOwogICAgICAgICAgICAgYXV0byYgZHN0ID0g
ZGVzdGluYXRpb25zW2ldOwotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdp
c3Rlcj4oc3JjKSAhPSBzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KGRzdCkpCi0gICAgICAg
ICAgICAgICAgV2FzbU1vdjo6ZW1pdCh0aGlzLCBkc3QsIHNyYyk7CisgICAgICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihzcmMudmFsdWUoKSkgIT0gc3RhdGljX2Nhc3Q8
VmlydHVhbFJlZ2lzdGVyPihkc3QudmFsdWUoKSkpCisgICAgICAgICAgICAgICAgdHlwZWRNb3Zl
KGRzdCwgc3JjKTsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBzdGFja0Nv
dW50KCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uU3RhY2tTbG90cy5zaXplKCk7IH0KKyAg
ICB1bnNpZ25lZCBzdGFja1Nsb3RTaXplKCkgY29uc3QgeyByZXR1cm4gbmV4dFNsb3RJbmRleChU
eXBlczo6STY0KTsgfQogCiAgICAgZW51bSBOb0NvbnNpc3RlbmN5Q2hlY2tUYWcgeyBOb0NvbnNp
c3RlbmN5Q2hlY2sgfTsKLSAgICBFeHByZXNzaW9uVHlwZSBwdXNoKE5vQ29uc2lzdGVuY3lDaGVj
a1RhZykKKyAgICBFeHByZXNzaW9uVHlwZSBwdXNoKFdhc206OlR5cGUgdHlwZSwgTm9Db25zaXN0
ZW5jeUNoZWNrVGFnKQogICAgIHsKLSAgICAgICAgbV9tYXhTdGFja1NpemUgPSBzdGQ6Om1heCht
X21heFN0YWNrU2l6ZSwgKyttX3N0YWNrU2l6ZSk7Ci0gICAgICAgIHJldHVybiB2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChtX3N0YWNrU2l6ZSAtIDEpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKG5leHRTbG90SW5kZXgodHlwZSkpOworICAgICAgICBtX2V4
cHJlc3Npb25TdGFja1Nsb3RzLmFwcGVuZCh7IHR5cGUsIG5leHRTbG90SW5kZXgodHlwZSkgfSk7
CisgICAgICAgIAorICAgICAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVybmFsOjp2
ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAgICAgIlB1c2ggdHlw
ZSAiLCB0eXBlLCAiIGF0IGluZGV4ICIsIG1fZXhwcmVzc2lvblN0YWNrU2xvdHMuc2l6ZSgpIC0g
MSwgIiBnb2VzIGluICIsCisgICAgICAgICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2V4
cHJlc3Npb25TdGFja1Nsb3RzLmxhc3QoKS5zbG90SW5kZXgpLCAiLCAiLAorICAgICAgICAgICAg
bmV4dFNsb3RGb3JVcHBlckJpdHModmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9leHByZXNzaW9u
U3RhY2tTbG90cy5sYXN0KCkuc2xvdEluZGV4KSkpOworICAgICAgICAKKyAgICAgICAgbV9tYXhT
dGFja1Nsb3RTaXplID0gc3RkOjptYXgoc3RhY2tTbG90U2l6ZSgpLCBtX21heFN0YWNrU2xvdFNp
emUudmFsdWUoKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgRXhwcmVz
c2lvblR5cGUgcHVzaCgpCisgICAgRXhwcmVzc2lvblR5cGUgcHVzaChXYXNtOjpUeXBlIHR5cGUp
CiAgICAgewogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7Ci0gICAgICAgIHJldHVybiBwdXNo
KE5vQ29uc2lzdGVuY3lDaGVjayk7CisgICAgICAgIHJldHVybiBwdXNoKHR5cGUsIE5vQ29uc2lz
dGVuY3lDaGVjayk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRQb3BWYWx1ZUZyb21TdGFjaygpIHsg
LS1tX3N0YWNrU2l6ZTsgfQorICAgIHZvaWQgZGlkUG9wVmFsdWVGcm9tU3RhY2soV2FzbTo6VHlw
ZSB0eXBlKQorICAgIHsKKyAgICAgICAgYXV0byBwb3BwZWRTbG90ID0gbV9leHByZXNzaW9uU3Rh
Y2tTbG90cy50YWtlTGFzdCgpOworICAgICAgICAKKyAgICAgICAgZGF0YUxvZ0xuSWYoTExJbnRH
ZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlsiLCBtX2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAg
ICAgICAgICAgICJQb3BwZWQgIiwgcG9wcGVkU2xvdC50eXBlLCAiIGluZGV4ICIsIG1fZXhwcmVz
c2lvblN0YWNrU2xvdHMuc2l6ZSgpLCAiIHNsb3QgaW5kZXggIiwgcG9wcGVkU2xvdC5zbG90SW5k
ZXgudmFsdWUoKSwgIiAtIGV4cGVjdGluZyAiLCB0eXBlKTsKKyAgICAgICAgCisgICAgICAgIEFT
U0VSVF9VTlVTRUQocG9wcGVkU2xvdCwgcG9wcGVkU2xvdC50eXBlID09IHR5cGUpOworICAgICAg
ICBBU1NFUlQocG9wcGVkU2xvdC5zbG90SW5kZXggPT0gbmV4dFNsb3RJbmRleCh0eXBlKSk7Cisg
ICAgfQogCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQXJndW1lbnRz
KGNvbnN0IFNpZ25hdHVyZSYpOwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZExvY2FsKFR5cGUsIHVpbnQzMl90KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRMb2NhbChUeXBlLCB1aW50MzJfdCwgdWludDMyX3QpOwogICAgIEV4cHJlc3Np
b25UeXBlIGFkZENvbnN0YW50KFR5cGUsIGludDY0X3QpOworICAgIEV4cHJlc3Npb25UeXBlIGFk
ZENvbnN0YW50KHYxMjhfdCk7CiAKICAgICAvLyBSZWZlcmVuY2VzCiAgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBlIHZhbHVlLCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTI0Miw4ICszMTMsOCBAQCBwdWJsaWM6CiAgICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVDb3B5KHVuc2lnbmVkLCB1
bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUgZHN0T2Zmc2V0LCBFeHByZXNzaW9uVHlwZSBzcmNPZmZz
ZXQsIEV4cHJlc3Npb25UeXBlIGxlbmd0aCk7CiAKICAgICAvLyBMb2NhbHMKLSAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
c2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKKyAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgV2Fz
bTo6VHlwZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gc2V0TG9jYWwodWludDMyX3QgaW5kZXgsIFdhc206OlR5cGUsIEV4cHJl
c3Npb25UeXBlIHZhbHVlKTsKIAogICAgIC8vIEdsb2JhbHMKICAgICBQYXJ0aWFsUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBnZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpOwpAQCAtMjkzLDcgKzM2NCw3IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYXRjaEFsbFRvVW5yZWFjaGFibGUoQ29udHJvbFR5cGUm
KTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGREZWxlZ2F0ZShDb250
cm9sVHlwZSYsIENvbnRyb2xUeXBlJik7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkRGVsZWdhdGVUb1VucmVhY2hhYmxlKENvbnRyb2xUeXBlJiwgQ29udHJvbFR5cGUm
KTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUaHJvdyh1bnNpZ25l
ZCBleGNlcHRpb25JbmRleCwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgU3RhY2smKTsK
KyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUaHJvdyh1bnNpZ25lZCBl
eGNlcHRpb25JbmRleCwgU3RhY2smIGFyZ3MpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIGFkZFJldGhyb3codW5zaWduZWQsIENvbnRyb2xUeXBlJik7CiAKICAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1cm4oY29uc3QgQ29udHJvbFR5cGUm
LCBTdGFjayYgcmV0dXJuVmFsdWVzKTsKQEAgLTMwOCw2ICszNzksMTAgQEAgcHVibGljOgogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25l
ZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBh
cmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlw
ZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZFVucmVhY2hhYmxlKCk7CisgICAgCisgICAgLy8gU2ltZAorICAgIHRl
bXBsYXRlPEV4dFNpbWRPcFR5cGUsIHNpemVfdCBudW1JbW1lZGlhdGVzLCBzaXplX3QgbnVtQXJn
dW1lbnRzPgorICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFNpbWRPcChz
dGQ6OmFycmF5PHVpbnQ4X3QsIG51bUltbWVkaWF0ZXM+LCBzdGQ6OmFycmF5PEV4cHJlc3Npb25U
eXBlLCBudW1Bcmd1bWVudHM+LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAogICAgIHZvaWQg
ZGlkRmluaXNoUGFyc2luZ0xvY2FscygpOwogCkBAIC0zMjMsMTMgKzM5OCwxMyBAQCBwcml2YXRl
OgogCiAgICAgc3RydWN0IExMSW50Q2FsbEluZm9ybWF0aW9uIHsKICAgICAgICAgdW5zaWduZWQg
c3RhY2tPZmZzZXQ7Ci0gICAgICAgIHVuc2lnbmVkIG51bWJlck9mU3RhY2tBcmd1bWVudHM7Ci0g
ICAgICAgIFJlc3VsdExpc3QgYXJndW1lbnRzOworICAgICAgICB1bnNpZ25lZCBzaXplT2ZTdGFj
a0FyZ3VtZW50czsKKyAgICAgICAgVmVjdG9yPFR5cGVkRXhwcmVzc2lvbiwgMj4gYXJndW1lbnRz
OwogICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc3VsdExpc3QmKT4gY29tbWl0UmVz
dWx0czsKICAgICB9OwogCiAgICAgTExJbnRDYWxsSW5mb3JtYXRpb24gY2FsbEluZm9ybWF0aW9u
Rm9yQ2FsbGVyKGNvbnN0IFNpZ25hdHVyZSYpOwotICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXIs
IDI+IGNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZShjb25zdCBTaWduYXR1cmUmKTsKKyAgICBWZWN0
b3I8VHlwZWRFeHByZXNzaW9uLCAyPiBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUoY29uc3QgU2ln
bmF0dXJlJik7CiAgICAgdm9pZCBsaW5rU3dpdGNoVGFyZ2V0cyhMYWJlbCYsIHVuc2lnbmVkIGxv
Y2F0aW9uKTsKIAogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXJGb3JXYXNtTG9j
YWwodWludDMyX3QgaW5kZXgpCkBAIC0zMzcsMTAgKzQxMiw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGlmIChpbmRleCA8IG1fY29kZUJsb2NrLT5tX251bUFyZ3VtZW50cykKICAgICAgICAgICAgIHJl
dHVybiBtX25vcm1hbGl6ZWRBcmd1bWVudHNbaW5kZXhdOwogCi0gICAgICAgIGNvbnN0IGF1dG8m
IGNhbGxpbmdDb252ZW50aW9uID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCk7Ci0gICAgICAgIGNv
bnN0IHVpbnQzMl90IGdwckNvdW50ID0gY2FsbGluZ0NvbnZlbnRpb24uZ3ByQXJncy5zaXplKCk7
Ci0gICAgICAgIGNvbnN0IHVpbnQzMl90IGZwckNvdW50ID0gY2FsbGluZ0NvbnZlbnRpb24uZnBy
QXJncy5zaXplKCk7Ci0gICAgICAgIHJldHVybiB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRl
eCAtIG1fY29kZUJsb2NrLT5tX251bUFyZ3VtZW50cyArIGdwckNvdW50ICsgZnByQ291bnQgKyBu
dW1iZXJPZkxMSW50Q2FsbGVlU2F2ZVJlZ2lzdGVycyk7CisgICAgICAgIHJldHVybiBtX2xvY2Fs
c1tpbmRleCAtIG1fY29kZUJsb2NrLT5tX251bUFyZ3VtZW50c107CiAgICAgfQogCiAgICAgRXhw
cmVzc2lvblR5cGUganNOdWxsQ29uc3RhbnQoKQpAQCAtMzY3LDkgKzQzOSw5IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGdldERyb3BLZWVwQ291bnQoY29uc3QgQ29udHJvbFR5cGUmIHRhcmdldCwg
dW5zaWduZWQmIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCYgZHJvcCwgdW5zaWduZWQmIGtlZXApCiAg
ICAgewotICAgICAgICBzdGFydE9mZnNldCA9IHRhcmdldC5zdGFja1NpemUoKSArIDE7CisgICAg
ICAgIHN0YXJ0T2Zmc2V0ID0gdGFyZ2V0LnN0YWNrQ291bnQoKSArIDE7CiAgICAgICAgIGtlZXAg
PSB0YXJnZXQuYnJhbmNoVGFyZ2V0QXJpdHkoKTsKLSAgICAgICAgZHJvcCA9IG1fc3RhY2tTaXpl
IC0gdGFyZ2V0LnN0YWNrU2l6ZSgpIC0gdGFyZ2V0LmJyYW5jaFRhcmdldEFyaXR5KCk7CisgICAg
ICAgIGRyb3AgPSBzdGFja0NvdW50KCkgLSB0YXJnZXQuc3RhY2tDb3VudCgpIC0gdGFyZ2V0LmJy
YW5jaFRhcmdldEFyaXR5KCk7CiAgICAgfQogCiAgICAgdm9pZCBkcm9wS2VlcChTdGFjayYgdmFs
dWVzLCBjb25zdCBDb250cm9sVHlwZSYgdGFyZ2V0LCBib29sIGRyb3BWYWx1ZXMpCkBAIC0zODks
MzAgKzQ2MSw2NSBAQCBwcml2YXRlOgogICAgICAgICBpZiAoa2VlcCkKICAgICAgICAgICAgIFdh
c21Ecm9wS2VlcDo6ZW1pdCh0aGlzLCBzdGFydE9mZnNldCwgZHJvcCwga2VlcCk7CiAgICAgfQot
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU3RhY2ssIHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIHdhbGtFeHByZXNzaW9uU3Rh
Y2soU3RhY2smIGV4cHJlc3Npb25TdGFjaywgdW5zaWduZWQgc3RhY2tTaXplLCBjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQogICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZXhwcmVzc2lv
blN0YWNrLnNpemUoKTsgaSA+IDA7IC0taSkgewotICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IHNsb3QgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzdGFja1NpemUgLSBpKTsKLSAgICAgICAg
ICAgIGZ1bmN0b3IoZXhwcmVzc2lvblN0YWNrW2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSBpXSwg
c2xvdCk7CisgICAgICAgIHVuc2lnbmVkIHNsb3RJbmRleCA9IG1fZmlyc3RTdGFja1Nsb3RJbmRl
eDsKKyAgICAgICAgdW5zaWduZWQgd2FzbVNsb3RJbmRleCA9IDA7CisgICAgICAgIAorICAgICAg
ICB3aGlsZSAod2FzbVNsb3RJbmRleCA8IHN0YWNrU2l6ZSkgeworICAgICAgICAgICAgYXV0byYg
ZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25TdGFja1t3YXNtU2xvdEluZGV4XTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKGV4cHJlc3Npb24udHlwZSgpLnNpemUoKSA9PSAxNikKKyAgICAg
ICAgICAgICAgICArK3Nsb3RJbmRleDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHNsb3QgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzbG90SW5kZXgpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQoZXhwcmVzc2lvbi52YWx1ZSgpID09IHNsb3Qg
fHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQ29uc3RhbnQoKSB8fCBleHByZXNzaW9uLnZhbHVlKCku
aXNBcmd1bWVudCgpCisgICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV4
cHJlc3Npb24udmFsdWUoKS50b0xvY2FsKCkpIDwgbV9jb2RlQmxvY2stPm1fbnVtVmFycyk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChleHByZXNzaW9uLnR5cGUoKS5zaXplKCkgPT0g
MTYpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobmV4dFNsb3RGb3JVcHBlckJpdHMoc2xvdCkg
PT0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc2xvdEluZGV4IC0gMSkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChuZXh0U2xvdEZvclVwcGVyQml0cyhleHByZXNzaW9uLnZhbHVlKCkpID09IG5l
eHRTbG90Rm9yVXBwZXJCaXRzKHNsb3QpCisgICAgICAgICAgICAgICAgICAgIHx8IG5leHRTbG90
Rm9yVXBwZXJCaXRzKGV4cHJlc3Npb24udmFsdWUoKSkuaXNDb25zdGFudCgpCisgICAgICAgICAg
ICAgICAgICAgIHx8IG5leHRTbG90Rm9yVXBwZXJCaXRzKGV4cHJlc3Npb24udmFsdWUoKSkuaXNB
cmd1bWVudCgpCisgICAgICAgICAgICAgICAgICAgIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihu
ZXh0U2xvdEZvclVwcGVyQml0cyhleHByZXNzaW9uLnZhbHVlKCkpLnRvTG9jYWwoKSkgPCBtX2Nv
ZGVCbG9jay0+bV9udW1WYXJzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKCZleHByZXNzaW9uU3RhY2sgPT0gJm1fcGFyc2VyLT5leHByZXNzaW9uU3RhY2so
KSkgeworICAgICAgICAgICAgICAgIGF1dG8gc2xvdERhdGEgPSBtX2V4cHJlc3Npb25TdGFja1Ns
b3RzW3dhc21TbG90SW5kZXhdOworICAgICAgICAgICAgICAgIEFTU0VSVChleHByZXNzaW9uLnR5
cGUoKSA9PSBzbG90RGF0YS50eXBlKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2xvdERhdGEu
c2xvdEluZGV4ID09IHNsb3RJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGZ1bmN0b3IoZXhwcmVzc2lvbiwgc2xvdCk7CisgICAgICAgICAgICArK3Nsb3RJ
bmRleDsKKyAgICAgICAgICAgICsrd2FzbVNsb3RJbmRleDsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFN0YWNrLCB0eXBlbmFtZSBGdW5jdG9yPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgdm9pZCB3YWxrRXhwcmVzc2lvblN0YWNrKFN0YWNr
JiBleHByZXNzaW9uU3RhY2ssIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewotICAgICAg
ICB3YWxrRXhwcmVzc2lvblN0YWNrKGV4cHJlc3Npb25TdGFjaywgbV9zdGFja1NpemUsIGZ1bmN0
b3IpOworICAgICAgICB3YWxrRXhwcmVzc2lvblN0YWNrKGV4cHJlc3Npb25TdGFjaywgZXhwcmVz
c2lvblN0YWNrLnNpemUoKSwgZnVuY3Rvcik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCB3YWxrRXhwcmVzc2lvblN0YWNrKGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICB3YWxrRXhwcmVzc2lvblN0YWNrKG1fcGFyc2Vy
LT5leHByZXNzaW9uU3RhY2soKSwgZnVuY3Rvcik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIHdhbGtFeHByZXNzaW9uU3RhY2soQ29udHJvbEVudHJ5
JiBlbnRyeSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7Ci0gICAgICAgIHVuc2lnbmVk
IHN0YWNrU2l6ZSA9IGVudHJ5LmNvbnRyb2xEYXRhLnN0YWNrU2l6ZSgpOworICAgICAgICB1bnNp
Z25lZCBzdGFja1NpemUgPSBlbnRyeS5jb250cm9sRGF0YS5zdGFja0NvdW50KCk7CisgICAgICAg
IEFTU0VSVChlbnRyeS5lbmNsb3NlZEV4cHJlc3Npb25TdGFjay5zaXplKCkgPT0gc3RhY2tTaXpl
KTsKICAgICAgICAgd2Fsa0V4cHJlc3Npb25TdGFjayhlbnRyeS5lbmNsb3NlZEV4cHJlc3Npb25T
dGFjaywgc3RhY2tTaXplLCBmdW5jdG9yKTsKICAgICB9CiAKLSAgICB2b2lkIGNoZWNrQ29uc2lz
dGVuY3koKQorICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSh1bnNpZ25lZCBzdGFja0NvdW50KQog
ICAgIHsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAvLyBUaGUgcnVsZXMgZm9yIGxvY2Fs
cyBhbmQgY29uc3RhbnRzIGluIHRoZSBzdGFjayBhcmU6CkBAIC00MjcsNDggKzUzNCw1NiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIEFTU0VSVChleHByZXNzaW9uID09IHNsb3QgfHwgZXhw
cmVzc2lvbi5pc0NvbnN0YW50KCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAgICAg
ICAgd2Fsa0V4cHJlc3Npb25TdGFjayhtX3BhcnNlci0+ZXhwcmVzc2lvblN0YWNrKCksIFsmXShW
aXJ0dWFsUmVnaXN0ZXIgZXhwcmVzc2lvbiwgVmlydHVhbFJlZ2lzdGVyIHNsb3QpIHsKLSAgICAg
ICAgICAgIEFTU0VSVChleHByZXNzaW9uID09IHNsb3QgfHwgZXhwcmVzc2lvbi5pc0NvbnN0YW50
KCkgfHwgZXhwcmVzc2lvbi5pc0FyZ3VtZW50KCkgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV4
cHJlc3Npb24udG9Mb2NhbCgpKSA8IG1fY29kZUJsb2NrLT5tX251bVZhcnMpOworICAgICAgICAK
KyAgICAgICAgLy8gV2UgbWlnaHQgYmUgaW4gdGhlIHByb2Nlc3Mgb2YgYWRkaW5nIHN0YWNrIHNs
b3RzIGZyb20gdGhlIHBhcnNlci4KKyAgICAgICAgQVNTRVJUKHN0YWNrQ291bnQgPD0gbV9wYXJz
ZXItPmV4cHJlc3Npb25TdGFjaygpLnNpemUoKSk7CisgICAgICAgIEFTU0VSVChzdGFja0NvdW50
IDw9IHRoaXMtPnN0YWNrQ291bnQoKSk7CisgICAgICAgIEFTU0VSVCh0aGlzLT5zdGFja0NvdW50
KCkgPj0gbV9wYXJzZXItPmV4cHJlc3Npb25TdGFjaygpLnNpemUoKSk7CisgICAgICAgIAorICAg
ICAgICB3YWxrRXhwcmVzc2lvblN0YWNrKG1fcGFyc2VyLT5leHByZXNzaW9uU3RhY2soKSwgc3Rh
Y2tDb3VudCwgWyZdKGNvbnN0IFR5cGVkRXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgVmlydHVhbFJl
Z2lzdGVyIHNsb3QpIHsKKyAgICAgICAgICAgIEFTU0VSVChleHByZXNzaW9uLnZhbHVlKCkgPT0g
c2xvdCB8fCBleHByZXNzaW9uLnZhbHVlKCkuaXNDb25zdGFudCgpIHx8IGV4cHJlc3Npb24udmFs
dWUoKS5pc0FyZ3VtZW50KCkKKyAgICAgICAgICAgICAgICB8fCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZXhwcmVzc2lvbi52YWx1ZSgpLnRvTG9jYWwoKSkgPCBtX2NvZGVCbG9jay0+bV9udW1WYXJz
KTsKICAgICAgICAgfSk7CisjZWxzZQorICAgICAgICAodm9pZCkgc3RhY2tDb3VudDsKICNlbmRp
ZiAvLyBBU1NFUlRfRU5BQkxFRAogICAgIH0KKyAgICAKKyAgICB2b2lkIGNoZWNrQ29uc2lzdGVu
Y3koKQorICAgIHsKKyAgICAgICAgY2hlY2tDb25zaXN0ZW5jeShtX3BhcnNlci0+ZXhwcmVzc2lv
blN0YWNrKCkuc2l6ZSgpKTsKKyAgICB9CiAKLSAgICB2b2lkIG1hdGVyaWFsaXplQ29uc3RhbnRz
QW5kTG9jYWxzKFN0YWNrJiBleHByZXNzaW9uU3RhY2ssIE5vQ29uc2lzdGVuY3lDaGVja1RhZykK
KyAgICB2b2lkIG1hdGVyaWFsaXplQ29uc3RhbnRzQW5kTG9jYWxzKFN0YWNrJiBleHByZXNzaW9u
U3RhY2ssIGJvb2wgbWF0ZXJpYWxpemVDb25zdGFudHMsIE5vQ29uc2lzdGVuY3lDaGVja1RhZykK
ICAgICB7Ci0gICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2soZXhwcmVzc2lvblN0YWNrLCBbJl0o
YXV0byYgZXhwcmVzc2lvbiwgVmlydHVhbFJlZ2lzdGVyIHNsb3QpIHsKLSAgICAgICAgICAgIEFT
U0VSVChleHByZXNzaW9uLnZhbHVlKCkgPT0gc2xvdCB8fCBleHByZXNzaW9uLnZhbHVlKCkuaXND
b25zdGFudCgpIHx8IGV4cHJlc3Npb24udmFsdWUoKS5pc0FyZ3VtZW50KCkgfHwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGV4cHJlc3Npb24udmFsdWUoKS50b0xvY2FsKCkpIDwgbV9jb2RlQmxvY2st
Pm1fbnVtVmFycyk7CisgICAgICAgIHdhbGtFeHByZXNzaW9uU3RhY2soZXhwcmVzc2lvblN0YWNr
LCBbJl0oVHlwZWRFeHByZXNzaW9uJiBleHByZXNzaW9uLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkg
eworICAgICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24udmFsdWUoKSA9PSBzbG90IHx8IGV4cHJl
c3Npb24udmFsdWUoKS5pc0NvbnN0YW50KCkgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQXJndW1l
bnQoKQorICAgICAgICAgICAgICAgICAgIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihleHByZXNz
aW9uLnZhbHVlKCkudG9Mb2NhbCgpKSA8IG1fY29kZUJsb2NrLT5tX251bVZhcnMpOwogICAgICAg
ICAgICAgaWYgKGV4cHJlc3Npb24udmFsdWUoKSA9PSBzbG90KQogICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIFdhc21Nb3Y6OmVtaXQodGhpcywgc2xvdCwgZXhwcmVzc2lvbik7
CisgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbi52YWx1ZSgpLmlzQ29uc3RhbnQoKSAmJiAhbWF0
ZXJpYWxpemVDb25zdGFudHMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
dHlwZWRNb3ZlKHNsb3QsIGV4cHJlc3Npb24pOwogICAgICAgICAgICAgZXhwcmVzc2lvbiA9IFR5
cGVkRXhwcmVzc2lvbiB7IGV4cHJlc3Npb24udHlwZSgpLCBzbG90IH07CiAgICAgICAgIH0pOwog
ICAgIH0KIAotICAgIHZvaWQgbWF0ZXJpYWxpemVDb25zdGFudHNBbmRMb2NhbHMoU3RhY2smIGV4
cHJlc3Npb25TdGFjaykKKyAgICB2b2lkIG1hdGVyaWFsaXplQ29uc3RhbnRzQW5kTG9jYWxzKFN0
YWNrJiBleHByZXNzaW9uU3RhY2ssIGJvb2wgbWF0ZXJpYWxpemVDb25zdGF0YW50cyA9IHRydWUp
CiAgICAgewogICAgICAgICBpZiAoZXhwcmVzc2lvblN0YWNrLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7Ci0gICAgICAgIG1hdGVy
aWFsaXplQ29uc3RhbnRzQW5kTG9jYWxzKGV4cHJlc3Npb25TdGFjaywgTm9Db25zaXN0ZW5jeUNo
ZWNrKTsKKyAgICAgICAgbWF0ZXJpYWxpemVDb25zdGFudHNBbmRMb2NhbHMoZXhwcmVzc2lvblN0
YWNrLCBtYXRlcmlhbGl6ZUNvbnN0YXRhbnRzLCBOb0NvbnNpc3RlbmN5Q2hlY2spOwogICAgICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogCiAgICAgdm9pZCBzcGxpdFN0YWNrKEJsb2Nr
U2lnbmF0dXJlIHNpZ25hdHVyZSwgU3RhY2smIGVuY2xvc2luZ1N0YWNrLCBTdGFjayYgbmV3U3Rh
Y2spCiAgICAgewogICAgICAgICBKU0M6Oldhc206OnNwbGl0U3RhY2soc2lnbmF0dXJlLCBlbmNs
b3NpbmdTdGFjaywgbmV3U3RhY2spOwotCi0gICAgICAgIG1fc3RhY2tTaXplIC09IG5ld1N0YWNr
LnNpemUoKTsKKyAgICAgICAgY2hlY2tDb25zaXN0ZW5jeShlbmNsb3NpbmdTdGFjay5zaXplKCkg
LSBuZXdTdGFjay5zaXplKCkpOworICAgICAgICBtYXRlcmlhbGl6ZUNvbnN0YW50c0FuZExvY2Fs
cyhlbmNsb3NpbmdTdGFjaywgLyogbWF0ZXJpYWxpemVDb25zdGFudHMgPSAqLyBmYWxzZSk7CiAg
ICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKLSAgICAgICAgd2Fsa0V4cHJlc3Npb25TdGFjayhl
bmNsb3NpbmdTdGFjaywgWyZdKFR5cGVkRXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgVmlydHVhbFJl
Z2lzdGVyIHNsb3QpIHsKLSAgICAgICAgICAgIEFTU0VSVChleHByZXNzaW9uLnZhbHVlKCkgPT0g
c2xvdCB8fCBleHByZXNzaW9uLnZhbHVlKCkuaXNDb25zdGFudCgpIHx8IGV4cHJlc3Npb24udmFs
dWUoKS5pc0FyZ3VtZW50KCkgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV4cHJlc3Npb24udmFs
dWUoKS50b0xvY2FsKCkpIDwgbV9jb2RlQmxvY2stPm1fbnVtVmFycyk7Ci0gICAgICAgICAgICBp
ZiAoZXhwcmVzc2lvbi52YWx1ZSgpID09IHNsb3QgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQ29u
c3RhbnQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBXYXNtTW92Ojpl
bWl0KHRoaXMsIHNsb3QsIGV4cHJlc3Npb24pOwotICAgICAgICAgICAgZXhwcmVzc2lvbiA9IFR5
cGVkRXhwcmVzc2lvbiB7IGV4cHJlc3Npb24udHlwZSgpLCBzbG90IH07Ci0gICAgICAgIH0pOwot
ICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7Ci0gICAgICAgIG1fc3RhY2tTaXplICs9IG5ld1N0
YWNrLnNpemUoKTsKICAgICB9CiAKICAgICB2b2lkIGZpbmFsaXplUHJldmlvdXNCbG9ja0ZvckNh
dGNoKENvbnRyb2xUeXBlJiwgU3RhY2smKTsKQEAgLTQ5MiwxMCArNjA3LDEyIEBAIHByaXZhdGU6
CiAgICAgRXhwcmVzc2lvblR5cGUgbV9qc051bGxDb25zdGFudDsKICAgICBFeHByZXNzaW9uVHlw
ZSBtX3plcm9Db25zdGFudDsKICAgICBSZXN1bHRMaXN0IG1fdW5pdGlhbGl6ZWRMb2NhbHM7Cisg
ICAgVmVjdG9yPFZpcnR1YWxSZWdpc3RlciwgMj4gbV9sb2NhbHM7CiAgICAgSGFzaE1hcDxFbmNv
ZGVkSlNWYWx1ZSwgVmlydHVhbFJlZ2lzdGVyLCBXVEY6OkludEhhc2g8RW5jb2RlZEpTVmFsdWU+
LCBDb25zdGFudE1hcEhhc2hUcmFpdHM+IG1fY29uc3RhbnRNYXA7Ci0gICAgVmVjdG9yPFZpcnR1
YWxSZWdpc3RlciwgMj4gbV9yZXN1bHRzOwotICAgIENoZWNrZWQ8dW5zaWduZWQ+IG1fc3RhY2tT
aXplIHsgMCB9OwotICAgIENoZWNrZWQ8dW5zaWduZWQ+IG1fbWF4U3RhY2tTaXplIHsgMCB9Owor
ICAgIFZlY3RvcjxUeXBlZEV4cHJlc3Npb24sIDI+IG1fcmVzdWx0czsKKyAgICBXYXNtRXhwcmVz
c2lvblNsb3RTdGFjayBtX2V4cHJlc3Npb25TdGFja1Nsb3RzOworICAgIENoZWNrZWQ8dW5zaWdu
ZWQ+IG1fbWF4U3RhY2tTbG90U2l6ZSB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2ZpcnN0U3RhY2tT
bG90SW5kZXggPSAwOwogICAgIENoZWNrZWQ8dW5zaWduZWQ+IG1fdHJ5RGVwdGggeyAwIH07CiAg
ICAgYm9vbCBtX3VzZXNFeGNlcHRpb25zIHsgZmFsc2UgfTsKIH07CkBAIC01MzUsMTkgKzY1Miwx
NiBAQCBMTEludEdlbmVyYXRvcjo6TExJbnRHZW5lcmF0b3IoTW9kdWxlSW5mb3JtYXRpb24mIGlu
Zm8sIHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXgsCiAgICAgICAgICp0aHJlYWRTcGVjaWZpYyA9IEJ1
ZmZlcigpOwogICAgICAgICBtX3dyaXRlci5zZXRJbnN0cnVjdGlvbkJ1ZmZlcihXVEZNb3ZlKGJ1
ZmZlcikpOwogICAgIH0KLQotICAgIG1fY29kZUJsb2NrLT5tX251bVZhcnMgPSBudW1iZXJPZkxM
SW50Q2FsbGVlU2F2ZVJlZ2lzdGVyczsKLSAgICBtX3N0YWNrU2l6ZSA9IG51bWJlck9mTExJbnRD
YWxsZWVTYXZlUmVnaXN0ZXJzOwotICAgIG1fbWF4U3RhY2tTaXplID0gbnVtYmVyT2ZMTEludENh
bGxlZVNhdmVSZWdpc3RlcnM7Ci0KKyAgICBtX2NvZGVCbG9jay0+bV9udW1WYXJzID0gMDsKICAg
ICBXYXNtRW50ZXI6OmVtaXQodGhpcyk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNv
ZGVCbG9ja0dlbmVyYXRvcj4gTExJbnRHZW5lcmF0b3I6OmZpbmFsaXplKCkKIHsKKyAgICBjaGVj
a0NvbnNpc3RlbmN5KCk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb2RlQmxvY2spOwogCi0gICAg
c2l6ZV90IG51bUNhbGxlZUxvY2FscyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0Fs
aWdubWVudFJlZ2lzdGVycygpLCBtX21heFN0YWNrU2l6ZSk7CisgICAgc2l6ZV90IG51bUNhbGxl
ZUxvY2FscyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVy
cygpLCBtX21heFN0YWNrU2xvdFNpemUgKyBudW1iZXJPZkxMSW50Q2FsbGVlU2F2ZVJlZ2lzdGVy
cyk7CiAgICAgbV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzID0gbnVtQ2FsbGVlTG9jYWxz
OwogICAgIFJFTEVBU0VfQVNTRVJUKG51bUNhbGxlZUxvY2FscyA9PSBtX2NvZGVCbG9jay0+bV9u
dW1DYWxsZWVMb2NhbHMpOwogCkBAIC01ODksMTMgKzcwMywxMSBAQCBhdXRvIExMSW50R2VuZXJh
dG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUp
IC0+IExMSQogICAgIC8vIFdlIG5lZWQgdG8gYWxsb2NhdGUgYXQgbGVhc3Qgc3BhY2UgZm9yIGFs
bCBHUFJzIGFuZCBGUFJzLgogICAgIC8vIFJldHVybiB2YWx1ZXMgdXNlIHRoZSBzYW1lIGFsbG9j
YXRpb24gbGF5b3V0LgogCi0gICAgY29uc3QgYXV0byBpbml0aWFsU3RhY2tTaXplID0gbV9zdGFj
a1NpemU7Ci0KICAgICBjb25zdCBhdXRvJiBjYWxsaW5nQ29udmVudGlvbiA9IHdhc21DYWxsaW5n
Q29udmVudGlvbigpOwogICAgIGNvbnN0IHVpbnQzMl90IGdwckNvdW50ID0gY2FsbGluZ0NvbnZl
bnRpb24uZ3ByQXJncy5zaXplKCk7CiAgICAgY29uc3QgdWludDMyX3QgZnByQ291bnQgPSBjYWxs
aW5nQ29udmVudGlvbi5mcHJBcmdzLnNpemUoKTsKIAotICAgIHVpbnQzMl90IHN0YWNrQ291bnQg
PSAwOworICAgIHVpbnQzMl90IG1heFN0YWNrSW5kZXggPSAwOwogICAgIHVpbnQzMl90IGdwcklu
ZGV4ID0gMDsKICAgICB1aW50MzJfdCBmcHJJbmRleCA9IDA7CiAgICAgdWludDMyX3Qgc3RhY2tJ
bmRleCA9IDA7CkBAIC02MTAsMjMgKzcyMiwyNSBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxs
SW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IExMSQog
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWY6CiAgICAgICAgICAgICBpZiAoZ3BySW5kZXggPCBn
cHJDb3VudCkKICAgICAgICAgICAgICAgICArK2dwckluZGV4OwotICAgICAgICAgICAgZWxzZSBp
ZiAoc3RhY2tJbmRleCsrID49IHN0YWNrQ291bnQpCi0gICAgICAgICAgICAgICAgKytzdGFja0Nv
dW50OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICsrc3RhY2tJbmRleDsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CiAgICAgICAgIGNh
c2UgVHlwZUtpbmQ6OkY2NDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VjEyODoKICAgICAgICAg
ICAgIGlmIChmcHJJbmRleCA8IGZwckNvdW50KQogICAgICAgICAgICAgICAgICsrZnBySW5kZXg7
Ci0gICAgICAgICAgICBlbHNlIGlmIChzdGFja0luZGV4KysgPj0gc3RhY2tDb3VudCkKLSAgICAg
ICAgICAgICAgICArK3N0YWNrQ291bnQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgc3RhY2tJbmRleCArPSB0eXBlLnNpemUoKSAvIDg7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIG1heFN0YWNrSW5kZXggPSBzdGQ6Om1heChtYXhTdGFja0luZGV4LCBz
dGFja0luZGV4KTsKICAgICB9OwogCi0KICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2ln
bmF0dXJlLmFyZ3VtZW50Q291bnQoKTsgaSsrKQogICAgICAgICBhbGxvY2F0ZVN0YWNrUmVnaXN0
ZXIoc2lnbmF0dXJlLmFyZ3VtZW50KGkpKTsKIApAQCAtNjM1LDMwICs3NDksNDAgQEAgYXV0byBM
TEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IFNpZ25hdHVyZSYg
c2lnbmF0dXJlKSAtPiBMTEkKICAgICBzdGFja0luZGV4ID0gMDsKICAgICBmb3IgKHVpbnQzMl90
IGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNvdW50KCk7IGkrKykKICAgICAgICAgYWxsb2Nh
dGVTdGFja1JlZ2lzdGVyKHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpKTsKKyAgICAKKyAgICBjb25z
dCB1aW50MzJfdCBzdGFja0FyZ3NTaXplID0gbWF4U3RhY2tJbmRleDsKIAogICAgIC8vIEZJWE1F
OiB3ZSBhcmUgYWxsb2NhdGluZyB0aGUgZXh0cmEgc3BhY2UgZm9yIHRoZSBhcmd1bWVudC9yZXR1
cm4gY291bnQgaW4gb3JkZXIgdG8gYXZvaWQgaW50ZXJmZXJlbmNlLCBidXQgd2UgY291bGQgZG8g
YmV0dGVyCiAgICAgLy8gTk9URTogV2UgaW5jcmVhc2UgYXJnIGNvdW50IGJ5IDEgZm9yIHRoZSBj
YXNlIG9mIGluZGlyZWN0IGNhbGxzCi0gICAgbV9zdGFja1NpemUgKz0gc3RkOjptYXgoc2lnbmF0
dXJlLmFyZ3VtZW50Q291bnQoKSArIDEsIHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpKSArIGdwckNv
dW50ICsgZnByQ291bnQgKyBzdGFja0NvdW50ICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdp
c3RlcnMgKyAxOwotICAgIGlmIChtX3N0YWNrU2l6ZS52YWx1ZSgpICUgc3RhY2tBbGlnbm1lbnRS
ZWdpc3RlcnMoKSkKLSAgICAgICAgKyttX3N0YWNrU2l6ZTsKLSAgICBpZiAobV9tYXhTdGFja1Np
emUgPCBtX3N0YWNrU2l6ZSkKLSAgICAgICAgbV9tYXhTdGFja1NpemUgPSBtX3N0YWNrU2l6ZTsK
KyAgICBDaGVja2VkPHVuc2lnbmVkPiBuZXdTdGFja1NpemUgPSBzdGFja1Nsb3RTaXplKCkgKyBD
YWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyArIDEKKyAgICAgICAgKyAoQjM6OmJ5dGVz
Rm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpHUCkpIC8gOCAqIGdwckNvdW50KQor
ICAgICAgICArIChCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQ
KSkgLyA4ICogZnByQ291bnQpCisgICAgICAgICsgc3RhY2tBcmdzU2l6ZTsKKyAgICBpZiAobmV3
U3RhY2tTaXplICUgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSkKKyAgICAgICAgKytuZXdTdGFj
a1NpemU7CisgICAgaWYgKG1fbWF4U3RhY2tTbG90U2l6ZSA8IG5ld1N0YWNrU2l6ZSkKKyAgICAg
ICAgbV9tYXhTdGFja1Nsb3RTaXplID0gbmV3U3RhY2tTaXplOwogCiAKLSAgICBSZXN1bHRMaXN0
IGFyZ3VtZW50cyhzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpKTsKLSAgICBSZXN1bHRMaXN0IHRl
bXBvcmFyeVJlc3VsdHMoc2lnbmF0dXJlLnJldHVybkNvdW50KCkpOworICAgIFZlY3RvcjxUeXBl
ZEV4cHJlc3Npb24sIDI+IGFyZ3VtZW50cyhzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpKTsKKyAg
ICBWZWN0b3I8VHlwZWRFeHByZXNzaW9uLCAyPiB0ZW1wb3JhcnlSZXN1bHRzKHNpZ25hdHVyZS5y
ZXR1cm5Db3VudCgpKTsKIAotICAgIGNvbnN0IHVuc2lnbmVkIHN0YWNrT2Zmc2V0ID0gbV9zdGFj
a1NpemU7CisgICAgY29uc3QgdW5zaWduZWQgc3RhY2tPZmZzZXQgPSBuZXdTdGFja1NpemU7CiAg
ICAgY29uc3QgdW5zaWduZWQgYmFzZSA9IHN0YWNrT2Zmc2V0IC0gQ2FsbEZyYW1lOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnMgLSAxOwogCi0gICAgY29uc3QgdWludDMyX3QgZ3ByTGltaXQgPSBiYXNl
IC0gc3RhY2tDb3VudCAtIGdwckNvdW50OwotICAgIGNvbnN0IHVpbnQzMl90IGZwckxpbWl0ID0g
Z3ByTGltaXQgLSBmcHJDb3VudDsKLQorICAgIGNvbnN0IHVpbnQzMl90IGdwckxpbWl0ID0gYmFz
ZSAtIHN0YWNrQXJnc1NpemUgLSBncHJDb3VudDsKKyAgICBjb25zdCB1aW50MzJfdCBmcHJMaW1p
dCA9IGdwckxpbWl0IC0gZnByQ291bnQgKiAyOworICAgIAogICAgIHN0YWNrSW5kZXggPSBiYXNl
OwotICAgIGdwckluZGV4ID0gYmFzZSAtIHN0YWNrQ291bnQ7CisgICAgZ3BySW5kZXggPSBiYXNl
IC0gc3RhY2tBcmdzU2l6ZTsKICAgICBmcHJJbmRleCA9IGdwckluZGV4IC0gZ3ByQ291bnQ7Ci0g
ICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCk7IGkr
KykgewotICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS5hcmd1bWVudChpKS5raW5kKSB7CisgICAg
CisgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlsiLCBt
X2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAgICAgIkNhbGwgaW5mbzogYWxsb2NhdGluZyBzdGFj
ayBmcmFtZSBmb3IgYXJndW1lbnRzOiBzdGFja09mZnNldDogIiwgc3RhY2tPZmZzZXQsICIgYmFz
ZTogIiwgYmFzZSwgIiBncHJzOiBbIiwgZ3BySW5kZXgsICIsICIsIGdwckxpbWl0LCAiKSwgZnBy
czogWyIsIGZwckluZGV4LCAiLCAiLCBmcHJMaW1pdCwgIiksIGN1cnJlbnQgc3RhY2sgc2xvdCBz
aXplOiAiLCBzdGFja1Nsb3RTaXplKCkpOworICAgIAorICAgIGF1dG8gYWxsb2NhdGVDYWxsZWVD
b3B5UmVnaXN0ZXIgPSBbJl0oVHlwZSB0eXBlKSB7CisgICAgICAgIHVpbnQzMl90IHJlc3VsdCA9
IDA7CisgICAgICAgIHN3aXRjaCAodHlwZS5raW5kKSB7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkkzMjoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6STY0OgogICAgICAgICBjYXNlIFR5cGVLaW5k
OjpFeHRlcm5yZWY6CkBAIC02NjYsNjcgKzc5MCw1NyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpj
YWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IExM
SQogICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgogICAgICAgICBjYXNlIFR5cGVLaW5k
OjpSZWY6CiAgICAgICAgICAgICBpZiAoZ3BySW5kZXggPiBncHJMaW1pdCkKLSAgICAgICAgICAg
ICAgICBhcmd1bWVudHNbaV0gPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgtLWdwckluZGV4KTsK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSAtLWdwckluZGV4OwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGFyZ3VtZW50c1tpXSA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKC0t
c3RhY2tJbmRleCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gLS1zdGFja0luZGV4OwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RjY0OgotICAgICAgICAgICAgaWYgKGZwckluZGV4ID4gZnByTGltaXQpCi0g
ICAgICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoLS1m
cHJJbmRleCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJndW1lbnRzW2ld
ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoLS1zdGFja0luZGV4KTsKKyAgICAgICAgY2FzZSBU
eXBlS2luZDo6VjEyODoKKyAgICAgICAgICAgIGlmIChmcHJJbmRleCA+PSBmcHJMaW1pdCArIHR5
cGUuc2l6ZSgpIC8gOCkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZwckluZGV4IC0gdHlw
ZS5zaXplKCkgLyA4ICsgMTsKKyAgICAgICAgICAgICAgICBmcHJJbmRleCAtPSB0eXBlLnNpemUo
KSAvIDg7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN0
YWNrSW5kZXggLSB0eXBlLnNpemUoKSAvIDggKyAxOworICAgICAgICAgICAgICAgIHN0YWNrSW5k
ZXggLT0gdHlwZS5zaXplKCkgLyA4OworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1
bmM6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9
Ci0gICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH07CisKKyAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKTsgaSsrKQorICAgICAgICBh
cmd1bWVudHNbaV0gPSB7IHNpZ25hdHVyZS5hcmd1bWVudChpKSwgdmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwoYWxsb2NhdGVDYWxsZWVDb3B5UmVnaXN0ZXIoc2lnbmF0dXJlLmFyZ3VtZW50KGkpKSkg
fTsKIAogICAgIHN0YWNrSW5kZXggPSBiYXNlOwotICAgIGdwckluZGV4ID0gYmFzZSAtIHN0YWNr
Q291bnQ7CisgICAgZ3BySW5kZXggPSBiYXNlIC0gc3RhY2tBcmdzU2l6ZTsKICAgICBmcHJJbmRl
eCA9IGdwckluZGV4IC0gZ3ByQ291bnQ7Ci0gICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHNp
Z25hdHVyZS5yZXR1cm5Db3VudCgpOyBpKyspIHsKLSAgICAgICAgc3dpdGNoIChzaWduYXR1cmUu
cmV0dXJuVHlwZShpKS5raW5kKSB7Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKLSAgICAg
ICAgY2FzZSBUeXBlS2luZDo6STY0OgotICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6
Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6
OlJlZk51bGw6Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKLSAgICAgICAgICAgIGlmIChn
cHJJbmRleCA+IGdwckxpbWl0KQotICAgICAgICAgICAgICAgIHRlbXBvcmFyeVJlc3VsdHNbaV0g
PSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgtLWdwckluZGV4KTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICB0ZW1wb3JhcnlSZXN1bHRzW2ldID0gdmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwoLS1zdGFja0luZGV4KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5
cGVLaW5kOjpGMzI6Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OkY2NDoKLSAgICAgICAgICAgIGlm
IChmcHJJbmRleCA+IGZwckxpbWl0KQotICAgICAgICAgICAgICAgIHRlbXBvcmFyeVJlc3VsdHNb
aV0gPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgtLWZwckluZGV4KTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB0ZW1wb3JhcnlSZXN1bHRzW2ldID0gdmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoLS1zdGFja0luZGV4KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFR5cGVLaW5kOjpWb2lkOgotICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgotICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IG1fc3RhY2tTaXplID0gaW5pdGlhbFN0YWNrU2l6ZTsKKyAgICAKKyAgICBmb3IgKHVpbnQzMl90
IGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNvdW50KCk7IGkrKykKKyAgICAgICAgdGVtcG9y
YXJ5UmVzdWx0c1tpXSA9IHsgc2lnbmF0dXJlLnJldHVyblR5cGUoaSksIHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKGFsbG9jYXRlQ2FsbGVlQ29weVJlZ2lzdGVyKHNpZ25hdHVyZS5yZXR1cm5UeXBl
KGkpKSkgfTsKKyAgICAKKyAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVybmFsOjp2
ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAiQ2FsbCBpbmZvOiBh
cmdzOiAiLCBsaXN0RHVtcChhcmd1bWVudHMpLCAiIHRlbXBvcmFyeVJlc3VsdHM6ICIsIGxpc3RE
dW1wKHRlbXBvcmFyeVJlc3VsdHMpKTsKIAogICAgIGF1dG8gY29tbWl0UmVzdWx0cyA9IFt0aGlz
LCB0ZW1wb3JhcnlSZXN1bHRzID0gV1RGTW92ZSh0ZW1wb3JhcnlSZXN1bHRzKV0oUmVzdWx0TGlz
dCYgcmVzdWx0cykgewogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIGZvciAo
YXV0byB0ZW1wb3JhcnlSZXN1bHQgOiB0ZW1wb3JhcnlSZXN1bHRzKSB7Ci0gICAgICAgICAgICBF
eHByZXNzaW9uVHlwZSByZXN1bHQgPSBwdXNoKE5vQ29uc2lzdGVuY3lDaGVjayk7Ci0gICAgICAg
ICAgICBXYXNtTW92OjplbWl0KHRoaXMsIHJlc3VsdCwgdGVtcG9yYXJ5UmVzdWx0KTsKKyAgICAg
ICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdCA9IHB1c2godGVtcG9yYXJ5UmVzdWx0LnR5cGUo
KSwgTm9Db25zaXN0ZW5jeUNoZWNrKTsKKyAgICAgICAgICAgIHR5cGVkTW92ZShyZXN1bHQsIHRl
bXBvcmFyeVJlc3VsdCk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVy
bmFsOjp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAgICAgIkNh
bGwgaW5mbyByZXN1bHRzIChjb21taXRlZCk6ICIsIGxpc3REdW1wKHJlc3VsdHMpKTsKICAgICB9
OwogCi0gICAgcmV0dXJuIExMSW50Q2FsbEluZm9ybWF0aW9uIHsgc3RhY2tPZmZzZXQsIHN0YWNr
Q291bnQsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShjb21taXRSZXN1bHRzKSB9OworICAg
IHJldHVybiBMTEludENhbGxJbmZvcm1hdGlvbiB7IHN0YWNrT2Zmc2V0LCBzdGFja0FyZ3NTaXpl
LCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUoY29tbWl0UmVzdWx0cykgfTsKIH0KIAotYXV0
byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVlKGNvbnN0IFNpZ25hdHVy
ZSYgc2lnbmF0dXJlKSAtPiBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyLCAyPgorYXV0byBMTEludEdl
bmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVlKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0
dXJlKSAtPiBWZWN0b3I8VHlwZWRFeHByZXNzaW9uLCAyPgogewogICAgIGlmIChtX3Jlc3VsdHMu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gbV9yZXN1bHRzOwpAQCAtNzQxLDcgKzg1NSw3IEBAIGF1
dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZShjb25zdCBTaWduYXR1
cmUmIHNpZ25hdHVyZSkgLT4gVmVjCiAgICAgdWludDMyX3QgZnBySW5kZXggPSBncHJDb3VudDsK
ICAgICB1aW50MzJfdCBzdGFja0luZGV4ID0gMTsKICAgICBjb25zdCB1aW50MzJfdCBtYXhHUFJJ
bmRleCA9IGdwckNvdW50OwotICAgIGNvbnN0IHVpbnQzMl90IG1heEZQUkluZGV4ID0gbWF4R1BS
SW5kZXggKyBmcHJDb3VudDsKKyAgICBjb25zdCB1aW50MzJfdCBtYXhGUFJJbmRleCA9IG1heEdQ
UkluZGV4ICsgZnByQ291bnQgKiAyOwogCiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHNp
Z25hdHVyZS5yZXR1cm5Db3VudCgpOyBpKyspIHsKICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUu
cmV0dXJuVHlwZShpKS5raW5kKSB7CkBAIC03NTIsMjIgKzg2NiwyOSBAQCBhdXRvIExMSW50R2Vu
ZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUpIC0+IFZlYwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgogICAgICAgICBjYXNl
IFR5cGVLaW5kOjpSZWY6CiAgICAgICAgICAgICBpZiAoZ3BySW5kZXggPCBtYXhHUFJJbmRleCkK
LSAgICAgICAgICAgICAgICBtX3Jlc3VsdHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KG51bWJlck9mTExJbnRDYWxsZWVTYXZlUmVnaXN0ZXJzICsgZ3BySW5kZXgrKykpOworICAgICAg
ICAgICAgICAgIG1fcmVzdWx0cy5hcHBlbmQoeyBzaWduYXR1cmUucmV0dXJuVHlwZShpKSwgdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwobnVtYmVyT2ZMTEludENhbGxlZVNhdmVSZWdpc3RlcnMgKyBn
cHJJbmRleCsrKSB9KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3Jlc3Vs
dHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGFja0lu
ZGV4KyspKTsKKyAgICAgICAgICAgICAgICBtX3Jlc3VsdHMuYXBwZW5kKHsgc2lnbmF0dXJlLnJl
dHVyblR5cGUoaSksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGFj
a0luZGV4KyspIH0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkYzMjoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgotICAgICAgICAgICAgaWYgKGZwcklu
ZGV4IDwgbWF4RlBSSW5kZXgpCi0gICAgICAgICAgICAgICAgbV9yZXN1bHRzLmFwcGVuZCh2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChudW1iZXJPZkxMSW50Q2FsbGVlU2F2ZVJlZ2lzdGVycyArIGZw
ckluZGV4KyspKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3Jlc3VsdHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGFja0luZGV4
KyspKTsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VjEyODoKKyAgICAgICAgICAgIGlmIChmcHJJ
bmRleCArIHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLnNpemUoKSAvIDggPD0gbWF4RlBSSW5kZXgp
IHsKKyAgICAgICAgICAgICAgICBtX3Jlc3VsdHMuYXBwZW5kKHsgc2lnbmF0dXJlLnJldHVyblR5
cGUoaSksIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG51bWJlck9mTExJbnRDYWxsZWVTYXZlUmVn
aXN0ZXJzICsgZnBySW5kZXggKyBzaWduYXR1cmUucmV0dXJuVHlwZShpKS5zaXplKCkgLyA4IC0g
MSkgfSk7CisgICAgICAgICAgICAgICAgZnBySW5kZXggKz0gc2lnbmF0dXJlLnJldHVyblR5cGUo
aSkuc2l6ZSgpIC8gODsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV9y
ZXN1bHRzLmFwcGVuZCh7IHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCB2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoc3RhY2tJbmRleCkgfSk7CisgICAgICAgICAgICAgICAg
c3RhY2tJbmRleCArPSBzaWduYXR1cmUucmV0dXJuVHlwZShpKS5zaXplKCkgLyA4OworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6
CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIGRhdGFMb2dMbklm
KExMSW50R2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJbIiwgbV9mdW5jdGlvbkluZGV4LCAi
XSIsCisgICAgICAgICJDYWxsZWUgaW5mbzogcmVzdWx0czogIiwgbGlzdER1bXAobV9yZXN1bHRz
KSk7CiAKICAgICByZXR1cm4gbV9yZXN1bHRzOwogfQpAQCAtNzg3LDE4ICs5MDgsMzIgQEAgYXV0
byBMTEludEdlbmVyYXRvcjo6YWRkQXJndW1lbnRzKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJl
KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgdWludDMyX3QgZ3BySW5kZXggPSAwOwogICAgIHVpbnQz
Ml90IGZwckluZGV4ID0gbWF4R1BSSW5kZXg7CiAgICAgdWludDMyX3Qgc3RhY2tJbmRleCA9IDE7
CisgICAgCisgICAgQVNTRVJUKCFzdGFja0NvdW50KCkpOworICAgIEFTU0VSVCghbV9maXJzdFN0
YWNrU2xvdEluZGV4KTsKKyAgICBtX2ZpcnN0U3RhY2tTbG90SW5kZXggKz0gbnVtYmVyT2ZMTElu
dENhbGxlZVNhdmVSZWdpc3RlcnM7CiAKICAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyPiByZWdp
c3RlckFyZ3VtZW50cyhncHJDb3VudCArIGZwckNvdW50KTsKLSAgICBmb3IgKHVpbnQzMl90IGkg
PSAwOyBpIDwgZ3ByQ291bnQgKyBmcHJDb3VudDsgaSsrKQotICAgICAgICByZWdpc3RlckFyZ3Vt
ZW50c1tpXSA9IHB1c2goTm9Db25zaXN0ZW5jeUNoZWNrKTsKKyAgICBmb3IgKHVpbnQzMl90IGkg
PSAwOyBpIDwgZ3ByQ291bnQ7IGkrKykKKyAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNbaV0gPSB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2ZpcnN0U3RhY2tTbG90SW5kZXgrKyk7CisgICAgZm9y
ICh1aW50MzJfdCBpID0gMDsgaSA8IGZwckNvdW50OyBpKyspIHsKKyAgICAgICAgcmVnaXN0ZXJB
cmd1bWVudHNbZ3ByQ291bnQgKyBpXSA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fZmlyc3RT
dGFja1Nsb3RJbmRleCArIDEpOworICAgICAgICBBU1NFUlQobmV4dFNsb3RGb3JVcHBlckJpdHMo
cmVnaXN0ZXJBcmd1bWVudHNbZ3ByQ291bnQgKyBpXSkgPT0gdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwobV9maXJzdFN0YWNrU2xvdEluZGV4KSk7CisgICAgICAgIG1fZmlyc3RTdGFja1Nsb3RJbmRl
eCArPSAyOworICAgIH0KKyAgICAKKyAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVy
bmFsOjp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAiUmVnaXN0
ZXIgYXJndW1lbnRzIGFsbG9jYXRlZCBhczogIiwgbGlzdER1bXAocmVnaXN0ZXJBcmd1bWVudHMp
LCAiIDogdGhlcmUgYXJlICIsIGdwckNvdW50LCAiIGdwcnMgYW5kICIsIGZwckNvdW50LCAiIDEy
OC1iaXQgZnBycyIpOwogCi0gICAgY29uc3QgYXV0byBhZGRBcmd1bWVudCA9IFsmXSh1aW50MzJf
dCBpbmRleCwgdWludDMyX3QmIGNvdW50LCB1aW50MzJfdCBtYXgpIHsKKyAgICBjb25zdCBhdXRv
IGFkZEFyZ3VtZW50ID0gWyZdKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBzaXplLCB1aW50MzJf
dCYgY291bnQsIHVpbnQzMl90IG1heCkgewogICAgICAgICBpZiAoY291bnQgPCBtYXgpCiAgICAg
ICAgICAgICBtX25vcm1hbGl6ZWRBcmd1bWVudHNbaW5kZXhdID0gcmVnaXN0ZXJBcmd1bWVudHNb
Y291bnQrK107Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fbm9ybWFsaXplZEFyZ3VtZW50
c1tpbmRleF0gPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoc3RhY2tJ
bmRleCsrKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX25vcm1hbGl6ZWRBcmd1bWVu
dHNbaW5kZXhdID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKHN0YWNr
SW5kZXgpOworICAgICAgICAgICAgc3RhY2tJbmRleCArPSBzaXplOworICAgICAgICB9CiAgICAg
fTsKLQorICAgIAogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXJndW1l
bnRDb3VudCgpOyBpKyspIHsKICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUuYXJndW1lbnQoaSku
a2luZCkgewogICAgICAgICBjYXNlIFR5cGVLaW5kOjpJMzI6CkBAIC04MDcsMTEgKzk0MiwxMiBA
QCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoK
ICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6
UmVmOgotICAgICAgICAgICAgYWRkQXJndW1lbnQoaSwgZ3BySW5kZXgsIG1heEdQUkluZGV4KTsK
KyAgICAgICAgICAgIGFkZEFyZ3VtZW50KGksIDEsIGdwckluZGV4LCBtYXhHUFJJbmRleCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjMyOgogICAgICAgICBj
YXNlIFR5cGVLaW5kOjpGNjQ6Ci0gICAgICAgICAgICBhZGRBcmd1bWVudChpLCBmcHJJbmRleCwg
bWF4RlBSSW5kZXgpOworICAgICAgICBjYXNlIFR5cGVLaW5kOjpWMTI4OgorICAgICAgICAgICAg
YWRkQXJndW1lbnQoaSwgc2lnbmF0dXJlLmFyZ3VtZW50KGkpLnNpemUoKSAvIDgsIGZwckluZGV4
LCBtYXhGUFJJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKQEAgLTgxOSwyNiArOTU1LDUz
IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEFyZ3VtZW50cyhjb25zdCBTaWduYXR1cmUmIHNp
Z25hdHVyZSkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9jb2Rl
QmxvY2stPm1fbnVtVmFycyArPSBncHJDb3VudCArIGZwckNvdW50OworICAgIG1fY29kZUJsb2Nr
LT5tX251bVZhcnMgKz0gZ3ByQ291bnQgKyBmcHJDb3VudCAqIDIgKyBudW1iZXJPZkxMSW50Q2Fs
bGVlU2F2ZVJlZ2lzdGVyczsKKyAgICAKKyAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvcklu
dGVybmFsOjp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAiTm9y
bWFsaXplZCBhcmd1bWVudHM6ICIsIGxpc3REdW1wKG1fbm9ybWFsaXplZEFyZ3VtZW50cykpOwor
ICAgIGRhdGFMb2dMbklmKExMSW50R2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJbIiwgbV9m
dW5jdGlvbkluZGV4LCAiXSIsCisgICAgICAgICJOZXh0IGF2YWlsYWJsZSBzbG90IGFmdGVyIGFk
ZGluZyBhcmd1bWVudHMgaXMgIiwgbV9maXJzdFN0YWNrU2xvdEluZGV4LCAiIGF0ICIsIHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKG1fZmlyc3RTdGFja1Nsb3RJbmRleCkpOwogCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotYXV0byBMTEludEdlbmVyYXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1aW50
MzJfdCBjb3VudCkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBMTEludEdlbmVyYXRvcjo6YWRkTG9j
YWwoVHlwZSB0eXBlLCB1aW50MzJfdCBsb2NhbEluZGV4LCB1aW50MzJfdCBjb3VudCkgLT4gUGFy
dGlhbFJlc3VsdAogewogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICBBU1NFUlRfVU5VU0VE
KGxvY2FsSW5kZXgsIGxvY2FsSW5kZXggPT0gbV9sb2NhbHMuc2l6ZSgpICsgbV9ub3JtYWxpemVk
QXJndW1lbnRzLnNpemUoKSk7CisgICAgQVNTRVJUKCFtX2V4cHJlc3Npb25TdGFja1Nsb3RzLnNp
emUoKSk7CisgICAgc2l6ZV90IHNsb3RDb3VudCA9ICgoc2l6ZV90KSBjb3VudCkgKiAodHlwZS5z
aXplKCkgLyA4KTsKIAotICAgIG1fY29kZUJsb2NrLT5tX251bVZhcnMgKz0gY291bnQ7CisgICAg
bV9jb2RlQmxvY2stPm1fbnVtVmFycyArPSBzbG90Q291bnQ7CiAgICAgaWYgKGlzRnVuY3JlZih0
eXBlKSB8fCBpc0V4dGVybnJlZih0eXBlKSkgewotICAgICAgICB3aGlsZSAoY291bnQtLSkKLSAg
ICAgICAgICAgIG1fdW5pdGlhbGl6ZWRMb2NhbHMuYXBwZW5kKHB1c2goTm9Db25zaXN0ZW5jeUNo
ZWNrKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fc3RhY2tTaXplICs9IGNvdW50OworICAgICAg
ICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICAgICAgYXV0byBzbG90ID0gdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwobV9maXJzdFN0YWNrU2xvdEluZGV4KyspOworICAgICAgICAgICAgbV9sb2Nh
bHMuYXBwZW5kKHNsb3QpOworICAgICAgICAgICAgbV91bml0aWFsaXplZExvY2Fscy5hcHBlbmQo
c2xvdCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB3aGlsZSAoY291bnQtLSkg
eworICAgICAgICAgICAgaWYgKHR5cGUuc2l6ZSgpID09IDE2KQorICAgICAgICAgICAgICAgICsr
bV9maXJzdFN0YWNrU2xvdEluZGV4OworICAgICAgICAgICAgbV9sb2NhbHMuYXBwZW5kKHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKG1fZmlyc3RTdGFja1Nsb3RJbmRleCsrKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKExMSW50R2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJv
c2UsICJbIiwgbV9mdW5jdGlvbkluZGV4LCAiXSIsCisgICAgICAgICAgICAgICAgIkxvY2FsICIs
IGxvY2FsSW5kZXgsICIgZ29lcyBpbiAiLCBtX2xvY2Fscy5sYXN0KCksICIsICIsIG5leHRTbG90
Rm9yVXBwZXJCaXRzKG1fbG9jYWxzLmxhc3QoKSksICJ0YWtpbmcgc2xvdHMgIiwgbV9maXJzdFN0
YWNrU2xvdEluZGV4LTEsICIgYW5kICIsIG1fZmlyc3RTdGFja1Nsb3RJbmRleC0yKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVybmFs
Ojp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAiTmV4dCBhdmFp
bGFibGUgc2xvdCBhZnRlciBhZGRpbmcgbG9jYWwocykgaXMgIiwgbV9maXJzdFN0YWNrU2xvdElu
ZGV4LCAiIGF0ICIsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fZmlyc3RTdGFja1Nsb3RJbmRl
eCkpOworICAgIAorICAgIEFTU0VSVChuZXh0U2xvdEluZGV4KFR5cGVzOjpJNjQpID09IG1fZmly
c3RTdGFja1Nsb3RJbmRleCk7CisgICAgQVNTRVJUKG5leHRTbG90SW5kZXgoVHlwZXM6OlYxMjgp
ID09IG1fZmlyc3RTdGFja1Nsb3RJbmRleCArIDEpOworICAgIAogICAgIHJldHVybiB7IH07CiB9
CiAKIHZvaWQgTExJbnRHZW5lcmF0b3I6OmRpZEZpbmlzaFBhcnNpbmdMb2NhbHMoKQogeworICAg
IGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICBpZiAobV91bml0aWFsaXplZExvY2Fscy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtODUwLDQ4ICsxMDEzLDYwIEBAIHZvaWQgTExJbnRH
ZW5lcmF0b3I6OmRpZEZpbmlzaFBhcnNpbmdMb2NhbHMoKQogCiBhdXRvIExMSW50R2VuZXJhdG9y
OjphZGRDb25zdGFudChUeXBlIHR5cGUsIGludDY0X3QgdmFsdWUpIC0+IEV4cHJlc3Npb25UeXBl
CiB7Ci0gICAgYXV0byBjb25zdGFudCA9IFsmXSB7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAg
ICAgICAgICByZXR1cm4gemVyb0NvbnN0YW50KCk7Ci0KLSAgICAgICAgaWYgKHZhbHVlID09IEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSkpCi0gICAgICAgICAgICByZXR1cm4ganNOdWxsQ29uc3Rh
bnQoKTsKLQotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc291cmNlKEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4ICsgbV9jb2RlQmxvY2stPm1fY29uc3RhbnRzLnNpemUoKSk7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9jb25zdGFudE1hcC5hZGQodmFsdWUsIHNvdXJjZSk7Ci0gICAgICAgIGlm
ICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZTsKLSAgICAgICAgbV9jb2RlQmxvY2stPm1fY29uc3RhbnRzLmFwcGVuZCh2YWx1ZSk7
Ci0gICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wR2VuZXJhdGVkV2FzbUJ5dGVjb2Rl
cygpKSkKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50VHlwZXMuYXBwZW5kKHR5
cGUpOwotICAgICAgICByZXR1cm4gc291cmNlOwotICAgIH07CiAgICAgLy8gbGVhdmUgYSBob2xl
IGlmIHdlIG5lZWQgdG8gbWF0ZXJpYWxpemUgdGhlIGNvbnN0YW50Ci0gICAgcHVzaCgpOwotICAg
IHJldHVybiBjb25zdGFudCgpOworICAgIHB1c2godHlwZSk7CisgICAgaWYgKCF2YWx1ZSkKKyAg
ICAgICAgcmV0dXJuIHplcm9Db25zdGFudCgpOworCisgICAgaWYgKHZhbHVlID09IEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSkpCisgICAgICAgIHJldHVybiBqc051bGxDb25zdGFudCgpOworCisg
ICAgVmlydHVhbFJlZ2lzdGVyIHNvdXJjZShGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCArIG1f
Y29kZUJsb2NrLT5tX2NvbnN0YW50cy5zaXplKCkpOworICAgIGF1dG8gcmVzdWx0ID0gbV9jb25z
dGFudE1hcC5hZGQodmFsdWUsIHNvdXJjZSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgbV9jb2RlQmxvY2st
Pm1fY29uc3RhbnRzLmFwcGVuZCh2YWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1
bXBHZW5lcmF0ZWRXYXNtQnl0ZWNvZGVzKCkpKQorICAgICAgICBtX2NvZGVCbG9jay0+bV9jb25z
dGFudFR5cGVzLmFwcGVuZCh0eXBlKTsKKyAgICByZXR1cm4gc291cmNlOworfQorCithdXRvIExM
SW50R2VuZXJhdG9yOjphZGRDb25zdGFudCh2MTI4X3QgdmFsdWUpIC0+IEV4cHJlc3Npb25UeXBl
Cit7CisgICAgLy8gbGVhdmUgYSBob2xlIGlmIHdlIG5lZWQgdG8gbWF0ZXJpYWxpemUgdGhlIGNv
bnN0YW50CisgICAgcHVzaChUeXBlczo6VjEyOCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHNvdXJj
ZShGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCArIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50cy5z
aXplKCkpOworICAgIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50cy5hcHBlbmQodmFsdWUudTY0eDJb
MF0pOworICAgIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50cy5hcHBlbmQodmFsdWUudTY0eDJbMV0p
OworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wR2VuZXJhdGVkV2FzbUJ5dGVjb2Rlcygp
KSkgeworICAgICAgICBtX2NvZGVCbG9jay0+bV9jb25zdGFudFR5cGVzLmFwcGVuZChUeXBlczo6
VjEyOCk7CisgICAgICAgIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50VHlwZXMuYXBwZW5kKFR5cGVz
OjpWMTI4KTsKKyAgICB9CisgICAgcmV0dXJuIHNvdXJjZTsKIH0KIAotYXV0byBMTEludEdlbmVy
YXRvcjo6Z2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+
IFBhcnRpYWxSZXN1bHQKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmdldExvY2FsKHVpbnQzMl90IGlu
ZGV4LCBXYXNtOjpUeXBlIHR5cGUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxS
ZXN1bHQKIHsKICAgICAvLyBsZWF2ZSBhIGhvbGUgaWYgd2UgbmVlZCB0byBtYXRlcmlhbGl6ZSB0
aGUgbG9jYWwKLSAgICBwdXNoKCk7CisgICAgcHVzaCh0eXBlKTsKICAgICByZXN1bHQgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JXYXNtTG9jYWwoaW5kZXgpOwogICAgIHJldHVybiB7IH07CiB9CiAKLWF1
dG8gTExJbnRHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlw
ZSB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBMTEludEdlbmVyYXRvcjo6c2V0TG9jYWwo
dWludDMyX3QgaW5kZXgsIFdhc206OlR5cGUgdHlwZSwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+
IFBhcnRpYWxSZXN1bHQKIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGFyZ2V0ID0gdmlydHVhbFJl
Z2lzdGVyRm9yV2FzbUxvY2FsKGluZGV4KTsKLQorICAgIAogICAgIC8vIElmIHRoaXMgbG9jYWwg
aXMgY3VycmVudGx5IG9uIHRoZSBzdGFjayB3ZSBuZWVkIHRvIG1hdGVyaWFsaXplIGl0LCBvdGhl
cndpc2UgaXQnbGwgc2VlIHRoZSBuZXcgdmFsdWUgaW5zdGVhZCBvZiB0aGUgb2xkIG9uZQotICAg
IHdhbGtFeHByZXNzaW9uU3RhY2sobV9wYXJzZXItPmV4cHJlc3Npb25TdGFjaygpLCBbJl0oVHlw
ZWRFeHByZXNzaW9uJiBleHByZXNzaW9uLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkgeworICAgIHdh
bGtFeHByZXNzaW9uU3RhY2soWyZdKFR5cGVkRXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgVmlydHVh
bFJlZ2lzdGVyIHNsb3QpIHsKICAgICAgICAgaWYgKGV4cHJlc3Npb24udmFsdWUoKSAhPSB0YXJn
ZXQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFdhc21Nb3Y6OmVtaXQodGhpcywgc2xv
dCwgZXhwcmVzc2lvbik7CisgICAgICAgIHR5cGVkTW92ZShzbG90LCBleHByZXNzaW9uKTsKKyAg
ICAgICAgQVNTRVJUKHR5cGUgPT0gZXhwcmVzc2lvbi50eXBlKCkpOwogICAgICAgICBleHByZXNz
aW9uID0gVHlwZWRFeHByZXNzaW9uIHsgZXhwcmVzc2lvbi50eXBlKCksIHNsb3QgfTsKICAgICB9
KTsKIAotICAgIFdhc21Nb3Y6OmVtaXQodGhpcywgdGFyZ2V0LCB2YWx1ZSk7CisgICAgdHlwZWRN
b3ZlKHRhcmdldCwgeyB0eXBlLCB2YWx1ZSB9KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC04
OTksNyArMTA3NCw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFJlCiBhdXRvIExMSW50R2VuZXJh
dG9yOjpnZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+
IFBhcnRpYWxSZXN1bHQKIHsKICAgICBjb25zdCBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbiYgZ2xv
YmFsID0gbV9pbmZvLmdsb2JhbHNbaW5kZXhdOwotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICBy
ZXN1bHQgPSBwdXNoKGdsb2JhbC50eXBlKTsKICAgICBzd2l0Y2ggKGdsb2JhbC5iaW5kaW5nTW9k
ZSkgewogICAgIGNhc2UgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246OkJpbmRpbmdNb2RlOjpFbWJl
ZGRlZEluSW5zdGFuY2U6CiAgICAgICAgIFdhc21HZXRHbG9iYWw6OmVtaXQodGhpcywgcmVzdWx0
LCBpbmRleCk7CkBAIC05NTMsNyArMTEyOCw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZExv
b3AoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTdGFjayYgZW5jbG9zaW5nU3RhY2ssIENvCiAg
ICAgUmVmPExhYmVsPiBib2R5ID0gbmV3RW1pdHRlZExhYmVsKCk7CiAgICAgUmVmPExhYmVsPiBj
b250aW51YXRpb24gPSBuZXdMYWJlbCgpOwogCi0gICAgYmxvY2sgPSBDb250cm9sVHlwZTo6bG9v
cChzaWduYXR1cmUsIG1fc3RhY2tTaXplLCBXVEZNb3ZlKGJvZHkpLCBXVEZNb3ZlKGNvbnRpbnVh
dGlvbikpOworICAgIGJsb2NrID0gQ29udHJvbFR5cGU6Omxvb3Aoc2lnbmF0dXJlLCBtX2V4cHJl
c3Npb25TdGFja1Nsb3RzLCBXVEZNb3ZlKGJvZHkpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwog
CiAgICAgVmVjdG9yPHVuc2lnbmVkPiB1bnJlc29sdmVkT2Zmc2V0czsKICAgICBWZWN0b3I8Vmly
dHVhbFJlZ2lzdGVyPiBvc3JFbnRyeURhdGE7CkBAIC05ODcsMTMgKzExNjIsMTMgQEAgYXV0byBM
TEludEdlbmVyYXRvcjo6YWRkTG9vcChCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBl
bmNsb3NpbmdTdGFjaywgQ28KIAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkVG9wTGV2ZWwoQmxv
Y2tTaWduYXR1cmUgc2lnbmF0dXJlKSAtPiBDb250cm9sVHlwZQogewotICAgIHJldHVybiBDb250
cm9sVHlwZTo6dG9wTGV2ZWwoc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwgbmV3TGFiZWwoKSk7Cisg
ICAgcmV0dXJuIENvbnRyb2xUeXBlOjp0b3BMZXZlbChzaWduYXR1cmUsIG1fZXhwcmVzc2lvblN0
YWNrU2xvdHMsIG5ld0xhYmVsKCkpOwogfQogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRCbG9j
ayhCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29udHJv
bFR5cGUmIG5ld0Jsb2NrLCBTdGFjayYgbmV3U3RhY2spIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAg
ICBzcGxpdFN0YWNrKHNpZ25hdHVyZSwgZW5jbG9zaW5nU3RhY2ssIG5ld1N0YWNrKTsKLSAgICBu
ZXdCbG9jayA9IENvbnRyb2xUeXBlOjpibG9jayhzaWduYXR1cmUsIG1fc3RhY2tTaXplLCBuZXdM
YWJlbCgpKTsKKyAgICBuZXdCbG9jayA9IENvbnRyb2xUeXBlOjpibG9jayhzaWduYXR1cmUsIG1f
ZXhwcmVzc2lvblN0YWNrU2xvdHMsIG5ld0xhYmVsKCkpOwogICAgIHJldHVybiB7IH07CiB9CiAK
QEAgLTEwMDYsNyArMTE4MSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZElmKEV4cHJlc3Np
b25UeXBlIGNvbmRpdGlvbiwgQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTCiAKICAgICBXYXNt
SmZhbHNlOjplbWl0KHRoaXMsIGNvbmRpdGlvbiwgYWx0ZXJuYXRlLT5iaW5kKHRoaXMpKTsKIAot
ICAgIHJlc3VsdCA9IENvbnRyb2xUeXBlOjppZl8oc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwgV1RG
TW92ZShhbHRlcm5hdGUpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOworICAgIHJlc3VsdCA9IENv
bnRyb2xUeXBlOjppZl8oc2lnbmF0dXJlLCBtX2V4cHJlc3Npb25TdGFja1Nsb3RzLCBXVEZNb3Zl
KGFsdGVybmF0ZSksIFdURk1vdmUoY29udGludWF0aW9uKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0K
IApAQCAtMTAyMCwxMSArMTE5NSwxMiBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRFbHNlKENv
bnRyb2xUeXBlJiBkYXRhLCBTdGFjayYgZXhwcmVzc2lvblN0YWNrKSAtPiBQYXJ0aQogCiBhdXRv
IExMSW50R2VuZXJhdG9yOjphZGRFbHNlVG9VbnJlYWNoYWJsZShDb250cm9sVHlwZSYgZGF0YSkg
LT4gUGFydGlhbFJlc3VsdAogewotICAgIG1fc3RhY2tTaXplID0gZGF0YS5zdGFja1NpemUoKSAr
IGRhdGEubV9zaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBtX2V4cHJlc3Npb25TdGFj
a1Nsb3RzID0gZGF0YS5tX2V4cHJlc3Npb25TdGFja1Nsb3RzOworLy8gICAgYWRkQXJndW1lbnRz
VG9TbG90U3RhY2soZGF0YS5tX3NpZ25hdHVyZSk7CiAKICAgICBDb250cm9sSWYmIGNvbnRyb2wg
PSBzdGQ6OmdldDxDb250cm9sSWY+KGRhdGEpOwogICAgIGVtaXRMYWJlbChjb250cm9sLm1fYWx0
ZXJuYXRlLmdldCgpKTsKLSAgICBkYXRhID0gQ29udHJvbFR5cGU6OmJsb2NrKGRhdGEubV9zaWdu
YXR1cmUsIG1fc3RhY2tTaXplLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRpb24pKTsKKyAgICBk
YXRhID0gQ29udHJvbFR5cGU6OmJsb2NrKGRhdGEubV9zaWduYXR1cmUsIG1fZXhwcmVzc2lvblN0
YWNrU2xvdHMsIFdURk1vdmUoZGF0YS5tX2NvbnRpbnVhdGlvbikpOwogICAgIHJldHVybiB7IH07
CiB9CiAKQEAgLTEwMzYsNyArMTIxMiw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFRyeShC
bG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29uCiAgICAg
c3BsaXRTdGFjayhzaWduYXR1cmUsIGVuY2xvc2luZ1N0YWNrLCBuZXdTdGFjayk7CiAgICAgUmVm
PExhYmVsPiB0cnlMYWJlbCA9IG5ld0VtaXR0ZWRMYWJlbCgpOwogICAgIFJlZjxMYWJlbD4gY29u
dGludWF0aW9uID0gbmV3TGFiZWwoKTsKLSAgICByZXN1bHQgPSBDb250cm9sVHlwZTo6Y3JlYXRl
VHJ5KHNpZ25hdHVyZSwgbV9zdGFja1NpemUsIFdURk1vdmUodHJ5TGFiZWwpLCBXVEZNb3ZlKGNv
bnRpbnVhdGlvbiksIG1fdHJ5RGVwdGgpOworICAgIHJlc3VsdCA9IENvbnRyb2xUeXBlOjpjcmVh
dGVUcnkoc2lnbmF0dXJlLCBtX2V4cHJlc3Npb25TdGFja1Nsb3RzLCBXVEZNb3ZlKHRyeUxhYmVs
KSwgV1RGTW92ZShjb250aW51YXRpb24pLCBtX3RyeURlcHRoKTsKICAgICByZXR1cm4geyB9Owog
fQogCkBAIC0xMDQ2LDkgKzEyMjIsMTMgQEAgdm9pZCBMTEludEdlbmVyYXRvcjo6ZmluYWxpemVQ
cmV2aW91c0Jsb2NrRm9yQ2F0Y2goQ29udHJvbFR5cGUmIGRhdGEsIFN0YWNrJiBleHAKICAgICAg
ICAgbWF0ZXJpYWxpemVDb25zdGFudHNBbmRMb2NhbHMoZXhwcmVzc2lvblN0YWNrKTsKICAgICBl
bHNlIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwotICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZGF0YS5zdGFja1NpemUoKSk7CisgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChkYXRhLnN0
YWNrQ291bnQoKSk7CiAgICAgICAgIGZvciAoVHlwZWRFeHByZXNzaW9uJiB2YWx1ZSA6IGV4cHJl
c3Npb25TdGFjaykgewotICAgICAgICAgICAgV2FzbU1vdjo6ZW1pdCh0aGlzLCBkc3QsIHZhbHVl
KTsKKyAgICAgICAgICAgIHR5cGVkTW92ZShkc3QsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2
YWx1ZS50eXBlKCkuc2l6ZSgpID09IDE2KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRzdCAt
IDEgPT0gbmV4dFNsb3RGb3JVcHBlckJpdHMoZHN0KSk7CisgICAgICAgICAgICAgICAgZHN0IC09
IDE7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB2YWx1ZSA9IFR5cGVkRXhwcmVzc2lvbiB7
IHZhbHVlLnR5cGUoKSwgZHN0IH07CiAgICAgICAgICAgICBkc3QgLT0gMTsKICAgICAgICAgfQpA
QCAtMTA2NywxNCArMTI0NywxNiBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRDYXRjaFRvVW5y
ZWFjaGFibGUodW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdAogICAgIG1fdXNl
c0V4Y2VwdGlvbnMgPSB0cnVlOwogICAgIFJlZjxMYWJlbD4gY2F0Y2hMYWJlbCA9IG5ld0VtaXR0
ZWRMYWJlbCgpOwogCi0gICAgbV9zdGFja1NpemUgPSBkYXRhLnN0YWNrU2l6ZSgpOwotICAgIFZp
cnR1YWxSZWdpc3RlciBleGNlcHRpb24gPSBwdXNoKCk7CisgICAgbV9leHByZXNzaW9uU3RhY2tT
bG90cyA9IGRhdGEubV9leHByZXNzaW9uU3RhY2tTbG90czsKKyAgICAKKyAgICBWaXJ0dWFsUmVn
aXN0ZXIgZXhjZXB0aW9uID0gcHVzaChUeXBlczo6Vm9pZCwgTm9Db25zaXN0ZW5jeUNoZWNrKTsK
KyAgICBBU1NFUlQoZXhjZXB0aW9uU2lnbmF0dXJlLnJldHVybnNWb2lkKCkpOwogICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPENvbnRyb2xUcnk+KGRhdGEpKSB7CiAgICAgICAgIENvbnRy
b2xUcnkmIHRyeURhdGEgPSBzdGQ6OmdldDxDb250cm9sVHJ5PihkYXRhKTsKLSAgICAgICAgZGF0
YSA9IENvbnRyb2xUeXBlOjpjcmVhdGVDYXRjaChkYXRhLm1fc2lnbmF0dXJlLCBkYXRhLnN0YWNr
U2l6ZSgpLCBXVEZNb3ZlKHRyeURhdGEubV90cnkpLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRp
b24pLCBjYXRjaExhYmVsLCB0cnlEYXRhLm1fdHJ5RGVwdGgsIGV4Y2VwdGlvbik7CisgICAgICAg
IGRhdGEgPSBDb250cm9sVHlwZTo6Y3JlYXRlQ2F0Y2goZGF0YS5tX3NpZ25hdHVyZSwgZGF0YS5t
X2V4cHJlc3Npb25TdGFja1Nsb3RzLCBXVEZNb3ZlKHRyeURhdGEubV90cnkpLCBXVEZNb3ZlKGRh
dGEubV9jb250aW51YXRpb24pLCBjYXRjaExhYmVsLCB0cnlEYXRhLm1fdHJ5RGVwdGgsIGV4Y2Vw
dGlvbik7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGNlcHRpb25TaWdu
YXR1cmUuYXJndW1lbnRDb3VudCgpOyArK2kpCi0gICAgICAgIHJlc3VsdHMuYXBwZW5kKHB1c2go
KSk7CisgICAgICAgIHJlc3VsdHMuYXBwZW5kKHB1c2goZXhjZXB0aW9uU2lnbmF0dXJlLmFyZ3Vt
ZW50KGkpKSk7CiAKICAgICBpZiAoQ29udGV4dDo6dXNlRmFzdFRMUygpKQogICAgICAgICBXYXNt
Q2F0Y2g6OmVtaXQodGhpcywgZXhjZXB0aW9uSW5kZXgsIGV4Y2VwdGlvbiwgZXhjZXB0aW9uU2ln
bmF0dXJlLmFyZ3VtZW50Q291bnQoKSwgcmVzdWx0cy5pc0VtcHR5KCkgPyAwIDogLXJlc3VsdHNb
MF0ub2Zmc2V0KCkpOwpAQCAtMTEyMCwxMSArMTMwMiwxMSBAQCBhdXRvIExMSW50R2VuZXJhdG9y
OjphZGRDYXRjaEFsbFRvVW5yZWFjaGFibGUoQ29udHJvbFR5cGUmIGRhdGEpIC0+IFBhcnRpYWxS
ZXN1bAogewogICAgIG1fdXNlc0V4Y2VwdGlvbnMgPSB0cnVlOwogICAgIFJlZjxMYWJlbD4gY2F0
Y2hMYWJlbCA9IG5ld0VtaXR0ZWRMYWJlbCgpOwotICAgIG1fc3RhY2tTaXplID0gZGF0YS5zdGFj
a1NpemUoKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZXhjZXB0aW9uID0gcHVzaCgpOworICAgIG1f
ZXhwcmVzc2lvblN0YWNrU2xvdHMgPSBkYXRhLm1fZXhwcmVzc2lvblN0YWNrU2xvdHM7CisgICAg
VmlydHVhbFJlZ2lzdGVyIGV4Y2VwdGlvbiA9IHB1c2goVHlwZXM6OlZvaWQsIE5vQ29uc2lzdGVu
Y3lDaGVjayk7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29udHJvbFRyeT4oZGF0
YSkpIHsKICAgICAgICAgQ29udHJvbFRyeSYgdHJ5RGF0YSA9IHN0ZDo6Z2V0PENvbnRyb2xUcnk+
KGRhdGEpOwotICAgICAgICBkYXRhID0gQ29udHJvbFR5cGU6OmNyZWF0ZUNhdGNoKGRhdGEubV9z
aWduYXR1cmUsIGRhdGEuc3RhY2tTaXplKCksIFdURk1vdmUodHJ5RGF0YS5tX3RyeSksIFdURk1v
dmUoZGF0YS5tX2NvbnRpbnVhdGlvbiksIGNhdGNoTGFiZWwsIHRyeURhdGEubV90cnlEZXB0aCwg
ZXhjZXB0aW9uKTsKKyAgICAgICAgZGF0YSA9IENvbnRyb2xUeXBlOjpjcmVhdGVDYXRjaChkYXRh
Lm1fc2lnbmF0dXJlLCBkYXRhLm1fZXhwcmVzc2lvblN0YWNrU2xvdHMsIFdURk1vdmUodHJ5RGF0
YS5tX3RyeSksIFdURk1vdmUoZGF0YS5tX2NvbnRpbnVhdGlvbiksIGNhdGNoTGFiZWwsIHRyeURh
dGEubV90cnlEZXB0aCwgZXhjZXB0aW9uKTsKICAgICB9CiAgICAgQ29udHJvbENhdGNoJiBjYXRj
aERhdGEgPSBzdGQ6OmdldDxDb250cm9sQ2F0Y2g+KGRhdGEpOwogICAgIGNhdGNoRGF0YS5tX2tp
bmQgPSBDYXRjaEtpbmQ6OkNhdGNoQWxsOwpAQCAtMTE1NywxOCArMTMzOSwxOCBAQCBhdXRvIExM
SW50R2VuZXJhdG9yOjphZGREZWxlZ2F0ZVRvVW5yZWFjaGFibGUoQ29udHJvbFR5cGUmIHRhcmdl
dCwgQ29udHJvbFR5cGUmCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBMTEludEdlbmVyYXRv
cjo6YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFZlY3RvcjxFeHByZXNzaW9uVHlw
ZT4mIGFyZ3MsIFN0YWNrJikgLT4gUGFydGlhbFJlc3VsdAorYXV0byBMTEludEdlbmVyYXRvcjo6
YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFN0YWNrJiBhcmdzKSAtPiBQYXJ0aWFs
UmVzdWx0CiB7CiAgICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7CiAgICAgLy8gV2UgaGF2ZSB0
byBtYXRlcmlhbGl6ZSB0aGUgYXJndW1lbnRzIGhlcmUgc2luY2UgaXQgbWlnaHQgaW5jbHVkZSBj
b25zdGFudHMgb3IKICAgICAvLyBkZWxheWVkIG1vdmVzLCBidXQgdGhlIHdhc21fdGhyb3cgb3Bj
b2RlIGV4cGVjdHMgYWxsIHRoZSBhcmd1bWVudHMgdG8gYmUgY29udGlndW91cwogICAgIC8vIGlu
IHRoZSBzdGFjay4gVGhlIHJlYXNvbiB3ZSBkb24ndCBjYWxsIG1hdGVyaWFsaXplQ29uc3RhbnRz
QW5kTG9jYWxzIGhlcmUgaXMgdGhhdAogICAgIC8vIGl0IGV4cGVjdHMgYSBzdGFjaywgbm90IGEg
dmVjdG9yIG9mIEV4cHJlc3Npb25UeXBlIGFyZ3VtZW50cy4KLSAgICB3YWxrRXhwcmVzc2lvblN0
YWNrKGFyZ3MsIFsmXShWaXJ0dWFsUmVnaXN0ZXImIGFyZywgVmlydHVhbFJlZ2lzdGVyIHNsb3Qp
IHsKLSAgICAgICAgaWYgKGFyZyA9PSBzbG90KQorICAgIHdhbGtFeHByZXNzaW9uU3RhY2soYXJn
cywgWyZdKFR5cGVkRXhwcmVzc2lvbiYgYXJnLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkgeworICAg
ICAgICBpZiAoYXJnLnZhbHVlKCkgPT0gc2xvdCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgV2FzbU1vdjo6ZW1pdCh0aGlzLCBzbG90LCBhcmcpOwotICAgICAgICBhcmcgPSBzbG90Owor
ICAgICAgICB0eXBlZE1vdmUoc2xvdCwgYXJnKTsKKyAgICAgICAgYXJnID0gVHlwZWRFeHByZXNz
aW9uIHsgYXJnLnR5cGUoKSwgc2xvdCB9OwogICAgIH0pOwogICAgIFdhc21UaHJvdzo6ZW1pdCh0
aGlzLCBleGNlcHRpb25JbmRleCwgYXJncy5pc0VtcHR5KCkgPyB2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbCgwKSA6IGFyZ3NbMF0pOwogICAgIHJldHVybiB7IH07CkBAIC0xMjY2LDE1ICsxNDQ4LDE4
IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEVuZFRvVW5yZWFjaGFibGUoQ29udHJvbEVudHJ5
JiBlbnRyeSwgU3RhY2smIGV4cHJlc3Npb25TCiB7CiAgICAgQ29udHJvbFR5cGUmIGRhdGEgPSBl
bnRyeS5jb250cm9sRGF0YTsKIAotICAgIHVuc2lnbmVkIHN0YWNrU2l6ZSA9IGRhdGEuc3RhY2tT
aXplKCk7CisgICAgdW5zaWduZWQgc3RhY2tTaXplID0gZGF0YS5zdGFja0NvdW50KCk7CiAgICAg
aWYgKENvbnRyb2xUeXBlOjppc0FueUNhdGNoKGVudHJ5LmNvbnRyb2xEYXRhKSkKICAgICAgICAg
KytzdGFja1NpemU7IC8vIEFjY291bnQgZm9yIHRoZSBjYXVnaHQgZXhjZXB0aW9uCi0gICAgUkVM
RUFTRV9BU1NFUlQodW5yZWFjaGFibGUgfHwgbV9zdGFja1NpemUgPT0gIHN0YWNrU2l6ZSArIGRh
dGEubV9zaWduYXR1cmUtPnJldHVybkNvdW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHVucmVh
Y2hhYmxlIHx8IHRoaXMtPnN0YWNrQ291bnQoKSA9PSAgc3RhY2tTaXplICsgZGF0YS5tX3NpZ25h
dHVyZS0+cmV0dXJuQ291bnQoKSk7CiAKLSAgICBtX3N0YWNrU2l6ZSA9IGRhdGEuc3RhY2tTaXpl
KCk7CisgICAgbV9leHByZXNzaW9uU3RhY2tTbG90cyA9IGRhdGEubV9leHByZXNzaW9uU3RhY2tT
bG90czsKIAogICAgIGlmIChDb250cm9sVHlwZTo6aXNUcnkoZGF0YSkgfHwgc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxDb250cm9sQ2F0Y2g+KGRhdGEpKQogICAgICAgICAtLW1fdHJ5RGVwdGg7Cisg
ICAgCisgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlsi
LCBtX2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAgICAgIkFkZCBlbmQsIG5ldyBzdGFjayBzbG90
czogIiwgbGlzdER1bXAobV9leHByZXNzaW9uU3RhY2tTbG90cyksICJyZWFjaGFibGU6ICIsICF1
bnJlYWNoYWJsZSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3NpZ25h
dHVyZS0+cmV0dXJuQ291bnQoKTsgKytpKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8g
ZG8gYSBjb25zaXN0ZW5jeSBjaGVjayBoZXJlIGJlY2F1c2Ugd2UganVzdCByZXNldCB0aGUgc3Rh
Y2sgc2l6ZQpAQCAtMTI4Miw3ICsxNDY3LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkRW5k
VG9VbnJlYWNoYWJsZShDb250cm9sRW50cnkmIGVudHJ5LCBTdGFjayYgZXhwcmVzc2lvblMKICAg
ICAgICAgLy8gVGhlIG9ubHkgcmVhc29uIHdlIGRvIHRoaW5ncyB0aGlzIHdheSBpcyBzbyB0aGF0
IGl0IGFsc28gd29ya3MgZm9yIHVucmVhY2hhYmxlIGJsb2NrcywKICAgICAgICAgLy8gc2luY2Ug
dGhleSBtaWdodCBub3QgaGF2ZSB0aGUgcmlnaHQgbnVtYmVyIG9mIHZhbHVlcyBpbiB0aGUgZXhw
cmVzc2lvbiBzdGFjay4KICAgICAgICAgLy8gSW5zdGVhZCwgd2UgZG8gYSBzdHJpY3RlciBjb25z
aXN0ZW5jeSBjaGVjayBiZWxvdy4KLSAgICAgICAgYXV0byB0bXAgPSBwdXNoKE5vQ29uc2lzdGVu
Y3lDaGVjayk7CisgICAgICAgIGF1dG8gdG1wID0gcHVzaChkYXRhLm1fc2lnbmF0dXJlLT5yZXR1
cm5UeXBlKGkpLCBOb0NvbnNpc3RlbmN5Q2hlY2spOwogICAgICAgICBBU1NFUlQodW5yZWFjaGFi
bGUgfHwgdG1wID09IGV4cHJlc3Npb25TdGFja1tpXS52YWx1ZSgpKTsKICAgICAgICAgaWYgKHVu
cmVhY2hhYmxlKQogICAgICAgICAgICAgZW50cnkuZW5jbG9zZWRFeHByZXNzaW9uU3RhY2suY29u
c3RydWN0QW5kQXBwZW5kKGRhdGEubV9zaWduYXR1cmUtPnJldHVyblR5cGUoaSksIHRtcCk7CkBA
IC0xMzIwLDExICsxNTA1LDE1IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhbGwodWludDMy
X3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiB7CiAgICAgQVNT
RVJUKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgPT0gYXJncy5zaXplKCkpOwogICAgIExMSW50
Q2FsbEluZm9ybWF0aW9uIGluZm8gPSBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoc2lnbmF0dXJl
KTsKLSAgICB1bmlmeVZhbHVlc1dpdGhCbG9jayhpbmZvLmFyZ3VtZW50cywgYXJncyk7CisgICAg
VmVjdG9yPFR5cGVkRXhwcmVzc2lvbj4gdHlwZWRBcmdzKGFyZ3Muc2l6ZSgpKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGFyZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgIHR5cGVkQXJnc1tp
XSA9IHsgc2lnbmF0dXJlLmFyZ3VtZW50KGkpLCBhcmdzW2ldIH07CisgICAgdW5pZnlWYWx1ZXNX
aXRoQmxvY2soaW5mby5hcmd1bWVudHMsIHR5cGVkQXJncyk7CisgICAgCiAgICAgaWYgKENvbnRl
eHQ6OnVzZUZhc3RUTFMoKSkKLSAgICAgICAgV2FzbUNhbGw6OmVtaXQodGhpcywgZnVuY3Rpb25J
bmRleCwgaW5mby5zdGFja09mZnNldCwgaW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRzKTsKKyAg
ICAgICAgV2FzbUNhbGw6OmVtaXQodGhpcywgZnVuY3Rpb25JbmRleCwgaW5mby5zdGFja09mZnNl
dCwgaW5mby5zaXplT2ZTdGFja0FyZ3VtZW50cyk7CiAgICAgZWxzZQotICAgICAgICBXYXNtQ2Fs
bE5vVGxzOjplbWl0KHRoaXMsIGZ1bmN0aW9uSW5kZXgsIGluZm8uc3RhY2tPZmZzZXQsIGluZm8u
bnVtYmVyT2ZTdGFja0FyZ3VtZW50cyk7CisgICAgICAgIFdhc21DYWxsTm9UbHM6OmVtaXQodGhp
cywgZnVuY3Rpb25JbmRleCwgaW5mby5zdGFja09mZnNldCwgaW5mby5zaXplT2ZTdGFja0FyZ3Vt
ZW50cyk7CiAgICAgaW5mby5jb21taXRSZXN1bHRzKHJlc3VsdHMpOwogCiAgICAgcmV0dXJuIHsg
fTsKQEAgLTEzMzksMTEgKzE1MjgsMTUgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQ2FsbElu
ZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmEKICAgICBB
U1NFUlQobV9pbmZvLnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgPT0gVGFibGVFbGVtZW50VHlw
ZTo6RnVuY3JlZik7CiAKICAgICBMTEludENhbGxJbmZvcm1hdGlvbiBpbmZvID0gY2FsbEluZm9y
bWF0aW9uRm9yQ2FsbGVyKHNpZ25hdHVyZSk7Ci0gICAgdW5pZnlWYWx1ZXNXaXRoQmxvY2soaW5m
by5hcmd1bWVudHMsIGFyZ3MpOworICAgIFZlY3RvcjxUeXBlZEV4cHJlc3Npb24+IHR5cGVkQXJn
cyhhcmdzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsg
KytpKQorICAgICAgICB0eXBlZEFyZ3NbaV0gPSB7IHNpZ25hdHVyZS5hcmd1bWVudChpKSwgYXJn
c1tpXSB9OworICAgIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGluZm8uYXJndW1lbnRzLCB0eXBlZEFy
Z3MpOworICAgIAogICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0VExTKCkpCi0gICAgICAgIFdhc21D
YWxsSW5kaXJlY3Q6OmVtaXQodGhpcywgY2FsbGVlSW5kZXgsIG1fY29kZUJsb2NrLT5hZGRTaWdu
YXR1cmUoc2lnbmF0dXJlKSwgaW5mby5zdGFja09mZnNldCwgaW5mby5udW1iZXJPZlN0YWNrQXJn
dW1lbnRzLCB0YWJsZUluZGV4KTsKKyAgICAgICAgV2FzbUNhbGxJbmRpcmVjdDo6ZW1pdCh0aGlz
LCBjYWxsZWVJbmRleCwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZv
LnN0YWNrT2Zmc2V0LCBpbmZvLnNpemVPZlN0YWNrQXJndW1lbnRzLCB0YWJsZUluZGV4KTsKICAg
ICBlbHNlCi0gICAgICAgIFdhc21DYWxsSW5kaXJlY3ROb1Rsczo6ZW1pdCh0aGlzLCBjYWxsZWVJ
bmRleCwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zm
c2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMsIHRhYmxlSW5kZXgpOworICAgICAgICBX
YXNtQ2FsbEluZGlyZWN0Tm9UbHM6OmVtaXQodGhpcywgY2FsbGVlSW5kZXgsIG1fY29kZUJsb2Nr
LT5hZGRTaWduYXR1cmUoc2lnbmF0dXJlKSwgaW5mby5zdGFja09mZnNldCwgaW5mby5zaXplT2ZT
dGFja0FyZ3VtZW50cywgdGFibGVJbmRleCk7CiAgICAgaW5mby5jb21taXRSZXN1bHRzKHJlc3Vs
dHMpOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTEzNTQsMTEgKzE1NDcsMTQgQEAgYXV0byBMTElu
dEdlbmVyYXRvcjo6YWRkQ2FsbFJlZihjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9y
PEV4cHJlc3Npb25UeXAKICAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWUgPSBhcmdzLnRha2VMYXN0
KCk7CiAKICAgICBMTEludENhbGxJbmZvcm1hdGlvbiBpbmZvID0gY2FsbEluZm9ybWF0aW9uRm9y
Q2FsbGVyKHNpZ25hdHVyZSk7Ci0gICAgdW5pZnlWYWx1ZXNXaXRoQmxvY2soaW5mby5hcmd1bWVu
dHMsIGFyZ3MpOworICAgIFZlY3RvcjxUeXBlZEV4cHJlc3Npb24+IHR5cGVkQXJncyhhcmdzLnNp
emUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQorICAg
ICAgICB0eXBlZEFyZ3NbaV0gPSB7IHNpZ25hdHVyZS5hcmd1bWVudChpKSwgYXJnc1tpXSB9Owor
ICAgIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGluZm8uYXJndW1lbnRzLCB0eXBlZEFyZ3MpOwogICAg
IGlmIChDb250ZXh0Ojp1c2VGYXN0VExTKCkpCi0gICAgICAgIFdhc21DYWxsUmVmOjplbWl0KHRo
aXMsIGNhbGxlZSwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0
YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMpOworICAgICAgICBXYXNtQ2Fs
bFJlZjo6ZW1pdCh0aGlzLCBjYWxsZWUsIG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUoc2lnbmF0
dXJlKSwgaW5mby5zdGFja09mZnNldCwgaW5mby5zaXplT2ZTdGFja0FyZ3VtZW50cyk7CiAgICAg
ZWxzZQotICAgICAgICBXYXNtQ2FsbFJlZk5vVGxzOjplbWl0KHRoaXMsIGNhbGxlZSwgbV9jb2Rl
QmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51
bWJlck9mU3RhY2tBcmd1bWVudHMpOworICAgICAgICBXYXNtQ2FsbFJlZk5vVGxzOjplbWl0KHRo
aXMsIGNhbGxlZSwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0
YWNrT2Zmc2V0LCBpbmZvLnNpemVPZlN0YWNrQXJndW1lbnRzKTsKICAgICBpbmZvLmNvbW1pdFJl
c3VsdHMocmVzdWx0cyk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTM2Niw3ICsxNTYyLDcgQEAg
YXV0byBMTEludEdlbmVyYXRvcjo6YWRkQ2FsbFJlZihjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVy
ZSwgVmVjdG9yPEV4cHJlc3Npb25UeXAKIAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkUmVmSXNO
dWxsKEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0
aWFsUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHJlc3VsdCA9IHB1c2goVHlw
ZXM6OkkzMik7CiAgICAgV2FzbVJlZklzTnVsbDo6ZW1pdCh0aGlzLCByZXN1bHQsIHZhbHVlKTsK
IAogICAgIHJldHVybiB7IH07CkBAIC0xMzc0LDcgKzE1NzAsNyBAQCBhdXRvIExMSW50R2VuZXJh
dG9yOjphZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpCiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFJlZkZ1bmModWludDMyX3QgaW5kZXgs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQg
PSBwdXNoKCk7CisgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6RnVuY3JlZik7CiAgICAgV2FzbVJl
ZkZ1bmM6OmVtaXQodGhpcywgcmVzdWx0LCBpbmRleCk7CiAKICAgICByZXR1cm4geyB9OwpAQCAt
MTM4Miw3ICsxNTc4LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkUmVmRnVuYyh1aW50MzJf
dCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGkKIAogYXV0byBMTEludEdl
bmVyYXRvcjo6YWRkVGFibGVHZXQodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUg
aW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBy
ZXN1bHQgPSBwdXNoKCk7CisgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6Vm9pZCk7IC8vIFRPRE8K
ICAgICBXYXNtVGFibGVHZXQ6OmVtaXQodGhpcywgcmVzdWx0LCBpbmRleCwgdGFibGVJbmRleCk7
CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTQxMSw3ICsxNjA3LDcgQEAgYXV0byBMTEludEdlbmVy
YXRvcjo6YWRkRWxlbURyb3AodW5zaWduZWQgZWxlbWVudEluZGV4KSAtPiBQYXJ0aWFsUmVzdWx0
CiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFRhYmxlU2l6ZSh1bnNpZ25lZCB0YWJsZUluZGV4
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVzdWx0
ID0gcHVzaCgpOworICAgIHB1c2goVHlwZXM6OkkzMik7CiAgICAgV2FzbVRhYmxlU2l6ZTo6ZW1p
dCh0aGlzLCByZXN1bHQsIHRhYmxlSW5kZXgpOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTE0MTks
NyArMTYxNSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFRhYmxlU2l6ZSh1bnNpZ25lZCB0
YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtCiAKIGF1dG8gTExJbnRHZW5lcmF0
b3I6OmFkZFRhYmxlR3Jvdyh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSBmaWxs
LCBFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlh
bFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICByZXN1bHQgPSBwdXNoKFR5cGVz
OjpJMzIpOwogICAgIFdhc21UYWJsZUdyb3c6OmVtaXQodGhpcywgcmVzdWx0LCBmaWxsLCBkZWx0
YSwgdGFibGVJbmRleCk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTQ0Nyw3ICsxNjQzLDcgQEAg
YXV0byBMTEludEdlbmVyYXRvcjo6YWRkVW5yZWFjaGFibGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiAK
IGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEN1cnJlbnRNZW1vcnkoRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICByZXN1
bHQgPSBwdXNoKFR5cGVzOjpJMzIpOwogICAgIFdhc21DdXJyZW50TWVtb3J5OjplbWl0KHRoaXMs
IHJlc3VsdCk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTQ2OSw3ICsxNjY1LDcgQEAgYXV0byBM
TEludEdlbmVyYXRvcjo6YWRkRGF0YURyb3AodW5zaWduZWQgZGF0YVNlZ21lbnRJbmRleCkgLT4g
UGFydGlhbFJlc3VsdAogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJl
c3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0
CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6OkkzMik7
CiAgICAgV2FzbUdyb3dNZW1vcnk6OmVtaXQodGhpcywgcmVzdWx0LCBkZWx0YSk7CiAKICAgICBy
ZXR1cm4geyB9OwpAQCAtMTQ4OSw3ICsxNjg1LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRk
TWVtb3J5Q29weShFeHByZXNzaW9uVHlwZSBkc3RBZGRyZXNzLCBFeHByZXNzaW9uVHlwZSBzcmMK
IAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkU2VsZWN0KEV4cHJlc3Npb25UeXBlIGNvbmRpdGlv
biwgRXhwcmVzc2lvblR5cGUgbm9uWmVybywgRXhwcmVzc2lvblR5cGUgemVybywgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsK
KyAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpWb2lkKTsgLy8gVE9ETwogICAgIFdhc21TZWxlY3Q6
OmVtaXQodGhpcywgcmVzdWx0LCBjb25kaXRpb24sIG5vblplcm8sIHplcm8pOwogCiAgICAgcmV0
dXJuIHsgfTsKQEAgLTE0OTcsNyArMTY5MywzNCBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRT
ZWxlY3QoRXhwcmVzc2lvblR5cGUgY29uZGl0aW9uLCBFeHByZXNzaW9uVHlwZSBub25aZXJvLAog
CiBhdXRvIExMSW50R2VuZXJhdG9yOjpsb2FkKExvYWRPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBl
IHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQsIHVpbnQzMl90IG9mZnNldCkgLT4gUGFy
dGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICBzd2l0Y2ggKG9wKSB7Cisg
ICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkOFM6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJM
b2FkOFU6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkMTZTOgorICAgIGNhc2UgTG9hZE9w
VHlwZTo6STMyTG9hZDE2VToKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ6CisgICAgICAg
IHJlc3VsdCA9IHB1c2goVHlwZXM6OkkzMik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBM
b2FkT3BUeXBlOjpJNjRMb2FkOFM6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkOFU6Cisg
ICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkMTZTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0
TG9hZDE2VToKKyAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExvYWQzMlU6CisgICAgY2FzZSBMb2Fk
T3BUeXBlOjpJNjRMb2FkMzJTOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDoKKyAgICAg
ICAgcmVzdWx0ID0gcHVzaChUeXBlczo6STY0KTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAKKyAgICBjYXNlIExvYWRPcFR5cGU6OkYzMkxvYWQ6CisgICAgICAgIHJlc3VsdCA9IHB1c2go
VHlwZXM6OkYzMik7CisgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgY2FzZSBMb2Fk
T3BUeXBlOjpGNjRMb2FkOgorICAgICAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpGNjQpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBMb2FkT3BU
eXBlOjpJMzJMb2FkOFM6CiAgICAgICAgIFdhc21JMzJMb2FkOFM6OmVtaXQodGhpcywgcmVzdWx0
LCBwb2ludGVyLCBvZmZzZXQpOwpAQCAtMTU3NCw3ICsxNzk3LDIyIEBAIGF1dG8gTExJbnRHZW5l
cmF0b3I6OnN0b3JlKFN0b3JlT3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHBy
ZXNzaW9uVHlwCiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmF0b21pY0xvYWQoRXh0QXRvbWljT3BU
eXBlIG9wLCBUeXBlLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0LCB1aW50MzJfdCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBw
dXNoKCk7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJB
dG9taWNMb2FkOFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY0xvYWQxNlU6
CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY0xvYWQ6CisgICAgICAgIHJlc3Vs
dCA9IHB1c2goVHlwZXM6OkkzMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXh0QXRvbWlj
T3BUeXBlOjpJNjRBdG9taWNMb2FkOFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0
b21pY0xvYWQxNlU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY0xvYWQzMlU6
CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY0xvYWQ6CisgICAgICAgIHJlc3Vs
dCA9IHB1c2goVHlwZXM6Okk2NCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAogICAgIHN3aXRj
aCAob3ApIHsKICAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljTG9hZDhVOgogICAg
IGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNMb2FkOFU6CkBAIC0xNjAwLDcgKzE4Mzgs
NyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphdG9taWNMb2FkKEV4dEF0b21pY09wVHlwZSBvcCwg
VHlwZSwgRXhwcmVzc2lvblR5cGUgcG9pbnRlcgogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphdG9t
aWNTdG9yZShFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIs
IEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50MzJfdCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1bHQK
IHsKLSAgICBhdXRvIHJlc3VsdCA9IHB1c2goKTsKKyAgICBhdXRvIHJlc3VsdCA9IHB1c2goVHlw
ZXM6Okk2NCk7CiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJ
MzJBdG9taWNTdG9yZThVOgogICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNTdG9y
ZThVOgpAQCAtMTYyMSwxMyArMTg1OSw2NiBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphdG9taWNT
dG9yZShFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50ZQogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIGRpZFBvcFZh
bHVlRnJvbVN0YWNrKCk7IC8vIElnbm9yZSB0aGUgcmVzdWx0LgorICAgIGRpZFBvcFZhbHVlRnJv
bVN0YWNrKFR5cGVzOjpJNjQpOyAvLyBJZ25vcmUgdGhlIHJlc3VsdC4KICAgICByZXR1cm4geyB9
OwogfQogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphdG9taWNCaW5hcnlSTVcoRXh0QXRvbWljT3BU
eXBlIG9wLCBUeXBlLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSB2YWx1
ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgdWludDMyX3Qgb2Zmc2V0KSAtPiBQYXJ0aWFsUmVz
dWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNl
IEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13OEFkZFU6CisgICAgY2FzZSBFeHRBdG9taWNP
cFR5cGU6OkkzMkF0b21pY1JtdzE2QWRkVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMy
QXRvbWljUm13QWRkOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXc4U3Vi
VToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13MTZTdWJVOgorICAgIGNh
c2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXdTdWI6CisgICAgY2FzZSBFeHRBdG9taWNP
cFR5cGU6OkkzMkF0b21pY1JtdzhBbmRVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJB
dG9taWNSbXcxNkFuZFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1Jtd0Fu
ZDoKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13OE9yVToKKyAgICBjYXNl
IEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13MTZPclU6CisgICAgY2FzZSBFeHRBdG9taWNP
cFR5cGU6OkkzMkF0b21pY1Jtd09yOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9t
aWNSbXc4WG9yVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13MTZYb3JV
OgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXdYb3I6CisgICAgY2FzZSBF
eHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1JtdzhYY2hnVToKKyAgICBjYXNlIEV4dEF0b21pY09w
VHlwZTo6STMyQXRvbWljUm13MTZYY2hnVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMy
QXRvbWljUm13WGNoZzoKKyAgICAgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6STMyKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRv
bWljUm13OEFkZFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzE2QWRk
VToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13MzJBZGRVOgorICAgIGNh
c2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXdBZGQ6CisgICAgY2FzZSBFeHRBdG9taWNP
cFR5cGU6Okk2NEF0b21pY1JtdzhTdWJVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRB
dG9taWNSbXcxNlN1YlU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzMy
U3ViVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13U3ViOgorICAgIGNh
c2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXc4QW5kVToKKyAgICBjYXNlIEV4dEF0b21p
Y09wVHlwZTo6STY0QXRvbWljUm13MTZBbmRVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJ
NjRBdG9taWNSbXczMkFuZFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1Jt
d0FuZDoKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13OE9yVToKKyAgICBj
YXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13MTZPclU6CisgICAgY2FzZSBFeHRBdG9t
aWNPcFR5cGU6Okk2NEF0b21pY1JtdzMyT3JVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJ
NjRBdG9taWNSbXdPcjoKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13OFhv
clU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzE2WG9yVToKKyAgICBj
YXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13MzJYb3JVOgorICAgIGNhc2UgRXh0QXRv
bWljT3BUeXBlOjpJNjRBdG9taWNSbXdYb3I6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2
NEF0b21pY1JtdzhYY2hnVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13
MTZYY2hnVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13MzJYY2hnVToK
KyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13WGNoZzoKKyAgICAgICAgcmVz
dWx0ID0gcHVzaChUeXBlczo6STY0KTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAg
ICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgCiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgRXh0QXRv
bWljT3BUeXBlOjpJMzJBdG9taWNSbXc4QWRkVToKICAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6
STY0QXRvbWljUm13OEFkZFU6CkBAIC0xNzI5LDcgKzIwMjAsMjMgQEAgYXV0byBMTEludEdlbmVy
YXRvcjo6YXRvbWljQmluYXJ5Uk1XKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSwgRXhwcmVzc2lv
blR5cGUgcG8KIAogYXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWljQ29tcGFyZUV4Y2hhbmdlKEV4
dEF0b21pY09wVHlwZSBvcCwgVHlwZSwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lv
blR5cGUgZXhwZWN0ZWQsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0LCB1aW50MzJfdCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBw
dXNoKCk7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJB
dG9taWNSbXc4Q21weGNoZ1U6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1Jt
dzE2Q21weGNoZ1U6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1Jtd0NtcHhj
aGc6CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6OkkzMik7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXc4Q21weGNoZ1U6CisgICAgY2Fz
ZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzE2Q21weGNoZ1U6CisgICAgY2FzZSBFeHRB
dG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzMyQ21weGNoZ1U6CisgICAgY2FzZSBFeHRBdG9taWNP
cFR5cGU6Okk2NEF0b21pY1Jtd0NtcHhjaGc6CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6
Okk2NCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKICAgICBzd2l0
Y2ggKG9wKSB7CiAgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1JtdzhDbXB4Y2hn
VToKICAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13OENtcHhjaGdVOgpAQCAt
MTc1Niw3ICsyMDYzLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWljQ29tcGFyZUV4Y2hh
bmdlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSwgRXhwcmVzc2lvblQKIAogYXV0byBMTEludEdl
bmVyYXRvcjo6YXRvbWljV2FpdChFeHRBdG9taWNPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBv
aW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSB0aW1lb3V0LCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0LCB1aW50MzJfdCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1bHQKIHsK
LSAgICByZXN1bHQgPSBwdXNoKCk7CisgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6STMyKTsKICAg
ICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Ok1lbW9yeUF0b21pY1dh
aXQzMjoKICAgICAgICAgV2FzbU1lbW9yeUF0b21pY1dhaXQzMjo6ZW1pdCh0aGlzLCByZXN1bHQs
IHBvaW50ZXIsIG9mZnNldCwgdmFsdWUsIHRpbWVvdXQpOwpAQCAtMTc3Myw3ICsyMDgwLDcgQEAg
YXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWljV2FpdChFeHRBdG9taWNPcFR5cGUgb3AsIEV4cHJl
c3Npb25UeXBlIHBvaW50ZXIsIEV4cHIKIAogYXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWljTm90
aWZ5KEV4dEF0b21pY09wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lv
blR5cGUgY291bnQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQsIHVpbnQzMl90IG9mZnNldCkgLT4g
UGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICByZXN1bHQgPSBwdXNo
KFR5cGVzOjpJMzIpOwogICAgIFJFTEVBU0VfQVNTRVJUKG9wID09IEV4dEF0b21pY09wVHlwZTo6
TWVtb3J5QXRvbWljTm90aWZ5KTsKICAgICBXYXNtTWVtb3J5QXRvbWljTm90aWZ5OjplbWl0KHRo
aXMsIHJlc3VsdCwgcG9pbnRlciwgb2Zmc2V0LCBjb3VudCk7CiAgICAgcmV0dXJuIHsgfTsKQEAg
LTE3ODcsNyArMjA5NCwyNCBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphdG9taWNGZW5jZShFeHRB
dG9taWNPcFR5cGUsIHVpbnQ4X3QpIC0+IFBhcnRpYWxSZXN1bHQKIAogYXV0byBMTEludEdlbmVy
YXRvcjo6dHJ1bmNTYXR1cmF0ZWQoRXh0MU9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgb3BlcmFu
ZCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgVHlwZSwgVHlwZSkgLT4gUGFydGlhbFJlc3VsdAog
ewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBFeHQx
T3BUeXBlOjpJMzJUcnVuY1NhdEYzMlM6CisgICAgY2FzZSBFeHQxT3BUeXBlOjpJMzJUcnVuY1Nh
dEYzMlU6CisgICAgY2FzZSBFeHQxT3BUeXBlOjpJMzJUcnVuY1NhdEY2NFM6CisgICAgY2FzZSBF
eHQxT3BUeXBlOjpJMzJUcnVuY1NhdEY2NFU6CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6
OkkzMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXh0MU9wVHlwZTo6STY0VHJ1bmNTYXRG
MzJTOgorICAgIGNhc2UgRXh0MU9wVHlwZTo6STY0VHJ1bmNTYXRGMzJVOgorICAgIGNhc2UgRXh0
MU9wVHlwZTo6STY0VHJ1bmNTYXRGNjRTOgorICAgIGNhc2UgRXh0MU9wVHlwZTo6STY0VHJ1bmNT
YXRGNjRVOgorICAgICAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpJNjQpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgCiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2Ug
RXh0MU9wVHlwZTo6STMyVHJ1bmNTYXRGMzJTOgogICAgICAgICBXYXNtSTMyVHJ1bmNTYXRGMzJT
OjplbWl0KHRoaXMsIHJlc3VsdCwgb3BlcmFuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtUGFyc2VyLmgKaW5kZXggZWQwMGQ5YTBhNDJiLi44MGMxYzg2MmVkMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKQEAgLTQ1LDYgKzQ1LDkgQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAorc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgTUFY
X1NJTURfQVJHVU1FTlRTID0gMjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IE1BWF9TSU1EX0lN
TUVESUFURVMgPSAyOworCiBuYW1lc3BhY2UgRmFpbHVyZUhlbHBlciB7CiAvLyBGSVhNRSBXZSBz
aG91bGQgbW92ZSB0aGlzIHRvIG1ha2VTdHJpbmcuIEl0J3MgaW4gaXRzIG93biBuYW1lc3BhY2Ug
dG8gZW5hYmxlIEMrKyBBcmd1bWVudCBEZXBlbmRlbnQgTG9va3VwIMOgIGxhIHN0ZDo6c3dhcDog
dXNlciBjb2RlIGNhbiBkZWJsYXJlIGl0cyBvd24gImJveEZhaWx1cmUiIGFuZCB0aGUgZmFpbCgp
IGhlbHBlciB3aWxsIGZpbmQgaXQuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNzcsNiArODAs
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VVSW50OCh1
aW50OF90Jik7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VVSW50MzIodWludDMy
X3QmKTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVVJbnQ2NCh1aW50NjRfdCYp
OworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlSW1tQnl0ZUFycmF5MTYodjEyOF90
Jik7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VJbW1MYW5lSWR4
KHVpbnQ4X3QgbGFuZUNvdW50LCB1aW50OF90Jik7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRV
Uk4gcGFyc2VWYXJVSW50MzIodWludDMyX3QmKTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVS
TiBwYXJzZVZhclVJbnQ2NCh1aW50NjRfdCYpOwogCkBAIC0yMjMsNiArMjI4LDI1IEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVVJbnQ2NCh1aW50NjRfdCYg
cmVzdWx0KQogICAgIHJldHVybiB0cnVlOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdWNjZXNz
VHlwZT4KK0FMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZUltbUJ5
dGVBcnJheTE2KHYxMjhfdCYgcmVzdWx0KQoreworICAgIGlmIChsZW5ndGgoKSA8IDE2IHx8IG1f
b2Zmc2V0ID4gbGVuZ3RoKCkgLSAxNikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHN0ZDo6
Y29weShzb3VyY2UoKSArIG1fb2Zmc2V0LCBzb3VyY2UoKSArIG1fb2Zmc2V0ICsgMTYsIHJlc3Vs
dC51OHgxNik7CisgICAgbV9vZmZzZXQgKz0gMTY7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFN1Y2Nlc3NUeXBlPgorQUxXQVlTX0lOTElORSB0eXBlbmFtZSBQYXJz
ZXI8U3VjY2Vzc1R5cGU+OjpQYXJ0aWFsUmVzdWx0IFBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNl
SW1tTGFuZUlkeCh1aW50OF90IGxhbmVDb3VudCwgdWludDhfdCYgcmVzdWx0KQoreworICAgIFJF
TEVBU0VfQVNTRVJUKGxhbmVDb3VudCA9PSAyIHx8IGxhbmVDb3VudCA9PSA0IHx8IGxhbmVDb3Vu
dCA9PSA4IHx8IGxhbmVDb3VudCA9PSAxNiB8fCBsYW5lQ291bnQgPT0gMzIpOworICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIXBhcnNlVUludDgocmVzdWx0KSwgIkNvdWxkIG5vdCBwYXJzZSB0aGUg
bGFuZSBpbmRleCBpbW1lZGlhdGUgYnl0ZS4iKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHJl
c3VsdCA+PSBsYW5lQ291bnQsICJMYW5lIGluZGV4IGltbWVkaWF0ZSBpcyB0b28gbGFyZ2UsIHNh
dyAiLCBsYW5lQ291bnQsICIsIGV4cGVjdGVkIGFuIEltbUxhbmVJZHgiLCBsYW5lQ291bnQpOwor
ICAgIHJldHVybiB7IH07Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFN1Y2Nlc3NUeXBlPgogQUxX
QVlTX0lOTElORSBib29sIFBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlVUludDgodWludDhfdCYg
cmVzdWx0KQogewpAQCAtMjc0LDcgKzI5OCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8
U3VjY2Vzc1R5cGU+OjpwYXJzZVZhclVJbnQxKHVpbnQ4X3QmIHJlc3VsdCkKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgU3VjY2Vzc1R5cGU+Ci1BTFdBWVNfSU5MSU5FIHR5cGVuYW1lIFBhcnNlcjxT
dWNjZXNzVHlwZT46OlBhcnRpYWxSZXN1bHQgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VCbG9j
a1NpZ25hdHVyZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgQmxvY2tTaWduYXR1cmUm
IHJlc3VsdCkKK0FMV0FZU19JTkxJTkUgYXV0byBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZUJs
b2NrU2lnbmF0dXJlKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBCbG9ja1NpZ25hdHVy
ZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgaW50OF90IHR5cGVLaW5kOwogICAg
IGlmIChwZWVrSW50Nyh0eXBlS2luZCkgJiYgaXNWYWxpZFR5cGVLaW5kKHR5cGVLaW5kKSkgewpA
QCAtMzMxLDcgKzM1NSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+
OjpwYXJzZVZhbHVlVHlwZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYKICAgICBUeXBlS2luZCB0
eXBlS2luZCA9IHN0YXRpY19jYXN0PFR5cGVLaW5kPihraW5kKTsKICAgICBib29sIGlzTnVsbGFi
bGUgPSB0cnVlOwogICAgIFNpZ25hdHVyZUluZGV4IHNpZ0luZGV4ID0gMDsKLQorICAgIAogICAg
IGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkgJiYg
KHR5cGVLaW5kID09IFR5cGVLaW5kOjpGdW5jcmVmIHx8IHR5cGVLaW5kID09IFR5cGVLaW5kOjpF
eHRlcm5yZWYpKSB7CiAgICAgICAgIHNpZ0luZGV4ID0gc3RhdGljX2Nhc3Q8U2lnbmF0dXJlSW5k
ZXg+KHR5cGVLaW5kKTsKICAgICAgICAgdHlwZUtpbmQgPSBUeXBlS2luZDo6UmVmTnVsbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAKaW5kZXggZjlhNTYx
Yjg1MGZjLi4wODEzZDQ2MDNhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TaWduYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TaWduYXR1cmUuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFJlZlB0cjxTaWduYXR1cmU+IFNpZ25h
dHVyZTo6dHJ5Q3JlYXRlKFNpZ25hdHVyZUFyZ0NvdW50IHJldHVybkNvdW50LCBTaWduYXR1cmVB
CiAKIFNpZ25hdHVyZUluZm9ybWF0aW9uOjpTaWduYXR1cmVJbmZvcm1hdGlvbigpCiB7Ci0jZGVm
aW5lIE1BS0VfVEhVTktfU0lHTkFUVVJFKHR5cGUsIGVuYywgc3RyLCB2YWwsIF8pICAgICAgICAg
ICAgICAgICAgICAgICBcCisjZGVmaW5lIE1BS0VfVEhVTktfU0lHTkFUVVJFKHR5cGUsIGVuYywg
c3RyLCB2YWwsIC4uLikgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgaWYgKFR5cGVLaW5kOjp0eXBlICE9IFR5cGVLaW5kOjpWb2lkKSB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIFJlZlB0cjxTaWduYXR1cmU+IHNp
ZyA9IFNpZ25hdHVyZTo6dHJ5Q3JlYXRlKDEsIDApOyAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlU2ltZE9wY29kZXMucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVNpbWRPcGNvZGVzLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzMwNWE4YjU4ZTgxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVTaW1kT3Bjb2Rlcy5weQpA
QCAtMCwwICsxLDEyNCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCisjIENvcHlyaWdodCAo
QykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUaGlzIHNjcmlwdCBnZW5lcmF0ZXMgdGhlIG9wY29k
ZSBkYXRhIGZvciBzaW1kIG9wY29kZXMKKyMgY3N2IHNvdXJjZTogaHR0cHM6Ly9kb2NzLmdvb2ds
ZS5jb20vc3ByZWFkc2hlZXRzL2QvMW1JdEFQRER5VUQ5N1FkdEI5eXA0NHV0VFA5dlJSUzlYTXYw
WVpfZVB6OXMvZWRpdD91c3A9c2hhcmluZworCitpbXBvcnQgY3N2CitpbXBvcnQganNvbgorCit2
ZXJib3NlID0gRmFsc2UKKworZGVmIGNwcFR5cGUodHlwZSk6CisgICAgaWYgdHlwZSA9PSAiYm9v
bCI6CisgICAgICAgIHJldHVybiAiSTMyIgorICAgIHJldHVybiAiIi5qb2luKG1hcChsYW1iZGEg
eDogeC5jYXBpdGFsaXplKCksIHR5cGUuc3BsaXQoJ18nKSkpCisKKworZGVmIHNpbWRPcGNvZGVz
KGNzdkRpcmVjdG9yeSk6CisgICAgb3BzID0ge30KKworICAgIHdpdGggb3Blbihjc3ZEaXJlY3Rv
cnkgKyAiL3NpbWRfb3Bjb2Rlcy5jc3YiLCAncicpIGFzIGNzdmZpbGU6CisgICAgICAgIHJlYWRl
ciA9IGNzdi5EaWN0UmVhZGVyKGNzdmZpbGUpCisgICAgICAgIGZvciByb3cgaW4gcmVhZGVyOgor
ICAgICAgICAgICAgb3BzW3Jvd1siSW5zdHJ1Y3Rpb24iXV0gPSBjb252ZXJ0Um93KHJvdykKKwor
ICAgIGlmIHZlcmJvc2U6CisgICAgICAgIHByaW50KGpzb24uZHVtcHMob3BzLCBzb3J0X2tleXM9
VHJ1ZSwgaW5kZW50PTQpKQorCisgICAgcmV0dXJuIG9wcworCisKK2RlZiBjb252ZXJ0Um93KHJv
dyk6CisgICAgcmVzID0ge30KKworICAgIHJlc1siY2F0ZWdvcnkiXSA9IHJvd1siY2F0ZWdvcnki
XQorICAgIHJlc1sidmFsdWUiXSA9IGludChyb3dbInZhbHVlIl0sMCkKKyAgICByZXNbImV4dGVu
ZGVkT3AiXSA9IGludChyb3dbImV4dGVuZGVkT3AiXSwwKQorICAgIHNjYWxhclR5cGUgPSByb3db
InNjYWxhclR5cGUiXQorICAgIHJlc1sic2ltZF9zY2FsYXJfdHlwZSJdID0gc2NhbGFyVHlwZQor
ICAgIGlmIHNjYWxhclR5cGUgbm90IGluIFsndm9pZCcsICJpMzIiLCAiaTY0IiwgImYzMiIsICJm
NjQiXToKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJpbnZhbGlkIHNjYWxhciB0eXBlOiAiICsg
c2NhbGFyVHlwZSkKKyAgICByZXNbJ3NpbWRfb3BlcmF0aW9uJ10gPSByb3dbIm9wIl0KKyAgICBy
ZXNbJ3NpbWRfc2lnbl9leHRlbmRfbW9kZSddID0gcm93WyJzaWduRXh0ZW5kIl0KKyAgICByZXNb
J3NpbWRfbGFuZV9pbnRlcnByZXRhdGlvbiddID0gcm93WyJpbnRlcnByZXRhdGlvbiJdCisgICAg
cmVzWyJpc19zaW1kX3NwZWNpYWxfb3AiXSA9IChyb3dbInNwZWNpYWwiXSA9PSAneScpCisKKyAg
ICBkZWYgZml4UGFyYW1zKHApOgorICAgICAgICBwID0gcC5zdHJpcCgpCisgICAgICAgIHAgPSBw
LnNwbGl0KCIsIikKKyAgICAgICAgcCA9IFt0LnN0cmlwKCkgZm9yIHQgaW4gcCBpZiB0ICE9ICcn
XQorICAgICAgICByZXR1cm4gW2ZpeFR5cGUodCkgZm9yIHQgaW4gcF0KKworCisgICAgZGVmIGZp
eFR5cGUodCk6CisgICAgICAgIHQgPSB0LnNwbGl0KCI6IikKKyAgICAgICAgdCA9IHRbLTFdLnN0
cmlwKCkKKworICAgICAgICBpZiB0ID09ICJ2IjoKKyAgICAgICAgICAgIHJldHVybiAidjEyOCIK
KyAgICAgICAgaWYgdCA9PSAicyI6CisgICAgICAgICAgICBpZiBzY2FsYXJUeXBlID09ICd2b2lk
JzoKKyAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigiaW5zdHJ1Y3Rpb24gIiArIHJlcyArICIg
ZG9lcyBub3QgaGF2ZSBhIHNjYWxhciB0eXBlIikKKyAgICAgICAgICAgIHJldHVybiBzY2FsYXJU
eXBlCisKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJlcnJvcjogdHlwZSAiICsgdCArICIgbm90
IGZvdW5kLCB1cGRhdGUgZ2VuZXJhdGVTaW1kT3Bjb2Rlcy5weSIpCisKKworICAgIGRlZiBmaXhJ
bW1zKHApOgorICAgICAgICBwID0gcC5zdHJpcCgpCisgICAgICAgIHAgPSBwLnNwbGl0KCIsIikK
KyAgICAgICAgcCA9IFt0LnN0cmlwKCkgZm9yIHQgaW4gcCBpZiB0ICE9ICcnXQorICAgICAgICBw
ID0gW2ZpeEltbSh0KSBmb3IgdCBpbiBwXQorICAgICAgICByZXR1cm4gW2ogZm9yIGkgaW4gcCBm
b3IgaiBpbiBpXQorCisKKyAgICBkZWYgZml4SW1tKHQpOgorICAgICAgICB0ID0gdC5zcGxpdCgi
OiIpCisgICAgICAgIHQgPSB0Wy0xXS5zdHJpcCgpCisKKyAgICAgICAgaWYgdCA9PSAibWVtYXJn
IjoKKyAgICAgICAgICAgIHJldHVybiBbeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVp
bnQzMiJ9LCB7Im5hbWUiOiAiYWxnaW4iLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0KKyAgICAgICAg
aWYgdCA9PSAiSW1tQnl0ZVsxNl0iOgorICAgICAgICAgICAgcmV0dXJuIFt7Im5hbWUiOiAiaW1t
Ynl0ZVswOjhdIiwgInR5cGUiOiAidmFydWludDY0In0sIHsibmFtZSI6ICJpbW1ieXRlWzg6MTZd
IiwgInR5cGUiOiAidmFydWludDY0In1dCisgICAgICAgIGlmIHQgaW4gWyJJbW1MYW5lSWR4MiIs
ICJJbW1MYW5lSWR4NCIsICJJbW1MYW5lSWR4OCIsICJJbW1MYW5lSWR4MTYiLCAiSW1tTGFuZUlk
eCJdOgorICAgICAgICAgICAgcmV0dXJuIFt7Im5hbWUiOiAibGFuZWlkeCIsICJ0eXBlIjogInZh
cnVpbnQ4IiwgImxhbmVTaXplIjogdFtsZW4oIkltbUxhbmVJZHgiKTpdfV0KKworICAgICAgICBy
YWlzZSBFeGNlcHRpb24oImVycm9yOiB0eXBlICIgKyB0ICsgIiBub3QgZm91bmQsIHVwZGF0ZSBn
ZW5lcmF0ZVNpbWRPcGNvZGVzLnB5IikKKworCisgICAgcmVzWyJpbW1lZGlhdGUiXSA9IGZpeElt
bXMocm93WyJJbW0iXSkKKyAgICByZXNbInBhcmFtZXRlciJdID0gZml4UGFyYW1zKHJvd1sicGFy
YW1zIl0pCisgICAgcmVzWyJyZXR1cm4iXSA9IFtmaXhUeXBlKHJvd1sicmV0dXJuIl0pXSBpZiBy
b3dbInJldHVybiJdICE9ICcnIGVsc2UgW10KKworICAgIHdhc21PcCA9IGNwcFR5cGUocmVzWyJz
aW1kX29wZXJhdGlvbiJdKSArIGNwcFR5cGUocmVzWyJzaW1kX2xhbmVfaW50ZXJwcmV0YXRpb24i
XSkKKyAgICBpZiByZXNbInNpbWRfc2lnbl9leHRlbmRfbW9kZSJdID09ICJVIjoKKyAgICAgICAg
d2FzbU9wICs9ICJVIgorICAgIGVsaWYgcmVzWyJzaW1kX3NpZ25fZXh0ZW5kX21vZGUiXSA9PSAi
UyI6CisgICAgICAgIHdhc21PcCArPSAiUyIKKyAgICByZXNbImIzb3AiXSA9IGNwcFR5cGUocmVz
WyJzaW1kX29wZXJhdGlvbiJdKQorICAgIHJlc1sid2FzbU9wIl0gPSAiV2FzbVNpbWQiICsgd2Fz
bU9wCisKKyAgICByZXR1cm4gcmVzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtLnB5IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtLnB5CmluZGV4IGQ0ZTYxMGUxZjIxNy4u
NTc4ZjM2YTA1MzU2IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5l
cmF0ZVdhc20ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNt
LnB5CkBAIC0yNywxOSArMjcsMjMgQEAKIAogaW1wb3J0IGpzb24KIGltcG9ydCBtYXRoCitpbXBv
cnQgb3MKIGltcG9ydCByZQorZnJvbSBnZW5lcmF0ZVNpbWRPcGNvZGVzIGltcG9ydCAqCiAKIGNs
YXNzIFdhc206CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNjcmlwdE5hbWUsIGpzb25QYXRoKToK
ICAgICAgICAgd2FzbUZpbGUgPSBvcGVuKGpzb25QYXRoLCAiciIpCiAgICAgICAgIHdhc20gPSBq
c29uLmxvYWQob3Blbihqc29uUGF0aCwgInIiKSkKICAgICAgICAgd2FzbUZpbGUuY2xvc2UoKQor
ICAgICAgICBqc29uRGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChq
c29uUGF0aCkpCiAgICAgICAgIGZvciBwcmUgaW4gd2FzbVsicHJlYW1ibGUiXToKICAgICAgICAg
ICAgIGlmIHByZVsibmFtZSJdID09ICJ2ZXJzaW9uIjoKICAgICAgICAgICAgICAgICBzZWxmLmV4
cGVjdGVkVmVyc2lvbk51bWJlciA9IHN0cihwcmVbInZhbHVlIl0pCiAgICAgICAgIHNlbGYucHJl
YW1ibGUgPSB3YXNtWyJwcmVhbWJsZSJdCiAgICAgICAgIHNlbGYudHlwZXMgPSB3YXNtWyJ0eXBl
Il0KICAgICAgICAgc2VsZi5vcGNvZGVzID0gd2FzbVsib3Bjb2RlIl0KKyAgICAgICAgc2VsZi5v
cGNvZGVzLnVwZGF0ZShzaW1kT3Bjb2Rlcyhqc29uRGlyZWN0b3J5KSkKICAgICAgICAgc2VsZi5o
ZWFkZXIgPSAiIiIvKgogICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTExMCw2ICsxMTQsOCBAQCBkZWYgaXNBdG9taWNTdG9y
ZShvcCk6CiBkZWYgaXNBdG9taWNCaW5hcnlSTVcob3ApOgogICAgIHJldHVybiBvcFsiY2F0ZWdv
cnkiXSA9PSAiYXRvbWljLnJtdy5iaW5hcnkiCiAKK2RlZiBpc1NpbWQob3ApOgorICAgIHJldHVy
biBvcFsiY2F0ZWdvcnkiXS5zdGFydHN3aXRoKCJzaW1kIikKIAogZGVmIGlzU2ltcGxlKG9wKToK
ICAgICByZXR1cm4gImIzb3AiIGluIG9wCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkKaW5kZXggNjU3NmE2OWM1NjgzLi5kZmExYjk0
OGQ4YzEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2Fz
bU9wc0hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdh
c21PcHNIZWFkZXIucHkKQEAgLTQzLDI0ICs0MywzOSBAQCB3YXNtT3BzSEZpbGUgPSBvcGVuKGFy
Z3NbMl0sICJ3IikKIGRlZiBjcHBUeXBlKHR5cGUpOgogICAgIGlmIHR5cGUgPT0gImJvb2wiOgog
ICAgICAgICByZXR1cm4gIkkzMiIKLSAgICByZXR1cm4gdHlwZS5jYXBpdGFsaXplKCkKKyAgICBy
ZXR1cm4gIiIuam9pbihtYXAobGFtYmRhIHg6IHguY2FwaXRhbGl6ZSgpLCB0eXBlLnNwbGl0KCdf
JykpKQogCiAKIGRlZiBjcHBNYWNybyh3YXNtT3Bjb2RlLCB2YWx1ZSwgYjMsIGluYywgKmV4dHJh
QXJncyk6CiAgICAgZXh0cmFBcmdzU3RyID0gIiwgIiArICIsICIuam9pbihleHRyYUFyZ3MpIGlm
IGxlbihleHRyYUFyZ3MpIGVsc2UgIiIKICAgICByZXR1cm4gIiBcXFxuICAgIG1hY3JvKCIgKyB3
YXNtLnRvQ3BwKHdhc21PcGNvZGUpICsgIiwgIiArIGhleChpbnQodmFsdWUpKSArICIsICIgKyBi
MyArICIsICIgKyBzdHIoaW5jKSArIGV4dHJhQXJnc1N0ciArICIpIgogCisKIGRlZiB0eXBlTWFj
cm9pemVyKCk6CiAgICAgaW5jID0gMAogICAgIGZvciB0eSBpbiB3YXNtLnR5cGVzOgotICAgICAg
ICB5aWVsZCBjcHBNYWNybyh0eSwgd2FzbS50eXBlc1t0eV1bInZhbHVlIl0sIHdhc20udHlwZXNb
dHldWyJiM3R5cGUiXSwgaW5jLCB0eSkKKyAgICAgICAgeWllbGQgY3BwTWFjcm8odHksIHdhc20u
dHlwZXNbdHldWyJ2YWx1ZSJdLCB3YXNtLnR5cGVzW3R5XVsiYjN0eXBlIl0sIGluYywgdHksIHN0
cih3YXNtLnR5cGVzW3R5XVsic2l6ZSJdKSkKICAgICAgICAgaW5jICs9IDEKIAorCiB0eXBlX2Rl
ZmluaXRpb25zID0gWyIjZGVmaW5lIEZPUl9FQUNIX1dBU01fVFlQRShtYWNybykiXQogdHlwZV9k
ZWZpbml0aW9ucy5leHRlbmQoW3QgZm9yIHQgaW4gdHlwZU1hY3JvaXplcigpXSkKIHR5cGVfZGVm
aW5pdGlvbnMgPSAiIi5qb2luKHR5cGVfZGVmaW5pdGlvbnMpCiAKIAorc2ltZExhbmVPcGVyYXRp
b25zID0gc2V0KFtjcHBUeXBlKG9wWydvcGNvZGUnXVsnc2ltZF9vcGVyYXRpb24nXSkgZm9yIG9w
IGluIHdhc20ub3Bjb2RlSXRlcmF0b3IoaXNTaW1kKV0pCitzaW1kTGFuZU9wZXJhdGlvbnNQcmlu
dGVyID0gIiIiCisgICAgc3RhdGljIHZvaWQgZHVtcFNpbWRMYW5lT3BlcmF0aW9uKFByaW50U3Ry
ZWFtJiBvdXQsIFNpbWRMYW5lT3BlcmF0aW9uIG9wKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChv
cCkgeworICAgICAgICAiIiIgKyAiXG4gICAgICAgICIuam9pbihbImNhc2UgU2ltZExhbmVPcGVy
YXRpb246OiIgKyB4ICsgIjogb3V0LnByaW50KFwiIiArIHggICsgIlwiKTsgYnJlYWs7IiBmb3Ig
eCBpbiBzaW1kTGFuZU9wZXJhdGlvbnNdKSArICIiIgorICAgICAgICB9CisgICAgfQorICAgIE1B
S0VfUFJJTlRfQURBUFRPUihTaW1kTGFuZU9wZXJhdGlvbkR1bXAsIFNpbWRMYW5lT3BlcmF0aW9u
LCBkdW1wU2ltZExhbmVPcGVyYXRpb24pOworIiIiCitzaW1kTGFuZU9wZXJhdGlvbnMgPSAiLFxu
ICAgICIuam9pbihzaW1kTGFuZU9wZXJhdGlvbnMpCisKKwogZGVmIG9wY29kZU1hY3JvaXplcihm
aWx0ZXIsIG9wY29kZUZpZWxkPSJ2YWx1ZSIsIG1vZGlmaWVyPU5vbmUpOgogICAgIGluYyA9IDAK
ICAgICBmb3Igb3AgaW4gd2FzbS5vcGNvZGVJdGVyYXRvcihmaWx0ZXIpOgpAQCAtNzksNiArOTQs
NyBAQCBkZWYgb3Bjb2RlV2l0aFR5cGVzTWFjcm9pemVyKGZpbHRlcik6CiAgICAgICAgIHJldHVy
biBbY3BwVHlwZSh0eXBlKSBmb3IgdHlwZSBpbiBvcFsicGFyYW1ldGVyIl0gKyBvcFsicmV0dXJu
Il1dCiAgICAgcmV0dXJuIG9wY29kZU1hY3JvaXplcihmaWx0ZXIsIG1vZGlmaWVyPW1vZGlmaWVy
KQogCisKIGRlZiBtZW1vcnlMb2FkTWFjcm9pemVyKCk6CiAgICAgZGVmIG1vZGlmaWVyKG9wKToK
ICAgICAgICAgcmV0dXJuIFtjcHBUeXBlKG9wWyJyZXR1cm4iXVswXSldCkBAIC0xMTUsOCArMTMx
LDMwIEBAIGRlZiBhdG9taWNCaW5hcnlSTVdNYWNyb2l6ZXIoKToKICAgICByZXR1cm4gb3Bjb2Rl
TWFjcm9pemVyKGxhbWJkYSBvcDogaXNBdG9taWNCaW5hcnlSTVcob3ApLCBtb2RpZmllcj1tb2Rp
Zmllciwgb3Bjb2RlRmllbGQ9ImV4dGVuZGVkT3AiKQogCiAKK2RlZiBzaW1kTWFjcm9saXplcigp
OgorICAgIGRlZiBtb2RpZmllcihvcCk6CisgICAgICAgIHJldHVyblR5cGUgPSAiVHlwZXM6OiIg
KyBjcHBUeXBlKG9wWydyZXR1cm4nXVswXSkgaWYgbGVuKG9wWyJyZXR1cm4iXSkgPT0gMSBlbHNl
ICJUeXBlczo6Vm9pZCIKKyAgICAgICAgaW1tZWRpYXRlcyA9IGxpc3QobWFwKGxhbWJkYSB4OiB4
WyJsYW5lU2l6ZSJdLCBvcFsiaW1tZWRpYXRlIl0pKQorICAgICAgICBpbW1lZGlhdGVzQXJyID0g
InsiICsgJywnLmpvaW4oaW1tZWRpYXRlcykgKyAifSIKKyAgICAgICAgYXJndW1lbnRzID0gbGlz
dChtYXAobGFtYmRhIHg6ICImVHlwZXM6OiIgKyBjcHBUeXBlKHgpLCBvcFsicGFyYW1ldGVyIl0p
KQorICAgICAgICBhcmd1bWVudHNBcnIgPSAieyIgKyAnLCcuam9pbihhcmd1bWVudHMpICsgIn0i
CisgICAgICAgIHJldHVybiBbb3BbIndhc21PcCJdLCByZXR1cm5UeXBlLAorICAgICAgICAgICAg
ICAgIHN0cihsZW4oaW1tZWRpYXRlcykpLCBpbW1lZGlhdGVzQXJyLCBzdHIobGVuKGFyZ3VtZW50
cykpLCBhcmd1bWVudHNBcnIsCisgICAgICAgICAgICAgICAgIlNpbWRMYW5lSW50ZXJwcmV0YXRp
b246OiIgKyBvcFsnc2ltZF9sYW5lX2ludGVycHJldGF0aW9uJ10sCisgICAgICAgICAgICAgICAg
IlNpbWRTaWduRXh0ZW5kTW9kZTo6IiArIG9wWydzaW1kX3NpZ25fZXh0ZW5kX21vZGUnXV0KKyAg
ICByZXR1cm4gb3Bjb2RlTWFjcm9pemVyKGxhbWJkYSBvcDogaXNTaW1kKG9wKSBhbmQgbm90IG9w
WyJpc19zaW1kX3NwZWNpYWxfb3AiXSwgbW9kaWZpZXI9bW9kaWZpZXIsIG9wY29kZUZpZWxkPSJl
eHRlbmRlZE9wIikKKworCitkZWYgc2ltZFNwZWNpYWxNYWNyb2xpemVyKCk6CisgICAgZGVmIG1v
ZGlmaWVyKG9wKToKKyAgICAgICAgcmV0dXJuIFsiU2ltZExhbmVPcGVyYXRpb246OiIgKyBjcHBU
eXBlKG9wWydzaW1kX29wZXJhdGlvbiddKSwKKyAgICAgICAgICAgICAgICAiU2ltZExhbmVJbnRl
cnByZXRhdGlvbjo6IiArIG9wWydzaW1kX2xhbmVfaW50ZXJwcmV0YXRpb24nXSwKKyAgICAgICAg
ICAgICAgICAiU2ltZFNpZ25FeHRlbmRNb2RlOjoiICsgb3BbJ3NpbWRfc2lnbl9leHRlbmRfbW9k
ZSddXQorICAgIHJldHVybiBvcGNvZGVNYWNyb2l6ZXIobGFtYmRhIG9wOiBpc1NpbWQob3ApIGFu
ZCBvcFsiaXNfc2ltZF9zcGVjaWFsX29wIl0sIG1vZGlmaWVyPW1vZGlmaWVyLCBvcGNvZGVGaWVs
ZD0iZXh0ZW5kZWRPcCIpCisKKwogZGVmaW5lcyA9IFsiI2RlZmluZSBGT1JfRUFDSF9XQVNNX1NQ
RUNJQUxfT1AobWFjcm8pIl0KLWRlZmluZXMuZXh0ZW5kKFtvcCBmb3Igb3AgaW4gb3Bjb2RlTWFj
cm9pemVyKGxhbWJkYSBvcDogbm90IChpc1VuYXJ5KG9wKSBvciBpc0JpbmFyeShvcCkgb3Igb3Bb
ImNhdGVnb3J5Il0gPT0gImNvbnRyb2wiIG9yIG9wWyJjYXRlZ29yeSJdID09ICJtZW1vcnkiIG9y
IG9wWyJ2YWx1ZSJdID09IDB4ZmMgb3IgaXNBdG9taWMob3ApKSldKQorZGVmaW5lcy5leHRlbmQo
W29wIGZvciBvcCBpbiBvcGNvZGVNYWNyb2l6ZXIobGFtYmRhIG9wOiBub3QgKGlzVW5hcnkob3Ap
IG9yIGlzQmluYXJ5KG9wKSBvciBvcFsiY2F0ZWdvcnkiXSA9PSAiY29udHJvbCIgb3Igb3BbImNh
dGVnb3J5Il0gPT0gIm1lbW9yeSIgb3Igb3BbInZhbHVlIl0gPT0gMHhmYyBvciBpc0F0b21pYyhv
cCkgb3IgaXNTaW1kKG9wKSkpXSkKIGRlZmluZXMuYXBwZW5kKCJcblxuI2RlZmluZSBGT1JfRUFD
SF9XQVNNX0NPTlRST0xfRkxPV19PUChtYWNybykiKQogZGVmaW5lcy5leHRlbmQoW29wIGZvciBv
cCBpbiBvcGNvZGVNYWNyb2l6ZXIobGFtYmRhIG9wOiBvcFsiY2F0ZWdvcnkiXSA9PSAiY29udHJv
bCIpXSkKIGRlZmluZXMuYXBwZW5kKCJcblxuI2RlZmluZSBGT1JfRUFDSF9XQVNNX1NJTVBMRV9V
TkFSWV9PUChtYWNybykiKQpAQCAtMTQzLDYgKzE4MSwxMCBAQCBkZWZpbmVzLmFwcGVuZCgiXG5c
biNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9FWFRfQVRPTUlDX0JJTkFSWV9STVdfT1AobWFjcm8pIikK
IGRlZmluZXMuZXh0ZW5kKFtvcCBmb3Igb3AgaW4gYXRvbWljQmluYXJ5Uk1XTWFjcm9pemVyKCld
KQogZGVmaW5lcy5hcHBlbmQoIlxuXG4jZGVmaW5lIEZPUl9FQUNIX1dBU01fRVhUX0FUT01JQ19P
VEhFUl9PUChtYWNybykiKQogZGVmaW5lcy5leHRlbmQoW29wIGZvciBvcCBpbiBvcGNvZGVNYWNy
b2l6ZXIobGFtYmRhIG9wOiBpc0F0b21pYyhvcCkgYW5kIChub3QgaXNBdG9taWNMb2FkKG9wKSBh
bmQgbm90IGlzQXRvbWljU3RvcmUob3ApIGFuZCBub3QgaXNBdG9taWNCaW5hcnlSTVcob3ApKSwg
b3Bjb2RlRmllbGQ9ImV4dGVuZGVkT3AiKV0pCitkZWZpbmVzLmFwcGVuZCgiXG5cbiNkZWZpbmUg
Rk9SX0VBQ0hfV0FTTV9FWFRfU0lNRF9PUChtYWNybykiKQorZGVmaW5lcy5leHRlbmQoW29wIGZv
ciBvcCBpbiBzaW1kTWFjcm9saXplcigpXSkKK2RlZmluZXMuYXBwZW5kKCJcblxuI2RlZmluZSBG
T1JfRUFDSF9XQVNNX0VYVF9TSU1EX1NQRUNJQUxfT1AobWFjcm8pIikKK2RlZmluZXMuZXh0ZW5k
KFtvcCBmb3Igb3AgaW4gc2ltZFNwZWNpYWxNYWNyb2xpemVyKCldKQogZGVmaW5lcy5hcHBlbmQo
IlxuXG4iKQogCiBkZWZpbmVzID0gIiIuam9pbihkZWZpbmVzKQpAQCAtMjQwLDYgKzI4MiwyMiBA
QCBzdHJ1Y3QgVHlwZSB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihudWxsYWJs
ZSk7CiAgICAgfQogCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7CisgICAgICAgIHN3aXRjaCAo
a2luZCkgeworICAgICNkZWZpbmUgQ1JFQVRFX0NBU0UobmFtZSwgaWQsIGIzdHlwZSwgaW5jLCB3
YXNtTmFtZSwgc2l6ZSwgLi4uKSBjYXNlIFR5cGVLaW5kOjpuYW1lOiByZXR1cm4gc2l6ZTsKKyAg
ICBGT1JfRUFDSF9XQVNNX1RZUEUoQ1JFQVRFX0NBU0UpCisgICAgI3VuZGVmIENSRUFURV9DQVNF
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QgeworICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAjZGVmaW5lIENSRUFURV9DQVNFKG5h
bWUsIGlkLCBiM3R5cGUsIGluYywgd2FzbU5hbWUsIHNpemUsIC4uLikgY2FzZSBUeXBlS2luZDo6
bmFtZTogb3V0LnByaW50KCNuYW1lKTsgYnJlYWs7CisgICAgRk9SX0VBQ0hfV0FTTV9UWVBFKENS
RUFURV9DQVNFKQorICAgICN1bmRlZiBDUkVBVEVfQ0FTRQorICAgICAgICB9CisgICAgfQorCiAg
ICAgI2RlZmluZSBDUkVBVEVfUFJFRElDQVRFKG5hbWUsIC4uLikgYm9vbCBpcyAjIyBuYW1lKCkg
Y29uc3QgeyByZXR1cm4ga2luZCA9PSBUeXBlS2luZDo6bmFtZTsgfQogICAgIEZPUl9FQUNIX1dB
U01fVFlQRShDUkVBVEVfUFJFRElDQVRFKQogICAgICN1bmRlZiBDUkVBVEVfUFJFRElDQVRFCkBA
IC0zMjEsNyArMzc5LDggQEAgaW5saW5lIFR5cGVLaW5kIGxpbmVhcml6ZWRUb1R5cGUoaW50IGkp
CiAgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfTE9BRF9PUChtYWNybykgXFwKICAgICBGT1JfRUFD
SF9XQVNNX01FTU9SWV9TVE9SRV9PUChtYWNybykgXFwKICAgICBtYWNybyhFeHQxLCAgMHhGQywg
T29wcywgMCkgXFwKLSAgICBtYWNybyhFeHRBdG9taWMsIDB4RkUsIE9vcHMsIDApCisgICAgbWFj
cm8oRXh0QXRvbWljLCAweEZFLCBPb3BzLCAwKSBcXAorICAgIG1hY3JvKEV4dFNpbWQsIDB4RkQs
IE9vcHMsIDApCiAKICNkZWZpbmUgQ1JFQVRFX0VOVU1fVkFMVUUobmFtZSwgaWQsIC4uLikgbmFt
ZSA9IGlkLAogCkBAIC0zNjUsOCArNDI0LDIyIEBAIGVudW0gY2xhc3MgRXh0QXRvbWljT3BUeXBl
IDogdWludDhfdCB7CiAgICAgRk9SX0VBQ0hfV0FTTV9FWFRfQVRPTUlDX09USEVSX09QKENSRUFU
RV9FTlVNX1ZBTFVFKQogfTsKIAorZW51bSBjbGFzcyBFeHRTaW1kT3BUeXBlIDogdWludDhfdCB7
CisgICAgRk9SX0VBQ0hfV0FTTV9FWFRfU0lNRF9PUChDUkVBVEVfRU5VTV9WQUxVRSkKKyAgICBG
T1JfRUFDSF9XQVNNX0VYVF9TSU1EX1NQRUNJQUxfT1AoQ1JFQVRFX0VOVU1fVkFMVUUpCit9Owor
CitlbnVtIGNsYXNzIEV4dFdhc21PcFR5cGUgOiB1aW50OF90IHsKKyAgICBGT1JfRUFDSF9XQVNN
X0VYVF9TSU1EX09QKENSRUFURV9FTlVNX1ZBTFVFKQorfTsKKwogI3VuZGVmIENSRUFURV9FTlVN
X1ZBTFVFCiAKK2VudW0gY2xhc3MgU2ltZExhbmVPcGVyYXRpb24gOiB1aW50OF90IHsKKyAgICAi
IiIgKyBzaW1kTGFuZU9wZXJhdGlvbnMgKyAiIiIKK307CisiIiIgKyBzaW1kTGFuZU9wZXJhdGlv
bnNQcmludGVyICsgIiIiCisKIGlubGluZSBib29sIGlzQ29udHJvbE9wKE9wVHlwZSBvcCkKIHsK
ICAgICBzd2l0Y2ggKG9wKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XYXNtVG9KUy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9K
Uy5jcHAKaW5kZXggMDhmZTFhNzg3MTMyLi45NjM4MDQ4MDA1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKQEAgLTEwNiw2ICsxMDYsNyBAQCBFeHBlY3Rl
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+
IHdhc21Ub0pTKFZNJiB2bQogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKICAgICAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5k
OjpSZWY6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpWMTI4OgogICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIEhhbmRsZWQgYWJvdmUuCiAgICAgICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5k
OjpGdW5jcmVmOgpAQCAtMTgwLDYgKzE4MSw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAg
ICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgogICAgICAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6UmVmTnVsbDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKKyAgICAgICAgICAg
IGNhc2UgVHlwZUtpbmQ6OlYxMjg6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgLy8gSGFuZGxlZCBhYm92ZS4KICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkV4dGVybnJlZjoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9zaW1kX29wY29kZXMuY3N2IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vc2ltZF9vcGNvZGVzLmNzdgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjVjYjgxMWQyYTJiYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3NpbWRfb3Bjb2Rlcy5jc3YKQEAgLTAsMCArMSwzIEBA
CitJbnN0cnVjdGlvbixjYXRlZ29yeSxvcCxyZXR1cm4sSW1tLHBhcmFtcyxpbnRlcnByZXRhdGlv
bixzaWduRXh0ZW5kLHZhbHVlLGV4dGVuZGVkT3Asc2NhbGFyVHlwZUJhc2Usc2NhbGFyVHlwZSxz
cGVjaWFsDQordjEyOC5jb25zdCxzaW1kLnNwZWNpYWwsY29uc3QsdixpOkltbUJ5dGVbMTZdLCx2
MTI4LE5BLDB4RkQsMHgwYyx2b2lkLHZvaWQseQ0KK2k4eDE2LmV4dHJhY3RfbGFuZV91LHNpbWQu
bGFuZSxleHRyYWN0X2xhbmUscyxpOkltbUxhbmVJZHgxNixhOnYsaTh4MTYsVSwweEZELDB4MTYs
aTgsaTMyLG4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS93YXNtLmpzb24KaW5kZXggY2FiZGUyMGFlY2VhLi5iMjBhMjU0ZTIwOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS93YXNtLmpzb24KQEAgLTcsMTggKzcsMTkgQEAKICAgICAgICAgeyAibmFt
ZSI6ICJ2ZXJzaW9uIiwgICAgICAidHlwZSI6ICJ1aW50MzIiLCAidmFsdWUiOiAgICAgICAgICAx
LCAiZGVzY3JpcHRpb24iOiAiVmVyc2lvbiBudW1iZXIiIH0KICAgICBdLAogICAgICJ0eXBlIiA6
IHsKLSAgICAgICAgImkzMiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAg
LTEsICJiM3R5cGUiOiAiQjM6OkludDMyIiB9LAotICAgICAgICAiaTY0IjogICAgICAgeyAidHlw
ZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogICAtMiwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCi0g
ICAgICAgICJmMzIiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgIC0zLCAi
YjN0eXBlIjogIkIzOjpGbG9hdCIgfSwKLSAgICAgICAgImY2NCI6ICAgICAgIHsgInR5cGUiOiAi
dmFyaW50NyIsICJ2YWx1ZSI6ICAgLTQsICJiM3R5cGUiOiAiQjM6OkRvdWJsZSIgfSwKLSAgICAg
ICAgImZ1bmNyZWYiOiAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMTYsICJiM3R5
cGUiOiAiQjM6OkludDY0IiB9LAotICAgICAgICAiZXh0ZXJucmVmIjogeyAidHlwZSI6ICJ2YXJp
bnQ3IiwgInZhbHVlIjogIC0xNywgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCi0gICAgICAgICJy
ZWZfbnVsbCI6ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIwLCAiYjN0eXBlIjog
IkIzOjpJbnQ2NCIgfSwKLSAgICAgICAgInJlZiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIs
ICJ2YWx1ZSI6ICAtMjEsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAotICAgICAgICAiZnVuYyI6
ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zMiwgImIzdHlwZSI6ICJCMzo6
Vm9pZCIgfSwKLSAgICAgICAgInZvaWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1
ZSI6ICAtNjQsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0KKyAgICAgICAgImkzMiI6ICAgICAgIHsg
InR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAgLTEsICJiM3R5cGUiOiAiQjM6OkludDMyIiwg
InNpemUiOiA4IH0sCisgICAgICAgICJpNjQiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAi
dmFsdWUiOiAgIC0yLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIsICJzaXplIjogOCB9LAorICAgICAg
ICAiZjMyIjogICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogICAtMywgImIzdHlw
ZSI6ICJCMzo6RmxvYXQiLCAic2l6ZSI6IDggfSwKKyAgICAgICAgImY2NCI6ICAgICAgIHsgInR5
cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAgLTQsICJiM3R5cGUiOiAiQjM6OkRvdWJsZSIsICJz
aXplIjogOCB9LAorICAgICAgICAidjEyOCI6ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZh
bHVlIjogIC01LCAgImIzdHlwZSI6ICJCMzo6VjEyOCIsICAic2l6ZSI6IDE2IH0sCisgICAgICAg
ICJmdW5jcmVmIjogICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTE2LCAiYjN0eXBl
IjogIkIzOjpJbnQ2NCIsICJzaXplIjogOCB9LAorICAgICAgICAiZXh0ZXJucmVmIjogeyAidHlw
ZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0xNywgImIzdHlwZSI6ICJCMzo6SW50NjQiLCAic2l6
ZSI6IDggfSwKKyAgICAgICAgInJlZl9udWxsIjogIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1
ZSI6ICAtMjAsICJiM3R5cGUiOiAiQjM6OkludDY0IiwgInNpemUiOiA4IH0sCisgICAgICAgICJy
ZWYiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIxLCAiYjN0eXBlIjog
IkIzOjpJbnQ2NCIsICJzaXplIjogOCB9LAorICAgICAgICAiZnVuYyI6ICAgICAgeyAidHlwZSI6
ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIsICAic2l6ZSI6
IDAgfSwKKyAgICAgICAgInZvaWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6
ICAtNjQsICJiM3R5cGUiOiAiQjM6OlZvaWQiLCAgInNpemUiOiAwIH0KICAgICB9LAotICAgICJ2
YWx1ZV90eXBlIjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAiZXh0ZXJucmVmIiwgImZ1
bmNyZWYiXSwKKyAgICAidmFsdWVfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0Iiwg
ImV4dGVybnJlZiIsICJmdW5jcmVmIiwgInYxMjgiXSwKICAgICAiYmxvY2tfdHlwZSI6IFsiaTMy
IiwgImk2NCIsICJmMzIiLCAiZjY0IiwgInZvaWQiLCAiZXh0ZXJucmVmIiwgImZ1bmNyZWYiXSwK
ICAgICAicmVmX3R5cGUiOiBbImZ1bmNyZWYiLCAiZXh0ZXJucmVmIiwgInJlZiIsICJyZWZfbnVs
bCJdLAogICAgICJleHRlcm5hbF9raW5kIjogewo=
</data>
<flag name="commit-queue"
          id="475245"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453765</attachid>
            <date>2022-03-03 11:17:01 -0800</date>
            <delta_ts>2022-03-03 11:20:00 -0800</delta_ts>
            <desc>SIMD Megapatch 1.4 (no imported tests)</desc>
            <filename>SIMD Megapatch 1.4 (no imported tests).diff</filename>
            <type>text/plain</type>
            <size>740391</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS55YW1sIGIvSlNUZXN0cy93YXNtLnlhbWwKaW5kZXgg
YWVlYmJjMDRjZDlkLi4yOTFmOTM3YTg3MmYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS55YW1s
CisrKyBiL0pTVGVzdHMvd2FzbS55YW1sCkBAIC0yOTIsNiArMjkyLDExOCBAQAogICBjbWQ6IHJ1
bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1hbAogLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvdXRm
OC1pbnZhbGlkLWVuY29kaW5nLndhc3QuanMKICAgY21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0
IDpub3JtYWwKKy0gcGF0aDogd2FzbS9zcGVjLXRlc3RzL3NpbWRfYWRkcmVzcy53YXN0LmpzCisg
IGNtZDogcnVuV2ViQXNzZW1ibHlTcGVjVGVzdCA6bm9ybWFsCistIHBhdGg6IHdhc20vc3BlYy10
ZXN0cy9zaW1kX2FsaWduLndhc3QuanMKKyAgY21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0IDpu
b3JtYWwKKy0gcGF0aDogd2FzbS9zcGVjLXRlc3RzL3NpbWRfYml0X3NoaWZ0Lndhc3QuanMKKyAg
Y21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0IDpub3JtYWwKKy0gcGF0aDogd2FzbS9zcGVjLXRl
c3RzL3NpbWRfYml0d2lzZS53YXN0LmpzCisgIGNtZDogcnVuV2ViQXNzZW1ibHlTcGVjVGVzdCA6
bm9ybWFsCistIHBhdGg6IHdhc20vc3BlYy10ZXN0cy9zaW1kX2Jvb2xlYW4ud2FzdC5qcworICBj
bWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRoOiB3YXNtL3NwZWMtdGVz
dHMvc2ltZF9jb25zdC53YXN0LmpzCisgIGNtZDogcnVuV2ViQXNzZW1ibHlTcGVjVGVzdCA6bm9y
bWFsCistIHBhdGg6IHdhc20vc3BlYy10ZXN0cy9zaW1kX2NvbnZlcnNpb25zLndhc3QuanMKKyAg
Y21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0IDpub3JtYWwKKy0gcGF0aDogd2FzbS9zcGVjLXRl
c3RzL3NpbWRfZjMyeDQud2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5v
cm1hbAorLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvc2ltZF9mMzJ4NF9hcml0aC53YXN0LmpzCisg
IGNtZDogcnVuV2ViQXNzZW1ibHlTcGVjVGVzdCA6bm9ybWFsCistIHBhdGg6IHdhc20vc3BlYy10
ZXN0cy9zaW1kX2YzMng0X2NtcC53YXN0LmpzCisgIGNtZDogcnVuV2ViQXNzZW1ibHlTcGVjVGVz
dCA6bm9ybWFsCistIHBhdGg6IHdhc20vc3BlYy10ZXN0cy9zaW1kX2YzMng0X3BtaW5fcG1heC53
YXN0LmpzCisgIGNtZDogcnVuV2ViQXNzZW1ibHlTcGVjVGVzdCA6bm9ybWFsCistIHBhdGg6IHdh
c20vc3BlYy10ZXN0cy9zaW1kX2YzMng0X3JvdW5kaW5nLndhc3QuanMKKyAgY21kOiBydW5XZWJB
c3NlbWJseVNwZWNUZXN0IDpub3JtYWwKKy0gcGF0aDogd2FzbS9zcGVjLXRlc3RzL3NpbWRfZjY0
eDIud2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRo
OiB3YXNtL3NwZWMtdGVzdHMvc2ltZF9mNjR4Ml9hcml0aC53YXN0LmpzCisgIGNtZDogcnVuV2Vi
QXNzZW1ibHlTcGVjVGVzdCA6bm9ybWFsCistIHBhdGg6IHdhc20vc3BlYy10ZXN0cy9zaW1kX2Y2
NHgyX2NtcC53YXN0LmpzCisgIGNtZDogcnVuV2ViQXNzZW1ibHlTcGVjVGVzdCA6bm9ybWFsCist
IHBhdGg6IHdhc20vc3BlYy10ZXN0cy9zaW1kX2Y2NHgyX3BtaW5fcG1heC53YXN0LmpzCisgIGNt
ZDogcnVuV2ViQXNzZW1ibHlTcGVjVGVzdCA6bm9ybWFsCistIHBhdGg6IHdhc20vc3BlYy10ZXN0
cy9zaW1kX2Y2NHgyX3JvdW5kaW5nLndhc3QuanMKKyAgY21kOiBydW5XZWJBc3NlbWJseVNwZWNU
ZXN0IDpub3JtYWwKKy0gcGF0aDogd2FzbS9zcGVjLXRlc3RzL3NpbWRfaTE2eDhfYXJpdGgud2Fz
dC5qcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRoOiB3YXNt
L3NwZWMtdGVzdHMvc2ltZF9pMTZ4OF9hcml0aDIud2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2Vt
Ymx5U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvc2ltZF9pMTZ4OF9j
bXAud2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRo
OiB3YXNtL3NwZWMtdGVzdHMvc2ltZF9pMTZ4OF9leHRhZGRfcGFpcndpc2VfaTh4MTYud2FzdC5q
cworICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRoOiB3YXNtL3Nw
ZWMtdGVzdHMvc2ltZF9pMTZ4OF9leHRtdWxfaTh4MTYud2FzdC5qcworICBjbWQ6IHJ1bldlYkFz
c2VtYmx5U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvc2ltZF9pMTZ4
OF9xMTVtdWxyX3NhdF9zLndhc3QuanMKKyAgY21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0IDpu
b3JtYWwKKy0gcGF0aDogd2FzbS9zcGVjLXRlc3RzL3NpbWRfaTE2eDhfc2F0X2FyaXRoLndhc3Qu
anMKKyAgY21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0IDpub3JtYWwKKy0gcGF0aDogd2FzbS9z
cGVjLXRlc3RzL3NpbWRfaTMyeDRfYXJpdGgud2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5
U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvc2ltZF9pMzJ4NF9hcml0
aDIud2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRo
OiB3YXNtL3NwZWMtdGVzdHMvc2ltZF9pMzJ4NF9jbXAud2FzdC5qcworICBjbWQ6IHJ1bldlYkFz
c2VtYmx5U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvc2ltZF9pMzJ4
NF9kb3RfaTE2eDgud2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1h
bAorLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvc2ltZF9pMzJ4NF9leHRhZGRfcGFpcndpc2VfaTE2
eDgud2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRo
OiB3YXNtL3NwZWMtdGVzdHMvc2ltZF9pMzJ4NF9leHRtdWxfaTE2eDgud2FzdC5qcworICBjbWQ6
IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMv
c2ltZF9pMzJ4NF90cnVuY19zYXRfZjMyeDQud2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5
U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvc2ltZF9pMzJ4NF90cnVu
Y19zYXRfZjY0eDIud2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1h
bAorLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvc2ltZF9pNjR4Ml9hcml0aC53YXN0LmpzCisgIGNt
ZDogcnVuV2ViQXNzZW1ibHlTcGVjVGVzdCA6bm9ybWFsCistIHBhdGg6IHdhc20vc3BlYy10ZXN0
cy9zaW1kX2k2NHgyX2FyaXRoMi53YXN0LmpzCisgIGNtZDogcnVuV2ViQXNzZW1ibHlTcGVjVGVz
dCA6bm9ybWFsCistIHBhdGg6IHdhc20vc3BlYy10ZXN0cy9zaW1kX2k2NHgyX2NtcC53YXN0Lmpz
CisgIGNtZDogcnVuV2ViQXNzZW1ibHlTcGVjVGVzdCA6bm9ybWFsCistIHBhdGg6IHdhc20vc3Bl
Yy10ZXN0cy9zaW1kX2k2NHgyX2V4dG11bF9pMzJ4NC53YXN0LmpzCisgIGNtZDogcnVuV2ViQXNz
ZW1ibHlTcGVjVGVzdCA6bm9ybWFsCistIHBhdGg6IHdhc20vc3BlYy10ZXN0cy9zaW1kX2k4eDE2
X2FyaXRoLndhc3QuanMKKyAgY21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0IDpub3JtYWwKKy0g
cGF0aDogd2FzbS9zcGVjLXRlc3RzL3NpbWRfaTh4MTZfYXJpdGgyLndhc3QuanMKKyAgY21kOiBy
dW5XZWJBc3NlbWJseVNwZWNUZXN0IDpub3JtYWwKKy0gcGF0aDogd2FzbS9zcGVjLXRlc3RzL3Np
bWRfaTh4MTZfY21wLndhc3QuanMKKyAgY21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0IDpub3Jt
YWwKKy0gcGF0aDogd2FzbS9zcGVjLXRlc3RzL3NpbWRfaTh4MTZfc2F0X2FyaXRoLndhc3QuanMK
KyAgY21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0IDpub3JtYWwKKy0gcGF0aDogd2FzbS9zcGVj
LXRlc3RzL3NpbWRfaW50X3RvX2ludF9leHRlbmQud2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2Vt
Ymx5U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvc2ltZF9sYW5lLndh
c3QuanMKKyAgY21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0IDpub3JtYWwKKy0gcGF0aDogd2Fz
bS9zcGVjLXRlc3RzL3NpbWRfbG9hZC53YXN0LmpzCisgIGNtZDogcnVuV2ViQXNzZW1ibHlTcGVj
VGVzdCA6bm9ybWFsCistIHBhdGg6IHdhc20vc3BlYy10ZXN0cy9zaW1kX2xvYWQxNl9sYW5lLndh
c3QuanMKKyAgY21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0IDpub3JtYWwKKy0gcGF0aDogd2Fz
bS9zcGVjLXRlc3RzL3NpbWRfbG9hZDMyX2xhbmUud2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2Vt
Ymx5U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvc2ltZF9sb2FkNjRf
bGFuZS53YXN0LmpzCisgIGNtZDogcnVuV2ViQXNzZW1ibHlTcGVjVGVzdCA6bm9ybWFsCistIHBh
dGg6IHdhc20vc3BlYy10ZXN0cy9zaW1kX2xvYWQ4X2xhbmUud2FzdC5qcworICBjbWQ6IHJ1bldl
YkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvc2ltZF9s
b2FkX2V4dGVuZC53YXN0LmpzCisgIGNtZDogcnVuV2ViQXNzZW1ibHlTcGVjVGVzdCA6bm9ybWFs
CistIHBhdGg6IHdhc20vc3BlYy10ZXN0cy9zaW1kX2xvYWRfc3BsYXQud2FzdC5qcworICBjbWQ6
IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMv
c2ltZF9sb2FkX3plcm8ud2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5v
cm1hbAorLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvc2ltZF9zcGxhdC53YXN0LmpzCisgIGNtZDog
cnVuV2ViQXNzZW1ibHlTcGVjVGVzdCA6bm9ybWFsCistIHBhdGg6IHdhc20vc3BlYy10ZXN0cy9z
aW1kX3N0b3JlLndhc3QuanMKKyAgY21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0IDpub3JtYWwK
Ky0gcGF0aDogd2FzbS9zcGVjLXRlc3RzL3NpbWRfc3RvcmUxNl9sYW5lLndhc3QuanMKKyAgY21k
OiBydW5XZWJBc3NlbWJseVNwZWNUZXN0IDpub3JtYWwKKy0gcGF0aDogd2FzbS9zcGVjLXRlc3Rz
L3NpbWRfc3RvcmUzMl9sYW5lLndhc3QuanMKKyAgY21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0
IDpub3JtYWwKKy0gcGF0aDogd2FzbS9zcGVjLXRlc3RzL3NpbWRfc3RvcmU2NF9sYW5lLndhc3Qu
anMKKyAgY21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0IDpub3JtYWwKKy0gcGF0aDogd2FzbS9z
cGVjLXRlc3RzL3NpbWRfc3RvcmU4X2xhbmUud2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5
U3BlY1Rlc3QgOm5vcm1hbAogCiAtIHBhdGg6IHdhc20vbW9kdWxlcy9ydW4tZnJvbS13YXNtLndh
c20KICAgY21kOiBydW5XZWJBc3NlbWJseQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3dhc20u
anNvbiBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KaW5kZXggMzJjOGFmOGJiZjU3Li41Y2FmNzFh
OWE5ZWQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KKysrIGIvSlNUZXN0cy93
YXNtL3dhc20uanNvbgpAQCAtMTEsNiArMTEsNyBAQAogICAgICAgICAiaTY0IjogICAgICAgeyAi
dHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogICAtMiwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0s
CiAgICAgICAgICJmMzIiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgIC0z
LCAiYjN0eXBlIjogIkIzOjpGbG9hdCIgfSwKICAgICAgICAgImY2NCI6ICAgICAgIHsgInR5cGUi
OiAidmFyaW50NyIsICJ2YWx1ZSI6ICAgLTQsICJiM3R5cGUiOiAiQjM6OkRvdWJsZSIgfSwKKyAg
ICAgICAgInYxMjgiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAxMjMsICJi
M3R5cGUiOiAiQjM6OlYxMjgiIH0sCiAgICAgICAgICJmdW5jcmVmIjogICB7ICJ0eXBlIjogInZh
cmludDciLCAidmFsdWUiOiAgLTE2LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKICAgICAgICAg
ImV4dGVybnJlZiI6IHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMTcsICJiM3R5cGUi
OiAiQjM6OkludDY0IiB9LAogICAgICAgICAicmVmX251bGwiOiAgeyAidHlwZSI6ICJ2YXJpbnQ3
IiwgInZhbHVlIjogIC0yMCwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCkBAIC0xOCw3ICsxOSw3
IEBACiAgICAgICAgICJmdW5jIjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAg
LTMyLCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9LAogICAgICAgICAidm9pZCI6ICAgICAgeyAidHlw
ZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC02NCwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfQogICAg
IH0sCi0gICAgInZhbHVlX3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJleHRl
cm5yZWYiLCAiZnVuY3JlZiJdLAorICAgICJ2YWx1ZV90eXBlIjogWyJpMzIiLCAiaTY0IiwgImYz
MiIsICJmNjQiLCAiZXh0ZXJucmVmIiwgImZ1bmNyZWYiLCAidjEyOCJdLAogICAgICJibG9ja190
eXBlIjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAidm9pZCIsICJleHRlcm5yZWYiLCAi
ZnVuY3JlZiJdLAogICAgICJyZWZfdHlwZSI6IFsiZnVuY3JlZiIsICJleHRlcm5yZWYiLCAicmVm
IiwgInJlZl9udWxsIl0sCiAgICAgImV4dGVybmFsX2tpbmQiOiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggNzRlMjNkZjU0ZGU2Li43ZDBjMDkyYWZjYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ4Myw2ICs0ODMsOCBAQCBtYWNybyhHRU5F
UkFURV9QWVRIT04gX2dlbmVyYXRvciBfYWRkaXRpb25hbF9kZXBzIF9pbnB1dCBfb3V0cHV0KQog
ZW5kbWFjcm8oKQogR0VORVJBVEVfUFlUSE9OKCR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS93
YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v
d2FzbS9nZW5lcmF0ZVdhc20ucHkgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3dhc20vd2Fz
bS5qc29uICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vV2FzbU9wcy5oKQog
R0VORVJBVEVfUFlUSE9OKCR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS93YXNtL2dlbmVyYXRl
V2FzbUIzSVJHZW5lcmF0b3JJbmxpbmVzSGVhZGVyLnB5ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS93YXNtL2dlbmVyYXRlV2FzbS5weSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vd2Fz
bS93YXNtLmpzb24gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9XYXNtQjNJ
UkdlbmVyYXRvcklubGluZXMuaCkKK0dFTkVSQVRFX1BZVEhPTigke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vd2FzbS9nZW5lcmF0ZVdhc21BaXJJUkdlbmVyYXRvcklubGluZXNIZWFkZXIucHkg
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3dhc20vZ2VuZXJhdGVXYXNtLnB5ICR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS93YXNtL3dhc20uanNvbiAke0phdmFTY3JpcHRDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L1dhc21BaXJJUkdlbmVyYXRvcklubGluZXMuaCkKK0dFTkVSQVRFX1BZ
VEhPTigke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vd2FzbS9nZW5lcmF0ZVdhc21TaW1kTExJ
bnRHZW5lcmF0b3JJbmxpbmVzSGVhZGVyLnB5ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS93
YXNtL2dlbmVyYXRlV2FzbS5weSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vd2FzbS93YXNt
Lmpzb24gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9XYXNtTExJbnRHZW5l
cmF0b3JTaW1kSW5saW5lcy5oKQogCiAjIExVVCBnZW5lcmF0b3IKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBi
OTIxYjJmODI4NjQuLmI4MzA2MmJjODJhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTIwOSw5ICsyMDksMTIg
QEAgJChQUk9KRUNUX0RJUikvdWNkL1NjcmlwdHMudHh0CiAkKFBST0pFQ1RfRElSKS91Y2QvVW5p
Y29kZURhdGEudHh0CiAkKFBST0pFQ1RfRElSKS91Y2QvZW1vamktZGF0YS50eHQKICQoUFJPSkVD
VF9ESVIpL3VjZC9sYW5ndWFnZS1zdWJ0YWctcmVnaXN0cnkudHh0CiskKFBST0pFQ1RfRElSKS93
YXNtL2dlbmVyYXRlU2ltZE9wY29kZXMucHkKICQoUFJPSkVDVF9ESVIpL3dhc20vZ2VuZXJhdGVX
YXNtLnB5CiskKFBST0pFQ1RfRElSKS93YXNtL2dlbmVyYXRlV2FzbUFpcklSR2VuZXJhdG9ySW5s
aW5lc0hlYWRlci5weQogJChQUk9KRUNUX0RJUikvd2FzbS9nZW5lcmF0ZVdhc21CM0lSR2VuZXJh
dG9ySW5saW5lc0hlYWRlci5weQogJChQUk9KRUNUX0RJUikvd2FzbS9nZW5lcmF0ZVdhc21PcHNI
ZWFkZXIucHkKKyQoUFJPSkVDVF9ESVIpL3dhc20vZ2VuZXJhdGVXYXNtU2ltZExMSW50R2VuZXJh
dG9ySW5saW5lc0hlYWRlci5weQogJChQUk9KRUNUX0RJUikvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
LmNwcAogJChQUk9KRUNUX0RJUikvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0
cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJv
clByb3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA4ZjgyYzMzZTVkOTkuLmY1MTM5ZGViOTA1
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdApAQCAtODMsOCArODMsMTAgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
LmwKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9U
ZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmx1
dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
VW5pY29kZVBhdHRlcm5UYWJsZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL1dhc21BaXJJUkdlbmVyYXRvcklubGluZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1dhc21CM0lSR2VuZXJh
dG9ySW5saW5lcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvV2FzbUxMSW50R2VuZXJhdG9ySW5saW5lcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvV2FzbUxMSW50R2VuZXJhdG9yU2ltZElu
bGluZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL1dhc21PcHMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IubHV0LmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9XZWJBc3NlbWJs
eUNvbXBpbGVFcnJvclByb3RvdHlwZS5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCAwZjQ4YWQ1NmM5ZmMuLmEzMGU5NzVhNjg0YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTc3LDYgKzc3LDggQEAgYWxs
IDogXAogICAgIHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVuaWNvZGUuY3BwIFwKICAgICBXYXNtT3Bz
LmggXAogICAgIFdhc21CM0lSR2VuZXJhdG9ySW5saW5lcy5oIFwKKyAgICBXYXNtQWlySVJHZW5l
cmF0b3JJbmxpbmVzLmggXAorICAgIFdhc21MTEludEdlbmVyYXRvclNpbWRJbmxpbmVzLmggXAog
IwogCiAjIEphdmFTY3JpcHQgYnVpbHRpbnMuCkBAIC0zODcsMTIgKzM4OSwxOCBAQCBVbmljb2Rl
UGF0dGVyblRhYmxlcy5oOiAkKEphdmFTY3JpcHRDb3JlKS95YXJyL2dlbmVyYXRlWWFyclVuaWNv
ZGVQcm9wZXJ0eVRhYmxlcwogeWFyci9ZYXJyQ2Fub25pY2FsaXplVW5pY29kZS5jcHA6ICQoSmF2
YVNjcmlwdENvcmUpL3lhcnIvZ2VuZXJhdGVZYXJyQ2Fub25pY2FsaXplVW5pY29kZSAkKEphdmFT
Y3JpcHRDb3JlKS91Y2QvQ2FzZUZvbGRpbmcudHh0CiAJJChQWVRIT04pICQoSmF2YVNjcmlwdENv
cmUpL3lhcnIvZ2VuZXJhdGVZYXJyQ2Fub25pY2FsaXplVW5pY29kZSAkKEphdmFTY3JpcHRDb3Jl
KS91Y2QvQ2FzZUZvbGRpbmcudHh0IC4veWFyci9ZYXJyQ2Fub25pY2FsaXplVW5pY29kZS5jcHAK
IAotV2FzbU9wcy5oOiAkKEphdmFTY3JpcHRDb3JlKS93YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRl
ci5weSAkKEphdmFTY3JpcHRDb3JlKS93YXNtL2dlbmVyYXRlV2FzbS5weSAkKEphdmFTY3JpcHRD
b3JlKS93YXNtL3dhc20uanNvbgorV2FzbU9wcy5oOiAkKEphdmFTY3JpcHRDb3JlKS93YXNtL2dl
bmVyYXRlV2FzbU9wc0hlYWRlci5weSAkKEphdmFTY3JpcHRDb3JlKS93YXNtL2dlbmVyYXRlV2Fz
bS5weSAkKEphdmFTY3JpcHRDb3JlKS93YXNtL3dhc20uanNvbiAkKEphdmFTY3JpcHRDb3JlKS93
YXNtL2dlbmVyYXRlU2ltZE9wY29kZXMucHkKIAkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZSkv
d2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkgJChKYXZhU2NyaXB0Q29yZSkvd2FzbS93YXNt
Lmpzb24gLi9XYXNtT3BzLmgKIAogV2FzbUIzSVJHZW5lcmF0b3JJbmxpbmVzLmg6ICQoSmF2YVNj
cmlwdENvcmUpL3dhc20vZ2VuZXJhdGVXYXNtQjNJUkdlbmVyYXRvcklubGluZXNIZWFkZXIucHkg
JChKYXZhU2NyaXB0Q29yZSkvd2FzbS9nZW5lcmF0ZVdhc20ucHkgJChKYXZhU2NyaXB0Q29yZSkv
d2FzbS93YXNtLmpzb24KIAkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZSkvd2FzbS9nZW5lcmF0
ZVdhc21CM0lSR2VuZXJhdG9ySW5saW5lc0hlYWRlci5weSAkKEphdmFTY3JpcHRDb3JlKS93YXNt
L3dhc20uanNvbiAuL1dhc21CM0lSR2VuZXJhdG9ySW5saW5lcy5oCiAKK1dhc21BaXJJUkdlbmVy
YXRvcklubGluZXMuaDogJChKYXZhU2NyaXB0Q29yZSkvd2FzbS9nZW5lcmF0ZVdhc21BaXJJUkdl
bmVyYXRvcklubGluZXNIZWFkZXIucHkgJChKYXZhU2NyaXB0Q29yZSkvd2FzbS9nZW5lcmF0ZVdh
c20ucHkgJChKYXZhU2NyaXB0Q29yZSkvd2FzbS93YXNtLmpzb24KKwkkKFBZVEhPTikgJChKYXZh
U2NyaXB0Q29yZSkvd2FzbS9nZW5lcmF0ZVdhc21BaXJJUkdlbmVyYXRvcklubGluZXNIZWFkZXIu
cHkgJChKYXZhU2NyaXB0Q29yZSkvd2FzbS93YXNtLmpzb24gLi9XYXNtQWlySVJHZW5lcmF0b3JJ
bmxpbmVzLmgKKworV2FzbUxMSW50R2VuZXJhdG9yU2ltZElubGluZXMuaDogJChKYXZhU2NyaXB0
Q29yZSkvd2FzbS9nZW5lcmF0ZVdhc21TaW1kTExJbnRHZW5lcmF0b3JJbmxpbmVzSGVhZGVyLnB5
ICQoSmF2YVNjcmlwdENvcmUpL3dhc20vZ2VuZXJhdGVXYXNtLnB5ICQoSmF2YVNjcmlwdENvcmUp
L3dhc20vd2FzbS5qc29uCisJJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmUpL3dhc20vZ2VuZXJh
dGVXYXNtU2ltZExMSW50R2VuZXJhdG9ySW5saW5lc0hlYWRlci5weSAkKEphdmFTY3JpcHRDb3Jl
KS93YXNtL3dhc20uanNvbiAuL1dhc21MTEludEdlbmVyYXRvclNpbWRJbmxpbmVzLmgKKwogIyBE
eW5hbWljYWxseS1kZWZpbmVkIHRhcmdldHMgYXJlIGxpc3RlZCBiZWxvdy4gU3RhdGljIHRhcmdl
dHMgYmVsb25nIHVwIHRvcC4KIAogYWxsIDogXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA3MzUwYWI4MjVhN2QuLjU0YjFmZDk3MjY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTg3NSw3ICs4NzUsMTAgQEAKIAkJNDQ0M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8q
IEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJh
bWV3b3JrICovOyB9OwogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxNTM5QjgxMkRDOTk0
NTAwRUY3QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNEIxMTY3
QTAyNzVFQUEzNjAwOEI0RDA4IC8qIFNpbWRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjExNjc5RjI3NUVBQTM2MDA4QjREMDggLyogU2ltZElu
Zm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0
QjYyNUEyNjI3M0MzOTRFMDAzQkY1MDMgLyogQjNDb25zdDEyOFZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNjI1QTI1MjczQzM5NEUwMDNC
RjUwMyAvKiBCM0NvbnN0MTI4VmFsdWUuY3BwICovOyB9OwogCQk0QkFBMDdDRUI4MUY0OUEyOTZF
MDIyMDMgLyogV2FzbVNpZ25hdHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMwQTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtU2ln
bmF0dXJlSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTRCRTg5QkZCMjc0ODUxMzMwMDc5MDk3NyAvKiBCM1NpbWRWYWx1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJFODlCRjgyNzQ4NTEz
MzAwNzkwOTc3IC8qIEIzU2ltZFZhbHVlLmggKi87IH07CiAJCTUyMEQ5OUYxMjM4OENDODEwMDA1
MDlBMyAvKiBHZXRCeVZhbEhpc3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUyMEQ5OUYwMjM4OENDNzgwMDA1MDlBMyAvKiBHZXRCeVZhbEhpc3Rv
cnkuaCAqLzsgfTsKIAkJNTIxMTMxRjcxRjgyQkYxNDAwN0NDRUVFIC8qIFBvbHlQcm90b0FjY2Vz
c0NoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MjExMzFGNjFGODJCRjExMDA3Q0NFRUUgLyogUG9seVByb3RvQWNjZXNzQ2hhaW4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MjEzMjI0NjFFQ0JD
RTgyMDBGNjU2MTUgLyogV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyMTMyMjQ0MUVDQkNFODIwMEY2NTYxNSAv
KiBXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5oICovOyB9OwpAQCAtMTgwMyw2ICsxODA2LDcgQEAK
IAkJQ0QxRjlCNEIyNzBDRkUwRjAwNjE3RUI2IC8qIFN0cm9uZ0ZvcndhcmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5QjRBMjcwQ0ZFMEYwMDYx
N0VCNiAvKiBTdHJvbmdGb3J3YXJkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQ0UyMEJEMDUyMzdEM0UyMzAwNDZFNTIwIC8qIEZpbGVCYXNlZEZ1
enplckFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0UyMEJEMDMyMzdEM0FENDAwNDZFNTIwIC8qIEZpbGVCYXNlZEZ1enplckFnZW50QmFz
ZS5oICovOyB9OwogCQlDRTIwQkQwNzIzN0QzRTQ4MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVD
cmVhdGluZ0Z1enplckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTIwQkQwMTIzN0QzQUQ0MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVh
dGluZ0Z1enplckFnZW50LmggKi87IH07CisJCUNFNkVDMjFFMjczQjQ1QUUwMDE1OThFMyAvKiBC
M0NvbnN0MTI4VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENFNkVDMjFEMjczQjQ1QUUwMDE1OThFMyAvKiBCM0NvbnN0MTI4VmFsdWUuaCAqLzsg
fTsKIAkJQ0VBRTdEN0I4ODlCNDc3QkE5M0FCQTZDIC8qIFNjcmlwdEZldGNoZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg4NTIxNTFBOUMzODQyMzg5
QjMyMTVCNyAvKiBTY3JpcHRGZXRjaGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0VDRkFEMzYyMzcyREFEMDAwMjkxNTk5IC8qIEZ1enplclBy
ZWRpY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRUNGQUQzNDIzNzJEQUE3MDAyOTE1OTkgLyogRnV6emVyUHJlZGljdGlvbnMuaCAqLzsgfTsK
IAkJQ0VDRkFEMzcyMzcyREFENDAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNGQUQzMjIzNzJE
QUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCAqLzsgfTsKQEAgLTM3NjIsNiAr
Mzc2NiwxMCBAQAogCQk0NDJGQkQ4NTIxNDlEMUUwMDA3MzUxOUMgLyogaGFzaGVyLnB5ICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cHl0aG9uOyBuYW1lID0gaGFzaGVyLnB5OyBwYXRoID0geWFyci9oYXNoZXIucHk7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1MTUzOUI4MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnIuaDsgcGF0aCA9IHlhcnIvWWFy
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURG
ODQgLyoganNjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IGpzYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
NDsgfTsKKwkJNEIxMTY3OUYyNzVFQUEzNjAwOEI0RDA4IC8qIFNpbWRJbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNpbWRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCNjI1QTI1
MjczQzM5NEUwMDNCRjUwMyAvKiBCM0NvbnN0MTI4VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQjNDb25zdDEyOFZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzQ29uc3QxMjhWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCRTg5QkY3Mjc0ODUxMzMwMDc5MDk3NyAvKiBC
M1NpbWRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1NpbWRWYWx1ZS5jcHA7IHBhdGgg
PSBiMy9CM1NpbWRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCRTg5
QkY4Mjc0ODUxMzMwMDc5MDk3NyAvKiBCM1NpbWRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1Np
bWRWYWx1ZS5oOyBwYXRoID0gYjMvQjNTaW1kVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNENFOTc4RTM4NUE4NDk4MTk5MDUyMTUzIC8qIE1vZHVsZU5hbWVzcGFjZUFjY2Vz
c0Nhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlTmFtZXNwYWNl
QWNjZXNzQ2FzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUYwRUI2MTA1Qzg2
QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEZv
dW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91
bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCTUxRjBF
QzA3MDVDODZDOUEwMEU2REYxQiAvKiBsaWJvYmpjLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5h
bWUgPSBsaWJvYmpjLmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGlib2JqYy5keWxpYjsgc291cmNl
VHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTUxODMsNiArNTE5MSw3IEBACiAJCUNFMjdBM0Q4
MjM3NTlCQUMwMDg5NjA1RSAvKiBOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjdBM0Q5MjM3NUE2REMwMDg5NjA1RSAv
KiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTnVt
YmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0UyN0EzREEyMzc1QTZEQzAwODk2MDVFIC8qIE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U2RUMyMUQyNzNCNDVBRTAwMTU5OEUzIC8qIEIzQ29u
c3QxMjhWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0NvbnN0MTI4VmFsdWUuaDsgcGF0aCA9IGIz
L0IzQ29uc3QxMjhWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUNGQUQz
MjIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRmlsZUJhc2VkRnV6emVyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0VDRkFEMzMyMzcyREFBNzAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZpbGVCYXNlZEZ1enplckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0VDRkFEMzQyMzcyREFBNzAwMjkxNTk5IC8qIEZ1enplclByZWRpY3Rp
b25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1enplclByZWRpY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02MTI3LDYgKzYxMzYsMTAgQEAKIAkJCQkwRkVDODRDNDFCREFDREFD
MDA4MEZGNzQgLyogQjNDb25zdDMyVmFsdWUuaCAqLywKIAkJCQkwRkVDODRDNTFCREFDREFDMDA4
MEZGNzQgLyogQjNDb25zdDY0VmFsdWUuY3BwICovLAogCQkJCTBGRUM4NEM2MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0NvbnN0NjRWYWx1ZS5oICovLAorCQkJCTRCNjI1QTI1MjczQzM5NEUwMDNCRjUw
MyAvKiBCM0NvbnN0MTI4VmFsdWUuY3BwICovLAorCQkJCUNFNkVDMjFEMjczQjQ1QUUwMDE1OThF
MyAvKiBCM0NvbnN0MTI4VmFsdWUuaCAqLywKKwkJCQk0QkU4OUJGNzI3NDg1MTMzMDA3OTA5Nzcg
LyogQjNTaW1kVmFsdWUuY3BwICovLAorCQkJCTRCRTg5QkY4Mjc0ODUxMzMwMDc5MDk3NyAvKiBC
M1NpbWRWYWx1ZS5oICovLAogCQkJCTBGRUM4NEM3MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnN0
RG91YmxlVmFsdWUuY3BwICovLAogCQkJCTBGRUM4NEM4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Nv
bnN0RG91YmxlVmFsdWUuaCAqLywKIAkJCQk0MzQyMkE2MDFDMTU4NzFCMDBFMkVCOTggLyogQjND
b25zdEZsb2F0VmFsdWUuY3BwICovLApAQCAtNjYzMSw2ICs2NjQ0LDcgQEAKIAkJCQlBNzM4NjU1
MjExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNwcCAqLywKIAkJCQlBNzM4NjU1
MzExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmggKi8sCiAJCQkJNjU5ODdGMkYx
NjgyOEE3RTAwM0MyRjhEIC8qIFVudXNlZFBvaW50ZXIuaCAqLywKKwkJCQk0QjExNjc5RjI3NUVB
QTM2MDA4QjREMDggLyogU2ltZEluZm8uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaml0OwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTk2NjcsNiArOTY4MSw3IEBACiAJCQkJMEY2MTgz
MzExQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyTWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjVDRjk4NDFFOUQ1Mzc3MDBDMTg2OTIgLyogQWlyTG93ZXJTdGFja0FyZ3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNDBFNEE3MUM0OTdGNzQwMEE1NzdGQSAvKiBBaXJPcGNvZGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTRCRTg5QkZCMjc0ODUxMzMwMDc5MDk3NyAvKiBCM1NpbWRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MEU0QTgxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9wY29k
ZUdlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MEU0QTkxQzQ5N0Y3NDAwQTU3N0ZB
IC8qIEFpck9wY29kZVV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIzODc5MDFCRkJDNDRE
MDBFM0FCMUUgLyogQWlyT3B0aW1pemVCbG9ja09yZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEw
NDQ3LDYgKzEwNDYyLDcgQEAKIAkJCQkwRkIzOTlCRjIwQUY2QjNGMDAxN0UyMTMgLyogSW5zdGFu
Y2VPZlN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMzk5QzAyMEFGNkI0MzAwMTdFMjEz
IC8qIEluc3RhbmNlT2ZWYXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEE0NjgwQzIxNkZB
NTY1MDAwRDJCMUEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNFNkVDMjFF
MjczQjQ1QUUwMDE1OThFMyAvKiBCM0NvbnN0MTI4VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0QzI1QjlFMjE2RUEzNkEwMDEzNzc2NCAvKiBJbnN0cnVjdGlvblN0cmVhbS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdBOEFGM0IxN0FEQjVGMzAwNUFCMTc0IC8qIEludDE2QXJyYXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3QThBRjNDMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTExMjk5LDYgKzExMzE1LDcgQEAKIAkJCQlBN0RDQjk3MzEyRTUx
OTNGMDA5MTE5NDAgLyogV3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkI2RDc1
MzE4QTMzNzkzMDA0QTkzMDEgLyogV3JpdGVCYXJyaWVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTRCMTE2N0EwMjc1RUFBMzYwMDhCNEQwOCAvKiBTaW1kSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDkyIC8qIFg4Nl82NFJl
Z2lzdGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8q
IFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2
NDkxIC8qIFg4NlJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjA3MCw2ICsxMjA4Nyw3
IEBACiAJCQkJRTM5MkU2RjgyNEQyNUZBNjAwQjIwNzY3IC8qIEIzQm90dG9tVHVwbGVWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkU2NUExQzI3NjgyNzYwMDAyQjRDMEEgLyogQjNFc3Rp
bWF0ZVN0YXRpY0V4ZWN1dGlvbkNvdW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODVB
RjFCREI1RDVFMDA4MEZGNzQgLyogdGVzdGIzXzEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNEI2
MjVBMjYyNzNDMzk0RTAwM0JGNTAzIC8qIEIzQ29uc3QxMjhWYWx1ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1QzNBNzdCQTIyRjI0ODBGMDAzODI3RkYgLyogdGVzdGIzXzIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUMzQTc3QjkyMkYyNDgwQjAwMzgyN0ZGIC8qIHRlc3RiM18zLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTVDM0E3N0I4MjJGMjQ4MDkwMDM4MjdGRiAvKiB0ZXN0YjNfNC5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4NGE5NjI0MWRi
MWQuLjY1OTkzZDM0MGYxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTI1LDYg
KzEyNSw3IEBAIGIzL0IzQ29tbXV0YXRpdml0eS5jcHAKIGIzL0IzQ29tcGlsZS5jcHAKIGIzL0Iz
Q29uc3QzMlZhbHVlLmNwcAogYjMvQjNDb25zdDY0VmFsdWUuY3BwCitiMy9CM0NvbnN0MTI4VmFs
dWUuY3BwCiBiMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwCiBiMy9CM0NvbnN0RmxvYXRWYWx1ZS5j
cHAKIGIzL0IzQ29uc3RyYWluZWRWYWx1ZS5jcHAKQEAgLTE2NSw2ICsxNjYsNyBAQCBiMy9CM1B1
cmVDU0UuY3BwCiBiMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCiBiMy9CM1JlZHVjZUxvb3BT
dHJlbmd0aC5jcHAKIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwCitiMy9CM1NpbWRWYWx1ZS5jcHAK
IGIzL0IzU1NBQ2FsY3VsYXRvci5jcHAKIGIzL0IzU2xvdEJhc2VWYWx1ZS5jcHAKIGIzL0IzU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BUk02NEFzc2VtYmxlci5oCmluZGV4IDZlOTFkOTIzMGEzOS4uMWFjMzg0MTU5MTQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1i
bGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxl
ci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQXNzZW1ibGVyQ29tbW9uLmgiCiAjaW5j
bHVkZSAiQ1BVLmgiCiAjaW5jbHVkZSAiSlNDUHRyVGFnLmgiCisjaW5jbHVkZSAiU2ltZEluZm8u
aCIKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQxLDkgKzQyLDkgQEAKICNpbmNsdWRlIDx6aXJjb24v
c3lzY2FsbHMuaD4KICNlbmRpZgogCi0jZGVmaW5lIENIRUNLX0RBVEFTSVpFX09GKGRhdGFzaXpl
KSBzdGF0aWNfYXNzZXJ0KGRhdGFzaXplID09IDMyIHx8IGRhdGFzaXplID09IDY0KQorI2RlZmlu
ZSBDSEVDS19EQVRBU0laRV9PRihkYXRhc2l6ZSkgc3RhdGljX2Fzc2VydChkYXRhc2l6ZSA9PSAz
MiB8fCBkYXRhc2l6ZSA9PSA2NCB8fCBkYXRhc2l6ZSA9PSAxMjgpCiAjZGVmaW5lIENIRUNLX01F
TU9QU0laRV9PRihzaXplKSBzdGF0aWNfYXNzZXJ0KHNpemUgPT0gOCB8fCBzaXplID09IDE2IHx8
IHNpemUgPT0gMzIgfHwgc2l6ZSA9PSA2NCB8fCBzaXplID09IDEyOCk7Ci0jZGVmaW5lIERBVEFT
SVpFX09GKGRhdGFzaXplKSAoKGRhdGFzaXplID09IDY0KSA/IERhdGFzaXplXzY0IDogRGF0YXNp
emVfMzIpCisjZGVmaW5lIERBVEFTSVpFX09GKGRhdGFzaXplKSAoKGRhdGFzaXplID09IDY0KSA/
IERhdGFzaXplXzY0IDogKChkYXRhc2l6ZSA9PSAxMjgpID8gRGF0YXNpemVfMTI4IDogRGF0YXNp
emVfMzIpKQogI2RlZmluZSBNRU1PUFNJWkVfT0YoZGF0YXNpemUpICgoZGF0YXNpemUgPT0gOCB8
fCBkYXRhc2l6ZSA9PSAxMjgpID8gTWVtT3BTaXplXzhfb3JfMTI4IDogKGRhdGFzaXplID09IDE2
KSA/IE1lbU9wU2l6ZV8xNiA6IChkYXRhc2l6ZSA9PSAzMikgPyBNZW1PcFNpemVfMzIgOiBNZW1P
cFNpemVfNjQpCiAjZGVmaW5lIENIRUNLX0RBVEFTSVpFKCkgQ0hFQ0tfREFUQVNJWkVfT0YoZGF0
YXNpemUpCiAjZGVmaW5lIENIRUNLX01FTU9QU0laRSgpIENIRUNLX01FTU9QU0laRV9PRihkYXRh
c2l6ZSkKQEAgLTE4Nyw3ICsxODgsNiBAQCB0eXBlZGVmIGVudW0gOiBpbnQ4X3QgewogCiAvLyBB
Uk02NCBhbHdheXMgaGFzIDMyIEZQVSByZWdpc3RlcnMgMTI4LWJpdHMgZWFjaC4gU2VlIGh0dHA6
Ly9sbHZtLm9yZy9kZXZtdGcvMjAxMi0xMS9Ob3J0aG92ZXItQUFyY2g2NC5wZGYKIC8vIGFuZCBT
ZWN0aW9uIDUuMS4yIGluIGh0dHA6Ly9pbmZvY2VudGVyLmFybS5jb20vaGVscC90b3BpYy9jb20u
YXJtLmRvYy5paGkwMDU1Yi9JSEkwMDU1Ql9hYXBjczY0LnBkZi4KLS8vIEhvd2V2ZXIsIHdlIG9u
bHkgdXNlIHRoZW0gZm9yIDY0LWJpdCBkb3VibGVzLgogdHlwZWRlZiBlbnVtIDogaW50OF90IHsK
ICNkZWZpbmUgUkVHSVNURVJfSUQoaWQsIG5hbWUsIHIsIGNzKSBpZCwKICAgICBGT1JfRUFDSF9G
UF9SRUdJU1RFUihSRUdJU1RFUl9JRCkKQEAgLTUyMiw4ICs1MjIsOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgZW51bSBEYXRhc2l6ZSB7CiAgICAgICAgIERhdGFzaXplXzMyLAogICAgICAgICBEYXRhc2l6
ZV82NCwKLSAgICAgICAgRGF0YXNpemVfNjRfdG9wLAotICAgICAgICBEYXRhc2l6ZV8xNgorICAg
ICAgICBEYXRhc2l6ZV8xMjgsCisgICAgICAgIERhdGFzaXplXzE2LAogICAgIH07CiAKICAgICBl
bnVtIE1lbU9wU2l6ZSB7CkBAIC0xNDc4LDYgKzE0NzgsNjE3IEBAIHB1YmxpYzoKICAgICAgICAg
bXN1YjxkYXRhc2l6ZT4ocmQsIHJuLCBybSwgQVJNNjRSZWdpc3RlcnM6OnpyKTsKICAgICB9CiAK
KyAgICBzdGF0aWMgYm9vbCBzaW1kUUJpdChTaW1kTGFuZSBsYW5lKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGVsZW1lbnRCeXRlU2l6ZShsYW5lKSA9PSA4OworICAgIH0KKworICAgIC8vIHJldHVy
bnMgYW4gaW1tNQorICAgIHN0YXRpYyBpbnQgZW5jb2RlTGFuZUFuZEluZGV4KFNpbWRMYW5lIGxh
bmUsIHVpbnQzMl90IGxhbmVJbmRleCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoZWxlbWVudEJ5
dGVTaXplKGxhbmUpKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIEFTU0VSVChsYW5l
SW5kZXggPCAxNik7CisgICAgICAgICAgICByZXR1cm4gMGIwMDAwMSB8IChsYW5lSW5kZXggPDwg
MSk7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIEFTU0VSVChsYW5lSW5kZXggPCA4KTsK
KyAgICAgICAgICAgIHJldHVybiAwYjAwMDEwIHwgKGxhbmVJbmRleCA8PCAyKTsKKyAgICAgICAg
Y2FzZSA0OgorICAgICAgICAgICAgQVNTRVJUKGxhbmVJbmRleCA8IDQpOworICAgICAgICAgICAg
cmV0dXJuIDBiMDAxMDAgfCAobGFuZUluZGV4IDw8IDMpOworICAgICAgICBjYXNlIDg6CisgICAg
ICAgICAgICBBU1NFUlQobGFuZUluZGV4IDwgMik7CisgICAgICAgICAgICByZXR1cm4gMGIwMTAw
MCB8IChsYW5lSW5kZXggPDwgNCk7CisgICAgICAgIGNhc2UgMTY6CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBpbnMoRlBS
ZWdpc3RlcklEIHZkLCBSZWdpc3RlcklEIHJuLCBTaW1kTGFuZSBsYW5lLCB1aW50MzJfdCBsYW5l
SW5kZXgpCisgICAgeworICAgICAgICBpbnNuKHNpbWRHZW5lcmFsKDEsIGVuY29kZUxhbmVBbmRJ
bmRleChsYW5lLCBsYW5lSW5kZXgpLCAwYjAwMTEsIHJuLCB2ZCkpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBpbnMoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQgdm4sIFNp
bWRMYW5lIGxhbmUsIHVpbnQzMl90IGxhbmVJbmRleCkKKyAgICB7CisgICAgICAgIC8vIFRoaXMg
aXMgaW5zZXJ0IHZlY3RvciBlbGVtZW50IGZyb20gYW5vdGhlciBlbGVtZW50LiBPdXIgb3RoZXIg
ZWxlbWVudCBpcyBhbHdheXMgdGhlIGxvdworICAgICAgICAvLyBiaXRzIG9mICJ2biIKKyAgICAg
ICAgaW50IGluc3QgPSAwYjAxMTAxMTEwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwOworICAgICAg
ICBpbnN0IHw9IGVuY29kZUxhbmVBbmRJbmRleChsYW5lLCBsYW5lSW5kZXgpIDw8IDE2OworICAg
ICAgICBpbnN0IHw9IDAgPDwgMTE7IC8vIGxvb2tpbmcgYXQgInplcm8iIGluZGV4IG9mIHZuCisg
ICAgICAgIGluc3QgfD0gc3RhdGljX2Nhc3Q8aW50Pih2bikgPDwgNTsKKyAgICAgICAgaW5zdCB8
PSBzdGF0aWNfY2FzdDxpbnQ+KHZkKTsKKyAgICAgICAgaW5zbihpbnN0KTsKKyAgICB9CisgICAg
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHVtb3YoUmVnaXN0ZXJJRCByZCwgRlBSZWdpc3RlcklE
IHZuLCBTaW1kTGFuZSBsYW5lLCB1aW50MzJfdCBsYW5lSW5kZXgpCisgICAgeworICAgICAgICBB
U1NFUlQoc2NhbGFyVHlwZUlzSW50ZWdyYWwobGFuZSkpOworICAgICAgICBpbnNuKHNpbWRHZW5l
cmFsKHNpbWRRQml0KGxhbmUpLCBlbmNvZGVMYW5lQW5kSW5kZXgobGFuZSwgbGFuZUluZGV4KSwg
MGIwMTExLCB2biwgcmQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc21vdihS
ZWdpc3RlcklEIHJkLCBGUFJlZ2lzdGVySUQgdm4sIFNpbWRMYW5lIGxhbmUsIHVpbnQzMl90IGxh
bmVJbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChzY2FsYXJUeXBlSXNJbnRlZ3JhbChsYW5l
KSk7CisgICAgICAgIGluc24oc2ltZEdlbmVyYWwoc2ltZFFCaXQobGFuZSksIGVuY29kZUxhbmVB
bmRJbmRleChsYW5lLCBsYW5lSW5kZXgpLCAwYjAxMDEsIHZuLCByZCkpOworICAgIH0KKworICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBkdXBFbGVtZW50KEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3Rl
cklEIHZuLCBTaW1kTGFuZSBsYW5lLCB1aW50MzJfdCBsYW5lSW5kZXgpCisgICAgeworICAgICAg
ICAvLyBUYWtlIGVsZW1lbnQgZnJvbSB2ZWN0b3IgYW5kIHB1dCBpdCBpbiB2ZAorICAgICAgICBB
U1NFUlQoc2NhbGFyVHlwZUlzRmxvYXRpbmdQb2ludChsYW5lKSk7CisgICAgICAgIGluc24oMGIw
MTAxMTExMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMCB8IChlbmNvZGVMYW5lQW5kSW5kZXgobGFu
ZSwgbGFuZUluZGV4KSA8PCAxNikgfCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIGR1cEdlbmVyYWwoRlBSZWdpc3RlcklEIHZkLCBSZWdpc3RlcklEIHJu
LCBTaW1kTGFuZSBsYW5lKQorICAgIHsKKyAgICAgICAgLy8gVGFrZSBlbGVtZW50IGZyb20gZ3By
IGFuZCBwdXQgaXQgaW4gZWFjaCBsYW5lIGluIHZkCisgICAgICAgIEFTU0VSVChzY2FsYXJUeXBl
SXNJbnRlZ3JhbChsYW5lKSk7CisgICAgICAgIGludCBpbW01OworICAgICAgICBzd2l0Y2ggKGVs
ZW1lbnRCeXRlU2l6ZShsYW5lKSkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBpbW01
ID0gMGIwMDAwMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAg
ICAgICBpbW01ID0gMGIwMDAxMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDQ6
CisgICAgICAgICAgICBpbW01ID0gMGIwMDEwMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIDg6CisgICAgICAgICAgICBpbW01ID0gMGIwMTAwMDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgICAgICBpbnNuKDBiMDEwMDExMTAwMDAwMDAwMDAwMDAxMTAw
MDAwMDAwMDAgfCAoaW1tNSA8PCAxNikgfCAocm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIGZjbWVxKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZu
LCBGUFJlZ2lzdGVySUQgdm0sIFNpbWRMYW5lIGxhbmUpCisgICAgeworICAgICAgICBpbnNuKHNp
bWRGbG9hdGluZ1BvaW50VmVjdG9yQ29tcGFyZSgwLCAwLCAwLCBsYW5lLCB2ZCwgdm4sIHZtKSk7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZjbWd0KEZQUmVnaXN0ZXJJRCB2ZCwg
RlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdm0sIFNpbWRMYW5lIGxhbmUpCisgICAgewor
ICAgICAgICBpbnNuKHNpbWRGbG9hdGluZ1BvaW50VmVjdG9yQ29tcGFyZSgxLCAxLCAwLCBsYW5l
LCB2ZCwgdm4sIHZtKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZjbWdlKEZQ
UmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdm0sIFNpbWRMYW5l
IGxhbmUpCisgICAgeworICAgICAgICBpbnNuKHNpbWRGbG9hdGluZ1BvaW50VmVjdG9yQ29tcGFy
ZSgxLCAwLCAwLCBsYW5lLCB2ZCwgdm4sIHZtKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHZlY3Rvck5vdChGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2bikKKyAgICB7
CisgICAgICAgIGluc24oMGIwMTEwMTExMDAwMTAwMDAwMDEwMTEwMDAwMDAwMDAwMCB8ICh2biA8
PCA1KSB8IHZkKTsKKyAgICB9CisKKyAgICBzdGF0aWMgaW50IHNpemVGb3JJbnRlZ3JhbFNpbWRP
cChTaW1kTGFuZSBsYW5lKQorICAgIHsKKyAgICAgICAgLy8gSXQncyBzb21ldGltZXMgY29udmVu
aWVudCB0byBwYXNzIGluIGZsb2F0aW5nIHBvaW50IGxhbmVzCisgICAgICAgIC8vIGhlcmUgZm9y
IGNvbnZlcnNpb24gb3BzLCBzbyB3ZSBkb24ndCBhc3NlcnQgYWdhaW5zdCB0aGF0LgorICAgICAg
ICBzd2l0Y2ggKGVsZW1lbnRCeXRlU2l6ZShsYW5lKSkgeworICAgICAgICBjYXNlIDE6CisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgcmV0dXJuIDE7
CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICBjYXNlIDg6
CisgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0
aWMgYm9vbCBzaXplRm9yRmxvYXRpbmdQb2ludFNpbWRPcChTaW1kTGFuZSBsYW5lKQorICAgIHsK
KyAgICAgICAgLy8gSXQncyBzb21ldGltZXMgY29udmVuaWVudCB0byBwYXNzIGluIGludGVncmFs
IGxhbmVzCisgICAgICAgIC8vIGhlcmUgZm9yIGNvbnZlcnNpb24gb3BzLCBzbyB3ZSBkb24ndCBh
c3NlcnQgYWdhaW5zdCB0aGF0LgorICAgICAgICBSRUxFQVNFX0FTU0VSVChlbGVtZW50Qnl0ZVNp
emUobGFuZSkgPT0gNCB8fCBlbGVtZW50Qnl0ZVNpemUobGFuZSkgPT0gOCk7CisgICAgICAgIHJl
dHVybiBlbGVtZW50Qnl0ZVNpemUobGFuZSkgPT0gNCA/IDAgOiAxOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBjbWVxKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBG
UFJlZ2lzdGVySUQgdm0sIFNpbWRMYW5lIGxhbmUpCisgICAgeworICAgICAgICBpbnNuKDBiMDEx
MDExMTAwMDEwMDAwMDEwMDAxMTAwMDAwMDAwMDAgfCAoc2l6ZUZvckludGVncmFsU2ltZE9wKGxh
bmUpIDw8IDIyKSB8ICh2bSA8PCAxNikgfCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIGNtZXF6KEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZu
LCBTaW1kTGFuZSBsYW5lKQorICAgIHsKKyAgICAgICAgaW5zbigwYjAxMDExMTEwMDAxMDAwMDAx
MDAxMTAwMDAwMDAwMDAwIHwgKHNpemVGb3JJbnRlZ3JhbFNpbWRPcChsYW5lKSA8PCAyMikgfCAo
dm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNtaGkoRlBS
ZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2bSwgU2ltZExhbmUg
bGFuZSkKKyAgICB7CisgICAgICAgIGluc24oMGIwMTEwMTExMDAwMTAwMDAwMDAxMTAxMDAwMDAw
MDAwMCB8IChzaXplRm9ySW50ZWdyYWxTaW1kT3AobGFuZSkgPDwgMjIpIHwgKHZtIDw8IDE2KSB8
ICh2biA8PCA1KSB8IHZkKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY21ocyhG
UFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdpc3RlcklEIHZtLCBTaW1kTGFu
ZSBsYW5lKQorICAgIHsKKyAgICAgICAgaW5zbigwYjAxMTAxMTEwMDAxMDAwMDAwMDExMTEwMDAw
MDAwMDAwIHwgKHNpemVGb3JJbnRlZ3JhbFNpbWRPcChsYW5lKSA8PCAyMikgfCAodm0gPDwgMTYp
IHwgKHZuIDw8IDUpIHwgdmQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbWd0
KEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdm0sIFNpbWRM
YW5lIGxhbmUpCisgICAgeworICAgICAgICBpbnNuKDBiMDEwMDExMTAwMDEwMDAwMDAwMTEwMTAw
MDAwMDAwMDAgfCAoc2l6ZUZvckludGVncmFsU2ltZE9wKGxhbmUpIDw8IDIyKSB8ICh2bSA8PCAx
NikgfCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNt
Z2UoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2bSwgU2lt
ZExhbmUgbGFuZSkKKyAgICB7CisgICAgICAgIGluc24oMGIwMTAwMTExMDAwMTAwMDAwMDAxMTEx
MDAwMDAwMDAwMCB8IChzaXplRm9ySW50ZWdyYWxTaW1kT3AobGFuZSkgPDwgMjIpIHwgKHZtIDw8
IDE2KSB8ICh2biA8PCA1KSB8IHZkKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
dmVjdG9yQWRkKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQg
dm0sIFNpbWRMYW5lIGxhbmUpCisgICAgeworICAgICAgICBpbnNuKDBiMDEwMDExMTAwMDEwMDAw
MDEwMDAwMTAwMDAwMDAwMDAgfCAoc2l6ZUZvckludGVncmFsU2ltZE9wKGxhbmUpIDw8IDIyKSB8
ICh2bSA8PCAxNikgfCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHVyaGFkZChGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdpc3Rl
cklEIHZtLCBTaW1kTGFuZSBsYW5lKQorICAgIHsKKyAgICAgICAgaW5zbigwYjAxMTAxMTEwMDAx
MDAwMDAwMDAxMDEwMDAwMDAwMDAwIHwgKHNpemVGb3JJbnRlZ3JhbFNpbWRPcChsYW5lKSA8PCAy
MikgfCAodm0gPDwgMTYpIHwgKHZuIDw8IDUpIHwgdmQpOworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBhZGRwdihGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdp
c3RlcklEIHZtLCBTaW1kTGFuZSBsYW5lKQorICAgIHsKKyAgICAgICAgaW5zbigwYjAxMDAxMTEw
MDAxMDAwMDAxMDExMTEwMDAwMDAwMDAwIHwgKHNpemVGb3JJbnRlZ3JhbFNpbWRPcChsYW5lKSA8
PCAyMikgfCAodm0gPDwgMTYpIHwgKHZuIDw8IDUpIHwgdmQpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBhZGR2KEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBTaW1k
TGFuZSBsYW5lKQorICAgIHsKKyAgICAgICAgaW5zbigwYjAxMDAwMDAwMDAxMTAwMDExMDExMTAw
MDAwMDAwMDAwIHwgKHNpemVGb3JJbnRlZ3JhbFNpbWRPcChsYW5lKSA8PCAyMikgfCAodm4gPDwg
NSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHZlY3RvclN1YihGUFJl
Z2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdpc3RlcklEIHZtLCBTaW1kTGFuZSBs
YW5lKQorICAgIHsKKyAgICAgICAgaW5zbigwYjAxMTAxMTEwMDAxMDAwMDAxMDAwMDEwMDAwMDAw
MDAwIHwgKHNpemVGb3JJbnRlZ3JhbFNpbWRPcChsYW5lKSA8PCAyMikgfCAodm0gPDwgMTYpIHwg
KHZuIDw8IDUpIHwgdmQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCB2ZWN0b3JN
dWwoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2bSwgU2lt
ZExhbmUgbGFuZSkKKyAgICB7CisgICAgICAgIC8vIE9PUFM6IGZpZ3VyZSB0aGlzIG91dCBmb3Ig
aTY0eDIKKyAgICAgICAgLy8gb29wczogTVVMCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxhbmUg
IT0gU2ltZExhbmU6Omk2NHgyKTsKKyAgICAgICAgaW5zbigwYjAxMDAxMTEwMDAxMDAwMDAxMDAx
MTEwMDAwMDAwMDAwIHwgKHNpemVGb3JJbnRlZ3JhbFNpbWRPcChsYW5lKSA8PCAyMikgfCAodm0g
PDwgMTYpIHwgKHZuIDw8IDUpIHwgdmQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzbXVsbHYoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2
bSwgU2ltZExhbmUgaW5wdXRMYW5lLCBib29sIFEgPSAwLCBib29sIFUgPSAwKQorICAgIHsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaW5wdXRMYW5lICE9IFNpbWRMYW5lOjppNjR4MiAmJiBzY2Fs
YXJUeXBlSXNJbnRlZ3JhbChpbnB1dExhbmUpKTsKKyAgICAgICAgaW5zbigwYjAwMDAxMTEwMDAx
MDAwMDAxMTAwMDAwMDAwMDAwMDAwIHwgKFEgPDwgMzApIHwgKFUgPDwgMjkpIHwgKHNpemVGb3JJ
bnRlZ3JhbFNpbWRPcChpbnB1dExhbmUpIDw8IDIyKSB8ICh2bSA8PCAxNikgfCAodm4gPDwgNSkg
fCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNtdWxsMnYoRlBSZWdpc3Rl
cklEIHZkLCBGUFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2bSwgU2ltZExhbmUgaW5wdXRM
YW5lKSB7IHNtdWxsdih2ZCwgdm4sIHZtLCBpbnB1dExhbmUsIDEsIDApOyB9CisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHVtdWxsdihGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBS
ZWdpc3RlcklEIHZtLCBTaW1kTGFuZSBpbnB1dExhbmUpIHsgc211bGx2KHZkLCB2biwgdm0sIGlu
cHV0TGFuZSwgMCwgMSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW11bGwydihGUFJlZ2lz
dGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdpc3RlcklEIHZtLCBTaW1kTGFuZSBpbnB1
dExhbmUpIHsgc211bGx2KHZkLCB2biwgdm0sIGlucHV0TGFuZSwgMSwgMSk7IH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzcXJkbWxhaHYoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQg
dm4sIEZQUmVnaXN0ZXJJRCB2bSwgU2ltZExhbmUgbGFuZSkKKyAgICB7CisgICAgICAgIC8vIFNp
Z25lZCBTYXR1cmF0aW5nIFJvdW5kaW5nIERvdWJsaW5nIE11bHRpcGx5IEFjY3VtdWxhdGUgcmV0
dXJuaW5nIEhpZ2ggSGFsZiAodmVjdG9yKQorICAgICAgICBSRUxFQVNFX0FTU0VSVChsYW5lID09
IFNpbWRMYW5lOjppMTZ4OCk7CisgICAgICAgIGluc24oMGIwMTEwMTExMDAwMDAwMDAwMTAwMDAx
MDAwMDAwMDAwMCB8IChzaXplRm9ySW50ZWdyYWxTaW1kT3AobGFuZSkgPDwgMjIpIHwgKHZtIDw8
IDE2KSB8ICh2biA8PCA1KSB8IHZkKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
dmVjdG9yRmFkZChGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdpc3RlcklE
IHZtLCBTaW1kTGFuZSBsYW5lKQorICAgIHsKKyAgICAgICAgaW5zbigwYjAxMDAxMTEwMDAxMDAw
MDAxMTAxMDEwMDAwMDAwMDAwIHwgKHNpemVGb3JGbG9hdGluZ1BvaW50U2ltZE9wKGxhbmUpIDw8
IDIyKSB8ICh2bSA8PCAxNikgfCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHZlY3RvckZzdWIoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQgdm4s
IEZQUmVnaXN0ZXJJRCB2bSwgU2ltZExhbmUgbGFuZSkKKyAgICB7CisgICAgICAgIGluc24oMGIw
MTAwMTExMDEwMTAwMDAwMTEwMTAxMDAwMDAwMDAwMCB8IChzaXplRm9yRmxvYXRpbmdQb2ludFNp
bWRPcChsYW5lKSA8PCAyMikgfCAodm0gPDwgMTYpIHwgKHZuIDw8IDUpIHwgdmQpOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCB2ZWN0b3JGbXVsKEZQUmVnaXN0ZXJJRCB2ZCwgRlBS
ZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdm0sIFNpbWRMYW5lIGxhbmUpCisgICAgeworICAg
ICAgICBpbnNuKDBiMDExMDExMTAwMDEwMDAwMDExMDExMTAwMDAwMDAwMDAgfCAoc2l6ZUZvckZs
b2F0aW5nUG9pbnRTaW1kT3AobGFuZSkgPDwgMjIpIHwgKHZtIDw8IDE2KSB8ICh2biA8PCA1KSB8
IHZkKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdmVjdG9yRmRpdihGUFJlZ2lz
dGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdpc3RlcklEIHZtLCBTaW1kTGFuZSBsYW5l
KQorICAgIHsKKyAgICAgICAgaW5zbigwYjAxMTAxMTEwMDAxMDAwMDAxMTExMTEwMDAwMDAwMDAw
IHwgKHNpemVGb3JGbG9hdGluZ1BvaW50U2ltZE9wKGxhbmUpIDw8IDIyKSB8ICh2bSA8PCAxNikg
fCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHVtYXgo
RlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2bSwgU2ltZExh
bmUgbGFuZSkKKyAgICB7CisgICAgICAgIGluc24oMGIwMTEwMTExMDAwMTAwMDAwMDExMDAxMDAw
MDAwMDAwMCB8IChzaXplRm9ySW50ZWdyYWxTaW1kT3AobGFuZSkgPDwgMjIpIHwgKHZtIDw8IDE2
KSB8ICh2biA8PCA1KSB8IHZkKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBkZXN0
U2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW1heHYoRlBSZWdpc3RlcklEIHZkLCBGUFJl
Z2lzdGVySUQgdm4pCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KGRlc3RTaXplID09IDgg
fHwgZGVzdFNpemUgPT0gMTYgfHwgZGVzdFNpemUgPT0gMzIpOworICAgICAgICBjb25zdCB1bnNp
Z25lZCBRID0gMTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2l6ZSA9IGRlc3RTaXplID09IDgg
PyAwIDogZGVzdFNpemUgPT0gMTYgPyAxIDogMjsKKyAgICAgICAgaW5zbigwYjAwMTAxMTEwMDAx
MTAwMDAxMDEwMTAwMDAwMDAwMDAwIHwgKFEgPDwgMzApIHwgKHNpemUgPDwgMjIpfCAodm4gPDwg
NSkgfCB2ZCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dW5zaWduZWQgZGVzdFNpemU+CisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHVtaW52KEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZu
KQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChkZXN0U2l6ZSA9PSA4IHx8IGRlc3RTaXpl
ID09IDE2IHx8IGRlc3RTaXplID09IDMyKTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgUSA9IDE7
CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNpemUgPSBkZXN0U2l6ZSA9PSA4ID8gMCA6IGRlc3RT
aXplID09IDE2ID8gMSA6IDI7CisgICAgICAgIGluc24oMGIwMDEwMTExMDAwMTEwMDAxMTAxMDEw
MDAwMDAwMDAwMCB8IChRIDw8IDMwKSB8IChzaXplIDw8IDIyKXwgKHZuIDw8IDUpIHwgdmQpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzbWF4KEZQUmVnaXN0ZXJJRCB2ZCwgRlBS
ZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdm0sIFNpbWRMYW5lIGxhbmUpCisgICAgeworICAg
ICAgICBpbnNuKDBiMDEwMDExMTAwMDEwMDAwMDAxMTAwMTAwMDAwMDAwMDAgfCAoc2l6ZUZvcklu
dGVncmFsU2ltZE9wKGxhbmUpIDw8IDIyKSB8ICh2bSA8PCAxNikgfCAodm4gPDwgNSkgfCB2ZCk7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHVtaW4oRlBSZWdpc3RlcklEIHZkLCBG
UFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2bSwgU2ltZExhbmUgbGFuZSkKKyAgICB7Cisg
ICAgICAgIGluc24oMGIwMTEwMTExMDAwMTAwMDAwMDExMDExMDAwMDAwMDAwMCB8IChzaXplRm9y
SW50ZWdyYWxTaW1kT3AobGFuZSkgPDwgMjIpIHwgKHZtIDw8IDE2KSB8ICh2biA8PCA1KSB8IHZk
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc21pbihGUFJlZ2lzdGVySUQgdmQs
IEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdpc3RlcklEIHZtLCBTaW1kTGFuZSBsYW5lKQorICAgIHsK
KyAgICAgICAgaW5zbigwYjAxMDAxMTEwMDAxMDAwMDAwMTEwMTEwMDAwMDAwMDAwIHwgKHNpemVG
b3JJbnRlZ3JhbFNpbWRPcChsYW5lKSA8PCAyMikgfCAodm0gPDwgMTYpIHwgKHZuIDw8IDUpIHwg
dmQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCB2ZWN0b3JGbWF4KEZQUmVnaXN0
ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdm0sIFNpbWRMYW5lIGxhbmUp
CisgICAgeworICAgICAgICBpbnNuKDBiMDEwMDExMTAwMDEwMDAwMDExMTEwMTAwMDAwMDAwMDAg
fCAoc2l6ZUZvckZsb2F0aW5nUG9pbnRTaW1kT3AobGFuZSkgPDwgMjIpIHwgKHZtIDw8IDE2KSB8
ICh2biA8PCA1KSB8IHZkKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdmVjdG9y
Rm1pbihGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdpc3RlcklEIHZtLCBT
aW1kTGFuZSBsYW5lKQorICAgIHsKKyAgICAgICAgaW5zbigwYjAxMDAxMTEwMTAxMDAwMDAxMTEx
MDEwMDAwMDAwMDAwIHwgKHNpemVGb3JGbG9hdGluZ1BvaW50U2ltZE9wKGxhbmUpIDw8IDIyKSB8
ICh2bSA8PCAxNikgfCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGJzbChGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdpc3RlcklE
IHZtKQorICAgIHsKKyAgICAgICAgaW5zbigwYjAxMTAxMTEwMDExMDAwMDAwMDAxMTEwMDAwMDAw
MDAwIHwgKHZtIDw8IDE2KSB8ICh2biA8PCA1KSB8IHZkKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgdmVjdG9yRW9yKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBG
UFJlZ2lzdGVySUQgdm0pCisgICAgeworICAgICAgICBpbnNuKDBiMDExMDExMTAwMDEwMDAwMDAw
MDExMTAwMDAwMDAwMDAgfCAodm0gPDwgMTYpIHwgKHZuIDw8IDUpIHwgdmQpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCB2ZWN0b3JBYnMoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lz
dGVySUQgdm4sIFNpbWRMYW5lIGxhbmUpCisgICAgeworICAgICAgICBpbnNuKDBiMDEwMDExMTAw
MDEwMDAwMDEwMTExMDAwMDAwMDAwMDAgfCAoc2l6ZUZvckludGVncmFsU2ltZE9wKGxhbmUpIDw8
IDIyKSB8ICh2biA8PCA1KSB8IHZkKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
dmVjdG9yRmFicyhGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgU2ltZExhbmUgbGFu
ZSkKKyAgICB7CisgICAgICAgIGluc24oMGIwMTAwMTExMDEwMTAwMDAwMTExMTEwMDAwMDAwMDAw
MCB8IChzaXplRm9yRmxvYXRpbmdQb2ludFNpbWRPcChsYW5lKSA8PCAyMikgfCAodm4gPDwgNSkg
fCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHZlY3Rvck5lZyhGUFJlZ2lz
dGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgU2ltZExhbmUgbGFuZSkKKyAgICB7CisgICAgICAg
IGluc24oMGIwMDEwMTExMDAwMTAwMDAwMTAxMTEwMDAwMDAwMDAwMCB8IChzaXplRm9ySW50ZWdy
YWxTaW1kT3AobGFuZSkgPDwgMjIpIHwgKHZuIDw8IDUpIHwgdmQpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCB2ZWN0b3JGbmVnKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklE
IHZuLCBTaW1kTGFuZSBsYW5lKQorICAgIHsKKyAgICAgICAgaW5zbigwYjAxMTAxMTEwMTAxMDAw
MDAxMTExMTAwMDAwMDAwMDAwIHwgKHNpemVGb3JGbG9hdGluZ1BvaW50U2ltZE9wKGxhbmUpIDw8
IDIyKSB8ICh2biA8PCA1KSB8IHZkKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
dmVjdG9yQ250KEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBTaW1kTGFuZSBsYW5l
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxhbmUgPT0gU2ltZExhbmU6Omk4eDE2KTsKKyAgICAg
ICAgaW5zbigwYjAxMDAxMTEwMDAxMDAwMDAwMTAxMTAwMDAwMDAwMDAwIHwgKHNpemVGb3JJbnRl
Z3JhbFNpbWRPcChsYW5lKSA8PCAyMikgfCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHZlY3RvckZjdnRwcyhGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0
ZXJJRCB2biwgU2ltZExhbmUgbGFuZSkKKyAgICB7CisgICAgICAgIGluc24oMGIwMTAwMTExMDEw
MTAwMDAxMTAxMDEwMDAwMDAwMDAwMCB8IChzaXplRm9yRmxvYXRpbmdQb2ludFNpbWRPcChsYW5l
KSA8PCAyMikgfCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHZlY3RvckZjdnRtcyhGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgU2ltZExh
bmUgbGFuZSkKKyAgICB7CisgICAgICAgIGluc24oMGIwMTAwMTExMDAwMTAwMDAxMTAxMTEwMDAw
MDAwMDAwMCB8IChzaXplRm9yRmxvYXRpbmdQb2ludFNpbWRPcChsYW5lKSA8PCAyMikgfCAodm4g
PDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHZlY3RvckZyaW50
eihGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgU2ltZExhbmUgbGFuZSkKKyAgICB7
CisgICAgICAgIGluc24oMGIwMTAwMTExMDEwMTAwMDAxMTAwMTEwMDAwMDAwMDAwMCB8IChzaXpl
Rm9yRmxvYXRpbmdQb2ludFNpbWRPcChsYW5lKSA8PCAyMikgfCAodm4gPDwgNSkgfCB2ZCk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHZlY3RvckZjdnRucyhGUFJlZ2lzdGVySUQg
dmQsIEZQUmVnaXN0ZXJJRCB2biwgU2ltZExhbmUgbGFuZSkKKyAgICB7CisgICAgICAgIGluc24o
MGIwMTAwMTExMDAwMTAwMDAxMTAxMDEwMDAwMDAwMDAwMCB8IChzaXplRm9yRmxvYXRpbmdQb2lu
dFNpbWRPcChsYW5lKSA8PCAyMikgfCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHZlY3RvckZzcXJ0KEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklE
IHZuLCBTaW1kTGFuZSBsYW5lKQorICAgIHsKKyAgICAgICAgaW5zbigwYjAxMTAxMTEwMTAxMDAw
MDExMTExMTAwMDAwMDAwMDAwIHwgKHNpemVGb3JGbG9hdGluZ1BvaW50U2ltZE9wKGxhbmUpIDw8
IDIyKSB8ICh2biA8PCA1KSB8IHZkKTsKKyAgICB9CisKKyAgICBzdGF0aWMgaW50IGltbWhGb3JF
eHRlbmQoU2ltZExhbmUgbGFuZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoZWxlbWVudEJ5dGVT
aXplKGxhbmUpKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHJldHVybiAwYjAwMDE7
CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHJldHVybiAwYjAwMTA7CisgICAgICAgIGNh
c2UgNDoKKyAgICAgICAgICAgIHJldHVybiAwYjAxMDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQor
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHV4dGwoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVy
SUQgdm4sIFNpbWRMYW5lIGxhbmUpCisgICAgeworICAgICAgICBpbnNuKDBiMDAxMDExMTEwMDAw
MDAwMDEwMTAwMTAwMDAwMDAwMDAgfCAoaW1taEZvckV4dGVuZChsYW5lKSA8PCAxOSkgfCAodm4g
PDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHV4dGwyKEZQUmVn
aXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBTaW1kTGFuZSBsYW5lKQorICAgIHsKKyAgICAg
ICAgaW5zbigwYjAxMTAxMTExMDAwMDAwMDAxMDEwMDEwMDAwMDAwMDAwIHwgKGltbWhGb3JFeHRl
bmQobGFuZSkgPDwgMTkpIHwgKHZuIDw8IDUpIHwgdmQpOworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzeHRsKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBTaW1kTGFu
ZSBsYW5lKQorICAgIHsKKyAgICAgICAgaW5zbigwYjAwMDAxMTExMDAwMDAwMDAxMDEwMDEwMDAw
MDAwMDAwIHwgKGltbWhGb3JFeHRlbmQobGFuZSkgPDwgMTkpIHwgKHZuIDw8IDUpIHwgdmQpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzeHRsMihGUFJlZ2lzdGVySUQgdmQsIEZQ
UmVnaXN0ZXJJRCB2biwgU2ltZExhbmUgbGFuZSkKKyAgICB7CisgICAgICAgIGluc24oMGIwMTAw
MTExMTAwMDAwMDAwMTAxMDAxMDAwMDAwMDAwMCB8IChpbW1oRm9yRXh0ZW5kKGxhbmUpIDw8IDE5
KSB8ICh2biA8PCA1KSB8IHZkKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmN2
dGwoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQgdm4sIFNpbWRMYW5lIGxhbmUpCisgICAg
eworICAgICAgICAvLyBDb252ZXJ0IGxvd2VyIHR3byBmMzJzIGludG8gdHdvIGY2NHMsIHNvIHN6
IGJpdCA9PSAxCisgICAgICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgaW5wdXQgbGFuZSwgbm90
IHRoZSBvdXRwdXQuIAorICAgICAgICAvLyBUaGUgaW5zdHJ1Y3Rpb24gZW5jb2RlcyBpbnB1dCBl
bGVtZW50IHNpemUgYXMgMTYgPDwgc3pfYml0CisgICAgICAgIEFTU0VSVF9VTlVTRUQobGFuZSwg
bGFuZSA9PSBTaW1kTGFuZTo6ZjMyeDQpOworICAgICAgICBpbnNuKDBiMDAwMDExMTAwMTEwMDAw
MTAxMTExMDAwMDAwMDAwMDAgfCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIGZjdnRuKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBTaW1k
TGFuZSBsYW5lKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxhbmUgPT0gU2ltZExhbmU6OmY2NHgy
KTsKKyAgICAgICAgLy8gQ29udmVydCB0d28gZjY0cyBpbnRvIHRoZSB0d28gbG93ZXIgZjMycwor
ICAgICAgICBpbnNuKDBiMDAwMDExMTAwMTEwMDAwMTAxMTAxMDAwMDAwMDAwMDAgfCAodm4gPDwg
NSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNxeHRuKEZQUmVnaXN0
ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBTaW1kTGFuZSBpbnB1dExhbmUpCisgICAgeworICAg
ICAgICBTaW1kTGFuZSBsYW5lID0gbmFycm93ZWRMYW5lKGlucHV0TGFuZSk7CisgICAgICAgIGlu
c24oMGIwMDAwMTExMDAwMTAwMDAxMDEwMDEwMDAwMDAwMDAwMCB8IChzaXplRm9ySW50ZWdyYWxT
aW1kT3AobGFuZSkgPDwgMjIpIHwgKHZuIDw8IDUpIHwgdmQpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzcXh0bjIoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQgdm4sIFNp
bWRMYW5lIGlucHV0TGFuZSkKKyAgICB7CisgICAgICAgIFNpbWRMYW5lIGxhbmUgPSBuYXJyb3dl
ZExhbmUoaW5wdXRMYW5lKTsKKyAgICAgICAgaW5zbigwYjAxMDAxMTEwMDAxMDAwMDEwMTAwMTAw
MDAwMDAwMDAwIHwgKHNpemVGb3JJbnRlZ3JhbFNpbWRPcChsYW5lKSA8PCAyMikgfCAodm4gPDwg
NSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNxeHR1bihGUFJlZ2lz
dGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgU2ltZExhbmUgaW5wdXRMYW5lKQorICAgIHsKKyAg
ICAgICAgU2ltZExhbmUgbGFuZSA9IG5hcnJvd2VkTGFuZShpbnB1dExhbmUpOworICAgICAgICBp
bnNuKDBiMDAxMDExMTAwMDEwMDAwMTAwMTAxMDAwMDAwMDAwMDAgfCAoc2l6ZUZvckludGVncmFs
U2ltZE9wKGxhbmUpIDw8IDIyKSB8ICh2biA8PCA1KSB8IHZkKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc3F4dHVuMihGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwg
U2ltZExhbmUgaW5wdXRMYW5lKQorICAgIHsKKyAgICAgICAgU2ltZExhbmUgbGFuZSA9IG5hcnJv
d2VkTGFuZShpbnB1dExhbmUpOworICAgICAgICBpbnNuKDBiMDExMDExMTAwMDEwMDAwMTAwMTAx
MDAwMDAwMDAwMDAgfCAoc2l6ZUZvckludGVncmFsU2ltZE9wKGxhbmUpIDw8IDIyKSB8ICh2biA8
PCA1KSB8IHZkKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdXNobChGUFJlZ2lz
dGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdpc3RlcklEIHZtLCBTaW1kTGFuZSBsYW5l
KQorICAgIHsKKyAgICAgICAgaW5zbigwYjAxMTAxMTEwMDAxMDAwMDAwMTAwMDEwMDAwMDAwMDAw
IHwgKHNpemVGb3JJbnRlZ3JhbFNpbWRPcChsYW5lKSA8PCAyMikgfCAodm0gPDwgMTYpIHwgKHZu
IDw8IDUpIHwgdmQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzc2hsKEZQUmVn
aXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdm0sIFNpbWRMYW5lIGxh
bmUpCisgICAgeworICAgICAgICBpbnNuKDBiMDEwMDExMTAwMDEwMDAwMDAxMDAwMTAwMDAwMDAw
MDAgfCAoc2l6ZUZvckludGVncmFsU2ltZE9wKGxhbmUpIDw8IDIyKSB8ICh2bSA8PCAxNikgfCAo
dm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNzaHJfdmko
RlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQgdm4sIHVpbnQ4X3Qgc2hpZnQsIFNpbWRMYW5l
IGxhbmUpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChzaGlmdCA8IGVsZW1lbnRCeXRl
U2l6ZShsYW5lKSAqIDggJiYgc2hpZnQgPCA2NCk7CisgICAgICAgIHVuc2lnbmVkIGltbWggPSBl
bGVtZW50Qnl0ZVNpemUobGFuZSkgfCAoKHNoaWZ0ICYgMHgxMTExMDAwKSA+PiAzKTsKKyAgICAg
ICAgdW5zaWduZWQgaW1tYiA9IHNoaWZ0ICYgMGIwMTExOworICAgICAgICBpbnNuKGxhbmUgPT0g
U2ltZExhbmU6OnYxMjggPyAwYjAxMDExMTExMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwIDogMGIw
MTAwMTExMTAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAgfCAoaW1taCA8PCAxOSkgfCAoaW1tYiA8
PCAxNikgfCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNxYWRkKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdm0s
IFNpbWRMYW5lIGxhbmUpCisgICAgeworICAgICAgICBpbnNuKDBiMDEwMDExMTAwMDEwMDAwMDAw
MDAxMTAwMDAwMDAwMDAgfCAoc2l6ZUZvckludGVncmFsU2ltZE9wKGxhbmUpIDw8IDIyKSB8ICh2
bSA8PCAxNikgfCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNxc3ViKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQg
dm0sIFNpbWRMYW5lIGxhbmUpCisgICAgeworICAgICAgICBpbnNuKDBiMDEwMDExMTAwMDEwMDAw
MDAwMTAxMTAwMDAwMDAwMDAgfCAoc2l6ZUZvckludGVncmFsU2ltZE9wKGxhbmUpIDw8IDIyKSB8
ICh2bSA8PCAxNikgfCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHVxYWRkKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVy
SUQgdm0sIFNpbWRMYW5lIGxhbmUpCisgICAgeworICAgICAgICBpbnNuKDBiMDExMDExMTAwMDEw
MDAwMDAwMDAxMTAwMDAwMDAwMDAgfCAoc2l6ZUZvckludGVncmFsU2ltZE9wKGxhbmUpIDw8IDIy
KSB8ICh2bSA8PCAxNikgfCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHVxc3ViKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lz
dGVySUQgdm0sIFNpbWRMYW5lIGxhbmUpCisgICAgeworICAgICAgICBpbnNuKDBiMDExMDExMTAw
MDEwMDAwMDAwMTAxMTAwMDAwMDAwMDAgfCAoc2l6ZUZvckludGVncmFsU2ltZE9wKGxhbmUpIDw8
IDIyKSB8ICh2bSA8PCAxNikgfCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHZlY3RvckZjdnR6cyhGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2
biwgU2ltZExhbmUgbGFuZSkKKyAgICB7CisgICAgICAgIGluc24oMGIwMTAwMTExMDEwMTAwMDAx
MTAxMTEwMDAwMDAwMDAwMCB8IChzaXplRm9yRmxvYXRpbmdQb2ludFNpbWRPcChsYW5lKSA8PCAy
MikgfCAodm4gPDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHZl
Y3RvckZjdnR6dShGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgU2ltZExhbmUgbGFu
ZSkKKyAgICB7CisgICAgICAgIGluc24oMGIwMTEwMTExMDEwMTAwMDAxMTAxMTEwMDAwMDAwMDAw
MCB8IChzaXplRm9yRmxvYXRpbmdQb2ludFNpbWRPcChsYW5lKSA8PCAyMikgfCAodm4gPDwgNSkg
fCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHZlY3RvclNjdnRmKEZQUmVn
aXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBTaW1kTGFuZSBsYW5lKQorICAgIHsKKyAgICAg
ICAgaW5zbigwYjAxMDAxMTEwMDAxMDAwMDExMTAxMTAwMDAwMDAwMDAwIHwgKHNpemVGb3JGbG9h
dGluZ1BvaW50U2ltZE9wKGxhbmUpIDw8IDIyKSB8ICh2biA8PCA1KSB8IHZkKTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdmVjdG9yVWN2dGYoRlBSZWdpc3RlcklEIHZkLCBGUFJl
Z2lzdGVySUQgdm4sIFNpbWRMYW5lIGxhbmUpCisgICAgeworICAgICAgICBpbnNuKDBiMDExMDEx
MTAwMDEwMDAwMTExMDExMDAwMDAwMDAwMDAgfCAoc2l6ZUZvckZsb2F0aW5nUG9pbnRTaW1kT3Ao
bGFuZSkgPDwgMjIpIHwgKHZuIDw8IDUpIHwgdmQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCB0YmwoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJ
RCB2bSkKKyAgICB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxlbiA9IDA7CisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIFEgPSAxOworICAgICAgICBpbnNuKDBiMDAwMDExMTAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAgfCAoUSA8PCAzMCkgfCAodm0gPDwgMTYpIHwgKGxlbiA8PCAxMykgfCAodm4g
PDwgNSkgfCB2ZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHRibDIoRlBSZWdp
c3RlcklEIHZkLCBGUFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2bjIsIEZQUmVnaXN0ZXJJ
RCB2bSkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZuMiwgdm4yID09IHZuICsgMSk7
CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxlbiA9IDE7CisgICAgICAgIGNvbnN0IHVuc2lnbmVk
IFEgPSAxOworICAgICAgICBpbnNuKDBiMDAwMDExMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAg
fCAoUSA8PCAzMCkgfCAodm0gPDwgMTYpIHwgKGxlbiA8PCAxMykgfCAodm4gPDwgNSkgfCB2ZCk7
CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBsZDFyKEZQUmVnaXN0ZXJJRCB2dCwgUmVnaXN0ZXJJRCBybikKKyAgICB7CisgICAgICAg
IENIRUNLX01FTU9QU0laRSgpOworICAgICAgICBpbnQgc2l6ZUVuY29kaW5nOworICAgICAgICBz
d2l0Y2ggKGRhdGFzaXplKSB7CisgICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgIHNpemVFbmNv
ZGluZyA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxNjoKKyAgICAgICAg
ICAgIHNpemVFbmNvZGluZyA9IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAz
MjoKKyAgICAgICAgICAgIHNpemVFbmNvZGluZyA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSA2NDoKKyAgICAgICAgICAgIHNpemVFbmNvZGluZyA9IDM7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBpbnNuKDBiMDEwMDExMDEwMTAwMDAw
MDExMDAwMDAwMDAwMDAwMDAgfCAoc2l6ZUVuY29kaW5nIDw8IDEwKSB8IChybiA8PCA1KSB8IHZ0
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGxkMShGUFJlZ2lzdGVySUQgdnQsIFJlZ2lzdGVySUQgcm4sIGludDMyX3QgbGFuZUlu
ZGV4KQorICAgIHsKKyAgICAgICAgQ0hFQ0tfTUVNT1BTSVpFKCk7CisgICAgICAgIGludCBvcGNv
ZGU7CisgICAgICAgIGludCBROyAvLyAxIGJpdAorICAgICAgICBpbnQgUzsgLy8gMSBiaXQKKyAg
ICAgICAgaW50IHNpemU7IC8vIDIgYml0cworICAgICAgICBzd2l0Y2ggKGRhdGFzaXplKSB7Cisg
ICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxhbmVJbmRleCA8IDE2
KTsKKyAgICAgICAgICAgIG9wY29kZSA9IDA7CisgICAgICAgICAgICAvLyBFbmNvZGUgaW5kZXgg
aW4sIFE6UzpzaXplCisgICAgICAgICAgICBRID0gbGFuZUluZGV4ICYgMGIxMDAwOworICAgICAg
ICAgICAgUyA9IGxhbmVJbmRleCAmIDBiMDEwMDsKKyAgICAgICAgICAgIHNpemUgPSBsYW5lSW5k
ZXggJiAwYjAwMTE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxNjoKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGxhbmVJbmRleCA8IDgpOworICAgICAgICAgICAgLy8gRW5j
b2RlIGluZGV4IGluLCBROlM6c2l6ZTwxPgorICAgICAgICAgICAgUSA9IGxhbmVJbmRleCAmIDBi
MTAwOworICAgICAgICAgICAgUyA9IGxhbmVJbmRleCAmIDBiMDEwOworICAgICAgICAgICAgc2l6
ZSA9IChsYW5lSW5kZXggJiAwYjAwMSkgPDwgMTsKKyAgICAgICAgICAgIG9wY29kZSA9IDE7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzMjoKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGxhbmVJbmRleCA8IDQpOworICAgICAgICAgICAgb3Bjb2RlID0gMjsKKyAgICAgICAg
ICAgIHNpemUgPSAwOworICAgICAgICAgICAgLy8gRW5jb2RlIGluZGV4IGluLCBROlMKKyAgICAg
ICAgICAgIFEgPSBsYW5lSW5kZXggJiAwYjEwOworICAgICAgICAgICAgUyA9IGxhbmVJbmRleCAm
IDBiMDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA2NDoKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGxhbmVJbmRleCA8IDIpOworICAgICAgICAgICAgb3Bjb2RlID0gMjsK
KyAgICAgICAgICAgIHNpemUgPSAxOworICAgICAgICAgICAgUyA9IDA7CisgICAgICAgICAgICAv
LyBFbmNvZGUgaW5kZXggaW4sIFEKKyAgICAgICAgICAgIFEgPSBsYW5lSW5kZXggJiAwYjE7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBpbnNuKDBiMDAwMDEx
MDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgfCAoUSA8PCAzMCkgfCAob3Bjb2RlIDw8IDE0KSB8
IChTIDw8IDEyKSB8IChzaXplIDw8IDEwKSB8IChybiA8PCA1KSB8IHZ0KTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0MShGUFJl
Z2lzdGVySUQgdnQsIFJlZ2lzdGVySUQgcm4sIGludDMyX3QgbGFuZUluZGV4KQorICAgIHsKKyAg
ICAgICAgQ0hFQ0tfTUVNT1BTSVpFKCk7CisgICAgICAgIGludCBvcGNvZGU7CisgICAgICAgIGlu
dCBROyAvLyAxIGJpdAorICAgICAgICBpbnQgUzsgLy8gMSBiaXQKKyAgICAgICAgaW50IHNpemU7
IC8vIDIgYml0cworICAgICAgICBzd2l0Y2ggKGRhdGFzaXplKSB7CisgICAgICAgIGNhc2UgODoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxhbmVJbmRleCA8IDE2KTsKKyAgICAgICAgICAg
IG9wY29kZSA9IDA7CisgICAgICAgICAgICAvLyBFbmNvZGUgaW5kZXggaW4sIFE6UzpzaXplCisg
ICAgICAgICAgICBRID0gbGFuZUluZGV4ICYgMGIxMDAwOworICAgICAgICAgICAgUyA9IGxhbmVJ
bmRleCAmIDBiMDEwMDsKKyAgICAgICAgICAgIHNpemUgPSBsYW5lSW5kZXggJiAwYjAwMTE7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxNjoKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGxhbmVJbmRleCA8IDgpOworICAgICAgICAgICAgLy8gRW5jb2RlIGluZGV4IGluLCBR
OlM6c2l6ZTwxPgorICAgICAgICAgICAgUSA9IGxhbmVJbmRleCAmIDBiMTAwOworICAgICAgICAg
ICAgUyA9IGxhbmVJbmRleCAmIDBiMDEwOworICAgICAgICAgICAgc2l6ZSA9IChsYW5lSW5kZXgg
JiAwYjAwMSkgPDwgMTsKKyAgICAgICAgICAgIG9wY29kZSA9IDE7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAzMjoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxhbmVJbmRl
eCA8IDQpOworICAgICAgICAgICAgb3Bjb2RlID0gMjsKKyAgICAgICAgICAgIHNpemUgPSAwOwor
ICAgICAgICAgICAgLy8gRW5jb2RlIGluZGV4IGluLCBROlMKKyAgICAgICAgICAgIFEgPSBsYW5l
SW5kZXggJiAwYjEwOworICAgICAgICAgICAgUyA9IGxhbmVJbmRleCAmIDBiMDE7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSA2NDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGxhbmVJbmRleCA8IDIpOworICAgICAgICAgICAgb3Bjb2RlID0gMjsKKyAgICAgICAgICAgIHNp
emUgPSAxOworICAgICAgICAgICAgUyA9IDA7CisgICAgICAgICAgICAvLyBFbmNvZGUgaW5kZXgg
aW4sIFEKKyAgICAgICAgICAgIFEgPSBsYW5lSW5kZXggJiAwYjE7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBpbnNuKDBiMCcwJzAwMTEwMTAnMCcwJzAwMDAw
MDAwMDAwMDAwMDAwMDAwMCB8IChRIDw8IDMwKSB8IChvcGNvZGUgPDwgMTQpIHwgKFMgPDwgMTIp
IHwgKHNpemUgPDwgMTApIHwgKHJuIDw8IDUpIHwgdnQpOworICAgIH0KKwogICAgIHRlbXBsYXRl
PGludCBkYXRhc2l6ZT4KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbW92KFJlZ2lzdGVySUQgcmQs
IFJlZ2lzdGVySUQgcm0pCiAgICAgewpAQCAtMjM5NywxNCArMzAwOCwyMSBAQCBwdWJsaWM6CiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHZhbmQoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQg
dm4sIEZQUmVnaXN0ZXJJRCB2bSkKICAgICB7CiAgICAgICAgIENIRUNLX1ZFQ1RPUl9EQVRBU0la
RSgpOwotICAgICAgICBpbnNuKHZlY3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbChTSU1EX0xvZ2lj
YWxPcF9BTkQsIHZtLCB2biwgdmQpKTsKKyAgICAgICAgaW5zbih2ZWN0b3JEYXRhUHJvY2Vzc2lu
Z0xvZ2ljYWwoZGF0YXNpemUsIFNJTURfTG9naWNhbE9wX0FORCwgdm0sIHZuLCB2ZCkpOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
dm9ycihGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdpc3RlcklEIHZtKQog
ICAgIHsKICAgICAgICAgQ0hFQ0tfVkVDVE9SX0RBVEFTSVpFKCk7Ci0gICAgICAgIGluc24odmVj
dG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsKFNJTURfTG9naWNhbE9wX09SUiwgdm0sIHZuLCB2ZCkp
OworICAgICAgICBpbnNuKHZlY3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbChkYXRhc2l6ZSwgU0lN
RF9Mb2dpY2FsT3BfT1JSLCB2bSwgdm4sIHZkKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50
IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB2YmljKEZQUmVnaXN0ZXJJRCB2ZCwg
RlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdm0pCisgICAgeworICAgICAgICBDSEVDS19W
RUNUT1JfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbih2ZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2lj
YWwoZGF0YXNpemUsIFNJTURfTG9naWNhbE9wX0JJQywgdm0sIHZuLCB2ZCkpOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KQEAgLTM1ODAsOSArNDE5OCw5IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgcmV0dXJuICgweDFlMjAwODAwIHwgTSA8PCAzMSB8IFMgPDwgMjkgfCB0eXBl
IDw8IDIyIHwgcm0gPDwgMTYgfCBvcGNvZGUgPDwgMTIgfCBybiA8PCA1IHwgcmQpOwogICAgIH0K
IAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGludCB2ZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2lj
YWwoU0lNRDNTYW1lTG9naWNhbCB1QW5kU2l6ZSwgRlBSZWdpc3RlcklEIHZtLCBGUFJlZ2lzdGVy
SUQgdm4sIEZQUmVnaXN0ZXJJRCB2ZCkKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQgdmVj
dG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsKGludCBkYXRhc2l6ZSwgU0lNRDNTYW1lTG9naWNhbCB1
QW5kU2l6ZSwgRlBSZWdpc3RlcklEIHZtLCBGUFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2
ZCkKICAgICB7Ci0gICAgICAgIGNvbnN0IGludCBRID0gMDsKKyAgICAgICAgaW50IFEgPSBkYXRh
c2l6ZSA9PSAxMjg7CiAgICAgICAgIHJldHVybiAoMHhlMjAwNDAwIHwgUSA8PCAzMCB8IHVBbmRT
aXplIDw8IDIyIHwgdm0gPDwgMTYgfCBTSU1EX0xvZ2ljYWxPcCA8PCAxMSB8IHZuIDw8IDUgfCB2
ZCk7CiAgICAgfQogCkBAIC0zODQ0LDYgKzQ0NjIsMTggQEAgcHJvdGVjdGVkOgogICAgIHsKICAg
ICAgICAgcmV0dXJuIDB4MWU3ZTAwMDAgfCAoZG4gPDwgNSkgfCByZDsKICAgICB9CisgICAgCisg
ICAgc3RhdGljIGludCBzaW1kR2VuZXJhbChib29sIFEsIGludCBpbW01LCBpbnQgaW1tNCwgaW50
IHJuLCBpbnQgcmQpCisgICAgeworICAgICAgICByZXR1cm4gMGIwJzAnMCcwMTExMDAwMCcwMDAw
MCcwJzAwJzEnMScxJzAwMDAwJzAwMDAwIHwgKFEgPDwgMzApIHwgKGltbTUgPDwgMTYpIHwgKGlt
bTQgPDwgMTEpIHwgKHJuIDw8IDUpIHwgcmQ7CisgICAgfQorCisgICAgc3RhdGljIGludCBzaW1k
RmxvYXRpbmdQb2ludFZlY3RvckNvbXBhcmUoYm9vbCBVLCBib29sIEUsIGJvb2wgYWMsIFNpbWRM
YW5lIGxhbmUsIEZQUmVnaXN0ZXJJRCByZCwgRlBSZWdpc3RlcklEIHJuLCBGUFJlZ2lzdGVySUQg
cm0pCisgICAgeworICAgICAgICBib29sIHN6ID0gc2l6ZUZvckZsb2F0aW5nUG9pbnRTaW1kT3Ao
bGFuZSk7CisgICAgICAgIGludCBpbnNuID0gMGIwMTAwMTExMDAwMTAwMDAwMTExMDAxMDAwMDAw
MDAwMCB8IChVIDw8IDI5KSB8IChFIDw8IDIzKSB8IChzeiA8PCAyMikgfCAocm0gPDwgMTYpIHwg
KGFjIDw8IDExKSB8IChybiA8PCA1KSB8IHJkOworICAgICAgICByZXR1cm4gaW5zbjsKKyAgICB9
CiAKICAgICBWZWN0b3I8TGlua1JlY29yZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fanVt
cHNUb0xpbms7CiAgICAgaW50IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGYxZmY2Mzk0
YzlmNC4uMzlhNGY5Mzg5NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0yOSw2ICsyOSwzMiBAQAogCiAjaW5jbHVkZSAiSlND
SlNWYWx1ZS5oIgogCisjZGVmaW5lIERFRklORV9TSU1EX0ZVTkMobmFtZSwgZnVuYywgbGFuZSkg
XAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSAuLi5BcmdzPiBcCisgICAgdm9pZCBuYW1lKEFyZ3Mm
Ji4uLiBhcmdzKSB7IGZ1bmMobGFuZSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsgfQor
CisjZGVmaW5lIERFRklORV9TSU1EX0ZVTkNfV0lUSF9TSUdOX0VYVEVORF9NT0RFKG5hbWUsIGZ1
bmMsIGxhbmUsIG1vZGUpIFwKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgLi4uQXJncz4gXAorICAg
IHZvaWQgbmFtZShBcmdzJiYuLi4gYXJncykgeyBmdW5jKGxhbmUsIG1vZGUsIHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLik7IH0KKworI2RlZmluZSBERUZJTkVfU0lNRF9GVU5DUyhuYW1lKSBc
CisgICAgREVGSU5FX1NJTURfRlVOQyhuYW1lIyNJbnQ4LCBuYW1lLCBTaW1kTGFuZTo6aTh4MTYp
IFwKKyAgICBERUZJTkVfU0lNRF9GVU5DKG5hbWUjI0ludDE2LCBuYW1lLCBTaW1kTGFuZTo6aTE2
eDgpIFwKKyAgICBERUZJTkVfU0lNRF9GVU5DKG5hbWUjI0ludDMyLCBuYW1lLCBTaW1kTGFuZTo6
aTMyeDQpIFwKKyAgICBERUZJTkVfU0lNRF9GVU5DKG5hbWUjI0ludDY0LCBuYW1lLCBTaW1kTGFu
ZTo6aTY0eDIpIFwKKyAgICBERUZJTkVfU0lNRF9GVU5DKG5hbWUjI0Zsb2F0MzIsIG5hbWUsIFNp
bWRMYW5lOjpmMzJ4NCkgXAorICAgIERFRklORV9TSU1EX0ZVTkMobmFtZSMjRmxvYXQ2NCwgbmFt
ZSwgU2ltZExhbmU6OmY2NHgyKQorCisjZGVmaW5lIERFRklORV9TSUdORURfU0lNRF9GVU5DUyhu
YW1lKSBcCisgICAgREVGSU5FX1NJTURfRlVOQ19XSVRIX1NJR05fRVhURU5EX01PREUobmFtZSMj
U2lnbmVkSW50OCwgbmFtZSwgU2ltZExhbmU6Omk4eDE2LCBTaW1kU2lnbk1vZGU6OlNpZ25lZCkg
XAorICAgIERFRklORV9TSU1EX0ZVTkNfV0lUSF9TSUdOX0VYVEVORF9NT0RFKG5hbWUjI1Vuc2ln
bmVkSW50OCwgbmFtZSwgU2ltZExhbmU6Omk4eDE2LCBTaW1kU2lnbk1vZGU6OlVuc2lnbmVkKSBc
CisgICAgREVGSU5FX1NJTURfRlVOQ19XSVRIX1NJR05fRVhURU5EX01PREUobmFtZSMjU2lnbmVk
SW50MTYsIG5hbWUsIFNpbWRMYW5lOjppMTZ4OCwgU2ltZFNpZ25Nb2RlOjpTaWduZWQpIFwKKyAg
ICBERUZJTkVfU0lNRF9GVU5DX1dJVEhfU0lHTl9FWFRFTkRfTU9ERShuYW1lIyNVbnNpZ25lZElu
dDE2LCBuYW1lLCBTaW1kTGFuZTo6aTE2eDgsIFNpbWRTaWduTW9kZTo6VW5zaWduZWQpIFwKKyAg
ICBERUZJTkVfU0lNRF9GVU5DX1dJVEhfU0lHTl9FWFRFTkRfTU9ERShuYW1lIyNJbnQzMiwgbmFt
ZSwgU2ltZExhbmU6OmkzMng0LCBTaW1kU2lnbk1vZGU6Ok5vbmUpIFwKKyAgICBERUZJTkVfU0lN
RF9GVU5DX1dJVEhfU0lHTl9FWFRFTkRfTU9ERShuYW1lIyNJbnQ2NCwgbmFtZSwgU2ltZExhbmU6
Omk2NHgyLCBTaW1kU2lnbk1vZGU6Ok5vbmUpIFwKKyAgICBERUZJTkVfU0lNRF9GVU5DKG5hbWUj
I0Zsb2F0MzIsIG5hbWUsIFNpbWRMYW5lOjpmMzJ4NCkgXAorICAgIERFRklORV9TSU1EX0ZVTkMo
bmFtZSMjRmxvYXQ2NCwgbmFtZSwgU2ltZExhbmU6OmY2NHgyKQorCiAjaWYgQ1BVKEFSTV9USFVN
QjIpCiAjZGVmaW5lIFRBUkdFVF9BU1NFTUJMRVIgQVJNdjdBc3NlbWJsZXIKICNkZWZpbmUgVEFS
R0VUX01BQ1JPQVNTRU1CTEVSIE1hY3JvQXNzZW1ibGVyQVJNdjcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggNjMz
NzczYWVlYzlkLi4zNGRmNTE3OTljZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0yNSwxMSArMjUsMTMgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJ3dGYvQXNzZXJ0aW9ucy5oIgogI2lmIEVOQUJM
RShBU1NFTUJMRVIpCiAKICNpbmNsdWRlICJBUk02NEFzc2VtYmxlci5oIgogI2luY2x1ZGUgIkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25WYWxpZGF0aW9u
LmgiCisjaW5jbHVkZSAiU2ltZEluZm8uaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTI0NDMsNiArMjQ0NSwzNSBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBtX2Fzc2VtYmxlci5mZGl2PDMyPihkZXN0LCBvcDEsIG9wMik7CiAgICAgfQorICAg
IAorICAgIHZvaWQgbG9hZFZlY3RvcihBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgaWYgKHRyeUxvYWRXaXRoT2Zmc2V0PDEyOD4oZGVzdCwgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLm9mZnNldCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
c2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVk
TWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxl
ci5sZHI8MTI4PihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAg
fQorCisgICAgdm9pZCBsb2FkVmVjdG9yKEJhc2VJbmRleCBhZGRyZXNzLCBGUFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChhZGRyZXNzLnNjYWxlID09IFRpbWVzT25lIHx8IGFk
ZHJlc3Muc2NhbGUgPT0gVGltZXNFaWdodCkgeworICAgICAgICAgICAgaWYgKGF1dG8gYmFzZUdQ
UiA9IHRyeUZvbGRCYXNlQW5kT2Zmc2V0UGFydChhZGRyZXNzKSkgeworICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmxkcjwxMjg+KGRlc3QsIGJhc2VHUFIudmFsdWUoKSwgYWRkcmVzcy5pbmRl
eCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzaWduRXh0
ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDwx
Mjg+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4
LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fz
c2VtYmxlci5sZHI8MTI4PihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7
CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZFZlY3RvcihUcnVzdGVkSW1tUHRyIGFkZHJlc3Ms
IEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZVRvQ2FjaGVkUmVnKGFkZHJl
c3MsIGNhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcigpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRy
PDEyOD4oZGVzdCwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBBUk02NFJlZ2lzdGVyczo6enIpOworICAg
IH0KIAogICAgIHZvaWQgbG9hZERvdWJsZShBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKQEAgLTI1MDYsNiArMjUzNywxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci5mbW92PDY0PihkZXN0LCBzcmMpOwogICAgIH0KKyAgICAKKyAgICB2b2lk
IG1vdmVWZWN0b3IoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci52b3JyPDEyOD4oZGVzdCwgc3JjLCBzcmMpOworICAgIH0KIAog
ICAgIHZvaWQgbW92ZVplcm9Ub0RvdWJsZShGUFJlZ2lzdGVySUQgcmVnKQogICAgIHsKQEAgLTI3
OTcsNiArMjgzMywzNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVt
b3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4
RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVy
LnN0cjwzMj4oc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQor
ICAgIAorICAgIHZvaWQgc3RvcmVWZWN0b3IoRlBSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgaWYgKHRyeVN0b3JlV2l0aE9mZnNldDwxMjg+KHNyYywgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2Fj
aGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdHI8MTI4PihzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAg
ICB9CisKKyAgICB2b2lkIHN0b3JlVmVjdG9yKEZQUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW1Q
dHIgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1vdmVUb0NhY2hlZFJlZyhhZGRyZXNzLCBjYWNo
ZWRNZW1vcnlUZW1wUmVnaXN0ZXIoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0cjwxMjg+KHNy
YywgbWVtb3J5VGVtcFJlZ2lzdGVyLCBBUk02NFJlZ2lzdGVyczo6enIpOworICAgIH0KKworICAg
IHZvaWQgc3RvcmVWZWN0b3IoRlBSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBpZiAoYWRkcmVzcy5zY2FsZSA9PSBUaW1lc09uZSB8fCBhZGRyZXNzLnNj
YWxlID09IFRpbWVzRWlnaHQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGJhc2VHUFIgPSB0cnlG
b2xkQmFzZUFuZE9mZnNldFBhcnQoYWRkcmVzcykpIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5zdHI8MTI4PihzcmMsIGJhc2VHUFIudmFsdWUoKSwgYWRkcmVzcy5pbmRleCwgaW5kZXhF
eHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzaWduRXh0ZW5kMzJUb1B0
cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5
VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0
ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0
cjwxMjg+KHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgIH0KIAog
ICAgIHZvaWQgc3ViRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKQEAgLTQ1NjksNiArNDYzNCw1NDggQEAgcHVibGljOgogICAgIH0KICNlbmRpZiAvLyBF
TkFCTEUoRkFTVF9UTFNfSklUKQogICAgIAorICAgIHZvaWQgdmVjdG9yUmVwbGFjZUxhbmUoU2lt
ZExhbmUgc2ltZExhbmUsIFRydXN0ZWRJbW0zMiBsYW5lLCBSZWdpc3RlcklEIHNyYywgRlBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5pbnMoZGVzdCwgc3JjLCBz
aW1kTGFuZSwgbGFuZS5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHZlY3RvclJlcGxhY2VM
YW5lKFNpbWRMYW5lIHNpbWRMYW5lLCBUcnVzdGVkSW1tMzIgbGFuZSwgRlBSZWdpc3RlcklEIHNy
YywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5pbnMoZGVz
dCwgc3JjLCBzaW1kTGFuZSwgbGFuZS5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICBERUZJTkVfU0lN
RF9GVU5DUyh2ZWN0b3JSZXBsYWNlTGFuZSk7CisgICAgCisgICAgdm9pZCB2ZWN0b3JFeHRyYWN0
TGFuZShTaW1kTGFuZSBzaW1kTGFuZSwgU2ltZFNpZ25Nb2RlIHNpZ25Nb2RlLCBUcnVzdGVkSW1t
MzIgbGFuZSwgRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgaWYgKHNpZ25Nb2RlID09IFNpbWRTaWduTW9kZTo6U2lnbmVkKQorICAgICAgICAgICAgbV9h
c3NlbWJsZXIuc21vdihkZXN0LCBzcmMsIHNpbWRMYW5lLCBsYW5lLm1fdmFsdWUpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci51bW92KGRlc3QsIHNyYywgc2ltZExhbmUs
IGxhbmUubV92YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JFeHRyYWN0TGFuZShTaW1k
TGFuZSBzaW1kTGFuZSwgVHJ1c3RlZEltbTMyIGxhbmUsIEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHVwRWxlbWVudChkZXN0
LCBzcmMsIHNpbWRMYW5lLCBsYW5lLm1fdmFsdWUpOworICAgIH0KKworICAgIERFRklORV9TSUdO
RURfU0lNRF9GVU5DUyh2ZWN0b3JFeHRyYWN0TGFuZSk7CisKKyAgICB2b2lkIGNvbXBhcmVGbG9h
dGluZ1BvaW50VmVjdG9yKERvdWJsZUNvbmRpdGlvbiBjb25kLCBTaW1kSW5mbyBzaW1kSW5mbywg
RlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgRlBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChzY2FsYXJUeXBlSXNGbG9hdGluZ1BvaW50
KHNpbWRJbmZvLmxhbmUpKTsKKyAgICAgICAgc3dpdGNoIChjb25kKSB7CisgICAgICAgIGNhc2Ug
RG91YmxlRXF1YWxBbmRPcmRlcmVkOgorICAgICAgICAgICAgbV9hc3NlbWJsZXIuZmNtZXEoZGVz
dCwgbGVmdCwgcmlnaHQsIHNpbWRJbmZvLmxhbmUpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRG91YmxlTm90RXF1YWxPclVub3JkZXJlZDoKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmZjbWVxKGRlc3QsIGxlZnQsIHJpZ2h0LCBzaW1kSW5mby5sYW5lKTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnZlY3Rvck5vdChkZXN0LCBkZXN0KTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIERvdWJsZUdyZWF0ZXJUaGFuQW5kT3JkZXJlZDoKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmZjbWd0KGRlc3QsIGxlZnQsIHJpZ2h0LCBzaW1kSW5mby5sYW5lKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbEFuZE9y
ZGVyZWQ6CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5mY21nZShkZXN0LCBsZWZ0LCByaWdodCwg
c2ltZEluZm8ubGFuZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEb3VibGVM
ZXNzVGhhbkFuZE9yZGVyZWQ6CisgICAgICAgICAgICAvLyBhIDwgYiAgID0+ICAgYiA+IGEKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmZjbWd0KGRlc3QsIHJpZ2h0LCBsZWZ0LCBzaW1kSW5mby5s
YW5lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERvdWJsZUxlc3NUaGFuT3JF
cXVhbEFuZE9yZGVyZWQ6CisgICAgICAgICAgICAvLyBhIDw9IGIgICA9PiAgIGIgPj0gYQorICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuZmNtZ2UoZGVzdCwgcmlnaHQsIGxlZnQsIHNpbWRJbmZvLmxh
bmUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9p
ZCBjb21wYXJlSW50ZWdlclZlY3RvcihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFNpbWRJbmZv
IHNpbWRJbmZvLCBGUFJlZ2lzdGVySUQgbGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0LCBGUFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjYWxhclR5cGVJc0lu
dGVncmFsKHNpbWRJbmZvLmxhbmUpKTsKKworICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKKyAgICAg
ICAgY2FzZSBFcXVhbDoKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtZXEoZGVzdCwgbGVmdCwg
cmlnaHQsIHNpbWRJbmZvLmxhbmUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Tm90RXF1YWw6CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbWVxKGRlc3QsIGxlZnQsIHJpZ2h0
LCBzaW1kSW5mby5sYW5lKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnZlY3Rvck5vdChkZXN0
LCBkZXN0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFib3ZlOgorICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuY21oaShkZXN0LCBsZWZ0LCByaWdodCwgc2ltZEluZm8ubGFuZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBYm92ZU9yRXF1YWw6CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5jbWhzKGRlc3QsIGxlZnQsIHJpZ2h0LCBzaW1kSW5mby5sYW5lKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJlbG93OgorICAgICAgICAgICAgLy8g
YSA8IGIgID0+ICBiID4gYQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21oaShkZXN0LCByaWdo
dCwgbGVmdCwgc2ltZEluZm8ubGFuZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBCZWxvd09yRXF1YWw6CisgICAgICAgICAgICAvLyBhIDw9IGIgID0+ICBiID49IGEKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmNtaHMoZGVzdCwgcmlnaHQsIGxlZnQsIHNpbWRJbmZvLmxhbmUp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JlYXRlclRoYW46CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5jbWd0KGRlc3QsIGxlZnQsIHJpZ2h0LCBzaW1kSW5mby5sYW5lKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyZWF0ZXJUaGFuT3JFcXVhbDoKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmNtZ2UoZGVzdCwgbGVmdCwgcmlnaHQsIHNpbWRJbmZvLmxh
bmUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTGVzc1RoYW46CisgICAgICAg
ICAgICAvLyBhIDwgYiAgPT4gIGIgPiBhCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbWd0KGRl
c3QsIHJpZ2h0LCBsZWZ0LCBzaW1kSW5mby5sYW5lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIExlc3NUaGFuT3JFcXVhbDoKKyAgICAgICAgICAgIC8vIGEgPD0gYiAgPT4gIGIg
Pj0gYQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21nZShkZXN0LCByaWdodCwgbGVmdCwgc2lt
ZEluZm8ubGFuZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB2b2lkIGNvbXBhcmVJbnRlZ2VyVmVjdG9yV2l0aFplcm8oUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIHZlY3RvciwgRlBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChzY2FsYXJUeXBlSXNJbnRl
Z3JhbChzaW1kSW5mby5sYW5lKSk7CisKKyAgICAgICAgc3dpdGNoIChjb25kKSB7CisgICAgICAg
IGNhc2UgRXF1YWw6CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbWVxeihkZXN0LCB2ZWN0b3Is
IHNpbWRJbmZvLmxhbmUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTm90RXF1
YWw6CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbWVxeihkZXN0LCB2ZWN0b3IsIHNpbWRJbmZv
LmxhbmUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIudmVjdG9yTm90KGRlc3QsIGRlc3QpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB2ZWN0
b3JBZGQoU2ltZEluZm8gc2ltZEluZm8sIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQg
cmlnaHQsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHNjYWxhclR5cGVJ
c0Zsb2F0aW5nUG9pbnQoc2ltZEluZm8ubGFuZSkpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci52
ZWN0b3JGYWRkKGRlc3QsIGxlZnQsIHJpZ2h0LCBzaW1kSW5mby5sYW5lKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudmVjdG9yQWRkKGRlc3QsIGxlZnQsIHJpZ2h0LCBz
aW1kSW5mby5sYW5lKTsKKyAgICB9CisKKyAgICB2b2lkIHZlY3RvclN1YihTaW1kSW5mbyBzaW1k
SW5mbywgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgRlBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBpZiAoc2NhbGFyVHlwZUlzRmxvYXRpbmdQb2ludChzaW1k
SW5mby5sYW5lKSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnZlY3RvckZzdWIoZGVzdCwgbGVm
dCwgcmlnaHQsIHNpbWRJbmZvLmxhbmUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fz
c2VtYmxlci52ZWN0b3JTdWIoZGVzdCwgbGVmdCwgcmlnaHQsIHNpbWRJbmZvLmxhbmUpOworICAg
IH0KKworICAgIHZvaWQgdmVjdG9yTXVsKFNpbWRJbmZvIHNpbWRJbmZvLCBGUFJlZ2lzdGVySUQg
bGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGlmIChzY2FsYXJUeXBlSXNGbG9hdGluZ1BvaW50KHNpbWRJbmZvLmxhbmUpKQorICAgICAg
ICAgICAgbV9hc3NlbWJsZXIudmVjdG9yRm11bChkZXN0LCBsZWZ0LCByaWdodCwgc2ltZEluZm8u
bGFuZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnZlY3Rvck11bChk
ZXN0LCBsZWZ0LCByaWdodCwgc2ltZEluZm8ubGFuZSk7CisgICAgfQorCisgICAgdm9pZCB2ZWN0
b3JEaXYoU2ltZEluZm8gc2ltZEluZm8sIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQg
cmlnaHQsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNjYWxhclR5
cGVJc0Zsb2F0aW5nUG9pbnQoc2ltZEluZm8ubGFuZSkpOworICAgICAgICBtX2Fzc2VtYmxlci52
ZWN0b3JGZGl2KGRlc3QsIGxlZnQsIHJpZ2h0LCBzaW1kSW5mby5sYW5lKTsKKyAgICB9CisKKyAg
ICB2b2lkIHZlY3Rvck1heChTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGxlZnQsIEZQ
UmVnaXN0ZXJJRCByaWdodCwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAo
c2NhbGFyVHlwZUlzRmxvYXRpbmdQb2ludChzaW1kSW5mby5sYW5lKSkKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnZlY3RvckZtYXgoZGVzdCwgbGVmdCwgcmlnaHQsIHNpbWRJbmZvLmxhbmUpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChzaW1kSW5mby5zaWduTW9kZSAhPSBT
aW1kU2lnbk1vZGU6Ok5vbmUpOworICAgICAgICAgICAgaWYgKHNpbWRJbmZvLnNpZ25Nb2RlID09
IFNpbWRTaWduTW9kZTo6U2lnbmVkKQorICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNtYXgo
ZGVzdCwgbGVmdCwgcmlnaHQsIHNpbWRJbmZvLmxhbmUpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnVtYXgoZGVzdCwgbGVmdCwgcmlnaHQsIHNpbWRJbmZv
LmxhbmUpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JNaW4oU2ltZEluZm8g
c2ltZEluZm8sIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQsIEZQUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHNjYWxhclR5cGVJc0Zsb2F0aW5nUG9pbnQo
c2ltZEluZm8ubGFuZSkpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci52ZWN0b3JGbWluKGRlc3Qs
IGxlZnQsIHJpZ2h0LCBzaW1kSW5mby5sYW5lKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBBU1NFUlQoc2ltZEluZm8uc2lnbk1vZGUgIT0gU2ltZFNpZ25Nb2RlOjpOb25lKTsKKyAgICAg
ICAgICAgIGlmIChzaW1kSW5mby5zaWduTW9kZSA9PSBTaW1kU2lnbk1vZGU6OlNpZ25lZCkKKyAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbWluKGRlc3QsIGxlZnQsIHJpZ2h0LCBzaW1kSW5m
by5sYW5lKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci51
bWluKGRlc3QsIGxlZnQsIHJpZ2h0LCBzaW1kSW5mby5sYW5lKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHZvaWQgdmVjdG9yUG1pbihTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGxl
ZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBBU1NFUlQoc2NhbGFyVHlwZUlzRmxvYXRpbmdQb2ludChzaW1kSW5mby5sYW5lKSk7CisgICAg
ICAgIC8vIHJpZ2h0ID4gbGVmdCwgZGVzdCA9IGxlZnQKKyAgICAgICAgbV9hc3NlbWJsZXIuZmNt
Z3QoZGVzdCwgcmlnaHQsIGxlZnQsIHNpbWRJbmZvLmxhbmUpOworICAgICAgICBtX2Fzc2VtYmxl
ci5ic2woZGVzdCwgbGVmdCwgcmlnaHQpOworICAgIH0KKworICAgIHZvaWQgdmVjdG9yUG1heChT
aW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwg
RlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoc2NhbGFyVHlwZUlzRmxv
YXRpbmdQb2ludChzaW1kSW5mby5sYW5lKSk7CisgICAgICAgIC8vIGxlZnQgPiByaWdodCwgZGVz
dCA9IGxlZnQKKyAgICAgICAgbV9hc3NlbWJsZXIuZmNtZ3QoZGVzdCwgbGVmdCwgcmlnaHQsIHNp
bWRJbmZvLmxhbmUpOworICAgICAgICBtX2Fzc2VtYmxlci5ic2woZGVzdCwgbGVmdCwgcmlnaHQp
OworICAgIH0KKworICAgIHZvaWQgdmVjdG9yQml0d2lzZVNlbGVjdChGUFJlZ2lzdGVySUQgbGVm
dCwgRlBSZWdpc3RlcklEIHJpZ2h0LCBGUFJlZ2lzdGVySUQgaW5wdXRCaXRzQW5kRGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJzbChpbnB1dEJpdHNBbmREZXN0LCBsZWZ0LCByaWdo
dCk7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JOb3QoU2ltZEluZm8gc2ltZEluZm8sIEZQUmVn
aXN0ZXJJRCBpbnB1dCwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlRf
VU5VU0VEKHNpbWRJbmZvLCBzaW1kSW5mby5sYW5lID09IFNpbWRMYW5lOjp2MTI4KTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIudmVjdG9yTm90KGRlc3QsIGlucHV0KTsKKyAgICB9CisKKyAgICB2b2lk
IHZlY3RvckFuZChTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0
ZXJJRCByaWdodCwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlRfVU5V
U0VEKHNpbWRJbmZvLCBzaW1kSW5mby5sYW5lID09IFNpbWRMYW5lOjp2MTI4KTsKKyAgICAgICAg
bV9hc3NlbWJsZXIudmFuZDwxMjg+KGRlc3QsIGxlZnQsIHJpZ2h0KTsKKyAgICB9CisKKyAgICB2
b2lkIHZlY3RvckFuZG5vdChTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGxlZnQsIEZQ
UmVnaXN0ZXJJRCByaWdodCwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NF
UlRfVU5VU0VEKHNpbWRJbmZvLCBzaW1kSW5mby5sYW5lID09IFNpbWRMYW5lOjp2MTI4KTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIudmJpYzwxMjg+KGRlc3QsIGxlZnQsIHJpZ2h0KTsKKyAgICB9CisK
KyAgICB2b2lkIHZlY3Rvck9yKFNpbWRJbmZvIHNpbWRJbmZvLCBGUFJlZ2lzdGVySUQgbGVmdCwg
RlBSZWdpc3RlcklEIHJpZ2h0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVF9VTlVTRUQoc2ltZEluZm8sIHNpbWRJbmZvLmxhbmUgPT0gU2ltZExhbmU6OnYxMjgpOwor
ICAgICAgICBtX2Fzc2VtYmxlci52b3JyPDEyOD4oZGVzdCwgbGVmdCwgcmlnaHQpOworICAgIH0K
KworICAgIHZvaWQgdmVjdG9yWG9yKFNpbWRJbmZvIHNpbWRJbmZvLCBGUFJlZ2lzdGVySUQgbGVm
dCwgRlBSZWdpc3RlcklEIHJpZ2h0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoc2ltZEluZm8sIHNpbWRJbmZvLmxhbmUgPT0gU2ltZExhbmU6OnYxMjgp
OworICAgICAgICBtX2Fzc2VtYmxlci52ZWN0b3JFb3IoZGVzdCwgbGVmdCwgcmlnaHQpOworICAg
IH0KKworICAgIHZvaWQgdmVjdG9yQWJzKFNpbWRJbmZvIHNpbWRJbmZvLCBGUFJlZ2lzdGVySUQg
aW5wdXQsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHNjYWxhclR5cGVJ
c0Zsb2F0aW5nUG9pbnQoc2ltZEluZm8ubGFuZSkpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci52
ZWN0b3JGYWJzKGRlc3QsIGlucHV0LCBzaW1kSW5mby5sYW5lKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbV9hc3NlbWJsZXIudmVjdG9yQWJzKGRlc3QsIGlucHV0LCBzaW1kSW5mby5sYW5l
KTsKKyAgICB9CisKKyAgICB2b2lkIHZlY3Rvck5lZyhTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdp
c3RlcklEIGlucHV0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChzY2Fs
YXJUeXBlSXNGbG9hdGluZ1BvaW50KHNpbWRJbmZvLmxhbmUpKQorICAgICAgICAgICAgbV9hc3Nl
bWJsZXIudmVjdG9yRm5lZyhkZXN0LCBpbnB1dCwgc2ltZEluZm8ubGFuZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnZlY3Rvck5lZyhkZXN0LCBpbnB1dCwgc2ltZElu
Zm8ubGFuZSk7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JQb3BjbnQoU2ltZEluZm8gc2ltZElu
Zm8sIEZQUmVnaXN0ZXJJRCBpbnB1dCwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBBU1NFUlQoc2ltZEluZm8ubGFuZSA9PSBTaW1kTGFuZTo6aTh4MTYpOworICAgICAgICBtX2Fz
c2VtYmxlci52ZWN0b3JDbnQoZGVzdCwgaW5wdXQsIHNpbWRJbmZvLmxhbmUpOworICAgIH0KKwor
ICAgIHZvaWQgdmVjdG9yQ2VpbChTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGlucHV0
LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChzY2FsYXJUeXBlSXNG
bG9hdGluZ1BvaW50KHNpbWRJbmZvLmxhbmUpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudmVjdG9y
RmN2dHBzKGRlc3QsIGlucHV0LCBzaW1kSW5mby5sYW5lKTsKKyAgICB9CisKKyAgICB2b2lkIHZl
Y3RvckZsb29yKFNpbWRJbmZvIHNpbWRJbmZvLCBGUFJlZ2lzdGVySUQgaW5wdXQsIEZQUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNjYWxhclR5cGVJc0Zsb2F0aW5nUG9p
bnQoc2ltZEluZm8ubGFuZSkpOworICAgICAgICBtX2Fzc2VtYmxlci52ZWN0b3JGY3Z0bXMoZGVz
dCwgaW5wdXQsIHNpbWRJbmZvLmxhbmUpOworICAgIH0KKworICAgIHZvaWQgdmVjdG9yVHJ1bmMo
U2ltZEluZm8gc2ltZEluZm8sIEZQUmVnaXN0ZXJJRCBpbnB1dCwgRlBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBBU1NFUlQoc2NhbGFyVHlwZUlzRmxvYXRpbmdQb2ludChzaW1kSW5m
by5sYW5lKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZlY3RvckZyaW50eihkZXN0LCBpbnB1dCwg
c2ltZEluZm8ubGFuZSk7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JUcnVuY1NhdChTaW1kSW5m
byBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGlucHV0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChzY2FsYXJUeXBlSXNGbG9hdGluZ1BvaW50KHNpbWRJbmZvLmxhbmUp
KTsKKyAgICAgICAgQVNTRVJUKHNpbWRJbmZvLnNpZ25Nb2RlICE9IFNpbWRTaWduTW9kZTo6Tm9u
ZSk7CisgICAgICAgIGlmIChlbGVtZW50Qnl0ZVNpemUoc2ltZEluZm8ubGFuZSkgPT0gOCkgewor
ICAgICAgICAgICAgLy8gT09QUzogTWF5YmUgd2Ugd2FudCB0byBleHByZXNzIHRoaXMgaW4gQjMv
QWlyIGZvciBiZXR0ZXIgQ1NFLCBldGM/CisKKyAgICAgICAgICAgIHZlY3RvckRlbW90ZShzaW1k
SW5mbywgaW5wdXQsIGRlc3QpOworICAgICAgICAgICAgaW5wdXQgPSBkZXN0OworICAgICAgICAg
ICAgc2ltZEluZm8ubGFuZSA9IFNpbWRMYW5lOjpmMzJ4NDsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoc2ltZEluZm8uc2lnbk1vZGUgPT0gU2ltZFNpZ25Nb2RlOjpTaWduZWQpCisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci52ZWN0b3JGY3Z0enMoZGVzdCwgaW5wdXQsIHNpbWRJbmZvLmxhbmUpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci52ZWN0b3JGY3Z0enUoZGVzdCwg
aW5wdXQsIHNpbWRJbmZvLmxhbmUpOworICAgIH0KKworICAgIHZvaWQgdmVjdG9yTmVhcmVzdChT
aW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGlucHV0LCBGUFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChzY2FsYXJUeXBlSXNGbG9hdGluZ1BvaW50KHNpbWRJbmZv
LmxhbmUpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudmVjdG9yRmN2dG5zKGRlc3QsIGlucHV0LCBz
aW1kSW5mby5sYW5lKTsKKyAgICB9CisKKyAgICB2b2lkIHZlY3RvclNxcnQoU2ltZEluZm8gc2lt
ZEluZm8sIEZQUmVnaXN0ZXJJRCBpbnB1dCwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBBU1NFUlQoc2NhbGFyVHlwZUlzRmxvYXRpbmdQb2ludChzaW1kSW5mby5sYW5lKSk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnZlY3RvckZzcXJ0KGRlc3QsIGlucHV0LCBzaW1kSW5mby5sYW5l
KTsKKyAgICB9CisKKyAgICB2b2lkIHZlY3RvckV4dGVuZExvdyhTaW1kSW5mbyBzaW1kSW5mbywg
RlBSZWdpc3RlcklEIGlucHV0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChzaW1kSW5mby5zaWduTW9kZSAhPSBTaW1kU2lnbk1vZGU6Ok5vbmUpOworICAgICAgICBp
ZiAoc2ltZEluZm8uc2lnbk1vZGUgPT0gU2ltZFNpZ25Nb2RlOjpTaWduZWQpCisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5zeHRsKGRlc3QsIGlucHV0LCBzaW1kSW5mby5sYW5lKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudXh0bChkZXN0LCBpbnB1dCwgc2ltZEluZm8u
bGFuZSk7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JFeHRlbmRIaWdoKFNpbWRJbmZvIHNpbWRJ
bmZvLCBGUFJlZ2lzdGVySUQgaW5wdXQsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHNpbWRJbmZvLnNpZ25Nb2RlICE9IFNpbWRTaWduTW9kZTo6Tm9uZSk7CisgICAg
ICAgIGlmIChzaW1kSW5mby5zaWduTW9kZSA9PSBTaW1kU2lnbk1vZGU6OlNpZ25lZCkKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnN4dGwyKGRlc3QsIGlucHV0LCBzaW1kSW5mby5sYW5lKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudXh0bDIoZGVzdCwgaW5wdXQsIHNp
bWRJbmZvLmxhbmUpOworICAgIH0KKworICAgIHZvaWQgdmVjdG9yUHJvbW90ZShTaW1kSW5mbyBz
aW1kSW5mbywgRlBSZWdpc3RlcklEIGlucHV0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChzaW1kSW5mby5sYW5lID09IFNpbWRMYW5lOjpmMzJ4NCk7CisgICAgICAg
IG1fYXNzZW1ibGVyLmZjdnRsKGRlc3QsIGlucHV0LCBzaW1kSW5mby5sYW5lKTsKKyAgICB9CisK
KyAgICB2b2lkIHZlY3RvckRlbW90ZShTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGlu
cHV0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChzaW1kSW5mby5s
YW5lID09IFNpbWRMYW5lOjpmNjR4Mik7CisgICAgICAgIG1fYXNzZW1ibGVyLmZjdnRuKGRlc3Qs
IGlucHV0LCBzaW1kSW5mby5sYW5lKTsKKyAgICB9CisKKyAgICB2b2lkIHZlY3Rvck5hcnJvdyhT
aW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGxvd2VyLCBGUFJlZ2lzdGVySUQgdXBwZXIs
IEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNpbWRJbmZvLnNpZ25N
b2RlICE9IFNpbWRTaWduTW9kZTo6Tm9uZSk7CisgICAgICAgIEFTU0VSVChzY2FsYXJUeXBlSXNJ
bnRlZ3JhbChzaW1kSW5mby5sYW5lKSk7CisgICAgICAgIGlmIChzaW1kSW5mby5zaWduTW9kZSA9
PSBTaW1kU2lnbk1vZGU6OlNpZ25lZCkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3F4dG4o
ZGVzdCwgbG93ZXIsIHNpbWRJbmZvLmxhbmUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3F4
dG4yKGRlc3QsIHVwcGVyLCBzaW1kSW5mby5sYW5lKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnNxeHR1bihkZXN0LCBsb3dlciwgc2ltZEluZm8ubGFuZSk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5zcXh0dW4yKGRlc3QsIHVwcGVyLCBzaW1kSW5mby5sYW5l
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgdmVjdG9yQ29udmVydChTaW1kSW5mbyBz
aW1kSW5mbywgRlBSZWdpc3RlcklEIGlucHV0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIC8vIE9PUFM6IEZpZ3VyZSBvdXQgdGhlIEZQQ1IgdXNlZCBhcyByb3VuZGluZyBtb2Rl
IGluc2lkZSBzY3Z0ZgorICAgICAgICBBU1NFUlQoc2NhbGFyVHlwZUlzSW50ZWdyYWwoc2ltZElu
Zm8ubGFuZSkpOworICAgICAgICBBU1NFUlQoZWxlbWVudEJ5dGVTaXplKHNpbWRJbmZvLmxhbmUp
ID09IDQpOworICAgICAgICBBU1NFUlQoc2ltZEluZm8uc2lnbk1vZGUgIT0gU2ltZFNpZ25Nb2Rl
OjpOb25lKTsKKyAgICAgICAgLy8gR29pbmcgZnJvbSBpMzJ4NCB0byBmMzJ4NAorICAgICAgICBp
ZiAoc2ltZEluZm8uc2lnbk1vZGUgPT0gU2ltZFNpZ25Nb2RlOjpTaWduZWQpCisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci52ZWN0b3JTY3Z0ZihkZXN0LCBpbnB1dCwgc2ltZEluZm8ubGFuZSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnZlY3RvclVjdnRmKGRlc3QsIGlu
cHV0LCBzaW1kSW5mby5sYW5lKTsKKyAgICB9CisKKyAgICB2b2lkIHZlY3RvckNvbnZlcnRMb3co
U2ltZEluZm8gc2ltZEluZm8sIEZQUmVnaXN0ZXJJRCBpbnB1dCwgRlBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBBU1NFUlQoc2NhbGFyVHlwZUlzSW50ZWdyYWwoc2ltZEluZm8ubGFu
ZSkpOworICAgICAgICBBU1NFUlQoZWxlbWVudEJ5dGVTaXplKHNpbWRJbmZvLmxhbmUpID09IDQp
OworICAgICAgICAvLyBHb2luZyBmcm9tIGxvd2VyIHR3byBlbGVtZW50cyBvZiBpMzJ4NCB0byBm
NjR4MgorICAgICAgICBpZiAoc2ltZEluZm8uc2lnbk1vZGUgPT0gU2ltZFNpZ25Nb2RlOjpTaWdu
ZWQpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci52ZWN0b3JTY3Z0ZihkZXN0LCBpbnB1dCwgc2lt
ZEluZm8ubGFuZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnZlY3Rv
clVjdnRmKGRlc3QsIGlucHV0LCBzaW1kSW5mby5sYW5lKTsKKyAgICAgICAgc2ltZEluZm8ubGFu
ZSA9IFNpbWRMYW5lOjpmMzJ4NDsKKyAgICAgICAgdmVjdG9yUHJvbW90ZShzaW1kSW5mbywgZGVz
dCwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JVc2hsKFNpbWRJbmZvIHNpbWRJbmZv
LCBGUFJlZ2lzdGVySUQgaW5wdXQsIEZQUmVnaXN0ZXJJRCBzaGlmdCwgRlBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBBU1NFUlQoc2NhbGFyVHlwZUlzSW50ZWdyYWwoc2ltZEluZm8u
bGFuZSkpOworICAgICAgICBtX2Fzc2VtYmxlci51c2hsKGRlc3QsIGlucHV0LCBzaGlmdCwgc2lt
ZEluZm8ubGFuZSk7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JTc2hsKFNpbWRJbmZvIHNpbWRJ
bmZvLCBGUFJlZ2lzdGVySUQgaW5wdXQsIEZQUmVnaXN0ZXJJRCBzaGlmdCwgRlBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoc2NhbGFyVHlwZUlzSW50ZWdyYWwoc2ltZElu
Zm8ubGFuZSkpOworICAgICAgICBtX2Fzc2VtYmxlci5zc2hsKGRlc3QsIGlucHV0LCBzaGlmdCwg
c2ltZEluZm8ubGFuZSk7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JTc2hyKFNpbWRJbmZvIHNp
bWRJbmZvLCBGUFJlZ2lzdGVySUQgaW5wdXQsIFRydXN0ZWRJbW0zMiBzaGlmdCwgRlBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoc2NhbGFyVHlwZUlzSW50ZWdyYWwoc2lt
ZEluZm8ubGFuZSkgfHwgc2ltZEluZm8ubGFuZSA9PSBTaW1kTGFuZTo6djEyOCk7CisgICAgICAg
IG1fYXNzZW1ibGVyLnNzaHJfdmkoZGVzdCwgaW5wdXQsIHNoaWZ0Lm1fdmFsdWUsIHNpbWRJbmZv
LmxhbmUpOworICAgIH0KKworICAgIHZvaWQgdmVjdG9ySG9yaXpvbnRhbEFkZChTaW1kSW5mbyBz
aW1kSW5mbywgRlBSZWdpc3RlcklEIGlucHV0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjYWxhclR5cGVJc0ludGVncmFsKHNpbWRJbmZvLmxhbmUp
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2ltZEluZm8ubGFuZSAhPSBTaW1kTGFuZTo6aTY0
eDIpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGR2KGRlc3QsIGlucHV0LCBzaW1kSW5mby5sYW5l
KTsKKyAgICB9CisKKyAgICB2b2lkIHZlY3RvclNwbGF0KFNpbWRMYW5lIGxhbmUsIFJlZ2lzdGVy
SUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChzY2FsYXJU
eXBlSXNJbnRlZ3JhbChsYW5lKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR1cEdlbmVyYWwoZGVz
dCwgc3JjLCBsYW5lKTsKKyAgICB9CisKKyAgICB2b2lkIHZlY3RvclNwbGF0OChSZWdpc3RlcklE
IHNyYywgRlBSZWdpc3RlcklEIGRlc3QpIHsgdmVjdG9yU3BsYXQoU2ltZExhbmU6Omk4eDE2LCBz
cmMsIGRlc3QpOyB9CisgICAgdm9pZCB2ZWN0b3JTcGxhdDE2KFJlZ2lzdGVySUQgc3JjLCBGUFJl
Z2lzdGVySUQgZGVzdCkgeyB2ZWN0b3JTcGxhdChTaW1kTGFuZTo6aTE2eDgsIHNyYywgZGVzdCk7
IH0KKyAgICB2b2lkIHZlY3RvclNwbGF0MzIoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBk
ZXN0KSB7IHZlY3RvclNwbGF0KFNpbWRMYW5lOjppMzJ4NCwgc3JjLCBkZXN0KTsgfQorICAgIHZv
aWQgdmVjdG9yU3BsYXQ2NChSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpIHsgdmVj
dG9yU3BsYXQoU2ltZExhbmU6Omk2NHgyLCBzcmMsIGRlc3QpOyB9CisKKyAgICB2b2lkIHZlY3Rv
ckFkZFNhdChTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJ
RCByaWdodCwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoc2NhbGFy
VHlwZUlzSW50ZWdyYWwoc2ltZEluZm8ubGFuZSkpOworICAgICAgICBBU1NFUlQoc2ltZEluZm8u
c2lnbk1vZGUgIT0gU2ltZFNpZ25Nb2RlOjpOb25lKTsKKyAgICAgICAgaWYgKHNpbWRJbmZvLnNp
Z25Nb2RlID09IFNpbWRTaWduTW9kZTo6U2lnbmVkKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIu
c3FhZGQoZGVzdCwgbGVmdCwgcmlnaHQsIHNpbWRJbmZvLmxhbmUpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci51cWFkZChkZXN0LCBsZWZ0LCByaWdodCwgc2ltZEluZm8u
bGFuZSk7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JTdWJTYXQoU2ltZEluZm8gc2ltZEluZm8s
IEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQsIEZQUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNjYWxhclR5cGVJc0ludGVncmFsKHNpbWRJbmZvLmxh
bmUpKTsKKyAgICAgICAgQVNTRVJUKHNpbWRJbmZvLnNpZ25Nb2RlICE9IFNpbWRTaWduTW9kZTo6
Tm9uZSk7CisgICAgICAgIGlmIChzaW1kSW5mby5zaWduTW9kZSA9PSBTaW1kU2lnbk1vZGU6OlNp
Z25lZCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNxc3ViKGRlc3QsIGxlZnQsIHJpZ2h0LCBz
aW1kSW5mby5sYW5lKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudXFz
dWIoZGVzdCwgbGVmdCwgcmlnaHQsIHNpbWRJbmZvLmxhbmUpOworICAgIH0KKworICAgIHZvaWQg
dmVjdG9yTG9hZDhTcGxhdChBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KSB7IG1f
YXNzZW1ibGVyLmxkMXI8OD4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOyB9
CisgICAgdm9pZCB2ZWN0b3JMb2FkMTZTcGxhdChBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJ
RCBkZXN0KSB7IG1fYXNzZW1ibGVyLmxkMXI8MTY+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNz
KGFkZHJlc3MpKTsgfQorICAgIHZvaWQgdmVjdG9yTG9hZDMyU3BsYXQoQWRkcmVzcyBhZGRyZXNz
LCBGUFJlZ2lzdGVySUQgZGVzdCkgeyBtX2Fzc2VtYmxlci5sZDFyPDMyPihkZXN0LCBleHRyYWN0
U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7IH0KKyAgICB2b2lkIHZlY3RvckxvYWQ2NFNwbGF0KEFk
ZHJlc3MgYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpIHsgbV9hc3NlbWJsZXIubGQxcjw2ND4o
ZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOyB9CisKKyAgICB2b2lkIHZlY3Rv
ckxvYWQ4TGFuZShBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBpbW0sIEZQUmVnaXN0ZXJJ
RCBkZXN0KSB7IG1fYXNzZW1ibGVyLmxkMTw4PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhh
ZGRyZXNzKSwgaW1tLm1fdmFsdWUpOyB9CisgICAgdm9pZCB2ZWN0b3JMb2FkMTZMYW5lKEFkZHJl
c3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGltbSwgRlBSZWdpc3RlcklEIGRlc3QpIHsgbV9hc3Nl
bWJsZXIubGQxPDE2PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSwgaW1tLm1f
dmFsdWUpOyB9CisgICAgdm9pZCB2ZWN0b3JMb2FkMzJMYW5lKEFkZHJlc3MgYWRkcmVzcywgVHJ1
c3RlZEltbTMyIGltbSwgRlBSZWdpc3RlcklEIGRlc3QpIHsgbV9hc3NlbWJsZXIubGQxPDMyPihk
ZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSwgaW1tLm1fdmFsdWUpOyB9CisgICAg
dm9pZCB2ZWN0b3JMb2FkNjRMYW5lKEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGltbSwg
RlBSZWdpc3RlcklEIGRlc3QpIHsgbV9hc3NlbWJsZXIubGQxPDY0PihkZXN0LCBleHRyYWN0U2lt
cGxlQWRkcmVzcyhhZGRyZXNzKSwgaW1tLm1fdmFsdWUpOyB9CisKKyAgICB2b2lkIHZlY3RvclN0
b3JlOExhbmUoRlBSZWdpc3RlcklEIHZhbCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIg
aW1tKSB7IG1fYXNzZW1ibGVyLnN0MTw4Pih2YWwsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJl
c3MpLCBpbW0ubV92YWx1ZSk7IH0KKyAgICB2b2lkIHZlY3RvclN0b3JlMTZMYW5lKEZQUmVnaXN0
ZXJJRCB2YWwsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGltbSkgeyBtX2Fzc2VtYmxl
ci5zdDE8MTY+KHZhbCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcyksIGltbS5tX3ZhbHVl
KTsgfQorICAgIHZvaWQgdmVjdG9yU3RvcmUzMkxhbmUoRlBSZWdpc3RlcklEIHZhbCwgQWRkcmVz
cyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgaW1tKSB7IG1fYXNzZW1ibGVyLnN0MTwzMj4odmFsLCBl
eHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSwgaW1tLm1fdmFsdWUpOyB9CisgICAgdm9pZCB2
ZWN0b3JTdG9yZTY0TGFuZShGUFJlZ2lzdGVySUQgdmFsLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0
ZWRJbW0zMiBpbW0pIHsgbV9hc3NlbWJsZXIuc3QxPDY0Pih2YWwsIGV4dHJhY3RTaW1wbGVBZGRy
ZXNzKGFkZHJlc3MpLCBpbW0ubV92YWx1ZSk7IH0KKworICAgIHZvaWQgdmVjdG9yVW5zaWduZWRN
YXgoU2ltZEluZm8gc2ltZEluZm8sIEZQUmVnaXN0ZXJJRCB2ZWMsIEZQUmVnaXN0ZXJJRCBkc3Qp
IAorICAgIHsKKyAgICAgICAgc3dpdGNoIChzaW1kSW5mby5sYW5lKSB7CisgICAgICAgIGNhc2Ug
U2ltZExhbmU6OmkzMng0OgorICAgICAgICAgICAgbV9hc3NlbWJsZXIudW1heHY8MzI+KHZlYywg
ZHN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBTaW1kTGFuZTo6aTE2eDg6
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci51bWF4djwxNj4odmVjLCBkc3QpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBjYXNlIFNpbWRMYW5lOjppOHgxNjoKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnVtYXh2PDg+KHZlYywgZHN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JVbnNpZ25l
ZE1pbihTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIHZlYywgRlBSZWdpc3RlcklEIGRz
dCkgCisgICAgeworICAgICAgICBzd2l0Y2ggKHNpbWRJbmZvLmxhbmUpIHsKKyAgICAgICAgY2Fz
ZSBTaW1kTGFuZTo6aTMyeDQ6CisgICAgICAgICAgICBtX2Fzc2VtYmxlci51bWludjwzMj4odmVj
LCBkc3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFNpbWRMYW5lOjppMTZ4
ODoKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnVtaW52PDE2Pih2ZWMsIGRzdCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGNhc2UgU2ltZExhbmU6Omk4eDE2OgorICAgICAgICAgICAg
bV9hc3NlbWJsZXIudW1pbnY8OD4odmVjLCBkc3QpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICB2b2lkIHZlY3RvckFueVRy
dWUoRlBSZWdpc3RlcklELCBSZWdpc3RlcklEKSAKKyAgICB7IAorICAgICAgICAvLyBUaGlzIG1h
Y3JvIHNob3VsZCBoYXZlIGJlZW4gbG93ZXJlZCBieSBub3cuCisgICAgICAgIGJvb2wgaGlkZU5v
UmV0dXJuID0gdHJ1ZTsKKyAgICAgICAgaWYgKGhpZGVOb1JldHVybikKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JBbGxU
cnVlKFNpbWRJbmZvLCBGUFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpCisgICAgeworICAgICAgICAv
LyBUaGlzIG1hY3JvIHNob3VsZCBoYXZlIGJlZW4gbG93ZXJlZCBieSBub3cuCisgICAgICAgIGJv
b2wgaGlkZU5vUmV0dXJuID0gdHJ1ZTsKKyAgICAgICAgaWYgKGhpZGVOb1JldHVybikKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgdm9pZCB2
ZWN0b3JCaXRtYXNrKFNpbWRJbmZvLCBGUFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpIAorICAgIHsK
KyAgICAgICAgLy8gVGhpcyBtYWNybyBzaG91bGQgaGF2ZSBiZWVuIGxvd2VyZWQgYnkgbm93Lgor
ICAgICAgICBib29sIGhpZGVOb1JldHVybiA9IHRydWU7CisgICAgICAgIGlmIChoaWRlTm9SZXR1
cm4pCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKwor
ICAgIHZvaWQgdmVjdG9yRXh0YWRkUGFpcndpc2UoU2ltZEluZm8sIEZQUmVnaXN0ZXJJRCwgRlBS
ZWdpc3RlcklEKQorICAgIHsgCisgICAgICAgIC8vIFRoaXMgbWFjcm8gc2hvdWxkIGhhdmUgYmVl
biBsb3dlcmVkIGJ5IG5vdy4KKyAgICAgICAgYm9vbCBoaWRlTm9SZXR1cm4gPSB0cnVlOworICAg
ICAgICBpZiAoaGlkZU5vUmV0dXJuKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9CisKKyAgICB2b2lkIHZlY3RvckFkZFBhaXJ3aXNlKFNpbWRJbmZvIHNp
bWRJbmZvLCBGUFJlZ2lzdGVySUQgYSwgRlBSZWdpc3RlcklEIGIsIEZQUmVnaXN0ZXJJRCBkc3Qp
CisgICAgeworICAgICAgICBBU1NFUlQoc2NhbGFyVHlwZUlzSW50ZWdyYWwoc2ltZEluZm8ubGFu
ZSkpOworICAgICAgICBBU1NFUlQoc2ltZEluZm8uc2lnbk1vZGUgPT0gU2ltZFNpZ25Nb2RlOjpO
b25lKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkcHYoYSwgYiwgZHN0LCBzaW1kSW5mby5sYW5l
KTsKKyAgICB9CisKKyAgICB2b2lkIHZlY3RvckF2Z1JvdW5kKFNpbWRJbmZvIHNpbWRJbmZvLCBG
UFJlZ2lzdGVySUQgYSwgRlBSZWdpc3RlcklEIGIsIEZQUmVnaXN0ZXJJRCBkZXN0KSB7IG1fYXNz
ZW1ibGVyLnVyaGFkZChhLCBiLCBkZXN0LCBzaW1kSW5mby5sYW5lKTsgfQorICAgIAorICAgIHZv
aWQgdmVjdG9yTXVsU2F0KEZQUmVnaXN0ZXJJRCBhLCBGUFJlZ2lzdGVySUQgYiwgRlBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICAvLyAoaV8xICogaV8yICsgMl4xNCkgPj4gMTUKKyAg
ICAgICAgLy8gPD0+IAorICAgICAgICAvLyAoaV8xICogaV8yICogMiArIDJeMTUpID4+IDE2Cisg
ICAgICAgIC8vIDw9PgorICAgICAgICAvLyBpXzEgKiBpXzIgKiAyICsgMl4xNSAoaGlnaCBoYWxm
KQorICAgICAgICBtX2Fzc2VtYmxlci5zcXJkbWxhaHYoZGVzdCwgYSwgYiwgU2ltZExhbmU6Omkx
Nng4KTsKKyAgICB9CisKKyAgICB2b2lkIHZlY3RvckRvdFByb2R1Y3RJbnQzMihGUFJlZ2lzdGVy
SUQgYSwgRlBSZWdpc3RlcklEIGIsIEZQUmVnaXN0ZXJJRCBkZXN0LCBGUFJlZ2lzdGVySUQgc2Ny
YXRjaCkgCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zbXVsbHYoc2NyYXRjaCwgYSwgYiwg
U2ltZExhbmU6OmkxNng4KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc211bGwydihkZXN0LCBhLCBi
LCBTaW1kTGFuZTo6aTE2eDgpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGRwdihkZXN0LCBkZXN0
LCBzY3JhdGNoLCBTaW1kTGFuZTo6aTMyeDQpOworICAgIH0KKyAgICB2b2lkIHZlY3RvclN3aXp6
bGUoRlBSZWdpc3RlcklEIGEsIEZQUmVnaXN0ZXJJRCBjb250cm9sLCBGUFJlZ2lzdGVySUQgZGVz
dCkgeyBtX2Fzc2VtYmxlci50YmwoZGVzdCwgYSwgY29udHJvbCk7IH0KKyAgICB2b2lkIHZlY3Rv
clN3aXp6bGUyKEZQUmVnaXN0ZXJJRCBhLCBGUFJlZ2lzdGVySUQgYiwgRlBSZWdpc3RlcklEIGNv
bnRyb2wsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
YiA9PSBhICsgMSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnRibDIoZGVzdCwgYSwgYiwgY29udHJv
bCk7CisgICAgfQorICAgIHZvaWQgdmVjdG9yU2h1ZmZsZShUcnVzdGVkSW1tNjQsIFRydXN0ZWRJ
bW02NCwgRlBSZWdpc3RlcklELCBGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkgCisgICAgewor
ICAgICAgICAvLyBUaGlzIG1hY3JvIHNob3VsZCBoYXZlIGJlZW4gbG93ZXJlZCBieSBub3cuCisg
ICAgICAgIGJvb2wgaGlkZU5vUmV0dXJuID0gdHJ1ZTsKKyAgICAgICAgaWYgKGhpZGVOb1JldHVy
bikKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCiAg
ICAgLy8gTWlzYyBoZWxwZXIgZnVuY3Rpb25zLgogCiAgICAgLy8gSW52ZXJ0IGEgcmVsYXRpb25h
bCBjb25kaXRpb24sIGUuZy4gPT0gYmVjb21lcyAhPSwgPCBiZWNvbWVzID49LCBldGMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
XzY0LmgKaW5kZXggYjJlOTExYWExMzY2Li4yYmZkNWQ3OTAwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoWDg2XzY0KQogCiAj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCIKKyNpbmNsdWRlICJTaW1kSW5mby5o
IgogCiAjZGVmaW5lIFJFUEFUQ0hfT0ZGU0VUX0NBTExfUjExIDMKIApAQCAtMTA0NCw2ICsxMDQ1
LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG1vdmUzMlRvRmxvYXQoUmVnaXN0
ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bW92ZF9ycihzcmMsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgbW92ZTY0VG9Eb3VibGUoUmVn
aXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIubW92cV9ycihzcmMsIGRlc3QpOwpAQCAtMTA1Myw2ICsxMDU5LDM3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfcnIoc3JjLCBkZXN0KTsKICAgICB9CisgICAg
CisgICAgdm9pZCBtb3ZlVmVjdG9yKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92YXBzX3JyKHNyYywgZGVzdCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgbG9hZFZlY3RvcihUcnVzdGVkSW1tUHRyIGFkZHJlc3MsIEZQUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShhZGRyZXNzLCBzY3JhdGNoUmVnaXN0
ZXIoKSk7CisgICAgICAgIGxvYWRWZWN0b3IoQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSksIGRl
c3QpOworICAgIH0KKworICAgIHZvaWQgbG9hZFZlY3RvcihBZGRyZXNzIGFkZHJlc3MsIEZQUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdnVwc19tcihhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRW
ZWN0b3IoQmFzZUluZGV4IGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIudm1vdnVwc19tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBzdG9yZVZlY3RvcihGUFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci52bW92dXBzX3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVWZWN0b3IoRlBSZWdpc3RlcklE
IHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci52bW92
dXBzX3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgfQogCiAgICAgdm9pZCBjb21wYXJlNjQoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKQEAgLTE5ODEsNiArMjAxOCwzOTggQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci5saW5rSnVtcChkb25lLCBtX2Fzc2VtYmxlci5sYWJlbCgpKTsKICAgICB9
CiAKKyAgICAvLyBTaW1kCisKKyAgICB2b2lkIHNpZ25FeHRlbmRGb3JTaW1kTGFuZShSZWdpc3Rl
cklEIHJlZywgU2ltZExhbmUgc2ltZExhbmUpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VS
VChzY2FsYXJUeXBlSXNJbnRlZ3JhbChzaW1kTGFuZSkpOworICAgICAgICBpZiAoZWxlbWVudEJ5
dGVTaXplKHNpbWRMYW5lKSA9PSAxKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92c2JsX3Jy
KHJlZywgcmVnKTsKKyAgICAgICAgZWxzZSBpZiAoZWxlbWVudEJ5dGVTaXplKHNpbWRMYW5lKSA9
PSAyKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92c3dsX3JyKHJlZywgcmVnKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisKKyAgICB2b2lkIHZlY3RvclJlcGxhY2VMYW5lKFNpbWRMYW5lIHNpbWRMYW5lLCBUcnVzdGVk
SW1tMzIgbGFuZSwgUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIucGluc3IoZGVzdCwgc3JjLCBzaW1kTGFuZSwgbGFuZS5tX3ZhbHVl
KTsKKyAgICB9CisKKyAgICB2b2lkIHZlY3RvclJlcGxhY2VMYW5lKFNpbWRMYW5lIHNpbWRMYW5l
LCBUcnVzdGVkSW1tMzIgbGFuZSwgRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBSZWdpc3RlcklEIHNjcmF0Y2ggPSBzY3JhdGNoUmVnaXN0ZXIoKTsK
KyAgICAgICAgbW92ZURvdWJsZVRvNjQoc3JjLCBzY3JhdGNoKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIucGluc3IoZGVzdCwgc2NyYXRjaCwgc2ltZExhbmUsIGxhbmUubV92YWx1ZSk7CisgICAgfQor
CisgICAgREVGSU5FX1NJTURfRlVOQ1ModmVjdG9yUmVwbGFjZUxhbmUpOworICAgIAorICAgIHZv
aWQgdmVjdG9yRXh0cmFjdExhbmUoU2ltZExhbmUgc2ltZExhbmUsIFNpbWRTaWduTW9kZSBzaWdu
TW9kZSwgVHJ1c3RlZEltbTMyIGxhbmUsIEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnBleHRyKGRlc3QsIHNyYywgc2ltZExhbmUs
IGxhbmUubV92YWx1ZSk7CisgICAgICAgIGlmIChzaWduTW9kZSA9PSBTaW1kU2lnbk1vZGU6OlNp
Z25lZCkKKyAgICAgICAgICAgIHNpZ25FeHRlbmRGb3JTaW1kTGFuZShkZXN0LCBzaW1kTGFuZSk7
CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JFeHRyYWN0TGFuZShTaW1kTGFuZSBzaW1kTGFuZSwg
VHJ1c3RlZEltbTMyIGxhbmUsIEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobGFuZS5tX3ZhbHVlIDwgNCk7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHNpbWRMYW5lID09IFNpbWRMYW5lOjpmMzJ4NCk7CisgICAgICAgIGlm
IChzcmMgIT0gZGVzdCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmFwc19ycihzcmMsIGRl
c3QpOworICAgICAgICBtX2Fzc2VtYmxlci5zaHVmcHMoZGVzdCwgZGVzdCwgbGFuZS5tX3ZhbHVl
KTsKKyAgICB9CisKKyAgICBERUZJTkVfU0lHTkVEX1NJTURfRlVOQ1ModmVjdG9yRXh0cmFjdExh
bmUpOworCisgICAgdm9pZCBjb21wYXJlRmxvYXRpbmdQb2ludFZlY3RvcihEb3VibGVDb25kaXRp
b24gY29uZCwgU2ltZEluZm8gc2ltZEluZm8sIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVy
SUQgcmlnaHQsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc2NhbGFyVHlwZUlzRmxvYXRpbmdQb2ludChzaW1kSW5mby5sYW5lKSk7CisgICAgICAgICh2
b2lkKSBsZWZ0OyAodm9pZCkgcmlnaHQ7ICh2b2lkKSBkZXN0OworCisgICAgICAgIHN3aXRjaCAo
Y29uZCkgeworICAgICAgICBjYXNlIERvdWJsZUVxdWFsQW5kT3JkZXJlZDoKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQ6CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEb3VibGVHcmVhdGVyVGhhbkFuZE9yZGVyZWQ6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxB
bmRPcmRlcmVkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRG91YmxlTGVzc1Ro
YW5BbmRPcmRlcmVkOgorICAgICAgICAgICAgLy8gYSA8IGIgICA9PiAgIGIgPiBhCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEb3VibGVMZXNzVGhhbk9yRXF1YWxBbmRPcmRlcmVk
OgorICAgICAgICAgICAgLy8gYSA8PSBiICAgPT4gICBiID49IGEKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgY29tcGFyZUludGVnZXJWZWN0b3Io
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklE
IGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChzY2FsYXJUeXBlSXNJbnRlZ3JhbChzaW1kSW5mby5sYW5lKSk7
CisgICAgICAgICh2b2lkKSBsZWZ0OyAodm9pZCkgcmlnaHQ7ICh2b2lkKSBkZXN0OworCisgICAg
ICAgIHN3aXRjaCAoY29uZCkgeworICAgICAgICBjYXNlIEVxdWFsOgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgTm90RXF1YWw6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBBYm92ZToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFib3ZlT3JFcXVh
bDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJlbG93OgorICAgICAgICAgICAg
Ly8gYSA8IGIgID0+ICBiID4gYQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQmVs
b3dPckVxdWFsOgorICAgICAgICAgICAgLy8gYSA8PSBiICA9PiAgYiA+PSBhCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHcmVhdGVyVGhhbjoKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEdyZWF0ZXJUaGFuT3JFcXVhbDoKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIExlc3NUaGFuOgorICAgICAgICAgICAgLy8gYSA8IGIgID0+ICBiID4gYQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTGVzc1RoYW5PckVxdWFsOgorICAgICAgICAg
ICAgLy8gYSA8PSBiICA9PiAgYiA+PSBhCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB2b2lkIGNvbXBhcmVJbnRlZ2VyVmVjdG9yV2l0aFplcm8oUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIHZlY3Rv
ciwgRlBSZWdpc3RlcklEIGRlc3QpIAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2Nh
bGFyVHlwZUlzSW50ZWdyYWwoc2ltZEluZm8ubGFuZSkpOworICAgICAgICAodm9pZCkgY29uZDsg
KHZvaWQpIHZlY3RvcjsgKHZvaWQpIGRlc3Q7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JBZGQo
U2ltZEluZm8gc2ltZEluZm8sIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQs
IEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHNjYWxhclR5cGVJc0Zsb2F0
aW5nUG9pbnQoc2ltZEluZm8ubGFuZSkpCisgICAgICAgICAgICAodm9pZCkgbGVmdDsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgKHZvaWQpIGxlZnQ7CisgICAgICAgICh2b2lkKSBsZWZ0OyAo
dm9pZCkgcmlnaHQ7ICh2b2lkKSBkZXN0OworICAgIH0KKworICAgIHZvaWQgdmVjdG9yU3ViKFNp
bWRJbmZvIHNpbWRJbmZvLCBGUFJlZ2lzdGVySUQgbGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0LCBG
UFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChzY2FsYXJUeXBlSXNGbG9hdGlu
Z1BvaW50KHNpbWRJbmZvLmxhbmUpKQorICAgICAgICAgICAgKHZvaWQpIGxlZnQ7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICh2b2lkKSBsZWZ0OworICAgICAgICAodm9pZCkgbGVmdDsgKHZv
aWQpIHJpZ2h0OyAodm9pZCkgZGVzdDsKKyAgICB9CisKKyAgICB2b2lkIHZlY3Rvck11bChTaW1k
SW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgRlBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoc2NhbGFyVHlwZUlzRmxvYXRpbmdQ
b2ludChzaW1kSW5mby5sYW5lKSkKKyAgICAgICAgICAgICh2b2lkKSBsZWZ0OworICAgICAgICBl
bHNlCisgICAgICAgICAgICAodm9pZCkgbGVmdDsKKyAgICAgICAgKHZvaWQpIGxlZnQ7ICh2b2lk
KSByaWdodDsgKHZvaWQpIGRlc3Q7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JEaXYoU2ltZElu
Zm8gc2ltZEluZm8sIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQsIEZQUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNjYWxhclR5cGVJc0Zsb2F0aW5n
UG9pbnQoc2ltZEluZm8ubGFuZSkpOworICAgICAgICAodm9pZCkgbGVmdDsgKHZvaWQpIHJpZ2h0
OyAodm9pZCkgZGVzdDsKKyAgICB9CisKKyAgICB2b2lkIHZlY3Rvck1heChTaW1kSW5mbyBzaW1k
SW5mbywgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgRlBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICAodm9pZCkgcmlnaHQ7ICh2b2lkKSBkZXN0OworICAgICAg
ICBpZiAoc2NhbGFyVHlwZUlzRmxvYXRpbmdQb2ludChzaW1kSW5mby5sYW5lKSkKKyAgICAgICAg
ICAgICh2b2lkKSBsZWZ0OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChzaW1k
SW5mby5zaWduTW9kZSAhPSBTaW1kU2lnbk1vZGU6Ok5vbmUpOworICAgICAgICAgICAgaWYgKHNp
bWRJbmZvLnNpZ25Nb2RlID09IFNpbWRTaWduTW9kZTo6U2lnbmVkKQorICAgICAgICAgICAgICAg
ICh2b2lkKSBsZWZ0OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICh2b2lkKSBs
ZWZ0OworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JNaW4oU2ltZEluZm8gc2lt
ZEluZm8sIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgKHZvaWQpIHJpZ2h0OyAodm9pZCkgZGVzdDsKKyAgICAg
ICAgaWYgKHNjYWxhclR5cGVJc0Zsb2F0aW5nUG9pbnQoc2ltZEluZm8ubGFuZSkpCisgICAgICAg
ICAgICAodm9pZCkgbGVmdDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoc2lt
ZEluZm8uc2lnbk1vZGUgIT0gU2ltZFNpZ25Nb2RlOjpOb25lKTsKKyAgICAgICAgICAgIGlmIChz
aW1kSW5mby5zaWduTW9kZSA9PSBTaW1kU2lnbk1vZGU6OlNpZ25lZCkKKyAgICAgICAgICAgICAg
ICAodm9pZCkgbGVmdDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAodm9pZCkg
bGVmdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgdmVjdG9yUG1pbihTaW1kSW5mbyBz
aW1kSW5mbywgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgRlBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoc2NhbGFyVHlwZUlzRmxvYXRpbmdQb2lu
dChzaW1kSW5mby5sYW5lKSk7CisgICAgICAgIC8vIHJpZ2h0ID4gbGVmdCwgZGVzdCA9IGxlZnQK
KyAgICAgICAgKHZvaWQpIGxlZnQ7ICh2b2lkKSByaWdodDsgKHZvaWQpIGRlc3Q7CisgICAgfQor
CisgICAgdm9pZCB2ZWN0b3JQbWF4KFNpbWRJbmZvIHNpbWRJbmZvLCBGUFJlZ2lzdGVySUQgbGVm
dCwgRlBSZWdpc3RlcklEIHJpZ2h0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChzY2FsYXJUeXBlSXNGbG9hdGluZ1BvaW50KHNpbWRJbmZvLmxhbmUpKTsKKyAgICAg
ICAgLy8gbGVmdCA+IHJpZ2h0LCBkZXN0ID0gbGVmdAorICAgICAgICAodm9pZCkgbGVmdDsgKHZv
aWQpIHJpZ2h0OyAodm9pZCkgZGVzdDsKKyAgICB9CisKKyAgICB2b2lkIHZlY3RvckJpdHdpc2VT
ZWxlY3QoRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgRlBSZWdpc3RlcklE
IGlucHV0Qml0c0FuZERlc3QpCisgICAgeworICAgICAgICAodm9pZCkgbGVmdDsgKHZvaWQpIHJp
Z2h0OyAodm9pZCkgaW5wdXRCaXRzQW5kRGVzdDsKKyAgICB9CisKKyAgICB2b2lkIHZlY3Rvck5v
dChTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGlucHV0LCBGUFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc2ltZEluZm8sIHNpbWRJbmZvLmxhbmUg
PT0gU2ltZExhbmU6OnYxMjgpOworICAgICAgICAodm9pZCkgaW5wdXQ7ICh2b2lkKSBkZXN0Owor
ICAgIH0KKworICAgIHZvaWQgdmVjdG9yQW5kKFNpbWRJbmZvIHNpbWRJbmZvLCBGUFJlZ2lzdGVy
SUQgbGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVF9VTlVTRUQoc2ltZEluZm8sIHNpbWRJbmZvLmxhbmUgPT0gU2ltZExhbmU6
OnYxMjgpOworICAgICAgICAodm9pZCkgbGVmdDsgKHZvaWQpIHJpZ2h0OyAodm9pZCkgZGVzdDsK
KyAgICB9CisKKyAgICB2b2lkIHZlY3RvckFuZG5vdChTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdp
c3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBBU1NFUlRfVU5VU0VEKHNpbWRJbmZvLCBzaW1kSW5mby5sYW5lID09IFNpbWRM
YW5lOjp2MTI4KTsKKyAgICAgICAgKHZvaWQpIGxlZnQ7ICh2b2lkKSByaWdodDsgKHZvaWQpIGRl
c3Q7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JPcihTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdp
c3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBBU1NFUlRfVU5VU0VEKHNpbWRJbmZvLCBzaW1kSW5mby5sYW5lID09IFNpbWRM
YW5lOjp2MTI4KTsKKyAgICAgICAgKHZvaWQpIGxlZnQ7ICh2b2lkKSByaWdodDsgKHZvaWQpIGRl
c3Q7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JYb3IoU2ltZEluZm8gc2ltZEluZm8sIEZQUmVn
aXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzaW1kSW5mbywgc2ltZEluZm8ubGFuZSA9PSBTaW1k
TGFuZTo6djEyOCk7CisgICAgICAgICh2b2lkKSBsZWZ0OyAodm9pZCkgcmlnaHQ7ICh2b2lkKSBk
ZXN0OworICAgIH0KKworICAgIHZvaWQgdmVjdG9yQWJzKFNpbWRJbmZvIHNpbWRJbmZvLCBGUFJl
Z2lzdGVySUQgaW5wdXQsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHNj
YWxhclR5cGVJc0Zsb2F0aW5nUG9pbnQoc2ltZEluZm8ubGFuZSkpCisgICAgICAgICAgICAodm9p
ZCkgZGVzdDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKHZvaWQpIGRlc3Q7CisgICAgICAg
ICh2b2lkKSBpbnB1dDsKKyAgICB9CisKKyAgICB2b2lkIHZlY3Rvck5lZyhTaW1kSW5mbyBzaW1k
SW5mbywgRlBSZWdpc3RlcklEIGlucHV0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGlmIChzY2FsYXJUeXBlSXNGbG9hdGluZ1BvaW50KHNpbWRJbmZvLmxhbmUpKQorICAgICAg
ICAgICAgKHZvaWQpIGRlc3Q7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICh2b2lkKSBkZXN0
OworICAgICAgICAodm9pZCkgaW5wdXQ7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JQb3BjbnQo
U2ltZEluZm8gc2ltZEluZm8sIEZQUmVnaXN0ZXJJRCBpbnB1dCwgRlBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBBU1NFUlQoc2ltZEluZm8ubGFuZSA9PSBTaW1kTGFuZTo6aTh4MTYp
OworICAgICAgICAodm9pZCkgaW5wdXQ7ICh2b2lkKSBkZXN0OyAodm9pZCkgc2ltZEluZm87Cisg
ICAgfQorCisgICAgdm9pZCB2ZWN0b3JDZWlsKFNpbWRJbmZvIHNpbWRJbmZvLCBGUFJlZ2lzdGVy
SUQgaW5wdXQsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNjYWxh
clR5cGVJc0Zsb2F0aW5nUG9pbnQoc2ltZEluZm8ubGFuZSkpOworICAgICAgICAodm9pZCkgaW5w
dXQ7ICh2b2lkKSBkZXN0OyAodm9pZCkgc2ltZEluZm87CisgICAgfQorCisgICAgdm9pZCB2ZWN0
b3JGbG9vcihTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGlucHV0LCBGUFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChzY2FsYXJUeXBlSXNGbG9hdGluZ1BvaW50
KHNpbWRJbmZvLmxhbmUpKTsKKyAgICAgICAgKHZvaWQpIGlucHV0OyAodm9pZCkgZGVzdDsgKHZv
aWQpIHNpbWRJbmZvOworICAgIH0KKworICAgIHZvaWQgdmVjdG9yVHJ1bmMoU2ltZEluZm8gc2lt
ZEluZm8sIEZQUmVnaXN0ZXJJRCBpbnB1dCwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBBU1NFUlQoc2NhbGFyVHlwZUlzRmxvYXRpbmdQb2ludChzaW1kSW5mby5sYW5lKSk7Cisg
ICAgICAgICh2b2lkKSBpbnB1dDsgKHZvaWQpIGRlc3Q7ICh2b2lkKSBzaW1kSW5mbzsKKyAgICB9
CisKKyAgICB2b2lkIHZlY3RvclRydW5jU2F0KFNpbWRJbmZvIHNpbWRJbmZvLCBGUFJlZ2lzdGVy
SUQgaW5wdXQsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNjYWxh
clR5cGVJc0Zsb2F0aW5nUG9pbnQoc2ltZEluZm8ubGFuZSkpOworICAgICAgICBBU1NFUlQoc2lt
ZEluZm8uc2lnbk1vZGUgIT0gU2ltZFNpZ25Nb2RlOjpOb25lKTsKKyAgICAgICAgVU5VU0VEX1BB
UkFNKHNpbWRJbmZvKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGlucHV0KTsKKyAgICAgICAgVU5V
U0VEX1BBUkFNKGRlc3QpOworICAgIH0KKworICAgIHZvaWQgdmVjdG9yTmVhcmVzdChTaW1kSW5m
byBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGlucHV0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChzY2FsYXJUeXBlSXNGbG9hdGluZ1BvaW50KHNpbWRJbmZvLmxhbmUp
KTsKKyAgICAgICAgKHZvaWQpIGlucHV0OyAodm9pZCkgZGVzdDsgKHZvaWQpIHNpbWRJbmZvOwor
ICAgIH0KKworICAgIHZvaWQgdmVjdG9yU3FydChTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3Rl
cklEIGlucHV0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChzY2Fs
YXJUeXBlSXNGbG9hdGluZ1BvaW50KHNpbWRJbmZvLmxhbmUpKTsKKyAgICAgICAgKHZvaWQpIGlu
cHV0OyAodm9pZCkgZGVzdDsgKHZvaWQpIHNpbWRJbmZvOworICAgIH0KKworICAgIHZvaWQgdmVj
dG9yRXh0ZW5kTG93KFNpbWRJbmZvLCBGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkKKyAgICB7
CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JFeHRlbmRIaWdoKFNpbWRJbmZvLCBGUFJlZ2lzdGVy
SUQsIEZQUmVnaXN0ZXJJRCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JQcm9tb3Rl
KFNpbWRJbmZvIHNpbWRJbmZvLCBGUFJlZ2lzdGVySUQgaW5wdXQsIEZQUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNpbWRJbmZvKTsKKyAgICAgICAgVU5VU0VE
X1BBUkFNKGlucHV0KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGRlc3QpOworICAgICAgICBBU1NF
UlQoc2ltZEluZm8ubGFuZSA9PSBTaW1kTGFuZTo6ZjMyeDQpOworICAgIH0KKworICAgIHZvaWQg
dmVjdG9yRGVtb3RlKFNpbWRJbmZvIHNpbWRJbmZvLCBGUFJlZ2lzdGVySUQgaW5wdXQsIEZQUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNpbWRJbmZvKTsKKyAg
ICAgICAgVU5VU0VEX1BBUkFNKGlucHV0KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGRlc3QpOwor
ICAgICAgICBBU1NFUlQoc2ltZEluZm8ubGFuZSA9PSBTaW1kTGFuZTo6ZjY0eDIpOworICAgIH0K
KworICAgIHZvaWQgdmVjdG9yTmFycm93KFNpbWRJbmZvIHNpbWRJbmZvLCBGUFJlZ2lzdGVySUQg
bG93ZXIsIEZQUmVnaXN0ZXJJRCB1cHBlciwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBBU1NFUlQoc2ltZEluZm8uc2lnbk1vZGUgIT0gU2ltZFNpZ25Nb2RlOjpOb25lKTsKKyAg
ICAgICAgQVNTRVJUKHNjYWxhclR5cGVJc0ludGVncmFsKHNpbWRJbmZvLmxhbmUpKTsKKyAgICAg
ICAgVU5VU0VEX1BBUkFNKHNpbWRJbmZvKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGxvd2VyKTsK
KyAgICAgICAgVU5VU0VEX1BBUkFNKHVwcGVyKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGRlc3Qp
OworICAgIH0KKworICAgIHZvaWQgdmVjdG9yQ29udmVydChTaW1kSW5mbyBzaW1kSW5mbywgRlBS
ZWdpc3RlcklEIGlucHV0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChzY2FsYXJUeXBlSXNJbnRlZ3JhbChzaW1kSW5mby5sYW5lKSk7CisgICAgICAgIEFTU0VSVChl
bGVtZW50Qnl0ZVNpemUoc2ltZEluZm8ubGFuZSkgPT0gNCk7CisgICAgICAgIEFTU0VSVChzaW1k
SW5mby5zaWduTW9kZSAhPSBTaW1kU2lnbk1vZGU6Ok5vbmUpOworICAgICAgICBVTlVTRURfUEFS
QU0oc2ltZEluZm8pOworICAgICAgICBVTlVTRURfUEFSQU0oaW5wdXQpOworICAgICAgICBVTlVT
RURfUEFSQU0oZGVzdCk7CisgICAgfQorCisgICAgdm9pZCB2ZWN0b3JDb252ZXJ0TG93KFNpbWRJ
bmZvIHNpbWRJbmZvLCBGUFJlZ2lzdGVySUQgaW5wdXQsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKHNjYWxhclR5cGVJc0ludGVncmFsKHNpbWRJbmZvLmxhbmUpKTsK
KyAgICAgICAgQVNTRVJUKGVsZW1lbnRCeXRlU2l6ZShzaW1kSW5mby5sYW5lKSA9PSA0KTsKKyAg
ICAgICAgVU5VU0VEX1BBUkFNKHNpbWRJbmZvKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGlucHV0
KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGRlc3QpOworICAgIH0KKworICAgIHZvaWQgdmVjdG9y
U3BsYXQoU2ltZExhbmUgbGFuZSwgUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHNjYWxhclR5cGVJc0ludGVncmFsKGxhbmUpKTsKKyAgICAg
ICAgVU5VU0VEX1BBUkFNKGxhbmUpOworICAgICAgICBVTlVTRURfUEFSQU0oc3JjKTsKKyAgICAg
ICAgVU5VU0VEX1BBUkFNKGRlc3QpOworICAgIH0KKworICAgIHZvaWQgdmVjdG9yU3BsYXQ4KFJl
Z2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkgeyB2ZWN0b3JTcGxhdChTaW1kTGFuZTo6
aTh4MTYsIHNyYywgZGVzdCk7IH0KKyAgICB2b2lkIHZlY3RvclNwbGF0MTYoUmVnaXN0ZXJJRCBz
cmMsIEZQUmVnaXN0ZXJJRCBkZXN0KSB7IHZlY3RvclNwbGF0KFNpbWRMYW5lOjppMTZ4OCwgc3Jj
LCBkZXN0KTsgfQorICAgIHZvaWQgdmVjdG9yU3BsYXQzMihSZWdpc3RlcklEIHNyYywgRlBSZWdp
c3RlcklEIGRlc3QpIHsgdmVjdG9yU3BsYXQoU2ltZExhbmU6OmkzMng0LCBzcmMsIGRlc3QpOyB9
CisgICAgdm9pZCB2ZWN0b3JTcGxhdDY0KFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVz
dCkgeyB2ZWN0b3JTcGxhdChTaW1kTGFuZTo6aTY0eDIsIHNyYywgZGVzdCk7IH0KKworICAgIHZv
aWQgdmVjdG9yQWRkU2F0KFNpbWRJbmZvIHNpbWRJbmZvLCBGUFJlZ2lzdGVySUQgbGVmdCwgRlBS
ZWdpc3RlcklEIHJpZ2h0LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChzY2FsYXJUeXBlSXNJbnRlZ3JhbChzaW1kSW5mby5sYW5lKSk7CisgICAgICAgIEFTU0VSVChz
aW1kSW5mby5zaWduTW9kZSAhPSBTaW1kU2lnbk1vZGU6Ok5vbmUpOworICAgICAgICBVTlVTRURf
UEFSQU0oc2ltZEluZm8pOworICAgICAgICBVTlVTRURfUEFSQU0obGVmdCk7CisgICAgICAgIFVO
VVNFRF9QQVJBTShyaWdodCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShkZXN0KTsKKyAgICB9CisK
KyAgICB2b2lkIHZlY3RvclN1YlNhdChTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGxl
ZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBBU1NFUlQoc2NhbGFyVHlwZUlzSW50ZWdyYWwoc2ltZEluZm8ubGFuZSkpOworICAgICAgICBB
U1NFUlQoc2ltZEluZm8uc2lnbk1vZGUgIT0gU2ltZFNpZ25Nb2RlOjpOb25lKTsKKyAgICAgICAg
VU5VU0VEX1BBUkFNKHNpbWRJbmZvKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGxlZnQpOworICAg
ICAgICBVTlVTRURfUEFSQU0ocmlnaHQpOworICAgICAgICBVTlVTRURfUEFSQU0oZGVzdCk7Cisg
ICAgfQorCisgICAgdm9pZCB2ZWN0b3JMb2FkOFNwbGF0KEFkZHJlc3MgYWRkcmVzcywgRlBSZWdp
c3RlcklEIGRlc3QpIHsgVU5VU0VEX1BBUkFNKGFkZHJlc3MpOyBVTlVTRURfUEFSQU0oZGVzdCk7
IH0KKyAgICB2b2lkIHZlY3RvckxvYWQxNlNwbGF0KEFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3Rl
cklEIGRlc3QpIHsgVU5VU0VEX1BBUkFNKGFkZHJlc3MpOyBVTlVTRURfUEFSQU0oZGVzdCk7IH0K
KyAgICB2b2lkIHZlY3RvckxvYWQzMlNwbGF0KEFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3RlcklE
IGRlc3QpIHsgVU5VU0VEX1BBUkFNKGFkZHJlc3MpOyBVTlVTRURfUEFSQU0oZGVzdCk7IH0KKyAg
ICB2b2lkIHZlY3RvckxvYWQ2NFNwbGF0KEFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3RlcklEIGRl
c3QpIHsgVU5VU0VEX1BBUkFNKGFkZHJlc3MpOyBVTlVTRURfUEFSQU0oZGVzdCk7IH0KKworICAg
IHZvaWQgdmVjdG9yTG9hZDhMYW5lKEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGltbSwg
RlBSZWdpc3RlcklEIGRlc3QpIHsgVU5VU0VEX1BBUkFNKGFkZHJlc3MpOyBVTlVTRURfUEFSQU0o
aW1tKTsgVU5VU0VEX1BBUkFNKGRlc3QpOyB9CisgICAgdm9pZCB2ZWN0b3JMb2FkMTZMYW5lKEFk
ZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGltbSwgRlBSZWdpc3RlcklEIGRlc3QpIHsgVU5V
U0VEX1BBUkFNKGFkZHJlc3MpOyBVTlVTRURfUEFSQU0oaW1tKTsgVU5VU0VEX1BBUkFNKGRlc3Qp
OyB9CisgICAgdm9pZCB2ZWN0b3JMb2FkMzJMYW5lKEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZElt
bTMyIGltbSwgRlBSZWdpc3RlcklEIGRlc3QpIHsgVU5VU0VEX1BBUkFNKGFkZHJlc3MpOyBVTlVT
RURfUEFSQU0oaW1tKTsgVU5VU0VEX1BBUkFNKGRlc3QpOyB9CisgICAgdm9pZCB2ZWN0b3JMb2Fk
NjRMYW5lKEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGltbSwgRlBSZWdpc3RlcklEIGRl
c3QpIHsgVU5VU0VEX1BBUkFNKGFkZHJlc3MpOyBVTlVTRURfUEFSQU0oaW1tKTsgVU5VU0VEX1BB
UkFNKGRlc3QpOyB9CisKKyAgICB2b2lkIHZlY3RvckFueVRydWUoRlBSZWdpc3RlcklEIHZlYywg
UmVnaXN0ZXJJRCBkZXN0KSB7ICh2b2lkKSB2ZWM7ICh2b2lkKSBkZXN0OyB9CisgICAgdm9pZCB2
ZWN0b3JBbGxUcnVlKFNpbWRJbmZvIHNpbWRJbmZvLCBGUFJlZ2lzdGVySUQgdmVjLCBSZWdpc3Rl
cklEIGRlc3QpIHsgKHZvaWQpIHNpbWRJbmZvLCAodm9pZCkgdmVjOyAodm9pZCkgZGVzdDsgfQor
ICAgIHZvaWQgdmVjdG9yQml0bWFzayhTaW1kSW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIHZl
YywgUmVnaXN0ZXJJRCBkZXN0KSB7ICh2b2lkKSBzaW1kSW5mbywgKHZvaWQpIHZlYzsgKHZvaWQp
IGRlc3Q7IH0KKyAgICB2b2lkIHZlY3RvckV4dGFkZFBhaXJ3aXNlKFNpbWRJbmZvIHNpbWRJbmZv
LCBGUFJlZ2lzdGVySUQgdmVjLCBGUFJlZ2lzdGVySUQgZGVzdCkgeyAodm9pZCkgc2ltZEluZm8s
ICh2b2lkKSB2ZWM7ICh2b2lkKSBkZXN0OyB9CisgICAgdm9pZCB2ZWN0b3JBdmdSb3VuZChTaW1k
SW5mbyBzaW1kSW5mbywgRlBSZWdpc3RlcklEIGEsIEZQUmVnaXN0ZXJJRCBiLCBGUFJlZ2lzdGVy
SUQgZGVzdCkgeyAodm9pZCkgc2ltZEluZm8sICh2b2lkKSBhOyAodm9pZCkgYjsgKHZvaWQpIGRl
c3Q7IH0KKyAgICB2b2lkIHZlY3Rvck11bFNhdChGUFJlZ2lzdGVySUQgYSwgRlBSZWdpc3RlcklE
IGIsIEZQUmVnaXN0ZXJJRCBkZXN0KSB7ICh2b2lkKSBhOyAodm9pZCkgYjsgKHZvaWQpIGRlc3Q7
IH0KKyAgICB2b2lkIHZlY3RvckRvdFByb2R1Y3RJbnQzMihGUFJlZ2lzdGVySUQgYSwgRlBSZWdp
c3RlcklEIGIsIEZQUmVnaXN0ZXJJRCBkZXN0LCBGUFJlZ2lzdGVySUQpIHsgKHZvaWQpIGE7ICh2
b2lkKSBiOyAodm9pZCkgZGVzdDsgfQorICAgIHZvaWQgdmVjdG9yU3dpenpsZShGUFJlZ2lzdGVy
SUQgYSwgRlBSZWdpc3RlcklEIGIsIEZQUmVnaXN0ZXJJRCBkZXN0KSB7ICh2b2lkKSBhOyAodm9p
ZCkgYjsgKHZvaWQpIGRlc3Q7IH0KKyAgICB2b2lkIHZlY3RvclNodWZmbGUoVHJ1c3RlZEltbTY0
IGltbUxvdywgVHJ1c3RlZEltbTY0IGltbUhpZ2gsIEZQUmVnaXN0ZXJJRCBhLCBGUFJlZ2lzdGVy
SUQgYiwgRlBSZWdpc3RlcklEIGRlc3QpIHsgKHZvaWQpIGltbUxvdzsgKHZvaWQpIGltbUhpZ2g7
ICh2b2lkKSBhOyAodm9pZCkgYjsgKHZvaWQpIGRlc3Q7IH0KKworICAgIC8vIE1pc2MgaGVscGVy
IGZ1bmN0aW9ucy4KKwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludCgpIHsg
cmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVu
Y2F0ZSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5n
UG9pbnRTcXJ0KCkgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggYTQwZWM3ZGExYWI3Li41N2FlMzIxOTlmOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkFzc2VtYmxlckNvbW1vbi5oIgogI2luY2x1ZGUg
IkpJVENvbXBpbGF0aW9uRWZmb3J0LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJJbmZvLmgiCisjaW5j
bHVkZSAiU2ltZEluZm8uaCIKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxzdGRpbnQu
aD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtMzA3LDYgKzMwOCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIE9QMl9YQUREYiAgICAgICAgICAgPSAweEMwLAogICAgICAgICBPUDJfWEFE
RCAgICAgICAgICAgID0gMHhDMSwKICAgICAgICAgT1AyX1BFWFRSV19HZFVkSWIgICA9IDB4QzUs
CisgICAgICAgIE9QMl9TSFVGUFMgICAgICAgICAgPSAweEM2LAogICAgICAgICBPUDJfQlNXQVAg
ICAgICAgICAgID0gMHhDOCwKICAgICAgICAgT1AyX1BTTExRX1VkcUliICAgICA9IDB4NzMsCiAg
ICAgICAgIE9QMl9QU1JMUV9VZHFJYiAgICAgPSAweDczLApAQCAtMzE5LDYgKzMyMSwxMSBAQCBw
cml2YXRlOgogICAgICAgICBPUDNfTEZFTkNFICAgICAgICAgICA9IDB4RTgsCiAgICAgICAgIE9Q
M19NRkVOQ0UgICAgICAgICAgID0gMHhGMCwKICAgICAgICAgT1AzX1NGRU5DRSAgICAgICAgICAg
PSAweEY4LAorICAgICAgICBPUDNfUEVYVFJCICAgICAgICAgICA9IDB4MTQsCisgICAgICAgIE9Q
M19QRVhUUkQgICAgICAgICAgID0gMHgxNiwKKyAgICAgICAgT1AzX0VYVFJBQ1RQUyAgICAgICAg
PSAweDE3LAorICAgICAgICBPUDNfUElOU1JCICAgICAgICAgICA9IDB4MjAsCisgICAgICAgIE9Q
M19QSU5TUkQgICAgICAgICAgID0gMHgyMiwKICAgICB9IFRocmVlQnl0ZU9wY29kZUlEOwogCiAg
ICAgc3RydWN0IFZleFByZWZpeCB7CkBAIC0yMzYwLDYgKzIzNjcsNTQgQEAgcHVibGljOgogICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOwogICAgIH0KICNlbmRpZgorICAgIAorICAgIHZvaWQgcGluc3Io
WE1NUmVnaXN0ZXJJRCB2ZCwgUmVnaXN0ZXJJRCBybiwgU2ltZExhbmUgbGFuZSwgdWludDhfdCBs
YW5lSW5kZXgpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRf
U0laRSk7CisKKyAgICAgICAgaWYgKGxhbmUgPT0gU2ltZExhbmU6Omk2NHgyKSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChsYW5lSW5kZXggPCAyKTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLnRocmVlQnl0ZU9wNjQoT1AyXzNCWVRFX0VTQ0FQRV8zQSwgT1AzX1BJTlNSRCwgKFJlZ2lz
dGVySUQpIHZkLCBybik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KCh1aW50
OF90KSBsYW5lSW5kZXgpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHBleHRyKFJlZ2lzdGVySUQg
cmQsIFhNTVJlZ2lzdGVySUQgdm4sIFNpbWRMYW5lIGxhbmUsIHVpbnQ4X3QgbGFuZUluZGV4KQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworCisg
ICAgICAgIGlmIChsYW5lID09IFNpbWRMYW5lOjppOHgxNikgeworICAgICAgICAgICAgQVNTRVJU
KGxhbmVJbmRleCA8IDE2KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLnRocmVlQnl0ZU9wNjQo
T1AyXzNCWVRFX0VTQ0FQRV8zQSwgT1AzX1BFWFRSQiwgKFJlZ2lzdGVySUQpIHZuLCByZCk7Cisg
ICAgICAgIH0gZWxzZSBpZiAobGFuZSA9PSBTaW1kTGFuZTo6aTMyeDQpIHsKKyAgICAgICAgICAg
IEFTU0VSVChsYW5lSW5kZXggPCA0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLnRocmVlQnl0
ZU9wNjQoT1AyXzNCWVRFX0VTQ0FQRV8zQSwgT1AzX1BFWFRSRCwgKFJlZ2lzdGVySUQpIHZuLCBy
ZCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KCh1aW50OF90KSBsYW5lSW5k
ZXgpOworICAgIH0KKworICAgIHZvaWQgdmV4dHJhY3RwcyhGUFJlZ2lzdGVySUQgcmQsIFhNTVJl
Z2lzdGVySUQgdm4sIFNpbWRMYW5lIGxhbmUsIHVpbnQ4X3QgbGFuZUluZGV4KQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworCisgICAgICAgIGlm
IChsYW5lID09IFNpbWRMYW5lOjpmMzJ4NCkgeworICAgICAgICAgICAgQVNTRVJUKGxhbmVJbmRl
eCA8IDQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIudGhyZWVCeXRlT3A2NChPUDJfM0JZVEVf
RVNDQVBFXzNBLCBPUDNfRVhUUkFDVFBTLCAoUmVnaXN0ZXJJRCkgdm4sIChSZWdpc3RlcklEKSBy
ZCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KCh1aW50OF90KSBsYW5lSW5k
ZXgpOworICAgIH0KKworICAgIHZvaWQgc2h1ZnBzKFhNTVJlZ2lzdGVySUQgdmQsIFhNTVJlZ2lz
dGVySUQgdm4sIHVpbnQ4X3QgY29udHJvbEJpdHMpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci50d29CeXRlT3AoT1AyX1NIVUZQUywgKFJlZ2lzdGVySUQpIHZuLCAoUmVnaXN0ZXJJRCkgdmQp
OworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KCh1aW50OF90KSBjb250cm9sQml0cyk7
CisgICAgfQogCiAgICAgdm9pZCBtb3ZsX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRz
dCkKICAgICB7CkBAIC0zMTgxLDYgKzMyMzYsMjYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
bV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9NT1ZBUFNfVnBkV3BkLCAoUmVnaXN0ZXJJRClkc3Qs
IChSZWdpc3RlcklEKXNyYyk7CiAgICAgfQorICAgIAorICAgIHZvaWQgdm1vdnVwc19tcihpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIudmV4V2lnVHdvQnl0ZU9wKE9QXzJCWVRFX0VTQ0FQRSwgT1AyX01PVlNE
X1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHZtb3Z1cHNfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUsIFhNTVJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIudmV4V2lnVHdvQnl0ZU9wKE9QXzJCWVRFX0VTQ0FQRSwgT1AyX01PVlNEX1ZzZFdz
ZCwgKFJlZ2lzdGVySUQpZHN0LCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgdm1vdnVwc19ybShYTU1SZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudmV4V2lnVHdvQnl0
ZU9wKE9QXzJCWVRFX0VTQ0FQRSwgT1AyX01PVlNEX1dzZFZzZCwgKFJlZ2lzdGVySUQpc3JjLCBi
YXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHZtb3Z1cHNfcm0oWE1NUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudmV4V2lnVHdvQnl0ZU9wKE9Q
XzJCWVRFX0VTQ0FQRSwgT1AyX01PVlNEX1dzZFZzZCwgKFJlZ2lzdGVySUQpc3JjLCBvZmZzZXQs
IGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQogCiAgICAgdm9pZCBtb3ZzZF9ycihYTU1SZWdp
c3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtNDMyOCw5ICs0NDAzLDgg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIDB4RjI6CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAzOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICB9OwpAQCAtNDQ1OSw2ICs0NTMzLDIyIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk1BZGRyKHJlZywgYWRkcmVzcyk7CiAgICAg
ICAgIH0KIAorICAgICAgICB2b2lkIHZleFdpZ1R3b0J5dGVPcChPbmVCeXRlT3Bjb2RlSUQgc2lt
ZFByZWZpeCwgVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3Rl
cklEIGJhc2UsIGludCBvZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3Ry
dWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIu
dGhyZWVCeXRlc1ZleE5kcyhzaW1kUHJlZml4LCBWZXhJbXBsaWVkQnl0ZXM6OlR3b0J5dGVzT3As
IGRlc3QsIChSZWdpc3RlcklEKSAwLCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRl
VW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0oZGVzdCwg
YmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgdmV4V2lnVHdvQnl0ZU9w
KE9uZUJ5dGVPcGNvZGVJRCBzaW1kUHJlZml4LCBUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBSZWdp
c3RlcklEIGRlc3QsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1
ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLnRocmVlQnl0
ZXNWZXhOZHMoc2ltZFByZWZpeCwgVmV4SW1wbGllZEJ5dGVzOjpUd29CeXRlc09wLCBkZXN0LCAo
UmVnaXN0ZXJJRCkgMCwgaW5kZXgsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVV
bmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShkZXN0LCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIHZl
eE5kc0xpZ1dpZ1R3b0J5dGVPcChPbmVCeXRlT3Bjb2RlSUQgc2ltZFByZWZpeCwgVHdvQnl0ZU9w
Y29kZUlEIG9wY29kZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIGEsIFJlZ2lzdGVySUQg
YikKICAgICAgICAgewogICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIg
d3JpdGVyKG1fYnVmZmVyKTsKQEAgLTQ2MzEsNiArNDcyMSwxNiBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKICAgICAgICAgICAgIHdyaXRl
ci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgIHZvaWQgdGhyZWVCeXRlT3A2NChUd29CeXRlT3Bjb2Rl
SUQgdHdvQnl0ZVByZWZpeCwgVGhyZWVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdp
c3RlcklEIHJtKQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZl
cldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXgodHJ1
ZSwgcmVnLCAwLCBybSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8y
QllURV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQodHdvQnl0
ZVByZWZpeCk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwor
ICAgICAgICAgICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7CisgICAgICAgIH0KICNl
bmRpZgogCiAgICAgICAgIC8vIEJ5dGUtb3BlcmFuZHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmgKaW5kZXggMWRlNWI1ZGZkMmQ1Li5jNDJhMGNkZWIx
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFs
dWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmgK
QEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBBcmd1bWVudFJlZ1ZhbHVlIGZpbmFsIDogcHVibGljIFZhbHVl
IHsKKyAgICBzdHJ1Y3QgVmVjdG9yVGFnIHsgfTsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBh
Y2NlcHRzKEtpbmQga2luZCkgeyByZXR1cm4ga2luZCA9PSBBcmd1bWVudFJlZzsgfQogICAgIApA
QCAtNDIsMTMgKzQzLDE2IEBAIHB1YmxpYzoKIAogICAgIEIzX1NQRUNJQUxJWkVfVkFMVUVfRk9S
X05PX0NISUxEUkVOCiAKKyAgICBXVEZfSU5URVJOQUwgc3RhdGljIGNvbnN0ZXhwciBWZWN0b3JU
YWcgdXNlRnVsbFJlZ2lzdGVyID0geyB9OworCiBwcml2YXRlOgogICAgIHZvaWQgZHVtcE1ldGEo
Q29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbDsKIAogICAgIGZyaWVuZCBj
bGFzcyBQcm9jZWR1cmU7CiAgICAgZnJpZW5kIGNsYXNzIFZhbHVlOwotICAgIAorCiAgICAgc3Rh
dGljIE9wY29kZSBvcGNvZGVGcm9tQ29uc3RydWN0b3IoT3JpZ2luLCBSZWcpIHsgcmV0dXJuIEFy
Z3VtZW50UmVnOyB9CisgICAgc3RhdGljIE9wY29kZSBvcGNvZGVGcm9tQ29uc3RydWN0b3IoT3Jp
Z2luLCBSZWcsIFZlY3RvclRhZykgeyByZXR1cm4gQXJndW1lbnRSZWc7IH0KIAogICAgIEFyZ3Vt
ZW50UmVnVmFsdWUoT3JpZ2luIG9yaWdpbiwgUmVnIHJlZykKICAgICAgICAgOiBWYWx1ZShDaGVj
a2VkT3Bjb2RlLCBBcmd1bWVudFJlZywgcmVnLmlzR1BSKCkgPyBwb2ludGVyVHlwZSgpIDogRG91
YmxlLCBaZXJvLCBvcmlnaW4pCkBAIC01Nyw2ICs2MSwxNCBAQCBwcml2YXRlOgogICAgICAgICBB
U1NFUlQocmVnLmlzU2V0KCkpOwogICAgIH0KIAorICAgIEFyZ3VtZW50UmVnVmFsdWUoT3JpZ2lu
IG9yaWdpbiwgUmVnIHJlZywgVmVjdG9yVGFnKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNv
ZGUsIEFyZ3VtZW50UmVnLCBWMTI4LCBaZXJvLCBvcmlnaW4pCisgICAgICAgICwgbV9yZWcocmVn
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZy5pc1NldCgpKTsKKyAgICAgICAgQVNTRVJUKHJl
Zy5pc0ZQUigpKTsKKyAgICB9CisKICAgICBSZWcgbV9yZWc7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0JhbmsuY3BwCmluZGV4IDZkZDM2NmMxZjVjZS4uNzM1Mjc4MWE5Y2UyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNCYW5rLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkIzQmFuay5oIgogCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQogI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTQ3LDUgKzQ1
LDMgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QjM6OkJhbmsg
YmFuaykKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklU
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFuay5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQmFuay5oCmluZGV4IDViZWJmMjZhYzRjNy4uYTZmZTM5ODQ1
NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYW5rLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFuay5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQogI2luY2x1ZGUgIkIzVHlwZS5oIgog
I2luY2x1ZGUgIlJlZy5oIgogCkBAIC00Niw2ICs0NCwxMiBAQCB2b2lkIGZvckVhY2hCYW5rKGNv
bnN0IEZ1bmMmIGZ1bmMpCiAgICAgZnVuYyhGUCk7CiB9CiAKK2lubGluZSBCYW5rIGJhbmtGb3JS
ZWcoUmVnIHJlZykKK3sKKyAgICByZXR1cm4gcmVnLmlzR1BSKCkgPyBHUCA6IEZQOworfQorCisj
aWYgRU5BQkxFKEIzX0pJVCkKIGlubGluZSBCYW5rIGJhbmtGb3JUeXBlKFR5cGUgdHlwZSkKIHsK
ICAgICBzd2l0Y2ggKHR5cGUua2luZCgpKSB7CkBAIC01OCwxNiArNjIsMTMgQEAgaW5saW5lIEJh
bmsgYmFua0ZvclR5cGUoVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gR1A7CiAgICAgY2FzZSBG
bG9hdDoKICAgICBjYXNlIERvdWJsZToKKyAgICBjYXNlIFYxMjg6CiAgICAgICAgIHJldHVybiBG
UDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEdQOwogfQot
Ci1pbmxpbmUgQmFuayBiYW5rRm9yUmVnKFJlZyByZWcpCi17Ci0gICAgcmV0dXJuIHJlZy5pc0dQ
UigpID8gR1AgOiBGUDsKLX0KKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjMKIApAQCAtNzksNSArODAsMyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mLCBKU0M6OkIzOjpCYW5rKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKLSNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDb25zdDEyOFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0
MTI4VmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTBl
NmNmZjM2MTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Q29uc3QxMjhWYWx1ZS5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJC
M0NvbnN0MTI4VmFsdWUuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgeworCitDb25zdDEyOFZhbHVlOjp+Q29uc3QxMjhWYWx1ZSgpCit7Cit9
CisKK3ZvaWQgQ29uc3QxMjhWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoY29tbWEsIG1fdmFsdWUudTY0
eDJbMF0sIGNvbW1hLCBtX3ZhbHVlLnU2NHgyWzFdKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QxMjhWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQ29uc3QxMjhWYWx1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uY2JlZWVmODlmMzc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQ29uc3QxMjhWYWx1ZS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShCM19KSVQpCisKKyNpbmNsdWRlICJCM1ZhbHVlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgeworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBDb25zdDEyOFZhbHVlIDogcHVi
bGljIFZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkg
eyByZXR1cm4ga2luZCA9PSBDb25zdDEyODsgfQorICAgIAorICAgIH5Db25zdDEyOFZhbHVlKCkg
b3ZlcnJpZGU7CisgICAgCisgICAgdjEyOF90IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZTsgfQorCisgICAgQjNfU1BFQ0lBTElaRV9WQUxVRV9GT1JfTk9fQ0hJTERSRU4KKworcHJvdGVj
dGVkOgorICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25z
dCBvdmVycmlkZTsKKworICAgIENvbnN0MTI4VmFsdWUoT3JpZ2luIG9yaWdpbiwgdjEyOF90IHZh
bHVlKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIENvbnN0MTI4LCBWMTI4LCBaZXJv
LCBvcmlnaW4pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCitwcml2
YXRlOgorICAgIHN0YXRpYyBPcGNvZGUgb3Bjb2RlRnJvbUNvbnN0cnVjdG9yKE9yaWdpbiwgdjEy
OF90KSB7IHJldHVybiBDb25zdDEyODsgfQorICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Cisg
ICAgZnJpZW5kIGNsYXNzIFZhbHVlOworCisgICAgdjEyOF90IG1fdmFsdWU7Cit9OworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNz
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJl
eHByZXNzaW9ucy5jcHAKaW5kZXggMzRlMGY0MWE2MzIwLi40ZGY1ZTM2YzU4MjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Np
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25T
dWJleHByZXNzaW9ucy5jcHAKQEAgLTE1NSw2ICsxNTUsOSBAQCBzdHJ1Y3QgSW1wdXJlQmxvY2tE
YXRhIHsKICAgICBIYXNoTWFwPFZhbHVlKiwgVmFsdWUqPiBtX2NhbmRpZGF0ZVdhc21BZGRyZXNz
ZXNBdFRhaWw7CiB9OwogCisvLyBPT1BTOiBEbyBtb3JlIGhlcmUgZm9yIHZhcmlvdXMgd2FzbSBs
b2FkL3N0b3JlIGtpbmRzLiBBdCB0aGUgdmVyeSBsZWFzdCwgd2UgY2FuIHJlbW92ZQorLy8gdHJp
dmlhbCByZWR1bmRhbmNpZXMuCisKIGNsYXNzIENTRSB7CiBwdWJsaWM6CiAgICAgQ1NFKFByb2Nl
ZHVyZSYgcHJvYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
TWFjcm9zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcApp
bmRleCA4M2E4MGY3NmRhMWYuLmM4MzQ0NDFmYWJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyTWFjcm9zLmNwcApAQCAtNTc1LDcgKzU3NSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsKICAgICAg
ICAgICAgICAgICAvLyBUZWNobmljYWxseSwgd2UgZG9uJ3QgaGF2ZSB0byBjbG9iYmVyIG1hY3Jv
IHJlZ2lzdGVycyBvbiBYODZfNjQuIFRoaXMgaXMgcHJvYmFibHkKICAgICAgICAgICAgICAgICAv
LyBPSyB0aG91Z2guCi0gICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3Rl
clNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICAgICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygp
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBCaXRWZWN0b3IgaGFuZGxlZElu
ZGljZXM7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gc3RhcnQ7IGkgPCBlbmQ7
ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fp
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCBk
NDIyYzM4MDJmYTYuLmJkNmM0ZDVlMGM2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAKQEAgLTc5OCw2ICs3OTgsODcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIHRyeU9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBBaXI6Ok9vcHMsIEFpcjo6
T29wcywgdHlwZSk7CiAgICAgfQogCisgICAgQWlyOjpPcGNvZGUgc2ltZE9wY29kZShTaW1kTGFu
ZSBsYW5lLCBBaXI6Ok9wY29kZSBpOCwgQWlyOjpPcGNvZGUgaTE2LCBBaXI6Ok9wY29kZSBpMzIs
IEFpcjo6T3Bjb2RlIGk2NCwgQWlyOjpPcGNvZGUgZjMyLCBBaXI6Ok9wY29kZSBmNjQpCisgICAg
eworICAgICAgICBpZiAoc2NhbGFyVHlwZUlzRmxvYXRpbmdQb2ludChsYW5lKSkgeworICAgICAg
ICAgICAgc3dpdGNoIChlbGVtZW50Qnl0ZVNpemUobGFuZSkpIHsKKyAgICAgICAgICAgIGNhc2Ug
NDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZjMyOworICAgICAgICAgICAgY2FzZSA4OgorICAg
ICAgICAgICAgICAgIHJldHVybiBmNjQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBzd2l0Y2ggKGVsZW1lbnRCeXRlU2l6ZShsYW5lKSkgeworICAgICAgICAg
ICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIHJldHVybiBpODsKKyAgICAgICAgICAgIGNhc2Ug
MjoKKyAgICAgICAgICAgICAgICByZXR1cm4gaTE2OworICAgICAgICAgICAgY2FzZSA0OgorICAg
ICAgICAgICAgICAgIHJldHVybiBpMzI7CisgICAgICAgICAgICBjYXNlIDg6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGk2NDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgQWlyOjpPcGNvZGUgc2lt
ZE9wY29kZShTaW1kTGFuZSBsYW5lLCBTaW1kU2lnbk1vZGUgc2lnbk1vZGUsIEFpcjo6T3Bjb2Rl
IHVuc2lnbmVkSTgsIEFpcjo6T3Bjb2RlIHNpZ25lZEk4LCBBaXI6Ok9wY29kZSB1bnNpZ25lZEkx
NiwgQWlyOjpPcGNvZGUgc2lnbmVkSTE2LCBBaXI6Ok9wY29kZSBpMzIsIEFpcjo6T3Bjb2RlIGk2
NCwgQWlyOjpPcGNvZGUgZjMyLCBBaXI6Ok9wY29kZSBmNjQpCisgICAgeworICAgICAgICBpZiAo
c2NhbGFyVHlwZUlzRmxvYXRpbmdQb2ludChsYW5lKSkgeworICAgICAgICAgICAgc3dpdGNoIChl
bGVtZW50Qnl0ZVNpemUobGFuZSkpIHsKKyAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZjMyOworICAgICAgICAgICAgY2FzZSA4OgorICAgICAgICAgICAgICAgIHJl
dHVybiBmNjQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBz
d2l0Y2ggKGVsZW1lbnRCeXRlU2l6ZShsYW5lKSkgeworICAgICAgICAgICAgY2FzZSAxOgorICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNpZ25Nb2RlID09IFNpbWRTaWduTW9kZTo6U2ln
bmVkIHx8IHNpZ25Nb2RlID09IFNpbWRTaWduTW9kZTo6VW5zaWduZWQpOworICAgICAgICAgICAg
ICAgIHJldHVybiBzaWduTW9kZSA9PSBTaW1kU2lnbk1vZGU6OlNpZ25lZCA/IHNpZ25lZEk4IDog
dW5zaWduZWRJODsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChzaWduTW9kZSA9PSBTaW1kU2lnbk1vZGU6OlNpZ25lZCB8fCBzaWduTW9kZSA9PSBT
aW1kU2lnbk1vZGU6OlVuc2lnbmVkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2lnbk1vZGUg
PT0gU2ltZFNpZ25Nb2RlOjpTaWduZWQgPyBzaWduZWRJMTYgOiB1bnNpZ25lZEkxNjsKKyAgICAg
ICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICByZXR1cm4gaTMyOworICAgICAgICAgICAg
Y2FzZSA4OgorICAgICAgICAgICAgICAgIHJldHVybiBpNjQ7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKwor
I2RlZmluZSBHRVRfU0lNRF9PUENPREUoaW5mbywgb3Bjb2RlKSBcCisgICAgc2ltZE9wY29kZShs
YW5lLCBvcGNvZGUjI0ludDgsIG9wY29kZSMjSW50MTYsIG9wY29kZSMjSW50MzIsIG9wY29kZSMj
SW50NjQsIG9wY29kZSMjRmxvYXQzMiwgb3Bjb2RlIyNGbG9hdDY0KQorCisjZGVmaW5lIEdFVF9T
SUdORURfU0lNRF9PUENPREUobGFuZSwgc2lnbk1vZGUsIG9wY29kZSkgXAorICAgIHNpbWRPcGNv
ZGUobGFuZSwgc2lnbk1vZGUsIG9wY29kZSMjVW5zaWduZWRJbnQ4LCBvcGNvZGUjI1NpZ25lZElu
dDgsIG9wY29kZSMjVW5zaWduZWRJbnQxNiwgb3Bjb2RlIyNTaWduZWRJbnQxNiwgb3Bjb2RlIyNJ
bnQzMiwgb3Bjb2RlIyNJbnQ2NCwgb3Bjb2RlIyNGbG9hdDMyLCBvcGNvZGUjI0Zsb2F0NjQpCisK
KyAgICB2b2lkIGVtaXRTaW1kQ29tcGFyZShBaXI6OkFyZyByZWxDb25kLCBBaXI6OkFyZyBkb3Vi
bGVDb25kKQorICAgIHsKKyAgICAgICAgU2ltZFZhbHVlKiB2YWx1ZSA9IG1fdmFsdWUtPmFzPFNp
bWRWYWx1ZT4oKTsKKyAgICAgICAgYXV0byBsYW5lID0gdmFsdWUtPnNpbWRMYW5lKCk7CisgICAg
ICAgIGJvb2wgaXNGbG9hdGluZ1BvaW50ID0gc2NhbGFyVHlwZUlzRmxvYXRpbmdQb2ludChsYW5l
KTsKKyAgICAgICAgYXV0byBjb25kID0gaXNGbG9hdGluZ1BvaW50ID8gZG91YmxlQ29uZCA6IHJl
bENvbmQ7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvbmQpOworICAgICAgICBhcHBlbmQoaXNG
bG9hdGluZ1BvaW50ID8gQWlyOjpDb21wYXJlRmxvYXRpbmdQb2ludFZlY3RvciA6IEFpcjo6Q29t
cGFyZUludGVnZXJWZWN0b3IsIAorICAgICAgICAgICAgY29uZCwgQXJnOjpzaW1kSW5mbyh2YWx1
ZS0+c2ltZEluZm8oKSksIHRtcCh2YWx1ZS0+Y2hpbGQoMCkpLCB0bXAodmFsdWUtPmNoaWxkKDEp
KSwgdG1wKHZhbHVlKSk7CisgICAgfQorCisgICAgdm9pZCBlbWl0U2ltZEJpbmFyeU9wKEFpcjo6
T3Bjb2RlIG9wKQorICAgIHsKKyAgICAgICAgU2ltZFZhbHVlKiB2YWx1ZSA9IG1fdmFsdWUtPmFz
PFNpbWRWYWx1ZT4oKTsKKyAgICAgICAgYXBwZW5kKG9wLCBBcmc6OnNpbWRJbmZvKHZhbHVlLT5z
aW1kSW5mbygpKSwgdG1wKHZhbHVlLT5jaGlsZCgwKSksIHRtcCh2YWx1ZS0+Y2hpbGQoMSkpLCB0
bXAodmFsdWUpKTsKKyAgICB9CisKKyAgICB2b2lkIGVtaXRTaW1kVW5hcnlPcChBaXI6Ok9wY29k
ZSBvcCkKKyAgICB7CisgICAgICAgIFNpbWRWYWx1ZSogdmFsdWUgPSBtX3ZhbHVlLT5hczxTaW1k
VmFsdWU+KCk7CisgICAgICAgIGFwcGVuZChvcCwgQXJnOjpzaW1kSW5mbyh2YWx1ZS0+c2ltZElu
Zm8oKSksIHRtcCh2YWx1ZS0+Y2hpbGQoMCkpLCB0bXAodmFsdWUpKTsKKyAgICB9CisKICAgICB0
ZW1wbGF0ZTxBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIEFpcjo6
T3Bjb2RlIG9wY29kZURvdWJsZSA9IEFpcjo6T29wcywgQWlyOjpPcGNvZGUgb3Bjb2RlRmxvYXQg
PSBBaXI6Ok9vcHM+CiAgICAgdm9pZCBhcHBlbmRVbk9wKFZhbHVlKiB2YWx1ZSkKICAgICB7CkBA
IC0xMTg5LDYgKzEyNzAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXR1cm4gTW92
ZURvdWJsZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFdpZHRoMTI4OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM2NEJpdCgpKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gRlApOworICAgICAgICAgICAgcmV0dXJuIE1v
dmVWZWN0b3I7CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CkBAIC0xODU1LDYgKzE5NDAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxlZnQuY29uc3VtZSgqdGhpcyksIHJpZ2h0LmNvbnN1bWUoKnRoaXMpKSk7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEluc3Qo
KTsKKyAgICAgICAgICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICB9LApAQCAtMTg4NSw2ICsxOTcyLDggQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0LmNvbnN1bWUoKnRoaXMpLCByaWdodC5jb25z
dW1lKCp0aGlzKSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBJbnN0KCk7CisgICAgICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgfSwKQEAgLTE5MzMsNiArMjAyMiw4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdC5jb25zdW1lKCp0aGlz
KSwgcmlnaHQuY29uc3VtZSgqdGhpcyksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJbnN0KCk7CisgICAgICAgICAgICAg
ICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgfSwKQEAgLTE5NTcsNiArMjA0OCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGVmdC5jb25zdW1lKCp0aGlzKSwgcmlnaHQuY29uc3VtZSgqdGhpcyksIHRtcCht
X3ZhbHVlKSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBJbnN0KCk7CisgICAgICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgfSwKQEAgLTIwMjQsNiArMjExNyw4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RJbnN0cnVjdGlv
bihjb25maWcubW92ZUNvbmRpdGlvbmFsbHkzMiwgcmVsQ29uZCwgbGVmdCwgcmlnaHQpOwogICAg
ICAgICAgICAgICAgIGNhc2UgV2lkdGg2NDoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNy
ZWF0ZVNlbGVjdEluc3RydWN0aW9uKGNvbmZpZy5tb3ZlQ29uZGl0aW9uYWxseTY0LCByZWxDb25k
LCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgfSwKQEAgLTIwMzksNiArMjEzNCw4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RJbnN0cnVj
dGlvbihjb25maWcubW92ZUNvbmRpdGlvbmFsbHlUZXN0MzIsIHJlc0NvbmQsIGxlZnQsIHJpZ2h0
KTsKICAgICAgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBjcmVhdGVTZWxlY3RJbnN0cnVjdGlvbihjb25maWcubW92ZUNvbmRpdGlvbmFsbHlUZXN0
NjQsIHJlc0NvbmQsIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgICAgICBjYXNlIFdpZHRoMTI4
OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9LApAQCAtMjMxNCw2
ICsyNDExLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFdpZHRoMzI6CiAgICAg
ICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1v
dmVGb3JUeXBlKGF0b21pYy0+YWNjZXNzVHlwZSgpKSwgZXhwZWN0ZWRWYWx1ZVRtcCwgdmFsdWVS
ZXN1bHRUbXApOwpAQCAtMjMzMCw2ICsyNDMwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjYXNlIFdpZHRoNjQ6CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRyYXBwaW5nKEFpcjo6
QnJhbmNoNjQsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpLCB2YWx1ZVJlc3Vs
dFRtcCwgZXhwZWN0ZWRWYWx1ZVRtcCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgV2lkdGgxMjg6CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+c2V0
U3VjY2Vzc29ycyhzdWNjZXNzLCBmYWlsdXJlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0yNDg4LDYgKzI1OTEsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBXaWR0aDY0Ogog
ICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBNb3ZlOwogICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02
NCgpKTsKQEAgLTI2MzcsNiArMjc0Myw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAorICAgICAgICAvLyBPT1BTOiBCZSBhYmxlIHRvIGlTZWxlY3QgTG9hZFNw
bGF0CisKICAgICAgICAgY2FzZSBMb2FkOFo6IHsKICAgICAgICAgICAgIEFpcjo6S2luZCBraW5k
ID0gTG9hZDg7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhh
c0ZlbmNlKCkpIHsKQEAgLTM1ODQsNiArMzY5MiwyNDIgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgQjM6Olplcm9FeHRlbmQ2NFRvVmVj
dG9yOgorICAgICAgICAgICAgYXBwZW5kKE1vdmVEb3VibGUsIHRtcChtX3ZhbHVlLT5jaGlsZCgw
KSksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBC
Mzo6VmVjdG9yRXh0cmFjdExhbmU6IHsKKyAgICAgICAgICAgIFNpbWRWYWx1ZSogdmFsdWUgPSBt
X3ZhbHVlLT5hczxTaW1kVmFsdWU+KCk7CisgICAgICAgICAgICBhdXRvIGxhbmUgPSB2YWx1ZS0+
c2ltZExhbmUoKTsKKyAgICAgICAgICAgIGF1dG8gc2lnbk1vZGUgPSB2YWx1ZS0+c2lnbk1vZGUo
KTsKKyAgICAgICAgICAgIGFwcGVuZChHRVRfU0lHTkVEX1NJTURfT1BDT0RFKGxhbmUsIHNpZ25N
b2RlLCBBaXI6OlZlY3RvckV4dHJhY3RMYW5lKSwgQXJnOjppbW0odmFsdWUtPmltbWVkaWF0ZSgw
KSksIHRtcCh2YWx1ZS0+Y2hpbGQoMCkpLCB0bXAodmFsdWUpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQjM6OlZlY3RvclJlcGxhY2VMYW5lOiB7Cisg
ICAgICAgICAgICBTaW1kVmFsdWUqIHZhbHVlID0gbV92YWx1ZS0+YXM8U2ltZFZhbHVlPigpOwor
ICAgICAgICAgICAgYXV0byBsYW5lID0gdmFsdWUtPnNpbWRMYW5lKCk7CisgICAgICAgICAgICBh
dXRvIHJlcGxhY2VtZW50U2NhbGFyID0gdG1wKHZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAg
ICBUbXAgcmVzdWx0ID0gdG1wKHZhbHVlKTsKKyAgICAgICAgICAgIGFwcGVuZChBaXI6Ok1vdmVW
ZWN0b3IsIHRtcCh2YWx1ZS0+Y2hpbGQoMCkpLCByZXN1bHQpOworICAgICAgICAgICAgYXBwZW5k
KEdFVF9TSU1EX09QQ09ERShsYW5lLCBBaXI6OlZlY3RvclJlcGxhY2VMYW5lKSwgQXJnOjppbW0o
dmFsdWUtPmltbWVkaWF0ZSgwKSksIHJlcGxhY2VtZW50U2NhbGFyLCByZXN1bHQpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBCMzo6VmVjdG9yU3BsYXQ6
IHsKKyAgICAgICAgICAgIFNpbWRWYWx1ZSogdmFsdWUgPSBtX3ZhbHVlLT5hczxTaW1kVmFsdWU+
KCk7CisgICAgICAgICAgICBTaW1kTGFuZSBsYW5lID0gdmFsdWUtPnNpbWRMYW5lKCk7CisgICAg
ICAgICAgICBUbXAgc2NhbGFyID0gdG1wKHZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICBp
ZiAoc2NhbGFyVHlwZUlzRmxvYXRpbmdQb2ludChsYW5lKSkgeworICAgICAgICAgICAgICAgIFRt
cCBncENhc3QgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoZWxl
bWVudEJ5dGVTaXplKGxhbmUpID09IDQgPyBBaXI6Ok1vdmVGbG9hdFRvMzIgOiBBaXI6Ok1vdmVE
b3VibGVUbzY0LCBzY2FsYXIsIGdwQ2FzdCk7CisgICAgICAgICAgICAgICAgc2NhbGFyID0gZ3BD
YXN0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcDsKKyAgICAg
ICAgICAgIHN3aXRjaCAoZWxlbWVudEJ5dGVTaXplKGxhbmUpKSB7CisgICAgICAgICAgICBjYXNl
IDE6CisgICAgICAgICAgICAgICAgb3AgPSBWZWN0b3JTcGxhdDg7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgb3AgPSBWZWN0b3JT
cGxhdDE2OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA0OgorICAg
ICAgICAgICAgICAgIG9wID0gVmVjdG9yU3BsYXQzMjsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgICAgICBvcCA9IFZlY3RvclNwbGF0NjQ7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBhcHBlbmQob3AsIHNjYWxhciwgdG1wKHZhbHVlKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBjYXNlIEIzOjpWZWN0b3JTaHI6CisgICAgICAgIGNh
c2UgQjM6OlZlY3RvclNobDogeworICAgICAgICAgICAgU2ltZFZhbHVlKiB2YWx1ZSA9IG1fdmFs
dWUtPmFzPFNpbWRWYWx1ZT4oKTsKKyAgICAgICAgICAgIFNpbWRMYW5lIGxhbmUgPSB2YWx1ZS0+
c2ltZExhbmUoKTsKKworICAgICAgICAgICAgaW50MzJfdCBtYXNrID0gKGVsZW1lbnRCeXRlU2l6
ZShsYW5lKSAqIENIQVJfQklUKSAtIDE7CisKKyAgICAgICAgICAgIC8vIE9PUFM6IE1hdGNoIGlt
bSBzaGlmdHMgaGVyZSBzbyB3ZSBkb24ndCBoYXZlIGNyYXAgY29kZWdlbiEKKyAgICAgICAgICAg
IGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgICAgICBUbXAgc2hpZnRBbW91bnQgPSBtX2Nv
ZGUubmV3VG1wKEdQKTsKKyAgICAgICAgICAgICAgICBUbXAgc2hpZnRWZWN0b3IgPSBtX2NvZGUu
bmV3VG1wKEZQKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoQW5kMzIsIEFyZzo6Yml0SW1tKG1h
c2spLCB0bXAodmFsdWUtPmNoaWxkKDEpKSwgc2hpZnRBbW91bnQpOworICAgICAgICAgICAgICAg
IGlmICh2YWx1ZS0+b3Bjb2RlKCkgPT0gQjM6OlZlY3RvclNocikgeworICAgICAgICAgICAgICAg
ICAgICAvLyBBUk02NCBkb2Vzbid0IGhhdmUgYSB2ZXJzaW9uIG9mIHRoaXMgaW5zdHJ1Y3Rpb24g
Zm9yIHJpZ2h0IHNoaWZ0LiBJbnN0ZWFkLCBpZiB0aGUgaW5wdXQgdG8KKyAgICAgICAgICAgICAg
ICAgICAgLy8gbGVmdCBzaGlmdCBpcyBuZWdhdGl2ZSwgaXQncyBhIHJpZ2h0IHNoaWZ0IGJ5IHRo
ZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGF0IGFtb3VudC4KKyAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kKE5lZzMyLCBzaGlmdEFtb3VudCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGFwcGVuZChWZWN0b3JTcGxhdDgsIHNoaWZ0QW1vdW50LCBzaGlmdFZlY3Rvcik7CisgICAg
ICAgICAgICAgICAgYXBwZW5kKHZhbHVlLT5zaWduTW9kZSgpID09IFNpbWRTaWduTW9kZTo6U2ln
bmVkID8gVmVjdG9yU3NobCA6IFZlY3RvclVzaGwsIHRtcCh2YWx1ZS0+Y2hpbGQoMCkpLCBzaGlm
dFZlY3RvciwgdG1wKHZhbHVlKSk7CisKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIE9PUFM6IGRvIHg4NgorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQjM6OlZl
Y3RvckVxdWFsOgorICAgICAgICAgICAgZW1pdFNpbWRDb21wYXJlKEFpcjo6QXJnOjpyZWxDb25k
KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCksIEFpcjo6QXJnOjpkb3VibGVDb25kKE1hY3JvQXNzZW1i
bGVyOjpEb3VibGVFcXVhbEFuZE9yZGVyZWQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgY2FzZSBCMzo6VmVjdG9yTm90RXF1YWw6CisgICAgICAgICAgICBlbWl0U2ltZENvbXBhcmUo
QWlyOjpBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSwgQWlyOjpBcmc6OmRv
dWJsZUNvbmQoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBCMzo6VmVjdG9yTGVzc1RoYW46CisgICAg
ICAgICAgICBlbWl0U2ltZENvbXBhcmUoQWlyOjpBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6
Okxlc3NUaGFuKSwgQWlyOjpBcmc6OmRvdWJsZUNvbmQoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxl
c3NUaGFuQW5kT3JkZXJlZCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEIz
OjpWZWN0b3JMZXNzVGhhbk9yRXF1YWw6CisgICAgICAgICAgICBlbWl0U2ltZENvbXBhcmUoQWly
OjpBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuT3JFcXVhbCksIEFpcjo6QXJn
Ojpkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhhbk9yRXF1YWxBbmRPcmRl
cmVkKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgQjM6OlZlY3RvckJlbG93
OgorICAgICAgICAgICAgZW1pdFNpbWRDb21wYXJlKEFpcjo6QXJnOjpyZWxDb25kKE1hY3JvQXNz
ZW1ibGVyOjpCZWxvdyksIEFpcjo6QXJnKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBjYXNlIEIzOjpWZWN0b3JCZWxvd09yRXF1YWw6CisgICAgICAgICAgICBlbWl0U2ltZENvbXBh
cmUoQWlyOjpBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JFcXVhbCksIEFpcjo6
QXJnKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEIzOjpWZWN0b3JHcmVh
dGVyVGhhbjoKKyAgICAgICAgICAgIGVtaXRTaW1kQ29tcGFyZShBaXI6OkFyZzo6cmVsQ29uZChN
YWNyb0Fzc2VtYmxlcjo6R3JlYXRlclRoYW4pLCBBaXI6OkFyZzo6ZG91YmxlQ29uZChNYWNyb0Fz
c2VtYmxlcjo6RG91YmxlR3JlYXRlclRoYW5BbmRPcmRlcmVkKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGNhc2UgQjM6OlZlY3RvckdyZWF0ZXJUaGFuT3JFcXVhbDoKKyAgICAgICAg
ICAgIGVtaXRTaW1kQ29tcGFyZShBaXI6OkFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6R3Jl
YXRlclRoYW5PckVxdWFsKSwgQWlyOjpBcmc6OmRvdWJsZUNvbmQoTWFjcm9Bc3NlbWJsZXI6OkRv
dWJsZUdyZWF0ZXJUaGFuT3JFcXVhbEFuZE9yZGVyZWQpKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgY2FzZSBCMzo6VmVjdG9yQWJvdmU6CisgICAgICAgICAgICBlbWl0U2ltZENvbXBh
cmUoQWlyOjpBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlKSwgQWlyOjpBcmcoKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgQjM6OlZlY3RvckFib3ZlT3JFcXVh
bDoKKyAgICAgICAgICAgIGVtaXRTaW1kQ29tcGFyZShBaXI6OkFyZzo6cmVsQ29uZChNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsKSwgQWlyOjpBcmcoKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGNhc2UgQjM6OlZlY3RvckFkZDoKKyAgICAgICAgICAgIGVtaXRTaW1kQmluYXJ5
T3AoQWlyOjpWZWN0b3JBZGQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEIz
OjpWZWN0b3JTdWI6CisgICAgICAgICAgICBlbWl0U2ltZEJpbmFyeU9wKEFpcjo6VmVjdG9yU3Vi
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBCMzo6VmVjdG9yQWRkU2F0Ogor
ICAgICAgICAgICAgZW1pdFNpbWRCaW5hcnlPcChBaXI6OlZlY3RvckFkZFNhdCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGNhc2UgQjM6OlZlY3RvclN1YlNhdDoKKyAgICAgICAgICAg
IGVtaXRTaW1kQmluYXJ5T3AoQWlyOjpWZWN0b3JTdWJTYXQpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBjYXNlIEIzOjpWZWN0b3JNdWw6CisgICAgICAgICAgICBlbWl0U2ltZEJpbmFy
eU9wKEFpcjo6VmVjdG9yTXVsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBC
Mzo6VmVjdG9yRG90UHJvZHVjdDoKKyAgICAgICAgICAgIGVtaXRTaW1kQmluYXJ5T3AoQWlyOjpW
ZWN0b3JEb3RQcm9kdWN0SW50MzIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNl
IEIzOjpWZWN0b3JEaXY6CisgICAgICAgICAgICBlbWl0U2ltZEJpbmFyeU9wKEFpcjo6VmVjdG9y
RGl2KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBCMzo6VmVjdG9yTWluOgor
ICAgICAgICAgICAgZW1pdFNpbWRCaW5hcnlPcChBaXI6OlZlY3Rvck1pbik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGNhc2UgQjM6OlZlY3Rvck1heDoKKyAgICAgICAgICAgIGVtaXRT
aW1kQmluYXJ5T3AoQWlyOjpWZWN0b3JNYXgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBjYXNlIEIzOjpWZWN0b3JQbWluOgorICAgICAgICAgICAgZW1pdFNpbWRCaW5hcnlPcChBaXI6
OlZlY3RvclBtaW4pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEIzOjpWZWN0
b3JQbWF4OgorICAgICAgICAgICAgZW1pdFNpbWRCaW5hcnlPcChBaXI6OlZlY3RvclBtYXgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEIzOjpWZWN0b3JOYXJyb3c6CisgICAg
ICAgICAgICBlbWl0U2ltZEJpbmFyeU9wKEFpcjo6VmVjdG9yTmFycm93KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgY2FzZSBCMzo6VmVjdG9yQW5kOgorICAgICAgICAgICAgZW1pdFNp
bWRCaW5hcnlPcChBaXI6OlZlY3RvckFuZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGNhc2UgQjM6OlZlY3RvckFuZG5vdDoKKyAgICAgICAgICAgIGVtaXRTaW1kQmluYXJ5T3AoQWly
OjpWZWN0b3JBbmRub3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEIzOjpW
ZWN0b3JPcjoKKyAgICAgICAgICAgIGVtaXRTaW1kQmluYXJ5T3AoQWlyOjpWZWN0b3JPcik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgQjM6OlZlY3RvclhvcjoKKyAgICAgICAg
ICAgIGVtaXRTaW1kQmluYXJ5T3AoQWlyOjpWZWN0b3JYb3IpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBjYXNlIEIzOjpWZWN0b3JOb3Q6CisgICAgICAgICAgICBlbWl0U2ltZFVuYXJ5
T3AoQWlyOjpWZWN0b3JOb3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEIz
OjpWZWN0b3JBYnM6CisgICAgICAgICAgICBlbWl0U2ltZFVuYXJ5T3AoQWlyOjpWZWN0b3JBYnMp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEIzOjpWZWN0b3JOZWc6CisgICAg
ICAgICAgICBlbWl0U2ltZFVuYXJ5T3AoQWlyOjpWZWN0b3JOZWcpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBjYXNlIEIzOjpWZWN0b3JQb3BjbnQ6CisgICAgICAgICAgICBlbWl0U2lt
ZFVuYXJ5T3AoQWlyOjpWZWN0b3JQb3BjbnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBjYXNlIEIzOjpWZWN0b3JDZWlsOgorICAgICAgICAgICAgZW1pdFNpbWRVbmFyeU9wKEFpcjo6
VmVjdG9yQ2VpbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgQjM6OlZlY3Rv
ckZsb29yOgorICAgICAgICAgICAgZW1pdFNpbWRVbmFyeU9wKEFpcjo6VmVjdG9yRmxvb3IpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEIzOjpWZWN0b3JUcnVuYzoKKyAgICAg
ICAgICAgIGVtaXRTaW1kVW5hcnlPcChBaXI6OlZlY3RvclRydW5jKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgY2FzZSBCMzo6VmVjdG9yVHJ1bmNTYXQ6CisgICAgICAgICAgICBlbWl0
U2ltZFVuYXJ5T3AoQWlyOjpWZWN0b3JUcnVuY1NhdCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGNhc2UgQjM6OlZlY3RvckNvbnZlcnQ6CisgICAgICAgICAgICBlbWl0U2ltZFVuYXJ5
T3AoQWlyOjpWZWN0b3JDb252ZXJ0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2Fz
ZSBCMzo6VmVjdG9yQ29udmVydExvdzoKKyAgICAgICAgICAgIGVtaXRTaW1kVW5hcnlPcChBaXI6
OlZlY3RvckNvbnZlcnRMb3cpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEIz
OjpWZWN0b3JOZWFyZXN0OgorICAgICAgICAgICAgZW1pdFNpbWRVbmFyeU9wKEFpcjo6VmVjdG9y
TmVhcmVzdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgQjM6OlZlY3RvclNx
cnQ6CisgICAgICAgICAgICBlbWl0U2ltZFVuYXJ5T3AoQWlyOjpWZWN0b3JTcXJ0KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBCMzo6VmVjdG9yRXh0ZW5kTG93OgorICAgICAg
ICAgICAgZW1pdFNpbWRVbmFyeU9wKEFpcjo6VmVjdG9yRXh0ZW5kTG93KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgY2FzZSBCMzo6VmVjdG9yRXh0ZW5kSGlnaDoKKyAgICAgICAgICAg
IGVtaXRTaW1kVW5hcnlPcChBaXI6OlZlY3RvckV4dGVuZEhpZ2gpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBjYXNlIEIzOjpWZWN0b3JQcm9tb3RlOgorICAgICAgICAgICAgZW1pdFNp
bWRVbmFyeU9wKEFpcjo6VmVjdG9yUHJvbW90ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGNhc2UgQjM6OlZlY3RvckRlbW90ZToKKyAgICAgICAgICAgIGVtaXRTaW1kVW5hcnlPcChB
aXI6OlZlY3RvckRlbW90ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgQjM6
OlZlY3RvckFueVRydWU6CisgICAgICAgICAgICBlbWl0U2ltZFVuYXJ5T3AoQWlyOjpWZWN0b3JB
bnlUcnVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBCMzo6VmVjdG9yQWxs
VHJ1ZToKKyAgICAgICAgICAgIGVtaXRTaW1kVW5hcnlPcChBaXI6OlZlY3RvckFsbFRydWUpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEIzOjpWZWN0b3JBdmdSb3VuZDoKKyAg
ICAgICAgICAgIGVtaXRTaW1kQmluYXJ5T3AoQWlyOjpWZWN0b3JBdmdSb3VuZCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGNhc2UgQjM6OlZlY3RvckJpdG1hc2s6CisgICAgICAgICAg
ICBlbWl0U2ltZFVuYXJ5T3AoQWlyOjpWZWN0b3JCaXRtYXNrKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgY2FzZSBCMzo6VmVjdG9yQml0d2lzZVNlbGVjdDogeworICAgICAgICAgICAg
U2ltZFZhbHVlKiB2YWx1ZSA9IG1fdmFsdWUtPmFzPFNpbWRWYWx1ZT4oKTsKKyAgICAgICAgICAg
IGFwcGVuZChBaXI6OlZlY3RvckJpdHdpc2VTZWxlY3QsIHRtcCh2YWx1ZS0+Y2hpbGQoMCkpLCB0
bXAodmFsdWUtPmNoaWxkKDEpKSwgdG1wKHZhbHVlLT5jaGlsZCgyKSksIHRtcCh2YWx1ZSkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhc2UgQjM6OlZlY3RvckV4
dGFkZFBhaXJ3aXNlOgorICAgICAgICAgICAgZW1pdFNpbWRCaW5hcnlPcChBaXI6OlZlY3RvckV4
dGFkZFBhaXJ3aXNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBCMzo6VmVj
dG9yTXVsU2F0OgorICAgICAgICAgICAgZW1pdFNpbWRCaW5hcnlPcChBaXI6OlZlY3Rvck11bFNh
dCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgQjM6OlZlY3RvclN3aXp6bGU6
CisgICAgICAgICAgICBlbWl0U2ltZEJpbmFyeU9wKEFpcjo6VmVjdG9yU3dpenpsZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgQjM6OlZlY3RvclNodWZmbGU6CisgICAgICAg
ICAgICBlbWl0U2ltZEJpbmFyeU9wKEFpcjo6VmVjdG9yU2h1ZmZsZSk7CisgICAgICAgICAgICBy
ZXR1cm47CisKICAgICAgICAgY2FzZSBGZW5jZTogewogICAgICAgICAgICAgRmVuY2VWYWx1ZSog
ZmVuY2UgPSBtX3ZhbHVlLT5hczxGZW5jZVZhbHVlPigpOwogICAgICAgICAgICAgaWYgKCFmZW5j
ZS0+d3JpdGUgJiYgIWZlbmNlLT5yZWFkKQpAQCAtMzY2NiwxMiArNDAxMCwyNCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYXBwZW5kKE1vdmVaZXJvVG9Eb3VibGUsIHRtcChtX3ZhbHVlKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IENvbnN0MTI4OiB7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gbV92YWx1ZS0+YXM8Q29uc3Qx
MjhWYWx1ZT4oKS0+dmFsdWUoKTsKKyAgICAgICAgICAgIGF1dG8gYSA9IHRtcEZvclR5cGUoSW50
NjQpOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSB0bXAobV92YWx1ZSk7CisgICAgICAgICAg
ICBhcHBlbmQoTW92ZSwgQXJnOjpiaWdJbW0odmFsdWUudTY0eDJbMF0pLCBhKTsKKyAgICAgICAg
ICAgIGFwcGVuZChBaXI6OlZlY3RvclJlcGxhY2VMYW5lSW50NjQsIEFyZzo6aW1tKDApLCBhLCBy
ZXN1bHQpOworICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YmlnSW1tKHZhbHVlLnU2NHgy
WzFdKSwgYSk7CisgICAgICAgICAgICBhcHBlbmQoQWlyOjpWZWN0b3JSZXBsYWNlTGFuZUludDY0
LCBBcmc6OmltbSgxKSwgYSwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogCiAgICAgICAgIGNhc2UgQm90dG9tVHVwbGU6IHsKICAgICAgICAgICAgIGZvckVhY2hJbW1P
clRtcChtX3ZhbHVlLCBbJl0gKEFyZyB0bXAsIFR5cGUgdHlwZSwgdW5zaWduZWQpIHsKICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHR5cGUua2luZCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBW
b2lkOgogICAgICAgICAgICAgICAgIGNhc2UgVHVwbGU6CisgICAgICAgICAgICAgICAgY2FzZSBW
MTI4OgogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIEludDMyOgpA
QCAtNDI1NSw2ICs0NjExLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYXBwZW5kKE1v
dmVEb3VibGUsIHRtcCh2YWx1ZSksIHJldHVyblZhbHVlRlBSKTsKICAgICAgICAgICAgICAgICBh
cHBlbmQoUmV0RG91YmxlLCByZXR1cm5WYWx1ZUZQUik7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIFYxMjg6IC8vIFRPRE8KKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGFwcGVuZChNb3ZlRG91Ymxl
LCB0bXAodmFsdWUpLCByZXR1cm5WYWx1ZUZQUik7CisgICAgICAgICAgICAgICAgYXBwZW5kKFJl
dERvdWJsZSwgcmV0dXJuVmFsdWVGUFIpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKaW5kZXggYWU1OWM2MDk1M2EzLi5jYmE4NDU4NTFi
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKQEAgLTU3
LDcgKzU3LDcgQEAgQmFuayBNZW1vcnlWYWx1ZTo6YWNjZXNzQmFuaygpIGNvbnN0CiAKIHNpemVf
dCBNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0ZVNpemUoKSBjb25zdAogewotICAgIHJldHVybiBieXRl
cyhhY2Nlc3NXaWR0aCgpKTsKKyAgICByZXR1cm4gYnl0ZXNGb3JXaWR0aChhY2Nlc3NXaWR0aCgp
KTsKIH0KIAogdm9pZCBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwg
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TWVtb3J5VmFsdWVJbmxpbmVzLmgKaW5kZXggMDZkN2FmZDZkYzY4Li5lYjU1MjZkM2NiYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oCkBA
IC00NSw2ICs0NSw3IEBAIGlubGluZSBib29sIE1lbW9yeVZhbHVlOjppc0xlZ2FsT2Zmc2V0SW1w
bChpbnQzMl90IG9mZnNldCkgY29uc3QKIAogaW5saW5lIGJvb2wgTWVtb3J5VmFsdWU6OnJlcXVp
cmVzU2ltcGxlQWRkcigpIGNvbnN0CiB7CisgICAgLy8gT09QUzogdmVyaWZ5IHRoaXMgaXMgY29y
cmVjdCBmb3IgU2ltZCB4ODYgYWRkcmVzc2VzCiAgICAgcmV0dXJuICFpc1g4NigpICYmIGlzRXhv
dGljKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29k
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCmluZGV4IDEzMTk1
NmU1MGI3OS4uZWM3OTk3MmM2YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNPcGNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5j
cHAKQEAgLTEyMCw2ICsxMjAsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgT3Bjb2RlIG9wY29kZSkKICAgICBjYXNlIENvbnN0RmxvYXQ6CiAgICAgICAgIG91dC5wcmlu
dCgiQ29uc3RGbG9hdCIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBDb25zdDEyODoKKyAg
ICAgICAgb3V0LnByaW50KCJDb25zdDEyOCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBC
b3R0b21UdXBsZToKICAgICAgICAgb3V0LnByaW50KCJCb3R0b21UdXBsZSIpOwogICAgICAgICBy
ZXR1cm47CkBAIC0zNjMsNiArMzY2LDE3NyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgT3Bjb2RlIG9wY29kZSkKICAgICBjYXNlIEp1bXA6CiAgICAgICAgIG91dC5wcmlu
dCgiSnVtcCIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBaZXJvRXh0ZW5kNjRUb1ZlY3Rv
cjoKKyAgICAgICAgb3V0LnByaW50KCJaZXJvRXh0ZW5kNjRUb1ZlY3RvciIpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBWZWN0b3JFeHRyYWN0TGFuZToKKyAgICAgICAgb3V0LnByaW50KCJW
ZWN0b3JFeHRyYWN0TGFuZSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBWZWN0b3JSZXBs
YWNlTGFuZToKKyAgICAgICAgb3V0LnByaW50KCJWZWN0b3JSZXBsYWNlTGFuZSIpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBWZWN0b3JFcXVhbDoKKyAgICAgICAgb3V0LnByaW50KCJWZWN0
b3JFcXVhbCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBWZWN0b3JOb3RFcXVhbDoKKyAg
ICAgICAgb3V0LnByaW50KCJWZWN0b3JOb3RFcXVhbCIpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBWZWN0b3JMZXNzVGhhbjoKKyAgICAgICAgb3V0LnByaW50KCJWZWN0b3JMZXNzVGhhbiIp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBWZWN0b3JMZXNzVGhhbk9yRXF1YWw6CisgICAg
ICAgIG91dC5wcmludCgiVmVjdG9yTGVzc1RoYW5PckVxdWFsIik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIFZlY3RvckJlbG93OgorICAgICAgICBvdXQucHJpbnQoIlZlY3RvckJlbG93Iik7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZlY3RvckJlbG93T3JFcXVhbDoKKyAgICAgICAg
b3V0LnByaW50KCJWZWN0b3JCZWxvd09yRXF1YWwiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgVmVjdG9yR3JlYXRlclRoYW46CisgICAgICAgIG91dC5wcmludCgiVmVjdG9yR3JlYXRlclRo
YW4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVmVjdG9yR3JlYXRlclRoYW5PckVxdWFs
OgorICAgICAgICBvdXQucHJpbnQoIlZlY3RvckdyZWF0ZXJUaGFuT3JFcXVhbCIpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBWZWN0b3JBYm92ZToKKyAgICAgICAgb3V0LnByaW50KCJWZWN0
b3JBYm92ZSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBWZWN0b3JBYm92ZU9yRXF1YWw6
CisgICAgICAgIG91dC5wcmludCgiVmVjdG9yQWJvdmVPckVxdWFsIik7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIFZlY3RvckFkZDoKKyAgICAgICAgb3V0LnByaW50KCJWZWN0b3JBZGQiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVmVjdG9yU3ViOgorICAgICAgICBvdXQucHJpbnQo
IlZlY3RvclN1YiIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBWZWN0b3JBZGRTYXQ6Cisg
ICAgICAgIG91dC5wcmludCgiVmVjdG9yQWRkU2F0Iik7CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIFZlY3RvclN1YlNhdDoKKyAgICAgICAgb3V0LnByaW50KCJWZWN0b3JTdWJTYXQiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgVmVjdG9yTXVsOgorICAgICAgICBvdXQucHJpbnQoIlZl
Y3Rvck11bCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBWZWN0b3JEb3RQcm9kdWN0Ogor
ICAgICAgICBvdXQucHJpbnQoIlZlY3RvckRvdFByb2R1Y3QiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgVmVjdG9yRGl2OgorICAgICAgICBvdXQucHJpbnQoIlZlY3RvckRpdiIpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBWZWN0b3JNaW46CisgICAgICAgIG91dC5wcmludCgiVmVj
dG9yTWluIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZlY3Rvck1heDoKKyAgICAgICAg
b3V0LnByaW50KCJWZWN0b3JNYXgiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVmVjdG9y
UG1pbjoKKyAgICAgICAgb3V0LnByaW50KCJWZWN0b3JQbWluIik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIFZlY3RvclBtYXg6CisgICAgICAgIG91dC5wcmludCgiVmVjdG9yUG1heCIpOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBWZWN0b3JOYXJyb3c6CisgICAgICAgIG91dC5wcmlu
dCgiVmVjdG9yTmFycm93Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZlY3Rvck5vdDoK
KyAgICAgICAgb3V0LnByaW50KCJWZWN0b3JOb3QiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgVmVjdG9yQW5kOgorICAgICAgICBvdXQucHJpbnQoIlZlY3RvckFuZCIpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBWZWN0b3JBbmRub3Q6CisgICAgICAgIG91dC5wcmludCgiVmVjdG9y
QW5kbm90Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZlY3Rvck9yOgorICAgICAgICBv
dXQucHJpbnQoIlZlY3Rvck9yIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZlY3Rvclhv
cjoKKyAgICAgICAgb3V0LnByaW50KCJWZWN0b3JYb3IiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgVmVjdG9yU2hsOgorICAgICAgICBvdXQucHJpbnQoIlZlY3RvclNobCIpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBWZWN0b3JTaHI6CisgICAgICAgIG91dC5wcmludCgiVmVjdG9y
U2hyIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZlY3RvckFiczoKKyAgICAgICAgb3V0
LnByaW50KCJWZWN0b3JBYnMiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVmVjdG9yTmVn
OgorICAgICAgICBvdXQucHJpbnQoIlZlY3Rvck5lZyIpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBWZWN0b3JQb3BjbnQ6CisgICAgICAgIG91dC5wcmludCgiVmVjdG9yUG9wY250Iik7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZlY3RvckNlaWw6CisgICAgICAgIG91dC5wcmludCgi
VmVjdG9yQ2VpbCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBWZWN0b3JGbG9vcjoKKyAg
ICAgICAgb3V0LnByaW50KCJWZWN0b3JGbG9vciIpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBWZWN0b3JUcnVuYzoKKyAgICAgICAgb3V0LnByaW50KCJWZWN0b3JUcnVuYyIpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBWZWN0b3JUcnVuY1NhdDoKKyAgICAgICAgb3V0LnByaW50KCJW
ZWN0b3JUcnVuY1NhdCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBWZWN0b3JDb252ZXJ0
OgorICAgICAgICBvdXQucHJpbnQoIlZlY3RvckNvbnZlcnQiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgVmVjdG9yQ29udmVydExvdzoKKyAgICAgICAgb3V0LnByaW50KCJWZWN0b3JDb252
ZXJ0TG93Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZlY3Rvck5lYXJlc3Q6CisgICAg
ICAgIG91dC5wcmludCgiVmVjdG9yTmVhcmVzdCIpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBWZWN0b3JTcXJ0OgorICAgICAgICBvdXQucHJpbnQoIlZlY3RvclNxcnQiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgVmVjdG9yRXh0ZW5kTG93OgorICAgICAgICBvdXQucHJpbnQoIlZl
Y3RvckV4dGVuZExvdyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBWZWN0b3JFeHRlbmRI
aWdoOgorICAgICAgICBvdXQucHJpbnQoIlZlY3RvckV4dGVuZEhpZ2giKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgVmVjdG9yUHJvbW90ZToKKyAgICAgICAgb3V0LnByaW50KCJWZWN0b3JQ
cm9tb3RlIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZlY3RvckRlbW90ZToKKyAgICAg
ICAgb3V0LnByaW50KCJWZWN0b3JEZW1vdGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
VmVjdG9yU3BsYXQ6CisgICAgICAgIG91dC5wcmludCgiVmVjdG9yU3BsYXQiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgVmVjdG9yQW55VHJ1ZToKKyAgICAgICAgb3V0LnByaW50KCJWZWN0
b3JBbnlUcnVlIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZlY3RvckFsbFRydWU6Cisg
ICAgICAgIG91dC5wcmludCgiVmVjdG9yQWxsVHJ1ZSIpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBWZWN0b3JBdmdSb3VuZDoKKyAgICAgICAgb3V0LnByaW50KCJWZWN0b3JBdmdSb3VuZCIp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBWZWN0b3JCaXRtYXNrOgorICAgICAgICBvdXQu
cHJpbnQoIlZlY3RvckJpdG1hc2siKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVmVjdG9y
Qml0d2lzZVNlbGVjdDoKKyAgICAgICAgb3V0LnByaW50KCJWZWN0b3JCaXR3aXNlU2VsZWN0Iik7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZlY3RvckV4dGFkZFBhaXJ3aXNlOgorICAgICAg
ICBvdXQucHJpbnQoIlZlY3RvckV4dGFkZFBhaXJ3aXNlIik7CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIFZlY3Rvck11bFNhdDoKKyAgICAgICAgb3V0LnByaW50KCJWZWN0b3JNdWxTYXQiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVmVjdG9yU3dpenpsZToKKyAgICAgICAgb3V0LnBy
aW50KCJWZWN0b3JTd2l6emxlIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZlY3RvclNo
dWZmbGU6CisgICAgICAgIG91dC5wcmludCgiVmVjdG9yU2h1ZmZsZSIpOworICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIG91dC5wcmludCgiQnJhbmNoIik7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29k
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKaW5kZXggNjVhN2RhM2Iw
YWEyLi4zMWFkN2ZkYWY1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M09wY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCkBAIC01
NCw2ICs1NCw3IEBAIGVudW0gT3Bjb2RlIDogdWludDhfdCB7CiAgICAgQ29uc3Q2NCwKICAgICBD
b25zdERvdWJsZSwKICAgICBDb25zdEZsb2F0LAorICAgIENvbnN0MTI4LAogCiAgICAgLy8gVHVw
bGUgZmlsbGVkIHdpdGggemVyb3MuIFRoaXMgYXBwZWFycyB3aGVuIFR1cGxlIFBhdGNocG9pbnRz
IGFyZSByZXBsYWNlZCB3aXRoIEJvdHRvbSB2YWx1ZXMuCiAgICAgQm90dG9tVHVwbGUsCkBAIC0z
NDIsNiArMzQzLDc2IEBAIGVudW0gT3Bjb2RlIDogdWludDhfdCB7CiAgICAgLy8gV2l0aG91dCBz
b21lIHN1Y2ggbm9kZSBCMyB3b3VsZCBub3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQg
dGhlIGlubmVyIHdvcmtpbmdzIG9mIHdhc20KICAgICAvLyB0byBiZSBhYmxlIHRvIHBlcmZvcm0g
c3VjaCBvcHRpbWl6YXRpb25zLgogICAgIFdhc21Cb3VuZHNDaGVjaywKKyAgICAKKyAgICAvLyBT
aW1kIGluc3RydWN0aW9ucworICAgIFplcm9FeHRlbmQ2NFRvVmVjdG9yLAorCisgICAgVmVjdG9y
RXh0cmFjdExhbmUsCisgICAgVmVjdG9yUmVwbGFjZUxhbmUsCisKKyAgICBWZWN0b3JTcGxhdCwK
KworICAgIFZlY3RvckVxdWFsLAorICAgIFZlY3Rvck5vdEVxdWFsLAorICAgIFZlY3Rvckxlc3NU
aGFuLAorICAgIFZlY3Rvckxlc3NUaGFuT3JFcXVhbCwKKyAgICBWZWN0b3JCZWxvdywKKyAgICBW
ZWN0b3JCZWxvd09yRXF1YWwsCisgICAgVmVjdG9yR3JlYXRlclRoYW4sCisgICAgVmVjdG9yR3Jl
YXRlclRoYW5PckVxdWFsLAorICAgIFZlY3RvckFib3ZlLAorICAgIFZlY3RvckFib3ZlT3JFcXVh
bCwKKworICAgIFZlY3RvckFkZCwKKyAgICBWZWN0b3JTdWIsCisgICAgVmVjdG9yQWRkU2F0LAor
ICAgIFZlY3RvclN1YlNhdCwKKyAgICBWZWN0b3JNdWwsCisgICAgVmVjdG9yRG90UHJvZHVjdCwK
KyAgICBWZWN0b3JEaXYsCisgICAgVmVjdG9yTWluLAorICAgIFZlY3Rvck1heCwKKyAgICBWZWN0
b3JQbWluLAorICAgIFZlY3RvclBtYXgsCisKKyAgICBWZWN0b3JOYXJyb3csCisKKyAgICBWZWN0
b3JOb3QsCisgICAgVmVjdG9yQW5kLAorICAgIFZlY3RvckFuZG5vdCwKKyAgICBWZWN0b3JPciwK
KyAgICBWZWN0b3JYb3IsCisKKyAgICBWZWN0b3JTaGwsCisgICAgVmVjdG9yU2hyLAorCisgICAg
VmVjdG9yQWJzLAorICAgIFZlY3Rvck5lZywKKyAgICBWZWN0b3JQb3BjbnQsCisgICAgVmVjdG9y
Q2VpbCwKKyAgICBWZWN0b3JGbG9vciwKKyAgICBWZWN0b3JUcnVuYywKKyAgICBWZWN0b3JUcnVu
Y1NhdCwKKyAgICBWZWN0b3JDb252ZXJ0LAorICAgIFZlY3RvckNvbnZlcnRMb3csCisgICAgVmVj
dG9yTmVhcmVzdCwKKyAgICBWZWN0b3JTcXJ0LAorCisgICAgVmVjdG9yRXh0ZW5kTG93LAorICAg
IFZlY3RvckV4dGVuZEhpZ2gsCisKKyAgICBWZWN0b3JQcm9tb3RlLAorICAgIFZlY3RvckRlbW90
ZSwKKworICAgIFZlY3RvckFueVRydWUsCisgICAgVmVjdG9yQWxsVHJ1ZSwKKyAgICBWZWN0b3JB
dmdSb3VuZCwKKyAgICBWZWN0b3JCaXRtYXNrLAorICAgIFZlY3RvckJpdHdpc2VTZWxlY3QsCisg
ICAgVmVjdG9yRXh0YWRkUGFpcndpc2UsCisgICAgVmVjdG9yTXVsU2F0LAorICAgIFZlY3RvclN3
aXp6bGUsCisgICAgVmVjdG9yU2h1ZmZsZSwKIAogICAgIC8vIFNTQSBzdXBwb3J0LCBpbiB0aGUg
c3R5bGUgb2YgREZHIFNTQS4KICAgICBVcHNpbG9uLCAvLyBUaGlzIHVzZXMgdGhlIFVwc2lsb25W
YWx1ZSBjbGFzcy4KQEAgLTM5OCw2ICs0NjksNyBAQCBpbmxpbmUgYm9vbCBpc0NvbnN0YW50KE9w
Y29kZSBvcGNvZGUpCiAgICAgY2FzZSBDb25zdDY0OgogICAgIGNhc2UgQ29uc3REb3VibGU6CiAg
ICAgY2FzZSBDb25zdEZsb2F0OgorICAgIGNhc2UgQ29uc3QxMjg6CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQxMSw2ICs0ODMs
NyBAQCBpbmxpbmUgT3Bjb2RlIG9wY29kZUZvckNvbnN0YW50KFR5cGUgdHlwZSkKICAgICBjYXNl
IEludDY0OiByZXR1cm4gQ29uc3Q2NDsKICAgICBjYXNlIEZsb2F0OiByZXR1cm4gQ29uc3RGbG9h
dDsKICAgICBjYXNlIERvdWJsZTogcmV0dXJuIENvbnN0RG91YmxlOworICAgIGNhc2UgVjEyODog
cmV0dXJuIENvbnN0MTI4OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5j
cHAKaW5kZXggMWUxNGFlODNlMzBiLi43OGQ3NGIzNjQxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUHJvY2VkdXJlLmNwcApAQCAtMTQ0LDYgKzE0NCwxMiBAQCBWYWx1ZSogUHJvY2Vk
dXJlOjphZGRDb25zdGFudChPcmlnaW4gb3JpZ2luLCBUeXBlIHR5cGUsIHVpbnQ2NF90IGJpdHMp
CiAgICAgICAgIHJldHVybiBhZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4sIGJpdHdpc2VfY2Fz
dDxmbG9hdD4oc3RhdGljX2Nhc3Q8aW50MzJfdD4oYml0cykpKTsKICAgICBjYXNlIERvdWJsZToK
ICAgICAgICAgcmV0dXJuIGFkZDxDb25zdERvdWJsZVZhbHVlPihvcmlnaW4sIGJpdHdpc2VfY2Fz
dDxkb3VibGU+KGJpdHMpKTsKKyAgICBjYXNlIFYxMjg6IHsKKyAgICAgICAgdjEyOF90IGNvbnN0
YW50OworICAgICAgICBjb25zdGFudC51NjR4MlswXSA9IGJpdHM7CisgICAgICAgIGNvbnN0YW50
LnU2NHgyWzFdID0gYml0czsKKyAgICAgICAgcmV0dXJuIGFkZDxDb25zdDEyOFZhbHVlPihvcmln
aW4sIGNvbnN0YW50KTsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTaW1kVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzU2ltZFZhbHVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmEwZThkZDU3NjY1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1NpbWRWYWx1ZS5jcHAKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJCM1NpbWRWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK1NpbWRWYWx1ZTo6flNpbWRWYWx1ZSgpCit7Cit9CisK
K3ZvaWQgU2ltZFZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNv
bnN0Cit7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxF
KEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NpbWRWYWx1
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU2ltZFZhbHVlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wODU3MTI5NjRiNjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTaW1kVmFsdWUuaApAQCAtMCwwICsxLDE2
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzVmFsdWUuaCIKKyNp
bmNsdWRlICJTaW1kSW5mby5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwor
Y2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU2ltZFZhbHVlIDogcHVibGljIFZhbHVlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKKyAgICB7CisgICAgICAgIHN3
aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIFZlY3RvckV4dHJhY3RMYW5lOgor
ICAgICAgICBjYXNlIFZlY3RvclJlcGxhY2VMYW5lOgorICAgICAgICBjYXNlIFZlY3RvckVxdWFs
OgorICAgICAgICBjYXNlIFZlY3Rvck5vdEVxdWFsOgorICAgICAgICBjYXNlIFZlY3Rvckxlc3NU
aGFuOgorICAgICAgICBjYXNlIFZlY3Rvckxlc3NUaGFuT3JFcXVhbDoKKyAgICAgICAgY2FzZSBW
ZWN0b3JCZWxvdzoKKyAgICAgICAgY2FzZSBWZWN0b3JCZWxvd09yRXF1YWw6CisgICAgICAgIGNh
c2UgVmVjdG9yR3JlYXRlclRoYW46CisgICAgICAgIGNhc2UgVmVjdG9yR3JlYXRlclRoYW5PckVx
dWFsOgorICAgICAgICBjYXNlIFZlY3RvckFib3ZlOgorICAgICAgICBjYXNlIFZlY3RvckFib3Zl
T3JFcXVhbDoKKyAgICAgICAgY2FzZSBWZWN0b3JBZGQ6CisgICAgICAgIGNhc2UgVmVjdG9yU3Vi
OgorICAgICAgICBjYXNlIFZlY3RvckFkZFNhdDoKKyAgICAgICAgY2FzZSBWZWN0b3JTdWJTYXQ6
CisgICAgICAgIGNhc2UgVmVjdG9yTXVsOgorICAgICAgICBjYXNlIFZlY3RvckRpdjoKKyAgICAg
ICAgY2FzZSBWZWN0b3JNaW46CisgICAgICAgIGNhc2UgVmVjdG9yTWF4OgorICAgICAgICBjYXNl
IFZlY3RvclBtaW46CisgICAgICAgIGNhc2UgVmVjdG9yUG1heDoKKyAgICAgICAgY2FzZSBWZWN0
b3JOYXJyb3c6CisgICAgICAgIGNhc2UgVmVjdG9yTm90OgorICAgICAgICBjYXNlIFZlY3RvckFu
ZDoKKyAgICAgICAgY2FzZSBWZWN0b3JBbmRub3Q6CisgICAgICAgIGNhc2UgVmVjdG9yT3I6Cisg
ICAgICAgIGNhc2UgVmVjdG9yWG9yOgorICAgICAgICBjYXNlIFZlY3RvclNobDoKKyAgICAgICAg
Y2FzZSBWZWN0b3JTaHI6CisgICAgICAgIGNhc2UgVmVjdG9yQWJzOgorICAgICAgICBjYXNlIFZl
Y3Rvck5lZzoKKyAgICAgICAgY2FzZSBWZWN0b3JQb3BjbnQ6CisgICAgICAgIGNhc2UgVmVjdG9y
Q2VpbDoKKyAgICAgICAgY2FzZSBWZWN0b3JGbG9vcjoKKyAgICAgICAgY2FzZSBWZWN0b3JUcnVu
YzoKKyAgICAgICAgY2FzZSBWZWN0b3JUcnVuY1NhdDoKKyAgICAgICAgY2FzZSBWZWN0b3JDb252
ZXJ0OgorICAgICAgICBjYXNlIFZlY3RvckNvbnZlcnRMb3c6CisgICAgICAgIGNhc2UgVmVjdG9y
TmVhcmVzdDoKKyAgICAgICAgY2FzZSBWZWN0b3JTcXJ0OgorICAgICAgICBjYXNlIFZlY3RvckV4
dGVuZExvdzoKKyAgICAgICAgY2FzZSBWZWN0b3JFeHRlbmRIaWdoOgorICAgICAgICBjYXNlIFZl
Y3RvclByb21vdGU6CisgICAgICAgIGNhc2UgVmVjdG9yRGVtb3RlOgorICAgICAgICBjYXNlIFZl
Y3RvclNwbGF0OgorICAgICAgICBjYXNlIFZlY3RvckFueVRydWU6CisgICAgICAgIGNhc2UgVmVj
dG9yQWxsVHJ1ZToKKyAgICAgICAgY2FzZSBWZWN0b3JBdmdSb3VuZDoKKyAgICAgICAgY2FzZSBW
ZWN0b3JCaXRtYXNrOgorICAgICAgICBjYXNlIFZlY3RvckJpdHdpc2VTZWxlY3Q6CisgICAgICAg
IGNhc2UgVmVjdG9yRXh0YWRkUGFpcndpc2U6CisgICAgICAgIGNhc2UgVmVjdG9yTXVsU2F0Ogor
ICAgICAgICBjYXNlIFZlY3RvclN3aXp6bGU6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICB+U2ltZFZhbHVlKCkgb3ZlcnJpZGU7CisgICAgCisgICAgU2ltZEluZm8g
c2ltZEluZm8oKSBjb25zdCB7IHJldHVybiBtX3NpbWRJbmZvOyB9CisgICAgU2ltZExhbmUgc2lt
ZExhbmUoKSBjb25zdCB7IHJldHVybiBtX3NpbWRJbmZvLmxhbmU7IH0KKyAgICBTaW1kU2lnbk1v
ZGUgc2lnbk1vZGUoKSBjb25zdCB7IHJldHVybiBtX3NpbWRJbmZvLnNpZ25Nb2RlOyB9CisgICAg
dWludDhfdCBpbW1lZGlhdGUoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGltbS51OHgxNltpXTsg
fQorICAgIGNvbnN0IHYxMjhfdCYgaW1tZWRpYXRlKCkgY29uc3QgeyByZXR1cm4gaW1tOyB9CisK
KyAgICBCM19TUEVDSUFMSVpFX1ZBTFVFX0ZPUl9GSU5BTF9TSVpFX0ZJWEVEX0NISUxEUkVOCisK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFt
JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+
CisgICAgU2ltZFZhbHVlKE9yaWdpbiBvcmlnaW4sIEtpbmQga2luZCwgVHlwZSB0eXBlLCBTaW1k
TGFuZSBzaW1kTGFuZSwgU2ltZFNpZ25Nb2RlIHNpZ25Nb2RlLCBBcmd1bWVudHMuLi4gYXJndW1l
bnRzKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIHN0YXRpY19j
YXN0PE51bUNoaWxkcmVuPihzaXplb2YuLi4oYXJndW1lbnRzKSksIG9yaWdpbiwgYXJndW1lbnRz
Li4uKQorICAgICAgICAsIG1fc2ltZEluZm8geyBzaW1kTGFuZSwgc2lnbk1vZGUgfQorICAgIHsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgU2ltZFZh
bHVlKE9yaWdpbiBvcmlnaW4sIEtpbmQga2luZCwgVHlwZSB0eXBlLCBTaW1kSW5mbyBpbmZvLCBB
cmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtp
bmQsIHR5cGUsIHN0YXRpY19jYXN0PE51bUNoaWxkcmVuPihzaXplb2YuLi4oYXJndW1lbnRzKSks
IG9yaWdpbiwgYXJndW1lbnRzLi4uKQorICAgICAgICAsIG1fc2ltZEluZm8oaW5mbykKKyAgICB7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIFNpbWRW
YWx1ZShPcmlnaW4gb3JpZ2luLCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgU2ltZEluZm8gaW5mbywg
dWludDhfdCBpbW0xLCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAgICAgICA6IFZhbHVlKENo
ZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIHN0YXRpY19jYXN0PE51bUNoaWxkcmVuPihzaXplb2Yu
Li4oYXJndW1lbnRzKSksIG9yaWdpbiwgYXJndW1lbnRzLi4uKQorICAgICAgICAsIG1fc2ltZElu
Zm8oaW5mbykKKyAgICB7CisgICAgICAgIGltbS51OHgxNlswXSA9IGltbTE7CisgICAgfQorICAg
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBTaW1kVmFsdWUoT3Jp
Z2luIG9yaWdpbiwgS2luZCBraW5kLCBUeXBlIHR5cGUsIFNpbWRMYW5lIHNpbWRMYW5lLCBTaW1k
U2lnbk1vZGUgc2lnbk1vZGUsIHVpbnQ4X3QgaW1tMSwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykK
KyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBzdGF0aWNfY2FzdDxO
dW1DaGlsZHJlbj4oc2l6ZW9mLi4uKGFyZ3VtZW50cykpLCBvcmlnaW4sIGFyZ3VtZW50cy4uLikK
KyAgICAgICAgLCBtX3NpbWRJbmZvIHsgc2ltZExhbmUsIHNpZ25Nb2RlIH0KKyAgICB7CisgICAg
ICAgIGltbS51OHgxNlswXSA9IGltbTE7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJndW1lbnRzPgorICAgIFNpbWRWYWx1ZShPcmlnaW4gb3JpZ2luLCBLaW5kIGtpbmQsIFR5
cGUgdHlwZSwgU2ltZExhbmUgc2ltZExhbmUsIFNpbWRTaWduTW9kZSBzaWduTW9kZSwgdjEyOF90
IGltbTEsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogVmFsdWUoQ2hlY2tlZE9w
Y29kZSwga2luZCwgdHlwZSwgc3RhdGljX2Nhc3Q8TnVtQ2hpbGRyZW4+KHNpemVvZi4uLihhcmd1
bWVudHMpKSwgb3JpZ2luLCBhcmd1bWVudHMuLi4pCisgICAgICAgICwgbV9zaW1kSW5mbyB7IHNp
bWRMYW5lLCBzaWduTW9kZSB9CisgICAgeworICAgICAgICBpbW0gPSBpbW0xOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgc3RhdGlj
IE9wY29kZSBvcGNvZGVGcm9tQ29uc3RydWN0b3IoT3JpZ2luLCBLaW5kIGtpbmQsIFR5cGUsIFNp
bWRMYW5lLCBTaW1kU2lnbk1vZGUsIEFyZ3VtZW50cy4uLikgeyByZXR1cm4ga2luZC5vcGNvZGUo
KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBzdGF0aWMgT3Bj
b2RlIG9wY29kZUZyb21Db25zdHJ1Y3RvcihPcmlnaW4sIEtpbmQga2luZCwgVHlwZSwgU2ltZElu
Zm8sIEFyZ3VtZW50cy4uLikgeyByZXR1cm4ga2luZC5vcGNvZGUoKTsgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBzdGF0aWMgT3Bjb2RlIG9wY29kZUZyb21Db25z
dHJ1Y3RvcihPcmlnaW4sIEtpbmQga2luZCwgVHlwZSwgU2ltZExhbmUsIFNpbWRTaWduTW9kZSwg
djEyOF90LCBBcmd1bWVudHMuLi4pIHsgcmV0dXJuIGtpbmQub3Bjb2RlKCk7IH0KKyAgICBmcmll
bmQgY2xhc3MgUHJvY2VkdXJlOworICAgIGZyaWVuZCBjbGFzcyBWYWx1ZTsKKworICAgIFNpbWRJ
bmZvIG1fc2ltZEluZm87CisgICAgCisgICAgdjEyOF90IGltbTsKK307CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3BwCmlu
ZGV4IDkyY2Q4MGVkN2MyMy4uZjNhN2U3YzczNmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHAKQEAgLTM1LDcg
KzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLWNvbnN0IFJlZ2lz
dGVyU2V0JiBTdGFja21hcEdlbmVyYXRpb25QYXJhbXM6OnVzZWRSZWdpc3RlcnMoKSBjb25zdAor
Y29uc3QgUmVnaXN0ZXJTZXQxMjgmIFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtczo6dXNlZFJlZ2lz
dGVycygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fY29udGV4dC5jb2RlLT5uZWVkc1VzZWRSZWdp
c3RlcnMoKSk7CiAgICAgCkBAIC00NCw5ICs0NCw5IEBAIGNvbnN0IFJlZ2lzdGVyU2V0JiBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXM6OnVzZWRSZWdpc3RlcnMoKSBjb25zdAogCiBSZWdpc3RlclNl
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXM6OnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkgY29uc3QK
IHsKLSAgICBSZWdpc3RlclNldCByZXN1bHQgPSB1c2VkUmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0
ZXJTZXQxMjggcmVzdWx0ID0gdXNlZFJlZ2lzdGVycygpOwogICAgIAotICAgIFJlZ2lzdGVyU2V0
IHVuc2F2ZWRDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMo
KTsKKyAgICBSZWdpc3RlclNldDEyOCB1bnNhdmVkQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDEy
ODo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAgdW5zYXZlZENhbGxlZVNhdmVzLmV4Y2x1
ZGUobV9jb250ZXh0LmNvZGUtPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAKICAgICByZXN1bHQu
bWVyZ2UodW5zYXZlZENhbGxlZVNhdmVzKTsKQEAgLTU2LDcgKzU2LDcgQEAgUmVnaXN0ZXJTZXQg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zOjp1bmF2YWlsYWJsZVJlZ2lzdGVycygpIGNvbnN0CiAg
ICAgZm9yIChGUFJSZWcgZnByIDogbV9mcFNjcmF0Y2gpCiAgICAgICAgIHJlc3VsdC5jbGVhcihm
cHIpOwogICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdC5hbGxSZWdp
c3RlcnMoKTsKIH0KIAogVmVjdG9yPEJveDxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+PiBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXM6OnN1Y2Nlc3NvckxhYmVscygpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oCmluZGV4
IGEzNjI1NDg4ZWE3ZC4uMjA0ZDU0ZmM2ZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaApAQCAtNjUsNyArNjUsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgLy8gVGhpcyB0ZWxscyB5b3UgdGhlIHJlZ2lzdGVycyB0aGF0
IHdlcmUgdXNlZC4KICAgICAvLyBOT1RFOiBUaGlzIHdpbGwgcmVwb3J0IGJvZ3VzIGluZm9ybWF0
aW9uIGlmIHlvdSBkaWQgcHJvYy5zZXROZWVkc1VzZWRSZWdpc3RlcnMoZmFsc2UpLgotICAgIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKCkgY29uc3Q7CisgICAgY29uc3QgUmVnaXN0
ZXJTZXQxMjgmIHVzZWRSZWdpc3RlcnMoKSBjb25zdDsKIAogICAgIC8vIFRoaXMgaXMgYSB1c2Vm
dWwgaGVscGVyIGlmIHlvdSB3YW50IHRvIGRvIHJlZ2lzdGVyIGFsbG9jYXRpb24gaW5zaWRlIG9m
IGEgcGF0Y2hwb2ludC4gVGhlCiAgICAgLy8gdXNlZFJlZ2lzdGVycygpIHNldCBpcyBub3QgZGly
ZWN0bHkgdXNlZnVsIGZvciB0aGlzIHB1cnBvc2UgYmVjYXVzZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCmluZGV4IDNjZDI0Mjc2ZjM0My4uY2E5
Yjk4MjdhMDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21h
cFNwZWNpYWwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3Bl
Y2lhbC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgU3RhY2ttYXBTcGVjaWFsOjp+U3RhY2ttYXBTcGVj
aWFsKCkKIHsKIH0KIAotdm9pZCBTdGFja21hcFNwZWNpYWw6OnJlcG9ydFVzZWRSZWdpc3RlcnMo
SW5zdCYgaW5zdCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMpCit2b2lkIFN0YWNr
bWFwU3BlY2lhbDo6cmVwb3J0VXNlZFJlZ2lzdGVycyhJbnN0JiBpbnN0LCBjb25zdCBSZWdpc3Rl
clNldDEyOCYgdXNlZFJlZ2lzdGVycykKIHsKICAgICBTdGFja21hcFZhbHVlKiB2YWx1ZSA9IGlu
c3Qub3JpZ2luLT5hczxTdGFja21hcFZhbHVlPigpOwogICAgIEFTU0VSVCh2YWx1ZSk7CkBAIC01
Nyw3ICs1Nyw3IEBAIHZvaWQgU3RhY2ttYXBTcGVjaWFsOjpyZXBvcnRVc2VkUmVnaXN0ZXJzKElu
c3QmIGluc3QsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnCiAgICAgdmFsdWUtPm1fdXNlZFJl
Z2lzdGVycy5tZXJnZSh1c2VkUmVnaXN0ZXJzKTsKIH0KIAotUmVnaXN0ZXJTZXQgU3RhY2ttYXBT
cGVjaWFsOjpleHRyYUNsb2JiZXJlZFJlZ3MoSW5zdCYgaW5zdCkKK1JlZ2lzdGVyU2V0MTI4IFN0
YWNrbWFwU3BlY2lhbDo6ZXh0cmFDbG9iYmVyZWRSZWdzKEluc3QmIGluc3QpCiB7CiAgICAgU3Rh
Y2ttYXBWYWx1ZSogdmFsdWUgPSBpbnN0Lm9yaWdpbi0+YXM8U3RhY2ttYXBWYWx1ZT4oKTsKICAg
ICBBU1NFUlQodmFsdWUpOwpAQCAtNjUsNyArNjUsNyBAQCBSZWdpc3RlclNldCBTdGFja21hcFNw
ZWNpYWw6OmV4dHJhQ2xvYmJlcmVkUmVncyhJbnN0JiBpbnN0KQogICAgIHJldHVybiB2YWx1ZS0+
bGF0ZUNsb2JiZXJlZCgpOwogfQogCi1SZWdpc3RlclNldCBTdGFja21hcFNwZWNpYWw6OmV4dHJh
RWFybHlDbG9iYmVyZWRSZWdzKEluc3QmIGluc3QpCitSZWdpc3RlclNldDEyOCBTdGFja21hcFNw
ZWNpYWw6OmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKEluc3QmIGluc3QpCiB7CiAgICAgU3RhY2tt
YXBWYWx1ZSogdmFsdWUgPSBpbnN0Lm9yaWdpbi0+YXM8U3RhY2ttYXBWYWx1ZT4oKTsKICAgICBB
U1NFUlQodmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3Rh
Y2ttYXBTcGVjaWFsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNp
YWwuaAppbmRleCBlNmM5MmNiZWFiNzUuLmI1NGVkMzk3OTFlNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGlj
OgogICAgIH07CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIHJlcG9ydFVzZWRSZWdpc3RlcnMoQWly
OjpJbnN0JiwgY29uc3QgUmVnaXN0ZXJTZXQmKSBmaW5hbDsKLSAgICBSZWdpc3RlclNldCBleHRy
YUVhcmx5Q2xvYmJlcmVkUmVncyhBaXI6Okluc3QmKSBmaW5hbDsKLSAgICBSZWdpc3RlclNldCBl
eHRyYUNsb2JiZXJlZFJlZ3MoQWlyOjpJbnN0JikgZmluYWw7CisgICAgdm9pZCByZXBvcnRVc2Vk
UmVnaXN0ZXJzKEFpcjo6SW5zdCYsIGNvbnN0IFJlZ2lzdGVyU2V0MTI4JikgZmluYWw7CisgICAg
UmVnaXN0ZXJTZXQxMjggZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoQWlyOjpJbnN0JikgZmluYWw7
CisgICAgUmVnaXN0ZXJTZXQxMjggZXh0cmFDbG9iYmVyZWRSZWdzKEFpcjo6SW5zdCYpIGZpbmFs
OwogCiAgICAgLy8gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3Qgb3ZlcnJpZGUgZ2VuZXJhdGUoKSBv
ciBkdW1wSW1wbCgpL2RlZXBEdW1wSW1wbCgpLiBXZSBoYXZlIG1hbnkKICAgICAvLyBzdWJjbGFz
c2VzIHRoYXQgaW1wbGVtZW50IHRoYXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNTdGFja21hcFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFj
a21hcFZhbHVlLmgKaW5kZXggODdmMDA5ZDQ5MDExLi4zMjViY2U1NTM4YTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwVmFsdWUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFZhbHVlLmgKQEAgLTE3OSwyNiArMTc5LDMyIEBA
IHB1YmxpYzoKICAgICAvLyBidWdzIGFyZToKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMzM1IChMYXRlVXNlKQogICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE4MTEgKHdhcm0gQW55KQotICAgIHZvaWQgY2xv
YmJlckVhcmx5KGNvbnN0IFJlZ2lzdGVyU2V0JiBzZXQpCisgICAgdm9pZCBjbG9iYmVyRWFybHko
Y29uc3QgUmVnaXN0ZXJTZXQxMjgmIHNldCkKICAgICB7CiAgICAgICAgIG1fZWFybHlDbG9iYmVy
ZWQubWVyZ2Uoc2V0KTsKICAgICB9CiAKLSAgICB2b2lkIGNsb2JiZXJMYXRlKGNvbnN0IFJlZ2lz
dGVyU2V0JiBzZXQpCisgICAgdm9pZCBjbG9iYmVyTGF0ZShjb25zdCBSZWdpc3RlclNldDEyOCYg
c2V0KQogICAgIHsKICAgICAgICAgbV9sYXRlQ2xvYmJlcmVkLm1lcmdlKHNldCk7CiAgICAgfQog
Ci0gICAgdm9pZCBjbG9iYmVyKGNvbnN0IFJlZ2lzdGVyU2V0JiBzZXQpCisgICAgdm9pZCBjbG9i
YmVyKGNvbnN0IFJlZ2lzdGVyU2V0MTI4JiBzZXQpCiAgICAgewogICAgICAgICBjbG9iYmVyRWFy
bHkoc2V0KTsKICAgICAgICAgY2xvYmJlckxhdGUoc2V0KTsKICAgICB9CisgICAgCisgICAgdm9p
ZCBjbG9iYmVyRnVsbFdpZHRoKGNvbnN0IFJlZ2lzdGVyU2V0JiBzZXQpCisgICAgeworICAgICAg
ICBjbG9iYmVyRWFybHkoUmVnaXN0ZXJTZXQxMjg6OnVzZTEyOEJpdHMoc2V0KSk7CisgICAgICAg
IGNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0MTI4Ojp1c2UxMjhCaXRzKHNldCkpOworICAgIH0KIAot
ICAgIFJlZ2lzdGVyU2V0JiBlYXJseUNsb2JiZXJlZCgpIHsgcmV0dXJuIG1fZWFybHlDbG9iYmVy
ZWQ7IH0KLSAgICBSZWdpc3RlclNldCYgbGF0ZUNsb2JiZXJlZCgpIHsgcmV0dXJuIG1fbGF0ZUNs
b2JiZXJlZDsgfQotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBlYXJseUNsb2JiZXJlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZWFybHlDbG9iYmVyZWQ7IH0KLSAgICBjb25zdCBSZWdpc3RlclNldCYgbGF0
ZUNsb2JiZXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF0ZUNsb2JiZXJlZDsgfQorICAgIFJlZ2lz
dGVyU2V0MTI4JiBlYXJseUNsb2JiZXJlZCgpIHsgcmV0dXJuIG1fZWFybHlDbG9iYmVyZWQ7IH0K
KyAgICBSZWdpc3RlclNldDEyOCYgbGF0ZUNsb2JiZXJlZCgpIHsgcmV0dXJuIG1fbGF0ZUNsb2Ji
ZXJlZDsgfQorICAgIGNvbnN0IFJlZ2lzdGVyU2V0MTI4JiBlYXJseUNsb2JiZXJlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZWFybHlDbG9iYmVyZWQ7IH0KKyAgICBjb25zdCBSZWdpc3RlclNldDEyOCYg
bGF0ZUNsb2JiZXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF0ZUNsb2JiZXJlZDsgfQogCiAgICAg
dm9pZCBzZXRHZW5lcmF0b3IoUmVmUHRyPFN0YWNrbWFwR2VuZXJhdG9yPiBnZW5lcmF0b3IpCiAg
ICAgewpAQCAtMzExLDkgKzMxNyw5IEBAIHByaXZhdGU6CiAgICAgCiAgICAgVmVjdG9yPFZhbHVl
UmVwPiBtX3JlcHM7CiAgICAgUmVmUHRyPFN0YWNrbWFwR2VuZXJhdG9yPiBtX2dlbmVyYXRvcjsK
LSAgICBSZWdpc3RlclNldCBtX2Vhcmx5Q2xvYmJlcmVkOwotICAgIFJlZ2lzdGVyU2V0IG1fbGF0
ZUNsb2JiZXJlZDsKLSAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7IC8vIFN0YWNrbWFw
cyBjb3VsZCBiZSBmdXJ0aGVyIGR1cGxpY2F0ZWQgYnkgQWlyLCBidXQgdGhhdCdzIHVubGlrZWx5
LCBzbyB3ZSBqdXN0IG1lcmdlIHRoZSB1c2VkIHJlZ2lzdGVycyBzZXRzIGlmIHRoYXQgd2VyZSB0
byBoYXBwZW4uCisgICAgUmVnaXN0ZXJTZXQxMjggbV9lYXJseUNsb2JiZXJlZDsKKyAgICBSZWdp
c3RlclNldDEyOCBtX2xhdGVDbG9iYmVyZWQ7CisgICAgUmVnaXN0ZXJTZXQxMjggbV91c2VkUmVn
aXN0ZXJzOyAvLyBTdGFja21hcHMgY291bGQgYmUgZnVydGhlciBkdXBsaWNhdGVkIGJ5IEFpciwg
YnV0IHRoYXQncyB1bmxpa2VseSwgc28gd2UganVzdCBtZXJnZSB0aGUgdXNlZCByZWdpc3RlcnMg
c2V0cyBpZiB0aGF0IHdlcmUgdG8gaGFwcGVuLgogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuY3BwCmluZGV4IDUxY2RhYzA5NTIyZC4uYmY3
MzYwZjRkNDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmNwcApAQCAtNTIsNiArNTIs
OSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVHlwZSB0eXBlKQogICAg
IGNhc2UgRG91YmxlOgogICAgICAgICBvdXQucHJpbnQoIkRvdWJsZSIpOwogICAgICAgICByZXR1
cm47CisgICAgY2FzZSBWMTI4OgorICAgICAgICBvdXQucHJpbnQoIlYxMjgiKTsKKyAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgVHVwbGU6CiAgICAgICAgIG91dC5wcmludCgiVHVwbGUiKTsKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oCmluZGV4IDkzMjJmODhlZDli
OS4uODkwNmE2Y2Q4MDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNU
eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzQ29tbW9uLmgiCisjaW5j
bHVkZSAiU2ltZEluZm8uaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiAh
QVNTRVJUX0VOQUJMRUQKQEAgLTQ1LDYgKzQ2LDcgQEAgZW51bSBUeXBlS2luZCA6IHVpbnQzMl90
IHsKICAgICBJbnQ2NCwKICAgICBGbG9hdCwKICAgICBEb3VibGUsCisgICAgVjEyOCwKIAogICAg
IC8vIFR1cGxlcyBhcmUgcmVwcmVzZW50ZWQgYXMgdGhlIHR1cGxlRmxhZyB8IHdpdGggdGhlIHR1
cGxlJ3MgaW5kZXggaW50byBQcm9jZWR1cmUncyBtX3R1cGxlcyB0YWJsZS4KICAgICBUdXBsZSA9
IHR1cGxlRmxhZywKQEAgLTcwLDYgKzcyLDcgQEAgcHVibGljOgogICAgIGlubGluZSBib29sIGlz
RmxvYXQoKSBjb25zdDsKICAgICBpbmxpbmUgYm9vbCBpc051bWVyaWMoKSBjb25zdDsKICAgICBp
bmxpbmUgYm9vbCBpc1R1cGxlKCkgY29uc3Q7CisgICAgaW5saW5lIGJvb2wgaXNWZWN0b3IoKSBj
b25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUeXBlS2luZCYgb3RoZXJLaW5kKSBj
b25zdCB7IHJldHVybiBraW5kKCkgPT0gb3RoZXJLaW5kOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSB0eXBlLm1fa2luZDsg
fQpAQCAtODAsNiArODMsMjQgQEAgcHJpdmF0ZToKICAgICBUeXBlS2luZCBtX2tpbmQgeyBWb2lk
IH07CiB9OwogCitpbmxpbmUgVHlwZUtpbmQgc2ltZFNjYWxhclR5cGUoU2ltZExhbmUgbGFuZSkg
eworICAgIHN3aXRjaCAobGFuZSkgeworICAgIGNhc2UgU2ltZExhbmU6Omk4eDE2OgorICAgIGNh
c2UgU2ltZExhbmU6OmkxNng4OgorICAgIGNhc2UgU2ltZExhbmU6OmkzMng0OgorICAgICAgICBy
ZXR1cm4gSW50MzI7CisgICAgY2FzZSBTaW1kTGFuZTo6aTY0eDI6CisgICAgICAgIHJldHVybiBJ
bnQ2NDsKKyAgICBjYXNlIFNpbWRMYW5lOjpmMzJ4NDoKKyAgICAgICAgcmV0dXJuIEZsb2F0Owor
ICAgIGNhc2UgU2ltZExhbmU6OmY2NHgyOgorICAgICAgICByZXR1cm4gRG91YmxlOworICAgIGNh
c2UgU2ltZExhbmU6OnYxMjg6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiBJbnQ2NDsKKyAgICB9Cit9CisKIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KFR5cGVLaW5kKSA9PSBzaXplb2YoVHlwZSkpOwogCiBpbmxpbmUgYm9vbCBUeXBlOjppc0ludCgp
IGNvbnN0CkBAIC05NCw3ICsxMTUsNyBAQCBpbmxpbmUgYm9vbCBUeXBlOjppc0Zsb2F0KCkgY29u
c3QKIAogaW5saW5lIGJvb2wgVHlwZTo6aXNOdW1lcmljKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
aXNJbnQoKSB8fCBpc0Zsb2F0KCk7CisgICAgcmV0dXJuIGlzSW50KCkgfHwgaXNGbG9hdCgpIHx8
IGlzVmVjdG9yKCk7CiB9CiAKIGlubGluZSBib29sIFR5cGU6OmlzVHVwbGUoKSBjb25zdApAQCAt
MTAyLDYgKzEyMywxMSBAQCBpbmxpbmUgYm9vbCBUeXBlOjppc1R1cGxlKCkgY29uc3QKICAgICBy
ZXR1cm4ga2luZCgpID09IFR1cGxlOwogfQogCitpbmxpbmUgYm9vbCBUeXBlOjppc1ZlY3Rvcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGtpbmQoKSA9PSBWMTI4OworfQorCiBpbmxpbmUgVHlwZSBw
b2ludGVyVHlwZSgpCiB7CiAgICAgaWYgKGlzMzJCaXQoKSkKQEAgLTEyMSw2ICsxNDcsOCBAQCBp
bmxpbmUgc2l6ZV90IHNpemVvZlR5cGUoVHlwZSB0eXBlKQogICAgIGNhc2UgSW50NjQ6CiAgICAg
Y2FzZSBEb3VibGU6CiAgICAgICAgIHJldHVybiA4OworICAgIGNhc2UgVjEyODoKKyAgICAgICAg
cmV0dXJuIDE2OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGVNYXAuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1R5cGVNYXAuaAppbmRleCBmNTMyOWM0NjczYjAuLjg0N2VkOGNjZmM2MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZU1hcC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGVNYXAuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gbV9kb3VibGU7CiAgICAgICAgIGNhc2UgVHVwbGU6CiAg
ICAgICAgICAgICByZXR1cm4gbV90dXBsZTsKKyAgICAgICAgY2FzZSBWMTI4OgorICAgICAgICAg
ICAgcmV0dXJuIG1fdmVjdG9yOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KQEAgLTgyLDcgKzg0LDkgQEAgcHVibGljOgogICAgICAgICAgICAgIiwgaW50
MzIgPSAiLCBtX2ludDMyLAogICAgICAgICAgICAgIiwgaW50NjQgPSAiLCBtX2ludDY0LAogICAg
ICAgICAgICAgIiwgZmxvYXQgPSAiLCBtX2Zsb2F0LAotICAgICAgICAgICAgIiwgZG91YmxlID0g
IiwgbV9kb3VibGUsICJ9Iik7CisgICAgICAgICAgICAiLCBkb3VibGUgPSAiLCBtX2RvdWJsZSwK
KyAgICAgICAgICAgICIsIHZlY3RvciA9ICIsIG1fdmVjdG9yLAorICAgICAgICAgICAgIiwgdHVw
bGUgPSAiLCBtX3R1cGxlLCAifSIpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkBAIC05MSw2ICs5
NSw3IEBAIHByaXZhdGU6CiAgICAgVCBtX2ludDY0IHsgfTsKICAgICBUIG1fZmxvYXQgeyB9Owog
ICAgIFQgbV9kb3VibGUgeyB9OworICAgIFQgbV92ZWN0b3IgeyB9OwogICAgIFQgbV90dXBsZSB7
IH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKaW5kZXggYWVm
Y2QzNDFkNjM2Li44MWZiMjQwNDQ1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxp
ZGF0ZS5jcHAKQEAgLTE3MSw2ICsxNzEsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZB
TElEQVRFKCF2YWx1ZS0+bnVtQ2hpbGRyZW4oKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEZsb2F0LCAoIkF0ICIsICp2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDb25zdDEyODoKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxk
cmVuKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
PnR5cGUoKSA9PSBWMTI4LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBCb3R0b21UdXBsZToKICAgICAgICAgICAgICAgICBWQUxJREFU
RSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAg
ICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZhbHVl
KSk7CkBAIC0xOTYsOCArMjAxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFU
RSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAg
ICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZhbHVl
KSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICh2YWx1
ZS0+YXM8QXJndW1lbnRSZWdWYWx1ZT4oKS0+YXJndW1lbnRSZWcoKS5pc0dQUigpID8gcG9pbnRl
clR5cGUoKSA6IERvdWJsZSkKLSAgICAgICAgICAgICAgICAgICAgPT0gdmFsdWUtPnR5cGUoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgKHZhbHVlLT5hczxBcmd1bWVu
dFJlZ1ZhbHVlPigpLT5hcmd1bWVudFJlZygpLmlzR1BSKCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgID8gKHZhbHVlLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDogKHZhbHVlLT50eXBlKCkgPT0gVjEyOCB8fCB2YWx1ZS0+dHlwZSgpID09IERvdWJs
ZSkpCisgICAgICAgICAgICAgICAgICAgICwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQWRkOgogICAgICAgICAgICAgY2FzZSBTdWI6
CkBAIC00NDEsNiArNDQ4LDIwOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHBvaW50ZXJUeXBl
KCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIFplcm9FeHRlbmQ2NFRvVmVjdG9yOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2
YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVl
KSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWMTI4LCAoIkF0
ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+
dHlwZSgpID09IERvdWJsZSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yRXh0cmFjdExhbmU6CisgICAgICAgICAgICAgICAg
VkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09
IHNpbWRTY2FsYXJUeXBlKHZhbHVlLT5hc1NpbWRWYWx1ZSgpLT5zaW1kTGFuZSgpKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5
cGUoKSA9PSBWMTI4LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBWZWN0b3JSZXBsYWNlTGFuZToKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVjEy
OCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hp
bGQoMCktPnR5cGUoKSA9PSBWMTI4LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHNpbWRTY2FsYXJUeXBlKHZhbHVl
LT5hc1NpbWRWYWx1ZSgpLT5zaW1kTGFuZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yTm90OgorICAgICAgICAgICAg
Y2FzZSBWZWN0b3JBYnM6CisgICAgICAgICAgICBjYXNlIFZlY3Rvck5lZzoKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAx
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBl
KCkgPT0gVjEyOCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBWMTI4LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFZlY3RvclNwbGF0OgorICAgICAg
ICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigp
ID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
PnR5cGUoKSA9PSBWMTI4LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHNpbWRTY2FsYXJUeXBlKHZhbHVlLT5hc1Np
bWRWYWx1ZSgpLT5zaW1kTGFuZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBWZWN0b3JQb3BjbnQ6CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVl
KSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgp
ID09IFYxMjgsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPmNoaWxkKDApLT50eXBlKCkgPT0gVjEyOCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+YXNTaW1kVmFsdWUoKS0+c2ltZExhbmUoKSA9PSBTaW1k
TGFuZTo6aTh4MTYsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgIGNhc2UgVmVjdG9yTXVsU2F0OgorICAgICAgICAgICAgY2FzZSBWZWN0b3JT
d2l6emxlOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJh
Qml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWMTI4LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IFYxMjgsICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50
eXBlKCkgPT0gVjEyOCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+YXNTaW1kVmFsdWUoKS0+c2ltZExhbmUoKSA9PSBTaW1kTGFuZTo6aTh4MTYsICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNh
c2UgVmVjdG9yQml0bWFzazoKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yQWxsVHJ1ZToKKyAgICAg
ICAgICAgIGNhc2UgVmVjdG9yQW55VHJ1ZToKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFs
dWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkuaXNJbnQoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5
cGUoKSA9PSBWMTI4LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIGlmICh2YWx1
ZS0+b3Bjb2RlKCkgPT0gVmVjdG9yQW55VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPmFzU2ltZFZhbHVlKCktPnNpbWRMYW5lKCkgPT0gU2ltZExhbmU6OnYxMjgsICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBWQUxJREFURShzY2FsYXJUeXBlSXNJbnRlZ3JhbCh2YWx1ZS0+YXNTaW1kVmFsdWUoKS0+c2lt
ZExhbmUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgIGNhc2UgVmVjdG9yQ2VpbDoKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yRmxvb3I6
CisgICAgICAgICAgICBjYXNlIFZlY3RvclRydW5jOgorICAgICAgICAgICAgY2FzZSBWZWN0b3JU
cnVuY1NhdDoKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yTmVhcmVzdDoKKyAgICAgICAgICAgIGNh
c2UgVmVjdG9yU3FydDoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5o
YXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+dHlwZSgpID09IFYxMjgsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBWMTI4
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHNjYWxhclR5cGVJ
c0Zsb2F0aW5nUG9pbnQodmFsdWUtPmFzU2ltZFZhbHVlKCktPnNpbWRMYW5lKCkpLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBWZWN0
b3JDb252ZXJ0OgorICAgICAgICAgICAgY2FzZSBWZWN0b3JDb252ZXJ0TG93OgorICAgICAgICAg
ICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVjEyOCwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hp
bGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IFYxMjgsICgiQXQgIiwgKnZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgVkFMSURBVEUoc2NhbGFyVHlwZUlzSW50ZWdyYWwodmFsdWUtPmFzU2ltZFZh
bHVlKCktPnNpbWRMYW5lKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZB
TElEQVRFKGVsZW1lbnRCeXRlU2l6ZSh2YWx1ZS0+YXNTaW1kVmFsdWUoKS0+c2ltZExhbmUoKSkg
PT0gNCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgY2FzZSBWZWN0b3JFeHRlbmRMb3c6CisgICAgICAgICAgICBjYXNlIFZlY3RvckV4dGVu
ZEhpZ2g6CisgICAgICAgICAgICBjYXNlIFZlY3RvckV4dGFkZFBhaXJ3aXNlOgorICAgICAgICAg
ICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09
IDEsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5
cGUoKSA9PSBWMTI4LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IFYxMjggfHwgdmFsdWUtPmNoaWxkKDApLT50eXBl
KCkgPT0gRG91YmxlLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KHNjYWxhclR5cGVJc0ludGVncmFsKHZhbHVlLT5hc1NpbWRWYWx1ZSgpLT5zaW1kTGFuZSgpKSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+YXNTaW1k
VmFsdWUoKS0+c2lnbk1vZGUoKSAhPSBTaW1kU2lnbk1vZGU6Ok5vbmUsICgiQXQgIiwgKnZhbHVl
KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yUHJv
bW90ZToKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yRGVtb3RlOgorICAgICAgICAgICAgICAgIFZB
TElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBW
MTI4LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5j
aGlsZCgwKS0+dHlwZSgpID09IFYxMjgsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUoc2NhbGFyVHlwZUlzRmxvYXRpbmdQb2ludCh2YWx1ZS0+YXNTaW1kVmFsdWUo
KS0+c2ltZExhbmUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgaWYgKHZh
bHVlLT5vcGNvZGUoKSA9PSBWZWN0b3JQcm9tb3RlKQorICAgICAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+YXNTaW1kVmFsdWUoKS0+c2ltZExhbmUoKSA9PSBTaW1kTGFuZTo6ZjMyeDQs
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+YXNTaW1kVmFsdWUoKS0+c2ltZExhbmUoKSA9PSBTaW1kTGFu
ZTo6ZjY0eDIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgIGNhc2UgVmVjdG9yTm90RXF1YWw6CisgICAgICAgICAgICBjYXNlIFZlY3Rvckxl
c3NUaGFuOgorICAgICAgICAgICAgY2FzZSBWZWN0b3JMZXNzVGhhbk9yRXF1YWw6CisgICAgICAg
ICAgICBjYXNlIFZlY3RvckJlbG93OgorICAgICAgICAgICAgY2FzZSBWZWN0b3JCZWxvd09yRXF1
YWw6CisgICAgICAgICAgICBjYXNlIFZlY3RvckdyZWF0ZXJUaGFuOgorICAgICAgICAgICAgY2Fz
ZSBWZWN0b3JHcmVhdGVyVGhhbk9yRXF1YWw6CisgICAgICAgICAgICBjYXNlIFZlY3RvckFib3Zl
OgorICAgICAgICAgICAgY2FzZSBWZWN0b3JBYm92ZU9yRXF1YWw6CisgICAgICAgICAgICBjYXNl
IFZlY3RvckVxdWFsOgorICAgICAgICAgICAgY2FzZSBWZWN0b3JBZGQ6CisgICAgICAgICAgICBj
YXNlIFZlY3RvclN1YjoKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yQWRkU2F0OgorICAgICAgICAg
ICAgY2FzZSBWZWN0b3JTdWJTYXQ6CisgICAgICAgICAgICBjYXNlIFZlY3Rvck11bDoKKyAgICAg
ICAgICAgIGNhc2UgVmVjdG9yQW5kOgorICAgICAgICAgICAgY2FzZSBWZWN0b3JBbmRub3Q6Cisg
ICAgICAgICAgICBjYXNlIFZlY3Rvck9yOgorICAgICAgICAgICAgY2FzZSBWZWN0b3JYb3I6Cisg
ICAgICAgICAgICBjYXNlIFZlY3RvckF2Z1JvdW5kOgorICAgICAgICAgICAgY2FzZSBWZWN0b3JE
b3RQcm9kdWN0OgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4
dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWMTI4LCAoIkF0ICIsICp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IFYxMjgsICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEp
LT50eXBlKCkgPT0gVjEyOCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBpZiAo
dmFsdWUtPm9wY29kZSgpID09IFZlY3RvckF2Z1JvdW5kKQorICAgICAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+YXNTaW1kVmFsdWUoKS0+c2ltZExhbmUoKSA9PSBTaW1kTGFuZTo6aTh4
MTYgfHwgdmFsdWUtPmFzU2ltZFZhbHVlKCktPnNpbWRMYW5lKCkgPT0gU2ltZExhbmU6OmkxNng4
LCAgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS0+b3Bj
b2RlKCkgPT0gVmVjdG9yRG90UHJvZHVjdCkKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPmFzU2ltZFZhbHVlKCktPnNpbWRMYW5lKCkgPT0gU2ltZExhbmU6OmkzMng0LCAgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
VmVjdG9yU2hsOgorICAgICAgICAgICAgY2FzZSBWZWN0b3JTaHI6CisgICAgICAgICAgICAgICAg
VkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09
IFYxMjgsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
PmNoaWxkKDApLT50eXBlKCkgPT0gVjEyOCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUtPm9wY29kZSgpID09IFZlY3RvclNo
cikKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmFzU2ltZFZhbHVlKCktPnNp
Z25Nb2RlKCkgIT0gU2ltZFNpZ25Nb2RlOjpOb25lLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBWZWN0b3JNaW46CisgICAgICAgICAg
ICBjYXNlIFZlY3Rvck1heDoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQo
KS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVjEyOCwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBW
MTI4LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5j
aGlsZCgxKS0+dHlwZSgpID09IFYxMjgsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPmFzU2ltZFZhbHVlKCktPnNpZ25Nb2RlKCkgIT0gU2ltZFNpZ25N
b2RlOjpOb25lLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBWZWN0b3JQbWluOgorICAgICAgICAgICAgY2FzZSBWZWN0b3JQbWF4Ogor
ICAgICAgICAgICAgY2FzZSBWZWN0b3JEaXY6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZh
bHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IFYxMjgsICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50
eXBlKCkgPT0gVjEyOCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBWMTI4LCAoIkF0ICIsICp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHNjYWxhclR5cGVJc0Zsb2F0aW5nUG9pbnQodmFsdWUtPmFz
U2ltZFZhbHVlKCktPnNpbWRMYW5lKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBWZWN0b3JOYXJyb3c6CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVl
KSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgp
ID09IFYxMjgsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPmNoaWxkKDApLT50eXBlKCkgPT0gVjEyOCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBWMTI4LCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHNjYWxhclR5cGVJc0ludGVncmFs
KHZhbHVlLT5hc1NpbWRWYWx1ZSgpLT5zaW1kTGFuZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+YXNTaW1kVmFsdWUoKS0+c2lnbk1vZGUoKSAh
PSBTaW1kU2lnbk1vZGU6Ok5vbmUsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIFZlY3RvckJpdHdpc2VTZWxlY3Q6CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0g
MywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlw
ZSgpID09IFYxMjgsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gVjEyOCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBWMTI4LCAoIkF0
ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgyKS0+
dHlwZSgpID09IFYxMjgsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPmFzU2ltZFZhbHVlKCktPnNpbWRMYW5lKCkgPT0gU2ltZExhbmU6OnYxMjgsICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmFzU2ltZFZh
bHVlKCktPnNpZ25Nb2RlKCkgPT0gU2ltZFNpZ25Nb2RlOjpOb25lLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBWZWN0b3JTaHVmZmxl
OgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygp
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1D
aGlsZHJlbigpID09IDMsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPnR5cGUoKSA9PSBWMTI4LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IFYxMjgsICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkg
PT0gVjEyOCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+Y2hpbGQoMiktPmlzQ29uc3RhbnQoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMyktPmlzQ29uc3RhbnQoKSwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+YXNTaW1kVmFsdWUoKS0+c2lt
ZExhbmUoKSA9PSBTaW1kTGFuZTo6djEyOCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+YXNTaW1kVmFsdWUoKS0+c2lnbk1vZGUoKSA9PSBTaW1kU2ln
bk1vZGU6Ok5vbmUsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIENDYWxsOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+
a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID49IDEsICgiQXQgIiwgKnZhbHVlKSk7CkBA
IC02MjksNyArODM4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAodmFsdWUudmFs
dWUoKS0+dHlwZSgpLmlzVHVwbGUoKSkKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUobV9w
cm9jZWR1cmUuZXh0cmFjdEZyb21UdXBsZSh2YWx1ZS52YWx1ZSgpLT50eXBlKCksIHR1cGxlSW5k
ZXgpLmlzRmxvYXQoKSwgKCJBdCAiLCAqY29udGV4dCwgIjogIiwgdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLnZhbHVlKCkt
PnR5cGUoKS5pc0Zsb2F0KCksICgiQXQgIiwgKmNvbnRleHQsICI6ICIsIHZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLnZhbHVlKCktPnR5cGUoKS5pc0Zsb2F0KCkg
fHwgdmFsdWUudmFsdWUoKS0+dHlwZSgpLmlzVmVjdG9yKCksICgiQXQgIiwgKmNvbnRleHQsICI6
ICIsIHZhbHVlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRleCBlM2VlZmZjNzdj
NzcuLjQ5YWNjMWQxNmZmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcApAQCAt
MTczLDYgKzE3MywxMCBAQCB2b2lkIFZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CiAgICAgICAgIG91dC5wcmludCgiJCIsIGFzRG91YmxlKCksICIoIik7CiAgICAgICAgIGlzQ29u
c3RhbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbnN0MTI4OgorICAgICAg
ICBvdXQucHJpbnQoIiRbIiwgYXNWMTI4KCkudTY0eDJbMF0sICI6OiIsIGFzVjEyOCgpLnU2NHgy
WzFdLCAiXSgiKTsKKyAgICAgICAgaXNDb25zdGFudCA9IHRydWU7CisgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTU0MCw2ICs1NDQsNyBAQCBF
ZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBjYXNlIE9wYXF1ZToKICAgICBjYXNl
IENvbnN0MzI6CiAgICAgY2FzZSBDb25zdDY0OgorICAgIGNhc2UgQ29uc3QxMjg6CiAgICAgY2Fz
ZSBDb25zdERvdWJsZToKICAgICBjYXNlIENvbnN0RmxvYXQ6CiAgICAgY2FzZSBCb3R0b21UdXBs
ZToKQEAgLTU4OSw2ICs1OTQsNjMgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAg
ICAgY2FzZSBFeHRyYWN0OgogICAgIGNhc2UgRk1pbjoKICAgICBjYXNlIEZNYXg6CisgICAgY2Fz
ZSBaZXJvRXh0ZW5kNjRUb1ZlY3RvcjoKKyAgICBjYXNlIFZlY3RvckV4dHJhY3RMYW5lOgorICAg
IGNhc2UgVmVjdG9yUmVwbGFjZUxhbmU6CisgICAgY2FzZSBWZWN0b3JFcXVhbDoKKyAgICBjYXNl
IFZlY3Rvck5vdEVxdWFsOgorICAgIGNhc2UgVmVjdG9yTGVzc1RoYW46CisgICAgY2FzZSBWZWN0
b3JMZXNzVGhhbk9yRXF1YWw6CisgICAgY2FzZSBWZWN0b3JCZWxvdzoKKyAgICBjYXNlIFZlY3Rv
ckJlbG93T3JFcXVhbDoKKyAgICBjYXNlIFZlY3RvckdyZWF0ZXJUaGFuOgorICAgIGNhc2UgVmVj
dG9yR3JlYXRlclRoYW5PckVxdWFsOgorICAgIGNhc2UgVmVjdG9yQWJvdmU6CisgICAgY2FzZSBW
ZWN0b3JBYm92ZU9yRXF1YWw6CisgICAgY2FzZSBWZWN0b3JBZGQ6CisgICAgY2FzZSBWZWN0b3JT
dWI6CisgICAgY2FzZSBWZWN0b3JBZGRTYXQ6CisgICAgY2FzZSBWZWN0b3JTdWJTYXQ6CisgICAg
Y2FzZSBWZWN0b3JNdWw6CisgICAgY2FzZSBWZWN0b3JEb3RQcm9kdWN0OgorICAgIGNhc2UgVmVj
dG9yRGl2OgorICAgIGNhc2UgVmVjdG9yTWluOgorICAgIGNhc2UgVmVjdG9yTWF4OgorICAgIGNh
c2UgVmVjdG9yUG1pbjoKKyAgICBjYXNlIFZlY3RvclBtYXg6CisgICAgY2FzZSBWZWN0b3JOYXJy
b3c6CisgICAgY2FzZSBWZWN0b3JOb3Q6CisgICAgY2FzZSBWZWN0b3JBbmQ6CisgICAgY2FzZSBW
ZWN0b3JBbmRub3Q6CisgICAgY2FzZSBWZWN0b3JPcjoKKyAgICBjYXNlIFZlY3RvclhvcjoKKyAg
ICBjYXNlIFZlY3RvclNobDoKKyAgICBjYXNlIFZlY3RvclNocjoKKyAgICBjYXNlIFZlY3RvckFi
czoKKyAgICBjYXNlIFZlY3Rvck5lZzoKKyAgICBjYXNlIFZlY3RvclBvcGNudDoKKyAgICBjYXNl
IFZlY3RvckNlaWw6CisgICAgY2FzZSBWZWN0b3JGbG9vcjoKKyAgICBjYXNlIFZlY3RvclRydW5j
OgorICAgIGNhc2UgVmVjdG9yVHJ1bmNTYXQ6CisgICAgY2FzZSBWZWN0b3JDb252ZXJ0OgorICAg
IGNhc2UgVmVjdG9yQ29udmVydExvdzoKKyAgICBjYXNlIFZlY3Rvck5lYXJlc3Q6CisgICAgY2Fz
ZSBWZWN0b3JTcXJ0OgorICAgIGNhc2UgVmVjdG9yRXh0ZW5kTG93OgorICAgIGNhc2UgVmVjdG9y
RXh0ZW5kSGlnaDoKKyAgICBjYXNlIFZlY3RvclByb21vdGU6CisgICAgY2FzZSBWZWN0b3JEZW1v
dGU6CisgICAgY2FzZSBWZWN0b3JTcGxhdDoKKyAgICBjYXNlIFZlY3RvckFueVRydWU6CisgICAg
Y2FzZSBWZWN0b3JBbGxUcnVlOgorICAgIGNhc2UgVmVjdG9yQXZnUm91bmQ6CisgICAgY2FzZSBW
ZWN0b3JCaXRtYXNrOgorICAgIGNhc2UgVmVjdG9yQml0d2lzZVNlbGVjdDoKKyAgICBjYXNlIFZl
Y3RvckV4dGFkZFBhaXJ3aXNlOgorICAgIGNhc2UgVmVjdG9yTXVsU2F0OgorICAgIGNhc2UgVmVj
dG9yU3dpenpsZToKKyAgICBjYXNlIFZlY3RvclNodWZmbGU6CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgRGl2OgogICAgIGNhc2UgVURpdjoKQEAgLTg4OSw2ICs5NTEsNyBAQCBUeXBlIFZhbHVl
Ojp0eXBlRm9yKEtpbmQga2luZCwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZhbHVlKiBzZWNvbmRDaGls
ZCkKICAgICAgICAgICAgIHJldHVybiBJbnQzMjsKICAgICAgICAgY2FzZSBWb2lkOgogICAgICAg
ICBjYXNlIFR1cGxlOgorICAgICAgICBjYXNlIFYxMjg6CiAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gVm9pZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZS5oCmluZGV4IDI1MGEwMmRmZjIxOC4uOTUwN2JhM2EwYWYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7CiBjbGFzcyBCYXNpY0Jsb2NrOwogY2xhc3MgQ2hlY2tWYWx1ZTsKIGNs
YXNzIEluc2VydGlvblNldDsKK2NsYXNzIFNpbWRWYWx1ZTsKIGNsYXNzIFBoaUNoaWxkcmVuOwog
Y2xhc3MgUHJvY2VkdXJlOwogCkBAIC0yNjMsNiArMjY0LDkgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzSW50NjQoKSBjb25zdDsKICAgICBpbnQ2NF90IGFzSW50NjQoKSBjb25zdDsKICAgICBib29s
IGlzSW50NjQoaW50NjRfdCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBoYXNWMTI4KCkgY29uc3Q7
CisgICAgdjEyOF90IGFzVjEyOCgpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNJbnQoKSBjb25zdDsK
ICAgICBpbnQ2NF90IGFzSW50KCkgY29uc3Q7CkBAIC0yOTQsNiArMjk4LDkgQEAgcHVibGljOgog
ICAgIFRyaVN0YXRlIGFzVHJpU3RhdGUoKSBjb25zdDsKICAgICBib29sIGlzTGlrZVplcm8oKSBj
b25zdCB7IHJldHVybiBhc1RyaVN0YXRlKCkgPT0gVHJpU3RhdGU6OkZhbHNlOyB9CiAgICAgYm9v
bCBpc0xpa2VOb25aZXJvKCkgY29uc3QgeyByZXR1cm4gYXNUcmlTdGF0ZSgpID09IFRyaVN0YXRl
OjpUcnVlOyB9CisgICAgCisgICAgYm9vbCBpc1NpbWRWYWx1ZSgpIGNvbnN0OworICAgIFNpbWRW
YWx1ZSogYXNTaW1kVmFsdWUoKTsKIAogICAgIEVmZmVjdHMgZWZmZWN0cygpIGNvbnN0OwogCkBA
IC0zOTEsNiArMzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBjYXNlIEFyZ3VtZW50UmVnOgog
ICAgICAgICBjYXNlIENvbnN0MzI6CiAgICAgICAgIGNhc2UgQ29uc3Q2NDoKKyAgICAgICAgY2Fz
ZSBDb25zdDEyODoKICAgICAgICAgY2FzZSBDb25zdEZsb2F0OgogICAgICAgICBjYXNlIENvbnN0
RG91YmxlOgogICAgICAgICBjYXNlIEJvdHRvbVR1cGxlOgpAQCAtNDMwLDYgKzQzOCwyOSBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIGNhc2UgU2V0OgogICAgICAgICBjYXNlIFdhc21BZGRyZXNzOgog
ICAgICAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazoKKyAgICAgICAgY2FzZSBaZXJvRXh0ZW5kNjRU
b1ZlY3RvcjoKKyAgICAgICAgY2FzZSBWZWN0b3JFeHRyYWN0TGFuZToKKyAgICAgICAgY2FzZSBW
ZWN0b3JTcGxhdDoKKyAgICAgICAgY2FzZSBWZWN0b3JOb3Q6CisgICAgICAgIGNhc2UgVmVjdG9y
QWJzOgorICAgICAgICBjYXNlIFZlY3Rvck5lZzoKKyAgICAgICAgY2FzZSBWZWN0b3JQb3BjbnQ6
CisgICAgICAgIGNhc2UgVmVjdG9yQ2VpbDoKKyAgICAgICAgY2FzZSBWZWN0b3JGbG9vcjoKKyAg
ICAgICAgY2FzZSBWZWN0b3JUcnVuYzoKKyAgICAgICAgY2FzZSBWZWN0b3JUcnVuY1NhdDoKKyAg
ICAgICAgY2FzZSBWZWN0b3JDb252ZXJ0OgorICAgICAgICBjYXNlIFZlY3RvckNvbnZlcnRMb3c6
CisgICAgICAgIGNhc2UgVmVjdG9yTmVhcmVzdDoKKyAgICAgICAgY2FzZSBWZWN0b3JTcXJ0Ogor
ICAgICAgICBjYXNlIFZlY3RvckV4dGVuZExvdzoKKyAgICAgICAgY2FzZSBWZWN0b3JFeHRlbmRI
aWdoOgorICAgICAgICBjYXNlIFZlY3RvclByb21vdGU6CisgICAgICAgIGNhc2UgVmVjdG9yRGVt
b3RlOgorICAgICAgICBjYXNlIFZlY3RvckJpdG1hc2s6CisgICAgICAgIGNhc2UgVmVjdG9yQW55
VHJ1ZTogCisgICAgICAgIGNhc2UgVmVjdG9yQWxsVHJ1ZToKKyAgICAgICAgY2FzZSBWZWN0b3JF
eHRhZGRQYWlyd2lzZToKICAgICAgICAgICAgIHJldHVybiBzaXplb2YoVmFsdWUqKTsKICAgICAg
ICAgY2FzZSBBZGQ6CiAgICAgICAgIGNhc2UgU3ViOgpAQCAtNDY4LDEwICs0OTksNDQgQEAgcHJv
dGVjdGVkOgogICAgICAgICBjYXNlIFN0b3JlODoKICAgICAgICAgY2FzZSBTdG9yZTE2OgogICAg
ICAgICBjYXNlIFN0b3JlOgorICAgICAgICBjYXNlIFZlY3RvclJlcGxhY2VMYW5lOgorICAgICAg
ICBjYXNlIFZlY3RvckVxdWFsOgorICAgICAgICBjYXNlIFZlY3Rvck5vdEVxdWFsOgorICAgICAg
ICBjYXNlIFZlY3Rvckxlc3NUaGFuOgorICAgICAgICBjYXNlIFZlY3Rvckxlc3NUaGFuT3JFcXVh
bDoKKyAgICAgICAgY2FzZSBWZWN0b3JCZWxvdzoKKyAgICAgICAgY2FzZSBWZWN0b3JCZWxvd09y
RXF1YWw6CisgICAgICAgIGNhc2UgVmVjdG9yR3JlYXRlclRoYW46CisgICAgICAgIGNhc2UgVmVj
dG9yR3JlYXRlclRoYW5PckVxdWFsOgorICAgICAgICBjYXNlIFZlY3RvckFib3ZlOgorICAgICAg
ICBjYXNlIFZlY3RvckFib3ZlT3JFcXVhbDoKKyAgICAgICAgY2FzZSBWZWN0b3JBZGQ6CisgICAg
ICAgIGNhc2UgVmVjdG9yU3ViOgorICAgICAgICBjYXNlIFZlY3RvckFkZFNhdDoKKyAgICAgICAg
Y2FzZSBWZWN0b3JTdWJTYXQ6CisgICAgICAgIGNhc2UgVmVjdG9yTXVsOgorICAgICAgICBjYXNl
IFZlY3RvckRvdFByb2R1Y3Q6CisgICAgICAgIGNhc2UgVmVjdG9yRGl2OgorICAgICAgICBjYXNl
IFZlY3Rvck1pbjoKKyAgICAgICAgY2FzZSBWZWN0b3JNYXg6CisgICAgICAgIGNhc2UgVmVjdG9y
UG1pbjoKKyAgICAgICAgY2FzZSBWZWN0b3JQbWF4OgorICAgICAgICBjYXNlIFZlY3Rvck5hcnJv
dzoKKyAgICAgICAgY2FzZSBWZWN0b3JBbmQ6CisgICAgICAgIGNhc2UgVmVjdG9yQW5kbm90Ogor
ICAgICAgICBjYXNlIFZlY3Rvck9yOgorICAgICAgICBjYXNlIFZlY3RvclhvcjoKKyAgICAgICAg
Y2FzZSBWZWN0b3JTaGw6CisgICAgICAgIGNhc2UgVmVjdG9yU2hyOgorICAgICAgICBjYXNlIFZl
Y3Rvck11bFNhdDoKKyAgICAgICAgY2FzZSBWZWN0b3JTd2l6emxlOgorICAgICAgICBjYXNlIFZl
Y3RvckF2Z1JvdW5kOgorICAgICAgICBjYXNlIFZlY3RvclNodWZmbGU6CiAgICAgICAgICAgICBy
ZXR1cm4gMiAqIHNpemVvZihWYWx1ZSopOwogICAgICAgICBjYXNlIFNlbGVjdDoKICAgICAgICAg
Y2FzZSBBdG9taWNXZWFrQ0FTOgogICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAg
ICAgY2FzZSBWZWN0b3JCaXR3aXNlU2VsZWN0OgogICAgICAgICAgICAgcmV0dXJuIDMgKiBzaXpl
b2YoVmFsdWUqKTsKICAgICAgICAgY2FzZSBDQ2FsbDoKICAgICAgICAgY2FzZSBDaGVjazoKQEAg
LTU5NSw2ICs2NjAsMjkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAg
ICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2UgRGVwZW5kOgorICAgICAgICBjYXNlIFpl
cm9FeHRlbmQ2NFRvVmVjdG9yOgorICAgICAgICBjYXNlIFZlY3RvckV4dHJhY3RMYW5lOgorICAg
ICAgICBjYXNlIFZlY3Rvck5vdDoKKyAgICAgICAgY2FzZSBWZWN0b3JTcGxhdDoKKyAgICAgICAg
Y2FzZSBWZWN0b3JBYnM6CisgICAgICAgIGNhc2UgVmVjdG9yTmVnOgorICAgICAgICBjYXNlIFZl
Y3RvclBvcGNudDoKKyAgICAgICAgY2FzZSBWZWN0b3JDZWlsOgorICAgICAgICBjYXNlIFZlY3Rv
ckZsb29yOgorICAgICAgICBjYXNlIFZlY3RvclRydW5jOgorICAgICAgICBjYXNlIFZlY3RvclRy
dW5jU2F0OgorICAgICAgICBjYXNlIFZlY3RvckNvbnZlcnQ6CisgICAgICAgIGNhc2UgVmVjdG9y
Q29udmVydExvdzoKKyAgICAgICAgY2FzZSBWZWN0b3JOZWFyZXN0OgorICAgICAgICBjYXNlIFZl
Y3RvclNxcnQ6CisgICAgICAgIGNhc2UgVmVjdG9yRXh0ZW5kTG93OgorICAgICAgICBjYXNlIFZl
Y3RvckV4dGVuZEhpZ2g6CisgICAgICAgIGNhc2UgVmVjdG9yUHJvbW90ZToKKyAgICAgICAgY2Fz
ZSBWZWN0b3JEZW1vdGU6CisgICAgICAgIGNhc2UgVmVjdG9yQml0bWFzazoKKyAgICAgICAgY2Fz
ZSBWZWN0b3JBbnlUcnVlOiAKKyAgICAgICAgY2FzZSBWZWN0b3JBbGxUcnVlOgorICAgICAgICBj
YXNlIFZlY3RvckV4dGFkZFBhaXJ3aXNlOgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG51bUFy
Z3MgIT0gMSkpCiAgICAgICAgICAgICAgICAgYmFkS2luZChraW5kLCBudW1BcmdzKTsKICAgICAg
ICAgICAgIHJldHVybiBPbmU7CkBAIC02MjYsMTAgKzcxNCw0NCBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIEFib3ZlRXF1YWw6CiAgICAgICAgIGNhc2UgQmVsb3dFcXVhbDoKICAgICAgICAgY2Fz
ZSBFcXVhbE9yVW5vcmRlcmVkOgorICAgICAgICBjYXNlIFZlY3RvclJlcGxhY2VMYW5lOgorICAg
ICAgICBjYXNlIFZlY3RvckVxdWFsOgorICAgICAgICBjYXNlIFZlY3Rvck5vdEVxdWFsOgorICAg
ICAgICBjYXNlIFZlY3Rvckxlc3NUaGFuOgorICAgICAgICBjYXNlIFZlY3Rvckxlc3NUaGFuT3JF
cXVhbDoKKyAgICAgICAgY2FzZSBWZWN0b3JCZWxvdzoKKyAgICAgICAgY2FzZSBWZWN0b3JCZWxv
d09yRXF1YWw6CisgICAgICAgIGNhc2UgVmVjdG9yR3JlYXRlclRoYW46CisgICAgICAgIGNhc2Ug
VmVjdG9yR3JlYXRlclRoYW5PckVxdWFsOgorICAgICAgICBjYXNlIFZlY3RvckFib3ZlOgorICAg
ICAgICBjYXNlIFZlY3RvckFib3ZlT3JFcXVhbDoKKyAgICAgICAgY2FzZSBWZWN0b3JBZGQ6Cisg
ICAgICAgIGNhc2UgVmVjdG9yU3ViOgorICAgICAgICBjYXNlIFZlY3RvckFkZFNhdDoKKyAgICAg
ICAgY2FzZSBWZWN0b3JTdWJTYXQ6CisgICAgICAgIGNhc2UgVmVjdG9yTXVsOgorICAgICAgICBj
YXNlIFZlY3RvckRvdFByb2R1Y3Q6CisgICAgICAgIGNhc2UgVmVjdG9yRGl2OgorICAgICAgICBj
YXNlIFZlY3Rvck1pbjoKKyAgICAgICAgY2FzZSBWZWN0b3JNYXg6CisgICAgICAgIGNhc2UgVmVj
dG9yUG1pbjoKKyAgICAgICAgY2FzZSBWZWN0b3JQbWF4OgorICAgICAgICBjYXNlIFZlY3Rvck5h
cnJvdzoKKyAgICAgICAgY2FzZSBWZWN0b3JBbmQ6CisgICAgICAgIGNhc2UgVmVjdG9yQW5kbm90
OgorICAgICAgICBjYXNlIFZlY3Rvck9yOgorICAgICAgICBjYXNlIFZlY3RvclhvcjoKKyAgICAg
ICAgY2FzZSBWZWN0b3JTaGw6CisgICAgICAgIGNhc2UgVmVjdG9yU2hyOgorICAgICAgICBjYXNl
IFZlY3Rvck11bFNhdDoKKyAgICAgICAgY2FzZSBWZWN0b3JTd2l6emxlOgorICAgICAgICBjYXNl
IFZlY3RvclNodWZmbGU6CisgICAgICAgIGNhc2UgVmVjdG9yQXZnUm91bmQ6CiAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkobnVtQXJncyAhPSAyKSkKICAgICAgICAgICAgICAgICBiYWRLaW5kKGtp
bmQsIG51bUFyZ3MpOwogICAgICAgICAgICAgcmV0dXJuIFR3bzsKICAgICAgICAgY2FzZSBTZWxl
Y3Q6CisgICAgICAgIGNhc2UgVmVjdG9yQml0d2lzZVNlbGVjdDoKICAgICAgICAgICAgIGlmIChV
TkxJS0VMWShudW1BcmdzICE9IDMpKQogICAgICAgICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVt
QXJncyk7CiAgICAgICAgICAgICByZXR1cm4gVGhyZWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlSW5saW5lcy5oCmluZGV4IDkzOWEyNjQ3ZWM2YS4uMDY4MTVkZjFjZTJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkIzQm90dG9tVHVwbGVWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1
ZS5oIgogI2luY2x1ZGUgIkIzQ2hlY2tWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQ29uc3QxMjhWYWx1
ZS5oIgogI2luY2x1ZGUgIkIzQ29uc3QzMlZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDb25zdDY0VmFs
dWUuaCIKICNpbmNsdWRlICJCM0NvbnN0RG91YmxlVmFsdWUuaCIKQEAgLTQyLDYgKzQzLDcgQEAK
ICNpbmNsdWRlICJCM1BhdGNocG9pbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzUGhpQ2hpbGRyZW4u
aCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgorI2luY2x1ZGUgIkIzU2ltZFZhbHVlLmgiCiAj
aW5jbHVkZSAiQjNTbG90QmFzZVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNTd2l0Y2hWYWx1ZS5oIgog
I2luY2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCkBAIC0xMTEsNiArMTEzLDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAgICAgY2FzZSBCZWxvd0VxdWFsOiBcCiAgICAgY2FzZSBF
cXVhbE9yVW5vcmRlcmVkOiBcCiAgICAgY2FzZSBTZWxlY3Q6IFwKKyAgICBjYXNlIFplcm9FeHRl
bmQ2NFRvVmVjdG9yOiBcCiAgICAgICAgIHJldHVybiBNQUNSTyhWYWx1ZSk7IFwKICAgICBjYXNl
IEFyZ3VtZW50UmVnOiBcCiAgICAgICAgIHJldHVybiBNQUNSTyhBcmd1bWVudFJlZ1ZhbHVlKTsg
XApAQCAtMTE4LDYgKzEyMSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogICAg
ICAgICByZXR1cm4gTUFDUk8oQ29uc3QzMlZhbHVlKTsgXAogICAgIGNhc2UgQ29uc3Q2NDogXAog
ICAgICAgICByZXR1cm4gTUFDUk8oQ29uc3Q2NFZhbHVlKTsgXAorICAgIGNhc2UgQ29uc3QxMjg6
IFwKKyAgICAgICAgcmV0dXJuIE1BQ1JPKENvbnN0MTI4VmFsdWUpOyBcCiAgICAgY2FzZSBDb25z
dEZsb2F0OiBcCiAgICAgICAgIHJldHVybiBNQUNSTyhDb25zdEZsb2F0VmFsdWUpOyBcCiAgICAg
Y2FzZSBDb25zdERvdWJsZTogXApAQCAtMTUwLDYgKzE1NSw2MyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEIzIHsKICAgICAgICAgcmV0dXJuIE1BQ1JPKFdhc21BZGRyZXNzVmFsdWUpOyBc
CiAgICAgY2FzZSBXYXNtQm91bmRzQ2hlY2s6IFwKICAgICAgICAgcmV0dXJuIE1BQ1JPKFdhc21C
b3VuZHNDaGVja1ZhbHVlKTsgXAorICAgIGNhc2UgVmVjdG9yRXh0cmFjdExhbmU6IFwKKyAgICBj
YXNlIFZlY3RvclJlcGxhY2VMYW5lOiBcCisgICAgY2FzZSBWZWN0b3JFcXVhbDogXAorICAgIGNh
c2UgVmVjdG9yTm90RXF1YWw6IFwKKyAgICBjYXNlIFZlY3Rvckxlc3NUaGFuOiBcCisgICAgY2Fz
ZSBWZWN0b3JMZXNzVGhhbk9yRXF1YWw6IFwKKyAgICBjYXNlIFZlY3RvckJlbG93OiBcCisgICAg
Y2FzZSBWZWN0b3JCZWxvd09yRXF1YWw6IFwKKyAgICBjYXNlIFZlY3RvckdyZWF0ZXJUaGFuOiBc
CisgICAgY2FzZSBWZWN0b3JHcmVhdGVyVGhhbk9yRXF1YWw6IFwKKyAgICBjYXNlIFZlY3RvckFi
b3ZlOiBcCisgICAgY2FzZSBWZWN0b3JBYm92ZU9yRXF1YWw6IFwKKyAgICBjYXNlIFZlY3RvckFk
ZDogXAorICAgIGNhc2UgVmVjdG9yU3ViOiBcCisgICAgY2FzZSBWZWN0b3JBZGRTYXQ6IFwKKyAg
ICBjYXNlIFZlY3RvclN1YlNhdDogXAorICAgIGNhc2UgVmVjdG9yTXVsOiBcCisgICAgY2FzZSBW
ZWN0b3JEb3RQcm9kdWN0OiBcCisgICAgY2FzZSBWZWN0b3JEaXY6IFwKKyAgICBjYXNlIFZlY3Rv
ck1pbjogXAorICAgIGNhc2UgVmVjdG9yTWF4OiBcCisgICAgY2FzZSBWZWN0b3JQbWluOiBcCisg
ICAgY2FzZSBWZWN0b3JQbWF4OiBcCisgICAgY2FzZSBWZWN0b3JOYXJyb3c6IFwKKyAgICBjYXNl
IFZlY3Rvck5vdDogXAorICAgIGNhc2UgVmVjdG9yQW5kOiBcCisgICAgY2FzZSBWZWN0b3JBbmRu
b3Q6IFwKKyAgICBjYXNlIFZlY3Rvck9yOiBcCisgICAgY2FzZSBWZWN0b3JYb3I6IFwKKyAgICBj
YXNlIFZlY3RvclNobDogXAorICAgIGNhc2UgVmVjdG9yU2hyOiBcCisgICAgY2FzZSBWZWN0b3JB
YnM6IFwKKyAgICBjYXNlIFZlY3Rvck5lZzogXAorICAgIGNhc2UgVmVjdG9yUG9wY250OiBcCisg
ICAgY2FzZSBWZWN0b3JDZWlsOiBcCisgICAgY2FzZSBWZWN0b3JGbG9vcjogXAorICAgIGNhc2Ug
VmVjdG9yVHJ1bmM6IFwKKyAgICBjYXNlIFZlY3RvclRydW5jU2F0OiBcCisgICAgY2FzZSBWZWN0
b3JDb252ZXJ0OiBcCisgICAgY2FzZSBWZWN0b3JDb252ZXJ0TG93OiBcCisgICAgY2FzZSBWZWN0
b3JOZWFyZXN0OiBcCisgICAgY2FzZSBWZWN0b3JTcXJ0OiBcCisgICAgY2FzZSBWZWN0b3JFeHRl
bmRMb3c6IFwKKyAgICBjYXNlIFZlY3RvckV4dGVuZEhpZ2g6IFwKKyAgICBjYXNlIFZlY3RvclBy
b21vdGU6IFwKKyAgICBjYXNlIFZlY3RvckRlbW90ZTogXAorICAgIGNhc2UgVmVjdG9yU3BsYXQ6
IFwKKyAgICBjYXNlIFZlY3RvckFueVRydWU6IFwKKyAgICBjYXNlIFZlY3RvckFsbFRydWU6IFwK
KyAgICBjYXNlIFZlY3RvckF2Z1JvdW5kOiBcCisgICAgY2FzZSBWZWN0b3JCaXRtYXNrOiBcCisg
ICAgY2FzZSBWZWN0b3JCaXR3aXNlU2VsZWN0OiBcCisgICAgY2FzZSBWZWN0b3JFeHRhZGRQYWly
d2lzZTogXAorICAgIGNhc2UgVmVjdG9yTXVsU2F0OiBcCisgICAgY2FzZSBWZWN0b3JTd2l6emxl
OiBcCisgICAgY2FzZSBWZWN0b3JTaHVmZmxlOiBcCisgICAgICAgIHJldHVybiBNQUNSTyhTaW1k
VmFsdWUpOyBcCiAgICAgY2FzZSBBdG9taWNYY2hnQWRkOiBcCiAgICAgY2FzZSBBdG9taWNYY2hn
QW5kOiBcCiAgICAgY2FzZSBBdG9taWNYY2hnT3I6IFwKQEAgLTI5OCw2ICszNjAsMTYgQEAgaW5s
aW5lIGRvdWJsZSBWYWx1ZTo6YXNEb3VibGUoKSBjb25zdAogICAgIHJldHVybiBhczxDb25zdERv
dWJsZVZhbHVlPigpLT52YWx1ZSgpOwogfQogCitpbmxpbmUgYm9vbCBWYWx1ZTo6aGFzVjEyOCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuICEhYXM8Q29uc3QxMjhWYWx1ZT4oKTsKK30KKworaW5saW5l
IHYxMjhfdCBWYWx1ZTo6YXNWMTI4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYXM8Q29uc3QxMjhW
YWx1ZT4oKS0+dmFsdWUoKTsKK30KKwogaW5saW5lIGJvb2wgVmFsdWU6OmlzRXF1YWxUb0RvdWJs
ZShkb3VibGUgdmFsdWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhhc0RvdWJsZSgpICYmIGFzRG91
YmxlKCkgPT0gdmFsdWU7CkBAIC0zODgsNiArNDYwLDE2IEBAIHZvaWQgVmFsdWU6OndhbGsoY29u
c3QgRnVuY3RvciYgZnVuY3RvciwgUGhpQ2hpbGRyZW4qIHBoaUNoaWxkcmVuKQogICAgIH0KIH0K
IAoraW5saW5lIGJvb2wgVmFsdWU6OmlzU2ltZFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ISFhczxTaW1kVmFsdWU+KCk7Cit9CisKK2lubGluZSBTaW1kVmFsdWUqIFZhbHVlOjphc1NpbWRW
YWx1ZSgpCit7CisgICAgcmV0dXJuIGFzPFNpbWRWYWx1ZT4oKTsKK30KKwogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWVSZXAuY3BwCmluZGV4IGQ1NDgzOGMxYjRmNC4uYmQ0YmEzMjE3ZmQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi12b2lkIFZhbHVlUmVwOjphZGRV
c2VkUmVnaXN0ZXJzVG8oUmVnaXN0ZXJTZXQmIHNldCkgY29uc3QKK3ZvaWQgVmFsdWVSZXA6OmFk
ZFVzZWRSZWdpc3RlcnNUbyhSZWdpc3RlclNldDEyOCYgc2V0KSBjb25zdAogewogICAgIHN3aXRj
aCAobV9raW5kKSB7CiAgICAgY2FzZSBXYXJtQW55OgpAQCAtNTgsOSArNTgsOSBAQCB2b2lkIFZh
bHVlUmVwOjphZGRVc2VkUmVnaXN0ZXJzVG8oUmVnaXN0ZXJTZXQmIHNldCkgY29uc3QKICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1SZWdpc3RlclNldCBWYWx1ZVJlcDo6
dXNlZFJlZ2lzdGVycygpIGNvbnN0CitSZWdpc3RlclNldDEyOCBWYWx1ZVJlcDo6dXNlZFJlZ2lz
dGVycygpIGNvbnN0CiB7Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworICAgIFJlZ2lzdGVyU2V0
MTI4IHJlc3VsdDsKICAgICBhZGRVc2VkUmVnaXN0ZXJzVG8ocmVzdWx0KTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVS
ZXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmgKaW5kZXggMTU3YmM4
ODY4MjMxLi44Y2E4ZTg3MTQ3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlUmVwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAu
aApAQCAtMjgwLDE1ICsyODAsMTUgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAg
dm9pZCBhZGRVc2VkUmVnaXN0ZXJzVG8oUmVnaXN0ZXJTZXQmKSBjb25zdDsKKyAgICB2b2lkIGFk
ZFVzZWRSZWdpc3RlcnNUbyhSZWdpc3RlclNldDEyOCYpIGNvbnN0OwogICAgIAotICAgIFJlZ2lz
dGVyU2V0IHVzZWRSZWdpc3RlcnMoKSBjb25zdDsKKyAgICBSZWdpc3RlclNldDEyOCB1c2VkUmVn
aXN0ZXJzKCkgY29uc3Q7CiAKICAgICAvLyBHZXQgdGhlIHVzZWQgcmVnaXN0ZXJzIGZvciBhIHZl
Y3RvciBvZiBWYWx1ZVJlcHMuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4KLSAg
ICBzdGF0aWMgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyhjb25zdCBWZWN0b3JUeXBlJiB2ZWN0
b3IpCisgICAgc3RhdGljIFJlZ2lzdGVyU2V0MTI4IHVzZWRSZWdpc3RlcnMoY29uc3QgVmVjdG9y
VHlwZSYgdmVjdG9yKQogICAgIHsKLSAgICAgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworICAgICAg
ICBSZWdpc3RlclNldDEyOCByZXN1bHQ7CiAgICAgICAgIGZvciAoY29uc3QgVmFsdWVSZXAmIHZh
bHVlIDogdmVjdG9yKQogICAgICAgICAgICAgdmFsdWUuYWRkVXNlZFJlZ2lzdGVyc1RvKHJlc3Vs
dCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNXaWR0aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5j
cHAKaW5kZXggZTM1MzU2ZWEzM2YwLi5mOTgzM2NlN2UwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNXaWR0aC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJCM1dpZHRoLmgiCiAKLSNpZiBFTkFCTEUoQjNfSklUKQotCiAjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewpAQCAtNTUs
NiArNTMsOCBAQCBUeXBlIGJlc3RUeXBlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpCiAgICAgICAg
IH0KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IFZvaWQ7CisgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFZvaWQ7CkBAIC03OSw2ICs3
OSw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkIzOjpXaWR0
aCB3aWR0aCkKICAgICBjYXNlIEpTQzo6QjM6OldpZHRoNjQ6CiAgICAgICAgIG91dC5wcmludCgi
NjQiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpCMzo6V2lkdGgxMjg6CisgICAg
ICAgIG91dC5wcmludCgiMTI4Iik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtODYsNSArODksMyBAQCB2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpCMzo6V2lkdGggd2lkdGgpCiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgogCi0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1dpZHRoLmgKaW5kZXggNDA0MTJmOWZmNmM2Li44MTE0ZWYzZjVhOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzV2lkdGguaApAQCAtMjUsMTAgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpZiBFTkFCTEUoQjNfSklUKQotCiAjaW5jbHVkZSAiQjNCYW5rLmgiCiAjaW5jbHVkZSAiQjNU
eXBlLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKIAogI2lmICFBU1NFUlRfRU5BQkxFRAog
SUdOT1JFX1JFVFVSTl9UWVBFX1dBUk5JTkdTX0JFR0lOCkBAIC0zNiwxMiArMzUsMTggQEAgSUdO
T1JFX1JFVFVSTl9UWVBFX1dBUk5JTkdTX0JFR0lOCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgewogCi1lbnVtIFdpZHRoIDogaW50OF90IHsKLSAgICBXaWR0aDggPSAwLAorZW51bSBj
bGFzcyBXaWR0aCB7CisgICAgV2lkdGg4LAogICAgIFdpZHRoMTYsCiAgICAgV2lkdGgzMiwKLSAg
ICBXaWR0aDY0CisgICAgV2lkdGg2NCwKKyAgICBXaWR0aDEyOCwKIH07CitzdGF0aWMgY29uc3Rl
eHByIFdpZHRoIFdpZHRoOCA9IFdpZHRoOjpXaWR0aDg7CitzdGF0aWMgY29uc3RleHByIFdpZHRo
IFdpZHRoMTYgPSBXaWR0aDo6V2lkdGgxNjsKK3N0YXRpYyBjb25zdGV4cHIgV2lkdGggV2lkdGgz
MiA9IFdpZHRoOjpXaWR0aDMyOworc3RhdGljIGNvbnN0ZXhwciBXaWR0aCBXaWR0aDY0ID0gV2lk
dGg6OldpZHRoNjQ7CitzdGF0aWMgY29uc3RleHByIFdpZHRoIFdpZHRoMTI4ID0gV2lkdGg6Oldp
ZHRoMTI4OwogCiBjb25zdGV4cHIgV2lkdGggcG9pbnRlcldpZHRoKCkKIHsKQEAgLTUwLDYgKzU1
LDcgQEAgY29uc3RleHByIFdpZHRoIHBvaW50ZXJXaWR0aCgpCiAgICAgcmV0dXJuIFdpZHRoMzI7
CiB9CiAKKyNpZiBFTkFCTEUoQjNfSklUKQogaW5saW5lIFdpZHRoIHdpZHRoRm9yVHlwZShUeXBl
IHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlLmtpbmQoKSkgewpAQCAtNjMsMTAgKzY5LDEzIEBA
IGlubGluZSBXaWR0aCB3aWR0aEZvclR5cGUoVHlwZSB0eXBlKQogICAgIGNhc2UgSW50NjQ6CiAg
ICAgY2FzZSBEb3VibGU6CiAgICAgICAgIHJldHVybiBXaWR0aDY0OworICAgIGNhc2UgVjEyODoK
KyAgICAgICAgcmV0dXJuIFdpZHRoMTI4OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gV2lkdGg4OwogfQorI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCiAKIGlu
bGluZSBXaWR0aCBjYW5vbmljYWxXaWR0aChXaWR0aCB3aWR0aCkKIHsKQEAgLTgwLDkgKzg5LDkg
QEAgaW5saW5lIGJvb2wgaXNDYW5vbmljYWxXaWR0aChXaWR0aCB3aWR0aCkKIAogVHlwZSBiZXN0
VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKTsKIAotaW5saW5lIFdpZHRoIGNvbnNlcnZhdGl2
ZVdpZHRoKEJhbmsgYmFuaykKK2lubGluZSBjb25zdGV4cHIgV2lkdGggY29uc2VydmF0aXZlV2lk
dGgoQmFuayBiYW5rKQogewotICAgIHJldHVybiBiYW5rID09IEdQID8gcG9pbnRlcldpZHRoKCkg
OiBXaWR0aDY0OworICAgIHJldHVybiBiYW5rID09IEdQID8gcG9pbnRlcldpZHRoKCkgOiBXaWR0
aDEyODsKIH0KIAogaW5saW5lIFdpZHRoIG1pbmltdW1XaWR0aChCYW5rIGJhbmspCkBAIC05MCwx
MiArOTksNyBAQCBpbmxpbmUgV2lkdGggbWluaW11bVdpZHRoKEJhbmsgYmFuaykKICAgICByZXR1
cm4gYmFuayA9PSBHUCA/IFdpZHRoOCA6IFdpZHRoMzI7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBi
eXRlcyhXaWR0aCB3aWR0aCkKLXsKLSAgICByZXR1cm4gMSA8PCB3aWR0aDsKLX0KLQotaW5saW5l
IFdpZHRoIHdpZHRoRm9yQnl0ZXModW5zaWduZWQgYnl0ZXMpCitpbmxpbmUgY29uc3RleHByIFdp
ZHRoIHdpZHRoRm9yQnl0ZXModW5zaWduZWQgYnl0ZXMpCiB7CiAgICAgc3dpdGNoIChieXRlcykg
ewogICAgIGNhc2UgMDoKQEAgLTEwNiwxMiArMTEwLDIyIEBAIGlubGluZSBXaWR0aCB3aWR0aEZv
ckJ5dGVzKHVuc2lnbmVkIGJ5dGVzKQogICAgIGNhc2UgMzoKICAgICBjYXNlIDQ6CiAgICAgICAg
IHJldHVybiBXaWR0aDMyOwotICAgIGRlZmF1bHQ6CisgICAgY2FzZSA1OgorICAgIGNhc2UgNjoK
KyAgICBjYXNlIDc6CisgICAgY2FzZSA4OgogICAgICAgICByZXR1cm4gV2lkdGg2NDsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gV2lkdGgxMjg7CiAgICAgfQogfQogCi1pbmxpbmUgdW5z
aWduZWQgYnl0ZXNGb3JXaWR0aChXaWR0aCB3aWR0aCkKK2lubGluZSBjb25zdGV4cHIgV2lkdGgg
Y29uc2VydmF0aXZlV2lkdGhGb3JDKEJhbmsgYmFuaykKK3sKKyAgICByZXR1cm4gYmFuayA9PSBH
UCA/IHBvaW50ZXJXaWR0aCgpIDogV2lkdGg2NDsKK30KKworaW5saW5lIGNvbnN0ZXhwciB1bnNp
Z25lZCBieXRlc0ZvcldpZHRoKFdpZHRoIHdpZHRoKQogewogICAgIHN3aXRjaCAod2lkdGgpIHsK
ICAgICBjYXNlIFdpZHRoODoKQEAgLTEyMiw4ICsxMzYsMjYgQEAgaW5saW5lIHVuc2lnbmVkIGJ5
dGVzRm9yV2lkdGgoV2lkdGggd2lkdGgpCiAgICAgICAgIHJldHVybiA0OwogICAgIGNhc2UgV2lk
dGg2NDoKICAgICAgICAgcmV0dXJuIDg7CisgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgcmV0
dXJuIDE2OwogICAgIH0KLSAgICByZXR1cm4gMTsKK30KKworaW5saW5lIFdpZHRoIGluY2x1ZGVk
UmVnaXN0ZXJXaWR0aChCYW5rIGJhbmssIEluY2x1ZGVkV2lkdGggaWMpCit7CisgICAgaWYgKGlj
ID09IEluY2x1ZGVSZWdpc3RlciB8fCBpYyA9PSBJbmNsdWRlVXBwZXI2NEJpdHMpCisgICAgICAg
IHJldHVybiBjb25zZXJ2YXRpdmVXaWR0aChiYW5rKTsKKyAgICBpZiAoaWMgPT0gSW5jbHVkZUxv
d2VyNjRCaXRzKQorICAgICAgICByZXR1cm4gV2lkdGg2NDsKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gV2lkdGgxMjg7Cit9CisKK2lubGluZSBJbmNsdWRlZFdpZHRoIGlu
Y2x1ZGVSZWdpc3RlcldpdGhXaWR0aChXaWR0aCB3aWR0aCkKK3sKKyAgICBpZiAod2lkdGggPT0g
V2lkdGgxMjgpCisgICAgICAgIHJldHVybiBJbmNsdWRlUmVnaXN0ZXI7CisgICAgcmV0dXJuIElu
Y2x1ZGVMb3dlcjY0Qml0czsKIH0KIAogaW5saW5lIHVpbnQ2NF90IG1hc2soV2lkdGggd2lkdGgp
CkBAIC0xMzcsNiArMTY5LDkgQEAgaW5saW5lIHVpbnQ2NF90IG1hc2soV2lkdGggd2lkdGgpCiAg
ICAgICAgIHJldHVybiAweDAwMDAwMDAwZmZmZmZmZmZsbHU7CiAgICAgY2FzZSBXaWR0aDY0Ogog
ICAgICAgICByZXR1cm4gMHhmZmZmZmZmZmZmZmZmZmZmbGx1OworICAgIGNhc2UgV2lkdGgxMjg6
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTE1NSw1ICsxOTAsMyBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkIzOjpXaWR0aCk7CiBJR05P
UkVfUkVUVVJOX1RZUEVfV0FSTklOR1NfRU5ECiAjZW5kaWYKIAotI2VuZGlmIC8vIEVOQUJMRShC
M19KSVQpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxs
b2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNv
ZGUuY3BwCmluZGV4IDg0ODVhNzhmNTQzZi4uZTU3MTI4OGI2ZDAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRH
ZW5lcmF0ZUNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxs
b2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFpckFsbG9jYXRlUmVnaXN0ZXJz
QW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuaCIKKyNpbmNsdWRlICJiMy9CM1dpZHRoLmgiCiAKICNp
ZiBFTkFCTEUoQjNfSklUKQogCkBAIC00MCw2ICs0MSwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKK25hbWVzcGFjZSBHZW5lcmF0ZUFuZEFs
bG9jYXRlUmVnaXN0ZXJzSW50ZXJuYWwgeworc3RhdGljIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwor
fQorCiBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpHZW5lcmF0ZUFuZEFsbG9jYXRlUmVn
aXN0ZXJzKENvZGUmIGNvZGUpCiAgICAgOiBtX2NvZGUoY29kZSkKICAgICAsIG1fbWFwKGNvZGUp
CkBAIC0xNzIsOCArMTc3LDExIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBHZW5lcmF0ZUFuZEFsbG9j
YXRlUmVnaXN0ZXJzOjpmbHVzaChUbXAgdG1wLCBSZWcgcmVnKQogICAgIGludHB0cl90IG9mZnNl
dCA9IG1fbWFwW3RtcF0uc3BpbGxTbG90LT5vZmZzZXRGcm9tRlAoKTsKICAgICBpZiAodG1wLmlz
R1AoKSkKICAgICAgICAgbV9qaXQtPnN0b3JlNjQocmVnLmdwcigpLCBjYWxsRnJhbWVBZGRyKCpt
X2ppdCwgb2Zmc2V0KSk7Ci0gICAgZWxzZQorICAgIGVsc2UgaWYgY29uc3RleHByIChCMzo6Ynl0
ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkgPT0gc2l6ZW9mKGRvdWJs
ZSkpIHsKICAgICAgICAgbV9qaXQtPnN0b3JlRG91YmxlKHJlZy5mcHIoKSwgY2FsbEZyYW1lQWRk
cigqbV9qaXQsIG9mZnNldCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1faml0LT5zdG9yZVZl
Y3RvcihyZWcuZnByKCksIGNhbGxGcmFtZUFkZHIoKm1faml0LCBvZmZzZXQpKTsKKyAgICB9CiB9
CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpzcGls
bChUbXAgdG1wLCBSZWcgcmVnKQpAQCAtMjAxLDggKzIwOSwxMSBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6YWxsb2MoVG1wIHRtcCwgUmVnIHJlZywg
Ym9vbCBpcwogICAgICAgICBpbnRwdHJfdCBvZmZzZXQgPSBtX21hcFt0bXBdLnNwaWxsU2xvdC0+
b2Zmc2V0RnJvbUZQKCk7CiAgICAgICAgIGlmICh0bXAuYmFuaygpID09IEdQKQogICAgICAgICAg
ICAgbV9qaXQtPmxvYWQ2NChjYWxsRnJhbWVBZGRyKCptX2ppdCwgb2Zmc2V0KSwgcmVnLmdwcigp
KTsKLSAgICAgICAgZWxzZQorICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoQjM6OmJ5dGVzRm9y
V2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpID09IHNpemVvZihkb3VibGUpKSB7
CiAgICAgICAgICAgICBtX2ppdC0+bG9hZERvdWJsZShjYWxsRnJhbWVBZGRyKCptX2ppdCwgb2Zm
c2V0KSwgcmVnLmZwcigpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1faml0LT5s
b2FkVmVjdG9yKGNhbGxGcmFtZUFkZHIoKm1faml0LCBvZmZzZXQpLCByZWcuZnByKCkpOworICAg
ICAgICB9CiAgICAgfQogfQogCkBAIC0yNzksNyArMjkwLDcgQEAgQUxXQVlTX0lOTElORSBib29s
IEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmlzRGlzYWxsb3dlZFJlZ2lzdGVyKFJlZyBy
ZWcpCiB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OnByZXBhcmVGb3JHZW5lcmF0
aW9uKCkKIHsKICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlIHVzZSBhbGwgY2Fs
bGVlIHNhdmVzLgotICAgIGhhbmRsZUNhbGxlZVNhdmVzKG1fY29kZSwgUmVnaXN0ZXJTZXQ6OmNh
bGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgaGFuZGxlQ2FsbGVlU2F2ZXMobV9jb2RlLCBSZWdp
c3RlclNldDEyODo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKICAgICBhbGxvY2F0ZUVzY2FwZWRT
dGFja1Nsb3RzKG1fY29kZSk7CiAKICAgICBpbnNlcnRCbG9ja3NGb3JGbHVzaEFmdGVyVGVybWlu
YWxQYXRjaHBvaW50cygpOwpAQCAtMzEwLDExICszMjEsMTMgQEAgdm9pZCBHZW5lcmF0ZUFuZEFs
bG9jYXRlUmVnaXN0ZXJzOjpwcmVwYXJlRm9yR2VuZXJhdGlvbigpCiAgICAgICAgICAgICAgICAg
ICAgICAgICB0b0ZyZWUuYXBwZW5kKGRhdGEuc3BpbGxTbG90KTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChmcmVl
U2xvdHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChmcmVl
U2xvdHMuc2l6ZSgpICYmIGZyZWVTbG90cy5sYXN0KCktPmJ5dGVTaXplKCkgPj0gYnl0ZXNGb3JX
aWR0aChjb25zZXJ2YXRpdmVXaWR0aCh0bXAuYmFuaygpKSkpCiAgICAgICAgICAgICAgICAgICAg
IGRhdGEuc3BpbGxTbG90ID0gZnJlZVNsb3RzLnRha2VMYXN0KCk7CiAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBkYXRhLnNwaWxsU2xvdCA9IG1fY29kZS5hZGRTdGFj
a1Nsb3QoOCwgU3RhY2tTbG90S2luZDo6U3BpbGwpOworICAgICAgICAgICAgICAgICAgICBkYXRh
LnNwaWxsU2xvdCA9IG1fY29kZS5hZGRTdGFja1Nsb3QoYnl0ZXNGb3JXaWR0aChjb25zZXJ2YXRp
dmVXaWR0aCh0bXAuYmFuaygpKSksIFN0YWNrU2xvdEtpbmQ6OlNwaWxsKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihHZW5lcmF0ZUFuZEFsbG9jYXRlUmVn
aXN0ZXJzSW50ZXJuYWw6OnZlcmJvc2UsICJhc3NpZ25TdGFja1Nsb3RUb1RtcCBibG9jazogIiwg
KmJsb2NrLCAiLCB0bXA6ICIsIHRtcCwgIiAtPiBzbG90ICIsIGRhdGEuc3BpbGxTbG90KTsKICAg
ICAgICAgICAgICAgICBkYXRhLnJlZyA9IFJlZygpOwogICAgICAgICAgICAgfTsKIApAQCAtMzUx
LDcgKzM2NCw3IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6cHJlcGFyZUZv
ckdlbmVyYXRpb24oKQogICAgICAgICB9CiAgICAgfSAKIAotICAgIG1fYWxsb3dlZFJlZ2lzdGVy
cyA9IFJlZ2lzdGVyU2V0KCk7CisgICAgbV9hbGxvd2VkUmVnaXN0ZXJzID0geyB9OwogCiAgICAg
Zm9yRWFjaEJhbmsoWyZdIChCYW5rIGJhbmspIHsKICAgICAgICAgbV9yZWdpc3RlcnNbYmFua10g
PSBtX2NvZGUucmVnc0luUHJpb3JpdHlPcmRlcihiYW5rKTsKQEAgLTM1OSwxOCArMzcyLDE4IEBA
IHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6cHJlcGFyZUZvckdlbmVyYXRpb24o
KQogICAgICAgICBmb3IgKFJlZyByZWcgOiBtX3JlZ2lzdGVyc1tiYW5rXSkgewogICAgICAgICAg
ICAgbV9hbGxvd2VkUmVnaXN0ZXJzLnNldChyZWcpOwogICAgICAgICAgICAgVG1wRGF0YSYgZGF0
YSA9IG1fbWFwW1RtcChyZWcpXTsKLSAgICAgICAgICAgIGRhdGEuc3BpbGxTbG90ID0gbV9jb2Rl
LmFkZFN0YWNrU2xvdCg4LCBTdGFja1Nsb3RLaW5kOjpTcGlsbCk7CisgICAgICAgICAgICBkYXRh
LnNwaWxsU2xvdCA9IG1fY29kZS5hZGRTdGFja1Nsb3QoYnl0ZXNGb3JXaWR0aChjb25zZXJ2YXRp
dmVXaWR0aChiYW5rRm9yUmVnKHJlZykpKSwgU3RhY2tTbG90S2luZDo6U3BpbGwpOworICAgICAg
ICAgICAgZGF0YUxvZ0xuSWYoR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyc0ludGVybmFsOjp2
ZXJib3NlLCAiYWxsb3dlZFJlZ2lzdGVyczogcmVnOiAiLCByZWcsICIgLT4gc2xvdCAiLCBkYXRh
LnNwaWxsU2xvdCk7CiAgICAgICAgICAgICBkYXRhLnJlZyA9IFJlZygpOwogICAgICAgICB9CiAg
ICAgfSk7CiAKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG5leHRJbmRleCA9IDA7CisgICAgICAg
IGludHB0cl90IG9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4obV9jb2RlLmZyYW1lU2l6
ZSgpKTsKICAgICAgICAgZm9yIChTdGFja1Nsb3QqIHNsb3QgOiBtX2NvZGUuc3RhY2tTbG90cygp
KSB7CiAgICAgICAgICAgICBpZiAoc2xvdC0+aXNMb2NrZWQoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGludHB0cl90IG9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnRw
dHJfdD4obV9jb2RlLmZyYW1lU2l6ZSgpKSAtIHN0YXRpY19jYXN0PGludHB0cl90PihuZXh0SW5k
ZXgpICogOCAtIDg7Ci0gICAgICAgICAgICArK25leHRJbmRleDsKKyAgICAgICAgICAgIG9mZnNl
dCAtPSBzdGQ6Om1heChzbG90LT5ieXRlU2l6ZSgpLCBieXRlc0ZvcldpZHRoKGNvbnNlcnZhdGl2
ZVdpZHRoKEIzOjpHUCkpKTsKICAgICAgICAgICAgIHNsb3QtPnNldE9mZnNldEZyb21GUChvZmZz
ZXQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTM4LDggKzU1MSw4IEBAIHZvaWQgR2VuZXJhdGVB
bmRBbGxvY2F0ZVJlZ2lzdGVyczo6Z2VuZXJhdGUoQ0NhbGxIZWxwZXJzJiBqaXQpCiAKICAgICAg
ICAgICAgIG1fZGlkQWxyZWFkeUZyZWVEZWFkU2xvdHMgPSBmYWxzZTsKIAotICAgICAgICAgICAg
bV9uYW1lZFVzZWRSZWdzID0gUmVnaXN0ZXJTZXQoKTsKLSAgICAgICAgICAgIG1fbmFtZWREZWZk
UmVncyA9IFJlZ2lzdGVyU2V0KCk7CisgICAgICAgICAgICBtX25hbWVkVXNlZFJlZ3MgPSB7IH07
CisgICAgICAgICAgICBtX25hbWVkRGVmZFJlZ3MgPSB7IH07CiAKICAgICAgICAgICAgIGJvb2wg
bmVlZHNUb0dlbmVyYXRlID0gKFsmXSAoKSAtPiBib29sIHsKICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIHdlIGNhbiBh
bHNvIGVsaWRlIE1vdjMycwpAQCAtNjE0LDggKzYyNyw4IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxv
Y2F0ZVJlZ2lzdGVyczo6Z2VuZXJhdGUoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJl
ZFJlZ2lzdGVyczsKLSAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGVhcmx5TmV4dENsb2JiZXJlZFJl
Z2lzdGVyczsKKyAgICAgICAgICAgIFJlZ2lzdGVyU2V0MTI4IGNsb2JiZXJlZFJlZ2lzdGVyczsK
KyAgICAgICAgICAgIFJlZ2lzdGVyU2V0MTI4IGVhcmx5TmV4dENsb2JiZXJlZFJlZ2lzdGVyczsK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBJbnN0KiBuZXh0SW5zdCA9IGJsb2NrLT5n
ZXQoaW5zdEluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAgaWYgKGluc3Qua2luZC5vcGNvZGUg
PT0gUGF0Y2ggfHwgKG5leHRJbnN0ICYmIG5leHRJbnN0LT5raW5kLm9wY29kZSA9PSBQYXRjaCkp
IHsKQEAgLTYyNCwxNSArNjM3LDE1IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVy
czo6Z2VuZXJhdGUoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgICAgICAgICAgICAgICAgIGlmIChu
ZXh0SW5zdCAmJiBuZXh0SW5zdC0+a2luZC5vcGNvZGUgPT0gUGF0Y2gpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBlYXJseU5leHRDbG9iYmVyZWRSZWdpc3RlcnMubWVyZ2UobmV4dEluc3QtPmV4
dHJhRWFybHlDbG9iYmVyZWRSZWdzKCkpOwogCi0gICAgICAgICAgICAgICAgICAgIGNsb2JiZXJl
ZFJlZ2lzdGVycy5maWx0ZXIobV9hbGxvd2VkUmVnaXN0ZXJzKTsKKyAgICAgICAgICAgICAgICAg
ICAgY2xvYmJlcmVkUmVnaXN0ZXJzLmZpbHRlcihSZWdpc3RlclNldDEyODo6dXNlNjRCaXRzKG1f
YWxsb3dlZFJlZ2lzdGVycykpOwogICAgICAgICAgICAgICAgICAgICBjbG9iYmVyZWRSZWdpc3Rl
cnMuZXhjbHVkZShtX25hbWVkRGVmZFJlZ3MpOwotICAgICAgICAgICAgICAgICAgICBlYXJseU5l
eHRDbG9iYmVyZWRSZWdpc3RlcnMuZmlsdGVyKG1fYWxsb3dlZFJlZ2lzdGVycyk7CisgICAgICAg
ICAgICAgICAgICAgIGVhcmx5TmV4dENsb2JiZXJlZFJlZ2lzdGVycy5maWx0ZXIoUmVnaXN0ZXJT
ZXQxMjg6OnVzZTY0Qml0cyhtX2FsbG93ZWRSZWdpc3RlcnMpKTsKIAogICAgICAgICAgICAgICAg
ICAgICBtX25hbWVkRGVmZFJlZ3MubWVyZ2UoY2xvYmJlcmVkUmVnaXN0ZXJzKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gYWxsb2NOYW1lZCA9
IFsmXSAoY29uc3QgUmVnaXN0ZXJTZXQmIG5hbWVkLCBib29sIGlzRGVmKSB7CisgICAgICAgICAg
ICBhdXRvIGFsbG9jTmFtZWQgPSBbJl0gKGNvbnN0IFJlZ2lzdGVyU2V0MTI4JiBuYW1lZCwgYm9v
bCBpc0RlZikgewogICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IG5hbWVkKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChUbXAgb2NjdXB5aW5nVG1wID0gY3VycmVudEFsbG9jYXRpb25b
cmVnXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9jY3VweWluZ1RtcCA9PSBUbXAo
cmVnKSkKQEAgLTczMCw3ICs3NDMsNyBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3Rl
cnM6OmdlbmVyYXRlKENDYWxsSGVscGVycyYgaml0KQogCiAgICAgICAgICAgICBpZiAobV9jb2Rl
Lm5lZWRzVXNlZFJlZ2lzdGVycygpICYmIGluc3Qua2luZC5vcGNvZGUgPT0gUGF0Y2gpIHsKICAg
ICAgICAgICAgICAgICBmcmVlRGVhZFRtcHNJZk5lZWRlZCgpOwotICAgICAgICAgICAgICAgIFJl
Z2lzdGVyU2V0IHJlZ2lzdGVyU2V0OworICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0MTI4IHJl
Z2lzdGVyU2V0OwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3VycmVu
dEFsbG9jYXRpb24uc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJl
bnRBbGxvY2F0aW9uW2ldKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTZXQuc2V0
KFJlZzo6ZnJvbUluZGV4KGkpKTsKQEAgLTczOCw3ICs3NTEsNyBAQCB2b2lkIEdlbmVyYXRlQW5k
QWxsb2NhdGVSZWdpc3RlcnM6OmdlbmVyYXRlKENDYWxsSGVscGVycyYgaml0KQogICAgICAgICAg
ICAgICAgIGluc3QucmVwb3J0VXNlZFJlZ2lzdGVycyhyZWdpc3RlclNldCk7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGF1dG8gY2xvYmJlciA9IFsmXSAoY29uc3QgUmVnaXN0ZXJTZXQm
IHNldCkgeworICAgICAgICAgICAgYXV0byBjbG9iYmVyID0gWyZdIChjb25zdCBSZWdpc3RlclNl
dDEyOCYgc2V0KSB7CiAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogc2V0KSB7CiAgICAg
ICAgICAgICAgICAgICAgIFRtcCB0bXAocmVnKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGN1cnJlbnRBbGxvY2F0aW9uW3JlZ10gPT0gdG1wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRl
Q29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVy
c0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmgKaW5kZXggNjZmZmNjYzU4MGNhLi43OWU5ODEwMjI4
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVS
ZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5o
CkBAIC04Miw4ICs4Miw4IEBAIHByaXZhdGU6CiAgICAgSW5kZXhNYXA8UmVnLCBUbXA+KiBtX2N1
cnJlbnRBbGxvY2F0aW9uIHsgbnVsbHB0ciB9OwogICAgIGJvb2wgbV9kaWRBbHJlYWR5RnJlZURl
YWRTbG90czsKICAgICBUbXBNYXA8c2l6ZV90PiBtX2xpdmVSYW5nZUVuZDsKLSAgICBSZWdpc3Rl
clNldCBtX25hbWVkVXNlZFJlZ3M7Ci0gICAgUmVnaXN0ZXJTZXQgbV9uYW1lZERlZmRSZWdzOwor
ICAgIFJlZ2lzdGVyU2V0MTI4IG1fbmFtZWRVc2VkUmVnczsKKyAgICBSZWdpc3RlclNldDEyOCBt
X25hbWVkRGVmZFJlZ3M7CiAgICAgUmVnaXN0ZXJTZXQgbV9hbGxvd2VkUmVnaXN0ZXJzOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxVbmlmaWVkVG1wTGl2ZW5lc3M+IG1fbGl2ZW5lc3M7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNB
bmRTdGFja0J5TGluZWFyU2Nhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tCeUxpbmVhclNjYW4uY3BwCmluZGV4IDMwNGFkZmM0
MDZhNC4uMTdkNjg4M2JiOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tCeUxpbmVhclNjYW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0J5
TGluZWFyU2Nhbi5jcHAKQEAgLTI1LDYgKzI1LDggQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkFpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tCeUxpbmVhclNjYW4uaCIKKyNp
bmNsdWRlICJiMy9CM0JhbmsuaCIKKyNpbmNsdWRlICJiMy9CM1dpZHRoLmgiCiAKICNpZiBFTkFC
TEUoQjNfSklUKQogCkBAIC03OCw3ICs4MCw3IEBAIHN0cnVjdCBUbXBEYXRhIHsKICAgICAKICAg
ICBJbnRlcnZhbCBpbnRlcnZhbDsKICAgICBTdGFja1Nsb3QqIHNwaWxsZWQgeyBudWxscHRyIH07
Ci0gICAgUmVnaXN0ZXJTZXQgcG9zc2libGVSZWdzOworICAgIFJlZ2lzdGVyU2V0MTI4IHBvc3Np
YmxlUmVnczsKICAgICBSZWcgYXNzaWduZWQ7CiAgICAgYm9vbCBpc1Vuc3BpbGxhYmxlIHsgZmFs
c2UgfTsKICAgICBib29sIGRpZEJ1aWxkUG9zc2libGVSZWdzIHsgZmFsc2UgfTsKQEAgLTkwLDcg
KzkyLDcgQEAgc3RydWN0IENsb2JiZXIgewogICAgIHsKICAgICB9CiAgICAgCi0gICAgQ2xvYmJl
cihzaXplX3QgaW5kZXgsIFJlZ2lzdGVyU2V0IHJlZ3MpCisgICAgQ2xvYmJlcihzaXplX3QgaW5k
ZXgsIGNvbnN0IFJlZ2lzdGVyU2V0MTI4JiByZWdzKQogICAgICAgICA6IGluZGV4KGluZGV4KQog
ICAgICAgICAsIHJlZ3MocmVncykKICAgICB7CkBAIC0xMDIsNyArMTA0LDcgQEAgc3RydWN0IENs
b2JiZXIgewogICAgIH0KICAgICAKICAgICBzaXplX3QgaW5kZXggeyAwIH07Ci0gICAgUmVnaXN0
ZXJTZXQgcmVnczsKKyAgICBSZWdpc3RlclNldDEyOCByZWdzOwogfTsKIAogY2xhc3MgTGluZWFy
U2NhbiB7CkBAIC0yNzAsOSArMjcyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAvLyBs
aXZlbmVzcyBjb25zdHJhaW50cy4gRXhjZXB0IHdlIHdhbnQgdGhvc2UgY29uc3RyYWludHMgdG8g
c2VwYXJhdGUgdGhlIGxhdGUKICAgICAgICAgICAgICAgICAvLyBhY3Rpb25zIG9mIG9uZSBpbnN0
cnVjdGlvbiBmcm9tIHRoZSBlYXJseSBhY3Rpb25zIG9mIHRoZSBuZXh0LgogICAgICAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA4NTAKLSAg
ICAgICAgICAgICAgICBjb25zdCBSZWdpc3RlclNldCYgcmVncyA9IGxvY2FsQ2FsYy5saXZlKCk7
CisgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgcmVncyA9IGxvY2FsQ2FsYy5saXZlKCk7CiAg
ICAgICAgICAgICAgICAgaWYgKEluc3QqIHByZXYgPSBibG9jay0+Z2V0KGluc3RJbmRleCAtIDEp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHByZXZSZWdzID0gcmVnczsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byBwcmV2UmVncyA9IHJlZ3M7CiAgICAgICAgICAgICAgICAg
ICAgIHByZXYtPmZvckVhY2g8UmVnPigKICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAoUmVn
JiByZWcsIEFyZzo6Um9sZSByb2xlLCBCYW5rLCBXaWR0aCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChBcmc6OmlzTGF0ZURlZihyb2xlKSkKQEAgLTI4NSw3ICsyODcsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgbV9jbG9iYmVycy5hcHBlbmQoQ2xvYmJl
cihpbmRleE9mSGVhZCArIGluc3RJbmRleCAqIDIgLSAxLCBwcmV2UmVncykpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoSW5zdCogbmV4dCA9IGJsb2NrLT5nZXQoaW5z
dEluZGV4KSkgewotICAgICAgICAgICAgICAgICAgICBSZWdpc3RlclNldCBuZXh0UmVncyA9IHJl
Z3M7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gbmV4dFJlZ3MgPSByZWdzOwogICAgICAgICAg
ICAgICAgICAgICBuZXh0LT5mb3JFYWNoPFJlZz4oCiAgICAgICAgICAgICAgICAgICAgICAgICBb
Jl0gKFJlZyYgcmVnLCBBcmc6OlJvbGUgcm9sZSwgQmFuaywgV2lkdGgpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoQXJnOjppc0Vhcmx5RGVmKHJvbGUpKQpAQCAtNDYxLDcgKzQ2
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgd2hpbGUgKGNsb2JiZXJJbmRleCA8IG1f
Y2xvYmJlcnMuc2l6ZSgpICYmIG1fY2xvYmJlcnNbY2xvYmJlckluZGV4XS5pbmRleCA8IGluZGV4
KQogICAgICAgICAgICAgICAgICAgICBjbG9iYmVySW5kZXgrKzsKICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBSZWdpc3RlclNldCBwb3NzaWJsZVJlZ3MgPSBtX3JlZ2lzdGVyU2V0
W2JhbmtdOworICAgICAgICAgICAgICAgIGF1dG8gcG9zc2libGVSZWdzID0gbV9yZWdpc3RlclNl
dFtiYW5rXTsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gY2xvYmJlckluZGV4OyBp
IDwgbV9jbG9iYmVycy5zaXplKCkgJiYgbV9jbG9iYmVyc1tpXS5pbmRleCA8IGVudHJ5LmludGVy
dmFsLmVuZCgpOyArK2kpCiAgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlUmVncy5leGNsdWRl
KG1fY2xvYmJlcnNbaV0ucmVncyk7CiAgICAgICAgICAgICAgICAgCkBAIC01NDEsNyArNTQzLDcg
QEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIFRtcERhdGEmIGVudHJ5ID0gbV9tYXBbdG1wXTsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWVudHJ5LmlzVW5zcGlsbGFibGUpOwotICAgICAgICBl
bnRyeS5zcGlsbGVkID0gbV9jb2RlLmFkZFN0YWNrU2xvdCg4LCBTdGFja1Nsb3RLaW5kOjpTcGls
bCk7CisgICAgICAgIGVudHJ5LnNwaWxsZWQgPSBtX2NvZGUuYWRkU3RhY2tTbG90KEIzOjpieXRl
c0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aCh0bXAuYmFuaygpKSksIFN0YWNrU2xvdEtp
bmQ6OlNwaWxsKTsKICAgICAgICAgZW50cnkuYXNzaWduZWQgPSBSZWcoKTsKICAgICAgICAgbV9k
aWRTcGlsbCA9IHRydWU7CiAgICAgfQpAQCAtNTcxLDEzICs1NzMsMTMgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBGYWxsIGJhY2sgb24gdGhlIGhhcmQg
d2F5LgogICAgICAgICAgICAgICAgIGluc3QuZm9yRWFjaFRtcCgKLSAgICAgICAgICAgICAgICAg
ICAgWyZdIChUbXAmIHRtcCwgQXJnOjpSb2xlIHJvbGUsIEJhbmsgYmFuaywgV2lkdGgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgWyZdIChUbXAmIHRtcCwgQXJnOjpSb2xlIHJvbGUsIEJhbmsgYmFu
aywgV2lkdGggd2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAuaXNSZWco
KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
ICAgICAgICBTdGFja1Nsb3QqIHNwaWxsZWQgPSBtX21hcFt0bXBdLnNwaWxsZWQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXNwaWxsZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgT3Bjb2RlIG1vdmUgPSBiYW5rID09
IEdQID8gTW92ZSA6IE1vdmVEb3VibGU7CisgICAgICAgICAgICAgICAgICAgICAgICBPcGNvZGUg
bW92ZSA9IGJhbmsgPT0gR1AgPyBNb3ZlIDogd2lkdGggPD0gV2lkdGg2NCA/IE1vdmVEb3VibGUg
OiBNb3ZlVmVjdG9yOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gYWRkU3BpbGxUbXBX
aXRoSW50ZXJ2YWwoYmFuaywgaW50ZXJ2YWxGb3JTcGlsbChpbmRleE9mRWFybHksIHJvbGUpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb2xlID09IEFyZzo6U2NyYXRjaCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC02MjAsNiArNjIyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgZW50cnkuc3BpbGxJ
bmRleCA9IG1fdXNlZFNwaWxsU2xvdHMuZmluZEJpdCgwLCBmYWxzZSk7CisgICAgICAgICAgICAv
LyBPT1BTOiBzaG91bGQgaGFuZGxlIHYxMjgKICAgICAgICAgICAgIHB0cmRpZmZfdCBvZmZzZXQg
PSAtc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihtX2NvZGUuZnJhbWVTaXplKCkpIC0gc3RhdGljX2Nh
c3Q8cHRyZGlmZl90PihlbnRyeS5zcGlsbEluZGV4KSAqIDggLSA4OwogICAgICAgICAgICAgaWYg
KHZlcmJvc2UoKSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgIEFzc2lnbmluZyBvZmZzZXQg
PSAiLCBvZmZzZXQsICIgdG8gc3BpbGwgIiwgcG9pbnRlckR1bXAoZW50cnkuc3BpbGxlZCksICIg
Zm9yICIsIHRtcCwgIlxuIik7CkBAIC02NjksMTUgKzY3MiwxNSBAQCBwcml2YXRlOgogICAgIAog
ICAgIENvZGUmIG1fY29kZTsKICAgICBWZWN0b3I8UmVnPiBtX3JlZ2lzdGVyc1tudW1CYW5rc107
Ci0gICAgUmVnaXN0ZXJTZXQgbV9yZWdpc3RlclNldFtudW1CYW5rc107Ci0gICAgUmVnaXN0ZXJT
ZXQgbV91bmlmaWVkUmVnaXN0ZXJTZXQ7CisgICAgUmVnaXN0ZXJTZXQxMjggbV9yZWdpc3RlclNl
dFtudW1CYW5rc107CisgICAgUmVnaXN0ZXJTZXQxMjggbV91bmlmaWVkUmVnaXN0ZXJTZXQ7CiAg
ICAgSW5kZXhNYXA8QmFzaWNCbG9jayosIHNpemVfdD4gbV9zdGFydEluZGV4OwogICAgIFRtcE1h
cDxUbXBEYXRhPiBtX21hcDsKICAgICBJbmRleE1hcDxCYXNpY0Jsb2NrKiwgUGhhc2VJbnNlcnRp
b25TZXQ+IG1faW5zZXJ0aW9uU2V0czsKICAgICBWZWN0b3I8Q2xvYmJlcj4gbV9jbG9iYmVyczsg
Ly8gQWZ0ZXIgd2UgYWxsb2NhdGUgdGhpcywgd2UgaGFwcGlseSBwb2ludCBwb2ludGVycyBpbnRv
IGl0LgogICAgIFZlY3RvcjxUbXA+IG1fdG1wczsKICAgICBEZXF1ZTxUbXA+IG1fYWN0aXZlOwot
ICAgIFJlZ2lzdGVyU2V0IG1fYWN0aXZlUmVnczsKKyAgICBSZWdpc3RlclNldDEyOCBtX2FjdGl2
ZVJlZ3M7CiAgICAgQml0VmVjdG9yIG1fdXNlZFNwaWxsU2xvdHM7CiAgICAgYm9vbCBtX2RpZFNw
aWxsIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuY3Bw
CmluZGV4IDc1NzY4MjdiNDdjMi4uMDI5MTg0MDgxZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJz
QnlHcmFwaENvbG9yaW5nLmNwcApAQCAtMTcxMCw2ICsxNzEwLDcgQEAgcHJvdGVjdGVkOgogICAg
ICAgICAgICAgc3dpdGNoIChpbnN0LmtpbmQub3Bjb2RlKSB7CiAgICAgICAgICAgICBjYXNlIE1v
dmVGbG9hdDoKICAgICAgICAgICAgIGNhc2UgTW92ZURvdWJsZToKKyAgICAgICAgICAgIC8vIGNh
c2UgTW92ZVZlY3RvcjogLy8gT09QUwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTgxLDcgKzE5
ODIsOCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHVuc2lnbmVkIHN0YWNrU2xvdE1pbmltdW1X
aWR0aChXaWR0aCB3aWR0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiB3aWR0aCA8PSBXaWR0aDMy
ID8gNCA6IDg7CisgICAgICAgIHVuc2lnbmVkIGJ5dGVzID0gYnl0ZXNGb3JXaWR0aCh3aWR0aCk7
CisgICAgICAgIHJldHVybiBieXRlcyA8IDQgPyA0IDogYnl0ZXM7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8QmFuayBiYW5rLCB0eXBlbmFtZSBBbGxvY2F0b3JUeXBlPgpAQCAtMjA4Nyw3ICsyMDg5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5Vc2VNb3ZlMzJJ
ZkRpZFNwaWxsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YWNrU2xvdEVudHJ5LT52YWx1ZS0+ZW5zdXJlU2l6ZSgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYW5Vc2VNb3ZlMzJJZkRpZFNwaWxsID8gNCA6IGJ5dGVzKHdp
ZHRoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuVXNlTW92ZTMySWZEaWRTcGls
bCA/IDQgOiBieXRlc0ZvcldpZHRoKHdpZHRoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBh
cmcgPSBBcmc6OnN0YWNrKHN0YWNrU2xvdEVudHJ5LT52YWx1ZSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWRTcGlsbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmVl
ZFNjcmF0Y2hJZlNwaWxsZWRJblBsYWNlKQpAQCAtMjEwNiw2ICsyMTA4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNl
IE1vdmVEb3VibGU6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgTW92ZUZsb2F0OgorICAgICAg
ICAgICAgICAgICAgICBjYXNlIE1vdmVWZWN0b3I6CiAgICAgICAgICAgICAgICAgICAgICAgICBp
bnN0QmFuayA9IEZQOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CkBAIC0yMTU2LDYgKzIxNTksMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgICAgICAgICAgICAgbW92ZSA9IGJh
bmsgPT0gR1AgPyBNb3ZlIDogTW92ZURvdWJsZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDE2OgorICAgICAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoYmFuayA9PSBGUCk7CisgICAgICAgICAgICAgICAgICAgICAgICBt
b3ZlID0gTW92ZVZlY3RvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlH
cmFwaENvbG9yaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2Nh
dGVTdGFja0J5R3JhcGhDb2xvcmluZy5jcHAKaW5kZXggYzJmMWFlZjI4YTgzLi43ZjY1NDI2ODk5
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVT
dGFja0J5R3JhcGhDb2xvcmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcApAQCAtOTAsNyArOTAsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgICAgICBTdGFja1Nsb3QqIHNsb3QgPSBhcmcuc3RhY2tTbG90KCk7
CiAgICAgICAgICAgICBpZiAoc2xvdC0+a2luZCgpICE9IFN0YWNrU2xvdEtpbmQ6OlNwaWxsKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmIChzbG90LT5ieXRl
U2l6ZSgpICE9IGJ5dGVzKHdpZHRoKSkKKyAgICAgICAgICAgIGlmIChzbG90LT5ieXRlU2l6ZSgp
ICE9IGJ5dGVzRm9yV2lkdGgod2lkdGgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckFyZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAKaW5kZXgg
NzdlZTg0MjUxMjRiLi5mN2Y5YWNkOTgzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQXJnLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFyZy5jcHAKQEAgLTk2LDYgKzk2LDcgQEAgdW5zaWduZWQgQXJnOjpqc0hhc2goKSBjb25z
dAogICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgY2FzZSBJbnZhbGlkOgogICAgIGNhc2UgU3Bl
Y2lhbDoKKyAgICBjYXNlIFNpbWRJbmZvOgogICAgICAgICBicmVhazsKICAgICBjYXNlIFRtcDoK
ICAgICAgICAgcmVzdWx0ICs9IG1fYmFzZS5pbnRlcm5hbFZhbHVlKCk7CkBAIC0yMTksNiArMjIw
LDkgQEAgdm9pZCBBcmc6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBjYXNlIFdp
ZHRoQXJnOgogICAgICAgICBvdXQucHJpbnQod2lkdGgoKSk7CiAgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIFNpbWRJbmZvOgorICAgICAgICBvdXQucHJpbnQoInsgIiwgc2ltZEluZm8oKS5sYW5l
LCAiLCAiLCBzaW1kSW5mbygpLnNpZ25Nb2RlLCAiIH0iKTsKKyAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yOTYsNiArMzAwLDkg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZzo6S2luZCBraW5kKQog
ICAgIGNhc2UgQXJnOjpXaWR0aEFyZzoKICAgICAgICAgb3V0LnByaW50KCJXaWR0aEFyZyIpOwog
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OlNpbWRJbmZvOgorICAgICAgICBvdXQucHJp
bnQoIlNpbWRJbmZvIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJBcmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKaW5k
ZXggZmJmNjYzN2IyODYwLi5jY2EyOGYyZGQyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJBcmcuaApAQCAtOTAsNyArOTAsOSBAQCBwdWJsaWM6CiAgICAgICAgIFdpZHRoQXJnLAog
CiAgICAgICAgIC8vIFplcm9SZWcgaXMgaW50ZXJwcmV0ZWQgYXMgYSB6ZXJvIHJlZ2lzdGVyIGlu
IEFSTTY0Ci0gICAgICAgIFplcm9SZWcKKyAgICAgICAgWmVyb1JlZywKKyAgICAgICAgCisgICAg
ICAgIFNpbWRJbmZvCiAgICAgfTsKICAgICAKICAgICBlbnVtIFRlbXBlcmF0dXJlIDogaW50OF90
IHsKQEAgLTQ5Miw2ICs0OTQsMjIgQEAgcHVibGljOgogICAgICAgICA6IEFyZyhBaXI6OlRtcChy
ZWcpKQogICAgIHsKICAgICB9CisgICAgCisgICAgc3RhdGljIEFyZyBzaW1kSW5mbyhTaW1kTGFu
ZSBzaW1kTGFuZSwgU2ltZFNpZ25Nb2RlIHNpZ25Nb2RlID0gU2ltZFNpZ25Nb2RlOjpOb25lKQor
ICAgIHsKKyAgICAgICAgQXJnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fa2luZCA9IFNpbWRJ
bmZvOworICAgICAgICByZXN1bHQubV9zaW1kSW5mbyA9IDo6SlNDOjpTaW1kSW5mbyB7IHNpbWRM
YW5lLCBzaWduTW9kZSB9OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHN0
YXRpYyBBcmcgc2ltZEluZm8oOjpKU0M6OlNpbWRJbmZvIGluZm8pCisgICAgeworICAgICAgICBB
cmcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5kID0gU2ltZEluZm87CisgICAgICAgIHJl
c3VsdC5tX3NpbWRJbmZvID0gaW5mbzsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAK
ICAgICBzdGF0aWMgQXJnIGltbShpbnQ2NF90IHZhbHVlKQogICAgIHsKQEAgLTYwNSw3ICs2MjMs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCF3aWR0aCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHNjYWxlID09IDEgfHwgc2NhbGUgPT0gYnl0ZXMoKndpZHRoKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc2NhbGUgPT0gMSB8fCBzY2FsZSA9PSBieXRlc0ZvcldpZHRo
KCp3aWR0aCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGRlZmF1bHQ6CkBAIC02MjQsNiArNjQyLDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0
dXJuIDI7CiAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgIHJldHVybiAzOworICAgICAgICBj
YXNlIDE2OgorICAgICAgICAgICAgcmV0dXJuIDQ7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtNzE5
LDcgKzczOSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFyZyByZXN1bHQ7CiAgICAgICAg
IHJlc3VsdC5tX2tpbmQgPSBXaWR0aEFyZzsKLSAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gd2lk
dGg7CisgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IGJ5dGVzRm9yV2lkdGgod2lkdGgpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtOTA5LDYgKzkyOSwxMSBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gaXNUbXAoKSB8fCBpc1N0YWNrKCk7CiAgICAgfQorICAg
IAorICAgIGJvb2wgaXNTaW1kSW5mbygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4ga2lu
ZCgpID09IFNpbWRJbmZvOworICAgIH0KIAogICAgIEFpcjo6VG1wIHRtcCgpIGNvbnN0CiAgICAg
ewpAQCAtOTQxLDYgKzk2Niw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gQjM6
OmlzUmVwcmVzZW50YWJsZUFzPGludDMyX3Q+KHZhbHVlKTsKICAgICAgICAgICAgIGNhc2UgV2lk
dGg2NDoKICAgICAgICAgICAgICAgICByZXR1cm4gQjM6OmlzUmVwcmVzZW50YWJsZUFzPGludDY0
X3Q+KHZhbHVlKTsKKyAgICAgICAgICAgIGNhc2UgV2lkdGgxMjg6CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2FzZSBVbnNpZ25lZDoKQEAgLTk1Myw2ICs5ODAsOCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEIzOjppc1JlcHJlc2VudGFibGVBczx1
aW50MzJfdD4odmFsdWUpOwogICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgogICAgICAgICAgICAg
ICAgIHJldHVybiBCMzo6aXNSZXByZXNlbnRhYmxlQXM8dWludDY0X3Q+KHZhbHVlKTsKKyAgICAg
ICAgICAgIGNhc2UgV2lkdGgxMjg6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC05NzMsNiArMTAwMiw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpOwogICAgICAgICAgICAgY2FzZSBXaWR0aDY0Ogog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSk7CisgICAg
ICAgICAgICBjYXNlIFdpZHRoMTI4OgorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
Y2FzZSBVbnNpZ25lZDoKQEAgLTk4NSw2ICsxMDE2LDggQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpOwogICAgICAgICAgICAgY2Fz
ZSBXaWR0aDY0OgogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
dmFsdWUpOworICAgICAgICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtMTA1Niw3ICsxMDg5LDcgQEAgcHVibGljOgogICAgIFdpZHRoIHdpZHRo
KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChraW5kKCkgPT0gV2lkdGhBcmcpOwotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2lkdGg+KG1fb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJu
IHdpZHRoRm9yQnl0ZXMobV9vZmZzZXQpOwogICAgIH0KIAogICAgIGJvb2wgaXNHUFRtcCgpIGNv
bnN0CkBAIC0xMDk1LDYgKzExMjgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgY2FzZSBUbXA6CiAgICAgICAgICAgICByZXR1cm4gaXNHUFRtcCgpOworICAg
ICAgICBjYXNlIFNpbWRJbmZvOgogICAgICAgICBjYXNlIEludmFsaWQ6CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTExMTYsNiArMTE1MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgY2FzZSBJbnZhbGlkOgogICAgICAgICBjYXNl
IFplcm9SZWc6CisgICAgICAgIGNhc2UgU2ltZEluZm86CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoKICAgICAgICAgY2FzZSBBZGRyOgpAQCAtMTI2
Miw2ICsxMjk3LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkU2Nh
bGVkVUltbTEyPDMyPihvZmZzZXQpOwogICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgogICAgICAg
ICAgICAgICAgIHJldHVybiBpc1ZhbGlkU2NhbGVkVUltbTEyPDY0PihvZmZzZXQpOworICAgICAg
ICAgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMwOCw2ICsx
MzQ1LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFplcm9SZWc6CiAgICAgICAgIGNhc2UgU2lt
cGxlQWRkcjoKICAgICAgICAgY2FzZSBFeHRlbmRlZE9mZnNldEFkZHI6CisgICAgICAgIGNhc2Ug
U2ltZEluZm86CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBBZGRyOgog
ICAgICAgICBjYXNlIFN0YWNrOgpAQCAtMTQ3OCw2ICsxNTE2LDE4IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24+KG1f
b2Zmc2V0KTsKICAgICB9CiAgICAgCisgICAgOjpKU0M6OlNpbWRJbmZvIHNpbWRJbmZvKCkgY29u
c3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1NpbWRJbmZvKCkpOworICAgICAgICByZXR1cm4g
bV9zaW1kSW5mbzsKKyAgICB9CisgICAgCisgICAgU2ltZFNpZ25Nb2RlIHNpbWRTaWduTW9kZSgp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNTaW1kSW5mbygpKTsKKyAgICAgICAgcmV0
dXJuIG1fc2ltZEluZm8uc2lnbk1vZGU7CisgICAgfQorICAgIAogICAgIC8vIFRlbGxzIHlvdSBp
ZiB0aGUgQXJnIGlzIGludmVydGlibGUuIE9ubHkgY29uZGl0aW9uIGFyZ3VtZW50cyBhcmUgaW52
ZXJ0aWJsZSwgYW5kIGV2ZW4gZm9yIHRob3NlLCB0aGVyZQogICAgIC8vIGFyZSBhIGZldyBleGNl
cHRpb25zIC0gbm90YWJseSBPdmVyZmxvdyBhbmQgU2lnbmVkLgogICAgIGJvb2wgaXNJbnZlcnRp
YmxlKCkgY29uc3QKQEAgLTE1NjAsNiArMTYxMCw3IEBAIHByaXZhdGU6CiAgICAgaW50MzJfdCBt
X3NjYWxlIHsgMSB9OwogICAgIEFpcjo6VG1wIG1fYmFzZTsKICAgICBBaXI6OlRtcCBtX2luZGV4
OworICAgIDo6SlNDOjpTaW1kSW5mbyBtX3NpbWRJbmZvOwogfTsKIAogc3RydWN0IEFyZ0hhc2gg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNp
YWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3Bw
CmluZGV4IDhmZTBhYWU5N2I0NS4uODZhY2I5OTFlZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCiBDQ2FsbFNw
ZWNpYWw6OkNDYWxsU3BlY2lhbCgpCiB7Ci0gICAgbV9jbG9iYmVyZWRSZWdzID0gUmVnaXN0ZXJT
ZXQ6OmFsbFJlZ2lzdGVycygpOwotICAgIG1fY2xvYmJlcmVkUmVncy5leGNsdWRlKFJlZ2lzdGVy
U2V0OjpzdGFja1JlZ2lzdGVycygpKTsKLSAgICBtX2Nsb2JiZXJlZFJlZ3MuZXhjbHVkZShSZWdp
c3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKLSAgICBtX2Nsb2JiZXJlZFJl
Z3MuZXhjbHVkZShSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBtX2Ns
b2JiZXJlZFJlZ3MgPSBSZWdpc3RlclNldDEyODo6dXNlMTI4Qml0cyhSZWdpc3RlclNldDo6YWxs
UmVnaXN0ZXJzKCkpOworICAgIG1fY2xvYmJlcmVkUmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0MTI4
Ojp1c2UxMjhCaXRzKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKSk7CisgICAgbV9jbG9i
YmVyZWRSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQxMjg6OnVzZTEyOEJpdHMoUmVnaXN0ZXJTZXQ6
OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSkpOworICAgIG1fY2xvYmJlcmVkUmVncy5leGNs
dWRlKFJlZ2lzdGVyU2V0MTI4OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgIG1fY2xvYmJl
cmVkUmVncy5jbGVhcihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgbV9jbG9iYmVyZWRS
ZWdzLmNsZWFyKEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7CiAgICAgbV9jbG9iYmVyZWRSZWdz
LmNsZWFyKEZQUkluZm86OnJldHVyblZhbHVlRlBSKTsKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBD
Q2FsbFNwZWNpYWw6OmZvckVhY2hBcmcoSW5zdCYgaW5zdCwgY29uc3QgU2NvcGVkTGFtYmRhPElu
c3Q6OkVhY2hBcmdDYWxsYmEKICAgICAgICAgLy8gRm9yIHRoZSB0eXBlLCB3ZSBjYW4ganVzdCBx
dWVyeSB0aGUgYXJnJ3MgYmFuay4gVGhlIGFyZyB3aWxsIGhhdmUgYSBiYW5rLCBiZWNhdXNlIHdl
CiAgICAgICAgIC8vIHJlcXVpcmUgdGhlc2UgYXJncyB0byBiZSBhcmd1bWVudCByZWdpc3RlcnMu
CiAgICAgICAgIEJhbmsgYmFuayA9IGluc3QuYXJnc1tpXS5iYW5rKCk7Ci0gICAgICAgIGNhbGxi
YWNrKGluc3QuYXJnc1tpXSwgQXJnOjpVc2UsIGJhbmssIGNvbnNlcnZhdGl2ZVdpZHRoKGJhbmsp
KTsKKyAgICAgICAgY2FsbGJhY2soaW5zdC5hcmdzW2ldLCBBcmc6OlVzZSwgYmFuaywgY29uc2Vy
dmF0aXZlV2lkdGhGb3JDKGJhbmspKTsKICAgICB9CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBi
b29sIENDYWxsU3BlY2lhbDo6YWRtaXRzRXh0ZW5kZWRPZmZzZXRBZGRyKEluc3QmIGluc3QsIHVu
c2lnbmVkIGFyZ0luZGV4KQogICAgIHJldHVybiBhZG1pdHNTdGFjayhpbnN0LCBhcmdJbmRleCk7
CiB9CiAKLXZvaWQgQ0NhbGxTcGVjaWFsOjpyZXBvcnRVc2VkUmVnaXN0ZXJzKEluc3QmLCBjb25z
dCBSZWdpc3RlclNldCYpCit2b2lkIENDYWxsU3BlY2lhbDo6cmVwb3J0VXNlZFJlZ2lzdGVycyhJ
bnN0JiwgY29uc3QgUmVnaXN0ZXJTZXQxMjgmKQogewogfQogCkBAIC0xNTIsMTIgKzE1MiwxMiBA
QCBDQ2FsbEhlbHBlcnM6Okp1bXAgQ0NhbGxTcGVjaWFsOjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBD
Q2FsbEhlbHBlcnMmIGppdCwgR2VuZXJhdAogICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXAo
KTsKIH0KIAotUmVnaXN0ZXJTZXQgQ0NhbGxTcGVjaWFsOjpleHRyYUVhcmx5Q2xvYmJlcmVkUmVn
cyhJbnN0JikKK1JlZ2lzdGVyU2V0MTI4IENDYWxsU3BlY2lhbDo6ZXh0cmFFYXJseUNsb2JiZXJl
ZFJlZ3MoSW5zdCYpCiB7Ci0gICAgcmV0dXJuIG1fZW1wdHlSZWdzOworICAgIHJldHVybiBSZWdp
c3RlclNldDEyODo6dXNlMTI4Qml0cyhtX2VtcHR5UmVncyk7CiB9CiAKLVJlZ2lzdGVyU2V0IEND
YWxsU3BlY2lhbDo6ZXh0cmFDbG9iYmVyZWRSZWdzKEluc3QmKQorUmVnaXN0ZXJTZXQxMjggQ0Nh
bGxTcGVjaWFsOjpleHRyYUNsb2JiZXJlZFJlZ3MoSW5zdCYpCiB7CiAgICAgcmV0dXJuIG1fY2xv
YmJlcmVkUmVnczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ0NhbGxTcGVjaWFsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxs
U3BlY2lhbC5oCmluZGV4IGRkYWZmMWMyZTE1ZS4uMTA5ZTQzNTRiOWNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmgKQEAgLTU3LDEwICs1Nywx
MCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNWYWxpZChJbnN0JikgZmluYWw7CiAgICAgYm9vbCBh
ZG1pdHNTdGFjayhJbnN0JiwgdW5zaWduZWQgYXJnSW5kZXgpIGZpbmFsOwogICAgIGJvb2wgYWRt
aXRzRXh0ZW5kZWRPZmZzZXRBZGRyKEluc3QmLCB1bnNpZ25lZCkgZmluYWw7Ci0gICAgdm9pZCBy
ZXBvcnRVc2VkUmVnaXN0ZXJzKEluc3QmLCBjb25zdCBSZWdpc3RlclNldCYpIGZpbmFsOworICAg
IHZvaWQgcmVwb3J0VXNlZFJlZ2lzdGVycyhJbnN0JiwgY29uc3QgUmVnaXN0ZXJTZXQxMjgmKSBm
aW5hbDsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBnZW5lcmF0ZShJbnN0JiwgQ0NhbGxIZWxw
ZXJzJiwgR2VuZXJhdGlvbkNvbnRleHQmKSBmaW5hbDsKLSAgICBSZWdpc3RlclNldCBleHRyYUVh
cmx5Q2xvYmJlcmVkUmVncyhJbnN0JikgZmluYWw7Ci0gICAgUmVnaXN0ZXJTZXQgZXh0cmFDbG9i
YmVyZWRSZWdzKEluc3QmKSBmaW5hbDsKKyAgICBSZWdpc3RlclNldDEyOCBleHRyYUVhcmx5Q2xv
YmJlcmVkUmVncyhJbnN0JikgZmluYWw7CisgICAgUmVnaXN0ZXJTZXQxMjggZXh0cmFDbG9iYmVy
ZWRSZWdzKEluc3QmKSBmaW5hbDsKIAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIGRlZXBEdW1wSW1wbChQcmludFN0cmVhbSYpIGNvbnN0IGZp
bmFsOwpAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgYXJnQXJnT2Zmc2V0ID0KICAgICAgICAgbnVtU3BlY2lhbEFyZ3MgKyBudW1DYWxsZWVB
cmdzICsgbnVtUmV0dXJuR1BBcmdzICsgbnVtUmV0dXJuRlBBcmdzOwogICAgIAotICAgIFJlZ2lz
dGVyU2V0IG1fY2xvYmJlcmVkUmVnczsKKyAgICBSZWdpc3RlclNldDEyOCBtX2Nsb2JiZXJlZFJl
Z3M7CiAgICAgUmVnaXN0ZXJTZXQgbV9lbXB0eVJlZ3M7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsaW5nQ29udmVudGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsaW5nQ29udmVudGlvbi5jcHAKaW5kZXgg
ZDIzZWExYjRlZjMyLi40NjY1M2RhNjA4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckNDYWxsaW5nQ29udmVudGlvbi5jcHAKQEAgLTk5LDYgKzk5LDcg
QEAgVG1wIGNDYWxsUmVzdWx0KFR5cGUgdHlwZSkKICAgICBjYXNlIEZsb2F0OgogICAgIGNhc2Ug
RG91YmxlOgogICAgICAgICByZXR1cm4gVG1wKEZQUkluZm86OnJldHVyblZhbHVlRlBSKTsKKyAg
ICBjYXNlIFYxMjg6CiAgICAgY2FzZSBUdXBsZToKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKaW5kZXggYjViYjAzM2QwNjMxLi4x
MmFhOWVkNjI1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
Q29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcApA
QCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQWlyQ29k
ZS5oIgorI2luY2x1ZGUgInd0Zi9TdGRJbnRFeHRyYXMuaCIKIAogI2lmIEVOQUJMRShCM19KSVQp
CiAKQEAgLTUwLDcgKzUxLDggQEAgc3RhdGljIHZvaWQgZGVmYXVsdFByb2xvZ3VlR2VuZXJhdG9y
KENDYWxsSGVscGVycyYgaml0LCBDb2RlJiBjb2RlKQogICAgICAgICBqaXQuYWRkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoLWNvZGUuZnJhbWVTaXplKCkpLCBNYWNyb0Fzc2VtYmxl
cjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsICBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOwogICAgIH0KICAgICAKLSAgICBqaXQuZW1pdFNhdmUoY29kZS5jYWxsZWVTYXZlUmVn
aXN0ZXJBdE9mZnNldExpc3QoKSk7CisgICAgYXV0byBjYWxsZWVTYXZlcyA9IGNvZGUuY2FsbGVl
U2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCk7CisgICAgaml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXNG
b3IoJmNhbGxlZVNhdmVzKTsKIH0KIAogQ29kZTo6Q29kZShQcm9jZWR1cmUmIHByb2MpCkBAIC02
OCw3ICs3MCw3IEBAIENvZGU6OkNvZGUoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICAgICAgUmVn
aXN0ZXJTZXQgYWxsID0gYmFuayA9PSBHUCA/IFJlZ2lzdGVyU2V0OjphbGxHUFJzKCkgOiBSZWdp
c3RlclNldDo6YWxsRlBScygpOwogICAgICAgICAgICAgYWxsLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6
OnN0YWNrUmVnaXN0ZXJzKCkpOwogICAgICAgICAgICAgYWxsLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6
OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7Ci0gICAgICAgICAgICBSZWdpc3RlclNldCBj
YWxsZWVTYXZlID0gUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICAgICAg
ICAgIFJlZ2lzdGVyU2V0MTI4IGNhbGxlZVNhdmUgPSBSZWdpc3RlclNldDEyODo6Y2FsbGVlU2F2
ZVJlZ2lzdGVycygpOwogICAgICAgICAgICAgYWxsLmZvckVhY2goCiAgICAgICAgICAgICAgICAg
WyZdIChSZWcgcmVnKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGVlU2F2ZS5nZXQo
cmVnKSkKQEAgLTEwOCw3ICsxMTAsOCBAQCB2b2lkIENvZGU6OmVtaXREZWZhdWx0UHJvbG9ndWUo
Q0NhbGxIZWxwZXJzJiBqaXQpCiB2b2lkIENvZGU6OmVtaXRFcGlsb2d1ZShDQ2FsbEhlbHBlcnMm
IGppdCkKIHsKICAgICBpZiAoZnJhbWVTaXplKCkpIHsKLSAgICAgICAgaml0LmVtaXRSZXN0b3Jl
KGNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpKTsKKyAgICAgICAgYXV0byBjYWxsZWVT
YXZlcyA9IGNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpOworICAgICAgICBqaXQuZW1p
dFJlc3RvcmVDYWxsZWVTYXZlc0ZvcigmY2FsbGVlU2F2ZXMpOwogICAgICAgICBqaXQuZW1pdEZ1
bmN0aW9uRXBpbG9ndWUoKTsKICAgICB9IGVsc2UKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVw
aWxvZ3VlV2l0aEVtcHR5RnJhbWUoKTsKQEAgLTEzOCwxNCArMTQxLDE0IEBAIHZvaWQgQ29kZTo6
cGluUmVnaXN0ZXIoUmVnIHJlZykKIAogUmVnaXN0ZXJTZXQgQ29kZTo6bXV0YWJsZUdQUnMoKQog
ewotICAgIFJlZ2lzdGVyU2V0IHJlc3VsdCA9IG1fbXV0YWJsZVJlZ3M7CisgICAgYXV0byByZXN1
bHQgPSBtX211dGFibGVSZWdzOwogICAgIHJlc3VsdC5maWx0ZXIoUmVnaXN0ZXJTZXQ6OmFsbEdQ
UnMoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUmVnaXN0ZXJTZXQgQ29kZTo6bXV0YWJs
ZUZQUnMoKQogewotICAgIFJlZ2lzdGVyU2V0IHJlc3VsdCA9IG1fbXV0YWJsZVJlZ3M7CisgICAg
YXV0byByZXN1bHQgPSBtX211dGFibGVSZWdzOwogICAgIHJlc3VsdC5maWx0ZXIoUmVnaXN0ZXJT
ZXQ6OmFsbEZQUnMoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTIxOCw4ICsyMjEsMTIg
QEAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gQ29kZTo6ZW50cnlwb2ludEluZGV4KEJhc2ljQmxv
Y2sqIGJsb2NrKSBjb25zdAogdm9pZCBDb2RlOjpzZXRDYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNl
dExpc3QoUmVnaXN0ZXJBdE9mZnNldExpc3QmJiByZWdpc3RlckF0T2Zmc2V0TGlzdCwgU3RhY2tT
bG90KiBzbG90KQogewogICAgIG1fdW5jb3JyZWN0ZWRDYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNl
dExpc3QgPSBXVEZNb3ZlKHJlZ2lzdGVyQXRPZmZzZXRMaXN0KTsKLSAgICBmb3IgKGNvbnN0IFJl
Z2lzdGVyQXRPZmZzZXQmIHJlZ2lzdGVyQXRPZmZzZXQgOiBtX3VuY29ycmVjdGVkQ2FsbGVlU2F2
ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KQotICAgICAgICBtX2NhbGxlZVNhdmVSZWdpc3RlcnMuc2V0
KHJlZ2lzdGVyQXRPZmZzZXQucmVnKCkpOworICAgIEFTU0VSVChtX3VuY29ycmVjdGVkQ2FsbGVl
U2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0LmNvdW50KCkgPT0gbV91bmNvcnJlY3RlZENhbGxlZVNh
dmVSZWdpc3RlckF0T2Zmc2V0TGlzdC5ieXRlU2l6ZSgpIC8gc2l6ZW9mKENQVVJlZ2lzdGVyKSk7
CisgICAgZm9yIChjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiByZWdpc3RlckF0T2Zmc2V0IDogbV91
bmNvcnJlY3RlZENhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCkgeworICAgICAgICBBU1NF
UlQocmVnaXN0ZXJBdE9mZnNldC5ieXRlU2l6ZSgpID09IHNpemVvZihDUFVSZWdpc3RlcikpOwor
ICAgICAgICBBU1NFUlQoIVJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLmNvbnRhaW5zKHJl
Z2lzdGVyQXRPZmZzZXQucmVnKCkpKTsKKyAgICAgICAgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzLnNl
dChyZWdpc3RlckF0T2Zmc2V0LnJlZygpLCBpbmNsdWRlUmVnaXN0ZXJXaXRoV2lkdGgoY29uc2Vy
dmF0aXZlV2lkdGhGb3JDKGJhbmtGb3JSZWcocmVnaXN0ZXJBdE9mZnNldC5yZWcoKSkpKSk7Cisg
ICAgfQogICAgIG1fY2FsbGVlU2F2ZVN0YWNrU2xvdCA9IHNsb3Q7CiB9CiAKQEAgLTIyOCwxMCAr
MjM1LDEyIEBAIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IENvZGU6OmNhbGxlZVNhdmVSZWdpc3RlckF0
T2Zmc2V0TGlzdCgpIGNvbnN0CiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QgcmVzdWx0ID0gbV91
bmNvcnJlY3RlZENhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdDsKICAgICBpZiAoU3RhY2tT
bG90KiBzbG90ID0gbV9jYWxsZWVTYXZlU3RhY2tTbG90KSB7CiAgICAgICAgIHB0cmRpZmZfdCBv
ZmZzZXQgPSBzbG90LT5ieXRlU2l6ZSgpICsgc2xvdC0+b2Zmc2V0RnJvbUZQKCk7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSByZXN1bHQuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSByZXN1bHQuY291bnQoKTsgaS0tOykgeworICAgICAgICAgICAgQVNTRVJUKHJlc3Vs
dC5hdChpKS5ieXRlU2l6ZSgpID09IHNpemVvZihDUFVSZWdpc3RlcikpOwogICAgICAgICAgICAg
cmVzdWx0LmF0KGkpID0gUmVnaXN0ZXJBdE9mZnNldCgKICAgICAgICAgICAgICAgICByZXN1bHQu
YXQoaSkucmVnKCksCi0gICAgICAgICAgICAgICAgcmVzdWx0LmF0KGkpLm9mZnNldCgpICsgb2Zm
c2V0KTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXQoaSkub2Zmc2V0KCkgKyBvZmZzZXQsCisg
ICAgICAgICAgICAgICAgc2l6ZW9mKENQVVJlZ2lzdGVyKSk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTI3NCw3ICsyODMsNyBAQCB2b2lkIENvZGU6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBpZiAobV9jYWxsQXJnQXJlYVNpemUpCiAgICAgICAg
IG91dC5wcmludCh0aWVyTmFtZSwgIkNhbGwgYXJnIGFyZWEgc2l6ZTogIiwgbV9jYWxsQXJnQXJl
YVNpemUsICJcbiIpOwogICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IGNhbGxlZVNhdmVSZWdpc3Rl
cnMgPSB0aGlzLT5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKTsKLSAgICBpZiAoY2Fs
bGVlU2F2ZVJlZ2lzdGVycy5zaXplKCkpCisgICAgaWYgKGNhbGxlZVNhdmVSZWdpc3RlcnMuY291
bnQoKSkKICAgICAgICAgb3V0LnByaW50KHRpZXJOYW1lLCAiQ2FsbGVlIHNhdmVzOiAiLCBjYWxs
ZWVTYXZlUmVnaXN0ZXJzLCAiXG4iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckNvZGUuaAppbmRleCAzYzlkZjRmYzUzNDEuLmNmZWRmM2M1YzRkZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKQEAgLTIyOCw3ICsyMjgsNyBAQCBwdWJsaWM6CiAgICAg
UmVnaXN0ZXJBdE9mZnNldExpc3QgY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkgY29u
c3Q7CiAgICAgCiAgICAgLy8gVGhpcyBqdXN0IHRlbGxzIHlvdSB3aGF0IHRoZSBjYWxsZWUgc2F2
ZXMgYXJlLgotICAgIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMoKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxlZVNhdmVSZWdpc3RlcnM7IH0KKyAgICBSZWdpc3RlclNldDEyOCBjYWxsZWVT
YXZlUmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOyB9CiAK
ICAgICAvLyBSZWNvbXB1dGVzIHByZWRlY2Vzc29ycyBhbmQgZGVsZXRlcyB1bnJlYWNoYWJsZSBi
bG9ja3MuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNldFJlYWNoYWJpbGl0eSgpOwpA
QCAtNDA1LDcgKzQwNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3ByZXNlcnZlQjNPcmlnaW5z
IHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9mb3JjZUlSQyB7IGZhbHNlIH07CiAgICAgUmVnaXN0ZXJB
dE9mZnNldExpc3QgbV91bmNvcnJlY3RlZENhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdDsK
LSAgICBSZWdpc3RlclNldCBtX2NhbGxlZVNhdmVSZWdpc3RlcnM7CisgICAgUmVnaXN0ZXJTZXQx
MjggbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwogICAgIFN0YWNrU2xvdCogbV9jYWxsZWVTYXZlU3Rh
Y2tTbG90IHsgbnVsbHB0ciB9OwogICAgIFZlY3RvcjxGcmVxdWVudGVkQmxvY2s+IG1fZW50cnlw
b2ludHM7IC8vIFRoaXMgaXMgZW1wdHkgdW50aWwgYWZ0ZXIgbG93ZXJFbnRyeVN3aXRjaCgpLgog
ICAgIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+IG1fZW50cnlwb2ludExhYmVsczsgLy8g
VGhpcyBpcyBlbXB0eSB1bnRpbCBjb2RlIGdlbmVyYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckN1c3RvbS5jcHAKaW5kZXggMTNiY2QyNmMzNmM5Li5hNzY0YmI5MzQ5MjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5jcHAKQEAgLTQzLDgg
KzQzLDggQEAgYm9vbCBQYXRjaEN1c3RvbTo6aXNWYWxpZEZvcm0oSW5zdCYgaW5zdCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghaW5zdC5hcmdzWzBdLnNwZWNpYWwoKS0+aXNWYWxp
ZChpbnN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJl
ZEVhcmx5ID0gaW5zdC5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncygpOwotICAgIFJlZ2lzdGVyU2V0
IGNsb2JiZXJlZExhdGUgPSBpbnN0LmV4dHJhQ2xvYmJlcmVkUmVncygpOworICAgIGF1dG8gY2xv
YmJlcmVkRWFybHkgPSBpbnN0LmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKCk7CisgICAgYXV0byBj
bG9iYmVyZWRMYXRlID0gaW5zdC5leHRyYUNsb2JiZXJlZFJlZ3MoKTsKICAgICBib29sIG9rID0g
dHJ1ZTsKICAgICBpbnN0LmZvckVhY2hUbXAoCiAgICAgICAgIFsmXSAoVG1wJiB0bXAsIEFyZzo6
Um9sZSByb2xlLCBCYW5rLCBXaWR0aCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJFbWl0U2h1ZmZsZS5oCmluZGV4IDg2ZGM1MzVmNDE0MC4uOGE2YTRkNGY3YmI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5oCkBAIC00Niw2
ICs0Niw5IEBAIGlubGluZSBPcGNvZGUgbW92ZUZvcihCYW5rIGJhbmssIFdpZHRoIHdpZHRoKQog
ICAgICAgICByZXR1cm4gYmFuayA9PSBHUCA/IE1vdmUzMiA6IE1vdmVGbG9hdDsKICAgICBjYXNl
IFdpZHRoNjQ6CiAgICAgICAgIHJldHVybiBiYW5rID09IEdQID8gTW92ZSA6IE1vdmVEb3VibGU7
CisgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFuayA9PSBGUCk7
CisgICAgICAgIHJldHVybiBNb3ZlVmVjdG9yOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBPb3BzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFs
bHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0
ZXJTdGFsbHMuY3BwCmluZGV4IDAzN2M0MGZjYzI0Ny4uMzBkZDk5NDZlZTAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxs
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVn
aXN0ZXJTdGFsbHMuY3BwCkBAIC0yMDgsMTQgKzIwOCwxNCBAQCB2b2lkIGZpeFBhcnRpYWxSZWdp
c3RlclN0YWxscyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgSW5zdCYgaW5zdCA9IGJsb2NrLT5h
dChpKTsKIAogICAgICAgICAgICAgaWYgKGhhc1BhcnRpYWxYbW1SZWdVcGRhdGUoaW5zdCkpIHsK
LSAgICAgICAgICAgICAgICBSZWdpc3RlclNldCBkZWZzOwotICAgICAgICAgICAgICAgIFJlZ2lz
dGVyU2V0IHVzZXM7Ci0gICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNoVG1wKFsmXSAoVG1wJiB0
bXAsIEFyZzo6Um9sZSByb2xlLCBCYW5rLCBXaWR0aCkgeworICAgICAgICAgICAgICAgIFJlZ2lz
dGVyU2V0MTI4IGRlZnM7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQxMjggdXNlczsKKyAg
ICAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXAoWyZdIChUbXAmIHRtcCwgQXJnOjpSb2xlIHJv
bGUsIEJhbmssIFdpZHRoIHdpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAuaXNG
UFIoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNBbnlEZWYocm9sZSkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmcy5zZXQodG1wLmZwcigpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZzLnNldCh0bXAuZnByKCksIGluY2x1ZGVSZWdpc3Rl
cldpdGhXaWR0aCh3aWR0aCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNB
bnlVc2Uocm9sZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcy5zZXQodG1wLmZw
cigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VzLm1lcmdlKHRtcC5mcHIoKSwg
aW5jbHVkZVJlZ2lzdGVyV2l0aFdpZHRoKHdpZHRoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IGNhcmUgYWJv
dXQgdmFsdWVzIHdlIGRlZmluZSBidXQgbm90IHVzZS4gT3RoZXJ3aXNlIHdlIGhhdmUgdG8gd2Fp
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGb3JtVGFibGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRm9ybVRhYmxlLmgKaW5kZXggNmE0
MmQyZWViZDVlLi4zYWEyZWVmM2VjNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyRm9ybVRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJGb3JtVGFibGUuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgInd0Zi9Bc3NlcnRpb25zLmgiCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUg
IkFpckFyZy5oIgpAQCAtMzIsMTYgKzMzLDMxIEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBmb3JtUm9s
ZVNoaWZ0ID0gMDsKLXN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBmb3JtUm9sZU1hc2sgPSAxNTsK
K3N0YXRpYyBjb25zdGV4cHIgdWludDhfdCBmb3JtUm9sZU1hc2sgPSAwYjExMTE7CiBzdGF0aWMg
Y29uc3RleHByIHVpbnQ4X3QgZm9ybUJhbmtTaGlmdCA9IDQ7Ci1zdGF0aWMgY29uc3RleHByIHVp
bnQ4X3QgZm9ybUJhbmtNYXNrID0gMTsKK3N0YXRpYyBjb25zdGV4cHIgdWludDhfdCBmb3JtQmFu
a01hc2sgPSAwYjAxOwogc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGZvcm1XaWR0aFNoaWZ0ID0g
NTsKLXN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBmb3JtV2lkdGhNYXNrID0gMzsKLXN0YXRpYyBj
b25zdGV4cHIgdWludDhfdCBmb3JtSW52YWxpZFNoaWZ0ID0gNzsKK3N0YXRpYyBjb25zdGV4cHIg
dWludDhfdCBmb3JtV2lkdGhNYXNrID0gMGIxMTE7CiAKLSNkZWZpbmUgRU5DT0RFX0lOU1RfRk9S
TShyb2xlLCBiYW5rLCB3aWR0aCkgKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJvbGUpIDw8IGZvcm1S
b2xlU2hpZnQgfCBzdGF0aWNfY2FzdDx1aW50OF90PihiYW5rKSA8PCBmb3JtQmFua1NoaWZ0IHwg
c3RhdGljX2Nhc3Q8dWludDhfdD4od2lkdGgpIDw8IGZvcm1XaWR0aFNoaWZ0KQoraW5saW5lIGNv
bnN0ZXhwciB1aW50OF90IGVuY29kZUZvcm1XaWR0aChXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0
Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgICAgIHJldHVybiAwYjAwMTsgLy8g
MCBpcyBpbnZhbGlkCisgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICByZXR1cm4gMGIwMTA7Cisg
ICAgY2FzZSBXaWR0aDMyOgorICAgICAgICByZXR1cm4gMGIwMTE7CisgICAgY2FzZSBXaWR0aDY0
OgorICAgICAgICByZXR1cm4gMGIxMDA7CisgICAgY2FzZSBXaWR0aDEyODoKKyAgICAgICAgcmV0
dXJuIDBiMTAxOworICAgIH0KK30KKworI2RlZmluZSBFTkNPREVfSU5TVF9GT1JNKHJvbGUsIGJh
bmssIHdpZHRoKSAoc3RhdGljX2Nhc3Q8dWludDhfdD4ocm9sZSkgPDwgZm9ybVJvbGVTaGlmdCB8
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGJhbmspIDw8IGZvcm1CYW5rU2hpZnQgfCBlbmNvZGVGb3Jt
V2lkdGgod2lkdGgpIDw8IGZvcm1XaWR0aFNoaWZ0KQogCi0jZGVmaW5lIElOVkFMSURfSU5TVF9G
T1JNICgxIDw8IGZvcm1JbnZhbGlkU2hpZnQpCisjZGVmaW5lIElOVkFMSURfSU5TVF9GT1JNICgw
KQogCiBKU19FWFBPUlRfUFJJVkFURSBleHRlcm4gY29uc3QgdWludDhfdCBnX2Zvcm1UYWJsZVtd
OwogCkBAIC01Nyw3ICs3MywyMSBAQCBpbmxpbmUgQmFuayBkZWNvZGVGb3JtQmFuayh1aW50OF90
IHZhbHVlKQogCiBpbmxpbmUgV2lkdGggZGVjb2RlRm9ybVdpZHRoKHVpbnQ4X3QgdmFsdWUpCiB7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdpZHRoPigodmFsdWUgPj4gZm9ybVdpZHRoU2hpZnQp
ICYgZm9ybVdpZHRoTWFzayk7CisgICAgc3dpdGNoICgodmFsdWUgPj4gZm9ybVdpZHRoU2hpZnQp
ICYgZm9ybVdpZHRoTWFzaykgeworICAgIGNhc2UgMGIwMDE6CisgICAgICAgIHJldHVybiBXaWR0
aDg7CisgICAgY2FzZSAwYjAxMDoKKyAgICAgICAgcmV0dXJuIFdpZHRoMTY7CisgICAgY2FzZSAw
YjAxMToKKyAgICAgICAgcmV0dXJuIFdpZHRoMzI7CisgICAgY2FzZSAwYjEwMDoKKyAgICAgICAg
cmV0dXJuIFdpZHRoNjQ7CisgICAgY2FzZSAwYjEwMToKKyAgICAgICAgcmV0dXJuIFdpZHRoMTI4
OworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBXaWR0aDY0OworICAgIH0KIH0KIAogfSB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6QjM6OkFpcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJI
YW5kbGVDYWxsZWVTYXZlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckhh
bmRsZUNhbGxlZVNhdmVzLmNwcAppbmRleCAxMWU4NGM0MGFmZjMuLjQ3NTBlNDAxODFlMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIYW5kbGVDYWxsZWVTYXZl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIYW5kbGVDYWxsZWVT
YXZlcy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
IG5hbWVzcGFjZSBBaXIgewogCiB2b2lkIGhhbmRsZUNhbGxlZVNhdmVzKENvZGUmIGNvZGUpCiB7
Ci0gICAgUmVnaXN0ZXJTZXQgdXNlZENhbGxlZVNhdmVzOworICAgIFJlZ2lzdGVyU2V0MTI4IHVz
ZWRDYWxsZWVTYXZlczsKIAogICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBjb2RlKSB7CiAg
ICAgICAgIGZvciAoSW5zdCYgaW5zdCA6ICpibG9jaykgewpAQCAtNTYsMjUgKzU2LDIxIEBAIHZv
aWQgaGFuZGxlQ2FsbGVlU2F2ZXMoQ29kZSYgY29kZSkKICAgICBoYW5kbGVDYWxsZWVTYXZlcyhj
b2RlLCBXVEZNb3ZlKHVzZWRDYWxsZWVTYXZlcykpOwogfQogCi12b2lkIGhhbmRsZUNhbGxlZVNh
dmVzKENvZGUmIGNvZGUsIFJlZ2lzdGVyU2V0IHVzZWRDYWxsZWVTYXZlcykKK3ZvaWQgaGFuZGxl
Q2FsbGVlU2F2ZXMoQ29kZSYgY29kZSwgUmVnaXN0ZXJTZXQxMjggdXNlZENhbGxlZVNhdmVzKQog
ewogICAgIC8vIFdlIGZpbHRlciB0byByZWFsbHkgZ2V0IHRoZSBjYWxsZWUgc2F2ZXMuCi0gICAg
dXNlZENhbGxlZVNhdmVzLmZpbHRlcihSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygp
KTsKLSAgICB1c2VkQ2FsbGVlU2F2ZXMuZmlsdGVyKGNvZGUubXV0YWJsZVJlZ3MoKSk7Ci0gICAg
dXNlZENhbGxlZVNhdmVzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOyAv
LyBXZSBkb24ndCBuZWVkIHRvIHNhdmUgRlAgaGVyZS4KKyAgICB1c2VkQ2FsbGVlU2F2ZXMuZmls
dGVyKFJlZ2lzdGVyU2V0MTI4OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIHVzZWRDYWxs
ZWVTYXZlcy5maWx0ZXIoUmVnaXN0ZXJTZXQxMjg6OnVzZTEyOEJpdHMoY29kZS5tdXRhYmxlUmVn
cygpKSk7CisgICAgdXNlZENhbGxlZVNhdmVzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQxMjg6OnVzZTEy
OEJpdHMoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpKTsgLy8gV2UgZG9uJ3QgbmVlZCB0
byBzYXZlIEZQIGhlcmUuCiAKICAgICBpZiAoIXVzZWRDYWxsZWVTYXZlcy5udW1iZXJPZlNldFJl
Z2lzdGVycygpKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCBj
YWxsZWVTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJBdE9mZnNldExpc3QodXNlZENhbGxlZVNhdmVz
KTsKIAotICAgIHNpemVfdCBieXRlU2l6ZSA9IDA7Ci0gICAgZm9yIChjb25zdCBSZWdpc3RlckF0
T2Zmc2V0JiBlbnRyeSA6IGNhbGxlZVNhdmVSZWdpc3RlcnMpCi0gICAgICAgIGJ5dGVTaXplID0g
c3RkOjptYXgoc3RhdGljX2Nhc3Q8c2l6ZV90PigtZW50cnkub2Zmc2V0KCkpLCBieXRlU2l6ZSk7
Ci0KICAgICBjb2RlLnNldENhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgKICAgICAgICAg
V1RGTW92ZShjYWxsZWVTYXZlUmVnaXN0ZXJzKSwKLSAgICAgICAgY29kZS5hZGRTdGFja1Nsb3Qo
Ynl0ZVNpemUsIFN0YWNrU2xvdEtpbmQ6OkxvY2tlZCkpOworICAgICAgICBjb2RlLmFkZFN0YWNr
U2xvdChjYWxsZWVTYXZlUmVnaXN0ZXJzLmJ5dGVTaXplKCksIFN0YWNrU2xvdEtpbmQ6OkxvY2tl
ZCkpOwogfQogCiB9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVzLmgKaW5kZXggNTkw
MDM1M2VlYzVjLi4wMzU5MDBmNWUxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlySGFuZGxlQ2FsbGVlU2F2ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVzLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3Mg
Q29kZTsKIC8vIFdlIHNob3VsZCBtYWtlIHRoaXMgaW50ZXJhY3Qgd2l0aCB0aGUgY2xpZW50OiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNDU5CiAKIHZvaWQgaGFu
ZGxlQ2FsbGVlU2F2ZXMoQ29kZSYpOwotdm9pZCBoYW5kbGVDYWxsZWVTYXZlcyhDb2RlJiwgUmVn
aXN0ZXJTZXQpOwordm9pZCBoYW5kbGVDYWxsZWVTYXZlcyhDb2RlJiwgUmVnaXN0ZXJTZXQxMjgp
OwogCiB9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJIZWxwZXJzLmgKaW5kZXggOTA3MDQxM2NiZWRlLi5hYmQ3ZjA1NjU4NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySGVscGVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySGVscGVycy5oCkBAIC00Myw2ICs0
Myw4IEBAIGlubGluZSBBaXI6Ok9wY29kZSBtb3ZlRm9yVHlwZShUeXBlIHR5cGUpCiAgICAgICAg
IHJldHVybiBNb3ZlRmxvYXQ7CiAgICAgY2FzZSBEb3VibGU6CiAgICAgICAgIHJldHVybiBNb3Zl
RG91YmxlOworICAgIGNhc2UgVjEyODoKKyAgICAgICAgcmV0dXJuIE1vdmVWZWN0b3I7CiAgICAg
Y2FzZSBWb2lkOgogICAgIGNhc2UgVHVwbGU6CiAgICAgICAgIGJyZWFrOwpAQCAtNzcsNiArNzks
OCBAQCBpbmxpbmUgQWlyOjpPcGNvZGUgcmVsYXhlZE1vdmVGb3JUeXBlKFR5cGUgdHlwZSkKICAg
ICAgICAgcmV0dXJuIE1vdmVGbG9hdDsKICAgICBjYXNlIERvdWJsZToKICAgICAgICAgcmV0dXJu
IE1vdmVEb3VibGU7CisgICAgY2FzZSBWMTI4OgorICAgICAgICByZXR1cm4gTW92ZVZlY3RvcjsK
ICAgICBjYXNlIFZvaWQ6CiAgICAgY2FzZSBUdXBsZToKICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5oCmluZGV4IGU4MjU4MmJiNWVkMC4uYzVhY2E0ZjM1
MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaApAQCAtMTI4LDggKzEy
OCw4IEBAIHN0cnVjdCBJbnN0IHsKIAogICAgIC8vIFJlcG9ydHMgYW55IGFkZGl0aW9uYWwgcmVn
aXN0ZXJzIGNsb2JiZXJlZCBieSB0aGlzIG9wZXJhdGlvbi4gTm90ZSB0aGF0IGZvciBlZmZpY2ll
bmN5LAogICAgIC8vIGV4dHJhQ2xvYmJlcmVkUmVncygpIG9ubHkgd29ya3MgZm9yIHRoZSBQYXRj
aCBvcGNvZGUuCi0gICAgUmVnaXN0ZXJTZXQgZXh0cmFDbG9iYmVyZWRSZWdzKCk7Ci0gICAgUmVn
aXN0ZXJTZXQgZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoKTsKKyAgICBSZWdpc3RlclNldDEyOCBl
eHRyYUNsb2JiZXJlZFJlZ3MoKTsKKyAgICBSZWdpc3RlclNldDEyOCBleHRyYUVhcmx5Q2xvYmJl
cmVkUmVncygpOwogCiAgICAgLy8gSXRlcmF0ZSBvdmVyIGFsbCBEZWYncyB0aGF0IGhhcHBlbiBh
dCB0aGUgZW5kIG9mIGFuIGluc3RydWN0aW9uLiBZb3Ugc3VwcGx5IGEgcGFpcgogICAgIC8vIGlu
c3RydWN0aW9ucy4gVGhlIGluc3RydWN0aW9ucyBtdXN0IGFwcGVhciBuZXh0IHRvIGVhY2ggb3Ro
ZXIsIGluIHRoYXQgb3JkZXIsIGluIHNvbWUgYmFzaWMKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdHJ1
Y3QgSW5zdCB7CiAgICAgCiAgICAgLy8gVXNlIHRoaXMgdG8gcmVwb3J0IHdoaWNoIHJlZ2lzdGVy
cyBhcmUgbGl2ZS4gVGhpcyBzaG91bGQgYmUgZG9uZSBqdXN0IGJlZm9yZSBjb2RlZ2VuLiBOb3Rl
CiAgICAgLy8gdGhhdCBmb3IgZWZmaWNpZW5jeSwgcmVwb3J0VXNlZFJlZ2lzdGVycygpIG9ubHkg
d29ya3MgZm9yIHRoZSBQYXRjaCBvcGNvZGUuCi0gICAgdm9pZCByZXBvcnRVc2VkUmVnaXN0ZXJz
KGNvbnN0IFJlZ2lzdGVyU2V0Jik7CisgICAgdm9pZCByZXBvcnRVc2VkUmVnaXN0ZXJzKGNvbnN0
IFJlZ2lzdGVyU2V0MTI4Jik7CiAKICAgICAvLyBJcyB0aGlzIGluc3RydWN0aW9uIGluIG9uZSBv
ZiB0aGUgdmFsaWQgZm9ybXMgcmlnaHQgbm93PyBUaGlzIGZ1bmN0aW9uIGlzIGF1dG8tZ2VuZXJh
dGVkIGJ5CiAgICAgLy8gb3Bjb2RlX2dlbmVyYXRvci5yYi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaAppbmRleCA4MzViMTA1NGMxYWQuLmVhMDQ1Njk5
MzhjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMu
aApAQCAtNDQsMTMgKzQ0LDEzIEBAIHZvaWQgSW5zdDo6Zm9yRWFjaChjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQogICAgICAgICB9KTsKIH0KIAotaW5saW5lIFJlZ2lzdGVyU2V0IEluc3Q6OmV4dHJh
Q2xvYmJlcmVkUmVncygpCitpbmxpbmUgUmVnaXN0ZXJTZXQxMjggSW5zdDo6ZXh0cmFDbG9iYmVy
ZWRSZWdzKCkKIHsKICAgICBBU1NFUlQoa2luZC5vcGNvZGUgPT0gUGF0Y2gpOwogICAgIHJldHVy
biBhcmdzWzBdLnNwZWNpYWwoKS0+ZXh0cmFDbG9iYmVyZWRSZWdzKCp0aGlzKTsKIH0KIAotaW5s
aW5lIFJlZ2lzdGVyU2V0IEluc3Q6OmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKCkKK2lubGluZSBS
ZWdpc3RlclNldDEyOCBJbnN0OjpleHRyYUVhcmx5Q2xvYmJlcmVkUmVncygpCiB7CiAgICAgQVNT
RVJUKGtpbmQub3Bjb2RlID09IFBhdGNoKTsKICAgICByZXR1cm4gYXJnc1swXS5zcGVjaWFsKCkt
PmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKCp0aGlzKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBpbmxp
bmUgdm9pZCBJbnN0Ojpmb3JFYWNoRGVmV2l0aEV4dHJhQ2xvYmJlcmVkUmVncygKICAgICB9CiB9
CiAKLWlubGluZSB2b2lkIEluc3Q6OnJlcG9ydFVzZWRSZWdpc3RlcnMoY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMpCitpbmxpbmUgdm9pZCBJbnN0OjpyZXBvcnRVc2VkUmVnaXN0ZXJz
KGNvbnN0IFJlZ2lzdGVyU2V0MTI4JiB1c2VkUmVnaXN0ZXJzKQogewogICAgIEFTU0VSVChraW5k
Lm9wY29kZSA9PSBQYXRjaCk7CiAgICAgYXJnc1swXS5zcGVjaWFsKCktPnJlcG9ydFVzZWRSZWdp
c3RlcnMoKnRoaXMsIHVzZWRSZWdpc3RlcnMpOwpAQCAtMzQ5LDYgKzM0OSwxNiBAQCBpbmxpbmUg
Ym9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzY0VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKICAg
ICByZXR1cm4gaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKIH0KIAoraW5saW5l
IGJvb2wgaXNWZWN0b3JTd2l6emxlMlZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisjaWYgQ1BV
KEFSTTY0KQorICAgIHJldHVybiBpbnN0LmFyZ3NbMF0uZnByKCkgPT0gaW5zdC5hcmdzWzBdLmZw
cigpICsgMTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGluc3QpOworICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgorfQorCiB9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCmluZGV4IDIyMWFlNzNhMWNiNS4uOGE0ZGI2
ZGQxZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2Vy
QWZ0ZXJSZWdBbGxvYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJM
b3dlckFmdGVyUmVnQWxsb2MuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgbG93ZXJBZnRlclJl
Z0FsbG9jKENvZGUmIGNvZGUpCiAKICAgICBwYWRJbnRlcmZlcmVuY2UoY29kZSk7CiAKLSAgICBI
YXNoTWFwPEluc3QqLCBSZWdpc3RlclNldD4gdXNlZFJlZ2lzdGVyczsKKyAgICBIYXNoTWFwPElu
c3QqLCBSZWdpc3RlclNldDEyOD4gdXNlZFJlZ2lzdGVyczsKICAgICAKICAgICBSZWdMaXZlbmVz
cyBsaXZlbmVzcyhjb2RlKTsKICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogY29kZSkgewpA
QCAtODcsMTcgKzg3LDE1IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaW5zdEluZGV4ID0gYmxvY2stPnNpemUoKTsgaW5zdEluZGV4
LS07KSB7CiAgICAgICAgICAgICBJbnN0JiBpbnN0ID0gYmxvY2stPmF0KGluc3RJbmRleCk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKKyAgICAgICAgICAgIFJl
Z2lzdGVyU2V0MTI4IHNldDsKIAotICAgICAgICAgICAgaWYgKGlzUmVsZXZhbnQoaW5zdCkpIHsK
LSAgICAgICAgICAgICAgICBmb3IgKFJlZyByZWcgOiBsb2NhbENhbGMubGl2ZSgpKQotICAgICAg
ICAgICAgICAgICAgICBzZXQuc2V0KHJlZyk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoaXNSZWxldmFudChpbnN0KSkKKyAgICAgICAgICAgICAgICBzZXQgPSB7IGxvY2FsQ2FsYy5s
aXZlKCkgfTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbG9jYWxDYWxjLmV4ZWN1dGUoaW5z
dEluZGV4KTsKIAogICAgICAgICAgICAgaWYgKGlzUmVsZXZhbnQoaW5zdCkpCi0gICAgICAgICAg
ICAgICAgdXNlZFJlZ2lzdGVycy5hZGQoJmluc3QsIHNldCk7CisgICAgICAgICAgICAgICAgdXNl
ZFJlZ2lzdGVycy5zZXQoJmluc3QsIHNldCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0x
MTEsMTMgKzEwOSwxMyBAQCB2b2lkIGxvd2VyQWZ0ZXJSZWdBbGxvYyhDb2RlJiBjb2RlKQogICAg
IC8vIElmIHdlIHJ1biBhZnRlciBzdGFjayBhbGxvY2F0aW9uIHRoZW4gd2UgY2Fubm90IHVzZSB0
aG9zZSBjYWxsZWUgc2F2ZXMgdGhhdCBhcmVuJ3QgaW4KICAgICAvLyB0aGUgY2FsbGVlIHNhdmUg
bGlzdC4gTm90ZSB0aGF0IHdlIGFyZSBvbmx5IHJ1biBhZnRlciBzdGFjayBhbGxvY2F0aW9uIGlu
IC1PMSwgc28gdGhpcwogICAgIC8vIGtpbmQgb2Ygc2xvcCBpcyBPSy4KLSAgICBSZWdpc3RlclNl
dCBkaXNhbGxvd2VkQ2FsbGVlU2F2ZXM7CisgICAgUmVnaXN0ZXJTZXQxMjggZGlzYWxsb3dlZENh
bGxlZVNhdmVzOwogICAgIGlmIChjb2RlLnN0YWNrSXNBbGxvY2F0ZWQoKSkgewotICAgICAgICBk
aXNhbGxvd2VkQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygp
OworICAgICAgICBkaXNhbGxvd2VkQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDEyODo6Y2FsbGVl
U2F2ZVJlZ2lzdGVycygpOwogICAgICAgICBkaXNhbGxvd2VkQ2FsbGVlU2F2ZXMuZXhjbHVkZShj
b2RlLmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgfQogICAgIAotICAgIGF1dG8gZ2V0U2Ny
YXRjaGVzID0gWyZdIChSZWdpc3RlclNldCBzZXQsIEJhbmsgYmFuaykgLT4gc3RkOjphcnJheTxB
cmcsIDI+IHsKKyAgICBhdXRvIGdldFNjcmF0Y2hlcyA9IFsmXSAoUmVnaXN0ZXJTZXQxMjggc2V0
LCBCYW5rIGJhbmspIC0+IHN0ZDo6YXJyYXk8QXJnLCAyPiB7CiAgICAgICAgIHN0ZDo6YXJyYXk8
QXJnLCAyPiByZXN1bHQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyOyArK2kp
IHsKICAgICAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKQEAgLTEzMiw3ICsxMzAsNyBAQCB2
b2lkIGxvd2VyQWZ0ZXJSZWdBbGxvYyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgaWYgKCFmb3Vu
ZCkgewogICAgICAgICAgICAgICAgIFN0YWNrU2xvdComIHNsb3QgPSBzbG90c1tiYW5rXVtpXTsK
ICAgICAgICAgICAgICAgICBpZiAoIXNsb3QpCi0gICAgICAgICAgICAgICAgICAgIHNsb3QgPSBj
b2RlLmFkZFN0YWNrU2xvdChieXRlcyhjb25zZXJ2YXRpdmVXaWR0aChiYW5rKSksIFN0YWNrU2xv
dEtpbmQ6OlNwaWxsKTsKKyAgICAgICAgICAgICAgICAgICAgc2xvdCA9IGNvZGUuYWRkU3RhY2tT
bG90KGJ5dGVzRm9yV2lkdGgoY29uc2VydmF0aXZlV2lkdGgoYmFuaykpLCBTdGFja1Nsb3RLaW5k
OjpTcGlsbCk7CiAgICAgICAgICAgICAgICAgcmVzdWx0W2ldID0gQXJnOjpzdGFjayhzbG90c1ti
YW5rXVtpXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0Nyw3ICsxNDUsNyBAQCB2
b2lkIGxvd2VyQWZ0ZXJSZWdBbGxvYyhDb2RlJiBjb2RlKQogCiAgICAgICAgICAgICBzd2l0Y2gg
KGluc3Qua2luZC5vcGNvZGUpIHsKICAgICAgICAgICAgIGNhc2UgU2h1ZmZsZTogewotICAgICAg
ICAgICAgICAgIFJlZ2lzdGVyU2V0IHNldCA9IHVzZWRSZWdpc3RlcnMuZ2V0KCZpbnN0KTsKKyAg
ICAgICAgICAgICAgICBSZWdpc3RlclNldDEyOCBzZXQgPSB1c2VkUmVnaXN0ZXJzLmdldCgmaW5z
dCk7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFNodWZmbGVQYWlyPiBwYWlyczsKICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5zdC5hcmdzLnNpemUoKTsgaSArPSAz
KSB7CiAgICAgICAgICAgICAgICAgICAgIEFyZyBzcmMgPSBpbnN0LmFyZ3NbaSArIDBdOwpAQCAt
MTc4LDEzICsxNzYsMTMgQEAgdm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAg
ICAgICAgICAgICAgICBDQ2FsbFZhbHVlKiB2YWx1ZSA9IGluc3Qub3JpZ2luLT5hczxDQ2FsbFZh
bHVlPigpOwogICAgICAgICAgICAgICAgIEtpbmQgb2xkS2luZCA9IGluc3Qua2luZDsKIAotICAg
ICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGxpdmVSZWdzID0gdXNlZFJlZ2lzdGVycy5nZXQoJmlu
c3QpOwotICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHJlZ3NUb1NhdmUgPSBsaXZlUmVnczsK
LSAgICAgICAgICAgICAgICByZWdzVG9TYXZlLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNh
dmVSZWdpc3RlcnMoKSk7Ci0gICAgICAgICAgICAgICAgcmVnc1RvU2F2ZS5leGNsdWRlKFJlZ2lz
dGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKLSAgICAgICAgICAgICAgICByZWdzVG9TYXZlLmV4
Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisgICAgICAg
ICAgICAgICAgYXV0byBsaXZlUmVncyA9IHVzZWRSZWdpc3RlcnMuZ2V0KCZpbnN0KTsKKyAgICAg
ICAgICAgICAgICBhdXRvIHJlZ3NUb1NhdmUgPSBsaXZlUmVnczsKKyAgICAgICAgICAgICAgICBy
ZWdzVG9TYXZlLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQxMjg6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7
CisgICAgICAgICAgICAgICAgcmVnc1RvU2F2ZS5leGNsdWRlKFJlZ2lzdGVyU2V0MTI4Ojp1c2U2
NEJpdHMoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpKTsKKyAgICAgICAgICAgICAgICBy
ZWdzVG9TYXZlLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQxMjg6OnVzZTY0Qml0cyhSZWdpc3RlclNldDo6
cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKSk7CiAKLSAgICAgICAgICAgICAgICBSZWdpc3Rl
clNldCBwcmVVc2VkID0gbGl2ZVJlZ3M7CisgICAgICAgICAgICAgICAgYXV0byBwcmVVc2VkID0g
bGl2ZVJlZ3M7CiAgICAgICAgICAgICAgICAgVmVjdG9yPEFyZz4gZGVzdGluYXRpb25zID0gY29t
cHV0ZUNDYWxsaW5nQ29udmVudGlvbihjb2RlLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgVG1w
IHJlc3VsdCA9IGNDYWxsUmVzdWx0KHZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAgICAgIEFy
ZyBvcmlnaW5hbFJlc3VsdCA9IHJlc3VsdCA/IGluc3QuYXJnc1sxXSA6IEFyZygpOwpAQCAtMjEz
LDEzICsyMTEsMTMgQEAgdm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAgICAg
ICAgICAgICAgICBpZiAob3JpZ2luYWxSZXN1bHQuaXNSZWcoKSkKICAgICAgICAgICAgICAgICAg
ICAgcmVnc1RvU2F2ZS5jbGVhcihvcmlnaW5hbFJlc3VsdC5yZWcoKSk7CiAgICAgICAgICAgICAg
ICAgVmVjdG9yPFN0YWNrU2xvdCo+IHN0YWNrU2xvdHM7Ci0gICAgICAgICAgICAgICAgcmVnc1Rv
U2F2ZS5mb3JFYWNoKAotICAgICAgICAgICAgICAgICAgICBbJl0gKFJlZyByZWcpIHsKKyAgICAg
ICAgICAgICAgICByZWdzVG9TYXZlLmZvckVhY2hXaXRoV2lkdGgoCisgICAgICAgICAgICAgICAg
ICAgIFsmXSAoUmVnIHJlZywgSW5jbHVkZWRXaWR0aCBpbmNsdWRlZFdpZHRoKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBUbXAgdG1wKHJlZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBB
cmcgYXJnKHRtcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBXaWR0aCB3aWR0aCA9IGNvbnNl
cnZhdGl2ZVdpZHRoKGFyZy5iYW5rKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgV2lkdGgg
d2lkdGggPSBpbmNsdWRlZFJlZ2lzdGVyV2lkdGgoYXJnLmJhbmsoKSwgaW5jbHVkZWRXaWR0aCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBTdGFja1Nsb3QqIHN0YWNrU2xvdCA9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29kZS5hZGRTdGFja1Nsb3QoYnl0ZXMod2lkdGgpLCBTdGFj
a1Nsb3RLaW5kOjpTcGlsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS5hZGRT
dGFja1Nsb3QoYnl0ZXNGb3JXaWR0aCh3aWR0aCksIFN0YWNrU2xvdEtpbmQ6OlNwaWxsKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhaXJzLmFwcGVuZChTaHVmZmxlUGFpcihhcmcsIEFyZzo6
c3RhY2soc3RhY2tTbG90KSwgd2lkdGgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNr
U2xvdHMuYXBwZW5kKHN0YWNrU2xvdCk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwpAQCAtMjM3
LDExICsyMzUsMTEgQEAgdm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAgICAg
ICAgICAgICAgICAvLyBOb3cgd2UgbmVlZCB0byBlbWl0IGNvZGUgdG8gcmVzdG9yZSByZWdpc3Rl
cnMuCiAgICAgICAgICAgICAgICAgcGFpcnMuc2hyaW5rKDApOwogICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHN0YWNrU2xvdEluZGV4ID0gMDsKLSAgICAgICAgICAgICAgICByZWdzVG9TYXZlLmZv
ckVhY2goCi0gICAgICAgICAgICAgICAgICAgIFsmXSAoUmVnIHJlZykgeworICAgICAgICAgICAg
ICAgIHJlZ3NUb1NhdmUuZm9yRWFjaFdpdGhXaWR0aCgKKyAgICAgICAgICAgICAgICAgICAgWyZd
IChSZWcgcmVnLCBJbmNsdWRlZFdpZHRoIGluY2x1ZGVkV2lkdGgpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIFRtcCB0bXAocmVnKTsKICAgICAgICAgICAgICAgICAgICAgICAgIEFyZyBhcmco
dG1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFdpZHRoIHdpZHRoID0gY29uc2VydmF0aXZl
V2lkdGgoYXJnLmJhbmsoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBXaWR0aCB3aWR0aCA9
IGluY2x1ZGVkUmVnaXN0ZXJXaWR0aChhcmcuYmFuaygpLCBpbmNsdWRlZFdpZHRoKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIFN0YWNrU2xvdCogc3RhY2tTbG90ID0gc3RhY2tTbG90c1tzdGFj
a1Nsb3RJbmRleCsrXTsKICAgICAgICAgICAgICAgICAgICAgICAgIHBhaXJzLmFwcGVuZChTaHVm
ZmxlUGFpcihBcmc6OnN0YWNrKHN0YWNrU2xvdCksIGFyZywgd2lkdGgpKTsKICAgICAgICAgICAg
ICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckxvd2VyTWFjcm9zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJN
YWNyb3MuY3BwCmluZGV4IDg1MTgwZTMyNTY1Mi4uZjBhYzY4NGExYzA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyTWFjcm9zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyTWFjcm9zLmNwcApAQCAtMTE0LDcgKzEx
NCwyMDcgQEAgdm9pZCBsb3dlck1hY3JvcyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAgIGNh
c2UgSW50NjQ6CiAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnQoaW5zdElu
ZGV4ICsgMSwgTW92ZSwgdmFsdWUsIHJlc3VsdCwgcmVzdWx0RHN0KTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBWMTI4OgorICAgICAgICAgICAgICAg
ICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCArIDEsIE1vdmVWZWN0b3IsIHZhbHVl
LCByZXN1bHQsIHJlc3VsdERzdCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGF1dG8gaGFuZGxlVmVj
dG9yTXVsID0gWyZdIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzQVJNNjQoKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgVG1wIGxocyA9IGluc3QuYXJn
c1sxXS50bXAoKTsKKyAgICAgICAgICAgICAgICBUbXAgcmhzID0gaW5zdC5hcmdzWzJdLnRtcCgp
OworICAgICAgICAgICAgICAgIFRtcCBkc3QgPSBpbnN0LmFyZ3NbM10udG1wKCk7CisgICAgICAg
ICAgICAgICAgYXV0byogb3JpZ2luID0gaW5zdC5vcmlnaW47CisKKyAgICAgICAgICAgICAgICBU
bXAgbGhzTG93ZXIgPSBjb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICAgICAgVG1wIGxoc1Vw
cGVyID0gY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgICAgIFRtcCByaHNMb3dlciA9IGNv
ZGUubmV3VG1wKEdQKTsKKyAgICAgICAgICAgICAgICBUbXAgcmhzVXBwZXIgPSBjb2RlLm5ld1Rt
cChHUCk7CisKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCwg
VmVjdG9yRXh0cmFjdExhbmVJbnQ2NCwgb3JpZ2luLCBBcmc6OmltbSgwKSwgbGhzLCBsaHNMb3dl
cik7CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5kZXgsIFZlY3Rv
ckV4dHJhY3RMYW5lSW50NjQsIG9yaWdpbiwgQXJnOjppbW0oMSksIGxocywgbGhzVXBwZXIpOwor
ICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnQoaW5zdEluZGV4LCBWZWN0b3JFeHRy
YWN0TGFuZUludDY0LCBvcmlnaW4sIEFyZzo6aW1tKDApLCByaHMsIHJoc0xvd2VyKTsKKyAgICAg
ICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCwgVmVjdG9yRXh0cmFjdExh
bmVJbnQ2NCwgb3JpZ2luLCBBcmc6OmltbSgxKSwgcmhzLCByaHNVcHBlcik7CisKKyAgICAgICAg
ICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCwgTXVsNjQsIG9yaWdpbiwgbGhz
TG93ZXIsIHJoc0xvd2VyKTsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGlu
c3RJbmRleCwgTXVsNjQsIG9yaWdpbiwgbGhzVXBwZXIsIHJoc1VwcGVyKTsKKyAgICAgICAgICAg
ICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCwgVmVjdG9yUmVwbGFjZUxhbmVJbnQ2
NCwgb3JpZ2luLCBBcmc6OmltbSgwKSwgcmhzTG93ZXIsIGRzdCk7CisgICAgICAgICAgICAgICAg
aW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5kZXgsIFZlY3RvclJlcGxhY2VMYW5lSW50NjQsIG9y
aWdpbiwgQXJnOjppbW0oMSksIHJoc1VwcGVyLCBkc3QpOworCisgICAgICAgICAgICAgICAgaW5z
dCA9IEluc3QoKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGF1dG8gaGFuZGxlVmVj
dG9yRXh0YWRkID0gWyZdIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzQVJNNjQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgVG1wIHZlYyA9IGluc3Qu
YXJnc1swXS50bXAoKTsKKyAgICAgICAgICAgICAgICBUbXAgZHN0ID0gaW5zdC5hcmdzWzFdLnRt
cCgpOworICAgICAgICAgICAgICAgIGF1dG8qIG9yaWdpbiA9IGluc3Qub3JpZ2luOworCisgICAg
ICAgICAgICAgICAgVG1wIGxvd2VyID0gY29kZS5uZXdUbXAoRlApOworICAgICAgICAgICAgICAg
IFRtcCB1cHBlciA9IGNvZGUubmV3VG1wKEZQKTsKKworICAgICAgICAgICAgICAgIGluc2VydGlv
blNldC5pbnNlcnQoaW5zdEluZGV4LCBWZWN0b3JFeHRlbmRMb3csIG9yaWdpbiwgdmVjLCBsb3dl
cik7CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5kZXgsIFZlY3Rv
ckV4dGVuZExvdywgb3JpZ2luLCB2ZWMsIHVwcGVyKTsKKyAgICAgICAgICAgICAgICBpbnNlcnRp
b25TZXQuaW5zZXJ0KGluc3RJbmRleCwgVmVjdG9yQWRkUGFpcndpc2UsIG9yaWdpbiwgbG93ZXIs
IHVwcGVyLCBkc3QpOworCisgICAgICAgICAgICAgICAgaW5zdCA9IEluc3QoKTsKKyAgICAgICAg
ICAgIH07CisKKyAgICAgICAgICAgIGF1dG8gaGFuZGxlVmVjdG9yQWxsVHJ1ZSA9IFsmXSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFpc0FSTTY0KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgICAgIFNpbWRJbmZvIHNpbWRJbmZvID0gaW5zdC5hcmdzWzBdLnNp
bWRJbmZvKCk7CisgICAgICAgICAgICAgICAgVG1wIHZlYyA9IGluc3QuYXJnc1sxXS50bXAoKTsK
KyAgICAgICAgICAgICAgICBUbXAgZHN0ID0gaW5zdC5hcmdzWzJdLnRtcCgpOworICAgICAgICAg
ICAgICAgIGF1dG8qIG9yaWdpbiA9IGluc3Qub3JpZ2luOworCisgICAgICAgICAgICAgICAgQVNT
RVJUKHNjYWxhclR5cGVJc0ludGVncmFsKHNpbWRJbmZvLmxhbmUpKTsKKyAgICAgICAgICAgICAg
ICBzd2l0Y2goc2ltZEluZm8ubGFuZSkgeworICAgICAgICAgICAgICAgIGNhc2UgU2ltZExhbmU6
Omk2NHgyOgorICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRl
eCwgQ29tcGFyZUludGVnZXJWZWN0b3JXaXRoWmVybywgb3JpZ2luLCBBcmc6OnJlbENvbmQoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSwgQXJnOjpzaW1kSW5mbyhzaW1kSW5mbyksIHZlYywgdmVj
KTsKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5kZXgsIFZl
Y3RvclVuc2lnbmVkTWluLCBvcmlnaW4sIEFyZzo6c2ltZEluZm8oeyBTaW1kTGFuZTo6aTMyeDQs
IFNpbWRTaWduTW9kZTo6Tm9uZSB9KSwgdmVjLCB2ZWMpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNpbWRMYW5lOjppMzJ4NDoKKyAgICAgICAgICAg
ICAgICBjYXNlIFNpbWRMYW5lOjppMTZ4ODoKKyAgICAgICAgICAgICAgICBjYXNlIFNpbWRMYW5l
OjppOHgxNjoKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5k
ZXgsIFZlY3RvclVuc2lnbmVkTWluLCBvcmlnaW4sIEFyZzo6c2ltZEluZm8oc2ltZEluZm8pLCB2
ZWMsIHZlYyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2Vy
dChpbnN0SW5kZXgsIE1vdmVGbG9hdFRvMzIsIG9yaWdpbiwgdmVjLCBkc3QpOyAvLyBvb3BzOiB0
aGlzIHN1Y2tzCisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5kZXgs
IENvbXBhcmUzMiwgb3JpZ2luLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
KSwgZHN0LCBBcmc6OmltbSgwKSwgZHN0KTsKKworICAgICAgICAgICAgICAgIGluc3QgPSBJbnN0
KCk7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBhdXRvIGhhbmRsZVZlY3RvckFueVRy
dWUgPSBbJl0geworICAgICAgICAgICAgICAgIGlmICghaXNBUk02NCgpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBTaW1kSW5mbyBzaW1kSW5mbyA9IGlu
c3QuYXJnc1swXS5zaW1kSW5mbygpOworICAgICAgICAgICAgICAgIFRtcCB2ZWMgPSBpbnN0LmFy
Z3NbMV0udG1wKCk7CisgICAgICAgICAgICAgICAgVG1wIGRzdCA9IGluc3QuYXJnc1syXS50bXAo
KTsKKyAgICAgICAgICAgICAgICBhdXRvKiBvcmlnaW4gPSBpbnN0Lm9yaWdpbjsKKworICAgICAg
ICAgICAgICAgIEFTU0VSVChzY2FsYXJUeXBlSXNJbnRlZ3JhbChzaW1kSW5mby5sYW5lKSk7Cisg
ICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5kZXgsIFZlY3RvclVuc2ln
bmVkTWF4LCBvcmlnaW4sIEFyZzo6c2ltZEluZm8oeyBTaW1kTGFuZTo6aTMyeDQsIFNpbWRTaWdu
TW9kZTo6Tm9uZSB9KSwgdmVjLCB2ZWMpOworICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5p
bnNlcnQoaW5zdEluZGV4LCBNb3ZlRmxvYXRUbzMyLCBvcmlnaW4sIHZlYywgZHN0KTsgLy8gb29w
czogdGhpcyBzdWNrcworICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnQoaW5zdElu
ZGV4LCBDb21wYXJlMzIsIG9yaWdpbiwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCksIGRzdCwgQXJnOjppbW0oMCksIGRzdCk7CisKKyAgICAgICAgICAgICAgICBpbnN0ID0g
SW5zdCgpOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgYXV0byBoYW5kbGVWZWN0b3JT
aHVmZmxlID0gWyZdIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzQVJNNjQoKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisjaWYgQ1BVKEFSTTY0KQorICAgICAgICAgICAgICAgIFRt
cCBuKEFSTTY0UmVnaXN0ZXJzOjpxMCk7CisgICAgICAgICAgICAgICAgVG1wIG4yKEFSTTY0UmVn
aXN0ZXJzOjpxMSk7CisjZWxzZQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisjZW5kaWYKKworICAgICAgICAgICAgICAgIHYxMjhfdCBpbW07CisgICAgICAg
ICAgICAgICAgaW1tLnU2NHgyWzBdID0gaW5zdC5hcmdzWzBdLnZhbHVlKCk7CisgICAgICAgICAg
ICAgICAgaW1tLnU2NHgyWzFdID0gaW5zdC5hcmdzWzFdLnZhbHVlKCk7CisgICAgICAgICAgICAg
ICAgVG1wIGEgPSBpbnN0LmFyZ3NbMl0udG1wKCk7CisgICAgICAgICAgICAgICAgVG1wIGIgPSBp
bnN0LmFyZ3NbM10udG1wKCk7CisgICAgICAgICAgICAgICAgVG1wIGRzdCA9IGluc3QuYXJnc1s0
XS50bXAoKTsKKyAgICAgICAgICAgICAgICBhdXRvKiBvcmlnaW4gPSBpbnN0Lm9yaWdpbjsKKwor
ICAgICAgICAgICAgICAgIC8vIE9PUFM6IHRoaXMgaXMgdmVyeSBiYWQKKyAgICAgICAgICAgICAg
ICBhdXRvIGNvbnRyb2wgPSBjb2RlLm5ld1RtcChGUCk7CisgICAgICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0Lmluc2VydChpbnN0SW5kZXgsIE1vdmVWZWN0b3IsIG9yaWdpbiwgYSwgbik7CisgICAg
ICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5kZXgsIE1vdmVWZWN0b3IsIG9y
aWdpbiwgYiwgbjIpOworCisgICAgICAgICAgICAgICAgLy8gT09QUzogdGhpcyBpcyBiYWQsIHdl
IHNob3VsZCBsb2FkCisgICAgICAgICAgICAgICAgYXV0byBncFRtcCA9IGNvZGUubmV3VG1wKEdQ
KTsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCwgTW92ZSwg
b3JpZ2luLCBBcmc6OmJpZ0ltbShpbW0udTY0eDJbMF0pLCBncFRtcCk7CisgICAgICAgICAgICAg
ICAgaW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5kZXgsIFZlY3RvclJlcGxhY2VMYW5lSW50NjQs
IG9yaWdpbiwgQXJnOjppbW0oMCksIGdwVG1wLCBjb250cm9sKTsKKyAgICAgICAgICAgICAgICBp
bnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCwgTW92ZSwgb3JpZ2luLCBBcmc6OmJpZ0ltbShp
bW0udTY0eDJbMV0pLCBncFRtcCk7CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2Vy
dChpbnN0SW5kZXgsIFZlY3RvclJlcGxhY2VMYW5lSW50NjQsIG9yaWdpbiwgQXJnOjppbW0oMSks
IGdwVG1wLCBjb250cm9sKTsKKworICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnQo
aW5zdEluZGV4LCBWZWN0b3JTd2l6emxlMiwgb3JpZ2luLCBuLCBuMiwgY29udHJvbCwgZHN0KTsK
KyAgICAgICAgICAgICAgICBpbnN0ID0gSW5zdCgpOworICAgICAgICAgICAgfTsKKworICAgICAg
ICAgICAgYXV0byBoYW5kbGVWZWN0b3JCaXRtYXNrID0gWyZdIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIWlzQVJNNjQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICAgICAgU2ltZEluZm8gc2ltZEluZm8gPSBpbnN0LmFyZ3NbMF0uc2ltZEluZm8oKTsKKyAgICAg
ICAgICAgICAgICBUbXAgdmVjdG9yID0gaW5zdC5hcmdzWzFdLnRtcCgpOworICAgICAgICAgICAg
ICAgIFRtcCBkc3QgPSBpbnN0LmFyZ3NbMl0udG1wKCk7CisgICAgICAgICAgICAgICAgYXV0byog
b3JpZ2luID0gaW5zdC5vcmlnaW47CisKKyAgICAgICAgICAgICAgICBpZiAoc2ltZEluZm8ubGFu
ZSA9PSBTaW1kTGFuZTo6aTY0eDIpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVG1wIGxvd2Vy
ID0gY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgICAgICAgICAvLyBUbXAgdXBwZXIgPSBj
b2RlLm5ld1RtcChHUCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5zZXJ0aW9uU2V0Lmlu
c2VydChpbnN0SW5kZXgsIFZlY3RvckV4dHJhY3RMYW5lSW50NjQsIG9yaWdpbiwgQXJnOjppbW0o
MCksIHZlY3RvciwgbG93ZXIpOworICAgICAgICAgICAgICAgICAgICAvLyBpbnNlcnRpb25TZXQu
aW5zZXJ0KGluc3RJbmRleCwgVmVjdG9yRXh0cmFjdExhbmVJbnQ2NCwgb3JpZ2luLCBBcmc6Omlt
bSgxKSwgdmVjdG9yLCB1cHBlcik7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5zZXJ0aW9u
U2V0Lmluc2VydChpbnN0SW5kZXgsIFJzaGlmdDY0LCBvcmlnaW4sIGxvd2VyLCBBcmc6OmltbSg2
MyksIGxvd2VyKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5zZXJ0aW9uU2V0Lmluc2VydChp
bnN0SW5kZXgsIEFuZDY0LCBvcmlnaW4sIGxvd2VyLCBBcmc6OmltbSgwYjAxKSwgbG93ZXIpOwor
ICAgICAgICAgICAgICAgICAgICAvLyBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCwgUnNo
aWZ0NjQsIG9yaWdpbiwgdXBwZXIsIEFyZzo6aW1tKDYzKSwgdXBwZXIpOworICAgICAgICAgICAg
ICAgICAgICAvLyBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCwgQW5kNjQsIG9yaWdpbiwg
dXBwZXIsIEFyZzo6aW1tKDBiMTApLCB1cHBlcik7CisgICAgICAgICAgICAgICAgICAgIC8vIGlu
c2VydGlvblNldC5pbnNlcnQoaW5zdEluZGV4LCBPcjY0LCBvcmlnaW4sIHVwcGVyLCBsb3dlciwg
ZHN0KTsKKyAgICAgICAgICAgICAgICAgICAgVG1wIHZlY3RvclRtcCA9IGNvZGUubmV3VG1wKEZQ
KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBtaWdodCBsb29rIGJhZCwgYnV0IHJlbWVt
YmVyOiBldmVyeSBiaXQgd2UgZGVzdHJveSBjb250cmlidXRlcyB0byB0aGUgaGVhdCBkZWF0aCBv
ZiB0aGUgdW5pdmVyc2UuCisgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnQo
aW5zdEluZGV4LCBWZWN0b3JTc2hyLCBvcmlnaW4sIEFyZzo6c2ltZEluZm8oeyBTaW1kTGFuZTo6
djEyOCwgU2ltZFNpZ25Nb2RlOjpOb25lIH0pLCB2ZWN0b3IsIEFyZzo6aW1tKDYzKSwgdmVjdG9y
VG1wKTsKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5kZXgs
IE1vdmVGbG9hdFRvMzIsIG9yaWdpbiwgdmVjdG9yVG1wLCBkc3QpOworICAgICAgICAgICAgICAg
ICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCwgQW5kMzIsIG9yaWdpbiwgQXJnOjpi
aXRJbW0oMGIxMSksIGRzdCwgZHN0KTsKKyAgICAgICAgICAgICAgICAgICAgaW5zdCA9IEluc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIFRtcCBtYXNrVG1wID0gY29kZS5uZXdUbXAoRlApOworCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICB2MTI4X3QgdG93ZXJPZlBvd2VyOworICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKHNpbWRJbmZvLmxhbmUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBTaW1kTGFuZTo6aTMyeDQ6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgNDsgKytpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRv
d2VyT2ZQb3dlci51MzJ4NFtpXSA9IDEgPDwgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIFNpbWRMYW5lOjppMTZ4ODoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA4OyArK2kpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdG93ZXJPZlBvd2VyLnUxNng4W2ldID0gMSA8PCBpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU2lt
ZExhbmU6Omk4eDE2OgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IDE2OyArK2kpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG93ZXJPZlBvd2Vy
LnU4eDE2W2ldID0gMSA8PCBpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAgICAgLy8gT09QUzogdGhpcyBpcyBiYWQsIHdlIHNob3VsZCBsb2FkCisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gZ3BUbXAgPSBjb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICAg
ICAgICAgIGluc2VydGlvblNldC5pbnNlcnQoaW5zdEluZGV4LCBNb3ZlLCBvcmlnaW4sIEFyZzo6
YmlnSW1tKHRvd2VyT2ZQb3dlci51NjR4MlswXSksIGdwVG1wKTsKKyAgICAgICAgICAgICAgICAg
ICAgaW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5kZXgsIFZlY3RvclJlcGxhY2VMYW5lSW50NjQs
IG9yaWdpbiwgQXJnOjppbW0oMCksIGdwVG1wLCBtYXNrVG1wKTsKKyAgICAgICAgICAgICAgICAg
ICAgaW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5kZXgsIE1vdmUsIG9yaWdpbiwgQXJnOjpiaWdJ
bW0odG93ZXJPZlBvd2VyLnU2NHgyWzFdKSwgZ3BUbXApOworICAgICAgICAgICAgICAgICAgICBp
bnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCwgVmVjdG9yUmVwbGFjZUxhbmVJbnQ2NCwgb3Jp
Z2luLCBBcmc6OmltbSgxKSwgZ3BUbXAsIG1hc2tUbXApOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIFRtcCB2ZWN0b3JUbXAgPSBjb2RlLm5ld1RtcChGUCk7CisKKyAgICAg
ICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCwgVmVjdG9yU3Nociwgb3Jp
Z2luLCBBcmc6OnNpbWRJbmZvKHNpbWRJbmZvKSwgdmVjdG9yLCBBcmc6OmltbShlbGVtZW50Qnl0
ZVNpemUoc2ltZEluZm8ubGFuZSkgKiA4IC0gMSksIHZlY3RvclRtcCk7CisgICAgICAgICAgICAg
ICAgaW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5kZXgsIFZlY3RvckFuZCwgb3JpZ2luLCBBcmc6
OnNpbWRJbmZvKHNpbWRJbmZvKSwgdmVjdG9yLCBtYXNrVG1wLCB2ZWN0b3JUbXApOworCisgICAg
ICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5kZXgsIFZlY3Rvckhvcml6b250
YWxBZGQsIG9yaWdpbiwgQXJnOjpzaW1kSW5mbyhzaW1kSW5mbyksIHZlY3RvclRtcCwgdmVjdG9y
VG1wKTsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCwgTW92
ZUZsb2F0VG8zMiwgb3JpZ2luLCB2ZWN0b3JUbXAsIGRzdCk7CisKKyAgICAgICAgICAgICAgICBp
bnN0ID0gSW5zdCgpOwogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgc3dpdGNoIChpbnN0
LmtpbmQub3Bjb2RlKSB7CkBAIC0xMjcsNiArMzI3LDMwIEBAIHZvaWQgbG93ZXJNYWNyb3MoQ29k
ZSYgY29kZSkKICAgICAgICAgICAgICAgICBoYW5kbGVDYWxsKCk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yQWxsVHJ1ZToKKyAgICAgICAgICAgICAg
ICBoYW5kbGVWZWN0b3JBbGxUcnVlKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yQW55VHJ1ZToKKyAgICAgICAgICAgICAgICBo
YW5kbGVWZWN0b3JBbnlUcnVlKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgIGNhc2UgVmVjdG9yTXVsOgorICAgICAgICAgICAgICAgIGhhbmRsZVZlY3Rvck11bCgpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFZlY3RvckJpdG1hc2s6
CisgICAgICAgICAgICAgICAgaGFuZGxlVmVjdG9yQml0bWFzaygpOworICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFZlY3RvclNodWZmbGU6CisgICAgICAgICAgICAg
ICAgaGFuZGxlVmVjdG9yU2h1ZmZsZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBjYXNlIFZlY3RvckV4dGFkZFBhaXJ3aXNlOgorICAgICAgICAg
ICAgICAgIGhhbmRsZVZlY3RvckV4dGFkZCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworCiAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlclN0YWNr
QXJncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyU3RhY2tBcmdz
LmNwcAppbmRleCAwNTZiM2NhNTE0NWUuLjBlMWVmNGY3YTUxMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlclN0YWNrQXJncy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlclN0YWNrQXJncy5jcHAKQEAgLTI1LDYgKzI1
LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFpckxvd2VyU3RhY2tBcmdz
LmgiCisjaW5jbHVkZSAiYjMvQjNXaWR0aC5oIgogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIApAQCAt
NDgsNyArNDksNyBAQCB2b2lkIGxvd2VyU3RhY2tBcmdzKENvZGUmIGNvZGUpCiAgICAgICAgICAg
ICAgICAgICAgIC8vIHN1Y2ggYW4gYXdlc29tZSBhc3N1bXB0aW9uLgogICAgICAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MDQ1NAogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYXJnLm9mZnNldCgpID49IDApOwotICAg
ICAgICAgICAgICAgICAgICBjb2RlLnJlcXVlc3RDYWxsQXJnQXJlYVNpemVJbkJ5dGVzKGFyZy5v
ZmZzZXQoKSArIDgpOworICAgICAgICAgICAgICAgICAgICBjb2RlLnJlcXVlc3RDYWxsQXJnQXJl
YVNpemVJbkJ5dGVzKGFyZy5vZmZzZXQoKSArIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2
YXRpdmVXaWR0aEZvckMoYXJnLmJhbmsoKSkpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KQEAgLTE1MCw3ICsxNTEsNyBAQCB2b2lkIGxvd2VyU3RhY2tBcmdz
KENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBTdGFja1Nsb3QqIHNsb3QgPSBh
cmcuc3RhY2tTbG90KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJnOjppc1pEZWYo
cm9sZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzbG90LT5raW5kKCkgPT0gU3Rh
Y2tTbG90S2luZDo6U3BpbGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzbG90LT5i
eXRlU2l6ZSgpID4gYnl0ZXMod2lkdGgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JiYgc2xvdC0+Ynl0ZVNpemUoKSA+IGJ5dGVzRm9yV2lkdGgod2lkdGgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgaGFuZGxlIHRoaXMgc2ltcGxl
IGNhc2UgYmVjYXVzZSBpdCdzIHRoZSBvbmx5IG9uZQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHRoYXQgYXJpc2VzOiBaRGVmJ3MgYXJlIG9ubHkgMzItYml0IHJpZ2h0IG5vdy4gU28s
IHdoZW4gd2UgaGl0IHRoZXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzZXJ0
aW9ucyBpdCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gaW1wbGVtZW50IHRob3NlIG90aGVyIGtpbmRz
IG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5v
cGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwpp
bmRleCA4NGZiZTEyODlmMzQuLjQ1YzY0Njg3ZmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCkBAIC0xMDcsNiArMTA3LDggQEAKIAogTm9w
CiAKK0JyZWFrcG9pbnQgL2VmZmVjdHMKKwogQWRkMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIK
ICAgICBJbW0sIFRtcCwgVG1wCiAgICAgVG1wLCBUbXAsIFRtcApAQCAtNzQwLDYgKzc0MiwxMyBA
QCBNb3ZlRG91YmxlIFU6Rjo2NCwgRDpGOjY0CiAKIE1vdmVEb3VibGUgVTpGOjY0LCBEOkY6NjQs
IFM6Rjo2NAogICAgIEFkZHIsIEFkZHIsIFRtcAorICAgIAorTW92ZVZlY3RvciBVOkY6MTI4LCBE
OkY6MTI4CisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAgYXMgbG9hZFZlY3RvcgorICAgIElu
ZGV4LCBUbXAgYXMgbG9hZFZlY3RvcgorICAgIFRtcCwgQWRkciBhcyBzdG9yZVZlY3RvcgorICAg
IFRtcCwgSW5kZXggYXMgc3RvcmVWZWN0b3IKIAogTW92ZVplcm9Ub0RvdWJsZSBEOkY6NjQKICAg
ICBUbXAKQEAgLTE2MTUsNiArMTYyNCwyMjkgQEAgUmV0RmxvYXQgVTpGOjMyIC9yZXR1cm4KIFJl
dERvdWJsZSBVOkY6NjQgL3JldHVybgogICAgIFRtcAogCisjIFNJTUQKK1ZlY3RvclJlcGxhY2VM
YW5lSW50NjQgVTpHOjgsIFU6Rzo2NCwgVUQ6RjoxMjgKKyAgICBJbW0sIFRtcCwgVG1wCitWZWN0
b3JSZXBsYWNlTGFuZUludDMyIFU6Rzo4LCBVOkc6MzIsIFVEOkY6MTI4CisgICAgSW1tLCBUbXAs
IFRtcAorVmVjdG9yUmVwbGFjZUxhbmVJbnQxNiBVOkc6OCwgVTpHOjE2LCBVRDpGOjEyOAorICAg
IEltbSwgVG1wLCBUbXAKK1ZlY3RvclJlcGxhY2VMYW5lSW50OCBVOkc6OCwgVTpHOjgsIFVEOkY6
MTI4CisgICAgSW1tLCBUbXAsIFRtcAorVmVjdG9yUmVwbGFjZUxhbmVGbG9hdDY0IFU6Rzo4LCBV
OkY6NjQsIFVEOkY6MTI4CisgICAgSW1tLCBUbXAsIFRtcAorVmVjdG9yUmVwbGFjZUxhbmVGbG9h
dDMyIFU6Rzo4LCBVOkY6MzIsIFVEOkY6MTI4CisgICAgSW1tLCBUbXAsIFRtcAorCitWZWN0b3JF
eHRyYWN0TGFuZUludDY0IFU6Rzo4LCBVOkY6MTI4LCBEOkc6NjQKKyAgICBJbW0sIFRtcCwgVG1w
CitWZWN0b3JFeHRyYWN0TGFuZUludDMyIFU6Rzo4LCBVOkY6MTI4LCBaRDpHOjMyCisgICAgSW1t
LCBUbXAsIFRtcAorVmVjdG9yRXh0cmFjdExhbmVTaWduZWRJbnQxNiBVOkc6OCwgVTpGOjEyOCwg
WkQ6RzozMgorICAgIEltbSwgVG1wLCBUbXAKK1ZlY3RvckV4dHJhY3RMYW5lVW5zaWduZWRJbnQx
NiBVOkc6OCwgVTpGOjEyOCwgWkQ6RzoxNgorICAgIEltbSwgVG1wLCBUbXAKK1ZlY3RvckV4dHJh
Y3RMYW5lU2lnbmVkSW50OCBVOkc6OCwgVTpGOjEyOCwgWkQ6RzozMgorICAgIEltbSwgVG1wLCBU
bXAKK1ZlY3RvckV4dHJhY3RMYW5lVW5zaWduZWRJbnQ4IFU6Rzo4LCBVOkY6MTI4LCBaRDpHOjgK
KyAgICBJbW0sIFRtcCwgVG1wCitWZWN0b3JFeHRyYWN0TGFuZUZsb2F0NjQgVTpHOjgsIFU6Rjox
MjgsIEQ6Rjo2NAorICAgIEltbSwgVG1wLCBUbXAKK1ZlY3RvckV4dHJhY3RMYW5lRmxvYXQzMiBV
Okc6OCwgVTpGOjEyOCwgRDpGOjMyCisgICAgSW1tLCBUbXAsIFRtcAorCitWZWN0b3JTcGxhdDgg
VTpHOjgsIEQ6RjoxMjgKKyAgICBUbXAsIFRtcAorVmVjdG9yU3BsYXQxNiBVOkc6MTYsIEQ6Rjox
MjgKKyAgICBUbXAsIFRtcAorVmVjdG9yU3BsYXQzMiBVOkc6MzIsIEQ6RjoxMjgKKyAgICBUbXAs
IFRtcAorVmVjdG9yU3BsYXQ2NCBVOkc6NjQsIEQ6RjoxMjgKKyAgICBUbXAsIFRtcAorCitDb21w
YXJlRmxvYXRpbmdQb2ludFZlY3RvciBVOkc6MzIsIFU6RzpQdHIsIFU6RjoxMjgsIFU6RjoxMjgs
IEQ6RjoxMjgKKyAgICBEb3VibGVDb25kLCBTaW1kSW5mbywgVG1wLCBUbXAsIFRtcAorCitDb21w
YXJlSW50ZWdlclZlY3RvciBVOkc6MzIsIFU6RzpQdHIsIFU6RjoxMjgsIFU6RjoxMjgsIEQ6Rjox
MjgKKyAgICBSZWxDb25kLCBTaW1kSW5mbywgVG1wLCBUbXAsIFRtcAorCitDb21wYXJlSW50ZWdl
clZlY3RvcldpdGhaZXJvIFU6RzozMiwgVTpHOlB0ciwgVTpGOjEyOCwgRDpGOjEyOAorICAgIFJl
bENvbmQsIFNpbWRJbmZvLCBUbXAsIFRtcAorCithcm02NDogVmVjdG9yVW5zaWduZWRNYXggVTpH
OlB0ciwgVTpGOjEyOCwgRDpGOjEyOAorICAgIFNpbWRJbmZvLCBUbXAsIFRtcAorCithcm02NDog
VmVjdG9yVW5zaWduZWRNaW4gVTpHOlB0ciwgVTpGOjEyOCwgRDpGOjEyOAorICAgIFNpbWRJbmZv
LCBUbXAsIFRtcAorCitWZWN0b3JBZGQgVTpHOlB0ciwgVTpGOjEyOCwgVTpGOjEyOCwgRDpGOjEy
OAorICAgIFNpbWRJbmZvLCBUbXAsIFRtcCwgVG1wCisKK1ZlY3RvclN1YiBVOkc6UHRyLCBVOkY6
MTI4LCBVOkY6MTI4LCBEOkY6MTI4CisgICAgU2ltZEluZm8sIFRtcCwgVG1wLCBUbXAKKworVmVj
dG9yQWRkU2F0IFU6RzpQdHIsIFU6RjoxMjgsIFU6RjoxMjgsIEQ6RjoxMjgKKyAgICBTaW1kSW5m
bywgVG1wLCBUbXAsIFRtcAorCitWZWN0b3JTdWJTYXQgVTpHOlB0ciwgVTpGOjEyOCwgVTpGOjEy
OCwgRDpGOjEyOAorICAgIFNpbWRJbmZvLCBUbXAsIFRtcCwgVG1wCisKK1ZlY3Rvck11bCBVOkc6
UHRyLCBVOkY6MTI4LCBVOkY6MTI4LCBEOkY6MTI4CisgICAgU2ltZEluZm8sIFRtcCwgVG1wLCBU
bXAKKworVmVjdG9yRGl2IFU6RzpQdHIsIFU6RjoxMjgsIFU6RjoxMjgsIEQ6RjoxMjgKKyAgICBT
aW1kSW5mbywgVG1wLCBUbXAsIFRtcAorCitWZWN0b3JNaW4gVTpHOlB0ciwgVTpGOjEyOCwgVTpG
OjEyOCwgRDpGOjEyOAorICAgIFNpbWRJbmZvLCBUbXAsIFRtcCwgVG1wCisKK1ZlY3Rvck1heCBV
Okc6UHRyLCBVOkY6MTI4LCBVOkY6MTI4LCBEOkY6MTI4CisgICAgU2ltZEluZm8sIFRtcCwgVG1w
LCBUbXAKKworVmVjdG9yUG1pbiBVOkc6UHRyLCBVOkY6MTI4LCBVOkY6MTI4LCBEOkY6MTI4Cisg
ICAgU2ltZEluZm8sIFRtcCwgVG1wLCBUbXAKKworVmVjdG9yUG1heCBVOkc6UHRyLCBVOkY6MTI4
LCBVOkY6MTI4LCBEOkY6MTI4CisgICAgU2ltZEluZm8sIFRtcCwgVG1wLCBUbXAKKworVmVjdG9y
TmFycm93IFU6RzpQdHIsIFU6RjoxMjgsIFU6RjoxMjgsIEQ6RjoxMjgKKyAgICBTaW1kSW5mbywg
VG1wLCBUbXAsIFRtcAorCitWZWN0b3JCaXR3aXNlU2VsZWN0IFU6RjoxMjgsIFU6RjoxMjgsIFVE
OkY6MTI4CisgICAgVG1wLCBUbXAsIFRtcAorCitWZWN0b3JOb3QgVTpHOlB0ciwgVTpGOjEyOCwg
RDpGOjEyOAorICAgIFNpbWRJbmZvLCBUbXAsIFRtcAorCitWZWN0b3JBbmQgVTpHOlB0ciwgVTpG
OjEyOCwgVTpGOjEyOCwgRDpGOjEyOAorICAgIFNpbWRJbmZvLCBUbXAsIFRtcCwgVG1wCisKK1Zl
Y3RvckFuZG5vdCBVOkc6UHRyLCBVOkY6MTI4LCBVOkY6MTI4LCBEOkY6MTI4CisgICAgU2ltZElu
Zm8sIFRtcCwgVG1wLCBUbXAKKworVmVjdG9yT3IgVTpHOlB0ciwgVTpGOjEyOCwgVTpGOjEyOCwg
RDpGOjEyOAorICAgIFNpbWRJbmZvLCBUbXAsIFRtcCwgVG1wCisKK1ZlY3RvclhvciBVOkc6UHRy
LCBVOkY6MTI4LCBVOkY6MTI4LCBEOkY6MTI4CisgICAgU2ltZEluZm8sIFRtcCwgVG1wLCBUbXAK
KworYXJtNjQ6IFZlY3RvclVzaGwgVTpHOlB0ciwgVTpGOjEyOCwgVTpGOjEyOCwgRDpGOjEyOAor
ICAgIFNpbWRJbmZvLCBUbXAsIFRtcCwgVG1wCisKK2FybTY0OiBWZWN0b3JTc2hsIFU6RzpQdHIs
IFU6RjoxMjgsIFU6RjoxMjgsIEQ6RjoxMjgKKyAgICBTaW1kSW5mbywgVG1wLCBUbXAsIFRtcAor
Cithcm02NDogVmVjdG9yU3NociBVOkc6UHRyLCBVOkY6MTI4LCBVOkc6OCwgRDpGOjEyOAorICAg
IFNpbWRJbmZvLCBUbXAsIEltbSwgVG1wCisKK2FybTY0OiBWZWN0b3JIb3Jpem9udGFsQWRkIFU6
RzpQdHIsIFU6RjoxMjgsIEQ6RjoxMjgKKyAgICBTaW1kSW5mbywgVG1wLCBUbXAKKworVmVjdG9y
QWJzIFU6RzpQdHIsIFU6RjoxMjgsIEQ6RjoxMjgKKyAgICBTaW1kSW5mbywgVG1wLCBUbXAKKwor
VmVjdG9yTmVnIFU6RzpQdHIsIFU6RjoxMjgsIEQ6RjoxMjgKKyAgICBTaW1kSW5mbywgVG1wLCBU
bXAKKworVmVjdG9yUG9wY250IFU6RzpQdHIsIFU6RjoxMjgsIEQ6RjoxMjgKKyAgICBTaW1kSW5m
bywgVG1wLCBUbXAKKworVmVjdG9yQ2VpbCBVOkc6UHRyLCBVOkY6MTI4LCBEOkY6MTI4CisgICAg
U2ltZEluZm8sIFRtcCwgVG1wCisKK1ZlY3RvckZsb29yIFU6RzpQdHIsIFU6RjoxMjgsIEQ6Rjox
MjgKKyAgICBTaW1kSW5mbywgVG1wLCBUbXAKKworVmVjdG9yVHJ1bmMgVTpHOlB0ciwgVTpGOjEy
OCwgRDpGOjEyOAorICAgIFNpbWRJbmZvLCBUbXAsIFRtcAorCitWZWN0b3JUcnVuY1NhdCBVOkc6
UHRyLCBVOkY6MTI4LCBEOkY6MTI4CisgICAgU2ltZEluZm8sIFRtcCwgVG1wCisKK1ZlY3RvckNv
bnZlcnQgVTpHOlB0ciwgVTpGOjEyOCwgRDpGOjEyOAorICAgIFNpbWRJbmZvLCBUbXAsIFRtcAor
CitWZWN0b3JDb252ZXJ0TG93IFU6RzpQdHIsIFU6Rjo2NCwgRDpGOjEyOAorICAgIFNpbWRJbmZv
LCBUbXAsIFRtcAorCitWZWN0b3JOZWFyZXN0IFU6RzpQdHIsIFU6RjoxMjgsIEQ6RjoxMjgKKyAg
ICBTaW1kSW5mbywgVG1wLCBUbXAKKworVmVjdG9yU3FydCBVOkc6UHRyLCBVOkY6MTI4LCBEOkY6
MTI4CisgICAgU2ltZEluZm8sIFRtcCwgVG1wCisKK1ZlY3RvckV4dGVuZExvdyBVOkc6UHRyLCBV
OkY6MTI4LCBEOkY6MTI4CisgICAgU2ltZEluZm8sIFRtcCwgVG1wCisKK1ZlY3RvckV4dGVuZEhp
Z2ggVTpHOlB0ciwgVTpGOjEyOCwgRDpGOjEyOAorICAgIFNpbWRJbmZvLCBUbXAsIFRtcAorCitW
ZWN0b3JQcm9tb3RlIFU6RzpQdHIsIFU6RjoxMjgsIEQ6RjoxMjgKKyAgICBTaW1kSW5mbywgVG1w
LCBUbXAKKworVmVjdG9yRGVtb3RlIFU6RzpQdHIsIFU6RjoxMjgsIEQ6RjoxMjgKKyAgICBTaW1k
SW5mbywgVG1wLCBUbXAKKworVmVjdG9yTG9hZDhTcGxhdCBVOkc6OCwgRDpGOjEyOAorICAgIGFy
bTY0OiBTaW1wbGVBZGRyLCBUbXAKK1ZlY3RvckxvYWQxNlNwbGF0IFU6RzoxNiwgRDpGOjEyOAor
ICAgIGFybTY0OiBTaW1wbGVBZGRyLCBUbXAKK1ZlY3RvckxvYWQzMlNwbGF0IFU6RzozMiwgRDpG
OjEyOAorICAgIGFybTY0OiBTaW1wbGVBZGRyLCBUbXAKK1ZlY3RvckxvYWQ2NFNwbGF0IFU6Rzo2
NCwgRDpGOjEyOAorICAgIGFybTY0OiBTaW1wbGVBZGRyLCBUbXAKKworVmVjdG9yTG9hZDhMYW5l
IFU6Rzo4LCBVOkc6OCwgVUQ6RjoxMjgKKyAgICBhcm02NDogU2ltcGxlQWRkciwgSW1tLCBUbXAK
K1ZlY3RvckxvYWQxNkxhbmUgVTpHOjE2LCBVOkc6OCwgVUQ6RjoxMjgKKyAgICBhcm02NDogU2lt
cGxlQWRkciwgSW1tLCBUbXAKK1ZlY3RvckxvYWQzMkxhbmUgVTpHOjMyLCBVOkc6OCwgVUQ6Rjox
MjgKKyAgICBhcm02NDogU2ltcGxlQWRkciwgSW1tLCBUbXAKK1ZlY3RvckxvYWQ2NExhbmUgVTpH
OjY0LCBVOkc6OCwgVUQ6RjoxMjgKKyAgICBhcm02NDogU2ltcGxlQWRkciwgSW1tLCBUbXAKKwor
VmVjdG9yU3RvcmU4TGFuZSBVOkY6MTI4LCBVOkc6OCwgVTpHOjgKKyAgICBhcm02NDogVG1wLCBT
aW1wbGVBZGRyLCBJbW0KK1ZlY3RvclN0b3JlMTZMYW5lIFU6RjoxMjgsIFU6RzoxNiwgVTpHOjgK
KyAgICBhcm02NDogVG1wLCBTaW1wbGVBZGRyLCBJbW0KK1ZlY3RvclN0b3JlMzJMYW5lIFU6Rjox
MjgsIFU6RzozMiwgVTpHOjgKKyAgICBhcm02NDogVG1wLCBTaW1wbGVBZGRyLCBJbW0KK1ZlY3Rv
clN0b3JlNjRMYW5lIFU6RjoxMjgsIFU6Rzo2NCwgVTpHOjgKKyAgICBhcm02NDogVG1wLCBTaW1w
bGVBZGRyLCBJbW0KKworVmVjdG9yQW55VHJ1ZSBVOkY6MTI4LCBaRDpHOjMyCisgICAgVG1wLCBU
bXAKKworVmVjdG9yQWxsVHJ1ZSBVOkc6OCwgVTpGOjEyOCwgWkQ6RzozMgorICAgIFNpbWRJbmZv
LCBUbXAsIFRtcAorCitWZWN0b3JCaXRtYXNrIFU6Rzo4LCBVOkY6MTI4LCBaRDpHOjMyCisgICAg
U2ltZEluZm8sIFRtcCwgVG1wCisKK1ZlY3RvckV4dGFkZFBhaXJ3aXNlIFU6Rzo4LCBVOkY6MTI4
LCBEOkY6MTI4CisgICAgU2ltZEluZm8sIFRtcCwgVG1wCisKK2FybTY0OiBWZWN0b3JBZGRQYWly
d2lzZSBVOkc6OCwgVTpGOjEyOCwgVTpGOjEyOCwgRDpGOjEyOAorICAgIFNpbWRJbmZvLCBUbXAs
IFRtcCwgVG1wCisKK1ZlY3RvckF2Z1JvdW5kIFU6Rzo4LCBVOkY6MTI4LCBVOkY6MTI4LCBEOkY6
MTI4CisgICAgU2ltZEluZm8sIFRtcCwgVG1wLCBUbXAKKworVmVjdG9yTXVsU2F0IFU6RjoxMjgs
IFU6RjoxMjgsIEQ6RjoxMjgKKyAgICBUbXAsIFRtcCwgVG1wCisKK1ZlY3RvckRvdFByb2R1Y3RJ
bnQzMiBVOkY6MTI4LCBVOkY6MTI4LCBEOkY6MTI4LCBTOkY6MTI4CisgICAgVG1wLCBUbXAsIFRt
cCwgVG1wCisKK1ZlY3RvclN3aXp6bGUgVTpGOjEyOCwgVTpGOjEyOCwgRDpGOjEyOAorICAgIFRt
cCwgVG1wLCBUbXAKKworYXJtNjQ6IFZlY3RvclN3aXp6bGUyIFU6RjoxMjgsIFU6RjoxMjgsIFU6
RjoxMjgsIEQ6RjoxMjgKKyAgICBUbXAsIFRtcCosIFRtcCwgVG1wCisKK1ZlY3RvclNodWZmbGUg
VTpHOjY0LCBVOkc6NjQsIFU6RjoxMjgsIFU6RjoxMjgsIEQ6RjoxMjgKKyAgICBCaWdJbW0sIEJp
Z0ltbSwgVG1wLCBUbXAsIFRtcAorCiBPb3BzIC90ZXJtaW5hbAogCiAjIFRoaXMgaXMgYSB0ZXJt
aW5hbCBidXQgd2UgZXhwcmVzcyBpdCBhcyBhIEN1c3RvbSBiZWNhdXNlIHdlIGRvbid0IHdhbnQg
aXQgdG8gaGF2ZSBhIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyUHJpbnRTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
UHJpbnRTcGVjaWFsLmNwcAppbmRleCA3ZTA0MGIxYTNjYmMuLmRlYzdmNWIxMTZmMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQcmludFNwZWNpYWwuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUHJpbnRTcGVjaWFsLmNwcApAQCAt
NjEsNyArNjEsNyBAQCBib29sIFByaW50U3BlY2lhbDo6YWRtaXRzRXh0ZW5kZWRPZmZzZXRBZGRy
KEluc3QmLCB1bnNpZ25lZCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUHJpbnRTcGVj
aWFsOjpyZXBvcnRVc2VkUmVnaXN0ZXJzKEluc3QmLCBjb25zdCBSZWdpc3RlclNldCYpCit2b2lk
IFByaW50U3BlY2lhbDo6cmVwb3J0VXNlZFJlZ2lzdGVycyhJbnN0JiwgY29uc3QgUmVnaXN0ZXJT
ZXQxMjgmKQogewogfQogCkBAIC04OSwxMiArODksMTIgQEAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
UHJpbnRTcGVjaWFsOjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2Vu
ZXIKICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1wKCk7CiB9CiAKLVJlZ2lzdGVyU2V0IFBy
aW50U3BlY2lhbDo6ZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoSW5zdCYpCitSZWdpc3RlclNldDEy
OCBQcmludFNwZWNpYWw6OmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKEluc3QmKQogewogICAgIHJl
dHVybiB7IH07CiB9CiAKLVJlZ2lzdGVyU2V0IFByaW50U3BlY2lhbDo6ZXh0cmFDbG9iYmVyZWRS
ZWdzKEluc3QmKQorUmVnaXN0ZXJTZXQxMjggUHJpbnRTcGVjaWFsOjpleHRyYUNsb2JiZXJlZFJl
Z3MoSW5zdCYpCiB7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyUHJpbnRTcGVjaWFsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpclByaW50U3BlY2lhbC5oCmluZGV4IDY2ODRjMmY4ODNjZi4uZDZmZDczOWMx
N2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclByaW50U3Bl
Y2lhbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUHJpbnRTcGVjaWFs
LmgKQEAgLTEwNiwxMCArMTA2LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1ZhbGlkKEluc3Qm
KSBmaW5hbDsKICAgICBib29sIGFkbWl0c1N0YWNrKEluc3QmLCB1bnNpZ25lZCBhcmdJbmRleCkg
ZmluYWw7CiAgICAgYm9vbCBhZG1pdHNFeHRlbmRlZE9mZnNldEFkZHIoSW5zdCYsIHVuc2lnbmVk
KSBmaW5hbDsKLSAgICB2b2lkIHJlcG9ydFVzZWRSZWdpc3RlcnMoSW5zdCYsIGNvbnN0IFJlZ2lz
dGVyU2V0JikgZmluYWw7CisgICAgdm9pZCByZXBvcnRVc2VkUmVnaXN0ZXJzKEluc3QmLCBjb25z
dCBSZWdpc3RlclNldDEyOCYpIGZpbmFsOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGdlbmVy
YXRlKEluc3QmLCBDQ2FsbEhlbHBlcnMmLCBHZW5lcmF0aW9uQ29udGV4dCYpIGZpbmFsOwotICAg
IFJlZ2lzdGVyU2V0IGV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKEluc3QmKSBmaW5hbDsKLSAgICBS
ZWdpc3RlclNldCBleHRyYUNsb2JiZXJlZFJlZ3MoSW5zdCYpIGZpbmFsOworICAgIFJlZ2lzdGVy
U2V0MTI4IGV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKEluc3QmKSBmaW5hbDsKKyAgICBSZWdpc3Rl
clNldDEyOCBleHRyYUNsb2JiZXJlZFJlZ3MoSW5zdCYpIGZpbmFsOwogICAgIAogICAgIHZvaWQg
ZHVtcEltcGwoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGRlZXBEdW1wSW1w
bChQcmludFN0cmVhbSYpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJSZWdMaXZlbmVzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclJlZ0xpdmVuZXNzLmNwcAppbmRleCBkZmQ2NzI4YjBjNDUuLmMyZmNhNWE4NTE4
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJSZWdMaXZlbmVz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJSZWdMaXZlbmVzcy5j
cHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVnTGl2ZW5lc3M6OlJlZ0xpdmVuZXNzKENvZGUmIGNvZGUp
CiAgICAgCiAgICAgLy8gVGhlIGxpdmVBdFRhaWwgb2YgZWFjaCBibG9jayBhdXRvbWF0aWNhbGx5
IGNvbnRhaW5zIHRoZSBMYXRlVXNlJ3Mgb2YgdGhlIHRlcm1pbmFsLgogICAgIGZvciAoQmFzaWNC
bG9jayogYmxvY2sgOiBjb2RlKSB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0JiBsaXZlQXRUYWlsID0g
bV9saXZlQXRUYWlsW2Jsb2NrXTsKKyAgICAgICAgYXV0byYgbGl2ZUF0VGFpbCA9IG1fbGl2ZUF0
VGFpbFtibG9ja107CiAgICAgICAgICAgICAKICAgICAgICAgYmxvY2stPmxhc3QoKS5mb3JFYWNo
PFJlZz4oCiAgICAgICAgICAgICBbJl0gKFJlZyYgcmVnLCBBcmc6OlJvbGUgcm9sZSwgQmFuaywg
V2lkdGgpIHsKQEAgLTk3LDE0ICs5NywxNCBAQCBSZWdMaXZlbmVzczo6UmVnTGl2ZW5lc3MoQ29k
ZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsQ2FsYy5tX3dvcmtzZXQucmVt
b3ZlKHJlZyk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICBSZWdpc3RlclNldCYgbGl2ZUF0SGVhZCA9IG1fbGl2ZUF0SGVhZFtibG9ja107CisgICAg
ICAgICAgICBhdXRvJiBsaXZlQXRIZWFkID0gbV9saXZlQXRIZWFkW2Jsb2NrXTsKICAgICAgICAg
ICAgIGlmIChsaXZlQXRIZWFkLnN1YnN1bWVzKGxvY2FsQ2FsYy5tX3dvcmtzZXQpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgbGl2ZUF0
SGVhZC5tZXJnZShsb2NhbENhbGMubV93b3Jrc2V0KTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGZvciAoQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgOiBibG9jay0+cHJlZGVjZXNzb3Jz
KCkpIHsKLSAgICAgICAgICAgICAgICBSZWdpc3RlclNldCYgbGl2ZUF0VGFpbCA9IG1fbGl2ZUF0
VGFpbFtwcmVkZWNlc3Nvcl07CisgICAgICAgICAgICAgICAgYXV0byYgbGl2ZUF0VGFpbCA9IG1f
bGl2ZUF0VGFpbFtwcmVkZWNlc3Nvcl07CiAgICAgICAgICAgICAgICAgaWYgKGxpdmVBdFRhaWwu
c3Vic3VtZXMobG9jYWxDYWxjLm1fd29ya3NldCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyUmVnTGl2ZW5lc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyUmVnTGl2ZW5lc3MuaAppbmRleCBjMDkwMWEwYjFmY2IuLjI5Y2NkN2VhOWEwZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJSZWdMaXZlbmVzcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUmVnTGl2ZW5lc3MuaApAQCAtNDQs
OCArNDQsOCBAQCBjbGFzcyBSZWdMaXZlbmVzcyB7CiAgICAgc3RydWN0IEFjdGlvbnMgewogICAg
ICAgICBBY3Rpb25zKCkgeyB9CiAgICAgICAgIAotICAgICAgICBSZWdpc3RlclNldCB1c2U7Ci0g
ICAgICAgIFJlZ2lzdGVyU2V0IGRlZjsKKyAgICAgICAgUmVnaXN0ZXJTZXQxMjggdXNlOworICAg
ICAgICBSZWdpc3RlclNldDEyOCBkZWY7CiAgICAgfTsKICAgICAKICAgICB0eXBlZGVmIFZlY3Rv
cjxBY3Rpb25zLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gQWN0aW9uc0ZvckJvdW5kYXJ5OwpA
QCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIGxpdmUoKSBjb25zdAorICAgICAgICBjb25zdCBS
ZWdpc3RlclNldDEyOCYgbGl2ZSgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBtX3dvcmtzZXQ7CiAgICAgICAgIH0KQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAg
ICAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7Ci0gICAgICAg
IFJlZ2lzdGVyU2V0IG1fd29ya3NldDsKKyAgICAgICAgUmVnaXN0ZXJTZXQxMjggbV93b3Jrc2V0
OwogICAgIH07CiAgICAgCiAgICAgLy8gVGhpcyBjYWxjdWxhdG9yIGhhcyB0byBiZSBydW4gaW4g
cmV2ZXJzZS4KQEAgLTExMSwxOSArMTExLDE5IEBAIHB1YmxpYzoKICAgICAgICAgVW5pZmllZFRt
cExpdmVuZXNzOjpBY3Rpb25zRm9yQm91bmRhcnkmIG1fYWN0aW9uczsKICAgICB9OwogICAgIAot
ICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBsaXZlQXRIZWFkKEJhc2ljQmxvY2sqIGJsb2NrKSBjb25z
dAorICAgIGNvbnN0IFJlZ2lzdGVyU2V0MTI4JiBsaXZlQXRIZWFkKEJhc2ljQmxvY2sqIGJsb2Nr
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbGl2ZUF0SGVhZFtibG9ja107CiAgICAg
fQogICAgIAotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBsaXZlQXRUYWlsKEJhc2ljQmxvY2sqIGJs
b2NrKSBjb25zdAorICAgIGNvbnN0IFJlZ2lzdGVyU2V0MTI4JiBsaXZlQXRUYWlsKEJhc2ljQmxv
Y2sqIGJsb2NrKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbGl2ZUF0VGFpbFtibG9j
a107CiAgICAgfQogICAgIAogcHJpdmF0ZToKLSAgICBJbmRleE1hcDxCYXNpY0Jsb2NrKiwgUmVn
aXN0ZXJTZXQ+IG1fbGl2ZUF0SGVhZDsKLSAgICBJbmRleE1hcDxCYXNpY0Jsb2NrKiwgUmVnaXN0
ZXJTZXQ+IG1fbGl2ZUF0VGFpbDsKKyAgICBJbmRleE1hcDxCYXNpY0Jsb2NrKiwgUmVnaXN0ZXJT
ZXQxMjg+IG1fbGl2ZUF0SGVhZDsKKyAgICBJbmRleE1hcDxCYXNpY0Jsb2NrKiwgUmVnaXN0ZXJT
ZXQxMjg+IG1fbGl2ZUF0VGFpbDsKICAgICBJbmRleE1hcDxCYXNpY0Jsb2NrKiwgQWN0aW9uc0Zv
ckJvdW5kYXJ5PiBtX2FjdGlvbnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcAppbmRleCBmODg3MjBhZmEw
YjguLjc5ZjNjM2FjYTRiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwCkBAIC05Myw5ICs5Myw3IEBAIHZvaWQg
cmVwb3J0VXNlZFJlZ2lzdGVycyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpZiAoaW5zdC5raW5kLm9wY29kZSA9PSBQYXRjaCkgewotICAgICAg
ICAgICAgICAgIFJlZ2lzdGVyU2V0IHJlZ2lzdGVyU2V0OwotICAgICAgICAgICAgICAgIGZvciAo
UmVnIHJlZyA6IGxvY2FsQ2FsYy5saXZlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVy
U2V0LnNldChyZWcpOworICAgICAgICAgICAgICAgIGF1dG8gcmVnaXN0ZXJTZXQgPSBsb2NhbENh
bGMubGl2ZSgpOwogICAgICAgICAgICAgICAgIGluc3QucmVwb3J0VXNlZFJlZ2lzdGVycyhyZWdp
c3RlclNldCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBsb2NhbENhbGMuZXhlY3V0ZShp
bnN0SW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJT
cGVjaWFsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuaAppbmRl
eCBhNmFjM2M2YWFjNGQuLmI5NWQyYTk5ZGY0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJTcGVjaWFsLmgKQEAgLTgxLDEyICs4MSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gcGVy
Zm9ybWFuY2Ugb2YgdGhlIGxpdmVuZXNzIGFuYWx5c2lzLgogICAgIC8vCiAgICAgLy8gQ3VycmVu
dGx5LCB3ZSBkbyAoMSkgZm9yIEIzIHN0YWNrbWFwcy4KLSAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0
VXNlZFJlZ2lzdGVycyhJbnN0JiwgY29uc3QgUmVnaXN0ZXJTZXQmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlcG9ydFVzZWRSZWdpc3RlcnMoSW5zdCYsIGNvbnN0IFJlZ2lzdGVyU2V0MTI4Jikg
PSAwOwogICAgIAogICAgIHZpcnR1YWwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZ2VuZXJhdGUoSW5z
dCYsIENDYWxsSGVscGVycyYsIEdlbmVyYXRpb25Db250ZXh0JikgPSAwOwogCi0gICAgdmlydHVh
bCBSZWdpc3RlclNldCBleHRyYUVhcmx5Q2xvYmJlcmVkUmVncyhJbnN0JikgPSAwOwotICAgIHZp
cnR1YWwgUmVnaXN0ZXJTZXQgZXh0cmFDbG9iYmVyZWRSZWdzKEluc3QmKSA9IDA7CisgICAgdmly
dHVhbCBSZWdpc3RlclNldDEyOCBleHRyYUVhcmx5Q2xvYmJlcmVkUmVncyhJbnN0JikgPSAwOwor
ICAgIHZpcnR1YWwgUmVnaXN0ZXJTZXQxMjggZXh0cmFDbG9iYmVyZWRSZWdzKEluc3QmKSA9IDA7
CiAgICAgCiAgICAgLy8gQnkgZGVmYXVsdCwgdGhpcyByZXR1cm5zIGZhbHNlLgogICAgIHZpcnR1
YWwgYm9vbCBpc1Rlcm1pbmFsKEluc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgppbmRleCAwNTVjMDVhMGEzYzguLmRmODNmMjkyYTc0
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJh
dG9yLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRv
ci5yYgpAQCAtMjI5LDcgKzIyOSw3IEBAIGRlZiBpc0dGKHRva2VuKQogZW5kCiAKIGRlZiBpc0tp
bmQodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xBKChUbXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0p
fChCaXRJbW02NCl8KFplcm9SZWcpfChTaW1wbGVBZGRyKXwoQWRkcil8KEV4dGVuZGVkT2Zmc2V0
QWRkcil8KEluZGV4KXwoUHJlSW5kZXgpfChQb3N0SW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8
KERvdWJsZUNvbmQpfChTdGF0dXNDb25kKSlcWi8KKyAgICB0b2tlbiA9fiAvXEEoKFRtcCl8KElt
bSl8KEJpZ0ltbSl8KEJpdEltbSl8KEJpdEltbTY0KXwoWmVyb1JlZyl8KFNpbXBsZUFkZHIpfChB
ZGRyKXwoRXh0ZW5kZWRPZmZzZXRBZGRyKXwoSW5kZXgpfChQcmVJbmRleCl8KFBvc3RJbmRleCl8
KFJlbENvbmQpfChSZXNDb25kKXwoRG91YmxlQ29uZCl8KFN0YXR1c0NvbmQpfChTaW1kSW5mbykp
XFovCiBlbmQKIAogZGVmIGlzQXJjaCh0b2tlbikKQEAgLTIzNyw3ICsyMzcsNyBAQCBkZWYgaXNB
cmNoKHRva2VuKQogZW5kCiAKIGRlZiBpc1dpZHRoKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgo
OCl8KDE2KXwoMzIpfCg2NCl8KFB0cikpXFovCisgICAgdG9rZW4gPX4gL1xBKCg4KXwoMTYpfCgz
Mil8KDY0KXwoUHRyKXwoMTI4KSlcWi8KIGVuZAogCiBkZWYgaXNLZXl3b3JkKHRva2VuKQpAQCAt
MzEwLDcgKzMxMCw3IEBAIGNsYXNzIFBhcnNlcgogCiAgICAgZGVmIGNvbnN1bWVXaWR0aAogICAg
ICAgICByZXN1bHQgPSB0b2tlbi5zdHJpbmcKLSAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQg
d2lkdGggKDgsIDE2LCAzMiwgb3IgNjQpIikgdW5sZXNzIGlzV2lkdGgocmVzdWx0KQorICAgICAg
ICBwYXJzZUVycm9yKCJFeHBlY3RlZCB3aWR0aCAoOCwgMTYsIDMyLCA2NCwgb3IgMTI4KSIpIHVu
bGVzcyBpc1dpZHRoKHJlc3VsdCkKICAgICAgICAgYWR2YW5jZQogICAgICAgICByZXN1bHQKICAg
ICBlbmQKQEAgLTcxMiw3ICs3MTIsNiBAQCB3cml0ZUgoIk9wY29kZVV0aWxzIikgewogICAgIG91
dHAucHV0cyAiICAgIGNvbnN0IHVpbnQ4X3QqIGZvcm1CYXNlID0gZ19mb3JtVGFibGUgKyBraW5k
Lm9wY29kZSAqICN7Zm9ybVRhYmxlV2lkdGh9ICsgZm9ybU9mZnNldDsiCiAgICAgb3V0cC5wdXRz
ICIgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1PcGVyYW5kczsgKytpKSB7IgogICAgIG91
dHAucHV0cyAiICAgICAgICB1aW50OF90IGZvcm0gPSBmb3JtQmFzZVtpXTsiCi0gICAgb3V0cC5w
dXRzICIgICAgICAgIEFTU0VSVCghKGZvcm0gJiAoMSA8PCBmb3JtSW52YWxpZFNoaWZ0KSkpOyIK
ICAgICBvdXRwLnB1dHMgIiAgICAgICAgZnVuYyhhcmdzW2ldLCBkZWNvZGVGb3JtUm9sZShmb3Jt
KSwgZGVjb2RlRm9ybUJhbmsoZm9ybSksIGRlY29kZUZvcm1XaWR0aChmb3JtKSk7IgogICAgIG91
dHAucHV0cyAiICAgIH0iCiAgICAgb3V0cC5wdXRzICJ9IgpAQCAtOTQxLDYgKzk0MCw3IEBAIHdy
aXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgIHdoZW4gIkRvdWJsZUNv
bmQiCiAgICAgICAgICAgICAgICAgd2hlbiAiU3RhdHVzQ29uZCIKICAgICAgICAgICAgICAgICB3
aGVuICJaZXJvUmVnIgorICAgICAgICAgICAgICAgIHdoZW4gIlNpbWRJbmZvIgogICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQga2luZDog
I3traW5kLm5hbWV9IgogICAgICAgICAgICAgICAgIGVuZApAQCAtMTI1Myw2ICsxMjUzLDggQEAg
d3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJp
bnQgImFyZ3NbI3tpbmRleH1dLmFzRG91YmxlQ29uZGl0aW9uKCkiCiAgICAgICAgICAgICAgICAg
d2hlbiAiU3RhdHVzQ29uZCIKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sj
e2luZGV4fV0uYXNTdGF0dXNDb25kaXRpb24oKSIKKyAgICAgICAgICAgICAgICB3aGVuICJTaW1k
SW5mbyIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uc2lt
ZEluZm8oKSIKICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKaW5kZXggM2I2ZjYyYzYzMTVkLi4wMGIzMTI5
YWEzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcApAQCAtMTg2
MSw3ICsxODYxLDcgQEAgdm9pZCB0ZXN0SW52YWxpZGF0ZUNhY2hlZFRlbXBSZWdpc3RlcnMoKQog
CiAgICAgLy8gSW4gUGF0Y2hwb2ludCwgTG9hZCB0aGluZ3NbMF0gLT4gdG1wLiBUaGlzIHdpbGwg
bWF0ZXJpYWxpemUgdGhlIGFkZHJlc3MgaW4geDE3IChkYXRhTWVtb3J5UmVnaXN0ZXIpLgogICAg
IEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQxID0gcGF0Y2hQb2ludDFSb290LT5hcHBl
bmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7
Ci0gICAgcGF0Y2hwb2ludDEtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lz
dGVycygpKTsKKyAgICBwYXRjaHBvaW50MS0+Y2xvYmJlckZ1bGxXaWR0aChSZWdpc3RlclNldDo6
bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgIHBhdGNocG9pbnQxLT5zZXRHZW5lcmF0b3Io
CiAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC0xODc2LDcgKzE4NzYsNyBAQCB2b2lkIHRlc3RJbnZh
bGlkYXRlQ2FjaGVkVGVtcFJlZ2lzdGVycygpCiAgICAgLy8gSW4gUGF0Y2hwb2ludCwgTG9hZCB0
aGluZ3NbMl0gLT4gdG1wLiBUaGlzIHNob3VsZCBub3QgcmV1c2UgdGhlIHByaW9yIGNvbnRlbnRz
IG9mIHgxNy4KICAgICBCMzo6QmFzaWNCbG9jayogcGF0Y2hQb2ludDJSb290ID0gcHJvYy5hZGRC
bG9jaygpOwogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQyID0gcGF0Y2hQb2lu
dDJSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIz
OjpPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludDItPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICBwYXRjaHBvaW50Mi0+Y2xvYmJlckZ1bGxXaWR0aChS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgIHBhdGNocG9pbnQyLT5z
ZXRHZW5lcmF0b3IoCiAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC0xODkwLDcgKzE4OTAsNyBAQCB2
b2lkIHRlc3RJbnZhbGlkYXRlQ2FjaGVkVGVtcFJlZ2lzdGVycygpCiAgICAgLy8gVGhpcyB3aWxs
IHVzZSBhbmQgY2FjaGUgYm90aCB4MTYgKGRhdGFNZW1vcnlSZWdpc3RlcikgYW5kIHgxNyAoZGF0
YVRlbXBSZWdpc3RlcikuCiAgICAgQjM6OkJhc2ljQmxvY2sqIHBhdGNoUG9pbnQzUm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50MyA9IHBh
dGNoUG9pbnQzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpW
b2lkLCBCMzo6T3JpZ2luKCkpOwotICAgIHBhdGNocG9pbnQzLT5jbG9iYmVyKFJlZ2lzdGVyU2V0
OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgcGF0Y2hwb2ludDMtPmNsb2JiZXJGdWxs
V2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICBwYXRjaHBv
aW50My0+c2V0R2VuZXJhdG9yKAogICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMTkwNiw3ICsxOTA2
LDcgQEAgdm9pZCB0ZXN0SW52YWxpZGF0ZUNhY2hlZFRlbXBSZWdpc3RlcnMoKQogICAgIC8vIFRo
aXMgc2hvdWxkIHJlbWF0ZXJpYWxpemUgYm90aCB4MTYgKGRhdGFNZW1vcnlSZWdpc3RlcikgYW5k
IHgxNyAoZGF0YVRlbXBSZWdpc3RlcikuCiAgICAgQjM6OkJhc2ljQmxvY2sqIHBhdGNoUG9pbnQ0
Um9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBv
aW50NCA9IHBhdGNoUG9pbnQ0Um9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHBy
b2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkpOwotICAgIHBhdGNocG9pbnQ0LT5jbG9iYmVyKFJl
Z2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgcGF0Y2hwb2ludDQtPmNs
b2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAg
ICBwYXRjaHBvaW50NC0+c2V0R2VuZXJhdG9yKAogICAgICAgICBbPV0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMTkz
Niw3ICsxOTM2LDcgQEAgdm9pZCB0ZXN0QXJndW1lbnRSZWdQaW5uZWQoKQogCiAgICAgQjM6OkJh
c2ljQmxvY2sqIGIzUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0Y2hwb2ludFZh
bHVlKiBwYXRjaHBvaW50ID0gYjNSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4o
cHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihS
ZWdpc3RlclNldChwaW5uZWQpKTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0
MTI4KHBpbm5lZCkpOwogICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYp
IHsKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwg
cGlubmVkKTsKQEAgLTE5NjgsNyArMTk2OCw3IEBAIHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVk
MigpCiAKICAgICBCMzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwogICAg
IEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxCMzo6
UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKLSAgICBwYXRj
aHBvaW50LT5jbG9iYmVyKHsgfSk7IAorICAgIHBhdGNocG9pbnQtPmNsb2JiZXJGdWxsV2lkdGgo
eyB9KTsKICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIHBpbm5lZCk7
CkBAIC0yMDA2LDcgKzIwMDYsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5lZDMoKQogCiAg
ICAgQjM6OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0
Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYjNSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9p
bnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+
Y2xvYmJlcihSZWdpc3RlclNldChwaW5uZWQpKTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJl
Z2lzdGVyU2V0MTI4KHBpbm5lZCkpOwogICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAg
ICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYpIHsKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKDQyKSwgcGlubmVkKTsKQEAgLTIxMjYsOSArMjEyNiw5IEBAIHZvaWQgdGVzdEVsaWRlSGFu
ZGxlc0Vhcmx5Q2xvYmJlcigpCiAgICAgICAgIHJvb3QtPmFwcGVuZChNb3ZlLCBudWxscHRyLCBB
cmc6OmltbShpKSwgdG1wc1tpXSk7CiAgICAgfQogCi0gICAgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJz
ID0gUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKTsKLSAgICByZWdpc3RlcnMuZXhjbHVkZShSZWdpc3Rl
clNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKLSAgICByZWdpc3RlcnMuZXhjbHVk
ZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7CisgICAgUmVnaXN0ZXJTZXQxMjggcmVn
aXN0ZXJzID0gUmVnaXN0ZXJTZXQxMjg6OnVzZTY0Qml0cyhSZWdpc3RlclNldDo6YWxsR1BScygp
KTsKKyAgICByZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDEyODo6dXNlNjRCaXRzKFJlZ2lz
dGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpKTsKKyAgICByZWdpc3RlcnMuZXhj
bHVkZShSZWdpc3RlclNldDEyODo6dXNlNjRCaXRzKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVy
cygpKSk7CiAgICAgUmVnIGZpcnN0Q2FsbGVlU2F2ZTsKICAgICBSZWcgbGFzdENhbGxlZVNhdmU7
CiAgICAgYXV0byogcGF0Y2ggPSBwcm9jLmFkZDxCMzo6UGF0Y2hwb2ludFZhbHVlPihCMzo6SW50
MzIsIEIzOjpPcmlnaW4oKSk7CkBAIC0yMTQyLDcgKzIxNDIsNyBAQCB2b2lkIHRlc3RFbGlkZUhh
bmRsZXNFYXJseUNsb2JiZXIoKQogICAgIHBhdGNoLT5lYXJseUNsb2JiZXJlZCgpLmNsZWFyKGZp
cnN0Q2FsbGVlU2F2ZSk7CiAgICAgcGF0Y2gtPnJlc3VsdENvbnN0cmFpbnRzLmFwcGVuZCh7IEIz
OjpWYWx1ZVJlcDo6cmVnKGZpcnN0Q2FsbGVlU2F2ZSkgfSk7CiAgICAgcGF0Y2gtPmVhcmx5Q2xv
YmJlcmVkKCkuY2xlYXIobGFzdENhbGxlZVNhdmUpOwotICAgIHBhdGNoLT5jbG9iYmVyKFJlZ2lz
dGVyU2V0KGxhc3RDYWxsZWVTYXZlKSk7CisgICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJTZXQx
MjgobGFzdENhbGxlZVNhdmUpKTsKIAogICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgSlNDOjpCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikg
ewogICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18zLmNwcAppbmRleCAwODE3ZjYxOTdiYzUuLmJh
MTllMDgxZWI1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzMuY3BwCkBAIC0zNTIy
LDkgKzM1MjIsOSBAQCB2b2lkIHRlc3RTdG9yZVBhcnRpYWw4Qml0UmVnaXN0ZXJPblg4NigpCiAg
ICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpyZWcoR1BSSW5m
bzo6cmVnVDYpIH07CiAKICAgICAvLyBHaXZlIHRoZSBhbGxvY2F0b3IgYSBnb29kIHJlYXNvbiBu
b3QgdG8gdXNlIGFueSBvdGhlciByZWdpc3Rlci4KLSAgICBSZWdpc3RlclNldCBjbG9iYmVyU2V0
ID0gUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKTsKLSAgICBjbG9iYmVyU2V0LmV4Y2x1ZGUoUmVnaXN0
ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOwotICAgIGNsb2JiZXJTZXQuZXhjbHVkZShSZWdpc3Rl
clNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKKyAgICBSZWdpc3RlclNldDEyOCBj
bG9iYmVyU2V0ID0gUmVnaXN0ZXJTZXQxMjg6OnVzZTY0Qml0cyhSZWdpc3RlclNldDo6YWxsR1BS
cygpKTsKKyAgICBjbG9iYmVyU2V0LmV4Y2x1ZGUoUmVnaXN0ZXJTZXQxMjg6OnVzZTY0Qml0cyhS
ZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSkpOworICAgIGNsb2JiZXJTZXQuZXhjbHVkZShS
ZWdpc3RlclNldDEyODo6dXNlNjRCaXRzKFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVn
aXN0ZXJzKCkpKTsKICAgICBjbG9iYmVyU2V0LmNsZWFyKEdQUkluZm86OnJlZ1QzKTsKICAgICBj
bG9iYmVyU2V0LmNsZWFyKEdQUkluZm86OnJlZ1QyKTsKICAgICBjbG9iYmVyU2V0LmNsZWFyKEdQ
UkluZm86OnJlZ1Q2KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjNfNC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzQuY3BwCmluZGV4IDU0
NDM4MDY3MTE4Mi4uYzUxOWIzOGRkYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzXzQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNf
NC5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIHRlc3RTdG9yZVJlbEFkZEZlbmNlTG9hZEFj
cTgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQogICAgIFZhbHVlKiBsb2FkZWRW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCiAgICAgICAgIHByb2MsIGxvYWRP
cGNvZGUsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIp
KTsKICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0
Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+Y2xv
YmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9p
bnQtPmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygp
KTsKICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTI1
MTIsNyArMjUxMiw3IEBAIHZvaWQgdGVzdFNpbXBsZVBhdGNocG9pbnRXaXRob3V0T3VwdXRDbG9i
YmVyc0dQQXJncygpCiAgICAgVmFsdWUqIGNvbnN0MiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxMyk7CiAKICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmln
aW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBwYXRjaHBvaW50LT5j
bG9iYmVyTGF0ZShSZWdpc3RlclNldDEyOChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpOwogICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVl
KGNvbnN0MSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwogICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwogICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKQEAgLTI1NTgsOSArMjU1OCw5IEBAIHZvaWQgdGVz
dFNpbXBsZVBhdGNocG9pbnRXaXRoT3VwdXRDbG9iYmVyc0dQQXJncygpCiAKICAgICBQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihw
cm9jLCBJbnQ2NCwgT3JpZ2luKCkpOwogCi0gICAgUmVnaXN0ZXJTZXQgY2xvYmJlckFsbCA9IFJl
Z2lzdGVyU2V0OjphbGxHUFJzKCk7Ci0gICAgY2xvYmJlckFsbC5leGNsdWRlKFJlZ2lzdGVyU2V0
OjpzdGFja1JlZ2lzdGVycygpKTsKLSAgICBjbG9iYmVyQWxsLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6
OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisgICAgUmVnaXN0ZXJTZXQxMjggY2xvYmJl
ckFsbCA9IFJlZ2lzdGVyU2V0MTI4Ojp1c2U2NEJpdHMoUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKSk7
CisgICAgY2xvYmJlckFsbC5leGNsdWRlKFJlZ2lzdGVyU2V0MTI4Ojp1c2U2NEJpdHMoUmVnaXN0
ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpKTsKKyAgICBjbG9iYmVyQWxsLmV4Y2x1ZGUoUmVnaXN0
ZXJTZXQxMjg6OnVzZTY0Qml0cyhSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVy
cygpKSk7CiAgICAgY2xvYmJlckFsbC5jbGVhcihHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAg
IHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKGNsb2JiZXJBbGwpOwogCkBAIC0yNTk5LDcgKzI1OTks
NyBAQCB2b2lkIHRlc3RTaW1wbGVQYXRjaHBvaW50V2l0aG91dE91cHV0Q2xvYmJlcnNGUEFyZ3Mo
KQogICAgIFZhbHVlKiBjb25zdDIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDEzLjEpOwogCiAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkp
OwotICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0KEZQUkluZm86OmFyZ3Vt
ZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJl
ckxhdGUoUmVnaXN0ZXJTZXQxMjgoRlBSSW5mbzo6YXJndW1lbnRGUFIwLCBGUFJJbmZvOjphcmd1
bWVudEZQUjEpKTsKICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShjb25z
dDEsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29u
c3RyYWluZWRWYWx1ZShjb25zdDIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKICAgICBwYXRj
aHBvaW50LT5zZXRHZW5lcmF0b3IoCkBAIC0yNjQyLDcgKzI2NDIsNyBAQCB2b2lkIHRlc3RTaW1w
bGVQYXRjaHBvaW50V2l0aE91cHV0Q2xvYmJlcnNGUEFyZ3MoKQogICAgIGNsb2JiZXJBbGwuZXhj
bHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7CiAgICAgY2xvYmJlckFsbC5leGNs
dWRlKFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwogICAgIGNsb2Ji
ZXJBbGwuY2xlYXIoRlBSSW5mbzo6YXJndW1lbnRGUFIyKTsKLSAgICBwYXRjaHBvaW50LT5jbG9i
YmVyTGF0ZShjbG9iYmVyQWxsKTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3Rl
clNldDEyODo6dXNlNjRCaXRzKGNsb2JiZXJBbGwpKTsKIAogICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwogICAg
IHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MiwgVmFsdWVSZXA6OlNv
bWVSZWdpc3RlcikpOwpAQCAtMjY3OSw3ICsyNjc5LDcgQEAgdm9pZCB0ZXN0UGF0Y2hwb2ludFdp
dGhFYXJseUNsb2JiZXIoKQogICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBy
b290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOwog
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcxLCBWYWx1ZVJl
cDo6U29tZVJlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5l
ZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlckVhcmx5KFJlZ2lzdGVyU2V0KHJlZ2lzdGVyVG9DbG9iYmVyKSk7CisgICAgICAg
IHBhdGNocG9pbnQtPmNsb2JiZXJFYXJseShSZWdpc3RlclNldDEyOChyZWdpc3RlclRvQ2xvYmJl
cikpOwogICAgICAgICB1bnNpZ25lZCBvcHRMZXZlbCA9IHByb2Mub3B0TGV2ZWwoKTsKICAgICAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAgLTI4
NTksNyArMjg1OSw3IEBAIHZvaWQgdGVzdFBhdGNocG9pbnRMb3RzT2ZMYXRlQW55cygpCiAgICAg
fQogCiAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBh
dGNocG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9yaWdpbigpKTsKLSAgICBwYXRjaHBvaW50LT5j
bG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgcGF0Y2hw
b2ludC0+Y2xvYmJlckZ1bGxXaWR0aChSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJz
KCkpOwogICAgIGZvciAoVmFsdWUqIHZhbHVlIDogdmFsdWVzKQogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZSh2YWx1ZSwgVmFsdWVSZXA6OkxhdGVDb2xkQW55KSk7
CiAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiM181LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjNfNS5jcHAKaW5kZXggYzNjY2RkZTIxOGM4Li40YzQ3NTAzNWZjZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfNS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiM181LmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgdGVzdFBhdGNo
cG9pbnRXaXRoU3RhY2tBcmd1bWVudFJlc3VsdCgpCiAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENv
bnN0cmFpbmVkVmFsdWUoYXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwogICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0
ZXIpKTsKICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OnN0
YWNrQXJndW1lbnQoMCkgfTsKLSAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0Ojpt
YWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckZ1bGxXaWR0
aChSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcigKICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTE1Miw5ICsxNTIsOSBA
QCB2b2lkIHRlc3RQYXRjaHBvaW50V2l0aEFueVJlc3VsdCgpCiAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwogICAg
IHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21l
UmVnaXN0ZXIpKTsKICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVS
ZXA6Oldhcm1BbnkgfTsKLSAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldDo6
YWxsRlBScygpKTsKLSAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldChH
UFJJbmZvOjpyZWdUMCkpOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0
MTI4Ojp1c2U2NEJpdHMoUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSkpOworICAgIHBhdGNocG9pbnQt
PmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsK
KyAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0MTI4KEdQUkluZm86OnJlZ1QwKSk7
CiAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICBbJl0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAg
ICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM182LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfNi5jcHAKaW5kZXggYTFjOTdhMzZiN2UwLi44Yjli
YTU5NTIxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfNi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM182LmNwcApAQCAtMTQ1MSw5
ICsxNDUxLDkgQEAgdm9pZCB0ZXN0U3BpbGxEZWZTbWFsbGVyVGhhblVzZSgpCiAKICAgICAvLyBN
YWtlIHN1cmUgYXJnNjQgaXMgb24gdGhlIHN0YWNrLgogICAgIFBhdGNocG9pbnRWYWx1ZSogZm9y
Y2VTcGlsbCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEludDY0LCBP
cmlnaW4oKSk7Ci0gICAgUmVnaXN0ZXJTZXQgY2xvYmJlclNldCA9IFJlZ2lzdGVyU2V0OjphbGxH
UFJzKCk7Ci0gICAgY2xvYmJlclNldC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVy
cygpKTsKLSAgICBjbG9iYmVyU2V0LmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdh
cmVSZWdpc3RlcnMoKSk7CisgICAgUmVnaXN0ZXJTZXQxMjggY2xvYmJlclNldCA9IFJlZ2lzdGVy
U2V0MTI4Ojp1c2U2NEJpdHMoUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKSk7CisgICAgY2xvYmJlclNl
dC5leGNsdWRlKFJlZ2lzdGVyU2V0MTI4Ojp1c2U2NEJpdHMoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCkpKTsKKyAgICBjbG9iYmVyU2V0LmV4Y2x1ZGUoUmVnaXN0ZXJTZXQxMjg6OnVzZTY0
Qml0cyhSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKSk7CiAgICAgY2xv
YmJlclNldC5jbGVhcihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7IC8vIEZvcmNlIHRoZSByZXR1
cm4gdmFsdWUgZm9yIGFsaWFzaW5nIGJlbG93LgogICAgIGZvcmNlU3BpbGwtPmNsb2JiZXJMYXRl
KGNsb2JiZXJTZXQpOwogICAgIGZvcmNlU3BpbGwtPnNldEdlbmVyYXRvcigKQEAgLTE0NzgsOSAr
MTQ3OCw5IEBAIHZvaWQgdGVzdFNwaWxsVXNlTGFyZ2VyVGhhbkRlZigpCiAgICAgQmFzaWNCbG9j
ayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQmFzaWNCbG9jayogdGFpbCA9IHBy
b2MuYWRkQmxvY2soKTsKIAotICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJTZXQgPSBSZWdpc3RlclNl
dDo6YWxsR1BScygpOwotICAgIGNsb2JiZXJTZXQuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tS
ZWdpc3RlcnMoKSk7Ci0gICAgY2xvYmJlclNldC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZXNlcnZl
ZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOworICAgIFJlZ2lzdGVyU2V0MTI4IGNsb2JiZXJTZXQgPSBS
ZWdpc3RlclNldDEyODo6dXNlNjRCaXRzKFJlZ2lzdGVyU2V0OjphbGxHUFJzKCkpOworICAgIGNs
b2JiZXJTZXQuZXhjbHVkZShSZWdpc3RlclNldDEyODo6dXNlNjRCaXRzKFJlZ2lzdGVyU2V0Ojpz
dGFja1JlZ2lzdGVycygpKSk7CisgICAgY2xvYmJlclNldC5leGNsdWRlKFJlZ2lzdGVyU2V0MTI4
Ojp1c2U2NEJpdHMoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSkpOwog
CiAgICAgVmFsdWUqIGNvbmRpdGlvbiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBWYWx1ZSogYXJn
dW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CkBAIC0xNTUwLDkgKzE1NTAsOSBAQCB2b2lkIHRlc3RM
YXRlUmVnaXN0ZXIoKQogICAgIC8vIHRvIHVzZSB0aGF0IExhdGVSZWdpc3RlciBhcyB0aGUgcmVz
dWx0IGZvciB0aGUgZmlyc3QgcGF0Y2hwb2ludC4gQnV0IG9mIGNvdXJzZSBpdCBjYW4gbm90IGRv
IHRoYXQuCiAgICAgLy8gU28gaXQgbXVzdCBpc3N1ZSBhIG1vdiBhZnRlciB0aGUgZmlyc3QgcGF0
Y2hwb2ludCBmcm9tIHRoZSBmaXJzdCdzIHJlc3VsdCBpbnRvIHRoZSBzZWNvbmQncyBpbnB1dC4K
IAotICAgIFJlZ2lzdGVyU2V0IHJlZ3MgPSBSZWdpc3RlclNldDo6YWxsR1BScygpOwotICAgIHJl
Z3MuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0gICAgcmVncy5leGNs
dWRlKFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOworICAgIFJlZ2lz
dGVyU2V0MTI4IHJlZ3MgPSBSZWdpc3RlclNldDEyODo6dXNlNjRCaXRzKFJlZ2lzdGVyU2V0Ojph
bGxHUFJzKCkpOworICAgIHJlZ3MuZXhjbHVkZShSZWdpc3RlclNldDEyODo6dXNlNjRCaXRzKFJl
Z2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKSk7CisgICAgcmVncy5leGNsdWRlKFJlZ2lzdGVy
U2V0MTI4Ojp1c2U2NEJpdHMoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMo
KSkpOwogICAgIFZlY3RvcjxWYWx1ZSo+IGxhdGVVc2VBcmdzOwogICAgIHVuc2lnbmVkIHJlc3Vs
dCA9IDA7CiAgICAgZm9yIChHUFJSZWcgcmVnID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVy
KCk7IHJlZyA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBDQ2FsbEhlbHBl
cnM6Om5leHRSZWdpc3RlcihyZWcpKSB7CkBAIC0xNjU3LDcgKzE2NTcsNyBAQCB2b2lkIHRlc3RJ
bnRlcnByZXRlcigpCiAgICAgcG9seUp1bXAtPmVmZmVjdHMgPSBFZmZlY3RzKCk7CiAgICAgcG9s
eUp1bXAtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOwogICAgIHBvbHlKdW1wLT5hcHBlbmRTb21l
UmVnaXN0ZXIob3Bjb2RlKTsKLSAgICBwb2x5SnVtcC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFj
cm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBvbHlKdW1wLT5jbG9iYmVyRnVsbFdpZHRoKFJl
Z2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgcG9seUp1bXAtPm51bUdQ
U2NyYXRjaFJlZ2lzdGVycyA9IDI7CiAgICAgZGlzcGF0Y2gtPmFwcGVuZFN1Y2Nlc3NvcihGcmVx
dWVudGVkQmxvY2soYWRkVG9EYXRhUG9pbnRlcikpOwogICAgIGRpc3BhdGNoLT5hcHBlbmRTdWNj
ZXNzb3IoRnJlcXVlbnRlZEJsb2NrKGFkZFRvQ29kZVBvaW50ZXIpKTsKQEAgLTIzNjYsNyArMjM2
Niw3IEBAIHZvaWQgdGVzdFRlcm1pbmFsUGF0Y2hwb2ludFRoYXROZWVkc1RvQmVTcGlsbGVkKCkK
IAogICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRj
aHBvaW50VmFsdWU+KHByb2MsIEludDMyLCBPcmlnaW4oKSk7CiAgICAgcGF0Y2hwb2ludC0+ZWZm
ZWN0cy50ZXJtaW5hbCA9IHRydWU7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXJGdWxs
V2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKIAogICAgIHJvb3Qt
PmFwcGVuZFN1Y2Nlc3NvcihzdWNjZXNzKTsKICAgICByb290LT5hcHBlbmRTdWNjZXNzb3IoRnJl
cXVlbnRlZEJsb2NrKHNsb3dQYXRoLCBGcmVxdWVuY3lDbGFzczo6UmFyZSkpOwpAQCAtMjQ0Nyw3
ICsyNDQ3LDcgQEAgdm9pZCB0ZXN0VGVybWluYWxQYXRjaHBvaW50VGhhdE5lZWRzVG9CZVNwaWxs
ZWQyKCkKIAogICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG9uZS0+YXBwZW5kTmV3
PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9yaWdpbigpKTsKICAgICBwYXRjaHBvaW50
LT5lZmZlY3RzLnRlcm1pbmFsID0gdHJ1ZTsKLSAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lz
dGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJl
ckZ1bGxXaWR0aChSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgIHBh
dGNocG9pbnQtPmFwcGVuZChhcmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOwogCiAgICAgb25l
LT5hcHBlbmRTdWNjZXNzb3Ioc3VjY2Vzcyk7CkBAIC0yNTMyLDcgKzI1MzIsNyBAQCB2b2lkIHRl
c3RQYXRjaHBvaW50VGVybWluYWxSZXR1cm5WYWx1ZShib29sIHN1Y2Nlc3NJc1JhcmUpCiAKICAg
ICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2lu
dFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOwogICAgIHBhdGNocG9pbnQtPmVmZmVjdHMu
dGVybWluYWwgPSB0cnVlOwotICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1h
Y3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyRnVsbFdpZHRo
KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAKICAgICBpZiAoc3VjY2Vz
c0lzUmFyZSkgewogICAgICAgICByb290LT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVlbnRlZEJsb2Nr
KHN1Y2Nlc3MsIEZyZXF1ZW5jeUNsYXNzOjpSYXJlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvdGVzdGIzXzcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiM183LmNwcAppbmRleCAxYTlmZTZmOWNlMGQuLjViYWVkMDUxODI4NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM183LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzXzcuY3BwCkBAIC0zMyw3ICszMyw3IEBAIHZvaWQgdGVzdFBpblJl
Z2lzdGVycygpCiAgICAgYXV0byBnbyA9IFsmXSAoYm9vbCBwaW4pIHsKICAgICAgICAgUHJvY2Vk
dXJlIHByb2M7CiAgICAgICAgIFJlZ2lzdGVyU2V0IGNzcnM7Ci0gICAgICAgIGNzcnMubWVyZ2Uo
UmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgICAgIGNzcnMubWVyZ2Uo
UmVnaXN0ZXJTZXQxMjg6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKS5hbGxSZWdpc3RlcnMoKSk7CiAg
ICAgICAgIGNzcnMuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7CiAgICAg
ICAgIGlmIChwaW4pIHsKICAgICAgICAgICAgIGNzcnMuZm9yRWFjaCgKQEAgLTExOTcsNyArMTE5
Nyw3IEBAIHZvaWQgdGVzdEZhc3RUTFNMb2FkKCkKICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwogCiAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+
YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCkp
OwotICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lz
dGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0Ojpt
YWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAog
ICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMTIxNyw3ICsxMjE3LDcgQEAgdm9pZCB0ZXN0RmFz
dFRMU1N0b3JlKCkKICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwogCiAg
ICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9p
bnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwotICAgIHBhdGNocG9pbnQtPmNsb2JiZXIo
UmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5j
bG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAg
ICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKICAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CkBAIC0xMzYxLDE4ICsxMzYxLDE4IEBA
IHZvaWQgdGVzdFNodWZmbGVEb2VzbnRUcmFzaENhbGxlZVNhdmVzKCkKICAgICBCYXNpY0Jsb2Nr
KiBsaWtlbHkgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQmFzaWNCbG9jayogdW5saWtlbHkgPSBw
cm9jLmFkZEJsb2NrKCk7CiAKLSAgICBSZWdpc3RlclNldCByZWdzID0gUmVnaXN0ZXJTZXQ6OmFs
bEdQUnMoKTsKLSAgICByZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkp
OwotICAgIHJlZ3MuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVy
cygpKTsKLSAgICByZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMo
KSk7Ci0gICAgcmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMoKSk7CisgICAg
UmVnaXN0ZXJTZXQxMjggcmVncyA9IFJlZ2lzdGVyU2V0MTI4Ojp1c2U2NEJpdHMoUmVnaXN0ZXJT
ZXQ6OmFsbEdQUnMoKSk7CisgICAgcmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0MTI4Ojp1c2U2NEJp
dHMoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpKTsKKyAgICByZWdzLmV4Y2x1ZGUoUmVn
aXN0ZXJTZXQxMjg6OnVzZTY0Qml0cyhSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lz
dGVycygpKSk7CisgICAgcmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0MTI4OjpjYWxsZWVTYXZlUmVn
aXN0ZXJzKCkpOworICAgIHJlZ3MuZXhjbHVkZShSZWdpc3RlclNldDEyODo6dXNlNjRCaXRzKFJl
Z2lzdGVyU2V0Ojphcmd1bWVudEdQUlMoKSkpOwogCiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAg
VmVjdG9yPFZhbHVlKj4gcGF0Y2hlczsKICAgICBmb3IgKFJlZyByZWcgOiByZWdzKSB7CiAgICAg
ICAgICsraTsKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBw
ZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9yaWdpbigpKTsKLSAgICAgICAg
cGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkp
OworICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNy
b1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlZy5pc0dQUigp
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpy
ZWcocmVnLmdwcigpKSB9OwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCkBAIC0x
MzkzLDcgKzEzOTMsNyBAQCB2b2lkIHRlc3RTaHVmZmxlRG9lc250VHJhc2hDYWxsZWVTYXZlcygp
CiAgICAgVmFsdWUqIGFyZzggPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcig3ICUgR1BSSW5mbzo6bnVt
YmVyT2ZBcmd1bWVudFJlZ2lzdGVycykpOwogCiAgICAgUGF0Y2hwb2ludFZhbHVlKiBwdHIgPSBy
b290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQ2NCwgT3JpZ2luKCkpOwot
ICAgIHB0ci0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwor
ICAgIHB0ci0+Y2xvYmJlckZ1bGxXaWR0aChSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0
ZXJzKCkpOwogICAgIHB0ci0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpyZWcoR1BS
SW5mbzo6cmVnQ1MwKSB9OwogICAgIHB0ci0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzEpOwogICAg
IHB0ci0+c2V0R2VuZXJhdG9yKApAQCAtMTQyNSw3ICsxNDI1LDcgQEAgdm9pZCB0ZXN0U2h1ZmZs
ZURvZXNudFRyYXNoQ2FsbGVlU2F2ZXMoKQogICAgICAgICBjb25zdE51bWJlciwgYXJnMSwgYXJn
MiwgYXJnMywgYXJnNCwgYXJnNSwgYXJnNiwgYXJnNywgYXJnOCk7CiAKICAgICBQYXRjaHBvaW50
VmFsdWUqIHZvaWRQYXRjaCA9IHVubGlrZWx5LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihw
cm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgdm9pZFBhdGNoLT5jbG9iYmVyKFJlZ2lzdGVyU2V0
OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgdm9pZFBhdGNoLT5jbG9iYmVyRnVsbFdp
ZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgZm9yIChWYWx1
ZSogdiA6IHBhdGNoZXMpCiAgICAgICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKHYp
OwogICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzEpOwpAQCAtMTQ3Myw5ICsx
NDczLDkgQEAgdm9pZCB0ZXN0UmVwb3J0VXNlZFJlZ2lzdGVyc0xhdGVVc2VGb2xsb3dlZEJ5RWFy
bHlEZWZEb2VzTm90TWFya1VzZUFzRGVhZCgpCiAgICAgICAgIHJldHVybjsKICAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwogCi0gICAgUmVnaXN0ZXJTZXQgYWxsUmVncyA9
IFJlZ2lzdGVyU2V0OjphbGxHUFJzKCk7Ci0gICAgYWxsUmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0
OjpzdGFja1JlZ2lzdGVycygpKTsKLSAgICBhbGxSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJl
c2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisgICAgUmVnaXN0ZXJTZXQxMjggYWxsUmVncyA9
IFJlZ2lzdGVyU2V0MTI4Ojp1c2U2NEJpdHMoUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKSk7CisgICAg
YWxsUmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0MTI4Ojp1c2U2NEJpdHMoUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCkpKTsKKyAgICBhbGxSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQxMjg6OnVz
ZTY0Qml0cyhSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKSk7CiAKICAg
ICB7CiAgICAgICAgIC8vIE1ha2UgZXZlcnkgcmVnIDQyIChqdXN0IG5lZWRzIHRvIGJlIGEgdmFs
dWUgb3RoZXIgdGhhbiAxMCkuCkBAIC0xNTU0LDcgKzE1NTQsNyBAQCB2b2lkIHRlc3RJbmZpbml0
ZUxvb3BEb2VzbnRDYXVzZUJhZEhvaXN0aW5nKCkKIAogICAgIC8vIFRoZSBwYXRjaHBvaW50IGVh
cmx5IHJldCgpIHdvcmtzIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBjYWxsZWUgc2F2ZXMuCiAgICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIXByb2Mu
Y2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkuc2l6ZSgpKTsgCisgICAgUkVMRUFTRV9B
U1NFUlQoIXByb2MuY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkuY291bnQoKSk7IAog
ICAgIGludm9rZTx2b2lkPigqY29kZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDU1KSk7IC8vIFNo
b3VsZG4ndCBjcmFzaCBkZXJlZmVybmNpbmcgNTUuCiB9CiAKQEAgLTE1NjQsNyArMTU2NCw3IEBA
IHN0YXRpYyB2b2lkIHRlc3RTaW1wbGVUdXBsZVBhaXIodW5zaWduZWQgZmlyc3QsIGludDY0X3Qg
c2Vjb25kKQogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAKICAgICBQ
YXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZh
bHVlPihwcm9jLCBwcm9jLmFkZFR1cGxlKHsgSW50MzIsIEludDY0IH0pLCBPcmlnaW4oKSk7Ci0g
ICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJz
KCkpOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9
IHsgVmFsdWVSZXA6OlNvbWVSZWdpc3RlciwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlciB9OwogICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC0xNTg1LDcgKzE1ODUsNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0U2ltcGxlVHVwbGVQYWlyVW51c2VkKHVuc2lnbmVkIGZpcnN0LCBp
bnQ2NF90IHNlY29uZCkKICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwog
CiAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNo
cG9pbnRWYWx1ZT4ocHJvYywgcHJvYy5hZGRUdXBsZSh7IEludDMyLCBJbnQ2NCwgRG91YmxlIH0p
LCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXJGdWxsV2lkdGgoUmVn
aXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICBwYXRjaHBvaW50LT5yZXN1
bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OlNvbWVSZWdpc3RlciwgVmFsdWVSZXA6OlNvbWVS
ZWdpc3RlciwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlciB9OwogICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewogICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Ug
YWxsb3dTY3JhdGNoKGppdCk7CkBAIC0xNjA3LDcgKzE2MDcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
U2ltcGxlVHVwbGVQYWlyU3RhY2sodW5zaWduZWQgZmlyc3QsIGludDY0X3Qgc2Vjb25kKQogICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAKICAgICBQYXRjaHBvaW50VmFs
dWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBw
cm9jLmFkZFR1cGxlKHsgSW50MzIsIEludDY0IH0pLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBh
dGNocG9pbnQtPmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lz
dGVycygpKTsKICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6
OlNvbWVSZWdpc3RlciwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQoMCkgfTsKICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMTY4NCw3ICsxNjg0LDcgQEAgc3RhdGlj
IHZvaWQgdGFpbER1cGVkVHVwbGVQYWlyKHVuc2lnbmVkIGZpcnN0LCBkb3VibGUgc2Vjb25kKQog
CiAgICAgVmFsdWUqIHRlc3QgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgUGF0Y2hwb2ludFZhbHVl
KiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgdHVw
bGVUeXBlLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6
bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXJGdWxsV2lk
dGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICBwYXRjaHBvaW50
LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OlNvbWVSZWdpc3RlciwgVmFsdWVSZXA6
OnN0YWNrQXJndW1lbnQoMCkgfTsKICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWyZdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChq
aXQpOwpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgc3RhdGljIHZvaWQgdHVwbGVQYWlyVmFyaWFibGVM
b29wKHVuc2lnbmVkIGZpcnN0LCB1aW50NjRfdCBzZWNvbmQpCiAgICAgICAgIFZhbHVlKiBmaXJz
dCA9IGJvZHktPmFwcGVuZE5ldzxFeHRyYWN0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBJbnQzMiwg
dHVwbGUsIDApOwogICAgICAgICBWYWx1ZSogc2Vjb25kID0gYm9keS0+YXBwZW5kTmV3PEV4dHJh
Y3RWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEludDY0LCB0dXBsZSwgMSk7CiAgICAgICAgIFBhdGNo
cG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJvZHktPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+
KHByb2MsIHR1cGxlVHlwZSwgT3JpZ2luKCkpOwotICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVy
KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygp
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKHsgZmlyc3QsIFZhbHVlUmVwOjpTb21lUmVn
aXN0ZXIgfSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCh7IHNlY29uZCwgVmFsdWVSZXA6
OlNvbWVSZWdpc3RlciB9KTsKICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMg
PSB7IFZhbHVlUmVwOjpTb21lRWFybHlSZWdpc3RlciwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQo
MCkgfTsKQEAgLTE4MTIsNyArMTgxMiw3IEBAIHN0YXRpYyB2b2lkIHR1cGxlTmVzdGVkTG9vcChp
bnQzMl90IGZpcnN0LCBkb3VibGUgc2Vjb25kKQogICAgICAgICBWYWx1ZSogc2Vjb25kID0gb3V0
ZXJMb29wLT5hcHBlbmROZXc8RXh0cmFjdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRG91YmxlLCB0
dXBsZSwgMSk7CiAgICAgICAgIFZhbHVlKiB0aGlyZCA9IG91dGVyTG9vcC0+YXBwZW5kTmV3PFZh
cmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdpbigpLCB0b29rSW5uZXIpOwogICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBvdXRlckxvb3AtPmFwcGVuZE5ldzxQYXRj
aHBvaW50VmFsdWU+KHByb2MsIHR1cGxlVHlwZSwgT3JpZ2luKCkpOwotICAgICAgICBwYXRjaHBv
aW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRj
aFJlZ2lzdGVycygpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKHsgZmlyc3QsIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXJXaXRoQ2xvYmJlciB9KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKHsgc2Vjb25kLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyV2l0aENsb2JiZXIgfSk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZCh7IHRoaXJkLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyV2l0
aENsb2JiZXIgfSk7CkBAIC0xODM0LDcgKzE4MzQsNyBAQCBzdGF0aWMgdm9pZCB0dXBsZU5lc3Rl
ZExvb3AoaW50MzJfdCBmaXJzdCwgZG91YmxlIHNlY29uZCkKICAgICAgICAgVmFsdWUqIGZpcnN0
ID0gaW5uZXJMb29wLT5hcHBlbmROZXc8RXh0cmFjdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgSW50
MzIsIHR1cGxlLCAwKTsKICAgICAgICAgVmFsdWUqIHNlY29uZCA9IGlubmVyTG9vcC0+YXBwZW5k
TmV3PEV4dHJhY3RWYWx1ZT4ocHJvYywgT3JpZ2luKCksIERvdWJsZSwgdHVwbGUsIDEpOwogICAg
ICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBpbm5lckxvb3AtPmFwcGVuZE5ldzxQ
YXRjaHBvaW50VmFsdWU+KHByb2MsIHR1cGxlVHlwZSwgT3JpZ2luKCkpOwotICAgICAgICBwYXRj
aHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Cisg
ICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2Ny
YXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKHsgZmlyc3QsIFZh
bHVlUmVwOjpTb21lUmVnaXN0ZXJXaXRoQ2xvYmJlciB9KTsKICAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kKHsgc2Vjb25kLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyV2l0aENsb2JiZXIgfSk7CiAg
ICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6U29tZVJl
Z2lzdGVyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyLCBWYWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0
ZXIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUR1bXBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1w
ZXIuY3BwCmluZGV4IDA4YTIzNTgwNDRmZC4uZDNhNmQxZWI4NDM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKQEAgLTg5LDYgKzg5
LDggQEAgaW50IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6b3V0T2ZMaW5lSnVtcE9mZnNldChKU0lu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2UKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgogQ1N0
cmluZyBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmNvbnN0YW50TmFtZShWaXJ0dWFsUmVnaXN0ZXIg
cmVnKSBjb25zdAogeworICAgIGlmIChyZWcudG9Db25zdGFudEluZGV4KCkgPj0gKGludCkgYmxv
Y2soKS0+Y29uc3RhbnRSZWdpc3RlcnMoKS5zaXplKCkpCisgICAgICAgIHJldHVybiB0b0NTdHJp
bmcoIklOVkFMSURfQ09OU1RBTlQoIiwgcmVnLCAiKSIpOwogICAgIGF1dG8gdmFsdWUgPSBibG9j
aygpLT5nZXRDb25zdGFudChyZWcpOwogICAgIHJldHVybiB0b0NTdHJpbmcodmFsdWUsICIoIiwg
cmVnLCAiKSIpOwogfQpAQCAtNDA5LDYgKzQxMSw5IEBAIENTdHJpbmcgQnl0ZWNvZGVEdW1wZXI6
OmZvcm1hdENvbnN0YW50KFR5cGUgdHlwZSwgdWludDY0X3QgY29uc3RhbnQpIGNvbnN0CiAgICAg
Y2FzZSBUeXBlS2luZDo6RjY0OgogICAgICAgICByZXR1cm4gdG9DU3RyaW5nKGJpdHdpc2VfY2Fz
dDxkb3VibGU+KGNvbnN0YW50KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZUtpbmQ6
OlYxMjg6CisgICAgICAgIHJldHVybiB0b0NTdHJpbmcoY29uc3RhbnQpOworICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OiB7CiAgICAgICAgIGlmIChpc0Z1bmNyZWYodHlwZSkgfHwgaXNFeHRl
cm5yZWYodHlwZSkpIHsKICAgICAgICAgICAgIGlmIChKU1ZhbHVlOjpkZWNvZGUoY29uc3RhbnQp
ID09IGpzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIKaW5kZXggYjk2MmIyOGNlNjJmLi44NjZmN2E5OTkzOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMTUyMiw2ICsxNTIy
LDcgQEAgb3AgOndpZGUzMgogCiBvcCA6ZW50ZXIKIG9wIDpub3AKK29wIDpicmVhawogb3AgOmxv
b3BfaGludAogCiBvcCA6bW92LApAQCAtMTY3NiwxNCArMTY3NywxNCBAQCBvcCA6Y2FsbCwKICAg
ICBhcmdzOiB7CiAgICAgICAgIGZ1bmN0aW9uSW5kZXg6IHVuc2lnbmVkLAogICAgICAgICBzdGFj
a09mZnNldDogdW5zaWduZWQsCi0gICAgICAgIG51bWJlck9mU3RhY2tBcmdzOiB1bnNpZ25lZCwK
KyAgICAgICAgc2l6ZU9mU3RhY2tBcmdzOiB1bnNpZ25lZCwKICAgICB9CiAKIG9wIDpjYWxsX25v
X3RscywKICAgICBhcmdzOiB7CiAgICAgICAgIGZ1bmN0aW9uSW5kZXg6IHVuc2lnbmVkLAogICAg
ICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCi0gICAgICAgIG51bWJlck9mU3RhY2tBcmdzOiB1
bnNpZ25lZCwKKyAgICAgICAgc2l6ZU9mU3RhY2tBcmdzOiB1bnNpZ25lZCwKICAgICB9CiAKIG9w
IDpjYWxsX2luZGlyZWN0LApAQCAtMTY5MSw3ICsxNjkyLDcgQEAgb3AgOmNhbGxfaW5kaXJlY3Qs
CiAgICAgICAgIGZ1bmN0aW9uSW5kZXg6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgc2lnbmF0
dXJlSW5kZXg6IHVuc2lnbmVkLAogICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCi0gICAg
ICAgIG51bWJlck9mU3RhY2tBcmdzOiB1bnNpZ25lZCwKKyAgICAgICAgc2l6ZU9mU3RhY2tBcmdz
OiB1bnNpZ25lZCwKICAgICAgICAgdGFibGVJbmRleDogdW5zaWduZWQsCiAgICAgfQogCkBAIC0x
NzAwLDcgKzE3MDEsNyBAQCBvcCA6Y2FsbF9pbmRpcmVjdF9ub190bHMsCiAgICAgICAgIGZ1bmN0
aW9uSW5kZXg6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgc2lnbmF0dXJlSW5kZXg6IHVuc2ln
bmVkLAogICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCi0gICAgICAgIG51bWJlck9mU3Rh
Y2tBcmdzOiB1bnNpZ25lZCwKKyAgICAgICAgc2l6ZU9mU3RhY2tBcmdzOiB1bnNpZ25lZCwKICAg
ICAgICAgdGFibGVJbmRleDogdW5zaWduZWQsCiAgICAgfQogCkBAIC0xNzA5LDcgKzE3MTAsNyBA
QCBvcCA6Y2FsbF9yZWYsCiAgICAgICAgIGZ1bmN0aW9uUmVmZXJlbmNlOiBWaXJ0dWFsUmVnaXN0
ZXIsCiAgICAgICAgIHNpZ25hdHVyZUluZGV4OiB1bnNpZ25lZCwKICAgICAgICAgc3RhY2tPZmZz
ZXQ6IHVuc2lnbmVkLAotICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCisgICAg
ICAgIHNpemVPZlN0YWNrQXJnczogdW5zaWduZWQsCiAgICAgfQogCiBvcCA6Y2FsbF9yZWZfbm9f
dGxzLApAQCAtMTcxNyw3ICsxNzE4LDcgQEAgb3AgOmNhbGxfcmVmX25vX3RscywKICAgICAgICAg
ZnVuY3Rpb25SZWZlcmVuY2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgc2lnbmF0dXJlSW5k
ZXg6IHVuc2lnbmVkLAogICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCi0gICAgICAgIG51
bWJlck9mU3RhY2tBcmdzOiB1bnNpZ25lZCwKKyAgICAgICAgc2l6ZU9mU3RhY2tBcmdzOiB1bnNp
Z25lZCwKICAgICB9CiAKIG9wIDpjdXJyZW50X21lbW9yeSwKQEAgLTE3NzcsNiArMTc3OCwxMyBA
QCBvcF9ncm91cCA6TG9hZCwKICAgICAgICAgOmkzMl9sb2FkMTZfcywKICAgICAgICAgOmk2NF9s
b2FkMTZfcywKICAgICAgICAgOmk2NF9sb2FkMzJfcywKKyAgICAgICAgOnNpbWRfbG9hZCwKKyAg
ICAgICAgOnNpbWRfbG9hZF9zcGxhdDgsCisgICAgICAgIDpzaW1kX2xvYWRfc3BsYXQxNiwKKyAg
ICAgICAgOnNpbWRfbG9hZF9zcGxhdDMyLAorICAgICAgICA6c2ltZF9sb2FkX3NwbGF0NjQsCisg
ICAgICAgIDpzaW1kX2xvYWRfcGFkMzIsCisgICAgICAgIDpzaW1kX2xvYWRfcGFkNjQsCiAgICAg
XSwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLApAQCAtMTc5MCw2
ICsxNzk4LDcgQEAgb3BfZ3JvdXAgOlN0b3JlLAogICAgICAgICA6c3RvcmUxNiwKICAgICAgICAg
OnN0b3JlMzIsCiAgICAgICAgIDpzdG9yZTY0LAorICAgICAgICA6c2ltZF9zdG9yZSwKICAgICBd
LAogICAgIGFyZ3M6IHsKICAgICAgICAgcG9pbnRlcjogVmlydHVhbFJlZ2lzdGVyLApAQCAtMTg5
MSw1ICsxOTAwLDQwNiBAQCBvcF9ncm91cCA6Q2F0Y2hBbGwsCiAgICAgYXJnczogewogICAgICAg
ICBleGNlcHRpb246IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CisgICAgCitzaW1kX29wX2dyb3Vw
IDpWZWN0b3JFeHRyYWN0TGFuZSwKKyAgICBbCisgICAgICAgIDpzaW1kX2V4dHJhY3RfbGFuZSwK
KyAgICBdLAorICAgIGFyZ3M6IHsKKyAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAg
ICAgIGxhbmU6IHVuc2lnbmVkLAorICAgICAgICB2OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwK
KyAgICBtYWtlU2lnbmVkVmFyaWFudHM6IHRydWUKKworc2ltZF9vcF9ncm91cCA6VmVjdG9yUmVw
bGFjZUxhbmUsCisgICAgWworICAgICAgICA6c2ltZF9yZXBsYWNlX2xhbmUsCisgICAgXSwKKyAg
ICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBsYW5lOiB1
bnNpZ25lZCwKKyAgICAgICAgdmVjdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHNjYWxh
cjogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0KKworc2ltZF9vcF9ncm91cCA6U2ltcGxlQ29tcGFy
ZSwKKyAgICBbCisgICAgICAgIDpzaW1kX2VxLAorICAgICAgICA6c2ltZF9uZSwKKyAgICBdLAor
ICAgIGFyZ3M6IHsKKyAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGxoczog
VmlydHVhbFJlZ2lzdGVyLAorICAgICAgICByaHM6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9CisK
K3NpbWRfb3BfZ3JvdXAgOkNvbXBsZXhDb21wYXJlLAorICAgIFsKKyAgICAgICAgOnNpbWRfbHQs
CisgICAgICAgIDpzaW1kX2d0LAorICAgICAgICA6c2ltZF9sZSwKKyAgICAgICAgOnNpbWRfZ2Us
CisgICAgXSwKKyAgICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAg
ICAgICBsaHM6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcmhzOiBWaXJ0dWFsUmVnaXN0ZXIs
CisgICAgfSwKKyAgICBtYWtlQWxsU2lnbmVkQW5kVW5zaWduZWRWYXJpYW50czogdHJ1ZQorCitz
aW1kX29wX2dyb3VwIDpCaW5vcCwKKyAgICBbCisgICAgICAgIDpzaW1kX2FkZCwKKyAgICAgICAg
OnNpbWRfc3ViLAorICAgIF0sCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdp
c3RlciwKKyAgICAgICAgbGhzOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHJoczogVmlydHVh
bFJlZ2lzdGVyLAorICAgIH0KKworc2ltZF9vcF9ncm91cCA6TXVsQmlub3AsCisgICAgWworICAg
ICAgICA6c2ltZF9tdWwsCisgICAgXSwKKyAgICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBsaHM6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcmhzOiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwKKyAgICBza2lwSThWYXJpYW50OiB0cnVlCisKK3NpbWRf
b3BfZ3JvdXAgOkRpdkJpbm9wLAorICAgIFsKKyAgICAgICAgOnNpbWRfZGl2LAorICAgIF0sCisg
ICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgbGhzOiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHJoczogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisg
ICAgbWFrZU9ubHlGbG9hdGluZ1BvaW50VmFyaWFudHM6IHRydWUKKworc2ltZF9vcF9ncm91cCA6
TWluTWF4Qmlub3AsCisgICAgWworICAgICAgICA6c2ltZF9taW4sCisgICAgICAgIDpzaW1kX21h
eCwKKyAgICBdLAorICAgIGFyZ3M6IHsKKyAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisg
ICAgICAgIGxoczogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICByaHM6IFZpcnR1YWxSZWdpc3Rl
ciwKKyAgICB9LAorICAgIG1ha2VBbGxTaWduZWRBbmRVbnNpZ25lZFZhcmlhbnRzOiB0cnVlLAor
ICAgIHNraXBJNjRWYXJpYW50OiB0cnVlCisKK3NpbWRfb3BfZ3JvdXAgOlBNaW5NYXhCaW5vcCwK
KyAgICBbCisgICAgICAgIDpzaW1kX3BtaW4sCisgICAgICAgIDpzaW1kX3BtYXgsCisgICAgXSwK
KyAgICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBsaHM6
IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcmhzOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwK
KyAgICBtYWtlT25seUZsb2F0aW5nUG9pbnRWYXJpYW50czogdHJ1ZQorCitzaW1kX29wX2dyb3Vw
IDpTaW1kQmluYXJ5Qml0d2lzZSwKKyAgICBbCisgICAgICAgIDpzaW1kX2FuZCwKKyAgICAgICAg
OnNpbWRfYW5kbm90LAorICAgICAgICA6c2ltZF9vciwKKyAgICAgICAgOnNpbWRfeG9yLAorICAg
IF0sCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAg
bGhzOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHJoczogVmlydHVhbFJlZ2lzdGVyLAorICAg
IH0sCisgICAgbWFrZU9ubHlWMTI4OiB0cnVlCisKK3NpbWRfb3BfZ3JvdXAgOlNpbWRVbmFyeUJp
dHdpc2UsCisgICAgWworICAgICAgICA6c2ltZF9ub3QsCisgICAgXSwKKyAgICBhcmdzOiB7Cisg
ICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICB2OiBWaXJ0dWFsUmVnaXN0ZXIs
CisgICAgfSwKKyAgICBtYWtlT25seVYxMjg6IHRydWUKKworc2ltZF9vcF9ncm91cCA6U2ltZFVu
YXJ5LAorICAgIFsKKyAgICAgICAgOnNpbWRfYWJzLAorICAgICAgICA6c2ltZF9uZWcsCisgICAg
XSwKKyAgICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICB2
OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfQorCitzaW1kX29wX2dyb3VwIDpTaW1kUG9wY250LAor
ICAgIFsKKyAgICAgICAgOnNpbWRfcG9wY250LAorICAgIF0sCisgICAgYXJnczogeworICAgICAg
ICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgdjogVmlydHVhbFJlZ2lzdGVyLAorICAg
IH0sCisgICAgbWFrZU9ubHlJODogdHJ1ZQorCitzaW1kX29wX2dyb3VwIDpTaW1kRmxvYXRpbmdQ
b2ludFVuYXJ5LAorICAgIFsKKyAgICAgICAgOnNpbWRfY2VpbCwKKyAgICAgICAgOnNpbWRfZmxv
b3IsCisgICAgICAgIDpzaW1kX3RydW5jLAorICAgICAgICA6c2ltZF9uZWFyZXN0LAorICAgICAg
ICA6c2ltZF9zcXJ0LAorICAgIF0sCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxS
ZWdpc3RlciwKKyAgICAgICAgdjogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisgICAgbWFrZU9u
bHlGbG9hdGluZ1BvaW50VmFyaWFudHM6IHRydWUKKworCitzaW1kX29wX2dyb3VwIDpTaW1kRXh0
ZW5kLAorICAgIFsKKyAgICAgICAgOnNpbWRfZXh0ZW5kX2xvdywKKyAgICAgICAgOnNpbWRfZXh0
ZW5kX2hpZ2gsCisgICAgXSwKKyAgICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lz
dGVyLAorICAgICAgICB2OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwKKyAgICBtYWtlQWxsU2ln
bmVkQW5kVW5zaWduZWRWYXJpYW50czogdHJ1ZSwKKyAgICBza2lwSTY0VmFyaWFudDogdHJ1ZSwK
KyAgICBza2lwRmxvYXRWYXJpYW50czogdHJ1ZQorCitzaW1kX29wX2dyb3VwIDpTaW1kUHJvbW90
ZSwKKyAgICBbCisgICAgICAgIDpzaW1kX3Byb21vdGUsCisgICAgXSwKKyAgICBhcmdzOiB7Cisg
ICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICB2OiBWaXJ0dWFsUmVnaXN0ZXIs
CisgICAgfSwKKyAgICBtYWtlT25seUYzMjogdHJ1ZQorCitzaW1kX29wX2dyb3VwIDpTaW1kRGVt
b3RlLAorICAgIFsKKyAgICAgICAgOnNpbWRfZGVtb3RlLAorICAgIF0sCisgICAgYXJnczogewor
ICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgdjogVmlydHVhbFJlZ2lzdGVy
LAorICAgIH0sCisgICAgbWFrZU9ubHlGNjQ6IHRydWUKKworc2ltZF9vcF9ncm91cCA6U2ltZFNw
bGF0LAorICAgIFsKKyAgICAgICAgOnNpbWRfc3BsYXQsCisgICAgXSwKKyAgICBhcmdzOiB7Cisg
ICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBpbnB1dDogVmlydHVhbFJlZ2lz
dGVyLAorICAgIH0KKworc2ltZF9vcF9ncm91cCA6U2ltZFNobCwKKyAgICBbCisgICAgICAgIDpz
aW1kX3NobCwKKyAgICBdLAorICAgIGFyZ3M6IHsKKyAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgICAgIHY6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgc2hpZnQ6IFZpcnR1YWxS
ZWdpc3RlcgorICAgIH0sCisgICAgc2tpcEZsb2F0VmFyaWFudHM6IHRydWUKKworc2ltZF9vcF9n
cm91cCA6U2ltZFNociwKKyAgICBbCisgICAgICAgIDpzaW1kX3NociwKKyAgICBdLAorICAgIGFy
Z3M6IHsKKyAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHY6IFZpcnR1YWxS
ZWdpc3RlciwKKyAgICAgICAgc2hpZnQ6IFZpcnR1YWxSZWdpc3RlcgorICAgIH0sCisgICAgbWFr
ZUFsbFNpZ25lZEFuZFVuc2lnbmVkVmFyaWFudHM6IHRydWUsCisgICAgc2tpcEZsb2F0VmFyaWFu
dHM6IHRydWUKKworc2ltZF9vcF9ncm91cCA6U2ltZFNhdEFyaXRobWV0aWMsCisgICAgWworICAg
ICAgICA6c2ltZF9hZGRfc2F0LAorICAgICAgICA6c2ltZF9zdWJfc2F0LAorICAgIF0sCisgICAg
YXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgbGhzOiBWaXJ0
dWFsUmVnaXN0ZXIsCisgICAgICAgIHJoczogVmlydHVhbFJlZ2lzdGVyCisgICAgfSwKKyAgICB2
YXJpYW50czogWyJpOHgxNl9zIiwgImk4eDE2X3UiLCAiaTE2eDhfcyIsICJpMTZ4OF91Il0KKwor
c2ltZF9vcF9ncm91cCA6U2ltZFRydW5jU2F0LAorICAgIFsKKyAgICAgICAgOnNpbWRfdHJ1bmNf
c2F0LAorICAgIF0sCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwK
KyAgICAgICAgdjogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisgICAgdmFyaWFudHM6IFsiZjMy
eDRfcyIsICJmMzJ4NF91IiwgImY2NHgyX3MiLCAiZjY0eDJfdSJdCisKK3NpbWRfb3BfZ3JvdXAg
OlNpbWRDb252ZXJ0LAorICAgIFsKKyAgICAgICAgOnNpbWRfY29udmVydCwKKyAgICBdLAorICAg
IGFyZ3M6IHsKKyAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHY6IFZpcnR1
YWxSZWdpc3RlciwKKyAgICB9LAorICAgIHZhcmlhbnRzOiBbImkzMng0X3MiLCAiaTMyeDRfdSJd
CisKK3NpbWRfb3BfZ3JvdXAgOlNpbWRDb252ZXJ0TG93LAorICAgIFsKKyAgICAgICAgOnNpbWRf
Y29udmVydF9sb3csCisgICAgXSwKKyAgICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJl
Z2lzdGVyLAorICAgICAgICB2OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwKKyAgICB2YXJpYW50
czogWyJpMzJ4NF9zIiwgImkzMng0X3UiXQorCitzaW1kX29wX2dyb3VwIDpTaW1kTmFycm93LAor
ICAgIFsKKyAgICAgICAgOnNpbWRfbmFycm93LAorICAgIF0sCisgICAgYXJnczogeworICAgICAg
ICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgbG93ZXI6IFZpcnR1YWxSZWdpc3RlciwK
KyAgICAgICAgdXBwZXI6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9LAorICAgIHZhcmlhbnRzOiBb
ImkxNng4X3MiLCAiaTE2eDhfdSIsICJpMzJ4NF9zIiwgImkzMng0X3UiXQorCitvcF9ncm91cCA6
TG9hZExhbmUsCisgICAgWworICAgICAgICA6c2ltZF9sb2FkX2xhbmU4LAorICAgICAgICA6c2lt
ZF9sb2FkX2xhbmUxNiwKKyAgICAgICAgOnNpbWRfbG9hZF9sYW5lMzIsCisgICAgICAgIDpzaW1k
X2xvYWRfbGFuZTY0LAorICAgIF0sCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxS
ZWdpc3RlciwKKyAgICAgICAgcG9pbnRlcjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICB2ZWN0
b3I6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAg
bGFuZUluZGV4OiB1aW50OF90LAorICAgIH0KKworb3BfZ3JvdXAgOlN0b3JlTGFuZSwKKyAgICBb
CisgICAgICAgIDpzaW1kX3N0b3JlX2xhbmU4LAorICAgICAgICA6c2ltZF9zdG9yZV9sYW5lMTYs
CisgICAgICAgIDpzaW1kX3N0b3JlX2xhbmUzMiwKKyAgICAgICAgOnNpbWRfc3RvcmVfbGFuZTY0
LAorICAgIF0sCisgICAgYXJnczogeworICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAor
ICAgICAgICBwb2ludGVyOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIG9mZnNldDogdW5zaWdu
ZWQsCisgICAgICAgIGxhbmVJbmRleDogdWludDhfdCwKKyAgICB9CisKK3NpbWRfb3BfZ3JvdXAg
OkxvYWRFeHRlbmQsCisgICAgWworICAgICAgICA6c2ltZF9sb2FkX2V4dGVuZAorICAgIF0sCisg
ICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgcG9pbnRl
cjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBvZmZzZXQ6IHVuc2lnbmVkLAorICAgIH0sCisg
ICAgdmFyaWFudHM6IFsiOHUiLCAiOHMiLCAiMTZ1IiwgIjE2cyIsICIzMnUiLCAiMzJzIl0KKwor
c2ltZF9vcF9ncm91cCA6U2ltZEFueVRydWUsCisgICAgWworICAgICAgICA6c2ltZF9hbnlfdHJ1
ZSwKKyAgICBdLAorICAgIGFyZ3M6IHsKKyAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisg
ICAgICAgIHY6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9LAorICAgIHZhcmlhbnRzOiBbInYxMjgi
XQorCitzaW1kX29wX2dyb3VwIDpTaW1kUmVkdWNlLAorICAgIFsKKyAgICAgICAgOnNpbWRfYWxs
X3RydWUsCisgICAgICAgIDpzaW1kX2JpdG1hc2ssCisgICAgXSwKKyAgICBhcmdzOiB7CisgICAg
ICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICB2OiBWaXJ0dWFsUmVnaXN0ZXIsCisg
ICAgfSwKKyAgICBza2lwRmxvYXRWYXJpYW50czogdHJ1ZQorCitzaW1kX29wX2dyb3VwIDpTaW1k
RXh0YWRkLAorICAgIFsKKyAgICAgICAgOnNpbWRfZXh0YWRkX3BhaXJ3aXNlLAorICAgIF0sCisg
ICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgdjogVmly
dHVhbFJlZ2lzdGVyLAorICAgIH0sCisgICAgdmFyaWFudHM6IFsiaTMyeDRfcyIsICJpMzJ4NF91
IiwgImkxNng4X3MiLCAiaTE2eDhfdSJdCisKK3NpbWRfb3BfZ3JvdXAgOlNpbWRBdmdSb3VuZCwK
KyAgICBbCisgICAgICAgIDpzaW1kX2F2Z19yb3VuZCwKKyAgICBdLAorICAgIGFyZ3M6IHsKKyAg
ICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGE6IFZpcnR1YWxSZWdpc3RlciwK
KyAgICAgICAgYjogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisgICAgdmFyaWFudHM6IFsiaTh4
MTYiLCAiaTE2eDgiXQorICAgIAorb3BfZ3JvdXAgOlNpbWRWMTI4Qmlub3AsCisgICAgWworICAg
ICAgICA6c2ltZF9tdWxfc2F0X2kxNng4LAorICAgICAgICA6c2ltZF9zd2l6emxlX2k4eDE2LAor
ICAgICAgICA6c2ltZF9kb3RfcHJvZHVjdF9pMzJ4NCwKKyAgICBdLAorICAgIGFyZ3M6IHsKKyAg
ICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGE6IFZpcnR1YWxSZWdpc3RlciwK
KyAgICAgICAgYjogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0KKworc2ltZF9vcF9ncm91cCA6U2lt
ZFNodWZmbGUsCisgICAgWworICAgICAgICA6c2ltZF9zaHVmZmxlLAorICAgIF0sCisgICAgYXJn
czogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgYTogVmlydHVhbFJl
Z2lzdGVyLAorICAgICAgICBiOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGltbV9sb3c6IHVp
bnRwdHJfdCwKKyAgICAgICAgaW1tX2hpZ2g6IHVpbnRwdHJfdCwKKyAgICB9LAorICAgIHZhcmlh
bnRzOiBbImkxNng4Il0KKworc2ltZF9vcF9ncm91cCA6U2ltZFYxMjhUZXJub3AsCisgICAgWwor
ICAgICAgICA6c2ltZF9iaXR3aXNlX3NlbGVjdCwKKyAgICBdLAorICAgIGFyZ3M6IHsKKyAgICAg
ICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGE6IFZpcnR1YWxSZWdpc3RlciwKKyAg
ICAgICAgYjogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBjOiBWaXJ0dWFsUmVnaXN0ZXIsCisg
ICAgfSwKKyAgICB2YXJpYW50czogWyJ2MTI4Il0KIAogZW5kX3NlY3Rpb24gOldhc20KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYjM3OWM5N2M5
ZGU5Li5hOTQ4N2Q5YzNmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC03OCw2ICs3OCw3IEBACiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uQ2Fj
aGUuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXIuaCIKICNpbmNsdWRlICJWTUlubGluZXMuaCIK
KyNpbmNsdWRlICJ3dGYvU3RkSW50RXh0cmFzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvU2ltcGxlU3RhdHMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRT
dHJlYW0uaD4KQEAgLTI0NjAsNyArMjQ2MSw3IEBAIHNpemVfdCBDb2RlQmxvY2s6OmxsaW50QmFz
ZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKQogCiBzaXplX3QgQ29kZUJs
b2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoY29uc3QgUmVnaXN0ZXJBdE9m
ZnNldExpc3QmIGNhbGxlZVNhdmVSZWdpc3RlcnMpCiB7Ci0gICAgcmV0dXJuIHJvdW5kQ2FsbGVl
U2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKGNhbGxlZVNhdmVSZWdpc3RlcnMuc2l6ZSgpKTsK
KyAgICByZXR1cm4gcm91bmRDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoY2FsbGVl
U2F2ZVJlZ2lzdGVycy5ieXRlU2l6ZSgpIC8gc2l6ZW9mKENQVVJlZ2lzdGVyKSk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNl
dHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRl
clNldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDAxOTU5MzZhN2EwNi4uYThkYjUwZTYxZGI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNl
dHRlckFjY2Vzc0Nhc2UuY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBHZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUs
IGNvbnMKICAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChyZWcpOwogICAgIGlm
IChqaXQuY29kZUJsb2NrKCktPnVzZURhdGFJQygpKQogICAgICAgICByZWdpc3RlcnNUb1NwaWxs
Rm9yQ0NhbGwuc2V0KHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwotICAgIHJlZ2lzdGVyc1RvU3Bp
bGxGb3JDQ2FsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JDQ2Fs
bCgpKTsKKyAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuZXhjbHVkZShSZWdpc3RlclNldDEy
ODo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKS5hbGxGdWxsUmVnaXN0ZXJzKCkpOwogCiAg
ICAgQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMgcGFyYW1zKHN0YXRlLm1fdm0sIFdURk1vdmUocmVn
cyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKICAgICBzbmlwcGV0
LT5nZW5lcmF0b3IoKS0+cnVuKGppdCwgcGFyYW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKaW5kZXggZmI1ZWVhMmRjYmFmLi4yMzZlOGRk
YzE0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVB
Y2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nl
c3MuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgYm9vbCBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2Vs
ZlByb3BlcnR5QWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHUKIAogQUxX
QVlTX0lOTElORSBzdGF0aWMgR1BSUmVnIGdldFNjcmF0Y2hSZWdpc3RlcihTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRv
cihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsKKyAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3Ig
YWxsb2NhdG9yKFJlZ2lzdGVyU2V0MTI4Ojp1c2U2NEJpdHMoc3R1YkluZm8udXNlZFJlZ2lzdGVy
cykpOwogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VHUFIpOwogICAgIGFsbG9jYXRv
ci5sb2NrKHN0dWJJbmZvLnZhbHVlR1BSKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCmluZGV4IDlkMTRjMjhmODdkZi4uYmI1NDI5
YzY0YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2Rl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC05MSw4
ICs5MSw4IEBAIGV4dGVybiBjb25zdCB1bnNpZ25lZCB3YXNtT3Bjb2RlTGVuZ3Roc1tdOwogCiBz
dGF0aWNfYXNzZXJ0KE5VTUJFUl9PRl9CWVRFQ09ERV9JRFMgPCAyNTUpOwogc3RhdGljIGNvbnN0
ZXhwciBPcGNvZGVTaXplIG1heEpTT3Bjb2RlSURXaWR0aCA9IE9wY29kZVNpemU6Ok5hcnJvdzsK
LXN0YXRpY19hc3NlcnQoTlVNQkVSX09GX1dBU01fSURTIDwgMjU1KTsKLXN0YXRpYyBjb25zdGV4
cHIgT3Bjb2RlU2l6ZSBtYXhXYXNtT3Bjb2RlSURXaWR0aCA9IE9wY29kZVNpemU6Ok5hcnJvdzsK
K3N0YXRpY19hc3NlcnQoTlVNQkVSX09GX1dBU01fSURTIDwgMTAyNCk7CitzdGF0aWMgY29uc3Rl
eHByIE9wY29kZVNpemUgbWF4V2FzbU9wY29kZUlEV2lkdGggPSBPcGNvZGVTaXplOjpXaWRlMTY7
CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heEpTQnl0ZWNvZGVTdHJ1Y3RMZW5ndGggPSAv
KiBPcGNvZGUgKi8gbWF4SlNPcGNvZGVJRFdpZHRoICsgLyogV2lkZTMyIE9wY29kZSAqLyAxICsg
LyogT3BlcmFuZHMgKi8gTUFYX0xFTkdUSF9PRl9CWVRFQ09ERV9JRFMgKiA0Owogc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBtYXhXYXNtQnl0ZWNvZGVTdHJ1Y3RMZW5ndGggPSAvKiBPcGNvZGUg
Ki8gbWF4V2FzbU9wY29kZUlEV2lkdGggKyAvKiBXaWRlMzIgT3Bjb2RlICovIDEgKyAvKiBPcGVy
YW5kcyAqLyBNQVhfTEVOR1RIX09GX1dBU01fSURTICogNDsKIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbWF4Qnl0ZWNvZGVTdHJ1Y3RMZW5ndGggPSBzdGQ6Om1heChtYXhKU0J5dGVjb2RlU3Ry
dWN0TGVuZ3RoLCBtYXhXYXNtQnl0ZWNvZGVTdHJ1Y3RMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggYjQ3
MTE2ZGZlZGU2Li5iY2VkMGM0Y2M3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtOTQsOSArOTQsOSBAQCBjb25z
dCBSZWdpc3RlclNldCYgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpsaXZlUmVnaXN0ZXJzVG9QcmVz
ZXJ2ZUF0RXhjZXB0aW9uSGFuZAogCiBzdGF0aWMgUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lz
dGVycygpCiB7Ci0gICAgUmVnaXN0ZXJTZXQgcmVzdWx0ID0gUmVnaXN0ZXJTZXQ6OnJlZ2lzdGVy
c1RvTm90U2F2ZUZvckpTQ2FsbCgpOwotICAgIHJlc3VsdC5maWx0ZXIoUmVnaXN0ZXJTZXQ6OnJl
Z2lzdGVyc1RvTm90U2F2ZUZvckNDYWxsKCkpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgUmVn
aXN0ZXJTZXQxMjggcmVzdWx0ID0gUmVnaXN0ZXJTZXQxMjg6OnJlZ2lzdGVyc1RvTm90U2F2ZUZv
ckpTQ2FsbCgpOworICAgIHJlc3VsdC5maWx0ZXIoUmVnaXN0ZXJTZXQxMjg6OnJlZ2lzdGVyc1Rv
Tm90U2F2ZUZvckNDYWxsKCkpOworICAgIHJldHVybiByZXN1bHQuYWxsUmVnaXN0ZXJzKCk7CiB9
CiAKIGNvbnN0IFJlZ2lzdGVyU2V0JiBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OmNhbGN1bGF0ZUxp
dmVSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcoKQpAQCAtMTA5LDcgKzEwOSw3
IEBAIGNvbnN0IFJlZ2lzdGVyU2V0JiBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OmNhbGN1bGF0ZUxp
dmVSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0CiAgICAgICAgIGlmIChtX25lZWRzVG9SZXN0b3Jl
UmVnaXN0ZXJzSWZFeGNlcHRpb24pCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2Rl
Ojppc09wdGltaXppbmdKSVQoaml0LT5jb2RlQmxvY2soKS0+aml0VHlwZSgpKSk7CiAKLSAgICAg
ICAgbV9saXZlUmVnaXN0ZXJzRm9yQ2FsbCA9IFJlZ2lzdGVyU2V0KG1fbGl2ZVJlZ2lzdGVyc1Rv
UHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGUsIGFsbG9jYXRvci0+dXNlZFJlZ2lz
dGVycygpKTsKKyAgICAgICAgbV9saXZlUmVnaXN0ZXJzRm9yQ2FsbCA9IFJlZ2lzdGVyU2V0KG1f
bGl2ZVJlZ2lzdGVyc1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGUsIGFsbG9j
YXRvci0+dXNlZFJlZ2lzdGVycygpLmFsbFJlZ2lzdGVycygpKTsKICAgICAgICAgaWYgKGppdC0+
Y29kZUJsb2NrKCktPnVzZURhdGFJQygpKQogICAgICAgICAgICAgbV9saXZlUmVnaXN0ZXJzRm9y
Q2FsbC5hZGQoc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOwogICAgICAgICBtX2xpdmVSZWdpc3Rl
cnNGb3JDYWxsLmV4Y2x1ZGUoY2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKQEAgLTEyMyw3ICsxMjMs
NyBAQCBhdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9T
dGFja0ZvckNhbGwoY29uc3QgUmVnaXN0ZXJTZQogICAgIGxpdmVSZWdpc3RlcnMubWVyZ2UoZXh0
cmEpOwogCiAgICAgdW5zaWduZWQgZXh0cmFTdGFja1BhZGRpbmcgPSAwOwotICAgIHVuc2lnbmVk
IG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiA9IFNjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCgqaml0LCBs
aXZlUmVnaXN0ZXJzLCBleHRyYVN0YWNrUGFkZGluZyk7CisgICAgdW5zaWduZWQgbnVtYmVyT2ZT
dGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKCpqaXQsIFJlZ2lzdGVyU2V0
MTI4Ojp1c2U2NEJpdHMobGl2ZVJlZ2lzdGVycyksIGV4dHJhU3RhY2tQYWRkaW5nKTsKICAgICBy
ZXR1cm4gU3BpbGxTdGF0ZSB7CiAgICAgICAgIFdURk1vdmUobGl2ZVJlZ2lzdGVycyksCiAgICAg
ICAgIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbgpAQCAtMTMy
LDE1ICsxMzIsMTUgQEAgYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJl
Z2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2UKIAogYXV0byBBY2Nlc3NHZW5l
cmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4
Y2VwdGlvbnMoKSAtPiBTcGlsbFN0YXRlCiB7Ci0gICAgUmVnaXN0ZXJTZXQgbGl2ZVJlZ2lzdGVy
cyA9IGFsbG9jYXRvci0+dXNlZFJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyU2V0MTI4IGxpdmVS
ZWdpc3RlcnMgPSBhbGxvY2F0b3ItPnVzZWRSZWdpc3RlcnMoKTsKICAgICBpZiAoaml0LT5jb2Rl
QmxvY2soKS0+dXNlRGF0YUlDKCkpCiAgICAgICAgIGxpdmVSZWdpc3RlcnMuYWRkKHN0dWJJbmZv
LT5tX3N0dWJJbmZvR1BSKTsKLSAgICBsaXZlUmVnaXN0ZXJzLmV4Y2x1ZGUoY2FsbGVlU2F2ZVJl
Z2lzdGVycygpKTsKKyAgICBsaXZlUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQxMjg6OnVz
ZTY0Qml0cyhjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpKTsKIAogICAgIGNvbnN0ZXhwciB1bnNpZ25l
ZCBleHRyYVN0YWNrUGFkZGluZyA9IDA7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVz
VXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpw
cmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKCpqaXQsIGxpdmVSZWdpc3RlcnMsIGV4dHJh
U3RhY2tQYWRkaW5nKTsKICAgICByZXR1cm4gU3BpbGxTdGF0ZSB7Ci0gICAgICAgIFdURk1vdmUo
bGl2ZVJlZ2lzdGVycyksCisgICAgICAgIGxpdmVSZWdpc3RlcnMuYWxsUmVnaXN0ZXJzKCksCiAg
ICAgICAgIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbgogICAg
IH07CiB9CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJl
c3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNlcHQKIHZvaWQg
QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpyZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNh
bGwoY29uc3QgU3BpbGxTdGF0ZSYgc3BpbGxTdGF0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIGRvbnRS
ZXN0b3JlKQogewogICAgIHVuc2lnbmVkIGV4dHJhU3RhY2tQYWRkaW5nID0gMDsKLSAgICBTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKCpq
aXQsIHNwaWxsU3RhdGUuc3BpbGxlZFJlZ2lzdGVycywgZG9udFJlc3RvcmUsIHNwaWxsU3RhdGUu
bnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uLCBleHRyYVN0YWNr
UGFkZGluZyk7CisgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlUmVnaXN0ZXJz
RnJvbVN0YWNrRm9yQ2FsbCgqaml0LCBSZWdpc3RlclNldDEyODo6dXNlNjRCaXRzKHNwaWxsU3Rh
dGUuc3BpbGxlZFJlZ2lzdGVycyksIGRvbnRSZXN0b3JlLCBzcGlsbFN0YXRlLm51bWJlck9mU3Rh
Y2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiwgZXh0cmFTdGFja1BhZGRpbmcpOwog
fQogCiBDYWxsU2l0ZUluZGV4IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6Y2FsbFNpdGVJbmRleEZv
ckV4Y2VwdGlvbkhhbmRsaW5nT3JPcmlnaW5hbCgpCkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGU6OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIoKQogCiBT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjptYWtlRGVmYXVs
dFNjcmF0Y2hBbGxvY2F0b3IoR1BSUmVnIGV4dHJhVG9Mb2NrKQogewotICAgIFNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMpOworICAgIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3IoUmVnaXN0ZXJTZXQxMjg6OnVzZTY0Qml0
cyhzdHViSW5mby0+dXNlZFJlZ2lzdGVycykpOwogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZv
LT5iYXNlUmVncygpKTsKICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgIGFsbG9j
YXRvci5sb2NrKHUudGhpc0dQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50
cnkuY3BwCmluZGV4IDExMzJjZjBkOWY2NS4uMDQyYzZjZDgxMmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiREZHT1NSRW50cnkuaCIKKyNpbmNsdWRlICJ3dGYvU3Rk
SW50RXh0cmFzLmgiCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIApAQCAtMjk4LDcgKzI5OSw4IEBA
IHZvaWQqIHByZXBhcmVPU1JFbnRyeShWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvCiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENh
bGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOwog
ICAgIFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJT
ZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOwogCi0gICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IHJl
Z2lzdGVyU2F2ZUxvY2F0aW9ucy0+c2l6ZSgpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQg
PSByZWdpc3RlclNhdmVMb2NhdGlvbnMtPmNvdW50KCk7CisgICAgQVNTRVJUKHJlZ2lzdGVyQ291
bnQgPT0gcmVnaXN0ZXJTYXZlTG9jYXRpb25zLT5ieXRlU2l6ZSgpIC8gc2l6ZW9mKENQVVJlZ2lz
dGVyKSk7CiAgICAgVk1FbnRyeVJlY29yZCogcmVjb3JkID0gdm1FbnRyeVJlY29yZCh2bS50b3BF
bnRyeUZyYW1lKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsg
aSsrKSB7CiAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgY3VycmVudEVudHJ5ID0gcmVnaXN0ZXJT
YXZlTG9jYXRpb25zLT5hdChpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRleCA1ODRmZmQ4ODU2YjEuLjlmYjE4
YTMwMWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBi
YXNlbGluZUNvCiBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgY2FsbGVlU2F2ZVNsb3QoSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2ssIEdQ
UlJlZyBjYWxsZWVTYXZlKQogewogICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxs
ZWVTYXZlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5qaXRDb2RlKCktPmNhbGxlZVNhdmVSZWdpc3Rl
cnMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbGVlU2F2ZXMtPnNpemUoKTsg
aSsrKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxlZVNhdmVzLT5jb3VudCgp
OyBpKyspIHsKICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5h
dChpKTsKICAgICAgICAgaWYgKGVudHJ5LnJlZygpICE9IGNhbGxlZVNhdmUpCiAgICAgICAgICAg
ICBjb250aW51ZTsKQEAgLTQyNCw3ICs0MjQsNyBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1Rhcmdl
dChWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAg
ICB9CiAKICAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkgewotICAgICAgICBBU1NF
UlQoIVJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKS5jb250YWlucyhMTEludDo6
UmVnaXN0ZXJzOjpwY0dQUikpOworICAgICAgICBBU1NFUlQoIVJlZ2lzdGVyU2V0MTI4Ojp2bUNh
bGxlZVNhdmVSZWdpc3RlcnMoKS5jb250YWlucyhMTEludDo6UmVnaXN0ZXJzOjpwY0dQUikpOwog
ICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIo
dm0udG9wRW50cnlGcmFtZSwgQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKExMSW50
OjpSZWdpc3RlcnM6OnBjR1BSKSk7CiAKICAgICAgICAgLy8gU2luY2Ugd2UncmUganVtcGluZyB0
byBvcF9jYXRjaCwgd2UgbmVlZCB0byBzZXQgY2FsbEZyYW1lRm9yQ2F0Y2guCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAppbmRl
eCBkYmEwZmUzMjJiZjguLjk2OGI1NjgxOTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCkBAIC01NSw2ICs1NSw3IEBA
IHZvaWQgYWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGVyVGh1bmsoTWFjcm9Bc3Nl
bWJsZXImIGppdCwgVk0mIHZtLCBKSVRUCiAgICAgICAgIHJlZ2lzdGVyc1RvUHJlc2VydmUubWVy
Z2UoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICB9CiAKKyAgICBB
U1NFUlQoIXJlZ2lzdGVyc1RvUHJlc2VydmUubnVtYmVyT2ZTZXRGUFJzKCkpOwogICAgIHNpemVf
dCBzY3JhdGNoU2l6ZSA9IHNpemVvZih2b2lkKikgKiByZWdpc3RlcnNUb1ByZXNlcnZlLm51bWJl
ck9mU2V0R1BScygpOwogICAgIGlmIChpc0ZUTE9TUkV4aXQpCiAgICAgICAgIHNjcmF0Y2hTaXpl
ICs9IHNpemVvZih2b2lkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IDM2MGUxODE4M2VjYi4uYWVkZmU0MTAyMDE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTU3
ODMsMTAgKzE1NzgzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgUmVnaXN0ZXJT
ZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICBpZiAoc3BpbGxN
b2RlID09IERvbnRTcGlsbCkgewogICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGZsdXNoZWQgcmVn
aXN0ZXJzIHRvIHRoZSBzdGFjaywgd2UgZG9uJ3QgbmVlZCB0byBzcGlsbCB0aGVzZS4KLSAgICAg
ICAgdXNlZFJlZ2lzdGVycy5zZXQoYmFzZUdQUiwgZmFsc2UpOwotICAgICAgICB1c2VkUmVnaXN0
ZXJzLnNldCh2YWx1ZVJlZ3MsIGZhbHNlKTsKKyAgICAgICAgdXNlZFJlZ2lzdGVycy5jbGVhcihi
YXNlR1BSKTsKKyAgICAgICAgdXNlZFJlZ2lzdGVycy5jbGVhcih2YWx1ZVJlZ3MpOwogICAgICAg
ICBpZiAoc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKLSAgICAgICAgICAgIHVzZWRSZWdp
c3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CisgICAgICAgICAgICB1c2VkUmVnaXN0ZXJz
LmNsZWFyKHN0dWJJbmZvR1BSKTsKICAgICB9CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9
IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJ
Zk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIGdlbigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IGE5MTJlYjU5OGI5OC4uYWJhMzllOGUyOWNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTE1
OSwxMCArMTU5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnCiAgICAgUmVnaXN0ZXJTZXQg
dXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICBpZiAoc3BpbGxNb2Rl
ID09IERvbnRTcGlsbCkgewogICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGZsdXNoZWQgcmVnaXN0
ZXJzIHRvIHRoZSBzdGFjaywgd2UgZG9uJ3QgbmVlZCB0byBzcGlsbCB0aGVzZS4KLSAgICAgICAg
dXNlZFJlZ2lzdGVycy5zZXQoYmFzZUdQUiwgZmFsc2UpOwotICAgICAgICB1c2VkUmVnaXN0ZXJz
LnNldChyZXN1bHRHUFIsIGZhbHNlKTsKKyAgICAgICAgdXNlZFJlZ2lzdGVycy5jbGVhcihiYXNl
R1BSKTsKKyAgICAgICAgdXNlZFJlZ2lzdGVycy5jbGVhcihyZXN1bHRHUFIpOwogICAgICAgICBp
ZiAoc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKLSAgICAgICAgICAgIHVzZWRSZWdpc3Rl
cnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CisgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLmNs
ZWFyKHN0dWJJbmZvR1BSKTsKICAgICB9CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCAmbV9qaXQuaml0Q29kZSgpLT5jb21tb24ubV9zdHVi
SW5mb3MsIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3Rl
cnMsIGlkZW50aWZpZXIsCkBAIC0xOTUsMTEgKzE5NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFz
ZUdQUgogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFu
ZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9z
dHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVz
ZWRSZWdpc3RlcnMoKTsKICAgICAvLyBXZSd2ZSBhbHJlYWR5IGZsdXNoZWQgcmVnaXN0ZXJzIHRv
IHRoZSBzdGFjaywgd2UgZG9uJ3QgbmVlZCB0byBzcGlsbCB0aGVzZS4KLSAgICB1c2VkUmVnaXN0
ZXJzLnNldChiYXNlR1BSLCBmYWxzZSk7Ci0gICAgdXNlZFJlZ2lzdGVycy5zZXQodGhpc0dQUiwg
ZmFsc2UpOwotICAgIHVzZWRSZWdpc3RlcnMuc2V0KHJlc3VsdEdQUiwgZmFsc2UpOworICAgIHVz
ZWRSZWdpc3RlcnMuY2xlYXIoYmFzZUdQUik7CisgICAgdXNlZFJlZ2lzdGVycy5jbGVhcih0aGlz
R1BSKTsKKyAgICB1c2VkUmVnaXN0ZXJzLmNsZWFyKHJlc3VsdEdQUik7CiAgICAgaWYgKHN0dWJJ
bmZvR1BSICE9IEludmFsaWRHUFJSZWcpCi0gICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHN0dWJJ
bmZvR1BSLCBmYWxzZSk7CisgICAgICAgIHVzZWRSZWdpc3RlcnMuY2xlYXIoc3R1YkluZm9HUFIp
OwogICAgIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCiAgICAgICAgIG1f
aml0LmNvZGVCbG9jaygpLCAmbV9qaXQuaml0Q29kZSgpLT5jb21tb24ubV9zdHViSW5mb3MsIEpJ
VFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50
aWZpZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKaW5kZXggMGM0ZDE5
NWQ5MTQ4Li5jNTM3MTNhMzk5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5r
cy5jcHAKQEAgLTI1LDEwICsyNSwxMiBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiREZHVGh1bmtzLmgiCisjaW5jbHVkZSAid3RmL1N0ZEludEV4dHJhcy5oIgogCiAjaWYgRU5B
QkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIgorI2lu
Y2x1ZGUgIkIzV2lkdGguaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJE
RkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgpAQCAtNDcsNyArNDksNyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckV4aXRHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIC8vIFRoaXMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSB3
ZSB1c2UgdGhlIHNjcmF0Y2ggYnVmZmVyIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBhbHNvIHVzZXMg
dGhlIHNjcmF0Y2ggYnVmZmVyLgogICAgIGFkanVzdEZyYW1lQW5kU3RhY2tJbk9TUkV4aXRDb21w
aWxlclRodW5rPERGRzo6SklUQ29kZT4oaml0LCB2bSwgSklUVHlwZTo6REZHSklUKTsKICAgICAK
LSAgICBzaXplX3Qgc2NyYXRjaFNpemUgPSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogKEdQUklu
Zm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMpOworICAg
IHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBHUFJJbmZvOjpu
dW1iZXJPZlJlZ2lzdGVycyArIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0
aEZvckMoQjM6OkZQKSkgKiBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsKICAgICBTY3JhdGNo
QnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUoc2NyYXRjaFNp
emUpOwogICAgIEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNW
YWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7CiAKQEAgLTc5LDEzICs4MSwxMyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckV4aXRHZW5lcmF0aW9u
VGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gZmlyc3RHUFI7
IGkgPCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CiAgICAgICAgIHB0cmRpZmZf
dCBvZmZzZXQgPSBpICogc2l6ZW9mKENQVVJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmVTcG9vbGVy
LnN0b3JlR1BSKHsgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgb2Zmc2V0IH0pOworICAgICAgICBz
dG9yZVNwb29sZXIuc3RvcmVHUFIoeyBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBvZmZzZXQsIHNp
emVvZihDUFVSZWdpc3RlcikgfSk7CiAgICAgfQogICAgIHN0b3JlU3Bvb2xlci5maW5hbGl6ZUdQ
UigpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVn
aXN0ZXJzOyArK2kpIHsKLSAgICAgICAgcHRyZGlmZl90IG9mZnNldCA9IChHUFJJbmZvOjpudW1i
ZXJPZlJlZ2lzdGVycyArIGkpICogc2l6ZW9mKGRvdWJsZSk7Ci0gICAgICAgIHN0b3JlU3Bvb2xl
ci5zdG9yZUZQUih7IEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIG9mZnNldCB9KTsKKyAgICAgICAg
cHRyZGlmZl90IG9mZnNldCA9IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICogc2l6ZW9mKENQ
VVJlZ2lzdGVyKSArIGkgKiBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGhG
b3JDKEIzOjpGUCkpOworICAgICAgICBzdG9yZVNwb29sZXIuc3RvcmVGUFIoeyBGUFJJbmZvOjp0
b1JlZ2lzdGVyKGkpLCBvZmZzZXQsIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVX
aWR0aEZvckMoQjM6OkZQKSkgfSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdp
ZHRoRm9yQyhCMzo6RlApKSk7CiAgICAgfQogICAgIHN0b3JlU3Bvb2xlci5maW5hbGl6ZUZQUigp
OwogCkBAIC0xMDAsMTMgKzEwMiwxMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gZmlyc3RHUFI7IGkgPCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsg
KytpKSB7CiAgICAgICAgIHB0cmRpZmZfdCBvZmZzZXQgPSBpICogc2l6ZW9mKENQVVJlZ2lzdGVy
KTsKLSAgICAgICAgbG9hZFNwb29sZXIubG9hZEdQUih7IEdQUkluZm86OnRvUmVnaXN0ZXIoaSks
IG9mZnNldCB9KTsKKyAgICAgICAgbG9hZFNwb29sZXIubG9hZEdQUih7IEdQUkluZm86OnRvUmVn
aXN0ZXIoaSksIG9mZnNldCwgc2l6ZW9mKENQVVJlZ2lzdGVyKX0pOwogICAgIH0KICAgICBsb2Fk
U3Bvb2xlci5maW5hbGl6ZUdQUigpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgcHRyZGlmZl90IG9mZnNl
dCA9IChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpICogc2l6ZW9mKGRvdWJsZSk7Ci0g
ICAgICAgIGxvYWRTcG9vbGVyLmxvYWRGUFIoeyBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBvZmZz
ZXQgfSk7CisgICAgICAgIHB0cmRpZmZfdCBvZmZzZXQgPSBHUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVycyAqIHNpemVvZihDUFVSZWdpc3RlcikgKyBpICogQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNv
bnNlcnZhdGl2ZVdpZHRoRm9yQyhCMzo6RlApKTsKKyAgICAgICAgbG9hZFNwb29sZXIubG9hZEZQ
Uih7IEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIG9mZnNldCwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6
OmNvbnNlcnZhdGl2ZVdpZHRoRm9yQyhCMzo6RlApKSB9LCBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6
Y29uc2VydmF0aXZlV2lkdGhGb3JDKEIzOjpGUCkpKTsKICAgICB9CiAgICAgbG9hZFNwb29sZXIu
ZmluYWxpemVGUFIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fz
c2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNh
c3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAKaW5kZXggOGQ0ZDEyOTUxNWQ2Li5iYWMyZjE4
YjczNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJN
NjQvQTY0RE9wY29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxl
ci9BUk02NC9BNjRET3Bjb2RlLmNwcApAQCAtNzQsNiArNzQsOCBAQCBzdGF0aWMgY29uc3QgT3Bj
b2RlR3JvdXBJbml0aWFsaXplciBvcGNvZGVHcm91cExpc3RbXSA9IHsKICAgICBPUENPREVfR1JP
VVBfRU5UUlkoMHgwYiwgQTY0RE9wY29kZUFkZFN1YnRyYWN0U2hpZnRlZFJlZ2lzdGVyKSwKICAg
ICBPUENPREVfR1JPVVBfRU5UUlkoMHgwYywgQTY0RE9wY29kZUxvYWRTdG9yZVJlZ2lzdGVyUGFp
ciksCiAgICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MGQsIEE2NERPcGNvZGVMb2FkU3RvcmVSZWdp
c3RlclBhaXIpLAorICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDBlLCBBNjRET3Bjb2RlVmVjdG9y
RGF0YVByb2Nlc3NpbmdMb2dpY2FsMVNvdXJjZSksCisgICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4
MGUsIEE2NERPcGNvZGVWZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwyU291cmNlKSwKICAgICBP
UENPREVfR1JPVVBfRU5UUlkoMHgxMSwgQTY0RE9wY29kZUFkZFN1YnRyYWN0SW1tZWRpYXRlKSwK
ICAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxMiwgQTY0RE9wY29kZU1vdmVXaWRlKSwKICAgICBP
UENPREVfR1JPVVBfRU5UUlkoMHgxMiwgQTY0RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGUpLApAQCAt
MTY0Myw2ICsxNjQ1LDU2IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVVbmNvbmRpdGlvbmFsQnJh
bmNoUmVnaXN0ZXI6OmZvcm1hdCgpCiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCitj
b25zdCBjaGFyKiBBNjRET3Bjb2RlVmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsMVNvdXJjZTo6
Zm9ybWF0KCkKK3sKKyAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUob3BOYW1lKCkpOworICAgIGFw
cGVuZFNpbWRMYW5lSW5kZXhBbmRUeXBlKChxKCkgPDwgNikgfCBpbW01KCkpOworICAgIGFwcGVu
ZFNlcGFyYXRvcigpOworICAgIGFwcGVuZFJlZ2lzdGVyTmFtZShyZCgpKTsKKyAgICBhcHBlbmRT
ZXBhcmF0b3IoKTsKKyAgICBhcHBlbmRSZWdpc3Rlck5hbWUocnQoKSk7CisgICAgYXBwZW5kU2Vw
YXJhdG9yKCk7CisgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOworfQorCitjb25zdCBjaGFyKiBB
NjRET3Bjb2RlVmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsMVNvdXJjZTo6b3BOYW1lKCkKK3sK
KyAgICBzd2l0Y2ggKG9wMTBfMTUoKSkgeworICAgIGNhc2UgMGIwMDAxMTE6CisgICAgICAgIHJl
dHVybiAiaW5zIjsKKyAgICBjYXNlIDBiMDAxMTExOgorICAgICAgICByZXR1cm4gInVtb3YiOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIGRhdGFMb2dMbigiRGlzc2Fzc2VtYmxlciBzYXcgdW5rbm93
biBzaW1kIG9uZSBzb3VyY2UgaW5zdHJ1Y3Rpb24gb3Bjb2RlICIsIG9wMTBfMTUoKSk7CisgICAg
ICAgIHJldHVybiAiU0lNRFVLIjsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIqIEE2NERPcGNvZGVW
ZWN0b3JEYXRhUHJvY2Vzc2luZ0xvZ2ljYWwyU291cmNlOjpmb3JtYXQoKQoreworICAgIGFwcGVu
ZEluc3RydWN0aW9uTmFtZShvcE5hbWUoKSk7CisgICAgYXBwZW5kU2ltZExhbmVUeXBlKHEoKSk7
CisgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgYXBwZW5kUmVnaXN0ZXJOYW1lKHJkKCkpOwor
ICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgIGFwcGVuZFJlZ2lzdGVyTmFtZShybigpKTsKKyAg
ICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICBhcHBlbmRSZWdpc3Rlck5hbWUocm0oKSk7CisgICAg
YXBwZW5kU2VwYXJhdG9yKCk7CisgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOworfQorCitjb25z
dCBjaGFyKiBBNjRET3Bjb2RlVmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsMlNvdXJjZTo6b3BO
YW1lKCkKK3sKKyAgICBzd2l0Y2ggKG9wMTBfMTUoKSkgeworICAgIGNhc2UgMGIwMDExMToKKyAg
ICAgICAgcmV0dXJuICJvcnIiOworICAgIGRlZmF1bHQ6CisgICAgICAgIGRhdGFMb2dMbigiRGlz
c2Fzc2VtYmxlciBzYXcgdW5rbm93biBzaW1kIDIgc291cmNlIGluc3RydWN0aW9uIG9wY29kZSAi
LCBvcDEwXzE1KCkpOworICAgICAgICByZXR1cm4gIlNJTURVSyI7CisgICAgfQorfQorCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QVJNNjREaXNhc3NlbWJsZXIKIAogI2VuZGlmIC8vIEVOQUJMRShB
Uk02NF9ESVNBU1NFTUJMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlz
YXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNh
c3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oCmluZGV4IGZhZmViZWE2NzE4Ni4uZTg5NWMyZDA4
YTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0
L0E2NERPcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FS
TTY0L0E2NERPcGNvZGUuaApAQCAtMTk0LDYgKzE5NCw0MCBAQCBwcm90ZWN0ZWQ6CiAgICAgewog
ICAgICAgICBidWZmZXJQcmludGYoImxzbCAjJXUiLCAxNiAqIGFtb3VudCk7CiAgICAgfQorICAg
IAorICAgIHZvaWQgYXBwZW5kU2ltZExhbmVJbmRleEFuZFR5cGUodW5zaWduZWQgaW1tNikKKyAg
ICB7CisgICAgICAgIHVuc2lnbmVkIGxhbmUgPSAwOworICAgICAgICBpZiAoKGltbTYgJiAwYjEw
MDAwMSkgPT0gMGIwMDAwMDEpIHsKKyAgICAgICAgICAgIGJ1ZmZlclByaW50ZigiLjhCIik7Cisg
ICAgICAgICAgICBsYW5lID0gKChpbW02ICYgMGIwMTExMTApID4+IDEpOworICAgICAgICB9IGVs
c2UgaWYgKChpbW02ICYgMGIxMDAwMDEpID09IDBiMDAwMDAxKSB7CisgICAgICAgICAgICBidWZm
ZXJQcmludGYoIi4xNkIiKTsKKyAgICAgICAgICAgIGxhbmUgPSAoKGltbTYgJiAwYjAxMTExMCkg
Pj4gMSk7CisgICAgICAgIH0gZWxzZSBpZiAoKGltbTYgJiAwYjEwMDAxMSkgPT0gMGIwMDAwMTAp
IHsKKyAgICAgICAgICAgIGJ1ZmZlclByaW50ZigiLkgiKTsKKyAgICAgICAgICAgIGxhbmUgPSAo
KGltbTYgJiAwYjAxMTEwMCkgPj4gMik7CisgICAgICAgIH0gZWxzZSBpZiAoKGltbTYgJiAwYjEw
MDExMSkgPT0gMGIwMDAxMDApIHsKKyAgICAgICAgICAgIGJ1ZmZlclByaW50ZigiLlMiKTsKKyAg
ICAgICAgICAgIGxhbmUgPSAoKGltbTYgJiAwYjAxMTAwMCkgPj4gMyk7CisgICAgICAgICAgICAv
LyBUaGlzIGlzIG92ZXJseSBwZXJtaXNzaXZlOyBmb3Igc29tZSBpbnN0cnVjdGlvbnMgKGxpa2Ug
dW1vdiksIGJpdCA2IG11c3QgYmUgMS4KKyAgICAgICAgfSBlbHNlIGlmICgoaW1tNiAmIDBiMDAx
MTExKSA9PSAwYjAwMTAwMCkgeworICAgICAgICAgICAgYnVmZmVyUHJpbnRmKCIuRCIpOworICAg
ICAgICAgICAgbGFuZSA9ICgoaW1tNiAmIDBiMDEwMDAwKSA+PiA0KTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiRGlzc2Fzc2VtYmxlciBzYXcgaW52YWxpZCBzaW1k
IGxhbmUgdHlwZSAiLCBpbW02KTsKKyAgICAgICAgICAgIGJ1ZmZlclByaW50ZigiLklOVkFMSURf
TEFORV9UWVBFIik7CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyUHJpbnRmKCJbIyV1XSIsIGxh
bmUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFwcGVuZFNpbWRMYW5lVHlwZSh1bnNpZ25lZCBx
KQorICAgIHsKKyAgICAgICAgaWYgKHEpCisgICAgICAgICAgICBidWZmZXJQcmludGYoIi4xNkIi
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnVmZmVyUHJpbnRmKCIuOEIiKTsKKyAgICB9
CiAKICAgICBzdGF0aWMgY29uc3RleHByIGludCBidWZmZXJTaXplID0gODE7CiAKQEAgLTkyOSw2
ICs5NjMsNDIgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHJtKCkgeyByZXR1cm4gcmQoKTsgfQog
fTsKIAorY2xhc3MgQTY0RE9wY29kZVZlY3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbDFTb3VyY2Ug
OiBwdWJsaWMgQTY0RE9wY29kZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
MzJfdCBtYXNrICAgID0gMGIxMDEnMTExMTEnMTEnMScwMDAwMDAwMDAwMDAwMDAwMDAwMDA7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMGIwMDAnMDExMTAnMDAnMCcw
MDAwMDAwMDAwMDAwMDAwMDAwMDA7CisKKyAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bj
b2RlVmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsMVNvdXJjZSwgdGhpc09iaik7CisKKyAgICBj
b25zdCBjaGFyKiBmb3JtYXQoKTsKKyAgICBjb25zdCBjaGFyKiBvcE5hbWUoKTsKKyAgICAKKyAg
ICB1bnNpZ25lZCByZCgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAwKSAmIDBiMTExMTE7IH0KKyAg
ICB1bnNpZ25lZCBydCgpIHsgcmV0dXJuIChtX29wY29kZSA+PiA1KSAmIDBiMTExMTE7IH0KKyAg
ICB1bnNpZ25lZCBvcDEwXzE1KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDEwKSAmIDBiMTExMTE7
IH0KKyAgICB1bnNpZ25lZCBpbW01KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDE2KSAmIDBiMTEx
MTE7IH0KKyAgICB1bnNpZ25lZCBxKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDMwKSAmIDBiMTsg
fQorfTsKKworY2xhc3MgQTY0RE9wY29kZVZlY3RvckRhdGFQcm9jZXNzaW5nTG9naWNhbDJTb3Vy
Y2UgOiBwdWJsaWMgQTY0RE9wY29kZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50MzJfdCBtYXNrICAgID0gMGIxMDEnMTExMTEnMTEnMScwMDAwMDAwMDAwMDAwMDAwMDAwMDA7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMGIwMDAnMDExMTAnMTAn
MScwMDAwMDAwMDAwMDAwMDAwMDAwMDA7CisKKyAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRE
T3Bjb2RlVmVjdG9yRGF0YVByb2Nlc3NpbmdMb2dpY2FsMlNvdXJjZSwgdGhpc09iaik7CisKKyAg
ICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKyAgICBjb25zdCBjaGFyKiBvcE5hbWUoKTsKKyAgICAK
KyAgICB1bnNpZ25lZCByZCgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAwKSAmIDBiMTExMTE7IH0K
KyAgICB1bnNpZ25lZCBybigpIHsgcmV0dXJuIChtX29wY29kZSA+PiA1KSAmIDBiMTExMTE7IH0K
KyAgICB1bnNpZ25lZCBvcDEwXzE1KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDEwKSAmIDBiMTEx
MTE7IH0KKyAgICB1bnNpZ25lZCBybSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxNikgJiAwYjEx
MTExOyB9CisgICAgdW5zaWduZWQgcSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAzMCkgJiAwYjE7
IH0KK307CisKKworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QVJNNjREaXNhc3NlbWJsZXIKIAog
dXNpbmcgSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCmluZGV4IGJkYTY5NTljODAzZS4uZWQ5MjYxMWUwYWIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAKQEAgLTE1Nyw3ICsx
NTcsNyBAQCBSZWdpc3RlclNldCBKSVRDb2RlOjpsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhj
ZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZShDb2RlQmxvYwogICAgICAgICBpZiAoZXhpdC5tX2V4Y2Vw
dGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4LmJpdHMoKSA9PSBjYWxsU2l0ZUluZGV4LmJpdHMoKSkg
ewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSk7
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChleGl0LmlzR2VuZXJpY1Vud2luZEhhbmRsZXIo
KSk7Ci0gICAgICAgICAgICByZXR1cm4gVmFsdWVSZXA6OnVzZWRSZWdpc3RlcnMoZXhpdC5tX3Zh
bHVlUmVwcyk7CisgICAgICAgICAgICByZXR1cm4gVmFsdWVSZXA6OnVzZWRSZWdpc3RlcnMoZXhp
dC5tX3ZhbHVlUmVwcykuYWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0
dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAppbmRleCBjNDA3YjAwYzRkYWIuLjAwNWMwODRhMWM5NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRlRMTG93ZXJERkdUb0IzLmgiCisjaW5jbHVkZSAi
YjMvQjNXaWR0aC5oIgogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKQEAgLTIwNSw3ICsyMDYsOCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtY29kZS5mcmFtZVNpemUoKSksIEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAot
ICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFNhdmUoY29kZS5jYWxsZWVTYXZlUmVnaXN0ZXJB
dE9mZnNldExpc3QoKSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gY2FsbGVlU2F2ZXMgPSBj
b2RlLmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpOworICAgICAgICAgICAgICAgICAg
ICBqaXQuZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcigmY2FsbGVlU2F2ZXMpOwogICAgICAgICAgICAg
ICAgICAgICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKGNvZGVCbG9jaywgVmlydHVhbFJl
Z2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOwogICAgICAgICAgICAgICAgIH0pOwog
CkBAIC0yODIsNyArMjg0LDcgQEAgcHVibGljOgogICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHN0
YWNrT3ZlcmZsb3dIYW5kbGVyID0gbV9vdXQucGF0Y2hwb2ludChWb2lkKTsKICAgICAgICAgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gY2FsbFNpdGVJbmRleEZvckNvZGVPcmlnaW4obV9m
dGxTdGF0ZSwgQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7CiAgICAgICAgIHN0YWNrT3Zl
cmZsb3dIYW5kbGVyLT5hcHBlbmRTb21lUmVnaXN0ZXIobV9jYWxsRnJhbWUpOwotICAgICAgICBz
dGFja092ZXJmbG93SGFuZGxlci0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVn
aXN0ZXJzKCkpOworICAgICAgICBzdGFja092ZXJmbG93SGFuZGxlci0+Y2xvYmJlckZ1bGxXaWR0
aChSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBzdGFja092
ZXJmbG93SGFuZGxlci0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKICAgICAgICAgc3RhY2tP
dmVyZmxvd0hhbmRsZXItPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CkBAIC0z
MDgsNyArMzEwLDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAvLyBwcm9sb2d1ZS4g
VGhlbiwgd2Ugd291bGQga25vdyB0aGF0IHRoZXJlIGlzIG5vIHdheSBmb3IgdGhlIGNhbGxlZS1z
YXZlcyB0bwogICAgICAgICAgICAgICAgICAgICAvLyBnZXQgY2xvYmJlcmVkLgogICAgICAgICAg
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcy
NDU2Ci0gICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZShwYXJhbXMucHJvYygpLmNh
bGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byBjYWxsZWVTYXZlcyA9IHBhcmFtcy5wcm9jKCkuY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRM
aXN0KCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9y
KCZjYWxsZWVTYXZlcyk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLApAQCAtMjQwNCw3ICsyNDA3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBSZWZQdHI8
UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNo
cG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogICAgICAgICBwYXRjaHBvaW50LT5udW1H
UFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwotICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lz
dGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmNs
b2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAg
ICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIENvZGVPcmlnaW4gc2Vt
YW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoCkBAIC0yNTEyLDcgKzI1MTUsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogICAgICAg
ICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwogICAgICAgICBwYXRjaHBv
aW50LT5udW1GUFNjcmF0Y2hSZWdpc3RlcnMgPSAyOwotICAgICAgICBwYXRjaHBvaW50LT5jbG9i
YmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIENvZGVP
cmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCkBAIC00MDExLDcgKzQwMTQsNyBAQCBwcml2YXRl
OgogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIocHJvcGVydHkpOwogICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWco
R1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2Ny
YXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckZ1bGxXaWR0aChS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBwYXRjaHBvaW50
LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRM
SklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxl
PiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hw
b2ludCk7CkBAIC00MTU4LDcgKzQxNjEsNyBAQCBwcml2YXRlOgogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmRTb21lUmVnaXN0ZXIoYnJhbmQpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
bV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdp
c3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVw
OjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAg
ICAgcGF0Y2hwb2ludC0+Y2xvYmJlckZ1bGxXaWR0aChSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNo
UmVnaXN0ZXJzKCkpOwogICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMg
PSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAg
IFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVw
YXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC00MzE4LDcgKzQzMjEs
NyBAQCBwcml2YXRlOgogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodmFs
dWUpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6
OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6
Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckZ1
bGxXaWR0aChSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBw
YXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0
aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlv
bnMocGF0Y2hwb2ludCk7CkBAIC00NjY0LDcgKzQ2NjcsNyBAQCBwcml2YXRlOgogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodmFsdWUpOwogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpub3RDZWxsTWFz
a1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFs
dWVSZXA6OnJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwotICAgICAgICBwYXRjaHBv
aW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRj
aFJlZ2lzdGVycygpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJz
ID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAg
ICAvLyBGSVhNRTogSWYgdGhpcyBpcyBhIFB1dEJ5SWRGbHVzaCwgd2UgbWlnaHQgd2FudCB0byBs
YXRlLWNsb2JiZXIgdm9sYXRpbGUgcmVnaXN0ZXJzLgpAQCAtNTQ0NCw3ICs1NDQ3LDcgQEAgSUdO
T1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29t
ZVJlZ2lzdGVyKHByb3BlcnR5KTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25v
dENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVy
KSk7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVw
OjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBwYXRj
aHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Cisg
ICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNy
b1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0
Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAw
OwogCiAgICAgICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0
aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwpA
QCAtNTc5OSw3ICs1ODAyLDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHZhbHVlKTsKICAgICAgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZv
Ojpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
bV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
KSk7Ci0gICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRnVsbFdp
ZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAgICAgICBw
YXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4
Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNl
cHRpb25zKHBhdGNocG9pbnQpOwpAQCAtNjE3MSw3ICs2MTc0LDcgQEAgSUdOT1JFX0NMQU5HX1dB
Uk5JTkdTX0VORAogICAgICAgICB9CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENl
bGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVS
ZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+Y2xv
YmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRj
aHBvaW50LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENv
ZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gMiA6IDE7CiAKICAgICAgICAgUmVmUHRy
PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CkBAIC0xMDI1MCw4
ICsxMDI1Myw4IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgCiAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86
Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVt
YmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0gICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQ6OnZvbGF0
aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkpOworICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRnVs
bFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBh
dGNocG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0MTI4Ojp2b2xhdGlsZVJlZ2lzdGVyc0Zv
ckpTQ2FsbCgpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZh
bHVlUmVwOjpyZWcoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpIH07CiAKICAgICAgICAgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luID0gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOwpAQCAt
MTAzNjIsOSArMTAzNjUsOSBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6
bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgcGF0Y2hw
b2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAg
ICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0
Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAgIGlmICghaXNUYWlsKSB7Ci0gICAgICAgICAgICBwYXRj
aHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0Nh
bGwoKSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldDEy
ODo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7CiAgICAgICAgICAgICBwYXRjaHBvaW50
LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUikgfTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEwMzgyLDYgKzEwMzg1LDggQEAgSUdO
T1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0KICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1w
cyhqaXQpOworCisgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXRlLT5qaXRDb2RlLT5jYWxsZWVT
YXZlUmVnaXN0ZXJzKCktPmNvdW50KCkgPT0gc3RhdGUtPmppdENvZGUtPmNhbGxlZVNhdmVSZWdp
c3RlcnMoKS0+Ynl0ZVNpemUoKSAvIHNpemVvZihDUFVSZWdpc3RlcikpOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGlmIChpc1RhaWwpIHsKICAgICAgICAgICAgICAgICAgICAg
Q2FsbEZyYW1lU2h1ZmZsZURhdGEgc2h1ZmZsZURhdGE7CkBAIC0xMDUyOSw3ICsxMDUzNCw3IEBA
IElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1f
bnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAK
ICAgICAgICAgLy8gUHJldmVudCBhbnkgb2YgdGhlIGFyZ3VtZW50cyBmcm9tIHVzaW5nIHRoZSBz
Y3JhdGNoIHJlZ2lzdGVyLgotICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRWFybHkoUmVnaXN0
ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xv
YmJlckVhcmx5KFJlZ2lzdGVyU2V0MTI4Ojp1c2UxMjhCaXRzKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSkpOwogICAgICAgICAKICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0
cy50ZXJtaW5hbCA9IHRydWU7CiAKQEAgLTEwNzM2LDggKzEwNzQxLDggQEAgSUdOT1JFX0NMQU5H
X1dBUk5JTkdTX0VORAogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxl
PiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hw
b2ludCk7CiAKLSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVy
U2V0Ojp2b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpKTsgLy8gTm8gaW5wdXRzIHdpbGwgYmUg
aW4gYSB2b2xhdGlsZSByZWdpc3Rlci4KKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckZ1bGxX
aWR0aChSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRj
aHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0MTI4Ojp2b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2Fs
bCgpKTsgLy8gTm8gaW5wdXRzIHdpbGwgYmUgaW4gYSB2b2xhdGlsZSByZWdpc3Rlci4KICAgICAg
ICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpyZWcoR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIpIH07CiAKICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNo
UmVnaXN0ZXJzID0gMDsKQEAgLTEwNzcxLDggKzEwNzc2LDggQEAgSUdOT1JFX0NMQU5HX1dBUk5J
TkdTX0VORAogCiAgICAgICAgICAgICAgICAgYXV0byogY2FsbExpbmtJbmZvID0gc3RhdGUtPmpp
dENvZGUtPmNvbW1vbi5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNOb2RlT3JpZ2luKTsKIAotICAg
ICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6YWxs
UmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5leGNsdWRlKFJlZ2lz
dGVyU2V0Ojp2b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpKTsKKyAgICAgICAgICAgICAgICBS
ZWdpc3RlclNldDEyOCB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQxMjg6OnVzZTY0Qml0cyhS
ZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCkpOworICAgICAgICAgICAgICAgIHVzZWRSZWdpc3Rl
cnMuZXhjbHVkZShSZWdpc3RlclNldDEyODo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7
CiAgICAgICAgICAgICAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKICAg
ICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChjYWxsZWVHUFIpOwogCkBAIC0xMTAxNiw4
ICsxMTAyMSw4IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bm90Q2VsbE1h
c2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZh
bHVlUmVwOjpyZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKIAotICAgICAgICBwYXRj
aHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0g
ICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lz
dGVyc0ZvckpTQ2FsbCgpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckZ1bGxXaWR0aChS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50
LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldDEyODo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwo
KSk7CiAgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6
cmVnKEdQUkluZm86OnJldHVyblZhbHVlR1BSKSB9OwogCiAgICAgICAgIC8vIFRoaXMgaXMgdGhl
IG1pbmltdW0gYW1vdW50IG9mIGNhbGwgYXJnIGFyZWEgc3RhY2sgc3BhY2UgdGhhdCBhbGwgSlMt
PkpTIGNhbGxzIGFsd2F5cyBoYXZlLgpAQCAtMTExMDUsMTAgKzExMTEwLDEwIEBAIElHTk9SRV9D
TEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAv
LyBHZXQgc29tZSBzY3JhdGNoIHJlZ2lzdGVycy4KLSAgICAgICAgICAgICAgICBSZWdpc3RlclNl
dCB1c2VkUmVnaXN0ZXJzOworICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0MTI4IHVzZWRSZWdp
c3RlcnM7CiAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5tZXJnZShSZWdpc3RlclNldDo6
c3RhY2tSZWdpc3RlcnMoKSk7CiAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5tZXJnZShS
ZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKLSAgICAgICAgICAgICAg
ICB1c2VkUmVnaXN0ZXJzLm1lcmdlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkp
OworICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMubWVyZ2UoUmVnaXN0ZXJTZXQxMjg6OmNh
bGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQo
Y2FsbGVlR1BSKTsKICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzR1BSICE9IEludmFsaWRH
UFJSZWcpCiAgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGFyZ3VtZW50c0dQ
Uik7CkBAIC0xMTI3Miw4ICsxMTI3Nyw4IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAg
ICAgICAgCiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJl
cDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVn
aXN0ZXJTZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkpOworICAgICAgICBwYXRjaHBv
aW50LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMo
KSk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0MTI4Ojp2b2xh
dGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29u
c3RyYWludHMgPSB7IFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpIH07CiAg
ICAgICAgIAogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luRGVzY3Jp
cHRpb25PZkNhbGxTaXRlKCk7CkBAIC0xMTgzNSw3ICsxMTg0MCw3IEBAIElHTk9SRV9DTEFOR19X
QVJOSU5HU19FTkQKICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1f
b3V0LnBhdGNocG9pbnQoVm9pZCk7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0g
RWZmZWN0czo6Zm9yQ2FsbCgpOwogICAgICAgICAgICAgaWYgKGludHJpbnNpYyA9PSBDUFVDcHVp
ZEludHJpbnNpYykKLSAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVy
U2V0IHsgWDg2UmVnaXN0ZXJzOjplYXgsIFg4NlJlZ2lzdGVyczo6ZWJ4LCBYODZSZWdpc3RlcnM6
OmVjeCwgWDg2UmVnaXN0ZXJzOjplZHggfSk7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlckZ1bGxXaWR0aChSZWdpc3RlclNldCB7IFg4NlJlZ2lzdGVyczo6ZWF4LCBYODZSZWdp
c3RlcnM6OmVieCwgWDg2UmVnaXN0ZXJzOjplY3gsIFg4NlJlZ2lzdGVyczo6ZWR4IH0pOwogCiAg
ICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGludHJpbnNpYykgewpAQCAtMTE4NTgsNyArMTE4NjMsNyBAQCBJR05PUkVfQ0xB
TkdfV0FSTklOR1NfRU5ECiAgICAgICAgIGNhc2UgQ1BVUmR0c2NJbnRyaW5zaWM6IHsKICAgICAg
ICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50
MzIpOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6OmZvckNhbGwo
KTsKLSAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQgeyBYODZSZWdp
c3RlcnM6OmVheCwgWDg2UmVnaXN0ZXJzOjplZHggfSk7CisgICAgICAgICAgICBwYXRjaHBvaW50
LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0IHsgWDg2UmVnaXN0ZXJzOjplYXgsIFg4NlJl
Z2lzdGVyczo6ZWR4IH0pOwogICAgICAgICAgICAgLy8gVGhlIGxvdyAzMi1iaXRzIG9mIHJkdHNj
IGdvIGludG8gcmF4LgogICAgICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMg
PSB7IFZhbHVlUmVwOjpyZWcoWDg2UmVnaXN0ZXJzOjplYXgpIH07CiAgICAgICAgICAgICBwYXRj
aHBvaW50LT5zZXRHZW5lcmF0b3IoIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CkBAIC0xMjg0MCw3ICsxMjg0NSw3IEBAIElHTk9S
RV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVS
ZWdpc3RlcihzdWJzY3JpcHRWYWx1ZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25v
dENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVy
KSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBw
YXRjaHBvaW50LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdp
c3RlcnMoKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVm
UHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQ
YXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKQEAgLTEzMTc1LDcgKzEzMTgwLDcg
QEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
bV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
KSk7CiAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gMyA6IDI7CiAgICAgICAgIHBhdGNocG9pbnQt
PnJlc3VsdENvbnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXIgfTsKLSAg
ICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0
ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0
OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAgIAogICAgICAgICBSZWZQdHI8UGF0
Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KICAgICAgICAgICAgIHBy
ZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKQEAgLTE0NDUwLDcgKzE0
NDU1LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQoQ29uc3RyYWluZWRWYWx1ZShzdHJpbmdMZW5ndGgsIFZhbHVlUmVwOjpTb21lTGF0ZVJl
Z2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFy
Z3VtZW50LCBWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50
LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBpbmxpbmVDb2RlU3RhdHM4Qml0Lm5lZWRzVGVtcDIo
KSA/IDYgOiA1OwotICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNy
b1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJGdWxsV2lk
dGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAgcGF0Y2hw
b2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC0x
NTA3NSw3ICsxNTA4MCw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgLy8g
SUMgY29kZSBpcyBzdXBlciBzbWFydCBhYm91dCBzYXZpbmcgcmVnaXN0ZXJzLgogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyODQ4CiAgICAgICAg
IAotICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hS
ZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0
ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hw
b2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KICAgICAgICAgICAgIHByZXBh
cmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKQEAgLTE1MTU4LDcgKzE1MTYz
LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmRTb21lUmVnaXN0ZXIodGhpc1ZhbHVlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1f
bm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0
ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6
bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwotICAgICAgICBwYXRjaHBvaW50
LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAg
IHBhdGNocG9pbnQtPmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJl
Z2lzdGVycygpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0g
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICBS
ZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KQEAgLTE1
NjA1LDcgKzE1NjEwLDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogCiAgICAgICAgIHBh
dGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IGRvbUpJVC0+bnVtR1BTY3JhdGNoUmVn
aXN0ZXJzOwogICAgICAgICBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdpc3RlcnMgPSBkb21K
SVQtPm51bUZQU2NyYXRjaFJlZ2lzdGVyczsKLSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50
LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7
CiAKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIE5vZGUqIG5v
ZGUgPSBtX25vZGU7CkBAIC0xNTc0NSw3ICsxNTc1MCw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5H
U19FTkQKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVw
OjpyZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVn
aXN0ZXIpKTsKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2Vw
dGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsK
LSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVn
aXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVy
U2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQ
U2NyYXRjaFJlZ2lzdGVycyA9IGRvbUpJVC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzOwogICAgICAg
ICBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdpc3RlcnMgPSBkb21KSVQtPm51bUZQU2NyYXRj
aFJlZ2lzdGVyczsKICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZh
bHVlUmVwOjpTb21lRWFybHlSZWdpc3RlciB9OwpAQCAtMTY1NDAsNyArMTY1NDUsNyBAQCBJR05P
UkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAgIHBhdGNocG9pbnQtPm51bUZQU2NyYXRjaFJl
Z2lzdGVycyA9IDI7CiAgICAgICAgIGlmIChzY3JhdGNoRlBSVXNhZ2UgPT0gTmVlZFNjcmF0Y2hG
UFIpCiAgICAgICAgICAgICBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdpc3RlcnMrKzsKLSAg
ICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0
ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0
OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENv
bnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXIgfTsKICAgICAgICAgU3Rh
dGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2Rl
T3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwpAQCAtMTY2MDgsNyArMTY2MTMsNyBAQCBJ
R05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0
aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9p
bnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNj
cmF0Y2hSZWdpc3RlcnMgPSAxOwotICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVy
U2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAg
ICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpTb21lRWFybHlS
ZWdpc3RlciB9OwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAg
Q29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CkBA
IC0xNjY2Niw3ICsxNjY3MSw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAg
ICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKICAgICAgICAg
cGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+bnVtRlBTY3JhdGNoUmVnaXN0ZXJzID0gMTsKLSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJl
cihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBv
aW50LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMo
KSk7CiAgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6
U29tZUVhcmx5UmVnaXN0ZXIgfTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7
CiAgICAgICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNl
bWFudGljOwpAQCAtMTY3NDIsNyArMTY3NDcsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5E
CiAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQo
cG9pbnRlclR5cGUoKSk7CiAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKICAgICAgICAgICAgIC8v
IGVtaXRBbGxvY2F0ZVdpdGhOb25OdWxsQWxsb2NhdG9yIHVzZXMgdGhlIHNjcmF0Y2ggcmVnaXN0
ZXJzIG9uIEFSTS4KLSAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6
Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAg
ICAgfQogICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnRlcm1pbmFsID0gdHJ1ZTsKICAgICAg
ICAgaWYgKGFjdHVhbEFsbG9jYXRvci5pc0NvbnN0YW50KCkpCkBAIC0xODQwNCw3ICsxODQwOSw3
IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRF
eGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0
Y2hwb2ludEZvckV4Y2VwdGlvbnMocmVzdWx0KTsKICAgICAgICAgCi0gICAgICAgIHJlc3VsdC0+
Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBy
ZXN1bHQtPmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAKICAgICAgICAgcmVz
dWx0LT5zZXRHZW5lcmF0b3IoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9T
UkV4aXRDb21waWxlci5jcHAKaW5kZXggYTgyNGY3YTUxOWNlLi40ZDhlYTE5NzBkZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKQEAg
LTI1LDYgKzI1LDkgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZUTE9TUkV4
aXRDb21waWxlci5oIgorI2luY2x1ZGUgImIzL0IzV2lkdGguaCIKKyNpbmNsdWRlICJ3dGYvU3Rk
SW50RXh0cmFzLmgiCisjaW5jbHVkZSA8X3R5cGVzL191aW50NjRfdC5oPgogCiAjaWYgRU5BQkxF
KEZUTF9KSVQpCiAKQEAgLTE3NiwxMiArMTc5LDE0IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHVi
KFZNJiB2bSwgdW5zaWduZWQgZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JFeGl0JiBleGl0
CiAgICAgICAgICAgICBtYXhNYXRlcmlhbGl6YXRpb25OdW1Bcmd1bWVudHMsCiAgICAgICAgICAg
ICBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCkpOwogICAgIH0KKworICAgIEFT
U0VSVChjb2RlQmxvY2stPmppdENvZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLT5jb3VudCgp
ID09IGNvZGVCbG9jay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPmJ5dGVTaXpl
KCkgLyBzaXplb2YoQ1BVUmVnaXN0ZXIpKTsKICAgICAKICAgICBTY3JhdGNoQnVmZmVyKiBzY3Jh
dGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUoCiAgICAgICAgIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkgKiAoCiAgICAgICAgICAgICBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZXMu
c2l6ZSgpICsgbnVtTWF0ZXJpYWxpemF0aW9ucyArIG1heE1hdGVyaWFsaXphdGlvbk51bUFyZ3Vt
ZW50cykgKwogICAgICAgICByZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpICsKLSAg
ICAgICAgY29kZUJsb2NrLT5qaXRDb2RlKCktPmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+c2l6ZSgp
ICogc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAgICAgIGNvZGVCbG9jay0+aml0Q29kZSgpLT5jYWxs
ZWVTYXZlUmVnaXN0ZXJzKCktPmJ5dGVTaXplKCkpOwogICAgIEVuY29kZWRKU1ZhbHVlKiBzY3Jh
dGNoID0gc2NyYXRjaEJ1ZmZlciA/IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRj
aEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSA6IG51bGxwdHI7CiAgICAgRW5jb2RlZEpTVmFsdWUqIG1h
dGVyaWFsaXphdGlvblBvaW50ZXJzID0gc2NyYXRjaCArIGV4aXQubV9kZXNjcmlwdG9yLT5tX3Zh
bHVlcy5zaXplKCk7CiAgICAgRW5jb2RlZEpTVmFsdWUqIG1hdGVyaWFsaXphdGlvbkFyZ3VtZW50
cyA9IG1hdGVyaWFsaXphdGlvblBvaW50ZXJzICsgbnVtTWF0ZXJpYWxpemF0aW9uczsKQEAgLTM5
MCw3ICszOTUsOCBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkIGV4
aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogICAgIAogICAgIC8vIEJlZm9y
ZSB3ZSBzdGFydCBtZXNzaW5nIHdpdGggdGhlIGZyYW1lLCB3ZSBuZWVkIHRvIHNldCBhc2lkZSBh
bnkgcmVnaXN0ZXJzIHRoYXQgdGhlCiAgICAgLy8gRlRMIGNvZGUgd2FzIHByZXNlcnZpbmcuCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmNhbGxlZVNhdmVSZWdp
c3RlcnMoKS0+c2l6ZSgpOyBpLS07KSB7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0Q29kZSgp
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPmNvdW50KCkgPT0gY29kZUJsb2NrLT5qaXRDb2RlKCkt
PmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+Ynl0ZVNpemUoKSAvIHNpemVvZihDUFVSZWdpc3Rlcikp
OworICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5jYWxsZWVTYXZl
UmVnaXN0ZXJzKCktPmNvdW50KCk7IGktLTspIHsKICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBl
bnRyeSA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPmF0KGkp
OwogICAgICAgICBqaXQubG9hZDY0KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBlbnRyeS5vZmZzZXQoKSks
CkBAIC00MTEsNyArNDE3LDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNp
Z25lZCBleGl0SUQsIEpJVENvZGUqIGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOwogICAgIGppdC5jaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwog
Ci0gICAgUmVnaXN0ZXJTZXQgYWxsRlRMQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6ZnRsQ2Fs
bGVlU2F2ZVJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyU2V0MTI4IGFsbEZUTENhbGxlZVNhdmVz
ID0gUmVnaXN0ZXJTZXQxMjg6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKTsKICAgICBjb25zdCBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCogYmFzZWxpbmVDYWxsZWVTYXZlcyA9IGJhc2VsaW5lQ29kZUJs
b2NrLT5qaXRDb2RlKCktPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKIAogICAgIGZvciAoUmVnIHJl
ZyA9IFJlZzo6Zmlyc3QoKTsgcmVnIDw9IFJlZzo6bGFzdCgpOyByZWcgPSByZWcubmV4dCgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCmluZGV4IDBm
MmMwNWU1NmI3Yy4uODcxOTQwNDEyZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFNhdmVSZXN0b3JlLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiRlRMU2F2ZVJlc3RvcmUuaCIKKyNpbmNsdWRlICJ3dGYvU3RkSW50RXh0
cmFzLmgiCiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIApAQCAtMzYsMTcgKzM3LDI1IEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAotc3RhdGljIHNpemVfdCBieXRlc0ZvckdQ
UnMoKQorc3RhdGljIGlubGluZSBjb25zdGV4cHIgc2l6ZV90IGJ5dGVzRm9yR1BScygpCiB7Ci0g
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lzdGVycygpICogc2l6ZW9mKGlu
dDY0X3QpOworICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZSZWdpc3RlcnMoKSAq
IHNpemVvZihDUFVSZWdpc3Rlcik7CiB9CiAKLXN0YXRpYyBzaXplX3QgYnl0ZXNGb3JGUFJzKCkK
K3N0YXRpYyBpbmxpbmUgY29uc3RleHByIHNpemVfdCBieXRlc0ZvckZQUigpCiB7CiAgICAgLy8g
RklYTUU6IEl0IG1pZ2h0IGJlIHdvcnRod2hpbGUgc2F2aW5nIHRoZSBmdWxsIHN0YXRlIG9mIHRo
ZSBGUCByZWdpc3RlcnMsIGF0IHNvbWUgcG9pbnQuCiAgICAgLy8gUmlnaHQgbm93IHdlIGRvbid0
IG5lZWQgdGhpcyBzaW5jZSB3ZSBvbmx5IGRvIHRoZSBzYXZlL3Jlc3RvcmUganVzdCBwcmlvciB0
byBPU1IgZXhpdCwgYW5kCiAgICAgLy8gT1NSIGV4aXQgd2lsbCBiZSBndWFyYW50ZWVkIHRvIG9u
bHkgbmVlZCB0aGUgZG91YmxlIHBvcnRpb24gb2YgdGhlIEZQIHJlZ2lzdGVycy4KLSAgICByZXR1
cm4gTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mRlBSZWdpc3RlcnMoKSAqIHNpemVvZihkb3VibGUp
OworICAgIHJldHVybiBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGhGb3JD
KEIzOjpGUCkpOworfQorCitzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBzaXplX3QgYnl0ZXNGb3JG
UFJzKCkKK3sKKyAgICAvLyBGSVhNRTogSXQgbWlnaHQgYmUgd29ydGh3aGlsZSBzYXZpbmcgdGhl
IGZ1bGwgc3RhdGUgb2YgdGhlIEZQIHJlZ2lzdGVycywgYXQgc29tZSBwb2ludC4KKyAgICAvLyBS
aWdodCBub3cgd2UgZG9uJ3QgbmVlZCB0aGlzIHNpbmNlIHdlIG9ubHkgZG8gdGhlIHNhdmUvcmVz
dG9yZSBqdXN0IHByaW9yIHRvIE9TUiBleGl0LCBhbmQKKyAgICAvLyBPU1IgZXhpdCB3aWxsIGJl
IGd1YXJhbnRlZWQgdG8gb25seSBuZWVkIHRoZSBkb3VibGUgcG9ydGlvbiBvZiB0aGUgRlAgcmVn
aXN0ZXJzLgorICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZGUFJlZ2lzdGVycygp
ICogYnl0ZXNGb3JGUFIoKTsKIH0KIAogc2l6ZV90IHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJ
bkJ5dGVzKCkKQEAgLTU2LDEyICs2NSwxMiBAQCBzaXplX3QgcmVxdWlyZWRTY3JhdGNoTWVtb3J5
U2l6ZUluQnl0ZXMoKQogCiBzaXplX3Qgb2Zmc2V0T2ZHUFIoR1BSUmVnIHJlZykKIHsKLSAgICBy
ZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSAqIHNpemVvZihpbnQ2NF90
KTsKKyAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSAqIHNpemVv
ZihDUFVSZWdpc3Rlcik7CiB9CiAKIHNpemVfdCBvZmZzZXRPZkZQUihGUFJSZWcgcmVnKQogewot
ICAgIHJldHVybiBieXRlc0ZvckdQUnMoKSArIE1hY3JvQXNzZW1ibGVyOjpmcFJlZ2lzdGVySW5k
ZXgocmVnKSAqIHNpemVvZihkb3VibGUpOworICAgIHJldHVybiBieXRlc0ZvckdQUnMoKSArIE1h
Y3JvQXNzZW1ibGVyOjpmcFJlZ2lzdGVySW5kZXgocmVnKSAqIGJ5dGVzRm9yRlBSKCk7CiB9CiAK
IHNpemVfdCBvZmZzZXRPZlJlZyhSZWcgcmVnKQpAQCAtMTIzLDcgKzEzMiw3IEBAIHZvaWQgc2F2
ZUFsbFJlZ2lzdGVycyhBc3NlbWJseUhlbHBlcnMmIGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSkK
ICAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IGZpcnN0VG9TYXZlR1BS
OyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2Vt
Ymxlcjo6bmV4dFJlZ2lzdGVyKHJlZykpIHsKICAgICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5nZXQo
cmVnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzcG9vbGVyLnN0b3JlR1BSKHsg
cmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KG9mZnNldE9mR1BSKHJlZykpIH0pOworICAgICAg
ICBzcG9vbGVyLnN0b3JlR1BSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KG9mZnNldE9m
R1BSKHJlZykpLCBzaXplb2YoQ1BVUmVnaXN0ZXIpIH0pOwogICAgIH0KICAgICBzcG9vbGVyLmZp
bmFsaXplR1BSKCk7CiAgICAgCkBAIC0xMzksNyArMTQ4LDcgQEAgdm9pZCBzYXZlQWxsUmVnaXN0
ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQogICAgIGZvciAo
TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RG
UFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVn
ID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJlZykpIHsKICAgICAgICAgaWYgKHJl
Z3Muc3BlY2lhbC5nZXQocmVnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzcG9v
bGVyLnN0b3JlRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KG9mZnNldE9mRlBSKHJl
ZykpIH0pOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJk
aWZmX3Q+KG9mZnNldE9mRlBSKHJlZykpLCBieXRlc0ZvckZQUigpIH0sIGJ5dGVzRm9yRlBSKCkp
OwogICAgIH0KICAgICBzcG9vbGVyLmZpbmFsaXplRlBSKCk7CiB9CkBAIC0xNTgsNyArMTY3LDcg
QEAgdm9pZCByZXN0b3JlQWxsUmVnaXN0ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0LCBjaGFyKiBz
Y3JhdGNoTWVtb3J5KQogICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcg
PSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxl
cjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVy
KHJlZykpIHsKICAgICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5nZXQocmVnKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBzcG9vbGVyLmxvYWRGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0
cmRpZmZfdD4ob2Zmc2V0T2ZGUFIocmVnKSkgfSk7CisgICAgICAgIHNwb29sZXIubG9hZEZQUih7
IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkZQUihyZWcpKSwgc2l6ZW9mKENQ
VVJlZ2lzdGVyKSB9LCBieXRlc0ZvckZQUigpKTsKICAgICB9CiAgICAgc3Bvb2xlci5maW5hbGl6
ZUZQUigpOwogICAgIApAQCAtMTczLDcgKzE4Miw3IEBAIHZvaWQgcmVzdG9yZUFsbFJlZ2lzdGVy
cyhBc3NlbWJseUhlbHBlcnMmIGppdCwgY2hhciogc2NyYXRjaE1lbW9yeSkKICAgICBmb3IgKE1h
Y3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IGZpcnN0VG9SZXN0b3JlR1BSOyByZWcgPD0g
TWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4
dFJlZ2lzdGVyKHJlZykpIHsKICAgICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5nZXQocmVnKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzcG9vbGVyLmxvYWRHUFIoeyByZWcsIHN0YXRp
Y19jYXN0PHB0cmRpZmZfdD4ob2Zmc2V0T2ZHUFIocmVnKSkgfSk7CisgICAgICAgIHNwb29sZXIu
bG9hZEdQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkdQUihyZWcpKSwg
c2l6ZW9mKENQVVJlZ2lzdGVyKSB9KTsKICAgICB9CiAgICAgc3Bvb2xlci5maW5hbGl6ZUdQUigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2Fs
bC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKaW5k
ZXggYjRlNDc1OGU1OGZiLi45YzM1ZjgxZDI5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogLy8gVGhpcyBjb2RlIHJlbGllcyBvbiB1cyBiZWluZyA2
NC1iaXQuIEZUTCBpcyBjdXJyZW50bHkgYWx3YXlzIDY0LWJpdC4KLXN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IHdvcmRTaXplID0gODsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGdwclNpemUgPSA4
OwogCiBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KAogICAgIFJlZ2lz
dGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCB1bnNpZ25lZCBudW1Bcmdz
LCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIsIEdQUlJlZyBpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3Rl
cikKQEAgLTQ3LDE2ICs0NywxNyBAQCBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxD
b250ZXh0KAogICAgIC8vIFdlIGRvbid0IGNhcmUgdGhhdCB5b3UncmUgdXNpbmcgY2FsbGVlLXNh
dmUsIHN0YWNrLCBvciBoYXJkd2FyZSByZWdpc3RlcnMuCiAgICAgdXNlZFJlZ2lzdGVycy5leGNs
dWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKICAgICB1c2VkUmVnaXN0ZXJzLmV4
Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7Ci0gICAgdXNl
ZFJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwor
ICAgIHVzZWRSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDEyODo6Y2FsbGVlU2F2ZVJlZ2lz
dGVycygpLmFsbFJlZ2lzdGVycygpKTsKICAgICAgICAgCiAgICAgLy8gVGhlIHJldHVybiByZWdp
c3RlciBkb2Vzbid0IG5lZWQgdG8gYmUgc2F2ZWQuCiAgICAgaWYgKG1fcmV0dXJuUmVnaXN0ZXIg
IT0gSW52YWxpZEdQUlJlZykKICAgICAgICAgdXNlZFJlZ2lzdGVycy5jbGVhcihtX3JldHVyblJl
Z2lzdGVyKTsKICAgICAgICAgCi0gICAgc2l6ZV90IHN0YWNrQnl0ZXNOZWVkZWRGb3JSZXR1cm5B
ZGRyZXNzID0gd29yZFNpemU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc3RhY2tCeXRl
c05lZWRlZEZvclJldHVybkFkZHJlc3MgPSBncHJTaXplOwogICAgICAgICAKKyAgICAvLyBOb3Ro
aW5nIHdlIGNhbGwgaXMgZ29pbmcgdG8gYmUgYSB2MTI4LCBzbyB1c2luZyA4IGhlcmUgaXMgY29y
cmVjdC4KICAgICBtX29mZnNldFRvU2F2aW5nQXJlYSA9Ci0gICAgICAgIChzdGQ6Om1heChtX251
bUFyZ3MsIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMpIC0gTlVNQkVSX09GX0FSR1VNRU5U
X1JFR0lTVEVSUykgKiB3b3JkU2l6ZTsKKyAgICAgICAgKHN0ZDo6bWF4KG1fbnVtQXJncywgTlVN
QkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUykgLSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJT
KSAqIGdwclNpemU7CiAgICAgICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IHN0ZDo6bWluKE5V
TUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMsIG51bUFyZ3MpOyBpLS07KQogICAgICAgICBtX2Fy
Z3VtZW50UmVnaXN0ZXJzLnNldChHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoaSkpOwpAQCAt
NjcsMTcgKzY4LDE2IEBAIFNsb3dQYXRoQ2FsbENvbnRleHQ6OlNsb3dQYXRoQ2FsbENvbnRleHQo
CiAgICAgICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuc2V0KGluZGlyZWN0Q2FsbFRh
cmdldFJlZ2lzdGVyKTsKICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLmZpbHRlcih1
c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZDYWxsaW5nQ29u
dmVudGlvblJlZ2lzdGVycyA9Ci0gICAgICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMu
bnVtYmVyT2ZTZXRSZWdpc3RlcnMoKTsKLSAgICAgICAgCi0gICAgc2l6ZV90IG9mZnNldFRvVGh1
bmtTYXZpbmdBcmVhID0KLSAgICAgICAgbV9vZmZzZXRUb1NhdmluZ0FyZWEgKwotICAgICAgICBu
dW1iZXJPZkNhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzICogd29yZFNpemU7Ci0gICAgICAgIAor
ICAgIHVuc2lnbmVkIG51bWJlck9mQ2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMgPSBtX2NhbGxp
bmdDb252ZW50aW9uUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCk7CisgICAgQVNTRVJU
KCFtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLm51bWJlck9mU2V0RlBScygpKTsKKworICAg
IHNpemVfdCBvZmZzZXRUb1RodW5rU2F2aW5nQXJlYSA9IG1fb2Zmc2V0VG9TYXZpbmdBcmVhICsg
bnVtYmVyT2ZDYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycyAqIGdwclNpemU7CisKICAgICBtX3N0
YWNrQnl0ZXNOZWVkZWQgPQotICAgICAgICBvZmZzZXRUb1RodW5rU2F2aW5nQXJlYSArCi0gICAg
ICAgIHN0YWNrQnl0ZXNOZWVkZWRGb3JSZXR1cm5BZGRyZXNzICsKLSAgICAgICAgKHVzZWRSZWdp
c3RlcnMubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSAtIG51bWJlck9mQ2FsbGluZ0NvbnZlbnRpb25S
ZWdpc3RlcnMpICogd29yZFNpemU7CisgICAgICAgIG9mZnNldFRvVGh1bmtTYXZpbmdBcmVhCisg
ICAgICAgICsgc3RhY2tCeXRlc05lZWRlZEZvclJldHVybkFkZHJlc3MKKyAgICAgICAgKyAodXNl
ZFJlZ2lzdGVycy5udW1iZXJPZlNldEdQUnMoKSAtIG51bWJlck9mQ2FsbGluZ0NvbnZlbnRpb25S
ZWdpc3RlcnMpICogZ3ByU2l6ZQorICAgICAgICArIHVzZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRG
UFJzKCkgKiBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGhGb3JDKEIzOjpG
UCkpOwogICAgICAgICAKICAgICBtX3N0YWNrQnl0ZXNOZWVkZWQgPSAobV9zdGFja0J5dGVzTmVl
ZGVkICsgc3RhY2tBbGlnbm1lbnRCeXRlcygpIC0gMSkgJiB+KHN0YWNrQWxpZ25tZW50Qnl0ZXMo
KSAtIDEpOwogICAgICAgICAKQEAgLTkxLDcgKzkxLDcgQEAgU2xvd1BhdGhDYWxsQ29udGV4dDo6
U2xvd1BhdGhDYWxsQ29udGV4dCgKICAgICAgICAgR1BSUmVnIHJlZyA9IEdQUkluZm86OnRvUmVn
aXN0ZXIoaSk7CiAgICAgICAgIGlmICghbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5nZXQo
cmVnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihyZWcs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
LCBtX29mZnNldFRvU2F2aW5nQXJlYSArIChzdGFja0luZGV4KyspICogd29yZFNpemUpKTsKKyAg
ICAgICAgbV9qaXQuc3RvcmVQdHIocmVnLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxw
ZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgbV9vZmZzZXRUb1NhdmluZ0FyZWEgKyAoc3RhY2tJ
bmRleCsrKSAqIGdwclNpemUpKTsKICAgICAgICAgbV90aHVua1NhdmVTZXQuY2xlYXIocmVnKTsK
ICAgICB9CiAgICAgICAgIApAQCAtMTA4LDcgKzEwOCw3IEBAIFNsb3dQYXRoQ2FsbENvbnRleHQ6
On5TbG93UGF0aENhbGxDb250ZXh0KCkKICAgICAgICAgR1BSUmVnIHJlZyA9IEdQUkluZm86OnRv
UmVnaXN0ZXIoaSk7CiAgICAgICAgIGlmICghbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5n
ZXQocmVnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX2ppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBt
X29mZnNldFRvU2F2aW5nQXJlYSArIChzdGFja0luZGV4KyspICogd29yZFNpemUpLCByZWcpOwor
ICAgICAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBtX29mZnNldFRvU2F2aW5nQXJlYSArIChzdGFja0luZGV4
KyspICogZ3ByU2l6ZSksIHJlZyk7CiAgICAgfQogICAgIAogICAgIG1faml0LmFkZFB0cihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihtX3N0YWNrQnl0ZXNOZWVkZWQpLCBDQ2FsbEhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtz
LmNwcAppbmRleCBkZTgyMTM4NTEwZjEuLmQ3NjQ0ZGNmMGM1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMVGh1bmtzLmNwcApAQCAtMjUsMTAgKzI1LDEyIEBACiAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJGVExUaHVua3MuaCIKKyNpbmNsdWRlICJ3dGYvU3RkSW50RXh0
cmFzLmgiCiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAogI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVy
c1Nwb29sZXJzLmgiCisjaW5jbHVkZSAiQjNXaWR0aC5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXRD
b21waWxlckNvbW1vbi5oIgogI2luY2x1ZGUgIkZUTE9TUkV4aXRDb21waWxlci5oIgogI2luY2x1
ZGUgIkZUTE9wZXJhdGlvbnMuaCIKQEAgLTE0MiwxMSArMTQ0LDExIEBAIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyQ2xvYmJlckNoZWNrKEFzc2VtYmx5SGVscGVycyYgaml0LCBSZWdpc3RlclNldCBkb250
Q2xvYmJlcikKICAgICBpZiAoIU9wdGlvbnM6OmNsb2JiZXJBbGxSZWdzSW5GVExJQ1Nsb3dQYXRo
KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWdpc3RlclNldCBjbG9iYmVyID0gUmVn
aXN0ZXJTZXQ6OmFsbFJlZ2lzdGVycygpOwotICAgIGNsb2JiZXIuZXhjbHVkZShSZWdpc3RlclNl
dDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKLSAgICBjbG9iYmVyLmV4Y2x1ZGUoUmVn
aXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOwotICAgIGNsb2JiZXIuZXhjbHVkZShSZWdpc3Rl
clNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKLSAgICBjbG9iYmVyLmV4Y2x1ZGUoZG9udENs
b2JiZXIpOworICAgIFJlZ2lzdGVyU2V0MTI4IGNsb2JiZXIgPSBSZWdpc3RlclNldDEyODo6dXNl
NjRCaXRzKFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKSk7CisgICAgY2xvYmJlci5leGNsdWRl
KFJlZ2lzdGVyU2V0MTI4Ojp1c2U2NEJpdHMoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVS
ZWdpc3RlcnMoKSkpOworICAgIGNsb2JiZXIuZXhjbHVkZShSZWdpc3RlclNldDEyODo6dXNlNjRC
aXRzKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKSk7CisgICAgY2xvYmJlci5leGNsdWRl
KFJlZ2lzdGVyU2V0MTI4OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIGNsb2JiZXIuZXhj
bHVkZShSZWdpc3RlclNldDEyODo6dXNlNjRCaXRzKGRvbnRDbG9iYmVyKSk7CiAgICAgCiAgICAg
R1BSUmVnIHNvbWVHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6
Zmlyc3QoKTsgcmVnIDw9IFJlZzo6bGFzdCgpOyByZWcgPSByZWcubmV4dCgpKSB7CkBAIC0xODUs
NyArMTg3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93UGF0
aENhbGxUaHVua0dlbmVyYXRvcihWTSYgdm0sIGNvbnN0IFMKICAgICBmb3IgKE1hY3JvQXNzZW1i
bGVyOjpSZWdpc3RlcklEIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCk7IHJl
ZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IHN0YXRpY19jYXN0PE1h
Y3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEPihyZWcgKyAxKSkgewogICAgICAgICBpZiAoIWtleS51
c2VkUmVnaXN0ZXJzKCkuZ2V0KHJlZykpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
c3RvcmVTcG9vbGVyLnN0b3JlR1BSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJl
bnRPZmZzZXQpIH0pOworICAgICAgICBzdG9yZVNwb29sZXIuc3RvcmVHUFIoeyByZWcsIHN0YXRp
Y19jYXN0PHB0cmRpZmZfdD4oY3VycmVudE9mZnNldCksIHNpemVvZihDUFVSZWdpc3RlcikgfSk7
CiAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKHZvaWQqKTsKICAgICB9CiAgICAgc3Rv
cmVTcG9vbGVyLmZpbmFsaXplR1BSKCk7CkBAIC0xOTMsOCArMTk1LDggQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVyYXRvcihWTSYg
dm0sIGNvbnN0IFMKICAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnID0g
TWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6
Omxhc3RGUFJlZ2lzdGVyKCk7IHJlZyA9IHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpGUFJl
Z2lzdGVySUQ+KHJlZyArIDEpKSB7CiAgICAgICAgIGlmICgha2V5LnVzZWRSZWdpc3RlcnMoKS5n
ZXQocmVnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzdG9yZVNwb29sZXIuc3Rv
cmVGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oY3VycmVudE9mZnNldCkgfSk7Ci0g
ICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKGRvdWJsZSk7CisgICAgICAgIHN0b3JlU3Bv
b2xlci5zdG9yZUZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihjdXJyZW50T2Zmc2V0
KSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoRm9yQyhCMzo6RlApKSB9
LCBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGhGb3JDKEIzOjpGUCkpKTsK
KyAgICAgICAgY3VycmVudE9mZnNldCArPSBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0
aXZlV2lkdGhGb3JDKEIzOjpGUCkpOwogICAgIH0KICAgICBzdG9yZVNwb29sZXIuZmluYWxpemVG
UFIoKTsKIApAQCAtMjIwLDggKzIyMiw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBTCiAKICAg
ICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnID0gTWFjcm9Bc3NlbWJsZXI6
Omxhc3RGUFJlZ2lzdGVyKCk7IDsgcmVnID0gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkZQ
UmVnaXN0ZXJJRD4ocmVnIC0gMSkpIHsKICAgICAgICAgaWYgKGtleS51c2VkUmVnaXN0ZXJzKCku
Z2V0KHJlZykpIHsKLSAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQgLT0gc2l6ZW9mKGRvdWJsZSk7
Ci0gICAgICAgICAgICBsb2FkU3Bvb2xlci5sb2FkRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJk
aWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0pOworICAgICAgICAgICAgY3VycmVudE9mZnNldCAtPSBC
Mzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGhGb3JDKEIzOjpGUCkpOworICAg
ICAgICAgICAgbG9hZFNwb29sZXIubG9hZEZQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90
PihjdXJyZW50T2Zmc2V0KSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRo
Rm9yQyhCMzo6RlApKSB9LCBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGhG
b3JDKEIzOjpGUCkpKTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVnID09IE1hY3JvQXNzZW1i
bGVyOjpmaXJzdEZQUmVnaXN0ZXIoKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjMxLDcgKzIz
Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxs
VGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBTCiAgICAgZm9yIChNYWNyb0Fzc2VtYmxlcjo6
UmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IDsgcmVnID0g
c3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KHJlZyAtIDEpKSB7CiAgICAg
ICAgIGlmIChrZXkudXNlZFJlZ2lzdGVycygpLmdldChyZWcpKSB7CiAgICAgICAgICAgICBjdXJy
ZW50T2Zmc2V0IC09IHNpemVvZih2b2lkKik7Ci0gICAgICAgICAgICBsb2FkU3Bvb2xlci5sb2Fk
R1BSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGN1cnJlbnRPZmZzZXQpIH0pOworICAg
ICAgICAgICAgbG9hZFNwb29sZXIubG9hZEdQUih7IHJlZywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90
PihjdXJyZW50T2Zmc2V0KSwgc2l6ZW9mKENQVVJlZ2lzdGVyKSB9KTsKICAgICAgICAgfQogICAg
ICAgICBpZiAocmVnID09IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCkpCiAgICAgICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
RFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKaW5kZXggZTkw
Zjk5NDY2MWE3Li5iNmUyZTExMjY4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
RFNMLnJiCkBAIC02MCw3ICs2MCw4MyBAQCBtb2R1bGUgRFNMCiAgICAgICAgIGFzc2VydCgiYG9w
X2dyb3VwYCBjYW4gb25seSBiZSBjYWxsZWQgaW4gYmV0d2VlbiBgYmVnaW5fc2VjdGlvbmAgYW5k
IGBlbmRfc2VjdGlvbmAiKSB7IG5vdCBAY3VycmVudF9zZWN0aW9uLm5pbD8gfQogICAgICAgICBA
Y3VycmVudF9zZWN0aW9uLmFkZF9vcGNvZGVfZ3JvdXAoZGVzYywgb3BzLCBjb25maWcpCiAgICAg
ZW5kCisgICAgCisgICAgZGVmIHNlbGYuc2ltZF9vcF9ncm91cChkZXNjLCBvcHMsIGNvbmZpZykK
KyAgICAgICAgYXNzZXJ0KCJgc2ltZF9vcF9ncm91cGAgY2FuIG9ubHkgYmUgY2FsbGVkIGluIGJl
dHdlZW4gYGJlZ2luX3NlY3Rpb25gIGFuZCBgZW5kX3NlY3Rpb25gIikgeyBub3QgQGN1cnJlbnRf
c2VjdGlvbi5uaWw/IH0KKworICAgICAgICBmb3Igb3AgaW4gb3BzIGRvCisgICAgICAgICAgICB2
YXJpYW50cyA9IFsiaTMyeDQiLCAiaTY0eDIiLCAiZjMyeDQiLCAiZjY0eDIiXQorICAgICAgICAg
ICAgaWYgY29uZmlnWzptYWtlU2lnbmVkVmFyaWFudHNdIHRoZW4KKyAgICAgICAgICAgICAgICB2
YXJpYW50cyArPSBbImk4eDE2X3UiLCAiaTh4MTZfcyIsICJpMTZ4OF91IiwgImkxNng4X3MiXQor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHZhcmlhbnRzICs9IFsiaTh4MTYiLCAi
aTE2eDgiXQorICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgIGlmIGNvbmZpZ1s6bWFrZUFs
bFNpZ25lZEFuZFVuc2lnbmVkVmFyaWFudHNdIHRoZW4KKyAgICAgICAgICAgICAgICB2YXJpYW50
cyA9IFsiaTh4MTZfdSIsICJpOHgxNl9zIiwgImkxNng4X3UiLCAiaTE2eDhfcyIsICJpMzJ4NF91
IiwgImkzMng0X3MiLCAiaTY0eDJfdSIsICJpNjR4Ml9zIiwgImYzMng0IiwgImY2NHgyIl0KKyAg
ICAgICAgICAgIGVuZAorCisgICAgICAgICAgICBpZiBjb25maWdbOm1ha2VPbmx5RmxvYXRpbmdQ
b2ludFZhcmlhbnRzXSB0aGVuCisgICAgICAgICAgICAgICAgdmFyaWFudHMgPSBbImYzMng0Iiwg
ImY2NHgyIl0KKyAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICBpZiBjb25maWdbOm1ha2VP
bmx5VjEyOF0gdGhlbgorICAgICAgICAgICAgICAgIHZhcmlhbnRzID0gWyJ2MTI4Il0KKyAgICAg
ICAgICAgIGVuZAorCisgICAgICAgICAgICBpZiBjb25maWdbOm1ha2VPbmx5SThdIHRoZW4KKyAg
ICAgICAgICAgICAgICB2YXJpYW50cyA9IFsiaTh4MTYiXQorICAgICAgICAgICAgZW5kCisKKyAg
ICAgICAgICAgIGlmIGNvbmZpZ1s6bWFrZU9ubHlGMzJdIHRoZW4KKyAgICAgICAgICAgICAgICB2
YXJpYW50cyA9IFsiZjMyeDQiXQorICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgIGlmIGNv
bmZpZ1s6bWFrZU9ubHlGNjRdIHRoZW4KKyAgICAgICAgICAgICAgICB2YXJpYW50cyA9IFsiZjY0
eDIiXQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAKIAorICAgICAgICAgICAgaWYgY29u
ZmlnWzpza2lwSTY0VmFyaWFudF0gdGhlbgorICAgICAgICAgICAgICAgIHZhcmlhbnRzID0gdmFy
aWFudHMuZmlsdGVyIGRvIHx2fCAKKyAgICAgICAgICAgICAgICAgICAgaXNJNjQgPSB2ID1+IC9p
NjR4Mi8KKyAgICAgICAgICAgICAgICAgICAgIWlzSTY0CisgICAgICAgICAgICAgICAgZW5kCisg
ICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgaWYgY29uZmlnWzpza2lwSTMyVmFyaWFudF0g
dGhlbgorICAgICAgICAgICAgICAgIHZhcmlhbnRzID0gdmFyaWFudHMuZmlsdGVyIGRvIHx2fCAK
KyAgICAgICAgICAgICAgICAgICAgaXNJMzIgPSB2ID1+IC9pMzJ4NC8KKyAgICAgICAgICAgICAg
ICAgICAgIWlzSTMyCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbmQKKworICAg
ICAgICAgICAgaWYgY29uZmlnWzpza2lwSThWYXJpYW50XSB0aGVuCisgICAgICAgICAgICAgICAg
dmFyaWFudHMgPSB2YXJpYW50cy5maWx0ZXIgZG8gfHZ8IAorICAgICAgICAgICAgICAgICAgICBp
c0k4ID0gdiA9fiAvaTh4MTYvCisgICAgICAgICAgICAgICAgICAgICFpc0k4CisgICAgICAgICAg
ICAgICAgZW5kCisgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgaWYgY29uZmlnWzpza2lw
RmxvYXRWYXJpYW50c10gdGhlbgorICAgICAgICAgICAgICAgIHZhcmlhbnRzID0gdmFyaWFudHMu
ZmlsdGVyIGRvIHx2fCAKKyAgICAgICAgICAgICAgICAgICAgaXNGbG9hdCA9IHYgPX4gL2YzMng0
fGY2NHgyLworICAgICAgICAgICAgICAgICAgICAhaXNGbG9hdAorICAgICAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgIGlmIGNvbmZpZ1s6dmFyaWFudHNdIHRo
ZW4KKyAgICAgICAgICAgICAgICB2YXJpYW50cyA9IGNvbmZpZ1s6dmFyaWFudHNdCisgICAgICAg
ICAgICBlbmQKKworICAgICAgICAgICAgb3BMaXN0ID0gW10KKyAgICAgICAgICAgIGZvciB2IGlu
IHZhcmlhbnRzIGRvCisgICAgICAgICAgICAgICAgb3BMaXN0IDw8ICgob3AudG9fcyArICJfIiAr
IHYpLnRvX3N5bSkKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgQGN1cnJlbnRfc2VjdGlv
bi5hZGRfb3Bjb2RlX2dyb3VwKChkZXNjLnRvX3MgKyBvcC50b19zKS50b19zeW0sIG9wTGlzdCwg
Y29uZmlnKQorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKICAgICBkZWYgc2VsZi50eXBlcyh0
eXBlcykKICAgICAgICAgdHlwZXMubWFwIGRvIHx0eXBlfAogICAgICAgICAgICAgdHlwZSA9IChA
bmFtZXNwYWNlcyArIFt0eXBlXSkuam9pbiAiOjoiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0b3IvT3Bjb2RlLnJiCmluZGV4IGVlNjc4N2IxOGU0ZC4uNWEyODM1YTRiN2QyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYgpAQCAtNzEsNyArNzEsMTQgQEAg
Y2xhc3MgT3Bjb2RlCiAgICAgZW5kCiAKICAgICBkZWYgY2FwaXRhbGl6ZWRfbmFtZQotICAgICAg
ICBuYW1lLnNwbGl0KCdfJykubWFwKCY6Y2FwaXRhbGl6ZSkuam9pbgorICAgICAgICAobmFtZS5z
cGxpdCgnXycpLm1hcCBkbyB8c3wKKyAgICAgICAgICAgIHMgPSBzLmNhcGl0YWxpemUKKyAgICAg
ICAgICAgIGlmIHMubWF0Y2goL15cZC8pCisgICAgICAgICAgICAgICAgaSA9IHMubWF0Y2goL15c
ZCsvKVswXS5zaXplCisgICAgICAgICAgICAgICAgcyA9IHNbMC4uaS0xXSArIHNbaS4uLTFdLmNh
cGl0YWxpemUKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgcworICAgICAgICBlbmQpLmpv
aW4KICAgICBlbmQKIAogICAgIGRlZiB0eXBlZF9hcmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdG9yL1NlY3Rpb24ucmIKaW5kZXggNzJkMGM4YjQwZjEwLi5mOGQ0MDRlNTc3ZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKQEAgLTU5LDcgKzU5
LDkgQEAgY2xhc3MgU2VjdGlvbgogICAgICAgICAgICAgICByYWlzZSAiQnl0ZWNvZGVzIHdpdGgg
Y2hlY2twb2ludHMgc2hvdWxkIGhhdmUgbWV0YWRhdGE6ICN7YS5uYW1lfSIgaWYgYS5jaGVja3Bv
aW50cyBhbmQgYS5tZXRhZGF0YS5lbXB0eT8KICAgICAgICAgICAgICAgcmFpc2UgIkJ5dGVjb2Rl
cyB3aXRoIGNoZWNrcG9pbnRzIHNob3VsZCBoYXZlIG1ldGFkYXRhOiAje2IubmFtZX0iIGlmIGIu
Y2hlY2twb2ludHMgYW5kIGIubWV0YWRhdGEuZW1wdHk/CiAgICAgICAgICAgICAgIHJlc3VsdCA9
IGEuY2hlY2twb2ludHMgPyBiLmNoZWNrcG9pbnRzID8gMCA6IC0xIDogMQotICAgICAgICAgIGVs
c2lmCisgICAgICAgICAgZWxzaWYgYS5uYW1lLmRvd25jYXNlLmluY2x1ZGU/KCJzaW1kIikgb3Ig
Yi5uYW1lLmRvd25jYXNlLmluY2x1ZGU/KCJzaW1kIikKKyAgICAgICAgICAgICAgcmVzdWx0ID0g
YS5uYW1lLmluY2x1ZGU/KCJzaW1kIikgPyBiLm5hbWUuaW5jbHVkZT8oInNpbWQiKSA/IDAgOiAx
IDogLTEgCisgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICByZXN1bHQgPSBhLm1ldGFkYXRh
LmVtcHR5PyA/IGIubWV0YWRhdGEuZW1wdHk/ID8gMCA6IDEgOiAtMSAKICAgICAgICAgICBlbmQK
ICAgICAgICAgICByZXN1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0b3IvV2FzbS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvV2FzbS5yYgpp
bmRleCAyYzExYmFmMjBkMmYuLjk2ZTUxMDhiMzQxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRvci9XYXNtLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0b3IvV2FzbS5yYgpAQCAtNjQsNyArNjQsNyBAQCBtb2R1bGUgV2FzbQogdGVtcGxhdGU8
PgogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkT3A8I3tvcF90eXBlKG9wKX0+KEV4cHJlc3Npb25U
eXBlIGxocywgRXhwcmVzc2lvblR5cGUgcmhzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQ
YXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHJlc3VsdCA9IHB1c2go
I3tvcF9yZXR1cm4ob3ApfSk7CiAgICAgI3tvcC5jYXBpdGFsaXplZF9uYW1lfTo6ZW1pdCh0aGlz
LCByZXN1bHQsIGxocywgcmhzKTsKICAgICByZXR1cm4geyB9OwogfQpAQCAtNzYsNyArNzYsNyBA
QCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRPcDwje29wX3R5cGUob3ApfT4oRXhwcmVzc2lvblR5
cGUgbGhzLCBFeHByZXNzaW9uVHlwZSByaAogdGVtcGxhdGU8PgogYXV0byBMTEludEdlbmVyYXRv
cjo6YWRkT3A8I3tvcF90eXBlKG9wKX0+KEV4cHJlc3Npb25UeXBlIG9wZXJhbmQsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBwdXNoKCk7
CisgICAgcmVzdWx0ID0gcHVzaCgje29wX3JldHVybihvcCl9KTsKICAgICAje29wLmNhcGl0YWxp
emVkX25hbWV9OjplbWl0KHRoaXMsIHJlc3VsdCwgb3BlcmFuZCk7CiAgICAgcmV0dXJuIHsgfTsK
IH0KQEAgLTg2LDQgKzg2LDEyIEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZE9wPCN7b3BfdHlw
ZShvcCl9PihFeHByZXNzaW9uVHlwZSBvcGVyYW5kLCBFeHByZXNzaW9uVHlwCiAgICAgZGVmIHNl
bGYub3BfdHlwZShvcCkKICAgICAgICAgIk9wVHlwZTo6I3tvcC51bnByZWZpeGVkX25hbWUuZ3N1
YigvXi58W15hLXowLTldLi8pIHsgfGN8IGNbLTFdLnVwY2FzZSB9fSIKICAgICBlbmQKKworICAg
IGRlZiBzZWxmLm9wX3JldHVybihvcCkKKyAgICAgICAgdCA9IG9wLmV4dHJhc1sicmV0dXJuIl1b
MF0KKyAgICAgICAgaWYgdCA9PSAiYm9vbCIgdGhlbgorICAgICAgICAgICAgdCA9ICJpMzIiCisg
ICAgICAgIGVuZAorICAgICAgICAiVHlwZXM6OiN7dC51cGNhc2V9IgorICAgIGVuZAogZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL21haW4ucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL21haW4ucmIKaW5kZXggNzIwMGU3MDc0N2UyLi5k
ZTUwZGJjNzk5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
bWFpbi5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL21haW4ucmIKQEAg
LTMxLDYgKzMxLDcgQEAgRFNMOjp0eXBlcyBbCiAgIDppbnQsCiAgIDp1bnNpZ25lZCwKICAgOnVp
bnRwdHJfdCwKKyAgOnVpbnQ4X3QsCiBdCiAKIG9wdGlvbnMgPSBPcHRpb25zOjpwYXJzZShBUkdW
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKaW5kZXggZWQ2ODk1MmY2ZDZlLi41YmU0MzkxMmE2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNjksNiArNjksNyBA
QAogI2luY2x1ZGUgIlZNSW5saW5lcy5oIgogI2luY2x1ZGUgIlZNVHJhcHNJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCisjaW5jbHVkZSAid3RmL1N0ZEludEV4dHJhcy5o
IgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1Njb3BlLmg+CkBAIC02MjUsNyArNjI2LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgUmVnaXN0ZXJTZXQgZG9udENvcHlSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdp
c3RlcnMoKTsKICAgICAgICAgQ1BVUmVnaXN0ZXIqIGZyYW1lID0gcmVpbnRlcnByZXRfY2FzdDxD
UFVSZWdpc3Rlcio+KG1fY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSk7CiAKLSAgICAgICAgdW5zaWdu
ZWQgcmVnaXN0ZXJDb3VudCA9IGN1cnJlbnRDYWxsZWVTYXZlcy0+c2l6ZSgpOworICAgICAgICB1
bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY3VycmVudENhbGxlZVNhdmVzLT5jb3VudCgpOworICAg
ICAgICBBU1NFUlQocmVnaXN0ZXJDb3VudCA9PSBjdXJyZW50Q2FsbGVlU2F2ZXMtPmJ5dGVTaXpl
KCkgLyBzaXplb2YoQ1BVUmVnaXN0ZXIpKTsKICAgICAgICAgVk1FbnRyeVJlY29yZCogcmVjb3Jk
ID0gdm1FbnRyeVJlY29yZChtX3ZtLnRvcEVudHJ5RnJhbWUpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBSZWdpc3Rl
ckF0T2Zmc2V0IGN1cnJlbnRFbnRyeSA9IGN1cnJlbnRDYWxsZWVTYXZlcy0+YXQoaSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaAppbmRl
eCBiZTdiZjg4OTg3OWQuLjk5NWFjZTM5OTNhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5oCkBAIC00OCw3ICs0OCw3IEBAIHN0cnVj
dCBWTUVudHJ5UmVjb3JkIHsKICAgICBKU09iamVjdCogY2FsbGVlKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsZWU7IH0KIAogI2lmICFFTkFCTEUoQ19MT09QKSAmJiBOVU1CRVJfT0ZfQ0FMTEVFX1NB
VkVTX1JFR0lTVEVSUyA+IDAKLSAgICBDUFVSZWdpc3RlciBjYWxsZWVTYXZlUmVnaXN0ZXJzQnVm
ZmVyW05VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTXTsKKyAgICBDUFVSZWdpc3RlciBj
YWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyW1NJWkVfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSU107
CiAjZWxpZiBFTkFCTEUoQ19MT09QKQogICAgIENQVVJlZ2lzdGVyIGNhbGxlZVNhdmVSZWdpc3Rl
cnNCdWZmZXJbMV07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmNwcAppbmRleCBhMzUwNWVkNTYyMWQuLjZlOWVlZWM3Nzk5NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMjUsMTEgKzI1
LDEzIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMu
aCIKKyNpbmNsdWRlICJ3dGYvU3RkSW50RXh0cmFzLmgiCiAKICNpZiBFTkFCTEUoSklUKQogCiAj
aW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVyc1Nwb29sZXJz
LmgiCisjaW5jbHVkZSAiQjNXaWR0aC5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCkBAIC02MTAsNyArNjEyLDggQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OnJlc3RvcmVDYWxs
ZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoRW50cnlGcmEKICNpZiBOVU1C
RVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKICAgICBSZWdpc3RlckF0T2Zmc2V0TGlz
dCogYWxsQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZz
ZXRzKCk7CiAgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdpc3RlclNl
dDo6c3RhY2tSZWdpc3RlcnMoKTsKLSAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxsQ2Fs
bGVlU2F2ZXMtPnNpemUoKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxsQ2FsbGVl
U2F2ZXMtPmNvdW50KCk7CisgICAgQVNTRVJUKHJlZ2lzdGVyQ291bnQgPT0gYWxsQ2FsbGVlU2F2
ZXMtPmJ5dGVTaXplKCkgLyBzaXplb2YoQ1BVUmVnaXN0ZXIpKTsKIAogICAgIEdQUlJlZyBzY3Jh
dGNoID0gSW52YWxpZEdQUlJlZzsKICAgICB1bnNpZ25lZCBzY3JhdGNoR1BSRW50cnlJbmRleCA9
IDA7CkBAIC02OTcsNyArNzAwLDggQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OnJlc3RvcmVDYWxs
ZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwoR1AKICAgICBhZGRQ
dHIoVHJ1c3RlZEltbTMyKEVudHJ5RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJPZmZz
ZXQoKSksIGVudHJ5RnJhbWVHUFIpOwogCiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENh
bGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOwot
ICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZlcy0+c2l6ZSgpOworICAg
IHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZlcy0+Y291bnQoKTsKKyAgICBB
U1NFUlQocmVnaXN0ZXJDb3VudCA9PSBhbGxDYWxsZWVTYXZlcy0+Ynl0ZVNpemUoKSAvIHNpemVv
ZihDUFVSZWdpc3RlcikpOwogCiAgICAgTG9hZFJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgZW50
cnlGcmFtZUdQUik7CiAKQEAgLTcxNyw3ICs3MjEsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6
cmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVySW1wbChH
UAogICAgICAgICBpZiAoc2tpcExpc3QuY29udGFpbnMoZW50cnkucmVnKCkpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIEFTU0VSVCghZW50cnkucmVnKCkuaXNHUFIoKSk7Ci0gICAg
ICAgIHNwb29sZXIubG9hZEZQUihlbnRyeSk7CisgICAgICAgIHNwb29sZXIubG9hZEZQUihlbnRy
eSwgQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoRm9yQyhCMzo6RlApKSk7
CiAgICAgfQogICAgIHNwb29sZXIuZmluYWxpemVGUFIoKTsKIApAQCAtMTA4Niw3ICsxMDkwLDgg
QEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxl
ZVNhdmVzQnVmZmVySW1wbChHUFJSZWcgY2EKIAogICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBh
bGxDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMo
KTsKICAgICBSZWdpc3RlclNldCBkb250Q29weVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjpzdGFj
a1JlZ2lzdGVycygpOwotICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZl
cy0+c2l6ZSgpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZlcy0+
Y291bnQoKTsKKyAgICBBU1NFUlQocmVnaXN0ZXJDb3VudCA9PSBhbGxDYWxsZWVTYXZlcy0+Ynl0
ZVNpemUoKSAvIHNpemVvZihDUFVSZWdpc3RlcikpOwogCiAgICAgU3RvcmVSZWdTcG9vbGVyIHNw
b29sZXIoKnRoaXMsIGNhbGxlZVNhdmVzQnVmZmVyKTsKIApAQCAtMTEwNCw3ICsxMTA5LDcgQEAg
dm9pZCBBc3NlbWJseUhlbHBlcnM6OmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVySW1wbChHUFJSZWcgY2EKICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9
IGFsbENhbGxlZVNhdmVzLT5hdChpKTsKICAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmNv
bnRhaW5zKGVudHJ5LnJlZygpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzcG9v
bGVyLnN0b3JlRlBSKGVudHJ5KTsKKyAgICAgICAgc3Bvb2xlci5zdG9yZUZQUihlbnRyeSwgQjM6
OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoRm9yQyhCMzo6RlApKSk7CiAgICAg
fQogICAgIHNwb29sZXIuZmluYWxpemVGUFIoKTsKIApAQCAtMTE5Niw5ICsxMjAxLDkgQEAgdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiBs
aXN0KQogewogICAgIFN0b3JlUmVnU3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBmcmFtZVBvaW50ZXJS
ZWdpc3Rlcik7CiAKLSAgICBzaXplX3QgbGlzdFNpemUgPSBsaXN0LnNpemUoKTsKKyAgICBzaXpl
X3QgbGlzdENvdW50ID0gbGlzdC5jb3VudCgpOwogICAgIHNpemVfdCBpID0gMDsKLSAgICBmb3Ig
KDsgaSA8IGxpc3RTaXplOyBpKyspIHsKKyAgICBmb3IgKDsgaSA8IGxpc3RDb3VudDsgaSsrKSB7
CiAgICAgICAgIGF1dG8gZW50cnkgPSBsaXN0LmF0KGkpOwogICAgICAgICBpZiAoIWVudHJ5LnJl
ZygpLmlzR1BSKCkpCiAgICAgICAgICAgICBicmVhazsKQEAgLTEyMDYsOCArMTIxMSwxMSBAQCB2
b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3Qm
IGxpc3QpCiAgICAgfQogICAgIHNwb29sZXIuZmluYWxpemVHUFIoKTsKIAotICAgIGZvciAoOyBp
IDwgbGlzdFNpemU7IGkrKykKLSAgICAgICAgc3Bvb2xlci5zdG9yZUZQUihsaXN0LmF0KGkpKTsK
KyAgICBpZiAobGlzdENvdW50KQorICAgICAgICBBU1NFUlQobGlzdC5jb3VudCgpIDwgbGlzdC5i
eXRlU2l6ZSgpIC8gc2l6ZW9mKENQVVJlZ2lzdGVyKSk7CisKKyAgICBmb3IgKDsgaSA8IGxpc3RD
b3VudDsgaSsrKQorICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGxpc3QuYXQoaSksIEIzOjpieXRl
c0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CiAgICAgc3Bvb2xlci5m
aW5hbGl6ZUZQUigpOwogfQogCkBAIC0xMjE1LDkgKzEyMjMsOSBAQCB2b2lkIEFzc2VtYmx5SGVs
cGVyczo6ZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmIGxpc3QpCiB7CiAg
ICAgTG9hZFJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywgZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwog
Ci0gICAgc2l6ZV90IGxpc3RTaXplID0gbGlzdC5zaXplKCk7CisgICAgc2l6ZV90IGxpc3RDb3Vu
dCA9IGxpc3QuY291bnQoKTsKICAgICBzaXplX3QgaSA9IDA7Ci0gICAgZm9yICg7IGkgPCBsaXN0
U2l6ZTsgaSsrKSB7CisgICAgZm9yICg7IGkgPCBsaXN0Q291bnQ7IGkrKykgewogICAgICAgICBh
dXRvIGVudHJ5ID0gbGlzdC5hdChpKTsKICAgICAgICAgaWYgKCFlbnRyeS5yZWcoKS5pc0dQUigp
KQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjI1LDE1ICsxMjMzLDE5IEBAIHZvaWQgQXNzZW1i
bHlIZWxwZXJzOjplbWl0UmVzdG9yZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgbGlzdCkK
ICAgICB9CiAgICAgc3Bvb2xlci5maW5hbGl6ZUdQUigpOwogCi0gICAgZm9yICg7IGkgPCBsaXN0
U2l6ZTsgaSsrKQotICAgICAgICBzcG9vbGVyLmxvYWRGUFIobGlzdC5hdChpKSk7CisgICAgaWYg
KGxpc3RDb3VudCkKKyAgICAgICAgQVNTRVJUKGxpc3QuY291bnQoKSA8IGxpc3QuYnl0ZVNpemUo
KSAvIHNpemVvZihDUFVSZWdpc3RlcikpOworCisgICAgZm9yICg7IGkgPCBsaXN0Q291bnQ7IGkr
KykKKyAgICAgICAgc3Bvb2xlci5sb2FkRlBSKGxpc3QuYXQoaSksIEIzOjpieXRlc0ZvcldpZHRo
KEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CiAgICAgc3Bvb2xlci5maW5hbGl6ZUZQ
UigpOwogfQogCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVDYWxsZWVTYXZlc0Zvcihj
b25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMpCiB7CiAgICAgUmVnaXN0ZXJT
ZXQgZG9udFNhdmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdp
c3RlcnMoKSk7Ci0gICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXpl
KCk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5jb3VudCgpOwor
ICAgIEFTU0VSVChyZWdpc3RlckNvdW50ID09IGNhbGxlZVNhdmVzLT5ieXRlU2l6ZSgpIC8gc2l6
ZW9mKENQVVJlZ2lzdGVyKSk7CiAKICAgICBTdG9yZVJlZ1Nwb29sZXIgc3Bvb2xlcigqdGhpcywg
ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwogCkBAIC0xMjUxLDcgKzEyNjMsNyBAQCB2b2lkIEFzc2Vt
Ymx5SGVscGVyczo6ZW1pdFNhdmVDYWxsZWVTYXZlc0Zvcihjb25zdCBSZWdpc3RlckF0T2Zmc2V0
TGlzdCogY2FsbGVlUwogICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2
ZXMtPmF0KGkpOwogICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3RlcnMuY29udGFpbnMoZW50cnku
cmVnKCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHNwb29sZXIuc3RvcmVGUFIo
ZW50cnkpOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5LCBCMzo6Ynl0ZXNGb3JXaWR0
aChCMzo6Y29uc2VydmF0aXZlV2lkdGhGb3JDKEIzOjpGUCkpKTsKICAgICB9CiAgICAgc3Bvb2xl
ci5maW5hbGl6ZUZQUigpOwogfQpAQCAtMTI1OSw3ICsxMjcxLDggQEAgdm9pZCBBc3NlbWJseUhl
bHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IGNhbGxlZVMKIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9y
KGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcykKIHsKICAgICBSZWdpc3Rl
clNldCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFj
a1JlZ2lzdGVycygpKTsKLSAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMt
PnNpemUoKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPmNvdW50
KCk7CisgICAgQVNTRVJUKHJlZ2lzdGVyQ291bnQgPT0gY2FsbGVlU2F2ZXMtPmJ5dGVTaXplKCkg
LyBzaXplb2YoQ1BVUmVnaXN0ZXIpKTsKICAgICAKICAgICBMb2FkUmVnU3Bvb2xlciBzcG9vbGVy
KCp0aGlzLCBmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CiAKQEAgLTEyNzcsNyArMTI5MCw3IEBAIHZv
aWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBjYWxsCiAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBj
YWxsZWVTYXZlcy0+YXQoaSk7CiAgICAgICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQo
ZW50cnkucmVnKCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHNwb29sZXIubG9h
ZEZQUihlbnRyeSk7CisgICAgICAgIHNwb29sZXIubG9hZEZQUihlbnRyeSwgQjM6OmJ5dGVzRm9y
V2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpKTsKICAgICB9CiAgICAgc3Bvb2xl
ci5maW5hbGl6ZUZQUigpOwogfQpAQCAtMTMwMCw3ICsxMzEzLDggQEAgdm9pZCBBc3NlbWJseUhl
bHBlcnM6OmNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9F
bnRyeUZyYW0KICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMgPSBSZWdp
c3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CiAgICAgY29uc3QgUmVnaXN0
ZXJBdE9mZnNldExpc3QqIGN1cnJlbnRDYWxsZWVTYXZlcyA9ICZSZWdpc3RlckF0T2Zmc2V0TGlz
dDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKICAgICBSZWdpc3RlclNldCBk
b250Q29weVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOwotICAgIHVu
c2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZlcy0+c2l6ZSgpOworICAgIHVuc2ln
bmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZlcy0+Y291bnQoKTsKKyAgICBBU1NFUlQo
cmVnaXN0ZXJDb3VudCA9PSBhbGxDYWxsZWVTYXZlcy0+Ynl0ZVNpemUoKSAvIHNpemVvZihDUFVS
ZWdpc3RlcikpOwogCiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgZm9yICg7IGkgPCByZWdpc3Rl
ckNvdW50OyBpKyspIHsKQEAgLTEzMjcsMTAgKzEzNDEsMTAgQEAgdm9pZCBBc3NlbWJseUhlbHBl
cnM6OmNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRy
eUZyYW0KIAogICAgICAgICBSRUxFQVNFX0FTU0VSVChlbnRyeS5yZWcoKS5pc0ZQUigpKTsKICAg
ICAgICAgaWYgKGN1cnJlbnRGcmFtZUVudHJ5KQotICAgICAgICAgICAgc3Bvb2xlci5sb2FkRlBS
KGN1cnJlbnRGcmFtZUVudHJ5LT5vZmZzZXQoKSk7CisgICAgICAgICAgICBzcG9vbGVyLmxvYWRG
UFIoY3VycmVudEZyYW1lRW50cnktPm9mZnNldCgpLCBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29u
c2VydmF0aXZlV2lkdGhGb3JDKEIzOjpGUCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
c3Bvb2xlci5jb3B5RlBSKGVudHJ5LnJlZygpLmZwcigpKTsKLSAgICAgICAgc3Bvb2xlci5zdG9y
ZUZQUihlbnRyeS5vZmZzZXQoKSk7CisgICAgICAgICAgICBzcG9vbGVyLmNvcHlGUFIoZW50cnku
cmVnKCkuZnByKCksIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aEZvckMo
QjM6OkZQKSkpOworICAgICAgICBzcG9vbGVyLnN0b3JlRlBSKGVudHJ5Lm9mZnNldCgpLCBCMzo6
Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGhGb3JDKEIzOjpGUCkpKTsKICAgICB9
CiAgICAgc3Bvb2xlci5maW5hbGl6ZUZQUigpOwogCkBAIC0xMzQ4LDcgKzEzNjIsOCBAQCB2b2lk
IEFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVPckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNG
b3IoQ29kZUJsb2NrKiBjb2RlQgogCiAgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNh
bGxlZVNhdmVzID0gJlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2
ZVJlZ2lzdGVycygpOwogICAgIFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0
ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOwotICAgIHVuc2lnbmVkIHJlZ2lz
dGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291
bnQgPSBjYWxsZWVTYXZlcy0+Y291bnQoKTsKKyAgICBBU1NFUlQocmVnaXN0ZXJDb3VudCA9PSBj
YWxsZWVTYXZlcy0+Ynl0ZVNpemUoKSAvIHNpemVvZihDUFVSZWdpc3RlcikpOwogCiAgICAgR1BS
UmVnIGRzdEJ1ZmZlckdQUiA9IHRlbXAxOwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIob2Zmc2V0
VmlydHVhbFJlZ2lzdGVyLm9mZnNldEluQnl0ZXMoKSksIGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBk
c3RCdWZmZXJHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnNTcG9vbGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnNTcG9vbGVycy5oCmluZGV4IDc4MzFlZjM2NjkwZC4uZWQ0NjUwMDVhOGY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnNTcG9vbGVy
cy5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiYjMvQjNX
aWR0aC5oIgorI2luY2x1ZGUgInd0Zi9Bc3NlcnRpb25zLmgiCiAjaWYgRU5BQkxFKEpJVCkKIAog
I2luY2x1ZGUgIkFzc2VtYmx5SGVscGVycy5oIgpAQCAtNzAsNyArNzIsNyBAQCBzdHJ1Y3QgUmVn
RGlzcGF0Y2g8RlBSUmVnPiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3Bvb2xlcj4gc3RhdGlj
IEZQUlJlZyB0ZW1wMihjb25zdCBTcG9vbGVyKiBzcG9vbGVyKSB7IHJldHVybiBzcG9vbGVyLT5t
X3RlbXAyRlBSOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3Bvb2xlcj4gc3RhdGljIEZQUlJl
ZyYgcmVnVG9TdG9yZShTcG9vbGVyKiBzcG9vbGVyKSB7IHJldHVybiBzcG9vbGVyLT5tX2ZwclRv
U3RvcmU7IH0KICAgICBzdGF0aWMgY29uc3RleHByIEZQUlJlZyBpbnZhbGlkKCkgeyByZXR1cm4g
SW52YWxpZEZQUlJlZzsgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHJlZ1NpemUoKSB7
IHJldHVybiBzaXplb2YoZG91YmxlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHJl
Z1NpemUoKSB7IHJldHVybiBCMzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgo
QjM6OkZQKSk7IH0KICNpZiBDUFUoQVJNNjQpCiAgICAgc3RhdGljIGJvb2wgaXNWYWxpZExvYWRQ
YWlySW1tKGludCBvZmZzZXQpIHsgcmV0dXJuIEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkTERQRlBJ
bW08NjQ+KG9mZnNldCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RvcmVQYWlySW1tKGlu
dCBvZmZzZXQpIHsgcmV0dXJuIEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkU1RQRlBJbW08NjQ+KG9m
ZnNldCk7IH0KQEAgLTkxLDI5ICs5MywzNSBAQCBwdWJsaWM6CiAgICAgeyB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgotICAgIHZvaWQgZXhlY3V0ZShjb25zdCBSZWdpc3RlckF0
T2Zmc2V0JiBlbnRyeSkKKyAgICB2b2lkIGV4ZWN1dGUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYg
ZW50cnksIHVuc2lnbmVkIGJ5dGVzV2lkdGgpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VS
VChSZWdEaXNwYXRjaDxSZWdUeXBlPjo6aGFzU2FtZVR5cGUoZW50cnkucmVnKCkpKTsKICAgICAg
ICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKQotICAgICAgICAgICAgcmV0dXJuIG9wKCkuZXhl
Y3V0ZVNpbmdsZShlbnRyeS5vZmZzZXQoKSwgUmVnRGlzcGF0Y2g8UmVnVHlwZT46OmdldChlbnRy
eS5yZWcoKSkpOworICAgICAgICAgICAgcmV0dXJuIG9wKCkuZXhlY3V0ZVNpbmdsZShlbnRyeS5v
ZmZzZXQoKSwgUmVnRGlzcGF0Y2g8UmVnVHlwZT46OmdldChlbnRyeS5yZWcoKSksIGJ5dGVzV2lk
dGgpOworICAgICAgICBpZiAoYnl0ZXNXaWR0aCA+IDgpCisgICAgICAgICAgICByZXR1cm4gb3Ao
KS5leGVjdXRlU2luZ2xlKGVudHJ5Lm9mZnNldCgpLCBSZWdEaXNwYXRjaDxSZWdUeXBlPjo6Z2V0
KGVudHJ5LnJlZygpKSwgYnl0ZXNXaWR0aCk7CiAKICAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRW50
cnkucmVnKCkuaXNTZXQoKSkgewogICAgICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0gZW50cnk7
CisgICAgICAgICAgICBtX2J1ZmZlcmVkQnl0ZXNXaWR0aCA9IGJ5dGVzV2lkdGg7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICBjb25zdGV4cHIgcHRyZGlmZl90IHJl
Z1NpemUgPSBSZWdEaXNwYXRjaDxSZWdUeXBlPjo6cmVnU2l6ZSgpOworICAgICAgICAKKyAgICAg
ICAgcHRyZGlmZl90IHJlZ1NpemUgPSBieXRlc1dpZHRoOworICAgICAgICBBU1NFUlQoYnl0ZXNX
aWR0aCA8PSBSZWdEaXNwYXRjaDxSZWdUeXBlPjo6cmVnU2l6ZSgpKTsKICAgICAgICAgUmVnVHlw
ZSBidWZmZXJlZEVudHJ5UmVnID0gUmVnRGlzcGF0Y2g8UmVnVHlwZT46OmdldChtX2J1ZmZlcmVk
RW50cnkucmVnKCkpOwogICAgICAgICBSZWdUeXBlIGVudHJ5UmVnID0gUmVnRGlzcGF0Y2g8UmVn
VHlwZT46OmdldChlbnRyeS5yZWcoKSk7CiAKICAgICAgICAgaWYgKGVudHJ5Lm9mZnNldCgpID09
IG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQoKSArIHJlZ1NpemUpIHsKICAgICAgICAgICAgIG9wKCku
ZXhlY3V0ZVBhaXIobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpLCBidWZmZXJlZEVudHJ5UmVnLCBl
bnRyeVJlZyk7CiAgICAgICAgICAgICBtX2J1ZmZlcmVkRW50cnkgPSB7IH07CisgICAgICAgICAg
ICBtX2J1ZmZlcmVkQnl0ZXNXaWR0aCA9IDA7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQoKSA9PSBlbnRyeS5vZmZzZXQo
KSArIHJlZ1NpemUpIHsKICAgICAgICAgICAgIG9wKCkuZXhlY3V0ZVBhaXIoZW50cnkub2Zmc2V0
KCksIGVudHJ5UmVnLCBidWZmZXJlZEVudHJ5UmVnKTsKICAgICAgICAgICAgIG1fYnVmZmVyZWRF
bnRyeSA9IHsgfTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRCeXRlc1dpZHRoID0gMDsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMjEsNyArMTI5LDcgQEAgcHVibGljOgog
ICAgICAgICAvLyBFeGVjdXRlIHRoZSBwcmV2aW91cyBvbmUgYXMgYSBzaW5nbGUgKGZpbmFsaXpl
IHdpbGwgZG8gdGhhdCksIGFuZCB0aGVuCiAgICAgICAgIC8vIGJ1ZmZlciB0aGUgY3VycmVudCBl
bnRyeSB0byBwb3RlbnRpYWxseSBiZSBwYWlyZWQgd2l0aCB0aGUgbmV4dCBlbnRyeS4KICAgICAg
ICAgZmluYWxpemU8UmVnVHlwZT4oKTsKLSAgICAgICAgZXhlY3V0ZTxSZWdUeXBlPihlbnRyeSk7
CisgICAgICAgIGV4ZWN1dGU8UmVnVHlwZT4oZW50cnksIGJ5dGVzV2lkdGgpOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CkBAIC0xMjksOCArMTM3LDEwIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoaGFzUGFpck9wKSB7CiAgICAgICAgICAg
ICBpZiAobV9idWZmZXJlZEVudHJ5LnJlZygpLmlzU2V0KCkpIHsKLSAgICAgICAgICAgICAgICBv
cCgpLmV4ZWN1dGVTaW5nbGUobV9idWZmZXJlZEVudHJ5Lm9mZnNldCgpLCBSZWdEaXNwYXRjaDxS
ZWdUeXBlPjo6Z2V0KG1fYnVmZmVyZWRFbnRyeS5yZWcoKSkpOworICAgICAgICAgICAgICAgIEFT
U0VSVChtX2J1ZmZlcmVkQnl0ZXNXaWR0aCk7CisgICAgICAgICAgICAgICAgb3AoKS5leGVjdXRl
U2luZ2xlKG1fYnVmZmVyZWRFbnRyeS5vZmZzZXQoKSwgUmVnRGlzcGF0Y2g8UmVnVHlwZT46Omdl
dChtX2J1ZmZlcmVkRW50cnkucmVnKCkpLCBtX2J1ZmZlcmVkQnl0ZXNXaWR0aCk7CiAgICAgICAg
ICAgICAgICAgbV9idWZmZXJlZEVudHJ5ID0geyB9OworICAgICAgICAgICAgICAgIG1fYnVmZmVy
ZWRCeXRlc1dpZHRoID0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE0
OCw2ICsxNTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSklUJiBtX2ppdDsKICAgICBHUFJSZWcgbV9i
YXNlR1BSOwogICAgIFJlZ2lzdGVyQXRPZmZzZXQgbV9idWZmZXJlZEVudHJ5OworICAgIHVuc2ln
bmVkIG1fYnVmZmVyZWRCeXRlc1dpZHRoOwogfTsKIAogY2xhc3MgQXNzZW1ibHlIZWxwZXJzOjpM
b2FkUmVnU3Bvb2xlciA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI8TG9hZFJlZ1Nw
b29sZXI+IHsKQEAgLTE1OCw5ICsxNjksOSBAQCBwdWJsaWM6CiAgICAgICAgIDogQmFzZShqaXQs
IGJhc2VHUFIpCiAgICAgeyB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEdQUihjb25z
dCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkgeyBleGVjdXRlPEdQUlJlZz4oZW50cnkpOyB9Cisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRHUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50
cnkpIHsgZXhlY3V0ZTxHUFJSZWc+KGVudHJ5LCA4KTsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBmaW5hbGl6ZUdQUigpIHsgZmluYWxpemU8R1BSUmVnPigpOyB9Ci0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIGxvYWRGUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgZXhlY3V0ZTxG
UFJSZWc+KGVudHJ5KTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsb2FkRlBSKGNvbnN0IFJl
Z2lzdGVyQXRPZmZzZXQmIGVudHJ5LCB1bnNpZ25lZCBieXRlc1dpZHRoKSB7IGV4ZWN1dGU8RlBS
UmVnPihlbnRyeSwgYnl0ZXNXaWR0aCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmluYWxp
emVGUFIoKSB7IGZpbmFsaXplPEZQUlJlZz4oKTsgfQogCiBwcml2YXRlOgpAQCAtMTc1LDcgKzE4
Niw3IEBAIHByaXZhdGU6CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVQYWlyKHB0cmRp
ZmZfdCwgUmVnVHlwZSwgUmVnVHlwZSkgeyB9CiAjZW5kaWYKIAotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBleGVjdXRlU2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEdQUlJlZyByZWcpCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIGV4ZWN1dGVTaW5nbGUocHRyZGlmZl90IG9mZnNldCwgR1BSUmVnIHJl
Zywgc2l6ZV90KQogICAgIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBtX2ppdC5sb2Fk
NjQoQWRkcmVzcyhtX2Jhc2VHUFIsIG9mZnNldCksIHJlZyk7CkBAIC0xODQsOSArMTk1LDEyIEBA
IHByaXZhdGU6CiAjZW5kaWYKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0
ZVNpbmdsZShwdHJkaWZmX3Qgb2Zmc2V0LCBGUFJSZWcgcmVnKQorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBleGVjdXRlU2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEZQUlJlZyByZWcsIHNpemVfdCBi
eXRlc1dpZHRoKQogICAgIHsKLSAgICAgICAgbV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fYmFz
ZUdQUiwgb2Zmc2V0KSwgcmVnKTsKKyAgICAgICAgaWYgKGJ5dGVzV2lkdGggPiA4KQorICAgICAg
ICAgICAgbV9qaXQubG9hZFZlY3RvcihBZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSwgcmVnKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShBZGRyZXNzKG1fYmFz
ZUdQUiwgb2Zmc2V0KSwgcmVnKTsKICAgICB9CiAKICAgICBmcmllbmQgY2xhc3MgQXNzZW1ibHlI
ZWxwZXJzOjpTcG9vbGVyPExvYWRSZWdTcG9vbGVyPjsKQEAgLTIwMCw5ICsyMTQsOSBAQCBwdWJs
aWM6CiAgICAgICAgIDogQmFzZShqaXQsIGJhc2VHUFIpCiAgICAgeyB9CiAKLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc3RvcmVHUFIoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpIHsgZXhl
Y3V0ZTxHUFJSZWc+KGVudHJ5KTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9yZUdQUihj
b25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSkgeyBleGVjdXRlPEdQUlJlZz4oZW50cnksIDgp
OyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGZpbmFsaXplR1BSKCkgeyBmaW5hbGl6ZTxHUFJS
ZWc+KCk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVGUFIoY29uc3QgUmVnaXN0ZXJB
dE9mZnNldCYgZW50cnkpIHsgZXhlY3V0ZTxGUFJSZWc+KGVudHJ5KTsgfQorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzdG9yZUZQUihjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBlbnRyeSwgdW5zaWdu
ZWQgYnl0ZXNXaWR0aCkgeyBleGVjdXRlPEZQUlJlZz4oZW50cnksIGJ5dGVzV2lkdGgpOyB9CiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGZpbmFsaXplRlBSKCkgeyBmaW5hbGl6ZTxGUFJSZWc+KCk7
IH0KIAogcHJpdmF0ZToKQEAgLTIxNyw3ICsyMzEsNyBAQCBwcml2YXRlOgogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBleGVjdXRlUGFpcihwdHJkaWZmX3QsIFJlZ1R5cGUsIFJlZ1R5cGUpIHsgfQog
I2VuZGlmCiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0ZVNpbmdsZShwdHJkaWZmX3Qg
b2Zmc2V0LCBHUFJSZWcgcmVnKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlU2luZ2xl
KHB0cmRpZmZfdCBvZmZzZXQsIEdQUlJlZyByZWcsIHNpemVfdCkKICAgICB7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKICAgICAgICAgbV9qaXQuc3RvcmU2NChyZWcsIEFkZHJlc3MobV9iYXNlR1BSLCBv
ZmZzZXQpKTsKQEAgLTIyNiw5ICsyNDAsMTIgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIH0KIAot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlU2luZ2xlKHB0cmRpZmZfdCBvZmZzZXQsIEZQ
UlJlZyByZWcpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVTaW5nbGUocHRyZGlmZl90
IG9mZnNldCwgRlBSUmVnIHJlZywgc2l6ZV90IGJ5dGVzV2lkdGgpCiAgICAgewotICAgICAgICBt
X2ppdC5zdG9yZURvdWJsZShyZWcsIEFkZHJlc3MobV9iYXNlR1BSLCBvZmZzZXQpKTsKKyAgICAg
ICAgaWYgKGJ5dGVzV2lkdGggPiA4KQorICAgICAgICAgICAgbV9qaXQuc3RvcmVWZWN0b3IocmVn
LCBBZGRyZXNzKG1fYmFzZUdQUiwgb2Zmc2V0KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1faml0LnN0b3JlRG91YmxlKHJlZywgQWRkcmVzcyhtX2Jhc2VHUFIsIG9mZnNldCkpOwogICAg
IH0KIAogICAgIGZyaWVuZCBjbGFzcyBBc3NlbWJseUhlbHBlcnM6OlNwb29sZXI8U3RvcmVSZWdT
cG9vbGVyPjsKQEAgLTI4NCwxMiArMzAxLDE5IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgUmVnVHlwZT4gc3RhdGljIGJvb2wgaXNWYWxpZFN0b3JlUGFpckltbShpbnQgb2Zmc2V0
KSB7IHJldHVybiBSZWdEaXNwYXRjaDxSZWdUeXBlPjo6aXNWYWxpZFN0b3JlUGFpckltbShvZmZz
ZXQpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgotICAgIHZvaWQgbG9hZChp
bnQgb2Zmc2V0KQorICAgIHZvaWQgbG9hZChpbnQgb2Zmc2V0LCB1bnNpZ25lZCBieXRlc1dpZHRo
KQogICAgIHsKICAgICAgICAgaWYgY29uc3RleHByICghaGFzUGFpck9wKSB7CiAgICAgICAgICAg
ICBhdXRvJiByZWdUb1N0b3JlID0gdGhpcy0+cmVnVG9TdG9yZTxSZWdUeXBlPigpOwogICAgICAg
ICAgICAgcmVnVG9TdG9yZSA9IHRlbXAxPFJlZ1R5cGU+KCk7Ci0gICAgICAgICAgICBsb2FkKG9m
ZnNldCwgcmVnVG9TdG9yZSk7CisgICAgICAgICAgICBsb2FkKG9mZnNldCwgcmVnVG9TdG9yZSwg
Ynl0ZXNXaWR0aCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGlmIChieXRlc1dpZHRoID4gOCkgeworICAgICAgICAgICAgYXV0byYgcmVnVG9TdG9y
ZSA9IHRoaXMtPnJlZ1RvU3RvcmU8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIHJlZ1RvU3RvcmUg
PSB0ZW1wMTxSZWdUeXBlPigpOworICAgICAgICAgICAgbG9hZChvZmZzZXQsIHJlZ1RvU3RvcmUs
IGJ5dGVzV2lkdGgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI5OCw3
ICszMjIsNyBAQCBwcml2YXRlOgogICAgICAgICBzb3VyY2Uub2Zmc2V0ID0gb2Zmc2V0OwogICAg
IH0KIAotICAgIHZvaWQgbW92ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKKyAgICB2b2lkIG1vdmUo
RW5jb2RlZEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGJ5dGVzV2lkdGgpCiAgICAgewogICAgICAg
ICBpZiBjb25zdGV4cHIgKCFoYXNQYWlyT3ApIHsKICAgICAgICAgICAgIGF1dG8mIHJlZ1RvU3Rv
cmUgPSB0aGlzLT5yZWdUb1N0b3JlPEdQUlJlZz4oKTsKQEAgLTMwNywxOSArMzMxLDI3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBBU1NFUlRf
VU5VU0VEKGJ5dGVzV2lkdGgsIGJ5dGVzV2lkdGggPD0gc2l6ZW9mKHZvaWQqKSk7CisKICAgICAg
ICAgYXV0byYgc291cmNlID0gbV9zb3VyY2VzW21fY3VycmVudFNvdXJjZSsrXTsKICAgICAgICAg
c291cmNlLnR5cGUgPSBTb3VyY2U6OlR5cGU6OkVuY29kZWRKU1ZhbHVlOwogICAgICAgICBzb3Vy
Y2UudmFsdWUgPSB2YWx1ZTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBl
PgotICAgIHZvaWQgY29weShSZWdUeXBlIHJlZykKKyAgICB2b2lkIGNvcHkoUmVnVHlwZSByZWcs
IHVuc2lnbmVkIGJ5dGVzV2lkdGgpCiAgICAgewogICAgICAgICBpZiBjb25zdGV4cHIgKCFoYXNQ
YWlyT3ApIHsKICAgICAgICAgICAgIGF1dG8mIHJlZ1RvU3RvcmUgPSB0aGlzLT5yZWdUb1N0b3Jl
PFJlZ1R5cGU+KCk7CiAgICAgICAgICAgICByZWdUb1N0b3JlID0gcmVnOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYnl0ZXNXaWR0aCA+IDgp
IHsKKyAgICAgICAgICAgIGF1dG8mIHJlZ1RvU3RvcmUgPSB0aGlzLT5yZWdUb1N0b3JlPFJlZ1R5
cGU+KCk7CisgICAgICAgICAgICByZWdUb1N0b3JlID0gcmVnOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CiAKICAgICAgICAgYXV0byYgc291cmNlID0gbV9zb3VyY2VzW21fY3VycmVu
dFNvdXJjZSsrXTsKICAgICAgICAgc291cmNlLnR5cGUgPSBTb3VyY2U6OlR5cGU6OlJlZzsKQEAg
LTMyNywxMSArMzU5LDE3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgUmVnVHlwZT4KLSAgICB2b2lkIHN0b3JlKGludCBzdG9yZU9mZnNldCkKKyAgICB2b2lkIHN0
b3JlKGludCBzdG9yZU9mZnNldCwgdW5zaWduZWQgYnl0ZXNXaWR0aCkKICAgICB7CiAgICAgICAg
IGlmIGNvbnN0ZXhwciAoIWhhc1BhaXJPcCkgewogICAgICAgICAgICAgYXV0byByZWdUb1N0b3Jl
ID0gdGhpcy0+cmVnVG9TdG9yZTxSZWdUeXBlPigpOwotICAgICAgICAgICAgc3RvcmUocmVnVG9T
dG9yZSwgc3RvcmVPZmZzZXQpOworICAgICAgICAgICAgc3RvcmUocmVnVG9TdG9yZSwgc3RvcmVP
ZmZzZXQsIGJ5dGVzV2lkdGgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBpZiAoYnl0ZXNXaWR0aCA+IDgpIHsKKyAgICAgICAgICAgIGF1dG8gcmVn
VG9TdG9yZSA9IHRoaXMtPnJlZ1RvU3RvcmU8UmVnVHlwZT4oKTsKKyAgICAgICAgICAgIHN0b3Jl
KHJlZ1RvU3RvcmUsIHN0b3JlT2Zmc2V0LCBieXRlc1dpZHRoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0zNTksOCArMzk3LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGJvb2wgaXNWYWxpZE9mZnNldCA9IGlzVmFsaWRMb2FkUGFpckltbTxSZWdUeXBlPihtaW5PZmZz
ZXQpOwogCiAgICAgICAgICAgICBpZiAob2Zmc2V0RGVsdGEgIT0gcmVnaXN0ZXJTaXplIHx8ICgh
aXNWYWxpZE9mZnNldCAmJiBtX2J1ZmZlclJlZ3NBdHRyICE9IEJ1ZmZlclJlZ3M6OkFsbG93TW9k
aWZpY2F0aW9uKSkgewotICAgICAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MSwgcmVnVG9TdG9y
ZTEpOwotICAgICAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MiwgcmVnVG9TdG9yZTIpOworICAg
ICAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MSwgcmVnVG9TdG9yZTEsIGJ5dGVzV2lkdGgpOwor
ICAgICAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MiwgcmVnVG9TdG9yZTIsIGJ5dGVzV2lkdGgp
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZz
ZXQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyUmVnc0F0dHIgPT0gQnVm
ZmVyUmVnczo6QWxsb3dNb2RpZmljYXRpb24pOwpAQCAtMzc4LDcgKzQxNiw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoc291cmNlMS50eXBlID09IFNvdXJj
ZTo6VHlwZTo6QnVmZmVyT2Zmc2V0KSB7CiAgICAgICAgICAgICByZWdUb1N0b3JlMSA9IHRlbXAx
PFJlZ1R5cGU+KCk7Ci0gICAgICAgICAgICBsb2FkKHNyY09mZnNldDEsIHJlZ1RvU3RvcmUxKTsK
KyAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MSwgcmVnVG9TdG9yZTEsIGJ5dGVzV2lkdGgpOwog
ICAgICAgICAgICAgaWYgKHNvdXJjZTIudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkVuY29kZWRKU1Zh
bHVlKSB7CiAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChyZWdUeXBlSXNHUFIpIHsKICAg
ICAgICAgICAgICAgICAgICAgcmVnVG9TdG9yZTIgPSB0ZW1wMjxSZWdUeXBlPigpOwpAQCAtMzk4
LDcgKzQzNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAg
ICByZWdUb1N0b3JlMSA9IHNvdXJjZTEuZ2V0UmVnPFJlZ1R5cGU+KCk7CiAgICAgICAgICAgICBy
ZWdUb1N0b3JlMiA9IHRlbXAyPFJlZ1R5cGU+KCk7Ci0gICAgICAgICAgICBsb2FkKHNyY09mZnNl
dDIsIHJlZ1RvU3RvcmUyKTsKKyAgICAgICAgICAgIGxvYWQoc3JjT2Zmc2V0MiwgcmVnVG9TdG9y
ZTIsIGJ5dGVzV2lkdGgpOwogCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoc291
cmNlMS50eXBlID09IFNvdXJjZTo6VHlwZTo6RW5jb2RlZEpTVmFsdWUpIHsKQEAgLTQyOCw4ICs0
NjYsOCBAQCBwcml2YXRlOgogICAgICAgICBib29sIGlzVmFsaWRPZmZzZXQgPSBpc1ZhbGlkU3Rv
cmVQYWlySW1tPFJlZ1R5cGU+KG1pbk9mZnNldCk7CiAKICAgICAgICAgaWYgKG9mZnNldERlbHRh
ICE9IHJlZ2lzdGVyU2l6ZSB8fCAoIWlzVmFsaWRPZmZzZXQgJiYgbV9idWZmZXJSZWdzQXR0ciAh
PSBCdWZmZXJSZWdzOjpBbGxvd01vZGlmaWNhdGlvbikpIHsKLSAgICAgICAgICAgIHN0b3JlKHJl
Z1RvU3RvcmUxLCBkc3RPZmZzZXQxKTsKLSAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUyLCBk
c3RPZmZzZXQyKTsKKyAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUxLCBkc3RPZmZzZXQxLCBi
eXRlc1dpZHRoKTsKKyAgICAgICAgICAgIHN0b3JlKHJlZ1RvU3RvcmUyLCBkc3RPZmZzZXQyLCBi
eXRlc1dpZHRoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghaXNWYWxpZE9m
ZnNldCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlclJlZ3NBdHRyID09IEJ1ZmZl
clJlZ3M6OkFsbG93TW9kaWZpY2F0aW9uKTsKQEAgLTQ2Nyw3ICs1MDUsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgIGlmIChzb3VyY2UudHlwZSA9PSBTb3VyY2U6OlR5cGU6OkJ1ZmZlck9mZnNldCkg
ewogICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHRlbXAxPFJlZ1R5cGU+KCk7Ci0gICAgICAgICAg
ICBsb2FkKHNyY09mZnNldCAtIG1fc3JjT2Zmc2V0QWRqdXN0bWVudCwgcmVnVG9TdG9yZSk7Cisg
ICAgICAgICAgICBsb2FkKHNyY09mZnNldCAtIG1fc3JjT2Zmc2V0QWRqdXN0bWVudCwgcmVnVG9T
dG9yZSwgc2l6ZW9mKHZvaWQqKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc291cmNlLnR5cGUgPT0g
U291cmNlOjpUeXBlOjpSZWcpCiAgICAgICAgICAgICByZWdUb1N0b3JlID0gc291cmNlLmdldFJl
ZzxSZWdUeXBlPigpOwogICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAocmVnVHlwZUlzR1BSKSB7
CkBAIC00NzYsMjAgKzUxNCwyMCBAQCBwcml2YXRlOgogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICAgICAgc3RvcmUocmVnVG9T
dG9yZSwgbV9kZWZlcnJlZFN0b3JlT2Zmc2V0IC0gbV9kc3RPZmZzZXRBZGp1c3RtZW50KTsKKyAg
ICAgICAgc3RvcmUocmVnVG9TdG9yZSwgbV9kZWZlcnJlZFN0b3JlT2Zmc2V0IC0gbV9kc3RPZmZz
ZXRBZGp1c3RtZW50LCBzaXplb2Yodm9pZCopKTsKICAgICAgICAgbV9jdXJyZW50U291cmNlID0g
MDsKICAgICB9CiAKIHB1YmxpYzoKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZEdQUihpbnQg
c3JjT2Zmc2V0KSB7IGxvYWQ8R1BSUmVnPihzcmNPZmZzZXQpOyB9Ci0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIGNvcHlHUFIoR1BSUmVnIGdwcikgeyBjb3B5PEdQUlJlZz4oZ3ByKTsgfQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBtb3ZlQ29uc3RhbnQoRW5jb2RlZEpTVmFsdWUgdmFsdWUpIHsgbW92
ZSh2YWx1ZSk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVHUFIoaW50IGRzdE9mZnNl
dCkgeyBzdG9yZTxHUFJSZWc+KGRzdE9mZnNldCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
bG9hZEdQUihpbnQgc3JjT2Zmc2V0KSB7IGxvYWQ8R1BSUmVnPihzcmNPZmZzZXQsIHNpemVvZih2
b2lkKikpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNvcHlHUFIoR1BSUmVnIGdwcikgeyBj
b3B5PEdQUlJlZz4oZ3ByLCBzaXplb2Yodm9pZCopKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBtb3ZlQ29uc3RhbnQoRW5jb2RlZEpTVmFsdWUgdmFsdWUpIHsgbW92ZSh2YWx1ZSwgc2l6ZW9m
KHZvaWQqKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVHUFIoaW50IGRzdE9mZnNl
dCkgeyBzdG9yZTxHUFJSZWc+KGRzdE9mZnNldCwgc2l6ZW9mKHZvaWQqKSk7IH0KICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgZmluYWxpemVHUFIoKSB7IGZpbmFsaXplPEdQUlJlZz4oKTsgfQogCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRGUFIoaW50IHNyY09mZnNldCkgeyBsb2FkPEZQUlJl
Zz4oc3JjT2Zmc2V0KTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb3B5RlBSKEZQUlJlZyBn
cHIpIHsgY29weTxGUFJSZWc+KGdwcik7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmVG
UFIoaW50IGRzdE9mZnNldCkgeyBzdG9yZTxGUFJSZWc+KGRzdE9mZnNldCk7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgbG9hZEZQUihpbnQgc3JjT2Zmc2V0LCB1bnNpZ25lZCBieXRlc1dpZHRo
KSB7IGxvYWQ8RlBSUmVnPihzcmNPZmZzZXQsIGJ5dGVzV2lkdGgpOyB9CisgICAgQUxXQVlTX0lO
TElORSB2b2lkIGNvcHlGUFIoRlBSUmVnIGdwciwgdW5zaWduZWQgYnl0ZXNXaWR0aCkgeyBjb3B5
PEZQUlJlZz4oZ3ByLCBieXRlc1dpZHRoKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdG9y
ZUZQUihpbnQgZHN0T2Zmc2V0LCB1bnNpZ25lZCBieXRlc1dpZHRoKSB7IHN0b3JlPEZQUlJlZz4o
ZHN0T2Zmc2V0LCBieXRlc1dpZHRoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaW5hbGl6
ZUZQUigpIHsgZmluYWxpemU8RlBSUmVnPigpOyB9CiAKIHByb3RlY3RlZDoKQEAgLTUwMiwyNCAr
NTQwLDMyIEBAIHByb3RlY3RlZDoKICAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgbW92
ZShFbmNvZGVkSlNWYWx1ZSwgR1BSUmVnKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KICNlbmRpZgogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWQoaW50IG9mZnNldCwgR1BS
UmVnIGRlc3QpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWQoaW50IG9mZnNldCwgR1BSUmVn
IGRlc3QsIHVuc2lnbmVkIGJ5dGVzV2lkdGgpCiAgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VE
KGJ5dGVzV2lkdGgsIGJ5dGVzV2lkdGggPT0gc2l6ZW9mKHZvaWQqKSk7CiAgICAgICAgIG1faml0
LmxvYWRQdHIoQWRkcmVzcyhtX3NyY0J1ZmZlckdQUiwgb2Zmc2V0KSwgZGVzdCk7CiAgICAgfQog
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlKEdQUlJlZyBzcmMsIGludCBvZmZzZXQpCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlKEdQUlJlZyBzcmMsIGludCBvZmZzZXQsIHVuc2ln
bmVkIGJ5dGVzV2lkdGgpCiAgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVzV2lkdGgs
IGJ5dGVzV2lkdGggPT0gc2l6ZW9mKHZvaWQqKSk7CiAgICAgICAgIG1faml0LnN0b3JlUHRyKHNy
YywgQWRkcmVzcyhtX2RzdEJ1ZmZlckdQUiwgb2Zmc2V0KSk7CiAgICAgfQogCi0gICAgQUxXQVlT
X0lOTElORSB2b2lkIGxvYWQoaW50IG9mZnNldCwgRlBSUmVnIGRlc3QpCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIGxvYWQoaW50IG9mZnNldCwgRlBSUmVnIGRlc3QsIHVuc2lnbmVkIGJ5dGVzV2lk
dGgpCiAgICAgewotICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEFkZHJlc3MobV9zcmNCdWZmZXJH
UFIsIG9mZnNldCksIGRlc3QpOworICAgICAgICBpZiAoYnl0ZXNXaWR0aCA+IDgpCisgICAgICAg
ICAgICBtX2ppdC5sb2FkVmVjdG9yKEFkZHJlc3MobV9zcmNCdWZmZXJHUFIsIG9mZnNldCksIGRl
c3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEFkZHJlc3Mo
bV9zcmNCdWZmZXJHUFIsIG9mZnNldCksIGRlc3QpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzdG9yZShGUFJSZWcgc3JjLCBpbnQgb2Zmc2V0KQorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzdG9yZShGUFJSZWcgc3JjLCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBieXRlc1dpZHRoKQog
ICAgIHsKLSAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUoc3JjLCBBZGRyZXNzKG1fZHN0QnVmZmVy
R1BSLCBvZmZzZXQpKTsKKyAgICAgICAgaWYgKGJ5dGVzV2lkdGggPiA4KQorICAgICAgICAgICAg
bV9qaXQuc3RvcmVWZWN0b3Ioc3JjLCBBZGRyZXNzKG1fZHN0QnVmZmVyR1BSLCBvZmZzZXQpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUoc3JjLCBBZGRyZXNz
KG1fZHN0QnVmZmVyR1BSLCBvZmZzZXQpKTsKICAgICB9CiAKICNpZiBDUFUoQVJNNjQpCkBAIC01
NTMsOSArNTk5LDYgQEAgcHJvdGVjdGVkOgogICAgIEZQUlJlZyBtX3RlbXAyRlBSOwogCiBwcml2
YXRlOgotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGdwclNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihDUFVSZWdpc3RlcikpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGZwclNpemUg
PSBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihkb3VibGUpKTsKLQogICAgIC8vIFRoZXNlIHBvaW50
IHRvIHdoaWNoIHJlZ2lzdGVyIHRvIHVzZS4KICAgICBHUFJSZWcgbV9ncHJUb1N0b3JlIHsgSW52
YWxpZEdQUlJlZyB9OyAvLyBPbmx5IHVzZWQgd2hlbiAhaGFzUGFpck9wLgogICAgIEZQUlJlZyBt
X2ZwclRvU3RvcmUgeyBJbnZhbGlkRlBSUmVnIH07IC8vIE9ubHkgdXNlZCB3aGVuICFoYXNQYWly
T3AuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZm
bGVEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURh
dGEuY3BwCmluZGV4IDFjNzRmMWY5ODJmYy4uM2I2ZmFhYWVhY2FmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcApAQCAtMzcsOSAr
MzcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdm9pZCBDYWxsRnJhbWVTaHVmZmxlRGF0YTo6c2V0
dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiByZWdpc3Rl
clNhdmVMb2NhdGlvbnMpCiB7Ci0gICAgUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycyB7
IFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSB9OworICAgIFJlZ2lzdGVyU2V0
MTI4IGNhbGxlZVNhdmVSZWdpc3RlcnMgeyBSZWdpc3RlclNldDEyODo6dm1DYWxsZWVTYXZlUmVn
aXN0ZXJzKCkgfTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVnaXN0ZXJTYXZlTG9j
YXRpb25zLT5zaXplKCk7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVnaXN0
ZXJTYXZlTG9jYXRpb25zLT5jb3VudCgpOyArK2kpIHsKICAgICAgICAgUmVnaXN0ZXJBdE9mZnNl
dCBlbnRyeSB7IHJlZ2lzdGVyU2F2ZUxvY2F0aW9ucy0+YXQoaSkgfTsKICAgICAgICAgaWYgKCFj
YWxsZWVTYXZlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCiAgICAgICAgICAgICBjb250aW51
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZs
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAK
aW5kZXggNmZkODYyNjVmNGRjLi43ZWE3ODU1NDljZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCkBAIC01Myw3ICs1Myw3IEBAIENhbGxG
cmFtZVNodWZmbGVyOjpDYWxsRnJhbWVTaHVmZmxlcihDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
Q2FsbEZyYW1lU2h1ZmZsZURhCiAgICAgICAgIG1fbG9ja2VkUmVnaXN0ZXJzLmNsZWFyKEZQUklu
Zm86OnRvUmVnaXN0ZXIoaSkpOwogCiAgICAgLy8gLi4uIGFzIHdlbGwgYXMgdGhlIGNhbGxlZSBz
YXZlZCByZWdpc3RlcnMKLSAgICBtX2xvY2tlZFJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0
Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgbV9sb2NrZWRSZWdpc3RlcnMuZXhjbHVk
ZShSZWdpc3RlclNldDEyODo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJzKCkuYWxsUmVnaXN0ZXJzKCkp
OwogCiAgICAgQVNTRVJUKCFkYXRhLmNhbGxlZS5pc0luSlNTdGFjaygpIHx8IGRhdGEuY2FsbGVl
LnZpcnR1YWxSZWdpc3RlcigpLmlzTG9jYWwoKSk7CiAgICAgYWRkTmV3KENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSwgZGF0YS5jYWxsZWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRl
eCAwMDIyYmQ5Yjk4NTkuLjUyODI1NmU0ZDBmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJ
bmZvLmgKQEAgLTQxMiw5ICs0MTIsMTEgQEAgcHVibGljOgogI2lmICFPUyhXSU5ET1dTKQogI2Rl
ZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDZ1CiAjZGVmaW5lIE5VTUJFUl9PRl9D
QUxMRUVfU0FWRVNfUkVHSVNURVJTIDV1CisjZGVmaW5lIFNJWkVfT0ZfQ0FMTEVFX1NBVkVTX1JF
R0lTVEVSUyA1dQogI2Vsc2UKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0
dQogI2RlZmluZSBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA3dQorI2RlZmluZSBT
SVpFX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgN3UKICNlbmRpZgogCiBjbGFzcyBHUFJJbmZv
IHsKQEAgLTU1NCw2ICs1NTYsNyBAQCBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJldHVyblZhbHVl
R1BSMiA9PSBYODZSZWdpc3RlcnM6OmVkeCk7CiAjaWYgQ1BVKEFSTV9USFVNQjIpCiAjZGVmaW5l
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKICNkZWZpbmUgTlVNQkVSX09GX0NBTExF
RV9TQVZFU19SRUdJU1RFUlMgMnUKKyNkZWZpbmUgU0laRV9PRl9DQUxMRUVfU0FWRVNfUkVHSVNU
RVJTIDJ1CiAKIGNsYXNzIEdQUkluZm8gewogcHVibGljOgpAQCAtNjIyLDcgKzYyNSw4IEBAIHB1
YmxpYzoKICNpZiBDUFUoQVJNNjQpCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RF
UlMgOHUKIC8vIENhbGxlZSBTYXZlcyBpbmNsdWRlcyB4MTkuLngyOCBhbmQgRlAgcmVnaXN0ZXJz
IHE4Li5xMTUKLSNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMTh1Cisj
ZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTICgxMHUrOHUpCisjZGVmaW5l
IFNJWkVfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAoMTB1Kzh1KQogCiBjbGFzcyBHUFJJbmZv
IHsKIHB1YmxpYzoKQEAgLTc0Myw2ICs3NDcsNyBAQCBwdWJsaWM6CiAjaWYgQ1BVKE1JUFMpCiAj
ZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNHUKICNkZWZpbmUgTlVNQkVSX09G
X0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMnUKKyNkZWZpbmUgU0laRV9PRl9DQUxMRUVfU0FWRVNf
UkVHSVNURVJTIDJ1CiAKIGNsYXNzIEdQUkluZm8gewogcHVibGljOgpAQCAtODIyLDYgKzgyNyw3
IEBAIHB1YmxpYzoKIAogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDh1CiAj
ZGVmaW5lIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTIDIzdQorI2RlZmluZSBTSVpF
X09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgMjN1CiAKIGNsYXNzIEdQUkluZm8gewogcHVibGlj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggODk5ODA4NzJkMmI3Li5j
MWIwMDBmZmYyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtNTcz
LDcgKzU3Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSlNJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAgICB7CiAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRS
ZWdpc3RlcnMoZG9uZUpTUiwgaXRlckNhbGxSZXN1bHRKU1IpOwotICAgICAgICBTY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3Igc2NyYXRjaEFsbG9jYXRvcih1c2VkUmVnaXN0ZXJzKTsKKyAgICAgICAg
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIHNjcmF0Y2hBbGxvY2F0b3IoUmVnaXN0ZXJTZXQxMjg6
OnVzZTY0Qml0cyh1c2VkUmVnaXN0ZXJzKSk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMSA9IHNj
cmF0Y2hBbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoMiA9IHNjcmF0Y2hBbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAgICAgICAgIEdQ
UlJlZyBnbG9iYWxHUFIgPSBzY3JhdGNoQWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXQuaAppbmRleCA4ZTU5
NzQ2NGE3OGQuLmI3OTQ1NjExOGVjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZWdpc3RlckF0T2Zmc2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWdpc3RlckF0T2Zmc2V0LmgKQEAgLTI1LDggKzI1LDExIEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxzeXMvX3R5cGVzL19pbnRwdHJfdC5oPgogI2lm
IEVOQUJMRShBU1NFTUJMRVIpCiAKKyNpbmNsdWRlICJCM1dpZHRoLmgiCiAjaW5jbHVkZSAiUmVn
LmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKQEAgLTM5LDE2ICs0MiwyMiBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICBSZWdpc3RlckF0T2Zmc2V0KFJlZyByZWcs
IHB0cmRpZmZfdCBvZmZzZXQpCisgICAgUmVnaXN0ZXJBdE9mZnNldChSZWcgcmVnLCBwdHJkaWZm
X3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkKICAgICAgICAgOiBtX3JlZyhyZWcpCiAgICAgICAgICwg
bV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAsIG1fc2l6ZShzaXplKQogICAgIHsKKyAgICAgICAg
Y29uc3RleHByIHB0cmRpZmZfdCBtYXhPZmZzZXQgPSAoMWwgPDwgKChzaXplb2YocHRyZGlmZl90
KSAtIHNpemVvZihSZWcpIC0gMSkgKiBDSEFSX0JJVCkpIC0gMTsKKyAgICAgICAgY29uc3RleHBy
IHB0cmRpZmZfdCBtaW5PZmZzZXQgPSAtbWF4T2Zmc2V0ICsgMTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQob2Zmc2V0IDwgbWF4T2Zmc2V0ICYmIG9mZnNldCA+IG1pbk9mZnNldCk7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHNpemUgPD0gQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2
ZVdpZHRoKEIzOjpGUCkpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25z
dCB7IHJldHVybiAhbV9yZWc7IH0KICAgICAKICAgICBSZWcgcmVnKCkgY29uc3QgeyByZXR1cm4g
bV9yZWc7IH0KICAgICBwdHJkaWZmX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7
IH0KKyAgICBwdHJkaWZmX3QgYnl0ZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAg
ICBpbnQgb2Zmc2V0QXNJbmRleCgpIGNvbnN0IHsgQVNTRVJUKCEob2Zmc2V0KCkgJSBzaXplb2Yo
Q1BVUmVnaXN0ZXIpKSk7IHJldHVybiBvZmZzZXQoKSAvIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KENQVVJlZ2lzdGVyKSk7IH0KICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0
ZXJBdE9mZnNldCYgb3RoZXIpIGNvbnN0CkBAIC02OSw3ICs3OCw4IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBSZWcgbV9yZWc7Ci0gICAgcHRyZGlmZl90IG1fb2Zmc2V0IDogKHNpemVvZihw
dHJkaWZmX3QpIC0gc2l6ZW9mKFJlZykpICogQ0hBUl9CSVQ7CisgICAgcHRyZGlmZl90IG1fb2Zm
c2V0IDogKHNpemVvZihwdHJkaWZmX3QpIC0gc2l6ZW9mKFJlZykgLSAxKSAqIENIQVJfQklUOwor
ICAgIHNpemVfdCBtX3NpemUgOiBDSEFSX0JJVDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlz
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNw
cAppbmRleCBlZDgzMDNkZTQxYjUuLjI2YTEwNTAxZWYzNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAKQEAgLTI1LDkgKzI1LDEz
IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlz
dC5oIgorI2luY2x1ZGUgImIzL0IzQmFuay5oIgorI2luY2x1ZGUgImppdC9SZWdpc3RlclNldC5o
IgogCiAjaWYgRU5BQkxFKEFTU0VNQkxFUikKIAorI2luY2x1ZGUgIkIzV2lkdGguaCIKKwogI2lu
Y2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM2LDIxICs0MCwz
MSBAQCBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0KTsKIAogUmVnaXN0ZXJBdE9mZnNldExpc3Q6OlJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkg
eyB9CiAKLVJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpSZWdpc3RlckF0T2Zmc2V0TGlzdChSZWdpc3Rl
clNldCByZWdpc3RlclNldCwgT2Zmc2V0QmFzZVR5cGUgb2Zmc2V0QmFzZVR5cGUpCitSZWdpc3Rl
ckF0T2Zmc2V0TGlzdDo6UmVnaXN0ZXJBdE9mZnNldExpc3QoUmVnaXN0ZXJTZXQxMjggcmVnaXN0
ZXJTZXQsIE9mZnNldEJhc2VUeXBlIG9mZnNldEJhc2VUeXBlKQogICAgIDogbV9yZWdpc3RlcnMo
cmVnaXN0ZXJTZXQubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSkKIHsKLSAgICBzaXplX3QgbnVtYmVy
T2ZSZWdpc3RlcnMgPSByZWdpc3RlclNldC5udW1iZXJPZlNldFJlZ2lzdGVycygpOwogICAgIHB0
cmRpZmZfdCBvZmZzZXQgPSAwOworICAgIHVuc2lnbmVkIHN0YWNrU2l6ZSA9IDA7CisKKyAgICBy
ZWdpc3RlclNldC5mb3JFYWNoV2l0aFdpZHRoKFsmXSAoUmVnIHJlZywgSW5jbHVkZWRXaWR0aCB3
aWR0aCkgeworICAgICAgICBzdGFja1NpemUgKz0gQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmluY2x1
ZGVkUmVnaXN0ZXJXaWR0aChCMzo6YmFua0ZvclJlZyhyZWcpLCB3aWR0aCkpOworICAgIH0pOwog
ICAgIAogICAgIGlmIChvZmZzZXRCYXNlVHlwZSA9PSBGcmFtZVBvaW50ZXJCYXNlZCkKLSAgICAg
ICAgb2Zmc2V0ID0gLShzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KG51bWJlck9mUmVnaXN0ZXJzKSAq
IHNpemVvZihDUFVSZWdpc3RlcikpOworICAgICAgICBvZmZzZXQgPSAtc3RhdGljX2Nhc3Q8cHRy
ZGlmZl90PihzdGFja1NpemUpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgIHJlZ2lz
dGVyU2V0LmZvckVhY2goWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJzW2luZGV4
XSA9IFJlZ2lzdGVyQXRPZmZzZXQocmVnLCBvZmZzZXQpOwotICAgICAgICBvZmZzZXQgKz0gc2l6
ZW9mKENQVVJlZ2lzdGVyKTsKKyAgICByZWdpc3RlclNldC5mb3JFYWNoV2l0aFdpZHRoKFsmXSAo
UmVnIHJlZywgSW5jbHVkZWRXaWR0aCB3aWR0aCkgeworICAgICAgICBhdXRvIHJlZ0J5dGVzID0g
QjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmluY2x1ZGVkUmVnaXN0ZXJXaWR0aChCMzo6YmFua0ZvclJl
ZyhyZWcpLCB3aWR0aCkpOworICAgICAgICBtX3JlZ2lzdGVyc1tpbmRleF0gPSBSZWdpc3RlckF0
T2Zmc2V0KHJlZywgb2Zmc2V0LCByZWdCeXRlcyk7CisgICAgICAgIG9mZnNldCArPSByZWdCeXRl
czsKICAgICAgICAgKytpbmRleDsKICAgICB9KTsKKworICAgIGlmIChvZmZzZXRCYXNlVHlwZSA9
PSBGcmFtZVBvaW50ZXJCYXNlZCkKKyAgICAgICAgQVNTRVJUKG9mZnNldCA9PSAwKTsKKyAgICBl
bHNlCisgICAgICAgIEFTU0VSVChvZmZzZXQgPT0gc3RhY2tTaXplKTsKIH0KIAogdm9pZCBSZWdp
c3RlckF0T2Zmc2V0TGlzdDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApAQCAtNzUsNyAr
ODksNyBAQCBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgUmVnaXN0ZXJBdE9mZnNldExpc3Q6
OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZQogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OwogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVnaXN0ZXJBdE9mZnNl
dExpc3Q+IHJlc3VsdDsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbXSB7Ci0gICAgICAg
IHJlc3VsdC5jb25zdHJ1Y3QoUmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVn
aXN0ZXJzKCkpOworICAgICAgICByZXN1bHQuY29uc3RydWN0KFJlZ2lzdGVyU2V0MTI4Ojp1c2U2
NEJpdHMoUmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpKTsK
ICAgICB9KTsKICAgICByZXR1cm4gcmVzdWx0LmdldCgpOwogfQpAQCAtODUsNyArOTksNyBAQCBj
b25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmRmZ0NhbGxl
ZVNhdmVSZWdpc3RlcnMoKQogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAg
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IHJlc3VsdDsK
ICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbXSB7Ci0gICAgICAgIHJlc3VsdC5jb25zdHJ1
Y3QoUmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgICAgIHJlc3Vs
dC5jb25zdHJ1Y3QoUmVnaXN0ZXJTZXQxMjg6OnVzZTY0Qml0cyhSZWdpc3RlclNldDo6ZGZnQ2Fs
bGVlU2F2ZVJlZ2lzdGVycygpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNl
dExpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3Qu
aAppbmRleCBkMTE3Y2Y3NWUwOTguLmU2MTI4ODM1ODJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuaApAQCAtNDAsMTUgKzQwLDI4IEBA
IHB1YmxpYzoKICAgICBlbnVtIE9mZnNldEJhc2VUeXBlIHsgRnJhbWVQb2ludGVyQmFzZWQsIFpl
cm9CYXNlZCB9OwogCiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QoKTsKLSAgICBleHBsaWNpdCBS
ZWdpc3RlckF0T2Zmc2V0TGlzdChSZWdpc3RlclNldCwgT2Zmc2V0QmFzZVR5cGUgPSBGcmFtZVBv
aW50ZXJCYXNlZCk7CisgICAgZXhwbGljaXQgUmVnaXN0ZXJBdE9mZnNldExpc3QoUmVnaXN0ZXJT
ZXQxMjgsIE9mZnNldEJhc2VUeXBlID0gRnJhbWVQb2ludGVyQmFzZWQpOwogCiAgICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0CisgICAg
c2l6ZV90IGNvdW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3JlZ2lzdGVycy5z
aXplKCk7CiAgICAgfQogCisgICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHNpemVfdCBzaXplID0gMDsKKyAgICAgICAgaW50IGkgPSAwOworICAgICAgICBmb3IgKGNv
bnN0IFJlZ2lzdGVyQXRPZmZzZXQmIGVudHJ5IDogKnRoaXMpIHsKKyAgICAgICAgICAgIHNpemUg
Kz0gZW50cnkuYnl0ZVNpemUoKTsKKyAgICAgICAgICAgIGlmIChpKQorICAgICAgICAgICAgICAg
IEFTU0VSVChhYnMoZW50cnkub2Zmc2V0KCkgLSBhdChpLTEpLm9mZnNldCgpKSA9PSBlbnRyeS5i
eXRlU2l6ZSgpKTsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
c2l6ZTsKKyAgICB9CisKICAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBhdChzaXplX3QgaW5k
ZXgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9yZWdpc3RlcnMuYXQoaW5kZXgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAppbmRleCAzOGM2Nzk0OWZk
ZGYuLmY4ZWE4ODY4MzliYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWdpc3RlclNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNl
dC5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgotI2lu
Y2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTcxLDEy
ICs3MCwxMiBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6c3BlY2lhbFJlZ2lzdGVycygpCiAg
ICAgICAgIHN0YWNrUmVnaXN0ZXJzKCksIHJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSwgcnVu
dGltZVRhZ1JlZ2lzdGVycygpKTsKIH0KIAotUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnZvbGF0
aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkKK1JlZ2lzdGVyU2V0MTI4IFJlZ2lzdGVyU2V0MTI4Ojp2
b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpCiB7Ci0gICAgUmVnaXN0ZXJTZXQgdm9sYXRpbGVS
ZWdpc3RlcnMgPSBhbGxSZWdpc3RlcnMoKTsKLSAgICB2b2xhdGlsZVJlZ2lzdGVycy5leGNsdWRl
KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKLSAgICB2b2xhdGlsZVJlZ2lzdGVycy5l
eGNsdWRlKFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgIHZv
bGF0aWxlUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpKTsKKyAgICBSZWdpc3RlclNldDEyOCB2b2xhdGlsZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0
MTI4Ojp1c2UxMjhCaXRzKFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKSk7CisgICAgdm9sYXRp
bGVSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNldDEyODo6dXNlMTI4Qml0cyhSZWdpc3RlclNl
dDo6c3RhY2tSZWdpc3RlcnMoKSkpOworICAgIHZvbGF0aWxlUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVn
aXN0ZXJTZXQxMjg6OnVzZTEyOEJpdHMoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdp
c3RlcnMoKSkpOworICAgIHZvbGF0aWxlUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQxMjg6
OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKICAgICByZXR1cm4gdm9sYXRpbGVSZWdpc3RlcnM7
CiB9CiAKQEAgLTg1LDcgKzg0LDcgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgb3Zlcmx5IGNvbnNlcnZh
dGl2ZS4gV2UgY291bGQgc3VidHJhY3Qgb3V0IHRob3NlIGNhbGxlZS1zYXZlcyB0aGF0IHdlCiAg
ICAgLy8gYWN0dWFsbHkgc2F2ZWQuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NTY4NgotICAgIHJldHVybiBSZWdpc3RlclNldChzcGVjaWFsUmVnaXN0
ZXJzKCksIHZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQo
c3BlY2lhbFJlZ2lzdGVycygpLCBSZWdpc3RlclNldDEyODo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJz
KCkuYWxsUmVnaXN0ZXJzKCkpOwogfQogCiBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkKQEAgLTEwNiwyMSArMTA1LDIxIEBAIFJlZ2lzdGVyU2V0IFJlZ2lz
dGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKQogI2VuZGlmCiB9CiAKLVJlZ2lzdGVyU2V0
IFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkKK1JlZ2lzdGVyU2V0MTI4IFJlZ2lz
dGVyU2V0MTI4OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkKIHsKICAgICBSZWdpc3RlclNldCByZXN1
bHQ7CiAKICNkZWZpbmUgU0VUX0lGX0NBTExFRVNBVkVEKGlkLCBuYW1lLCBpc1Jlc2VydmVkLCBp
c0NhbGxlZVNhdmVkKSAgICAgICAgXAotICAgIGlmIChpc0NhbGxlZVNhdmVkKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgY29uc3RleHBy
IChpc0NhbGxlZVNhdmVkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICAgICAgcmVzdWx0LnNldChSZWdpc3Rlck5hbWVzOjppZCk7CiAgICAgRk9SX0VBQ0hfR1Bf
UkVHSVNURVIoU0VUX0lGX0NBTExFRVNBVkVEKQogICAgIEZPUl9FQUNIX0ZQX1JFR0lTVEVSKFNF
VF9JRl9DQUxMRUVTQVZFRCkKICN1bmRlZiBTRVRfSUZfQ0FMTEVFU0FWRUQKICAgICAgICAgCi0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gUmVnaXN0ZXJTZXQxMjg6OnVzZTY0Qml0cyhy
ZXN1bHQpOwogfQogCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0
ZXJzKCkKK1JlZ2lzdGVyU2V0MTI4IFJlZ2lzdGVyU2V0MTI4Ojp2bUNhbGxlZVNhdmVSZWdpc3Rl
cnMoKQogewogICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKICNpZiBDUFUoWDg2XzY0KQpAQCAtMTgw
LDcgKzE3OSw3IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3Rl
cnMoKQogICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzEwKTsKICAgICByZXN1bHQuc2V0
KEZQUkluZm86OmZwUmVnQ1MxMSk7CiAjZW5kaWYKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJl
dHVybiBSZWdpc3RlclNldDEyODo6dXNlNjRCaXRzKHJlc3VsdCk7CiB9CiAKIFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0KiBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCkKQEAg
LTE4OCw3ICsxODcsNyBAQCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogUmVnaXN0ZXJTZXQ6OnZtQ2Fs
bGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpCiAgICAgc3RhdGljIFJlZ2lzdGVyQXRPZmZzZXRMaXN0
KiByZXN1bHQ7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGNhbGxlZVNhdmVzRmxhZzsKICAg
ICBzdGQ6OmNhbGxfb25jZShjYWxsZWVTYXZlc0ZsYWcsIFtdICgpIHsKLSAgICAgICAgcmVzdWx0
ID0gbmV3IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KHZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpLCBSZWdp
c3RlckF0T2Zmc2V0TGlzdDo6WmVyb0Jhc2VkKTsKKyAgICAgICAgcmVzdWx0ID0gbmV3IFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KFJlZ2lzdGVyU2V0MTI4Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSwg
UmVnaXN0ZXJBdE9mZnNldExpc3Q6Olplcm9CYXNlZCk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KQEAgLTI2NCw3ICsyNjMsNyBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZGZn
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVnaXN0ZXJT
ZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKQorUmVnaXN0ZXJTZXQxMjgg
UmVnaXN0ZXJTZXQxMjg6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKQogewogICAgIFJlZ2lzdGVy
U2V0IHJlc3VsdDsKICNpZiBFTkFCTEUoRlRMX0pJVCkKQEAgLTMyOCw3ICszMjcsNyBAQCBSZWdp
c3RlclNldCBSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCiAgICAgVU5SRUFD
SEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAjZW5kaWYKICNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7
CisgICAgcmV0dXJuIFJlZ2lzdGVyU2V0MTI4Ojp1c2U2NEJpdHMocmVzdWx0KTsKIH0KIAogUmVn
aXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFyZ3VtZW50R1BSUygpCkBAIC0zNDEsMTQgKzM0MCwxNCBA
QCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6YXJndW1lbnRHUFJTKCkKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1SZWdpc3RlclNldCBSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9y
SlNDYWxsKCkKK1JlZ2lzdGVyU2V0MTI4IFJlZ2lzdGVyU2V0MTI4OjpyZWdpc3RlcnNUb05vdFNh
dmVGb3JKU0NhbGwoKQogewotICAgIHJldHVybiBSZWdpc3RlclNldChSZWdpc3RlclNldDo6dm1D
YWxsZWVTYXZlUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdp
c3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKKyAgICByZXR1cm4gUmVnaXN0
ZXJTZXQxMjgoUmVnaXN0ZXJTZXQxMjg6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpLCBSZWdpc3Rl
clNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdp
c3RlcnMoKSk7CiB9CiAKLVJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNUb05vdFNh
dmVGb3JDQ2FsbCgpCitSZWdpc3RlclNldDEyOCBSZWdpc3RlclNldDEyODo6cmVnaXN0ZXJzVG9O
b3RTYXZlRm9yQ0NhbGwoKQogewotICAgIHJldHVybiBSZWdpc3RlclNldChSZWdpc3RlclNldDo6
Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVn
aXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisgICAgcmV0dXJuIFJlZ2lz
dGVyU2V0MTI4KFJlZ2lzdGVyU2V0MTI4OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCksIFJlZ2lzdGVy
U2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lz
dGVycygpKTsKIH0KIAogUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKQpAQCAtMzc1
LDMxICszNzQsNiBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCkKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1zaXplX3QgUmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0R1BS
cygpIGNvbnN0Ci17Ci0gICAgUmVnaXN0ZXJTZXQgdGVtcCA9ICp0aGlzOwotICAgIHRlbXAuZmls
dGVyKGFsbEdQUnMoKSk7Ci0gICAgcmV0dXJuIHRlbXAubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKTsK
LX0KLQotc2l6ZV90IFJlZ2lzdGVyU2V0OjpudW1iZXJPZlNldEZQUnMoKSBjb25zdAotewotICAg
IFJlZ2lzdGVyU2V0IHRlbXAgPSAqdGhpczsKLSAgICB0ZW1wLmZpbHRlcihhbGxGUFJzKCkpOwot
ICAgIHJldHVybiB0ZW1wLm51bWJlck9mU2V0UmVnaXN0ZXJzKCk7Ci19Ci0KLXZvaWQgUmVnaXN0
ZXJTZXQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLXsKLSAgICBDb21tYVByaW50ZXIg
Y29tbWE7Ci0gICAgb3V0LnByaW50KCJbIik7Ci0gICAgZm9yIChSZWcgcmVnID0gUmVnOjpmaXJz
dCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7IHJlZyA9IHJlZy5uZXh0KCkpIHsKLSAgICAgICAgaWYg
KGdldChyZWcpKQotICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCByZWcpOwotICAgIH0KLSAg
ICBvdXQucHJpbnQoIl0iKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBF
TkFCTEUoQVNTRU1CTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWdpc3RlclNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCmlu
ZGV4IGM5ZTM3ZjQ5NDc0Yy4uMmVhZWJlYWQ5OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZWdpc3RlclNldC5oCkBAIC0zMiw3MyArMzIsNjAgQEAKICNpbmNsdWRlICJSZWcuaCIKICNp
bmNsdWRlICJUZW1wUmVnaXN0ZXJTZXQuaCIKICNpbmNsdWRlIDx3dGYvQml0bWFwLmg+CisjaW5j
bHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdHlwZWRlZiBC
aXRtYXA8TWFjcm9Bc3NlbWJsZXI6Om51bUdQUnMgKyBNYWNyb0Fzc2VtYmxlcjo6bnVtRlBScz4g
UmVnaXN0ZXJCaXRtYXA7CiBjbGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdDsKIAotY2xhc3MgUmVn
aXN0ZXJTZXQgewotcHVibGljOgotICAgIGNvbnN0ZXhwciBSZWdpc3RlclNldCgpIHsgfQotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gUmVncz4KLSAgICBjb25zdGV4cHIgZXhwbGljaXQgUmVn
aXN0ZXJTZXQoUmVncy4uLiByZWdzKQotICAgIHsKLSAgICAgICAgc2V0TWFueShyZWdzLi4uKTsK
LSAgICB9Ci0gICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZ2lzdGVyU2V0IHN0
YWNrUmVnaXN0ZXJzKCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZ2lzdGVyU2V0
IHJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKTsKLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcnVu
dGltZVRhZ1JlZ2lzdGVycygpOwotICAgIHN0YXRpYyBSZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0
ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBzdGFjaywgcmVzZXJ2ZWQgaGFyZHdhcmUsIGFuZCBydW50
aW1lIHJlZ2lzdGVycy4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0ZXJTZXQg
Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwotICAgIHN0YXRpYyBSZWdpc3RlclNldCB2bUNhbGxlZVNh
dmVSZWdpc3RlcnMoKTsgLy8gQ2FsbGVlIHNhdmUgcmVnaXN0ZXJzIHRoYXQgbWlnaHQgYmUgc2F2
ZWQgYW5kIHVzZWQgYnkgYW55IHRpZXIuCi0gICAgc3RhdGljIFJlZ2lzdGVyQXRPZmZzZXRMaXN0
KiB2bUNhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsKLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQg
bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFu
ZCB1c2VkIGJ5IHRoZSBMTEludC4KLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgZGZnQ2FsbGVlU2F2
ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgc2F2ZWQgYW5kIHVzZWQgYnkgdGhlIERGRyBKSVQu
Ci0gICAgc3RhdGljIFJlZ2lzdGVyU2V0IGZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVn
aXN0ZXJzIHRoYXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVzZWQgYnkgdGhlIEZUTCBKSVQuCi0jaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHN0YXRpYyBSZWdpc3RlclNldCB3ZWJBc3NlbWJseUNh
bGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBX
ZWJBc3NlbWJseSBKSVQuCi0jZW5kaWYKLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgdm9sYXRpbGVS
ZWdpc3RlcnNGb3JKU0NhbGwoKTsKLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgc3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiBjYWxsZWUgc2F2ZXMgYW5kIHNwZWNpYWwg
cmVnaXN0ZXJzLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdpc3RlclNldCBtYWNy
b1NjcmF0Y2hSZWdpc3RlcnMoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnaXN0
ZXJTZXQgYWxsR1BScygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdpc3RlclNl
dCBhbGxGUFJzKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbFJlZ2lzdGVycygpOwotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdpc3RlclNldCBhcmd1bWVudEdQUlMoKTsKK2Vu
dW0gSW5jbHVkZWRXaWR0aCA6IHVpbnQ4X3QgeworICAgIEV4Y2x1ZGVSZWdpc3RlciA9IDAsCisg
ICAgSW5jbHVkZUxvd2VyNjRCaXRzLAorICAgIEluY2x1ZGVVcHBlcjY0Qml0cywKKyAgICBJbmNs
dWRlUmVnaXN0ZXIKK307CiAKLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9Ob3RT
YXZlRm9ySlNDYWxsKCk7Ci0gICAgc3RhdGljIFJlZ2lzdGVyU2V0IHJlZ2lzdGVyc1RvTm90U2F2
ZUZvckNDYWxsKCk7Ci0gICAgCi0gICAgdm9pZCBzZXQoUmVnIHJlZywgYm9vbCB2YWx1ZSA9IHRy
dWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPgorY2xhc3MgUmVnaXN0ZXJTZXRCYXNlIHsKK3B1
YmxpYzoKKyAgICB2b2lkIHNldChSZWcgcmVnLCBJbmNsdWRlZFdpZHRoIHZhbHVlID0gSW5jbHVk
ZVJlZ2lzdGVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKCEhcmVnKTsKLSAgICAgICAgbV9iaXRz
LnNldChyZWcuaW5kZXgoKSwgdmFsdWUpOworICAgICAgICBpZiAocmVnLmlzR1BSKCkpIHsKKyAg
ICAgICAgICAgIGlmICh2YWx1ZSA9PSBJbmNsdWRlTG93ZXI2NEJpdHMpCisgICAgICAgICAgICAg
ICAgdmFsdWUgPSBJbmNsdWRlUmVnaXN0ZXI7CisgICAgICAgICAgICBBU1NFUlQodmFsdWUgPT0g
RXhjbHVkZVJlZ2lzdGVyIHx8IHZhbHVlID09IEluY2x1ZGVSZWdpc3Rlcik7CisgICAgICAgIH0K
KyAgICAgICAgc3RhdGljX2Nhc3Q8U2VsZiY+KCp0aGlzKS5zZXRJbXBsKHJlZy5pbmRleCgpLCB2
YWx1ZSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0KEpTVmFsdWVSZWdzIHJlZ3MsIGJvb2wg
dmFsdWUgPSB0cnVlKQorICAgIHZvaWQgc2V0KEpTVmFsdWVSZWdzIHJlZ3MsIEluY2x1ZGVkV2lk
dGggdmFsdWUgPSBJbmNsdWRlUmVnaXN0ZXIpCiAgICAgewogICAgICAgICBpZiAocmVncy50YWdH
UFIoKSAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICAgICAgc2V0KHJlZ3MudGFnR1BSKCksIHZh
bHVlKTsKICAgICAgICAgc2V0KHJlZ3MucGF5bG9hZEdQUigpLCB2YWx1ZSk7CiAgICAgfQorICAg
IHZvaWQgY2xlYXIoSlNWYWx1ZVJlZ3MgcmVncykgeyBzZXQocmVncywgRXhjbHVkZVJlZ2lzdGVy
KTsgfQogCi0gICAgdm9pZCBzZXQoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyLCBib29sIHZhbHVl
ID0gdHJ1ZSkgeyB2YWx1ZSA/IG1lcmdlKG90aGVyKSA6IGV4Y2x1ZGUob3RoZXIpOyB9CisgICAg
dm9pZCBzZXQoY29uc3QgU2VsZiYgb3RoZXIsIEluY2x1ZGVkV2lkdGggdmFsdWUgPSBJbmNsdWRl
UmVnaXN0ZXIpIHsgdmFsdWUgPT0gRXhjbHVkZVJlZ2lzdGVyID8gc3RhdGljX2Nhc3Q8U2VsZiY+
KCp0aGlzKS5leGNsdWRlKG90aGVyKSA6IHN0YXRpY19jYXN0PFNlbGYmPigqdGhpcykubWVyZ2Uo
b3RoZXIpOyB9CisgICAgdm9pZCBjbGVhcihjb25zdCBTZWxmJiBvdGhlcikgeyBzZXQob3RoZXIs
IEV4Y2x1ZGVSZWdpc3Rlcik7IH0KIAogICAgIHZvaWQgY2xlYXIoUmVnIHJlZykKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghIXJlZyk7Ci0gICAgICAgIHNldChyZWcsIGZhbHNlKTsKKyAgICAgICAg
c2V0KHJlZywgRXhjbHVkZVJlZ2lzdGVyKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBnZXQoUmVn
IHJlZykgY29uc3QKKyAgICBJbmNsdWRlZFdpZHRoIGdldChSZWcgcmVnKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKCEhcmVnKTsKLSAgICAgICAgcmV0dXJuIG1fYml0cy5nZXQocmVnLmlu
ZGV4KCkpOworICAgICAgICBhdXRvIHZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgU2VsZiY+KCp0
aGlzKS5nZXRJbXBsKHJlZy5pbmRleCgpKTsKKyAgICAgICAgaWYgKHJlZy5pc0dQUigpKQorICAg
ICAgICAgICAgQVNTRVJUKHZhbHVlID09IEV4Y2x1ZGVSZWdpc3RlciB8fCB2YWx1ZSA9PSBJbmNs
dWRlUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQotICAgIAorCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSXRlcmFibGU+CiAgICAgdm9pZCBzZXRBbGwoY29uc3QgSXRlcmFi
bGUmIGl0ZXJhYmxlKQogICAgIHsKQEAgLTExMCw2NSArOTcsODUgQEAgcHVibGljOgogICAgIGJv
b2wgYWRkKFJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQoISFyZWcpOwotICAgICAgICBy
ZXR1cm4gIW1fYml0cy50ZXN0QW5kU2V0KHJlZy5pbmRleCgpKTsKKyAgICAgICAgcmV0dXJuICFz
dGF0aWNfY2FzdDxTZWxmJj4oKnRoaXMpLnRlc3RBbmRTZXQocmVnKTsKICAgICB9CiAgICAgYm9v
bCByZW1vdmUoUmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVCghIXJlZyk7Ci0gICAgICAg
IHJldHVybiBtX2JpdHMudGVzdEFuZENsZWFyKHJlZy5pbmRleCgpKTsKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFNlbGYmPigqdGhpcykudGVzdEFuZENsZWFyKHJlZyk7CiAgICAgfQotICAg
IGJvb2wgY29udGFpbnMoUmVnIHJlZykgY29uc3QgeyByZXR1cm4gZ2V0KHJlZyk7IH0KLSAgICAK
LSAgICB2b2lkIG1lcmdlKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgeyBtX2JpdHMubWVyZ2Uo
b3RoZXIubV9iaXRzKTsgfQotICAgIHZvaWQgZmlsdGVyKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhl
cikgeyBtX2JpdHMuZmlsdGVyKG90aGVyLm1fYml0cyk7IH0KLSAgICB2b2lkIGV4Y2x1ZGUoY29u
c3QgUmVnaXN0ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5leGNsdWRlKG90aGVyLm1fYml0cyk7IH0K
LSAgICAKLSAgICBib29sIHN1YnN1bWVzKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gbV9iaXRzLnN1YnN1bWVzKG90aGVyLm1fYml0cyk7IH0KLSAgICAKLSAgICBzaXpl
X3QgbnVtYmVyT2ZTZXRHUFJzKCkgY29uc3Q7Ci0gICAgc2l6ZV90IG51bWJlck9mU2V0RlBScygp
IGNvbnN0OwotICAgIHNpemVfdCBudW1iZXJPZlNldFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJu
IG1fYml0cy5jb3VudCgpOyB9Ci0gICAgCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9iaXRzLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgY29udGFpbnMoUmVnIHJlZykgY29uc3Qg
eyByZXR1cm4gZ2V0KHJlZykgIT0gRXhjbHVkZVJlZ2lzdGVyOyB9CiAgICAgCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0gICAgCi0gICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9i
aXRzID09IG90aGVyLm1fYml0czsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWdpc3Rl
clNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAhPSBvdGhlci5tX2JpdHM7IH0KKyAg
ICBzaXplX3QgbnVtYmVyT2ZTZXRHUFJzKCkgY29uc3QKKyAgICB7CisgICAgICAgIFNlbGYgdGVt
cCA9IHN0YXRpY19jYXN0PGNvbnN0IFNlbGYmPigqdGhpcyk7CisgICAgICAgIHRlbXAuZmlsdGVy
KFNlbGY6OmFsbEdQUnMoKSk7CisgICAgICAgIHJldHVybiB0ZW1wLm51bWJlck9mU2V0UmVnaXN0
ZXJzKCk7CisgICAgfQorICAgIHNpemVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdAorICAgIHsK
KyAgICAgICAgU2VsZiB0ZW1wID0gc3RhdGljX2Nhc3Q8Y29uc3QgU2VsZiY+KCp0aGlzKTsKKyAg
ICAgICAgdGVtcC5maWx0ZXIoU2VsZjo6YWxsRlBScygpKTsKKyAgICAgICAgcmV0dXJuIHRlbXAu
bnVtYmVyT2ZTZXRSZWdpc3RlcnMoKTsKKyAgICB9CisgICAgc2l6ZV90IG51bWJlck9mU2V0UmVn
aXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU2VsZiY+KCp0aGlzKS5h
bGxTZXQoKS5jb3VudCgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW51
bWJlck9mU2V0UmVnaXN0ZXJzKCk7IH0KICAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRzLmhhc2goKTsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorICAgIHsKKyAgICAgICAgQ29tbWFQcmludGVyIGNv
bW1hOworICAgICAgICBvdXQucHJpbnQoIlsiKTsKKyAgICAgICAgZm9yIChSZWcgcmVnID0gUmVn
OjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7IHJlZyA9IHJlZy5uZXh0KCkpIHsKKyAgICAg
ICAgICAgIGlmIChnZXQocmVnKSkKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIHJl
ZywgIigiLCBzdGF0aWNfY2FzdDx1aW50OF90PihnZXQocmVnKSksICIpIik7CisgICAgICAgIH0K
KyAgICAgICAgb3V0LnByaW50KCJdIik7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFNlbGYmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKHN0YXRpY19jYXN0PGNvbnN0IFNlbGYm
PigqdGhpcykgPT0gb3RoZXIpOyB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
ICAgICB2b2lkIGZvckVhY2goY29uc3QgRnVuYyYgZnVuYykgY29uc3QKICAgICB7Ci0gICAgICAg
IG1fYml0cy5mb3JFYWNoU2V0Qml0KAorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBTZWxmJj4o
KnRoaXMpLmFsbFNldCgpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgICAgICBbJl0gKHNpemVfdCBp
bmRleCkgewogICAgICAgICAgICAgICAgIGZ1bmMoUmVnOjpmcm9tSW5kZXgoaW5kZXgpKTsKICAg
ICAgICAgICAgIH0pOwogICAgIH0KICAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgor
ICAgIHZvaWQgZm9yRWFjaFdpdGhXaWR0aChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAorICAgIHsK
KyAgICAgICAgZm9yIChSZWcgcmVnID0gUmVnOjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7
IHJlZyA9IHJlZy5uZXh0KCkpIHsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBnZXQocmVnKTsK
KyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBFeGNsdWRlUmVnaXN0ZXIpCisgICAgICAgICAgICAg
ICAgZnVuYyhyZWcsIHZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKICAgICBjbGFzcyBp
dGVyYXRvciB7CiAgICAgcHVibGljOgogICAgICAgICBpdGVyYXRvcigpCiAgICAgICAgIHsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgaXRlcmF0b3IoY29uc3QgUmVnaXN0ZXJCaXRtYXA6
Oml0ZXJhdG9yJiBpdGVyKQotICAgICAgICAgICAgOiBtX2l0ZXIoaXRlcikKKyAgICAgICAgaXRl
cmF0b3IoY29uc3QgUmVnaXN0ZXJCaXRtYXAmIGJpdG1hcCkKKyAgICAgICAgICAgIDogbV9iaXRt
YXAoYml0bWFwKQorICAgICAgICAgICAgLCBtX2l0ZXJhdG9yKG1fYml0bWFwLmJlZ2luKCkpCiAg
ICAgICAgIHsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgUmVnIG9wZXJhdG9yKigpIGNv
bnN0IHsgcmV0dXJuIFJlZzo6ZnJvbUluZGV4KCptX2l0ZXIpOyB9CisgICAgICAgIFJlZyBvcGVy
YXRvciooKSBjb25zdCB7IHJldHVybiBSZWc6OmZyb21JbmRleCgqbV9pdGVyYXRvcik7IH0KICAg
ICAgICAgCiAgICAgICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKICAgICAgICAgewotICAgICAg
ICAgICAgKyttX2l0ZXI7CisgICAgICAgICAgICArK21faXRlcmF0b3I7CiAgICAgICAgICAgICBy
ZXR1cm4gKnRoaXM7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBtX2l0ZXIgPT0gb3RoZXIubV9pdGVyOworICAgICAgICAgICAgcmV0dXJuIG1faXRlcmF0
b3IgPT0gb3RoZXIubV9pdGVyYXRvcjsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKQEAgLTE3NiwzMiArMTgz
LDIzMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAg
ICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGl0ZXJhdG9yJiBlbmQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2l0ZXJhdG9yID0gbV9iaXRtYXAuZW5kKCk7CisgICAgICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVn
aXN0ZXJCaXRtYXA6Oml0ZXJhdG9yIG1faXRlcjsKKyAgICAgICAgUmVnaXN0ZXJCaXRtYXAgbV9i
aXRtYXA7CisgICAgICAgIFJlZ2lzdGVyQml0bWFwOjppdGVyYXRvciBtX2l0ZXJhdG9yOwogICAg
IH07CiAgICAgCi0gICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBpdGVyYXRvciht
X2JpdHMuYmVnaW4oKSk7IH0KLSAgICBpdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBpdGVy
YXRvcihtX2JpdHMuZW5kKCkpOyB9CisgICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVy
biBpdGVyYXRvcihzdGF0aWNfY2FzdDxjb25zdCBTZWxmJj4oKnRoaXMpLmFsbFNldCgpKTsgfQor
ICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKHN0YXRpY19jYXN0PGNv
bnN0IFNlbGYmPigqdGhpcykuYWxsU2V0KCkpLmVuZCgpOyB9CiAgICAgCi1wcml2YXRlOgorcHJv
dGVjdGVkOgogICAgIHZvaWQgc2V0QW55KFJlZyByZWcpIHsgc2V0KHJlZyk7IH0KICAgICB2b2lk
IHNldEFueShKU1ZhbHVlUmVncyByZWdzKSB7IHNldChyZWdzKTsgfQotICAgIHZvaWQgc2V0QW55
KGNvbnN0IFJlZ2lzdGVyU2V0JiBzZXQpIHsgbWVyZ2Uoc2V0KTsgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8
UmVnaXN0ZXJTZXRCYXNlPFQ+LCBUPjo6dmFsdWUsIHZvaWQ+CisgICAgc2V0QW55KGNvbnN0IFQm
IHNldCkgeyBzdGF0aWNfY2FzdDxTZWxmJj4oKnRoaXMpLm1lcmdlKHNldCk7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19i
YXNlX29mPFJlZ2lzdGVyU2V0QmFzZTxUPiwgVD46OnZhbHVlLCB2b2lkPgorICAgIHNldEFueShU
JiYgc2V0KSB7IHN0YXRpY19jYXN0PFNlbGYmPigqdGhpcykubWVyZ2Uoc3RkOjpmb3J3YXJkPFQ+
KHNldCkpOyB9CiAgICAgdm9pZCBzZXRNYW55KCkgeyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
UmVnVHlwZSwgdHlwZW5hbWUuLi4gUmVncz4KLSAgICB2b2lkIHNldE1hbnkoUmVnVHlwZSByZWcs
IFJlZ3MuLi4gcmVncykKKyAgICB2b2lkIHNldE1hbnkoUmVnVHlwZSYmIHJlZywgUmVncy4uLiBy
ZWdzKQogICAgIHsKLSAgICAgICAgc2V0QW55KHJlZyk7CisgICAgICAgIHNldEFueShzdGQ6OmZv
cndhcmQ8UmVnVHlwZT4ocmVnKSk7CiAgICAgICAgIHNldE1hbnkocmVncy4uLik7CiAgICAgfQog
CiAgICAgLy8gVGhlc2Ugb2Zmc2V0cyBtaXJyb3IgdGhlIGxvZ2ljIGluIFJlZy5oLgogICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZ3ByT2Zmc2V0ID0gMDsKICAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGZwck9mZnNldCA9IGdwck9mZnNldCArIE1hY3JvQXNzZW1ibGVyOjpudW1H
UFJzOworfTsKKworY2xhc3MgUmVnaXN0ZXJTZXQgOiBwdWJsaWMgUmVnaXN0ZXJTZXRCYXNlPFJl
Z2lzdGVyU2V0PiB7CitwdWJsaWM6CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVn
aXN0ZXJTZXQgc3RhY2tSZWdpc3RlcnMoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVnaXN0ZXJTZXQgcmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpOworICAgIHN0YXRpYyBSZWdp
c3RlclNldCBydW50aW1lVGFnUmVnaXN0ZXJzKCk7CisgICAgc3RhdGljIFJlZ2lzdGVyU2V0IHNw
ZWNpYWxSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIHN0YWNrLCByZXNlcnZlZCBoYXJkd2Fy
ZSwgYW5kIHJ1bnRpbWUgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBSZWdpc3RlckF0T2Zmc2V0TGlz
dCogdm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CisgICAgc3RhdGljIFJlZ2lzdGVyU2V0
IGxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZlZCBh
bmQgdXNlZCBieSB0aGUgTExJbnQuCisgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGRmZ0NhbGxlZVNh
dmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBERkcgSklU
LgorICAgIHN0YXRpYyBSZWdpc3RlclNldCBzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKTsgLy8g
VGhlIHVuaW9uIG9mIGNhbGxlZSBzYXZlcyBhbmQgc3BlY2lhbCByZWdpc3RlcnMuCisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZ2lzdGVyU2V0IG1hY3JvU2NyYXRjaFJlZ2lzdGVycygp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdpc3RlclNldCBhbGxHUFJzKCk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbEZQUnMoKTsKKyAgICBz
dGF0aWMgUmVnaXN0ZXJTZXQgYWxsUmVnaXN0ZXJzKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZ2lzdGVyU2V0IGFyZ3VtZW50R1BSUygpOworCisgICAgY29uc3RleHByIFJlZ2lz
dGVyU2V0KCkgeyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBSZWdzPgorICAgIGNvbnN0
ZXhwciBleHBsaWNpdCBSZWdpc3RlclNldChSZWdzJiYuLi4gcmVncykKKyAgICB7CisgICAgICAg
IHNldE1hbnkoc3RkOjpmb3J3YXJkPFJlZ3M+KHJlZ3MpLi4uKTsKKyAgICB9CisKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lu
Y2x1ZGVMb3dlcjY0Qml0cyA9PSBvdGhlci5tX2luY2x1ZGVMb3dlcjY0Qml0czsgfQorICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2luY2x1ZGVMb3dlcjY0Qml0cy5oYXNoKCk7
IH0KKworICAgIHZvaWQgbWVyZ2UoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKQorICAgIHsKKyAg
ICAgICAgbV9pbmNsdWRlTG93ZXI2NEJpdHMubWVyZ2Uob3RoZXIubV9pbmNsdWRlTG93ZXI2NEJp
dHMpOworICAgIH0KKworICAgIHZvaWQgZmlsdGVyKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikK
KyAgICB7CisgICAgICAgIG1faW5jbHVkZUxvd2VyNjRCaXRzLmZpbHRlcihvdGhlci5tX2luY2x1
ZGVMb3dlcjY0Qml0cyk7CisgICAgfQorCisgICAgdm9pZCBleGNsdWRlKGNvbnN0IFJlZ2lzdGVy
U2V0JiBvdGhlcikKKyAgICB7CisgICAgICAgIG1faW5jbHVkZUxvd2VyNjRCaXRzLmV4Y2x1ZGUo
b3RoZXIubV9pbmNsdWRlTG93ZXI2NEJpdHMpOworICAgIH0KKworICAgIGJvb2wgc3Vic3VtZXMo
Y29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
aW5jbHVkZUxvd2VyNjRCaXRzLnN1YnN1bWVzKG90aGVyLm1faW5jbHVkZUxvd2VyNjRCaXRzKTsK
KyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBSZWdpc3RlckJpdG1hcCBhbGxTZXQoKSBjb25zdCB7
IHJldHVybiBtX2luY2x1ZGVMb3dlcjY0Qml0czsgfQorCisgICAgdm9pZCBzZXRJbXBsKHVuc2ln
bmVkIGluZGV4LCBJbmNsdWRlZFdpZHRoIHZhbHVlID0gSW5jbHVkZVJlZ2lzdGVyKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHZhbHVlID09IEluY2x1ZGVSZWdpc3RlciB8fCB2YWx1ZSA9PSBFeGNs
dWRlUmVnaXN0ZXIpOworICAgICAgICBtX2luY2x1ZGVMb3dlcjY0Qml0cy5zZXQoaW5kZXgsIHZh
bHVlICYgMGIwMSk7CisgICAgfQorCisgICAgSW5jbHVkZWRXaWR0aCBnZXRJbXBsKHVuc2lnbmVk
IGluZGV4KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbmNsdWRlZFdpZHRoPigobV9pbmNs
dWRlTG93ZXI2NEJpdHMuZ2V0KGluZGV4KSA8PCAxKSB8IG1faW5jbHVkZUxvd2VyNjRCaXRzLmdl
dChpbmRleCkpOyB9CisKKyAgICBib29sIHRlc3RBbmRTZXQoUmVnIHJlZykgeyByZXR1cm4gbV9p
bmNsdWRlTG93ZXI2NEJpdHMudGVzdEFuZFNldChyZWcuaW5kZXgoKSk7IH0KKyAgICBib29sIHRl
c3RBbmRDbGVhcihSZWcgcmVnKSB7IHJldHVybiBtX2luY2x1ZGVMb3dlcjY0Qml0cy50ZXN0QW5k
Q2xlYXIocmVnLmluZGV4KCkpOyB9CisKKyAgICBSZWdpc3RlckJpdG1hcCBtX2luY2x1ZGVMb3dl
cjY0Qml0czsKKworICAgIGZyaWVuZCBSZWdpc3RlclNldEJhc2U8UmVnaXN0ZXJTZXQ+OworfTsK
Kworc3RhdGljX2Fzc2VydChzaXplb2YoUmVnaXN0ZXJTZXQpIDw9IHNpemVvZih1aW50NjRfdCkp
OworCitjbGFzcyBSZWdpc3RlclNldDEyOCA6IHB1YmxpYyBSZWdpc3RlclNldEJhc2U8UmVnaXN0
ZXJTZXQxMjg+IHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgUmVnaXN0ZXJTZXQxMjgoKSB7IH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFJlZ3M+CisgICAgY29uc3RleHByIGV4cGxpY2l0
IFJlZ2lzdGVyU2V0MTI4KFJlZ3MmJi4uLiByZWdzKQorICAgIHsKKyAgICAgICAgc2V0TWFueShz
dGQ6OmZvcndhcmQ8UmVncz4ocmVncykuLi4pOworICAgIH0KKworICAgIHN0YXRpYyBSZWdpc3Rl
clNldDEyOCB1c2UxMjhCaXRzKFJlZ2lzdGVyU2V0IHJlZ2lzdGVyU2V0KQorICAgIHsKKyAgICAg
ICAgUmVnaXN0ZXJTZXQxMjggcmVzdWx0OworICAgICAgICByZWdpc3RlclNldC5mb3JFYWNoKFsm
XSAoUmVnIHJlZykgeworICAgICAgICAgICAgcmVzdWx0LnNldChyZWcpOworICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgUmVnaXN0ZXJTZXQx
MjggdXNlNjRCaXRzKFJlZ2lzdGVyU2V0IHJlZ2lzdGVyU2V0KQorICAgIHsKKyAgICAgICAgUmVn
aXN0ZXJTZXQxMjggcmVzdWx0OworICAgICAgICByZWdpc3RlclNldC5mb3JFYWNoKFsmXSAoUmVn
IHJlZykgeworICAgICAgICAgICAgcmVzdWx0LnNldChyZWcsIHJlZy5pc0ZQUigpID8gSW5jbHVk
ZUxvd2VyNjRCaXRzIDogSW5jbHVkZVJlZ2lzdGVyKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIFJlZ2lzdGVyU2V0MTI4IGFsbEdQUnMo
KSB7IHJldHVybiB1c2UxMjhCaXRzKFJlZ2lzdGVyU2V0OjphbGxHUFJzKCkpOyB9CisgICAgc3Rh
dGljIFJlZ2lzdGVyU2V0MTI4IGFsbEZQUnMoKSB7IHJldHVybiB1c2UxMjhCaXRzKFJlZ2lzdGVy
U2V0OjphbGxGUFJzKCkpOyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZ2lzdGVy
U2V0MTI4IGNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBzdGF0aWMgUmVnaXN0ZXJTZXQxMjgg
dm1DYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIENhbGxlZSBzYXZlIHJlZ2lzdGVycyB0aGF0IG1p
Z2h0IGJlIHNhdmVkIGFuZCB1c2VkIGJ5IGFueSB0aWVyLgorICAgIHN0YXRpYyBSZWdpc3RlclNl
dDEyOCBmdGxDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyB0aGF0IG1pZ2h0IGJl
IHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBGVEwgSklULgorICAgIHN0YXRpYyBSZWdpc3RlclNldDEy
OCB2b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpOworICAgIHN0YXRpYyBSZWdpc3RlclNldDEy
OCByZWdpc3RlcnNUb05vdFNhdmVGb3JKU0NhbGwoKTsKKyAgICBzdGF0aWMgUmVnaXN0ZXJTZXQx
MjggcmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKTsKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CisgICAgc3RhdGljIFJlZ2lzdGVyU2V0MTI4IHdlYkFzc2VtYmx5Q2FsbGVlU2F2ZVJlZ2lzdGVy
cygpOyAvLyBSZWdpc3RlcnMgc2F2ZWQgYW5kIHVzZWQgYnkgdGhlIFdlYkFzc2VtYmx5IEpJVC4K
KyNlbmRpZgorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lzdGVyU2V0MTI4JiBvdGhl
cikgY29uc3QgeyByZXR1cm4gbV9pbmNsdWRlTG93ZXI2NEJpdHMgPT0gb3RoZXIubV9pbmNsdWRl
TG93ZXI2NEJpdHMgJiYgbV9pbmNsdWRlVXBwZXI2NEJpdHMgPT0gb3RoZXIubV9pbmNsdWRlVXBw
ZXI2NEJpdHM7IH0KKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9pbmNsdWRl
TG93ZXI2NEJpdHMuaGFzaCgpOyB9CisgICAgCisgICAgdm9pZCBtZXJnZShSZWcgcmVnLCBJbmNs
dWRlZFdpZHRoIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEhcmVnKTsKKyAgICAgICAg
c2V0KHJlZywgc3RhdGljX2Nhc3Q8SW5jbHVkZWRXaWR0aD4odmFsdWUgfCBnZXQocmVnKSkpOwor
ICAgIH0KKworICAgIHZvaWQgbWVyZ2UoY29uc3QgUmVnaXN0ZXJTZXQxMjgmIG90aGVyKQorICAg
IHsKKyAgICAgICAgbV9pbmNsdWRlTG93ZXI2NEJpdHMubWVyZ2Uob3RoZXIubV9pbmNsdWRlTG93
ZXI2NEJpdHMpOworICAgICAgICBtX2luY2x1ZGVVcHBlcjY0Qml0cy5tZXJnZShvdGhlci5tX2lu
Y2x1ZGVVcHBlcjY0Qml0cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgbWVyZ2UoY29uc3QgUmVn
aXN0ZXJTZXQmIG90aGVyKQorICAgIHsKKyAgICAgICAgbWVyZ2UodXNlMTI4Qml0cyhvdGhlcikp
OworICAgIH0KKworICAgIHZvaWQgZmlsdGVyKGNvbnN0IFJlZ2lzdGVyU2V0MTI4JiBvdGhlcikK
KyAgICB7CisgICAgICAgIG1faW5jbHVkZUxvd2VyNjRCaXRzLmZpbHRlcihvdGhlci5tX2luY2x1
ZGVMb3dlcjY0Qml0cyk7CisgICAgICAgIG1faW5jbHVkZVVwcGVyNjRCaXRzLmZpbHRlcihvdGhl
ci5tX2luY2x1ZGVVcHBlcjY0Qml0cyk7CisgICAgfQorCisgICAgdm9pZCBleGNsdWRlKGNvbnN0
IFJlZ2lzdGVyU2V0MTI4JiBvdGhlcikKKyAgICB7CisgICAgICAgIG1faW5jbHVkZUxvd2VyNjRC
aXRzLmV4Y2x1ZGUob3RoZXIubV9pbmNsdWRlTG93ZXI2NEJpdHMpOworICAgICAgICBtX2luY2x1
ZGVVcHBlcjY0Qml0cy5leGNsdWRlKG90aGVyLm1faW5jbHVkZVVwcGVyNjRCaXRzKTsKKyAgICB9
CisKKyAgICBib29sIHN1YnN1bWVzKGNvbnN0IFJlZ2lzdGVyU2V0MTI4JiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2luY2x1ZGVMb3dlcjY0Qml0cy5zdWJzdW1lcyhvdGhl
ci5tX2luY2x1ZGVMb3dlcjY0Qml0cykgJiYgbV9pbmNsdWRlVXBwZXI2NEJpdHMuc3Vic3VtZXMo
b3RoZXIubV9pbmNsdWRlVXBwZXI2NEJpdHMpOworICAgIH0KICAgICAKLSAgICBSZWdpc3RlckJp
dG1hcCBtX2JpdHM7CisgICAgUmVnaXN0ZXJTZXQgYWxsUmVnaXN0ZXJzKCkgY29uc3QgeworICAg
ICAgICBSZWdpc3RlclNldCByZXN1bHQ7CisgICAgICAgIGZvckVhY2goWyZdIChSZWcgcmVnKSB7
CisgICAgICAgICAgICByZXN1bHQuc2V0KHJlZyk7CisgICAgICAgIH0pOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBSZWdpc3RlclNldCBhbGxGdWxsUmVnaXN0ZXJz
KCkgY29uc3QgeworICAgICAgICBSZWdpc3RlclNldCByZXN1bHQ7CisgICAgICAgIGZvckVhY2go
WyZdIChSZWcgcmVnKSB7CisgICAgICAgICAgICBpZiAoZ2V0KHJlZykgPT0gSW5jbHVkZVJlZ2lz
dGVyKQorICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQocmVnKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgUmVnaXN0ZXJCaXRt
YXAgYWxsU2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIFJlZ2lzdGVyQml0bWFwIGFsbChtX2lu
Y2x1ZGVMb3dlcjY0Qml0cyk7CisgICAgICAgIGFsbC5tZXJnZShtX2luY2x1ZGVVcHBlcjY0Qml0
cyk7CisgICAgICAgIHJldHVybiBhbGw7CisgICAgfQorCisgICAgdm9pZCBzZXRJbXBsKHVuc2ln
bmVkIGluZGV4LCBJbmNsdWRlZFdpZHRoIHZhbHVlID0gSW5jbHVkZVJlZ2lzdGVyKQorICAgIHsK
KyAgICAgICAgbV9pbmNsdWRlTG93ZXI2NEJpdHMuc2V0KGluZGV4LCB2YWx1ZSAmIDBiMDEpOwor
ICAgICAgICBtX2luY2x1ZGVVcHBlcjY0Qml0cy5zZXQoaW5kZXgsIHZhbHVlICYgMGIxMCk7Cisg
ICAgfQorCisgICAgSW5jbHVkZWRXaWR0aCBnZXRJbXBsKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxJbmNsdWRlZFdpZHRoPigobV9pbmNsdWRlVXBwZXI2NEJpdHMu
Z2V0KGluZGV4KSA8PCAxKSB8IG1faW5jbHVkZUxvd2VyNjRCaXRzLmdldChpbmRleCkpOyB9CisK
KyAgICBib29sIHRlc3RBbmRTZXQoUmVnIHJlZykgeyByZXR1cm4gbV9pbmNsdWRlTG93ZXI2NEJp
dHMudGVzdEFuZFNldChyZWcuaW5kZXgoKSkgfCBtX2luY2x1ZGVVcHBlcjY0Qml0cy50ZXN0QW5k
U2V0KHJlZy5pbmRleCgpKTsgfQorICAgIGJvb2wgdGVzdEFuZENsZWFyKFJlZyByZWcpIHsgcmV0
dXJuIG1faW5jbHVkZUxvd2VyNjRCaXRzLnRlc3RBbmRDbGVhcihyZWcuaW5kZXgoKSkgfCBtX2lu
Y2x1ZGVVcHBlcjY0Qml0cy50ZXN0QW5kQ2xlYXIocmVnLmluZGV4KCkpOyB9CisKKyAgICBSZWdp
c3RlckJpdG1hcCBtX2luY2x1ZGVMb3dlcjY0Qml0czsKKyAgICBSZWdpc3RlckJpdG1hcCBtX2lu
Y2x1ZGVVcHBlcjY0Qml0czsKKworICAgIGZyaWVuZCBSZWdpc3RlclNldEJhc2U8UmVnaXN0ZXJT
ZXQxMjg+OwogfTsKIAorc3RhdGljX2Fzc2VydChzaXplb2YoUmVnaXN0ZXJTZXQxMjgpIDw9IDIq
c2l6ZW9mKHVpbnQ2NF90KSk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gIUVO
QUJMRShDX0xPT1ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAKaW5kZXggMjI0ZTI1MzQ5MzRiLi43ZDFhNjVmODBhZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLVNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yKGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKQorU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3IoY29uc3QgUmVnaXN0ZXJTZXQxMjgmIHVzZWRSZWdpc3RlcnMp
CiAgICAgOiBtX3VzZWRSZWdpc3RlcnModXNlZFJlZ2lzdGVycykKICAgICAsIG1fbnVtYmVyT2ZS
ZXVzZWRSZWdpc3RlcnMoMCkKIHsKQEAgLTEwNywxNiArMTA3LDE2IEBAIFNjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVz
ZXJ2ZVJldXNlCiAgICAgaWYgKCFkaWRSZXVzZVJlZ2lzdGVycygpKQogICAgICAgICByZXR1cm4g
UHJlc2VydmVkU3RhdGUoMCwgZXh0cmFTdGFja1NwYWNlKTsKIAotICAgIFJlZ2lzdGVyU2V0IHJl
Z2lzdGVyc1RvU3BpbGw7CisgICAgUmVnaXN0ZXJTZXQxMjggcmVnaXN0ZXJzVG9TcGlsbDsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsr
aSkgewogICAgICAgICBGUFJSZWcgcmVnID0gRlBSSW5mbzo6dG9SZWdpc3RlcihpKTsKICAgICAg
ICAgaWYgKG1fc2NyYXRjaFJlZ2lzdGVycy5nZXRGUFJCeUluZGV4KGkpICYmIG1fdXNlZFJlZ2lz
dGVycy5nZXQocmVnKSkKLSAgICAgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGwuc2V0KHJlZyk7Cisg
ICAgICAgICAgICByZWdpc3RlcnNUb1NwaWxsLnNldChyZWcsIG1fdXNlZFJlZ2lzdGVycy5nZXQo
cmVnKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHUFJJbmZvOjpudW1i
ZXJPZlJlZ2lzdGVyczsgKytpKSB7CiAgICAgICAgIEdQUlJlZyByZWcgPSBHUFJJbmZvOjp0b1Jl
Z2lzdGVyKGkpOwogICAgICAgICBpZiAobV9zY3JhdGNoUmVnaXN0ZXJzLmdldEdQUkJ5SW5kZXgo
aSkgJiYgbV91c2VkUmVnaXN0ZXJzLmdldChyZWcpKQotICAgICAgICAgICAgcmVnaXN0ZXJzVG9T
cGlsbC5zZXQocmVnKTsKKyAgICAgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGwuc2V0KHJlZywgbV91
c2VkUmVnaXN0ZXJzLmdldChyZWcpKTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBleHRyYVN0YWNr
Qnl0ZXNBdFRvcE9mU3RhY2sgPSBleHRyYVN0YWNrU3BhY2UgPT0gRXh0cmFTdGFja1NwYWNlOjpT
cGFjZUZvckNDYWxsID8gbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgOiAwOwpAQCAtMTMx
LDE2ICsxMzEsMTYgQEAgdm9pZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVSZXVz
ZWRSZWdpc3RlcnNCeVBvcHBpbmcoQXNzZW1ibHlIZWxwZXJzJgogICAgIGlmICghZGlkUmV1c2VS
ZWdpc3RlcnMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJz
VG9GaWxsOworICAgIFJlZ2lzdGVyU2V0MTI4IHJlZ2lzdGVyc1RvRmlsbDsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgewogICAgICAgICBH
UFJSZWcgcmVnID0gR1BSSW5mbzo6dG9SZWdpc3RlcihpKTsKICAgICAgICAgaWYgKG1fc2NyYXRj
aFJlZ2lzdGVycy5nZXRHUFJCeUluZGV4KGkpICYmIG1fdXNlZFJlZ2lzdGVycy5nZXQocmVnKSkK
LSAgICAgICAgICAgIHJlZ2lzdGVyc1RvRmlsbC5zZXQocmVnKTsKKyAgICAgICAgICAgIHJlZ2lz
dGVyc1RvRmlsbC5zZXQocmVnLCBtX3VzZWRSZWdpc3RlcnMuZ2V0KHJlZykpOwogICAgIH0KICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgewog
ICAgICAgICBGUFJSZWcgcmVnID0gRlBSSW5mbzo6dG9SZWdpc3RlcihpKTsKICAgICAgICAgaWYg
KG1fc2NyYXRjaFJlZ2lzdGVycy5nZXRGUFJCeUluZGV4KGkpICYmIG1fdXNlZFJlZ2lzdGVycy5n
ZXQocmVnKSkKLSAgICAgICAgICAgIHJlZ2lzdGVyc1RvRmlsbC5zZXQocmVnKTsKKyAgICAgICAg
ICAgIHJlZ2lzdGVyc1RvRmlsbC5zZXQocmVnLCBtX3VzZWRSZWdpc3RlcnMuZ2V0KHJlZykpOwog
ICAgIH0KIAogICAgIHVuc2lnbmVkIGV4dHJhU3RhY2tCeXRlc0F0VG9wT2ZTdGFjayA9CkBAIC0x
NTAsMjUgKzE1MCwyNiBAQCB2b2lkIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJl
dXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhBc3NlbWJseUhlbHBlcnMmCiAgICAgICAgIHByZXNlcnZl
ZFN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQsIGV4dHJhU3RhY2tCeXRlc0F0VG9wT2ZTdGFj
ayk7CiB9CiAKLVJlZ2lzdGVyU2V0IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6dXNlZFJlZ2lz
dGVyc0ZvckNhbGwoKSBjb25zdAorUmVnaXN0ZXJTZXQxMjggU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yOjp1c2VkUmVnaXN0ZXJzRm9yQ2FsbCgpIGNvbnN0CiB7Ci0gICAgUmVnaXN0ZXJTZXQgcmVz
dWx0ID0gbV91c2VkUmVnaXN0ZXJzOwotICAgIHJlc3VsdC5leGNsdWRlKFJlZ2lzdGVyU2V0Ojpy
ZWdpc3RlcnNUb05vdFNhdmVGb3JKU0NhbGwoKSk7CisgICAgUmVnaXN0ZXJTZXQxMjggcmVzdWx0
ID0gbV91c2VkUmVnaXN0ZXJzOworICAgIHJlc3VsdC5leGNsdWRlKFJlZ2lzdGVyU2V0MTI4Ojpy
ZWdpc3RlcnNUb05vdFNhdmVGb3JKU0NhbGwoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
dW5zaWduZWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpkZXNpcmVkU2NyYXRjaEJ1ZmZlclNp
emVGb3JDYWxsKCkgY29uc3QKIHsKKyAgICBBU1NFUlQoIXVzZWRSZWdpc3RlcnNGb3JDYWxsKCku
bnVtYmVyT2ZTZXRGUFJzKCkpOwogICAgIHJldHVybiB1c2VkUmVnaXN0ZXJzRm9yQ2FsbCgpLm51
bWJlck9mU2V0UmVnaXN0ZXJzKCkgKiBzaXplb2YoSlNWYWx1ZSk7CiB9CiAKLXVuc2lnbmVkIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChB
c3NlbWJseUhlbHBlcnMmIGppdCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIHVu
c2lnbmVkIGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2spCit1bnNpZ25lZCBTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoQXNzZW1ibHlIZWxwZXJz
JiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0MTI4JiB1c2VkUmVnaXN0ZXJzLCB1bnNpZ25lZCBleHRy
YUJ5dGVzQXRUb3BPZlN0YWNrKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGV4dHJhQnl0ZXNBdFRv
cE9mU3RhY2sgJSBzaXplb2Yodm9pZCopID09IDApOwogICAgIGlmICghdXNlZFJlZ2lzdGVycy5u
dW1iZXJPZlNldFJlZ2lzdGVycygpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICB1bnNp
Z25lZCBzdGFja09mZnNldCA9ICh1c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkp
ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKyAgICB1bnNpZ25lZCBzdGFja09mZnNldCA9ICh1
c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0R1BScygpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkg
KyAodXNlZFJlZ2lzdGVycy5udW1iZXJPZlNldEZQUnMoKSAqIEIzOjpieXRlc0ZvcldpZHRoKEIz
Ojpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSk7CiAgICAgc3RhY2tPZmZzZXQgKz0gZXh0cmFC
eXRlc0F0VG9wT2ZTdGFjazsKICAgICBzdGFja09mZnNldCA9IFdURjo6cm91bmRVcFRvTXVsdGlw
bGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHN0YWNrT2Zmc2V0KTsKICAgICBqaXQuc3ViUHRy
KApAQCAtMTgwLDE4ICsxODEsMjAgQEAgdW5zaWduZWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKEFzc2VtYmx5SGVscGUKICAgICB1bnNp
Z25lZCBjb3VudCA9IDA7CiAgICAgZm9yIChHUFJSZWcgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZp
cnN0UmVnaXN0ZXIoKTsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKTsgcmVn
ID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3RlcihyZWcpKSB7CiAgICAgICAgIGlmICh1c2Vk
UmVnaXN0ZXJzLmdldChyZWcpKSB7Ci0gICAgICAgICAgICBzcG9vbGVyLnN0b3JlR1BSKHsgcmVn
LCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAoY291bnQg
KiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSkgfSk7CisgICAgICAgICAgICBzcG9vbGVyLnN0b3Jl
R1BSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sg
KyAoY291bnQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSksIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkgfSk7CiAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICB9CiAgICAgfQogICAgIHNwb29s
ZXIuZmluYWxpemVHUFIoKTsKIAorICAgIHVuc2lnbmVkIGZwckNvdW50ID0gMDsKICAgICBmb3Ig
KEZQUlJlZyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBN
YWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5l
eHRGUFJlZ2lzdGVyKHJlZykpIHsKICAgICAgICAgaWYgKHVzZWRSZWdpc3RlcnMuZ2V0KHJlZykp
IHsKLSAgICAgICAgICAgIHNwb29sZXIuc3RvcmVGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRp
ZmZfdD4oZXh0cmFCeXRlc0F0VG9wT2ZTdGFjayArIChjb3VudCAqIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkpKSB9KTsKLSAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgICAgICBzcG9vbGVyLnN0
b3JlRlBSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGV4dHJhQnl0ZXNBdFRvcE9mU3Rh
Y2sgKyAoY291bnQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSArIChmcHJDb3VudCAqIEIzOjpi
eXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSkpLCBCMzo6Ynl0ZXNG
b3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkgfSwgQjM6OmJ5dGVzRm9yV2lk
dGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkpKTsKKyAgICAgICAgICAgIGZwckNvdW50
Kys7CiAgICAgICAgIH0KICAgICB9CisgICAgY291bnQgKz0gZnByQ291bnQ7CiAgICAgc3Bvb2xl
ci5maW5hbGl6ZUZQUigpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoY291bnQgPT0gdXNlZFJlZ2lz
dGVycy5udW1iZXJPZlNldFJlZ2lzdGVycygpKTsKQEAgLTE5OSw3ICsyMDIsNyBAQCB1bnNpZ25l
ZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNh
bGwoQXNzZW1ibHlIZWxwZQogICAgIHJldHVybiBzdGFja09mZnNldDsKIH0KIAotdm9pZCBTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKEFz
c2VtYmx5SGVscGVycyYgaml0LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgY29u
c3QgUmVnaXN0ZXJTZXQmIGlnbm9yZSwgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZv
clJlZ2lzdGVyUHJlc2VydmF0aW9uLCB1bnNpZ25lZCBleHRyYUJ5dGVzQXRUb3BPZlN0YWNrKQor
dm9pZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVSZWdpc3RlcnNGcm9tU3RhY2tG
b3JDYWxsKEFzc2VtYmx5SGVscGVycyYgaml0LCBjb25zdCBSZWdpc3RlclNldDEyOCYgdXNlZFJl
Z2lzdGVycywgY29uc3QgUmVnaXN0ZXJTZXQmIGlnbm9yZSwgdW5zaWduZWQgbnVtYmVyT2ZTdGFj
a0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uLCB1bnNpZ25lZCBleHRyYUJ5dGVzQXRU
b3BPZlN0YWNrKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sg
JSBzaXplb2Yodm9pZCopID09IDApOwogICAgIGlmICghdXNlZFJlZ2lzdGVycy5udW1iZXJPZlNl
dFJlZ2lzdGVycygpKSB7CkBAIC0yMTMsMjIgKzIxNiwyNCBAQCB2b2lkIFNjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvcjo6cmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoQXNzZW1ibHlIZWxw
ZXJzJgogICAgIGZvciAoR1BSUmVnIHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVy
KCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNz
ZW1ibGVyOjpuZXh0UmVnaXN0ZXIocmVnKSkgewogICAgICAgICBpZiAodXNlZFJlZ2lzdGVycy5n
ZXQocmVnKSkgewogICAgICAgICAgICAgaWYgKCFpZ25vcmUuZ2V0KHJlZykpCi0gICAgICAgICAg
ICAgICAgc3Bvb2xlci5sb2FkR1BSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGV4dHJh
Qnl0ZXNBdFRvcE9mU3RhY2sgKyAoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGNvdW50KSkgfSk7
CisgICAgICAgICAgICAgICAgc3Bvb2xlci5sb2FkR1BSKHsgcmVnLCBzdGF0aWNfY2FzdDxwdHJk
aWZmX3Q+KGV4dHJhQnl0ZXNBdFRvcE9mU3RhY2sgKyAoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAq
IGNvdW50KSksIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgfSk7CiAgICAgICAgICAgICBjb3VudCsr
OwogICAgICAgICB9CiAgICAgfQogICAgIHNwb29sZXIuZmluYWxpemVHUFIoKTsKIAorICAgIHVu
c2lnbmVkIGZwckNvdW50ID0gMDsKICAgICBmb3IgKEZQUlJlZyByZWcgPSBNYWNyb0Fzc2VtYmxl
cjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0
ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKHJlZykpIHsKICAgICAg
ICAgaWYgKHVzZWRSZWdpc3RlcnMuZ2V0KHJlZykpIHsKICAgICAgICAgICAgIGlmICghaWdub3Jl
LmdldChyZWcpKQotICAgICAgICAgICAgICAgIHNwb29sZXIubG9hZEZQUih7IHJlZywgc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PihleHRyYUJ5dGVzQXRUb3BPZlN0YWNrICsgKHNpemVvZihFbmNvZGVk
SlNWYWx1ZSkgKiBjb3VudCkpIH0pOwotICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgICAg
ICAgICBzcG9vbGVyLmxvYWRGUFIoeyByZWcsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oZXh0cmFC
eXRlc0F0VG9wT2ZTdGFjayArIChjb3VudCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpICsgKGZw
ckNvdW50ICogQjM6OmJ5dGVzRm9yV2lkdGgoQjM6OmNvbnNlcnZhdGl2ZVdpZHRoKEIzOjpGUCkp
KSksIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSB9LCBC
Mzo6Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkpOworICAgICAg
ICAgICAgZnByQ291bnQrKzsKICAgICAgICAgfQogICAgIH0KKyAgICBjb3VudCArPSBmcHJDb3Vu
dDsKICAgICBzcG9vbGVyLmZpbmFsaXplRlBSKCk7CiAKLSAgICB1bnNpZ25lZCBzdGFja09mZnNl
dCA9ICh1c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkpICogc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKTsKKyAgICB1bnNpZ25lZCBzdGFja09mZnNldCA9ICh1c2VkUmVnaXN0ZXJzLm51
bWJlck9mU2V0R1BScygpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgKyAodXNlZFJlZ2lzdGVy
cy5udW1iZXJPZlNldEZQUnMoKSAqIEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVX
aWR0aChCMzo6RlApKSk7CiAgICAgc3RhY2tPZmZzZXQgKz0gZXh0cmFCeXRlc0F0VG9wT2ZTdGFj
azsKICAgICBzdGFja09mZnNldCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdu
bWVudEJ5dGVzKCksIHN0YWNrT2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgKaW5kZXggMWVkMTdiMGUzZjJiLi5l
NWY0MGYxZmU1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3IuaApAQCAtNDAsNyArNDAsNyBAQCBzdHJ1Y3QgU2NyYXRjaEJ1
ZmZlcjsKIGNsYXNzIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciB7CiBwdWJsaWM6CiAgICAgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yKCkgeyB9Ci0gICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
KGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKTsKKyAgICBTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3IoY29uc3QgUmVnaXN0ZXJTZXQxMjgmIHVzZWRSZWdpc3RlcnMpOwogICAgIH5TY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3IoKTsKIAogICAgIHZvaWQgbG9jayhHUFJSZWcpOwpAQCAtNjMs
NyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX251bWJlck9mUmV1c2VkUmVnaXN0
ZXJzOwogICAgIH0KIAotICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMoKSBjb25zdCB7IHJl
dHVybiBtX3VzZWRSZWdpc3RlcnM7IH0KKyAgICBSZWdpc3RlclNldDEyOCB1c2VkUmVnaXN0ZXJz
KCkgY29uc3QgeyByZXR1cm4gbV91c2VkUmVnaXN0ZXJzOyB9CiAgICAgCiAgICAgZW51bSBjbGFz
cyBFeHRyYVN0YWNrU3BhY2UgeyBTcGFjZUZvckNDYWxsLCBOb0V4dHJhU3BhY2UgfTsKIApAQCAt
ODcsMTUgKzg3LDE1IEBAIHB1YmxpYzoKICAgICBQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZVJldXNl
ZFJlZ2lzdGVyc0J5UHVzaGluZyhBc3NlbWJseUhlbHBlcnMmIGppdCwgRXh0cmFTdGFja1NwYWNl
KTsKICAgICB2b2lkIHJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoQXNzZW1ibHlIZWxw
ZXJzJiBqaXQsIGNvbnN0IFByZXNlcnZlZFN0YXRlJik7CiAgICAgCi0gICAgUmVnaXN0ZXJTZXQg
dXNlZFJlZ2lzdGVyc0ZvckNhbGwoKSBjb25zdDsKKyAgICBSZWdpc3RlclNldDEyOCB1c2VkUmVn
aXN0ZXJzRm9yQ2FsbCgpIGNvbnN0OwogICAgIAogICAgIHVuc2lnbmVkIGRlc2lyZWRTY3JhdGNo
QnVmZmVyU2l6ZUZvckNhbGwoKSBjb25zdDsKIAotICAgIHN0YXRpYyB1bnNpZ25lZCBwcmVzZXJ2
ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKEFzc2VtYmx5SGVscGVycyYgaml0LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgdW5zaWduZWQgZXh0cmFQYWRkaW5nSW5CeXRlcyk7Ci0g
ICAgc3RhdGljIHZvaWQgcmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoQXNzZW1ibHlI
ZWxwZXJzJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBjb25zdCBSZWdp
c3RlclNldCYgaWdub3JlLCB1bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0
ZXJQcmVzZXJ2YXRpb24sIHVuc2lnbmVkIGV4dHJhUGFkZGluZ0luQnl0ZXMpOworICAgIHN0YXRp
YyB1bnNpZ25lZCBwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKEFzc2VtYmx5SGVscGVy
cyYgaml0LCBjb25zdCBSZWdpc3RlclNldDEyOCYgdXNlZFJlZ2lzdGVycywgdW5zaWduZWQgZXh0
cmFQYWRkaW5nSW5CeXRlcyk7CisgICAgc3RhdGljIHZvaWQgcmVzdG9yZVJlZ2lzdGVyc0Zyb21T
dGFja0ZvckNhbGwoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0MTI4JiB1
c2VkUmVnaXN0ZXJzLCBjb25zdCBSZWdpc3RlclNldCYgaWdub3JlLCB1bnNpZ25lZCBudW1iZXJP
ZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24sIHVuc2lnbmVkIGV4dHJhUGFk
ZGluZ0luQnl0ZXMpOwogCiBwcml2YXRlOgotICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVy
czsKKyAgICBSZWdpc3RlclNldDEyOCBtX3VzZWRSZWdpc3RlcnM7CiAgICAgVGVtcFJlZ2lzdGVy
U2V0IG1fbG9ja2VkUmVnaXN0ZXJzOwogICAgIFRlbXBSZWdpc3RlclNldCBtX3NjcmF0Y2hSZWdp
c3RlcnM7CiAgICAgdW5zaWduZWQgbV9udW1iZXJPZlJldXNlZFJlZ2lzdGVyczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2ltZEluZm8uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvU2ltZEluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmE3Njk4ZGUzYzIxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU2ltZEluZm8uaApAQCAtMCwwICsxLDIwNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit0eXBlZGVmIHVuaW9uIHYxMjhf
dSB7CisgICAgZmxvYXQgZjMyeDRbNF07CisgICAgZG91YmxlIGY2NHgyWzJdOworICAgIHVpbnQ4
X3QgdTh4MTZbMTZdOworICAgIHVpbnQxNl90IHUxNng4WzhdOworICAgIHVpbnQzMl90IHUzMng0
WzRdOworICAgIHVpbnQ2NF90IHU2NHgyWzJdID0geyAwLCAwIH07Cit9IHYxMjhfdDsKKworZW51
bSBjbGFzcyBTaW1kTGFuZSA6IHVpbnQ4X3QgeworICAgIHYxMjgsCisgICAgaTh4MTYsCisgICAg
aTE2eDgsCisgICAgaTMyeDQsCisgICAgaTY0eDIsCisgICAgZjMyeDQsCisgICAgZjY0eDIKK307
CisKK2VudW0gY2xhc3MgU2ltZFNpZ25Nb2RlIDogdWludDhfdCB7CisgICAgTm9uZSwgCisgICAg
U2lnbmVkLAorICAgIFVuc2lnbmVkCit9OworCitzdHJ1Y3QgU2ltZEluZm8geworICAgIFNpbWRM
YW5lIGxhbmUgeyBTaW1kTGFuZTo6djEyOCB9OworICAgIFNpbWRTaWduTW9kZSBzaWduTW9kZSB7
IFNpbWRTaWduTW9kZTo6Tm9uZSB9OworfTsKKworY29uc3RleHByIHNpemVfdCBlbGVtZW50Qnl0
ZVNpemUoU2ltZExhbmUgc2ltZExhbmUpCit7CisgICAgc3dpdGNoIChzaW1kTGFuZSkgeworICAg
IGNhc2UgU2ltZExhbmU6Omk4eDE2OgorICAgICAgICByZXR1cm4gMTsKKyAgICBjYXNlIFNpbWRM
YW5lOjppMTZ4ODoKKyAgICAgICAgcmV0dXJuIDI7CisgICAgY2FzZSBTaW1kTGFuZTo6aTMyeDQ6
CisgICAgY2FzZSBTaW1kTGFuZTo6ZjMyeDQ6CisgICAgICAgIHJldHVybiA0OworICAgIGNhc2Ug
U2ltZExhbmU6Omk2NHgyOgorICAgIGNhc2UgU2ltZExhbmU6OmY2NHgyOgorICAgICAgICByZXR1
cm4gODsKKyAgICBjYXNlIFNpbWRMYW5lOjp2MTI4OgorICAgICAgICByZXR1cm4gMTY7CisgICAg
fQorfQorCitjb25zdGV4cHIgdWludDhfdCBzaW1kTGFuZUNvdW50KFNpbWRMYW5lIGxhbmUpCit7
CisgICAgc3dpdGNoIChsYW5lKSB7CisgICAgY2FzZSBTaW1kTGFuZTo6aTh4MTY6CisgICAgICAg
IHJldHVybiAxNjsKKyAgICBjYXNlIFNpbWRMYW5lOjppMTZ4ODoKKyAgICAgICAgcmV0dXJuIDg7
CisgICAgY2FzZSBTaW1kTGFuZTo6ZjMyeDQ6CisgICAgY2FzZSBTaW1kTGFuZTo6aTMyeDQ6Cisg
ICAgICAgIHJldHVybiA0OworICAgIGNhc2UgU2ltZExhbmU6OmY2NHgyOgorICAgIGNhc2UgU2lt
ZExhbmU6Omk2NHgyOgorICAgICAgICByZXR1cm4gMjsKKyAgICBjYXNlIFNpbWRMYW5lOjp2MTI4
OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9Cit9CisKK2NvbnN0ZXhwciBib29sIHNjYWxhclR5cGVJc0Zsb2F0aW5nUG9pbnQo
U2ltZExhbmUgbGFuZSkKK3sKKyAgICBzd2l0Y2ggKGxhbmUpIHsKKyAgICBjYXNlIFNpbWRMYW5l
OjpmMzJ4NDoKKyAgICBjYXNlIFNpbWRMYW5lOjpmNjR4MjoKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworY29uc3Rl
eHByIGJvb2wgc2NhbGFyVHlwZUlzSW50ZWdyYWwoU2ltZExhbmUgbGFuZSkKK3sKKyAgICBzd2l0
Y2ggKGxhbmUpIHsKKyAgICBjYXNlIFNpbWRMYW5lOjppOHgxNjoKKyAgICBjYXNlIFNpbWRMYW5l
OjppMTZ4ODoKKyAgICBjYXNlIFNpbWRMYW5lOjppMzJ4NDoKKyAgICBjYXNlIFNpbWRMYW5lOjpp
NjR4MjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KK30KKworaW5saW5lIFNpbWRMYW5lIG5hcnJvd2VkTGFuZShTaW1kTGFu
ZSBsYW5lKQoreworICAgIHN3aXRjaCAobGFuZSkgeworICAgIGNhc2UgU2ltZExhbmU6OnYxMjg6
CisgICAgY2FzZSBTaW1kTGFuZTo6aTh4MTY6CisgICAgY2FzZSBTaW1kTGFuZTo6ZjMyeDQ6Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU2ltZExhbmU6OmkxNng4OgorICAgICAgICByZXR1cm4gU2ltZExhbmU6Omk4eDE2Owor
ICAgIGNhc2UgU2ltZExhbmU6OmkzMng0OgorICAgICAgICByZXR1cm4gU2ltZExhbmU6OmkxNng4
OworICAgIGNhc2UgU2ltZExhbmU6Omk2NHgyOgorICAgICAgICByZXR1cm4gU2ltZExhbmU6Omkz
Mng0OworICAgIGNhc2UgU2ltZExhbmU6OmY2NHgyOgorICAgICAgICByZXR1cm4gU2ltZExhbmU6
OmYzMng0OworICAgIH0KK30KKworaW5saW5lIFNpbWRMYW5lIHByb21vdGVkTGFuZShTaW1kTGFu
ZSBsYW5lKQoreworICAgIHN3aXRjaCAobGFuZSkgeworICAgIGNhc2UgU2ltZExhbmU6OnYxMjg6
CisgICAgY2FzZSBTaW1kTGFuZTo6aTY0eDI6CisgICAgY2FzZSBTaW1kTGFuZTo6ZjY0eDI6Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY2FzZSBTaW1kTGFuZTo6
aTh4MTY6CisgICAgICAgIHJldHVybiBTaW1kTGFuZTo6aTE2eDg7CisgICAgY2FzZSBTaW1kTGFu
ZTo6aTE2eDg6CisgICAgICAgIHJldHVybiBTaW1kTGFuZTo6aTMyeDQ7CisgICAgY2FzZSBTaW1k
TGFuZTo6aTMyeDQ6CisgICAgICAgIHJldHVybiBTaW1kTGFuZTo6aTY0eDI7CisgICAgY2FzZSBT
aW1kTGFuZTo6ZjMyeDQ6CisgICAgICAgIHJldHVybiBTaW1kTGFuZTo6ZjY0eDI7CisgICAgfQor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2lubGluZSB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgOjpKU0M6OlNpbWRMYW5lIGxhbmUpCit7
CisgICAgc3dpdGNoIChsYW5lKSB7CisgICAgY2FzZSA6OkpTQzo6U2ltZExhbmU6Omk4eDE2Ogor
ICAgICAgICBvdXQucHJpbnQoImk4eDE2Iik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgOjpK
U0M6OlNpbWRMYW5lOjppMTZ4ODoKKyAgICAgICAgb3V0LnByaW50KCJpMTZ4OCIpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIDo6SlNDOjpTaW1kTGFuZTo6aTMyeDQ6CisgICAgICAgIG91dC5w
cmludCgiaTMyeDQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA6OkpTQzo6U2ltZExhbmU6
OmYzMng0OgorICAgICAgICBvdXQucHJpbnQoImYzMng0Iik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgOjpKU0M6OlNpbWRMYW5lOjppNjR4MjoKKyAgICAgICAgb3V0LnByaW50KCJpNjR4MiIp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDo6SlNDOjpTaW1kTGFuZTo6ZjY0eDI6CisgICAg
ICAgIG91dC5wcmludCgiZjY0eDIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA6OkpTQzo6
U2ltZExhbmU6OnYxMjg6CisgICAgICAgIG91dC5wcmludCgidjEyOCIpOworICAgICAgICBicmVh
azsKKyAgICB9Cit9CisKK2lubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgOjpKU0M6OlNpbWRTaWduTW9kZSBtb2RlKQoreworICAgIHN3aXRjaCAobW9kZSkgeworICAg
IGNhc2UgOjpKU0M6OlNpbWRTaWduTW9kZTo6Tm9uZToKKyAgICAgICAgb3V0LnByaW50KCJTaWdu
TW9kZTo6Tm9uZSIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDo6SlNDOjpTaW1kU2lnbk1v
ZGU6OlNpZ25lZDoKKyAgICAgICAgb3V0LnByaW50KCJTaWduTW9kZTo6U2lnbmVkIik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgOjpKU0M6OlNpbWRTaWduTW9kZTo6VW5zaWduZWQ6CisgICAg
ICAgIG91dC5wcmludCgiU2lnbk1vZGU6OlVuc2lnbmVkIik7CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYThlN2M3Mzk5ZDU4Li41ZjM5
NDZhYjg3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KQEAgLTMyMiw4ICszMjIsOCBAQCBlbmQKIGNvbnN0IE9wY29kZUlE
TmFycm93U2l6ZSA9IDEgIyBPcGNvZGVJRAogY29uc3QgT3Bjb2RlSURXaWRlMTZTaXplSlMgPSAy
ICMgV2lkZTE2IFByZWZpeCArIE9wY29kZUlECiBjb25zdCBPcGNvZGVJRFdpZGUzMlNpemVKUyA9
IDIgIyBXaWRlMzIgUHJlZml4ICsgT3Bjb2RlSUQKLWNvbnN0IE9wY29kZUlEV2lkZTE2U2l6ZVdh
c20gPSAyICMgV2lkZTE2IFByZWZpeCArIE9wY29kZUlEKDEgYnl0ZSkKLWNvbnN0IE9wY29kZUlE
V2lkZTMyU2l6ZVdhc20gPSAyICMgV2lkZTMyIFByZWZpeCArIE9wY29kZUlEKDEgYnl0ZSkKK2Nv
bnN0IE9wY29kZUlEV2lkZTE2U2l6ZVdhc20gPSAzICMgV2lkZTE2IFByZWZpeCArIE9wY29kZUlE
KDIgYnl0ZSkKK2NvbnN0IE9wY29kZUlEV2lkZTMyU2l6ZVdhc20gPSAzICMgV2lkZTMyIFByZWZp
eCArIE9wY29kZUlEKDIgYnl0ZSkKIAogaWYgWDg2XzY0X1dJTiBvciBDX0xPT1BfV0lOCiAgICAg
Y29uc3QgR2lnYWNhZ2VDb25maWcgPSBfZ19naWdhY2FnZUNvbmZpZwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KaW5kZXggNzEzNWY0ZjZmYzIwLi40ZTcxMzky
OWJiYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJs
eS5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpA
QCAtMzksNiArMzksNyBAQCBlbHNlCiBlbmQKIGNvbnN0IE51bWJlck9mV2FzbUFyZ3VtZW50RlBS
cyA9IDgKIGNvbnN0IE51bWJlck9mV2FzbUFyZ3VtZW50cyA9IE51bWJlck9mV2FzbUFyZ3VtZW50
R1BScyArIE51bWJlck9mV2FzbUFyZ3VtZW50RlBScworY29uc3QgV2FzbUFyZ3VtZW50c1NpemVJ
blJlZ2lzdGVycyA9IE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDIqTnVtYmVyT2ZXYXNtQXJn
dW1lbnRGUFJzCiAKICMgQWxsIGNhbGxlZSBzYXZlcyBtdXN0IG1hdGNoIHRoZSBkZWZpbml0aW9u
IGluIFdhc21DYWxsZWUuY3BwCiAKQEAgLTcwLDE0ICs3MSwxNSBAQCBtYWNybyBmb3JFYWNoQXJn
dW1lbnRHUFIoZm4pCiBlbmQKIAogbWFjcm8gZm9yRWFjaEFyZ3VtZW50RlBSKGZuKQotICAgIGZu
KChOdW1iZXJPZldhc21Bcmd1bWVudEdQUnMgKyAwKSAqIDgsIHdmYTApCi0gICAgZm4oKE51bWJl
ck9mV2FzbUFyZ3VtZW50R1BScyArIDEpICogOCwgd2ZhMSkKLSAgICBmbigoTnVtYmVyT2ZXYXNt
QXJndW1lbnRHUFJzICsgMikgKiA4LCB3ZmEyKQotICAgIGZuKChOdW1iZXJPZldhc21Bcmd1bWVu
dEdQUnMgKyAzKSAqIDgsIHdmYTMpCi0gICAgZm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyAr
IDQpICogOCwgd2ZhNCkKLSAgICBmbigoTnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICsgNSkgKiA4
LCB3ZmE1KQotICAgIGZuKChOdW1iZXJPZldhc21Bcmd1bWVudEdQUnMgKyA2KSAqIDgsIHdmYTYp
Ci0gICAgZm4oKE51bWJlck9mV2FzbUFyZ3VtZW50R1BScyArIDcpICogOCwgd2ZhNykKKyAgICBj
b25zdCBiYXNlID0gTnVtYmVyT2ZXYXNtQXJndW1lbnRHUFJzICogOAorICAgIGZuKGJhc2UgKyAw
ICogMTYsIC0oYmFzZSArIDAgKiAxNiArIDgpLCB3ZmEwKQorICAgIGZuKGJhc2UgKyAxICogMTYs
IC0oYmFzZSArIDEgKiAxNiArIDgpLCB3ZmExKQorICAgIGZuKGJhc2UgKyAyICogMTYsIC0oYmFz
ZSArIDIgKiAxNiArIDgpLCB3ZmEyKQorICAgIGZuKGJhc2UgKyAzICogMTYsIC0oYmFzZSArIDMg
KiAxNiArIDgpLCB3ZmEzKQorICAgIGZuKGJhc2UgKyA0ICogMTYsIC0oYmFzZSArIDQgKiAxNiAr
IDgpLCB3ZmE0KQorICAgIGZuKGJhc2UgKyA1ICogMTYsIC0oYmFzZSArIDUgKiAxNiArIDgpLCB3
ZmE1KQorICAgIGZuKGJhc2UgKyA2ICogMTYsIC0oYmFzZSArIDYgKiAxNiArIDgpLCB3ZmE2KQor
ICAgIGZuKGJhc2UgKyA3ICogMTYsIC0oYmFzZSArIDcgKiAxNiArIDgpLCB3ZmE3KQogZW5kCiAK
ICMgSGVscGVyIG1hY3JvcwpAQCAtMTAwLDEzICsxMDIsMTMgQEAgbWFjcm8gd2FzbU5leHRJbnN0
cnVjdGlvbigpCiBlbmQKIAogbWFjcm8gd2FzbU5leHRJbnN0cnVjdGlvbldpZGUxNigpCi0gICAg
bG9hZGIgT3Bjb2RlSUROYXJyb3dTaXplW1BCLCBQQywgMV0sIHQwCisgICAgbG9hZGggT3Bjb2Rl
SUROYXJyb3dTaXplW1BCLCBQQywgMV0sIHQwCiAgICAgbGVhcCBfZ19vcGNvZGVNYXBXaWRlMTYs
IHQxCiAgICAgam1wIE51bWJlck9mSlNPcGNvZGVJRHMgKiBQdHJTaXplW3QxLCB0MCwgUHRyU2l6
ZV0sIEJ5dGVjb2RlUHRyVGFnLCBBZGRyZXNzRGl2ZXJzaWZpZWQKIGVuZAogCiBtYWNybyB3YXNt
TmV4dEluc3RydWN0aW9uV2lkZTMyKCkKLSAgICBsb2FkYiBPcGNvZGVJRE5hcnJvd1NpemVbUEIs
IFBDLCAxXSwgdDAKKyAgICBsb2FkaCBPcGNvZGVJRE5hcnJvd1NpemVbUEIsIFBDLCAxXSwgdDAK
ICAgICBsZWFwIF9nX29wY29kZU1hcFdpZGUzMiwgdDEKICAgICBqbXAgTnVtYmVyT2ZKU09wY29k
ZUlEcyAqIFB0clNpemVbdDEsIHQwLCBQdHJTaXplXSwgQnl0ZWNvZGVQdHJUYWcsIEFkZHJlc3NE
aXZlcnNpZmllZAogZW5kCkBAIC0xMzQsOCArMTM2LDggQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJ
VEZvclByb2xvZ3VlKGNvZGVCbG9ja1JlZ2lzdGVyKQogICAgICAgICAgICAgICAgIGxvYWRxIC1v
ZmZzZXQgLSA4IC0gQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzICogOFtjZnJdLCBn
cHIKICAgICAgICAgICAgIGVuZCkKIAotICAgICAgICAgICAgZm9yRWFjaEFyZ3VtZW50RlBSKG1h
Y3JvIChvZmZzZXQsIGZwcikKLSAgICAgICAgICAgICAgICBsb2FkZCAtb2Zmc2V0IC0gOCAtIENh
bGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyAqIDhbY2ZyXSwgZnByCisgICAgICAgICAg
ICBmb3JFYWNoQXJndW1lbnRGUFIobWFjcm8gKG9mZnNldCwgbmVnT2Zmc2V0LCBmcHIpCisgICAg
ICAgICAgICAgICAgbG9hZHYgbmVnT2Zmc2V0IC0gOCAtIENhbGxlZVNhdmVTcGFjZUFzVmlydHVh
bFJlZ2lzdGVycyAqIDhbY2ZyXSwgZnByCiAgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgICAg
IHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQpAQCAtMzE1LDggKzMxNyw4IEBAIG1hY3Jv
IHdhc21Qcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgbG9hZFdhc21J
bnN0YW5jZSkKICAgICAgICAgc3RvcmVxIGdwciwgLW9mZnNldCAtIDggLSBDYWxsZWVTYXZlU3Bh
Y2VBc1ZpcnR1YWxSZWdpc3RlcnMgKiA4W2Nmcl0KICAgICBlbmQpCiAKLSAgICBmb3JFYWNoQXJn
dW1lbnRGUFIobWFjcm8gKG9mZnNldCwgZnByKQotICAgICAgICBzdG9yZWQgZnByLCAtb2Zmc2V0
IC0gOCAtIENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyAqIDhbY2ZyXQorICAgIGZv
ckVhY2hBcmd1bWVudEZQUihtYWNybyAob2Zmc2V0LCBuZWdPZmZzZXQsIGZwcikKKyAgICAgICAg
c3RvcmV2IGZwciwgbmVnT2Zmc2V0IC0gOCAtIENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lz
dGVycyAqIDhbY2ZyXQogICAgIGVuZCkKIAogICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JQcm9sb2d1
ZSh3czApCkBAIC0zMjYsMTEgKzMyOCwxMSBAQCBtYWNybyB3YXNtUHJvbG9ndWUoY29kZUJsb2Nr
R2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRXYXNtSW5zdGFuY2UpCiAgICAgbW92ZSAwLCBQ
QwogCiAgICAgbG9hZGkgV2FzbTo6TExJbnRDYWxsZWU6Om1fbnVtVmFyc1t3czBdLCB3czEKLSAg
ICBzdWJpIE51bWJlck9mV2FzbUFyZ3VtZW50cyArIENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJl
Z2lzdGVycywgd3MxCisgICAgc3ViaSBXYXNtQXJndW1lbnRzU2l6ZUluUmVnaXN0ZXJzICsgQ2Fs
bGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzLCB3czEKICAgICBidGl6IHdzMSwgLnplcm9J
bml0aWFsaXplTG9jYWxzRG9uZQogICAgIG5lZ2kgd3MxCiAgICAgc3hpMnEgd3MxLCB3czEKLSAg
ICBsZWFwIChOdW1iZXJPZldhc21Bcmd1bWVudHMgKyBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxS
ZWdpc3RlcnMgKyAxKSAqIC04W2Nmcl0sIHdzMAorICAgIGxlYXAgKFdhc21Bcmd1bWVudHNTaXpl
SW5SZWdpc3RlcnMgKyBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKyAxKSAqIC04
W2Nmcl0sIHdzMAogLnplcm9Jbml0aWFsaXplTG9jYWxzTG9vcDoKICAgICBhZGRxIDEsIHdzMQog
ICAgIHN0b3JlcSAwLCBbd3MwLCB3czEsIDhdCkBAIC00MzEsNiArNDMzLDEzIEBAIG1hY3JvIG1s
b2FkZChjdHgsIGZpZWxkLCBkc3QpCiAgICAgZW5kKQogZW5kCiAKK21hY3JvIG1sb2FkdihjdHgs
IGZpZWxkLCBkc3QpCisgICAgd2dldHMoY3R4LCBmaWVsZCwgdDUpCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZShjdHgsIHQ1LCBtYWNybyAoZnJvbSkKKyAgICAgICAgbG9hZHYgZnJvbSwgZHN0
CisgICAgZW5kKQorZW5kCisKICMgVHlwZWQgcmV0dXJucwogCiBtYWNybyByZXR1cm5xKGN0eCwg
dmFsdWUpCkBAIC00NTcsNiArNDY2LDEyIEBAIG1hY3JvIHJldHVybmQoY3R4LCB2YWx1ZSkKICAg
ICBkaXNwYXRjaChjdHgpCiBlbmQKIAorbWFjcm8gcmV0dXJudihjdHgsIHZhbHVlKQorICAgIHdn
ZXRzKGN0eCwgbV9kc3QsIHQ1KQorICAgIHN0b3JldiB2YWx1ZSwgW2NmciwgdDUsIDhdCisgICAg
ZGlzcGF0Y2goY3R4KQorZW5kCisKICMgV2FzbSB3cmFwcGVyIG9mIGdldC9nZXR1IHRoYXQgb3Bl
cmF0ZSBvbiBjdHgKIG1hY3JvIHdnZXRzKGN0eCwgZmllbGQsIGRzdCkKICAgICBjdHgobWFjcm8o
b3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBzaXplKQpAQCAtNjIxLDEwICs2MzYsMTAgQEAgX3dh
c21fZW50ZXI6CiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDIsIDB4ZGVhZDAwZTEp
CiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyICAgICAgICAgICAgICAgIC8vIHQyPENvZGVC
bG9jaz4gPSBjZnIuQ29kZUJsb2NrCiAgICAgbG9hZGkgV2FzbTo6TExJbnRDYWxsZWU6Om1fbnVt
VmFyc1t0Ml0sIHQyICAgICAgLy8gdDI8c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4ubV9udW1WYXJz
Ci0gICAgc3VicSBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKyBOdW1iZXJPZldh
c21Bcmd1bWVudHMsIHQyCisgICAgc3VicSBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3Rl
cnMgKyBXYXNtQXJndW1lbnRzU2l6ZUluUmVnaXN0ZXJzLCB0MgogICAgIGJ0aXogdDIsIC5vcEVu
dGVyRG9uZQogICAgIG1vdmUgY2ZyLCB0MQotICAgIHN1YnEgQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0
dWFsUmVnaXN0ZXJzICogOCArIE51bWJlck9mV2FzbUFyZ3VtZW50cyAqIDgsIHQxCisgICAgc3Vi
cSBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKiA4ICsgV2FzbUFyZ3VtZW50c1Np
emVJblJlZ2lzdGVycyAqIDgsIHQxCiAgICAgbmVnaSB0MgogICAgIHN4aTJxIHQyLCB0MgogLm9w
RW50ZXJMb29wOgpAQCAtNjM4LDYgKzY1MywxMSBAQCB1bnByZWZpeGVkV2FzbU9wKHdhc21fbm9w
LCBXYXNtTm9wLCBtYWNybyhjdHgpCiAgICAgZGlzcGF0Y2goY3R4KQogZW5kKQogCit1bnByZWZp
eGVkV2FzbU9wKHdhc21fYnJlYWssIFdhc21CcmVhaywgbWFjcm8oY3R4KQorICAgIGJyZWFrCisg
ICAgZGlzcGF0Y2goY3R4KQorZW5kKQorCiB3YXNtT3AobG9vcF9oaW50LCBXYXNtTG9vcEhpbnQs
IG1hY3JvKGN0eCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgZGlzcGF0Y2go
Y3R4KQpAQCAtNzAyLDggKzcyMiw4IEBAIHVucHJlZml4ZWRXYXNtT3Aod2FzbV9yZXQsIFdhc21S
ZXQsIG1hY3JvKGN0eCkKICAgICBmb3JFYWNoQXJndW1lbnRHUFIobWFjcm8gKG9mZnNldCwgZ3By
KQogICAgICAgICBsb2FkcSAtb2Zmc2V0IC0gOCAtIENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJl
Z2lzdGVycyAqIDhbY2ZyXSwgZ3ByCiAgICAgZW5kKQotICAgIGZvckVhY2hBcmd1bWVudEZQUiht
YWNybyAob2Zmc2V0LCBmcHIpCi0gICAgICAgIGxvYWRkIC1vZmZzZXQgLSA4IC0gQ2FsbGVlU2F2
ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzICogOFtjZnJdLCBmcHIKKyAgICBmb3JFYWNoQXJndW1l
bnRGUFIobWFjcm8gKG9mZnNldCwgbmVnT2Zmc2V0LCBmcHIpCisgICAgICAgIGxvYWR2IG5lZ09m
ZnNldCAtIDggLSBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKiA4W2Nmcl0sIGZw
cgogICAgIGVuZCkKICAgICBkb1JldHVybigpCiBlbmQpCkBAIC03NzMsNyArNzkzLDcgQEAgbWFj
cm8gc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIHNsb3dQYXRoLCBzdG9yZVdhc21JbnN0YW5jZSkK
ICAgICAgICAgICAgIGxzaGlmdGkgMywgd3MxCiAgICAgICAgICAgICBzdWJwIGNmciwgd3MxLCBz
cAogCi0gICAgICAgICAgICB3Z2V0dShjdHgsIG1fbnVtYmVyT2ZTdGFja0FyZ3MsIHdzMSkKKyAg
ICAgICAgICAgIHdnZXR1KGN0eCwgbV9zaXplT2ZTdGFja0FyZ3MsIHdzMSkKIAogICAgICAgICAg
ICAgIyBQcmVzZXJ2ZSB0aGUgY3VycmVudCBpbnN0YW5jZQogICAgICAgICAgICAgbW92ZSB3YXNt
SW5zdGFuY2UsIFBCCkBAIC03ODYsOCArODA2LDggQEAgbWFjcm8gc2xvd1BhdGhGb3JXYXNtQ2Fs
bChjdHgsIHNsb3dQYXRoLCBzdG9yZVdhc21JbnN0YW5jZSkKICAgICAgICAgICAgICAgICBsb2Fk
cSBDYWxsRnJhbWVIZWFkZXJTaXplICsgOCArIG9mZnNldFtzcCwgd3MxLCA4XSwgZ3ByCiAgICAg
ICAgICAgICBlbmQpCiAKLSAgICAgICAgICAgIGZvckVhY2hBcmd1bWVudEZQUihtYWNybyAob2Zm
c2V0LCBmcHIpCi0gICAgICAgICAgICAgICAgbG9hZGQgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDgg
KyBvZmZzZXRbc3AsIHdzMSwgOF0sIGZwcgorICAgICAgICAgICAgZm9yRWFjaEFyZ3VtZW50RlBS
KG1hY3JvIChvZmZzZXQsIG5lZ09mZnNldCwgZnByKQorICAgICAgICAgICAgICAgIGxvYWR2IENh
bGxGcmFtZUhlYWRlclNpemUgKyA4ICsgb2Zmc2V0W3NwLCB3czEsIDhdLCBmcHIKICAgICAgICAg
ICAgIGVuZCkKIAogICAgICAgICAgICAgYWRkcCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKQEAg
LTg0MiwxNCArODYyLDE0IEBAIG1hY3JvIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBzbG93UGF0
aCwgc3RvcmVXYXNtSW5zdGFuY2UpCiAKICAgICAgICAgICAgICMgQXJndW1lbnQgcmVnaXN0ZXJz
IGFyZSBhbHNvIHJldHVybiByZWdpc3RlcnMsIHNvIHRoZXkgbXVzdCBiZSBzdG9yZWQgdG8gdGhl
IHN0YWNrCiAgICAgICAgICAgICAjIGluIGNhc2UgdGhleSBjb250YWluIHJldHVybiB2YWx1ZXMu
Ci0gICAgICAgICAgICB3Z2V0dShjdHgsIG1fbnVtYmVyT2ZTdGFja0FyZ3MsIHdzMCkKKyAgICAg
ICAgICAgIHdnZXR1KGN0eCwgbV9zaXplT2ZTdGFja0FyZ3MsIHdzMCkKICAgICAgICAgICAgIG1v
dmUgbWVtb3J5QmFzZSwgUEMKICAgICAgICAgICAgIGZvckVhY2hBcmd1bWVudEdQUihtYWNybyAo
b2Zmc2V0LCBncHIpCiAgICAgICAgICAgICAgICAgc3RvcmVxIGdwciwgQ2FsbEZyYW1lSGVhZGVy
U2l6ZSArIDggKyBvZmZzZXRbd3MxLCB3czAsIDhdCiAgICAgICAgICAgICBlbmQpCiAKLSAgICAg
ICAgICAgIGZvckVhY2hBcmd1bWVudEZQUihtYWNybyAob2Zmc2V0LCBmcHIpCi0gICAgICAgICAg
ICAgICAgc3RvcmVkIGZwciwgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBvZmZzZXRbd3MxLCB3
czAsIDhdCisgICAgICAgICAgICBmb3JFYWNoQXJndW1lbnRGUFIobWFjcm8gKG9mZnNldCwgbmVn
T2Zmc2V0LCBmcHIpCisgICAgICAgICAgICAgICAgc3RvcmV2IGZwciwgQ2FsbEZyYW1lSGVhZGVy
U2l6ZSArIDggKyBvZmZzZXRbd3MxLCB3czAsIDhdCiAgICAgICAgICAgICBlbmQpCiAKICAgICAg
ICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0s
IFBDCkBAIC05NTIsNiArOTcyLDE2IEBAIG1hY3JvIHdhc21Mb2FkT3AobmFtZSwgc3RydWN0LCBz
aXplLCBmbikKICAgICBlbmQpCiBlbmQKIAorbWFjcm8gd2FzbU1lbW9yeU9wKG5hbWUsIHN0cnVj
dCwgc2l6ZSwgZm4pCisgICAgd2FzbU9wKG5hbWUsIHN0cnVjdCwgbWFjcm8oY3R4KQorICAgICAg
ICBtbG9hZGkoY3R4LCBtX3BvaW50ZXIsIHQwKQorICAgICAgICB3Z2V0dShjdHgsIG1fb2Zmc2V0
LCB0MSkKKyAgICAgICAgZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIoY3R4LCB0MCwgdDEsIHNp
emUpCisgICAgICAgIGZuKGN0eCwgW3QwLCB0MV0pCisgICAgICAgIGJyZWFrCisgICAgZW5kKQor
ZW5kCisKIHdhc21Mb2FkT3AobG9hZDhfdSwgV2FzbUxvYWQ4VSwgMSwgbWFjcm8obWVtLCBkc3Qp
IGxvYWRiIG1lbSwgZHN0IGVuZCkKIHdhc21Mb2FkT3AobG9hZDE2X3UsIFdhc21Mb2FkMTZVLCAy
LCBtYWNybyhtZW0sIGRzdCkgbG9hZGggbWVtLCBkc3QgZW5kKQogd2FzbUxvYWRPcChsb2FkMzJf
dSwgV2FzbUxvYWQzMlUsIDQsIG1hY3JvKG1lbSwgZHN0KSBsb2FkaSBtZW0sIGRzdCBlbmQpCkBA
IC0yOTE1LDMgKzI5NDUsNTg5IEBAIGVuZCkKIGNvbW1vbldhc21PcCh3YXNtX2NhdGNoX2FsbF9u
b190bHMsIFdhc21DYXRjaEFsbCwgbWFjcm8oKSBlbmQsIG1hY3JvKGN0eCkKICAgICBjYXRjaEFs
bEltcGwoY3R4LCBtYWNybyhpbnN0YW5jZSkgZW5kKQogZW5kKQorCisKKyMgT09QUword2FzbU9w
KHNpbWRfZXh0cmFjdF9sYW5lX2k4eDE2X3UsIFdhc21TaW1kRXh0cmFjdExhbmVJOHgxNlUsIG1h
Y3JvKGN0eCkKKyAgICBtbG9hZHYoY3R4LCBtX3YsIGZ0MCkKKyAgICB3Z2V0dShjdHgsIG1fbGFu
ZSwgdDApCisgICAgc3BsYXRfbGFuZV9ieXRlIHQwLCBmdDEKKyAgICBzd2l6emxlX2J5dGUgZnQx
LCBmdDAKKyAgICBleHRyYWN0X2xhbmVfYnl0ZSAwLCBmdDAsIHQwCisgICAgcmV0dXJuaShjdHgs
IHQwKQorZW5kKQord2FzbU9wKHNpbWRfZXh0cmFjdF9sYW5lX2k4eDE2X3MsIFdhc21TaW1kRXh0
cmFjdExhbmVJOHgxNlMsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2V4dHJhY3RfbGFu
ZV9pMTZ4OF91LCBXYXNtU2ltZEV4dHJhY3RMYW5lSTE2eDhVLCBtYWNybyhjdHgpCitlbmQpCit3
YXNtT3Aoc2ltZF9leHRyYWN0X2xhbmVfaTE2eDhfcywgV2FzbVNpbWRFeHRyYWN0TGFuZUkxNng4
UywgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfZXh0cmFjdF9sYW5lX2kzMng0LCBXYXNt
U2ltZEV4dHJhY3RMYW5lSTMyeDQsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2V4dHJh
Y3RfbGFuZV9pNjR4MiwgV2FzbVNpbWRFeHRyYWN0TGFuZUk2NHgyLCBtYWNybyhjdHgpCitlbmQp
Cit3YXNtT3Aoc2ltZF9leHRyYWN0X2xhbmVfZjMyeDQsIFdhc21TaW1kRXh0cmFjdExhbmVGMzJ4
NCwgbWFjcm8oY3R4KQorICAgIG1sb2FkdihjdHgsIG1fdiwgZnQwKQorICAgIHdnZXR1KGN0eCwg
bV9sYW5lLCB0MCkKKyAgICAjIFRPRE8gb2ggbXkgZ29kIHRoaXMgaXMgYmFkIEknbSBzb3JyeSBP
T1BTCisgICAgYnFhIHQwLCAyLCAudGhyZWUKKyAgICBicWEgdDAsIDEsIC50d28KKyAgICBicWEg
dDAsIDAsIC5vbmUKKyAgICBleHRyYWN0X2xhbmVfaW50IDAsIGZ0MCwgdDAKKyAgICBqbXAgLmRv
bmUKKy50aHJlZToKKyAgICBleHRyYWN0X2xhbmVfaW50IDMsIGZ0MCwgdDAKKyAgICBqbXAgLmRv
bmUKKy50d286CisgICAgZXh0cmFjdF9sYW5lX2ludCAyLCBmdDAsIHQwCisgICAgam1wIC5kb25l
Cisub25lOgorICAgIGV4dHJhY3RfbGFuZV9pbnQgMSwgZnQwLCB0MAorICAgIGptcCAuZG9uZQor
LmRvbmU6CisgICAgZmkyZiB0MCwgZnQwCisgICAgcmV0dXJuZihjdHgsIGZ0MCkKK2VuZCkKK3dh
c21PcChzaW1kX2V4dHJhY3RfbGFuZV9mNjR4MiwgV2FzbVNpbWRFeHRyYWN0TGFuZUY2NHgyLCBt
YWNybyhjdHgpCitlbmQpCisKKword2FzbU9wKHNpbWRfcmVwbGFjZV9sYW5lX2k4eDE2LCBXYXNt
U2ltZFJlcGxhY2VMYW5lSTh4MTYsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX3JlcGxh
Y2VfbGFuZV9pMTZ4OCwgV2FzbVNpbWRSZXBsYWNlTGFuZUkxNng4LCBtYWNybyhjdHgpCitlbmQp
Cit3YXNtT3Aoc2ltZF9yZXBsYWNlX2xhbmVfaTMyeDQsIFdhc21TaW1kUmVwbGFjZUxhbmVJMzJ4
NCwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfcmVwbGFjZV9sYW5lX2k2NHgyLCBXYXNt
U2ltZFJlcGxhY2VMYW5lSTY0eDIsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX3JlcGxh
Y2VfbGFuZV9mMzJ4NCwgV2FzbVNpbWRSZXBsYWNlTGFuZUYzMng0LCBtYWNybyhjdHgpCitlbmQp
Cit3YXNtT3Aoc2ltZF9yZXBsYWNlX2xhbmVfZjY0eDIsIFdhc21TaW1kUmVwbGFjZUxhbmVGNjR4
MiwgbWFjcm8oY3R4KQorZW5kKQorCisKK3dhc21PcChzaW1kX2VxX2k4eDE2LCBXYXNtU2ltZEVx
STh4MTYsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2VxX2kxNng4LCBXYXNtU2ltZEVx
STE2eDgsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2VxX2kzMng0LCBXYXNtU2ltZEVx
STMyeDQsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2VxX2k2NHgyLCBXYXNtU2ltZEVx
STY0eDIsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2VxX2YzMng0LCBXYXNtU2ltZEVx
RjMyeDQsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2VxX2Y2NHgyLCBXYXNtU2ltZEVx
RjY0eDIsIG1hY3JvKGN0eCkKK2VuZCkKKworCit3YXNtT3Aoc2ltZF9uZV9pOHgxNiwgV2FzbVNp
bWROZUk4eDE2LCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9uZV9pMTZ4OCwgV2FzbVNp
bWROZUkxNng4LCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9uZV9pMzJ4NCwgV2FzbVNp
bWROZUkzMng0LCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9uZV9pNjR4MiwgV2FzbVNp
bWROZUk2NHgyLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9uZV9mMzJ4NCwgV2FzbVNp
bWROZUYzMng0LCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9uZV9mNjR4MiwgV2FzbVNp
bWROZUY2NHgyLCBtYWNybyhjdHgpCitlbmQpCisKKword2FzbU9wKHNpbWRfbHRfaTh4MTZfdSwg
V2FzbVNpbWRMdEk4eDE2VSwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfbHRfaTh4MTZf
cywgV2FzbVNpbWRMdEk4eDE2UywgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfbHRfaTE2
eDhfdSwgV2FzbVNpbWRMdEkxNng4VSwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfbHRf
aTE2eDhfcywgV2FzbVNpbWRMdEkxNng4UywgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRf
bHRfaTMyeDRfdSwgV2FzbVNpbWRMdEkzMng0VSwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNp
bWRfbHRfaTMyeDRfcywgV2FzbVNpbWRMdEkzMng0UywgbWFjcm8oY3R4KQorZW5kKQord2FzbU9w
KHNpbWRfbHRfaTY0eDJfdSwgV2FzbVNpbWRMdEk2NHgyVSwgbWFjcm8oY3R4KQorZW5kKQord2Fz
bU9wKHNpbWRfbHRfaTY0eDJfcywgV2FzbVNpbWRMdEk2NHgyUywgbWFjcm8oY3R4KQorZW5kKQor
d2FzbU9wKHNpbWRfbHRfZjMyeDQsIFdhc21TaW1kTHRGMzJ4NCwgbWFjcm8oY3R4KQorZW5kKQor
d2FzbU9wKHNpbWRfbHRfZjY0eDIsIFdhc21TaW1kTHRGNjR4MiwgbWFjcm8oY3R4KQorZW5kKQor
CisKK3dhc21PcChzaW1kX2d0X2k4eDE2X3UsIFdhc21TaW1kR3RJOHgxNlUsIG1hY3JvKGN0eCkK
K2VuZCkKK3dhc21PcChzaW1kX2d0X2k4eDE2X3MsIFdhc21TaW1kR3RJOHgxNlMsIG1hY3JvKGN0
eCkKK2VuZCkKK3dhc21PcChzaW1kX2d0X2kxNng4X3UsIFdhc21TaW1kR3RJMTZ4OFUsIG1hY3Jv
KGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2d0X2kxNng4X3MsIFdhc21TaW1kR3RJMTZ4OFMsIG1h
Y3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2d0X2kzMng0X3UsIFdhc21TaW1kR3RJMzJ4NFUs
IG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2d0X2kzMng0X3MsIFdhc21TaW1kR3RJMzJ4
NFMsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2d0X2k2NHgyX3UsIFdhc21TaW1kR3RJ
NjR4MlUsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2d0X2k2NHgyX3MsIFdhc21TaW1k
R3RJNjR4MlMsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2d0X2YzMng0LCBXYXNtU2lt
ZEd0RjMyeDQsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2d0X2Y2NHgyLCBXYXNtU2lt
ZEd0RjY0eDIsIG1hY3JvKGN0eCkKK2VuZCkKKworCit3YXNtT3Aoc2ltZF9sZV9pOHgxNl91LCBX
YXNtU2ltZExlSTh4MTZVLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9sZV9pOHgxNl9z
LCBXYXNtU2ltZExlSTh4MTZTLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9sZV9pMTZ4
OF91LCBXYXNtU2ltZExlSTE2eDhVLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9sZV9p
MTZ4OF9zLCBXYXNtU2ltZExlSTE2eDhTLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9s
ZV9pMzJ4NF91LCBXYXNtU2ltZExlSTMyeDRVLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2lt
ZF9sZV9pMzJ4NF9zLCBXYXNtU2ltZExlSTMyeDRTLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Ao
c2ltZF9sZV9pNjR4Ml91LCBXYXNtU2ltZExlSTY0eDJVLCBtYWNybyhjdHgpCitlbmQpCit3YXNt
T3Aoc2ltZF9sZV9pNjR4Ml9zLCBXYXNtU2ltZExlSTY0eDJTLCBtYWNybyhjdHgpCitlbmQpCit3
YXNtT3Aoc2ltZF9sZV9mMzJ4NCwgV2FzbVNpbWRMZUYzMng0LCBtYWNybyhjdHgpCitlbmQpCit3
YXNtT3Aoc2ltZF9sZV9mNjR4MiwgV2FzbVNpbWRMZUY2NHgyLCBtYWNybyhjdHgpCitlbmQpCisK
Kword2FzbU9wKHNpbWRfZ2VfaTh4MTZfdSwgV2FzbVNpbWRHZUk4eDE2VSwgbWFjcm8oY3R4KQor
ZW5kKQord2FzbU9wKHNpbWRfZ2VfaTh4MTZfcywgV2FzbVNpbWRHZUk4eDE2UywgbWFjcm8oY3R4
KQorZW5kKQord2FzbU9wKHNpbWRfZ2VfaTE2eDhfdSwgV2FzbVNpbWRHZUkxNng4VSwgbWFjcm8o
Y3R4KQorZW5kKQord2FzbU9wKHNpbWRfZ2VfaTE2eDhfcywgV2FzbVNpbWRHZUkxNng4UywgbWFj
cm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfZ2VfaTMyeDRfdSwgV2FzbVNpbWRHZUkzMng0VSwg
bWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfZ2VfaTMyeDRfcywgV2FzbVNpbWRHZUkzMng0
UywgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfZ2VfaTY0eDJfdSwgV2FzbVNpbWRHZUk2
NHgyVSwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfZ2VfaTY0eDJfcywgV2FzbVNpbWRH
ZUk2NHgyUywgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfZ2VfZjMyeDQsIFdhc21TaW1k
R2VGMzJ4NCwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfZ2VfZjY0eDIsIFdhc21TaW1k
R2VGNjR4MiwgbWFjcm8oY3R4KQorZW5kKQorCisKK3dhc21PcChzaW1kX2FkZF9pOHgxNiwgV2Fz
bVNpbWRBZGRJOHgxNiwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfYWRkX2kxNng4LCBX
YXNtU2ltZEFkZEkxNng4LCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9hZGRfaTMyeDQs
IFdhc21TaW1kQWRkSTMyeDQsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2FkZF9pNjR4
MiwgV2FzbVNpbWRBZGRJNjR4MiwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfYWRkX2Yz
Mng0LCBXYXNtU2ltZEFkZEYzMng0LCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9hZGRf
ZjY0eDIsIFdhc21TaW1kQWRkRjY0eDIsIG1hY3JvKGN0eCkKK2VuZCkKKworCit3YXNtT3Aoc2lt
ZF9zdWJfaTh4MTYsIFdhc21TaW1kU3ViSTh4MTYsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChz
aW1kX3N1Yl9pMTZ4OCwgV2FzbVNpbWRTdWJJMTZ4OCwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9w
KHNpbWRfc3ViX2kzMng0LCBXYXNtU2ltZFN1YkkzMng0LCBtYWNybyhjdHgpCitlbmQpCit3YXNt
T3Aoc2ltZF9zdWJfaTY0eDIsIFdhc21TaW1kU3ViSTY0eDIsIG1hY3JvKGN0eCkKK2VuZCkKK3dh
c21PcChzaW1kX3N1Yl9mMzJ4NCwgV2FzbVNpbWRTdWJGMzJ4NCwgbWFjcm8oY3R4KQorZW5kKQor
d2FzbU9wKHNpbWRfc3ViX2Y2NHgyLCBXYXNtU2ltZFN1YkY2NHgyLCBtYWNybyhjdHgpCitlbmQp
CisKKword2FzbU9wKHNpbWRfbXVsX2kxNng4LCBXYXNtU2ltZE11bEkxNng4LCBtYWNybyhjdHgp
CitlbmQpCit3YXNtT3Aoc2ltZF9tdWxfaTMyeDQsIFdhc21TaW1kTXVsSTMyeDQsIG1hY3JvKGN0
eCkKK2VuZCkKK3dhc21PcChzaW1kX211bF9pNjR4MiwgV2FzbVNpbWRNdWxJNjR4MiwgbWFjcm8o
Y3R4KQorZW5kKQord2FzbU9wKHNpbWRfbXVsX2YzMng0LCBXYXNtU2ltZE11bEYzMng0LCBtYWNy
byhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9tdWxfZjY0eDIsIFdhc21TaW1kTXVsRjY0eDIsIG1h
Y3JvKGN0eCkKK2VuZCkKKworCit3YXNtT3Aoc2ltZF9kaXZfZjMyeDQsIFdhc21TaW1kRGl2RjMy
eDQsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2Rpdl9mNjR4MiwgV2FzbVNpbWREaXZG
NjR4MiwgbWFjcm8oY3R4KQorZW5kKQorCisKK3dhc21PcChzaW1kX21pbl9pOHgxNl91LCBXYXNt
U2ltZE1pbkk4eDE2VSwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfbWluX2k4eDE2X3Ms
IFdhc21TaW1kTWluSTh4MTZTLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9taW5faTE2
eDhfdSwgV2FzbVNpbWRNaW5JMTZ4OFUsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX21p
bl9pMTZ4OF9zLCBXYXNtU2ltZE1pbkkxNng4UywgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNp
bWRfbWluX2kzMng0X3UsIFdhc21TaW1kTWluSTMyeDRVLCBtYWNybyhjdHgpCitlbmQpCit3YXNt
T3Aoc2ltZF9taW5faTMyeDRfcywgV2FzbVNpbWRNaW5JMzJ4NFMsIG1hY3JvKGN0eCkKK2VuZCkK
K3dhc21PcChzaW1kX21pbl9mMzJ4NCwgV2FzbVNpbWRNaW5GMzJ4NCwgbWFjcm8oY3R4KQorZW5k
KQord2FzbU9wKHNpbWRfbWluX2Y2NHgyLCBXYXNtU2ltZE1pbkY2NHgyLCBtYWNybyhjdHgpCitl
bmQpCisgICAgCisKK3dhc21PcChzaW1kX21heF9pOHgxNl91LCBXYXNtU2ltZE1heEk4eDE2VSwg
bWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfbWF4X2k4eDE2X3MsIFdhc21TaW1kTWF4STh4
MTZTLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9tYXhfaTE2eDhfdSwgV2FzbVNpbWRN
YXhJMTZ4OFUsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX21heF9pMTZ4OF9zLCBXYXNt
U2ltZE1heEkxNng4UywgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfbWF4X2kzMng0X3Us
IFdhc21TaW1kTWF4STMyeDRVLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9tYXhfaTMy
eDRfcywgV2FzbVNpbWRNYXhJMzJ4NFMsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX21h
eF9mMzJ4NCwgV2FzbVNpbWRNYXhGMzJ4NCwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRf
bWF4X2Y2NHgyLCBXYXNtU2ltZE1heEY2NHgyLCBtYWNybyhjdHgpCitlbmQpCisgICAgCisKK3dh
c21PcChzaW1kX3BtaW5fZjMyeDQsIFdhc21TaW1kUG1pbkYzMng0LCBtYWNybyhjdHgpCitlbmQp
Cit3YXNtT3Aoc2ltZF9wbWluX2Y2NHgyLCBXYXNtU2ltZFBtaW5GNjR4MiwgbWFjcm8oY3R4KQor
ZW5kKQorICAgIAorCit3YXNtT3Aoc2ltZF9wbWF4X2YzMng0LCBXYXNtU2ltZFBtYXhGMzJ4NCwg
bWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfcG1heF9mNjR4MiwgV2FzbVNpbWRQbWF4RjY0
eDIsIG1hY3JvKGN0eCkKK2VuZCkKKworCit3YXNtT3Aoc2ltZF9ub3RfdjEyOCwgV2FzbVNpbWRO
b3RWMTI4LCBtYWNybyhjdHgpCitlbmQpCisKKword2FzbU9wKHNpbWRfYW5kX3YxMjgsIFdhc21T
aW1kQW5kVjEyOCwgbWFjcm8oY3R4KQorZW5kKQorCisKK3dhc21PcChzaW1kX2FuZG5vdF92MTI4
LCBXYXNtU2ltZEFuZG5vdFYxMjgsIG1hY3JvKGN0eCkKK2VuZCkKKworCit3YXNtT3Aoc2ltZF9v
cl92MTI4LCBXYXNtU2ltZE9yVjEyOCwgbWFjcm8oY3R4KQorZW5kKQorCisKK3dhc21PcChzaW1k
X3hvcl92MTI4LCBXYXNtU2ltZFhvclYxMjgsIG1hY3JvKGN0eCkKK2VuZCkKKworCit3YXNtT3Ao
c2ltZF9hYnNfaTh4MTYsIFdhc21TaW1kQWJzSTh4MTYsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21P
cChzaW1kX2Fic19pMTZ4OCwgV2FzbVNpbWRBYnNJMTZ4OCwgbWFjcm8oY3R4KQorZW5kKQord2Fz
bU9wKHNpbWRfYWJzX2kzMng0LCBXYXNtU2ltZEFic0kzMng0LCBtYWNybyhjdHgpCitlbmQpCit3
YXNtT3Aoc2ltZF9hYnNfaTY0eDIsIFdhc21TaW1kQWJzSTY0eDIsIG1hY3JvKGN0eCkKK2VuZCkK
K3dhc21PcChzaW1kX2Fic19mMzJ4NCwgV2FzbVNpbWRBYnNGMzJ4NCwgbWFjcm8oY3R4KQorZW5k
KQord2FzbU9wKHNpbWRfYWJzX2Y2NHgyLCBXYXNtU2ltZEFic0Y2NHgyLCBtYWNybyhjdHgpCitl
bmQpCisKKword2FzbU9wKHNpbWRfbmVnX2k4eDE2LCBXYXNtU2ltZE5lZ0k4eDE2LCBtYWNybyhj
dHgpCitlbmQpCit3YXNtT3Aoc2ltZF9uZWdfaTE2eDgsIFdhc21TaW1kTmVnSTE2eDgsIG1hY3Jv
KGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX25lZ19pMzJ4NCwgV2FzbVNpbWROZWdJMzJ4NCwgbWFj
cm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfbmVnX2k2NHgyLCBXYXNtU2ltZE5lZ0k2NHgyLCBt
YWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9uZWdfZjMyeDQsIFdhc21TaW1kTmVnRjMyeDQs
IG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX25lZ19mNjR4MiwgV2FzbVNpbWROZWdGNjR4
MiwgbWFjcm8oY3R4KQorZW5kKQorCisKK3dhc21PcChzaW1kX3BvcGNudF9pOHgxNiwgV2FzbVNp
bWRQb3BjbnRJOHgxNiwgbWFjcm8oY3R4KQorZW5kKQorCisKK3dhc21PcChzaW1kX2NlaWxfZjMy
eDQsIFdhc21TaW1kQ2VpbEYzMng0LCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9jZWls
X2Y2NHgyLCBXYXNtU2ltZENlaWxGNjR4MiwgbWFjcm8oY3R4KQorZW5kKQorICAgIAorCit3YXNt
T3Aoc2ltZF9mbG9vcl9mMzJ4NCwgV2FzbVNpbWRGbG9vckYzMng0LCBtYWNybyhjdHgpCitlbmQp
Cit3YXNtT3Aoc2ltZF9mbG9vcl9mNjR4MiwgV2FzbVNpbWRGbG9vckY2NHgyLCBtYWNybyhjdHgp
CitlbmQpCisgICAgCisKK3dhc21PcChzaW1kX3RydW5jX2YzMng0LCBXYXNtU2ltZFRydW5jRjMy
eDQsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX3RydW5jX2Y2NHgyLCBXYXNtU2ltZFRy
dW5jRjY0eDIsIG1hY3JvKGN0eCkKK2VuZCkKKworCit3YXNtT3Aoc2ltZF9uZWFyZXN0X2YzMng0
LCBXYXNtU2ltZE5lYXJlc3RGMzJ4NCwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfbmVh
cmVzdF9mNjR4MiwgV2FzbVNpbWROZWFyZXN0RjY0eDIsIG1hY3JvKGN0eCkKK2VuZCkKKworCit3
YXNtT3Aoc2ltZF9zcXJ0X2YzMng0LCBXYXNtU2ltZFNxcnRGMzJ4NCwgbWFjcm8oY3R4KQorZW5k
KQord2FzbU9wKHNpbWRfc3FydF9mNjR4MiwgV2FzbVNpbWRTcXJ0RjY0eDIsIG1hY3JvKGN0eCkK
K2VuZCkKKworCit3YXNtT3Aoc2ltZF9leHRlbmRfbG93X2k4eDE2X3UsIFdhc21TaW1kRXh0ZW5k
TG93STh4MTZVLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9leHRlbmRfbG93X2k4eDE2
X3MsIFdhc21TaW1kRXh0ZW5kTG93STh4MTZTLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2lt
ZF9leHRlbmRfbG93X2kxNng4X3UsIFdhc21TaW1kRXh0ZW5kTG93STE2eDhVLCBtYWNybyhjdHgp
CitlbmQpCit3YXNtT3Aoc2ltZF9leHRlbmRfbG93X2kxNng4X3MsIFdhc21TaW1kRXh0ZW5kTG93
STE2eDhTLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9leHRlbmRfbG93X2kzMng0X3Us
IFdhc21TaW1kRXh0ZW5kTG93STMyeDRVLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9l
eHRlbmRfbG93X2kzMng0X3MsIFdhc21TaW1kRXh0ZW5kTG93STMyeDRTLCBtYWNybyhjdHgpCitl
bmQpCisgICAgCisKK3dhc21PcChzaW1kX2V4dGVuZF9oaWdoX2k4eDE2X3UsIFdhc21TaW1kRXh0
ZW5kSGlnaEk4eDE2VSwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfZXh0ZW5kX2hpZ2hf
aTh4MTZfcywgV2FzbVNpbWRFeHRlbmRIaWdoSTh4MTZTLCBtYWNybyhjdHgpCitlbmQpCit3YXNt
T3Aoc2ltZF9leHRlbmRfaGlnaF9pMTZ4OF91LCBXYXNtU2ltZEV4dGVuZEhpZ2hJMTZ4OFUsIG1h
Y3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2V4dGVuZF9oaWdoX2kxNng4X3MsIFdhc21TaW1k
RXh0ZW5kSGlnaEkxNng4UywgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfZXh0ZW5kX2hp
Z2hfaTMyeDRfdSwgV2FzbVNpbWRFeHRlbmRIaWdoSTMyeDRVLCBtYWNybyhjdHgpCitlbmQpCit3
YXNtT3Aoc2ltZF9leHRlbmRfaGlnaF9pMzJ4NF9zLCBXYXNtU2ltZEV4dGVuZEhpZ2hJMzJ4NFMs
IG1hY3JvKGN0eCkKK2VuZCkKKworCit3YXNtT3Aoc2ltZF9wcm9tb3RlX2YzMng0LCBXYXNtU2lt
ZFByb21vdGVGMzJ4NCwgbWFjcm8oY3R4KQorZW5kKQorCisKK3dhc21PcChzaW1kX2RlbW90ZV9m
NjR4MiwgV2FzbVNpbWREZW1vdGVGNjR4MiwgbWFjcm8oY3R4KQorZW5kKQorCisKK3dhc21PcChz
aW1kX3NwbGF0X2k4eDE2LCBXYXNtU2ltZFNwbGF0STh4MTYsIG1hY3JvKGN0eCkKK2VuZCkKK3dh
c21PcChzaW1kX3NwbGF0X2kxNng4LCBXYXNtU2ltZFNwbGF0STE2eDgsIG1hY3JvKGN0eCkKK2Vu
ZCkKK3dhc21PcChzaW1kX3NwbGF0X2kzMng0LCBXYXNtU2ltZFNwbGF0STMyeDQsIG1hY3JvKGN0
eCkKK2VuZCkKK3dhc21PcChzaW1kX3NwbGF0X2k2NHgyLCBXYXNtU2ltZFNwbGF0STY0eDIsIG1h
Y3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX3NwbGF0X2YzMng0LCBXYXNtU2ltZFNwbGF0RjMy
eDQsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX3NwbGF0X2Y2NHgyLCBXYXNtU2ltZFNw
bGF0RjY0eDIsIG1hY3JvKGN0eCkKK2VuZCkKKyAgICAKKword2FzbU9wKHNpbWRfc2hsX2k4eDE2
LCBXYXNtU2ltZFNobEk4eDE2LCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9zaGxfaTE2
eDgsIFdhc21TaW1kU2hsSTE2eDgsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX3NobF9p
MzJ4NCwgV2FzbVNpbWRTaGxJMzJ4NCwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfc2hs
X2k2NHgyLCBXYXNtU2ltZFNobEk2NHgyLCBtYWNybyhjdHgpCitlbmQpCisKKword2FzbU9wKHNp
bWRfc2hyX2k4eDE2X3UsIFdhc21TaW1kU2hySTh4MTZVLCBtYWNybyhjdHgpCitlbmQpCit3YXNt
T3Aoc2ltZF9zaHJfaTh4MTZfcywgV2FzbVNpbWRTaHJJOHgxNlMsIG1hY3JvKGN0eCkKK2VuZCkK
K3dhc21PcChzaW1kX3Nocl9pMTZ4OF91LCBXYXNtU2ltZFNockkxNng4VSwgbWFjcm8oY3R4KQor
ZW5kKQord2FzbU9wKHNpbWRfc2hyX2kxNng4X3MsIFdhc21TaW1kU2hySTE2eDhTLCBtYWNybyhj
dHgpCitlbmQpCit3YXNtT3Aoc2ltZF9zaHJfaTMyeDRfdSwgV2FzbVNpbWRTaHJJMzJ4NFUsIG1h
Y3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX3Nocl9pMzJ4NF9zLCBXYXNtU2ltZFNockkzMng0
UywgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfc2hyX2k2NHgyX3UsIFdhc21TaW1kU2hy
STY0eDJVLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9zaHJfaTY0eDJfcywgV2FzbVNp
bWRTaHJJNjR4MlMsIG1hY3JvKGN0eCkKK2VuZCkKKworCit3YXNtT3Aoc2ltZF9hZGRfc2F0X2k4
eDE2X3UsIFdhc21TaW1kQWRkU2F0STh4MTZVLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2lt
ZF9hZGRfc2F0X2k4eDE2X3MsIFdhc21TaW1kQWRkU2F0STh4MTZTLCBtYWNybyhjdHgpCitlbmQp
Cit3YXNtT3Aoc2ltZF9hZGRfc2F0X2kxNng4X3UsIFdhc21TaW1kQWRkU2F0STE2eDhVLCBtYWNy
byhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9hZGRfc2F0X2kxNng4X3MsIFdhc21TaW1kQWRkU2F0
STE2eDhTLCBtYWNybyhjdHgpCitlbmQpCisgICAgCisKK3dhc21PcChzaW1kX3N1Yl9zYXRfaTh4
MTZfdSwgV2FzbVNpbWRTdWJTYXRJOHgxNlUsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1k
X3N1Yl9zYXRfaTh4MTZfcywgV2FzbVNpbWRTdWJTYXRJOHgxNlMsIG1hY3JvKGN0eCkKK2VuZCkK
K3dhc21PcChzaW1kX3N1Yl9zYXRfaTE2eDhfdSwgV2FzbVNpbWRTdWJTYXRJMTZ4OFUsIG1hY3Jv
KGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX3N1Yl9zYXRfaTE2eDhfcywgV2FzbVNpbWRTdWJTYXRJ
MTZ4OFMsIG1hY3JvKGN0eCkKK2VuZCkKKworCit3YXNtT3Aoc2ltZF90cnVuY19zYXRfZjMyeDRf
cywgV2FzbVNpbWRUcnVuY1NhdEYzMng0UywgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRf
dHJ1bmNfc2F0X2YzMng0X3UsIFdhc21TaW1kVHJ1bmNTYXRGMzJ4NFUsIG1hY3JvKGN0eCkKK2Vu
ZCkKK3dhc21PcChzaW1kX3RydW5jX3NhdF9mNjR4Ml9zLCBXYXNtU2ltZFRydW5jU2F0RjY0eDJT
LCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF90cnVuY19zYXRfZjY0eDJfdSwgV2FzbVNp
bWRUcnVuY1NhdEY2NHgyVSwgbWFjcm8oY3R4KQorZW5kKQorCisKK3dhc21PcChzaW1kX2NvbnZl
cnRfaTMyeDRfdSwgV2FzbVNpbWRDb252ZXJ0STMyeDRVLCBtYWNybyhjdHgpCitlbmQpCit3YXNt
T3Aoc2ltZF9jb252ZXJ0X2kzMng0X3MsIFdhc21TaW1kQ29udmVydEkzMng0UywgbWFjcm8oY3R4
KQorZW5kKQorCisKK3dhc21PcChzaW1kX2NvbnZlcnRfbG93X2kzMng0X3UsIFdhc21TaW1kQ29u
dmVydExvd0kzMng0VSwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfY29udmVydF9sb3df
aTMyeDRfcywgV2FzbVNpbWRDb252ZXJ0TG93STMyeDRTLCBtYWNybyhjdHgpCitlbmQpCisKKwor
d2FzbU9wKHNpbWRfbmFycm93X2kxNng4X3UsIFdhc21TaW1kTmFycm93STE2eDhVLCBtYWNybyhj
dHgpCitlbmQpCit3YXNtT3Aoc2ltZF9uYXJyb3dfaTE2eDhfcywgV2FzbVNpbWROYXJyb3dJMTZ4
OFMsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX25hcnJvd19pMzJ4NF91LCBXYXNtU2lt
ZE5hcnJvd0kzMng0VSwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfbmFycm93X2kzMng0
X3MsIFdhc21TaW1kTmFycm93STMyeDRTLCBtYWNybyhjdHgpCitlbmQpCisKKword2FzbU1lbW9y
eU9wKHNpbWRfbG9hZCwgV2FzbVNpbWRMb2FkLCAxNiwgbWFjcm8oY3R4LCBtZW0pCisgICAgbG9h
ZHYgbWVtLCBmdDAKKyAgICByZXR1cm52KGN0eCwgZnQwKQorZW5kKQorCit3YXNtTWVtb3J5T3Ao
c2ltZF9zdG9yZSwgV2FzbVNpbWRTdG9yZSwgMTYsIG1hY3JvKGN0eCwgbWVtKQorICAgIG1sb2Fk
dihjdHgsIG1fdmFsdWUsIGZ0MCkKKyAgICBzdG9yZXYgZnQwLCBtZW0KKyAgICBkaXNwYXRjaChj
dHgpCitlbmQpCisKKword2FzbUxvYWRPcChzaW1kX2xvYWRfc3BsYXQ4LCBXYXNtU2ltZExvYWRT
cGxhdDgsIDEsIG1hY3JvKG1lbSwgZHN0KSAKK2VuZCkKK3dhc21Mb2FkT3Aoc2ltZF9sb2FkX3Nw
bGF0MTYsIFdhc21TaW1kTG9hZFNwbGF0MTYsIDIsIG1hY3JvKG1lbSwgZHN0KSAKK2VuZCkKK3dh
c21Mb2FkT3Aoc2ltZF9sb2FkX3NwbGF0MzIsIFdhc21TaW1kTG9hZFNwbGF0MzIsIDQsIG1hY3Jv
KG1lbSwgZHN0KSAKK2VuZCkKK3dhc21Mb2FkT3Aoc2ltZF9sb2FkX3NwbGF0NjQsIFdhc21TaW1k
TG9hZFNwbGF0NjQsIDgsIG1hY3JvKG1lbSwgZHN0KSAKK2VuZCkKKworCit3YXNtTG9hZE9wKHNp
bWRfbG9hZF9sYW5lOCwgV2FzbVNpbWRMb2FkTGFuZTgsIDEsIG1hY3JvKG1lbSwgZHN0KSAKK2Vu
ZCkKK3dhc21Mb2FkT3Aoc2ltZF9sb2FkX2xhbmUxNiwgV2FzbVNpbWRMb2FkTGFuZTE2LCAyLCBt
YWNybyhtZW0sIGRzdCkgCitlbmQpCit3YXNtTG9hZE9wKHNpbWRfbG9hZF9sYW5lMzIsIFdhc21T
aW1kTG9hZExhbmUzMiwgNCwgbWFjcm8obWVtLCBkc3QpIAorZW5kKQord2FzbUxvYWRPcChzaW1k
X2xvYWRfbGFuZTY0LCBXYXNtU2ltZExvYWRMYW5lNjQsIDgsIG1hY3JvKG1lbSwgZHN0KSAKK2Vu
ZCkKKword2FzbVN0b3JlT3Aoc2ltZF9zdG9yZV9sYW5lOCwgV2FzbVNpbWRTdG9yZUxhbmU4LCAx
LCBtYWNybyhtZW0sIGRzdCkgCitlbmQpCit3YXNtU3RvcmVPcChzaW1kX3N0b3JlX2xhbmUxNiwg
V2FzbVNpbWRTdG9yZUxhbmUxNiwgMiwgbWFjcm8obWVtLCBkc3QpIAorZW5kKQord2FzbVN0b3Jl
T3Aoc2ltZF9zdG9yZV9sYW5lMzIsIFdhc21TaW1kU3RvcmVMYW5lMzIsIDQsIG1hY3JvKG1lbSwg
ZHN0KSAKK2VuZCkKK3dhc21TdG9yZU9wKHNpbWRfc3RvcmVfbGFuZTY0LCBXYXNtU2ltZFN0b3Jl
TGFuZTY0LCA4LCBtYWNybyhtZW0sIGRzdCkgCitlbmQpCisKK3dhc21Mb2FkT3Aoc2ltZF9sb2Fk
X2V4dGVuZF84dSwgV2FzbVNpbWRMb2FkRXh0ZW5kOFUsIDgsIG1hY3JvKG1lbSwgZHN0KQorZW5k
KQord2FzbUxvYWRPcChzaW1kX2xvYWRfZXh0ZW5kXzhzLCBXYXNtU2ltZExvYWRFeHRlbmQ4Uywg
OCwgbWFjcm8obWVtLCBkc3QpCitlbmQpCit3YXNtTG9hZE9wKHNpbWRfbG9hZF9leHRlbmRfMTZ1
LCBXYXNtU2ltZExvYWRFeHRlbmQxNlUsIDgsIG1hY3JvKG1lbSwgZHN0KQorZW5kKQord2FzbUxv
YWRPcChzaW1kX2xvYWRfZXh0ZW5kXzE2cywgV2FzbVNpbWRMb2FkRXh0ZW5kMTZTLCA4LCBtYWNy
byhtZW0sIGRzdCkKK2VuZCkKK3dhc21Mb2FkT3Aoc2ltZF9sb2FkX2V4dGVuZF8zMnUsIFdhc21T
aW1kTG9hZEV4dGVuZDMyVSwgOCwgbWFjcm8obWVtLCBkc3QpCitlbmQpCit3YXNtTG9hZE9wKHNp
bWRfbG9hZF9leHRlbmRfMzJzLCBXYXNtU2ltZExvYWRFeHRlbmQzMlMsIDgsIG1hY3JvKG1lbSwg
ZHN0KQorZW5kKQorCit3YXNtTG9hZE9wKHNpbWRfbG9hZF9wYWQzMiwgV2FzbVNpbWRMb2FkUGFk
MzIsIDgsIG1hY3JvKG1lbSwgZHN0KQorZW5kKQord2FzbUxvYWRPcChzaW1kX2xvYWRfcGFkNjQs
IFdhc21TaW1kTG9hZFBhZDY0LCA4LCBtYWNybyhtZW0sIGRzdCkKK2VuZCkKKword2FzbU9wKHNp
bWRfYW55X3RydWVfdjEyOCwgV2FzbVNpbWRBbnlUcnVlVjEyOCwgbWFjcm8oY3R4KQorZW5kKQor
Cit3YXNtT3Aoc2ltZF9hbGxfdHJ1ZV9pOHgxNiwgV2FzbVNpbWRBbGxUcnVlSTh4MTYsIG1hY3Jv
KGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX2FsbF90cnVlX2kxNng4LCBXYXNtU2ltZEFsbFRydWVJ
MTZ4OCwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfYWxsX3RydWVfaTMyeDQsIFdhc21T
aW1kQWxsVHJ1ZUkzMng0LCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9hbGxfdHJ1ZV9p
NjR4MiwgV2FzbVNpbWRBbGxUcnVlSTY0eDIsIG1hY3JvKGN0eCkKK2VuZCkKKword2FzbU9wKHNp
bWRfYml0bWFza19pOHgxNiwgV2FzbVNpbWRCaXRtYXNrSTh4MTYsIG1hY3JvKGN0eCkKK2VuZCkK
K3dhc21PcChzaW1kX2JpdG1hc2tfaTE2eDgsIFdhc21TaW1kQml0bWFza0kxNng4LCBtYWNybyhj
dHgpCitlbmQpCit3YXNtT3Aoc2ltZF9iaXRtYXNrX2kzMng0LCBXYXNtU2ltZEJpdG1hc2tJMzJ4
NCwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfYml0bWFza19pNjR4MiwgV2FzbVNpbWRC
aXRtYXNrSTY0eDIsIG1hY3JvKGN0eCkKK2VuZCkKKword2FzbU9wKHNpbWRfZXh0YWRkX3BhaXJ3
aXNlX2kxNng4X3UsIFdhc21TaW1kRXh0YWRkUGFpcndpc2VJMTZ4OFUsIG1hY3JvKGN0eCkKK2Vu
ZCkKK3dhc21PcChzaW1kX2V4dGFkZF9wYWlyd2lzZV9pMTZ4OF9zLCBXYXNtU2ltZEV4dGFkZFBh
aXJ3aXNlSTE2eDhTLCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Aoc2ltZF9leHRhZGRfcGFpcndp
c2VfaTMyeDRfdSwgV2FzbVNpbWRFeHRhZGRQYWlyd2lzZUkzMng0VSwgbWFjcm8oY3R4KQorZW5k
KQord2FzbU9wKHNpbWRfZXh0YWRkX3BhaXJ3aXNlX2kzMng0X3MsIFdhc21TaW1kRXh0YWRkUGFp
cndpc2VJMzJ4NFMsIG1hY3JvKGN0eCkKK2VuZCkKKword2FzbU9wKHNpbWRfYXZnX3JvdW5kX2k4
eDE2LCBXYXNtU2ltZEF2Z1JvdW5kSTh4MTYsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1k
X2F2Z19yb3VuZF9pMTZ4OCwgV2FzbVNpbWRBdmdSb3VuZEkxNng4LCBtYWNybyhjdHgpCitlbmQp
CisKK3dhc21PcChzaW1kX2RvdF9wcm9kdWN0X2kzMng0LCBXYXNtU2ltZERvdFByb2R1Y3RJMzJ4
NCwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfbXVsX3NhdF9pMTZ4OCwgV2FzbVNpbWRN
dWxTYXRJMTZ4OCwgbWFjcm8oY3R4KQorZW5kKQord2FzbU9wKHNpbWRfc3dpenpsZV9pOHgxNiwg
V2FzbVNpbWRTd2l6emxlSTh4MTYsIG1hY3JvKGN0eCkKK2VuZCkKK3dhc21PcChzaW1kX3NodWZm
bGVfaTE2eDgsIFdhc21TaW1kU2h1ZmZsZUkxNng4LCBtYWNybyhjdHgpCitlbmQpCit3YXNtT3Ao
c2ltZF9iaXR3aXNlX3NlbGVjdF92MTI4LCBXYXNtU2ltZEJpdHdpc2VTZWxlY3RWMTI4LCBtYWNy
byhjdHgpCitlbmQpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgppbmRleCBkYjZmZjY4MzlkNzYuLjRjY2ZjMGExYjg1
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIKQEAgLTEwMiw2
ICsxMDIsOCBAQCBkZWYgYXJtNjRGUFJOYW1lKG5hbWUsIGtpbmQpCiAgICAgd2hlbiA6ZmxvYXQK
ICAgICAgICAgInMiICsgbmFtZVsxLi4tMV0KICAgICB3aGVuIDp2ZWN0b3IKKyAgICAgICAgInEi
ICsgbmFtZVsxLi4tMV0KKyAgICB3aGVuIDp2ZWN0b3Jfc3VmZml4ZWQKICAgICAgICAgInYiICsg
bmFtZVsxLi4tMV0KICAgICBlbHNlCiAgICAgICAgIHJhaXNlICJiYWQgRlBSIGtpbmQgI3traW5k
fSIKQEAgLTE3Nyw2ICsxNzksMTcgQEAgY2xhc3MgUmVnaXN0ZXJJRAogICAgICAgICAgICAgcmFp
c2UgIkJhZCByZWdpc3RlciBuYW1lICN7QG5hbWV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCiAg
ICAgICAgIGVuZAogICAgIGVuZAorICAgIAorICAgIGRlZiBhcm02NE9wZXJhbmRTdWZmaXhlZCgp
CisgICAgICAgIGJhc2UgPSBzZWxmLmFybTY0T3BlcmFuZChAc3VmZml4X2tpbmQpCisgICAgICAg
IGJhc2UgKyBAc3VmZml4CisgICAgZW5kCisgICAgCisgICAgZGVmIHdpdGhTdWZmaXgoc3VmZml4
X2tpbmQsIHN1ZmZpeCkKKyAgICAgICAgQHN1ZmZpeF9raW5kID0gc3VmZml4X2tpbmQKKyAgICAg
ICAgQHN1ZmZpeCA9IHN1ZmZpeC5lbXB0eT8gPyAiIiA6ICIuI3tzdWZmaXh9IgorICAgICAgICBz
ZWxmCisgICAgZW5kCiBlbmQKIAogY2xhc3MgRlBSZWdpc3RlcklECkBAIC0yMTcsMTIgKzIzMCw0
MyBAQCBjbGFzcyBGUFJlZ2lzdGVySUQKICAgICAgICAgZWxzZSAiQmFkIHJlZ2lzdGVyIG5hbWUg
I3tAbmFtZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKICAgICAgICAgZW5kCiAgICAgZW5kCisg
ICAgCisgICAgZGVmIGFybTY0T3BlcmFuZFN1ZmZpeGVkKCkKKyAgICAgICAgYmFzZSA9IHNlbGYu
YXJtNjRPcGVyYW5kKEBzdWZmaXhfa2luZCkKKyAgICAgICAgaW5kZXggPSBAaW5kZXggPT0gOm5v
bmUgPyAiIiA6ICIgWyAje0BpbmRleC5hcm02NEluZGV4KCl9IF0iCisgICAgICAgIGJhc2UgKyBA
c3VmZml4ICsgaW5kZXgKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgd2l0aFN1ZmZpeChzdWZmaXhf
a2luZCwgc3VmZml4KQorICAgICAgICBAc3VmZml4X2tpbmQgPSBzdWZmaXhfa2luZAorICAgICAg
ICBAc3VmZml4ID0gc3VmZml4LmVtcHR5PyA/ICIiIDogIi4je3N1ZmZpeH0iCisgICAgICAgIEBp
bmRleCA9IDpub25lCisgICAgICAgIHNlbGYKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgd2l0aElu
ZGV4KGluZGV4KQorICAgICAgICByYWlzZSB1bmxlc3MgaW5kZXguaXNfYT8gSW1tZWRpYXRlCisg
ICAgICAgIEBpbmRleCA9IGluZGV4CisgICAgICAgIHNlbGYKKyAgICBlbmQKIGVuZAogCiBjbGFz
cyBJbW1lZGlhdGUKICAgICBkZWYgYXJtNjRPcGVyYW5kKGtpbmQpCiAgICAgICAgICJcIyN7dmFs
dWV9IgogICAgIGVuZAorICAgIAorICAgIGRlZiBhcm02NE9wZXJhbmRTdWZmaXhlZCgpCisgICAg
ICAgICJcIyN7dmFsdWV9IgorICAgIGVuZAorICAgIAorICAgIGRlZiBhcm02NEluZGV4KCkKKyAg
ICAgICAgIiN7dmFsdWV9IgorICAgIGVuZAorICAgIAorICAgIGRlZiB3aXRoU3VmZml4KF8sIF8p
CisgICAgICAgIHNlbGYKKyAgICBlbmQKIGVuZAogCiBjbGFzcyBBZGRyZXNzCkBAIC0zMDcsNyAr
MzUxLDcgQEAgZGVmIGFybTY0TG93ZXJMYWJlbFJlZmVyZW5jZXMobGlzdCkKICAgICAgICAgfCBu
b2RlIHwKICAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgY2Fz
ZSBub2RlLm9wY29kZQotICAgICAgICAgICAgd2hlbiAibG9hZGkiLCAibG9hZGlzIiwgImxvYWRw
IiwgImxvYWRxIiwgImxvYWRiIiwgImxvYWRic2kiLCAibG9hZGJzcSIsICJsb2FkaCIsICJsb2Fk
aHNpIiwgImxvYWRoc3EiLCAibGVhcCIKKyAgICAgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRp
cyIsICJsb2FkcCIsICJsb2FkcSIsICJsb2FkYiIsICJsb2FkYnNpIiwgImxvYWRic3EiLCAibG9h
ZGgiLCAibG9hZGhzaSIsICJsb2FkaHNxIiwgImxlYXAiLCAibG9hZHYiCiAgICAgICAgICAgICAg
ICAgbGFiZWxSZWYgPSBub2RlLm9wZXJhbmRzWzBdCiAgICAgICAgICAgICAgICAgaWYgbGFiZWxS
ZWYuaXNfYT8gTGFiZWxSZWZlcmVuY2UKICAgICAgICAgICAgICAgICAgICAgZGVzdCA9IG5vZGUu
b3BlcmFuZHNbMV0KQEAgLTM4OSw3ICs0MzMsNyBAQCBjbGFzcyBTZXF1ZW5jZQogICAgICAgICAg
ICAgd2hlbiAibG9hZHAiLCAic3RvcmVwIiwgImxvYWRxIiwgInN0b3JlcSIsICJsb2FkZCIsICJz
dG9yZWQiLCAibHNoaWZ0cCIsICJsc2hpZnRxIiwgIm5lZ3AiLCAibmVncSIsICJyc2hpZnRwIiwg
InJzaGlmdHEiLAogICAgICAgICAgICAgICAgICJ1cnNoaWZ0cCIsICJ1cnNoaWZ0cSIsICJhZGRw
IiwgImFkZHEiLCAibXVscCIsICJtdWxxIiwgImFuZHAiLCAiYW5kcSIsICJvcnAiLCAib3JxIiwg
InN1YnAiLCAic3VicSIsICJ4b3JwIiwgInhvcnEiLCAiYWRkZCIsCiAgICAgICAgICAgICAgICAg
ImRpdmQiLCAic3ViZCIsICJtdWxkIiwgInNxcnRkIiwgL15icC8sIC9eYnEvLCAvXmJ0cC8sIC9e
YnRxLywgL15jcC8sIC9eY3EvLCAvXnRwLywgL150cS8sIC9eYmQvLAotICAgICAgICAgICAgICAg
ICJqbXAiLCAiY2FsbCIsICJsZWFwIiwgImxlYXEiLCAibG9hZGxpbmthY3FxIiwgInN0b3JlY29u
ZHJlbHEiLCAvXmF0b21pY1thLXpdK3EkLworICAgICAgICAgICAgICAgICJqbXAiLCAiY2FsbCIs
ICJsZWFwIiwgImxlYXEiLCAibG9hZGxpbmthY3FxIiwgInN0b3JlY29uZHJlbHEiLCAvXmF0b21p
Y1thLXpdK3EkLywgImxvYWR2IiwgInN0b3JldiIKICAgICAgICAgICAgICAgICBzaXplID0gJGN1
cnJlbnRTZXR0aW5nc1siQUREUkVTUzY0Il0gPyA4IDogNAogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIHJhaXNlICJCYWQgaW5zdHJ1Y3Rpb24gI3tub2RlLm9wY29kZX0gZm9yIGhl
YXAgYWNjZXNzIGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfTogI3tub2RlLmR1bXB9IgpAQCAt
NTgzLDcgKzYyNyw3IEBAIGRlZiBlbWl0QVJNNjRUQUNXaXRoT3BlcmFuZFN1ZmZpeChvcGNvZGUs
IG9wZXJhbmRzLCBraW5kKQogICAgIHNpemUgPSBraW5kID09IDpmbG9hdCA/IDggOiAxNgogICAg
IG9wZXJhbmRzID0gb3BlcmFuZHMubWFwIHsgfG9wZXJhbmR8CiAgICAgICAgIHJhaXNlIHVubGVz
cyBvcGVyYW5kLmlzX2E/IEZQUmVnaXN0ZXJJRAotICAgICAgICAiI3tvcGVyYW5kLmFybTY0T3Bl
cmFuZCg6dmVjdG9yKX0uI3tzaXplfWIiCisgICAgICAgICIje29wZXJhbmQuYXJtNjRPcGVyYW5k
KDp2ZWN0b3Jfc3VmZml4ZWQpfS4je3NpemV9YiIKICAgICB9CiAgICAgaWYgb3BlcmFuZHMubGVu
Z3RoID09IDIKICAgICAgIG9wZXJhbmRzID0gW29wZXJhbmRzWzFdLCBvcGVyYW5kc1sxXSwgb3Bl
cmFuZHNbMF1dCkBAIC01OTQsNiArNjM4LDIzIEBAIGRlZiBlbWl0QVJNNjRUQUNXaXRoT3BlcmFu
ZFN1ZmZpeChvcGNvZGUsIG9wZXJhbmRzLCBraW5kKQogICAgICRhc20ucHV0cyAiI3tvcGNvZGV9
ICN7b3BlcmFuZHMuam9pbigiLCAiKX0iCiBlbmQKIAorZGVmIGVtaXRBUk02NFdpdGhPcGVyYW5k
U3VmZml4ZXMob3Bjb2RlLCAqb3BlcmFuZHMpCisgICAgb3BlcmFuZHMgPSBvcGVyYW5kcy5tYXAg
eyB8b3BlcmFuZHwKKyAgICAgICAgaWYgb3BlcmFuZC5raW5kX29mPyBBcnJheQorICAgICAgICAg
ICAgInsgIiArIChvcGVyYW5kLm1hcCB7IHwgbyB8IG8uYXJtNjRPcGVyYW5kU3VmZml4ZWQoKSB9
KS5qb2luKCIsIikgKyAiIH0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG9wZXJhbmQuYXJt
NjRPcGVyYW5kU3VmZml4ZWQoKQorICAgICAgICBlbmQKKyAgICB9CisgICAgaWYgb3BlcmFuZHMu
bGVuZ3RoID09IDIKKyAgICAgIG9wZXJhbmRzID0gW29wZXJhbmRzWzFdLCBvcGVyYW5kc1swXV0K
KyAgICBlbHNlCisgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMubGVuZ3RoID09IDMKKyAgICAg
IG9wZXJhbmRzID0gW29wZXJhbmRzWzJdLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV1dCisgICAg
ZW5kCisgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kcy5qb2luKCIsICIpfSIKK2Vu
ZAorCiBkZWYgZW1pdEFSTTY0KG9wY29kZSwgb3BlcmFuZHMsIGtpbmQpCiAgICAgJGFzbS5wdXRz
ICIje29wY29kZX0gI3thcm02NEZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcywga2luZCl9IgogZW5k
CkBAIC03ODksNiArODUwLDggQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGVtaXRB
Uk02NFVuZmxpcHBlZCgic3RyIiwgb3BlcmFuZHMsIDpwdHIpCiAgICAgICAgIHdoZW4gInN0b3Jl
cSIKICAgICAgICAgICAgIGVtaXRBUk02NFVuZmxpcHBlZCgic3RyIiwgb3BlcmFuZHMsIDpxdWFk
KQorICAgICAgICB3aGVuICJzdG9yZXYiCisgICAgICAgICAgICBlbWl0QVJNNjRVbmZsaXBwZWQo
InN0ciIsIG9wZXJhbmRzLCA6dmVjdG9yKQogICAgICAgICB3aGVuICJsb2FkYiIKICAgICAgICAg
ICAgIGVtaXRBUk02NEFjY2VzcygibGRyYiIsICJsZHVyYiIsIG9wZXJhbmRzWzFdLCBvcGVyYW5k
c1swXSwgOndvcmQpCiAgICAgICAgIHdoZW4gImxvYWRic2kiCkBAIC04MTksNiArODgyLDE4IEBA
IGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBlbWl0QVJNNjRUQUMoImZtdWwiLCBvcGVy
YW5kcywgOmRvdWJsZSkKICAgICAgICAgd2hlbiAic3FydGQiCiAgICAgICAgICAgICBlbWl0QVJN
NjQoImZzcXJ0Iiwgb3BlcmFuZHMsIDpkb3VibGUpCisgICAgICAgIHdoZW4gImxvYWR2IgorICAg
ICAgICAgICAgZW1pdEFSTTY0QWNjZXNzKCJsZHIiLCAibGR1ciIsIG9wZXJhbmRzWzFdLCBvcGVy
YW5kc1swXSwgOnZlY3RvcikKKyAgICAgICAgd2hlbiAic3BsYXRfbGFuZV9ieXRlIgorICAgICAg
ICAgICAgZW1pdEFSTTY0V2l0aE9wZXJhbmRTdWZmaXhlcygiZHVwIiwgb3BlcmFuZHNbMF0ud2l0
aFN1ZmZpeCg6d29yZCwgIiIpLCBvcGVyYW5kc1sxXS53aXRoU3VmZml4KDp2ZWN0b3Jfc3VmZml4
ZWQsICIxNmIiKSkKKyAgICAgICAgd2hlbiAic3BsYXRfbGFuZV9pbnQiCisgICAgICAgICAgICBl
bWl0QVJNNjRXaXRoT3BlcmFuZFN1ZmZpeGVzKCJkdXAiLCBvcGVyYW5kc1swXS53aXRoU3VmZml4
KDp3b3JkLCAiIiksIG9wZXJhbmRzWzFdLndpdGhTdWZmaXgoOnZlY3Rvcl9zdWZmaXhlZCwgIjRz
IikpCisgICAgICAgIHdoZW4gInN3aXp6bGVfYnl0ZSIKKyAgICAgICAgICAgIGVtaXRBUk02NFdp
dGhPcGVyYW5kU3VmZml4ZXMoInRibCIsIFsgb3BlcmFuZHNbMV0ud2l0aFN1ZmZpeCg6dmVjdG9y
X3N1ZmZpeGVkLCAiMTZiIikgXSwgb3BlcmFuZHNbMF0ud2l0aFN1ZmZpeCg6dmVjdG9yX3N1ZmZp
eGVkLCAiMTZiIiksIG9wZXJhbmRzWzFdLndpdGhTdWZmaXgoOnZlY3Rvcl9zdWZmaXhlZCwgIjE2
YiIpKQorICAgICAgICB3aGVuICJleHRyYWN0X2xhbmVfYnl0ZSIKKyAgICAgICAgICAgIGVtaXRB
Uk02NFdpdGhPcGVyYW5kU3VmZml4ZXMoInVtb3YiLCBvcGVyYW5kc1sxXS53aXRoU3VmZml4KDp2
ZWN0b3Jfc3VmZml4ZWQsICJCIikud2l0aEluZGV4KG9wZXJhbmRzWzBdKSwgb3BlcmFuZHNbMl0u
d2l0aFN1ZmZpeCg6d29yZCwgIiIpKQorICAgICAgICB3aGVuICJleHRyYWN0X2xhbmVfaW50Igor
ICAgICAgICAgICAgZW1pdEFSTTY0V2l0aE9wZXJhbmRTdWZmaXhlcygidW1vdiIsIG9wZXJhbmRz
WzFdLndpdGhTdWZmaXgoOnZlY3Rvcl9zdWZmaXhlZCwgIlMiKS53aXRoSW5kZXgob3BlcmFuZHNb
MF0pLCBvcGVyYW5kc1syXS53aXRoU3VmZml4KDp3b3JkLCAiIikpCiAgICAgICAgIHdoZW4gImJk
ZXEiCiAgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goImZjbXAiLCBvcGVyYW5kcywgOmRvdWJs
ZSwgImIuZXEiKQogICAgICAgICB3aGVuICJiZG5lcSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgppbmRleCA1NGIwMjdmM2RhMDEuLjIxN2I3
NjYzNmQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5z
dHJ1Y3Rpb25zLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3Ry
dWN0aW9ucy5yYgpAQCAtNzIsNiArNzIsMTMgQEAgTUFDUk9fSU5TVFJVQ1RJT05TID0KICAgICAg
InN0b3JlYiIsCiAgICAgICJsb2FkZiIsCiAgICAgICJsb2FkZCIsCisgICAgICJsb2FkdiIsCisg
ICAgICJleHRyYWN0X2xhbmVfYnl0ZSIsCisgICAgICJleHRyYWN0X2xhbmVfaW50IiwKKyAgICAg
InN3aXp6bGVfYnl0ZSIsCisgICAgICJyZXBsYWNlX2xhbmVfYnl0ZSIsCisgICAgICJzcGxhdF9s
YW5lX2J5dGUiLAorICAgICAic3BsYXRfbGFuZV9pbnQiLAogICAgICAibW92ZWQiLAogICAgICAi
c3RvcmVmIiwKICAgICAgInN0b3JlZCIsCkBAIC0yODksNiArMjk2LDcgQEAgTUFDUk9fSU5TVFJV
Q1RJT05TID0KICAgICAgImNxbHQiLAogICAgICAiY3FsdGVxIiwKICAgICAgInN0b3JlcSIsCisg
ICAgICJzdG9yZXYiLAogICAgICAiYnRxcyIsCiAgICAgICJidHF6IiwKICAgICAgImJ0cW56IiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiCmluZGV4IDBmMDcyZTlmZDEx
ZS4uMWEyNzNjYWIzMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9yaXNjLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2Mu
cmIKQEAgLTI1OSw4ICsyNTksMTIgQEAgZGVmIHJpc2NMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc0Rv
dWJsZShsaXN0KQogICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQogICAgICAgICAgICAgd2hl
biAibG9hZGQiCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9k
ZS5jb2RlT3JpZ2luLCAibG9hZGQiLCBbbm9kZS5vcGVyYW5kc1swXS5yaXNjRG91YmxlQWRkcmVz
cyhuZXdMaXN0KSwgbm9kZS5vcGVyYW5kc1sxXV0sIG5vZGUuYW5ub3RhdGlvbikKKyAgICAgICAg
ICAgIHdoZW4gImxvYWR2IgorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KG5vZGUuY29kZU9yaWdpbiwgImxvYWR2IiwgW25vZGUub3BlcmFuZHNbMF0ucmlzY0RvdWJs
ZUFkZHJlc3MobmV3TGlzdCksIG5vZGUub3BlcmFuZHNbMV1dLCBub2RlLmFubm90YXRpb24pCiAg
ICAgICAgICAgICB3aGVuICJzdG9yZWQiCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAic3RvcmVkIiwgW25vZGUub3BlcmFuZHNbMF0s
IG5vZGUub3BlcmFuZHNbMV0ucmlzY0RvdWJsZUFkZHJlc3MobmV3TGlzdCldLCBub2RlLmFubm90
YXRpb24pCisgICAgICAgICAgICB3aGVuICJzdG9yZXYiCisgICAgICAgICAgICAgICAgbmV3TGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAic3RvcmV2IiwgW25vZGUub3Bl
cmFuZHNbMF0sIG5vZGUub3BlcmFuZHNbMV0ucmlzY0RvdWJsZUFkZHJlc3MobmV3TGlzdCldLCBu
b2RlLmFubm90YXRpb24pCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbmV3TGlz
dCA8PCBub2RlCiAgICAgICAgICAgICBlbmQKQEAgLTQzMiw3ICs0MzYsNyBAQCBkZWYgcmlzY0xv
d2VyT3BlcmFuZFRvUmVnaXN0ZXIoaW5zbiwgcHJlTGlzdCwgcG9zdExpc3QsIG9wZXJhbmRJbmRl
eCwgc3VmZml4LCBuZQogICAgIG9wZXJhbmQgPSBpbnNuLm9wZXJhbmRzW29wZXJhbmRJbmRleF0K
ICAgICByZXR1cm4gb3BlcmFuZCB1bmxlc3Mgb3BlcmFuZC5hZGRyZXNzPwogCi0gICAgdG1wID0g
VG1wLm5ldyhpbnNuLmNvZGVPcmlnaW4sIGlmIHN1ZmZpeCA9PSAiZCIgdGhlbiA6ZnByIGVsc2Ug
OmdwciBlbmQpCisgICAgdG1wID0gVG1wLm5ldyhpbnNuLmNvZGVPcmlnaW4sIGlmIHN1ZmZpeCA9
PSAiZCIgb3Igc3VmZml4ID09ICJ2IiB0aGVuIDpmcHIgZWxzZSA6Z3ByIGVuZCkKICAgICBwcmVM
aXN0IDw8IEluc3RydWN0aW9uLm5ldyhpbnNuLmNvZGVPcmlnaW4sICJsb2FkIiArIHN1ZmZpeCwg
W29wZXJhbmQsIHRtcF0pCiAgICAgaWYgbmVlZFN0b3JlCiAgICAgICAgIHBvc3RMaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhpbnNuLmNvZGVPcmlnaW4sICJzdG9yZSIgKyBzdWZmaXgsIFt0bXAsIG9w
ZXJhbmRdKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2
LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCmluZGV4IDk1ZTRj
OWMyZmM3My4uZDM3MWRjZmIyOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS94ODYucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
eDg2LnJiCkBAIC0zMzEsNyArMzMxLDcgQEAgZW5kCiAKIGNsYXNzIEZQUmVnaXN0ZXJJRAogICAg
IGRlZiB4ODZPcGVyYW5kKGtpbmQpCi0gICAgICAgIHJhaXNlIHVubGVzcyBbOmZsb2F0LCA6ZG91
YmxlXS5pbmNsdWRlPyBraW5kCisgICAgICAgIHJhaXNlIHVubGVzcyBbOmZsb2F0LCA6ZG91Ymxl
LCA6dmVjdG9yXS5pbmNsdWRlPyBraW5kCiAgICAgICAgIGNhc2UgbmFtZQogICAgICAgICB3aGVu
ICJmdDAiLCAiZmEwIiwgImZyIiwgIndmYTAiCiAgICAgICAgICAgICByZWdpc3RlcigieG1tMCIp
CkBAIC0xMjMwLDEyICsxMjMwLDMyIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICAk
YXNtLnB1dHMgIm1vdnNzICN7eDg2T3BlcmFuZHMoOmZsb2F0LCA6ZmxvYXQpfSIKICAgICAgICAg
d2hlbiAibG9hZGQiCiAgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnNkICN7eDg2T3BlcmFuZHMo
OmRvdWJsZSwgOmRvdWJsZSl9IgorICAgICAgICB3aGVuICJsb2FkdiIKKyAgICAgICAgICAgICRh
c20ucHV0cyAibW92ZHF1ICN7eDg2T3BlcmFuZHMoOmludCwgOmRvdWJsZSl9IgorICAgICAgICB3
aGVuICJleHRyYWN0X2xhbmVfYnl0ZSIKKyAgICAgICAgICAgICRhc20ucHV0cyAicGV4dHJiICN7
eDg2T3BlcmFuZHMoOmJ5dGUsIDpkb3VibGUsIDppbnQpfSIKKyAgICAgICAgd2hlbiAiZXh0cmFj
dF9sYW5lX2ludCIKKyAgICAgICAgICAgICRhc20ucHV0cyAicGV4dHJkICN7eDg2T3BlcmFuZHMo
OmJ5dGUsIDpkb3VibGUsIDppbnQpfSIKKyAgICAgICAgd2hlbiAic3dpenpsZV9ieXRlIgorICAg
ICAgICAgICAgJGFzbS5wdXRzICJwc2h1ZmIgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91Ymxl
KX0iCisgICAgICAgIHdoZW4gInJlcGxhY2VfbGFuZV9ieXRlIgorICAgICAgICAgICAgJGFzbS5w
dXRzICJwaW5zcmIgI3t4ODZPcGVyYW5kcyg6Ynl0ZSwgOmludCwgOmRvdWJsZSl9IgorICAgICAg
ICB3aGVuICJzcGxhdF9sYW5lX2J5dGUiCisgICAgICAgICAgICAkYXNtLnB1dHMgInB4b3IgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDp2ZWN0b3IpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDp2ZWN0b3IpfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAicGluc3JiICN7Y29uc3QoMCl9LCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OnZlY3Rvcil9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2cGJyb2FkY2FzdGIgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDpmbG9hdCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOnZlY3Rv
cil9IgorICAgICAgICB3aGVuICJzcGxhdF9sYW5lX2ludCIKKyAgICAgICAgICAgICRhc20ucHV0
cyAicHhvciAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOnZlY3Rvcil9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOnZlY3Rvcil9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJwaW5zcmQgI3tj
b25zdCgwKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6dmVjdG9yKX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgInZwYnJvYWRjYXN0
ZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmZsb2F0KX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6dmVjdG9yKX0iCiAgICAgICAgIHdoZW4gIm1vdmVkIgogICAgICAgICAgICAgJGFzbS5w
dXRzICJtb3ZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKICAgICAgICAgd2hl
biAic3RvcmVmIgogICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZzcyAje3g4Nk9wZXJhbmRzKDpm
bG9hdCwgOmZsb2F0KX0iCiAgICAgICAgIHdoZW4gInN0b3JlZCIKICAgICAgICAgICAgICRhc20u
cHV0cyAibW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgICAgIHdo
ZW4gInN0b3JldiIKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92dXBzICN7eDg2T3BlcmFuZHMo
OnZlY3RvciwgOnZlY3Rvcil9IgogICAgICAgICB3aGVuICJhZGRmIgogICAgICAgICAgICAgaGFu
ZGxlWDg2QWRkRlAoOmZsb2F0KQogICAgICAgICB3aGVuICJhZGRkIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggODI1YTJiNjQ4N2ViLi4yNzEwNTI1
ZjE3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApA
QCAtNTUxLDYgKzU1MSw3IEBAIGJvb2wgY2FuVXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCk7CiAg
ICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzLCBmYWxzZSwg
Tm9ybWFsLCAiQWxsb3cgZnVuY3Rpb24gdHlwZXMgZnJvbSB0aGUgd2FzbSB0eXBlZCBmdW5jdGlv
biByZWZlcmVuY2VzIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlFeGNlcHRp
b25zLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0aGUgbmV3IHNlY3Rpb24gYW5kIGluc3RydWN0aW9u
cyBmcm9tIHRoZSB3YXNtIGV4Y2VwdGlvbiBoYW5kbGluZyBzcGVjLiIpIFwKICAgICB2KEJvb2ws
IHVzZVdlYkFzc2VtYmx5QnJhbmNoSGludHMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHRoZSBuZXcg
c2VjdGlvbiBmcm9tIHRoZSB3YXNtIGJyYW5jaCBoaW50aW5nIHNwZWMuIikgXAorICAgIHYoQm9v
bCwgdXNlV2ViQXNzZW1ibHlTSU1ELCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0aGUgbmV3IHNpbWQg
aW5zdHJ1Y3Rpb25zIGFuZCB0eXBlcyBmcm9tIHRoZSB3YXNtIHNpbWQgc3BlYy4iKSBcCiAKIAog
ZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCA5OGVkYjFlZGJlZmIuLjc3OWUwZGRlNWIw
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0
b3IuY3BwCkBAIC0zMjgsOCArMzI4LDkgQEAgcHVibGljOgogICAgIHZvaWQgZmluYWxpemVFbnRy
eXBvaW50cygpOwogCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQXJn
dW1lbnRzKGNvbnN0IFNpZ25hdHVyZSYpOwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIGFkZExvY2FsKFR5cGUsIHVpbnQzMl90KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRMb2NhbChUeXBlLCB1aW50MzJfdCwgdWludDMyX3QpOwogICAgIEV4
cHJlc3Npb25UeXBlIGFkZENvbnN0YW50KFR5cGUsIHVpbnQ2NF90KTsKKyAgICBFeHByZXNzaW9u
VHlwZSBhZGRDb25zdGFudCh2MTI4X3QpOwogICAgIEV4cHJlc3Npb25UeXBlIGFkZENvbnN0YW50
KEJhc2ljQmxvY2sqLCBUeXBlLCB1aW50NjRfdCk7CiAgICAgRXhwcmVzc2lvblR5cGUgYWRkQm90
dG9tKEJhc2ljQmxvY2sqLCBUeXBlKTsKIApAQCAtMzQ4LDggKzM0OSw4IEBAIHB1YmxpYzoKICAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZUNvcHkodW5zaWduZWQs
IHVuc2lnbmVkLCBFeHByZXNzaW9uVHlwZSBkc3RPZmZzZXQsIEV4cHJlc3Npb25UeXBlIHNyY09m
ZnNldCwgRXhwcmVzc2lvblR5cGUgbGVuZ3RoKTsKIAogICAgIC8vIExvY2FscwotICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpOworICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBX
YXNtOjpUeXBlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgV2FzbTo6VHlwZSwgRXhw
cmVzc2lvblR5cGUgdmFsdWUpOwogCiAgICAgLy8gR2xvYmFscwogICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGdldEdsb2JhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5
cGUmIHJlc3VsdCk7CkBAIC0zODQsNiArMzg1LDE4IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRPcChFeHByZXNzaW9uVHlwZSBsZWZ0LCBFeHByZXNz
aW9uVHlwZSByaWdodCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU2VsZWN0KEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwg
RXhwcmVzc2lvblR5cGUgbm9uWmVybywgRXhwcmVzc2lvblR5cGUgemVybywgRXhwcmVzc2lvblR5
cGUmIHJlc3VsdCk7CiAKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRT
aW1kU3BsYXQoU2ltZExhbmUsIEV4cHJlc3Npb25UeXBlIHNjYWxhciwgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU2ltZFNo
dWZmbGUodjEyOF90IGltbSwgRXhwcmVzc2lvblR5cGUgYSwgRXhwcmVzc2lvblR5cGUgYiwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkU2ltZFNoaWZ0KFNpbWRMYW5lT3BlcmF0aW9uLCBTaW1kSW5mbywgRXhwcmVzc2lvblR5
cGUgdiwgRXhwcmVzc2lvblR5cGUgc2hpZnQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFNpbWRFeHRtdWwoU2ltZExhbmVP
cGVyYXRpb24sIFNpbWRJbmZvLCBFeHByZXNzaW9uVHlwZSBsaHMsIEV4cHJlc3Npb25UeXBlIHJo
cywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkU2ltZExvYWQoRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgb2Zm
c2V0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBhZGRTaW1kU3RvcmUoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25U
eXBlIHBvaW50ZXIsIHVpbnQzMl90IG9mZnNldCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkU2ltZExvYWRTcGxhdChTaW1kTGFuZU9wZXJhdGlvbiwgRXhwcmVzc2lv
blR5cGUgcG9pbnRlciwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
KyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRTaW1kTG9hZExhbmUoU2lt
ZExhbmVPcGVyYXRpb24sIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZl
Y3RvciwgdWludDMyX3Qgb2Zmc2V0LCB1aW50OF90IGxhbmVJbmRleCwgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU2ltZFN0
b3JlTGFuZShTaW1kTGFuZU9wZXJhdGlvbiwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVz
c2lvblR5cGUgdmVjdG9yLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQ4X3QgbGFuZUluZGV4KTsKKyAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRTaW1kTG9hZEV4dGVuZChTaW1k
TGFuZU9wZXJhdGlvbiwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgb2Zmc2V0LCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZGRTaW1kTG9hZFBhZChTaW1kTGFuZU9wZXJhdGlvbiwgRXhwcmVzc2lvblR5cGUgcG9p
bnRlciwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKwogICAgIC8v
IENvbnRyb2wgZmxvdwogICAgIENvbnRyb2xEYXRhIFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUb3BM
ZXZlbChCbG9ja1NpZ25hdHVyZSk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkQmxvY2soQmxvY2tTaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29udHJv
bFR5cGUmIG5ld0Jsb2NrLCBTdGFjayYgbmV3U3RhY2spOwpAQCAtMzk5LDcgKzQxMiw3IEBAIHB1
YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYXRjaEFsbFRv
VW5yZWFjaGFibGUoQ29udHJvbFR5cGUmKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGREZWxlZ2F0ZShDb250cm9sVHlwZSYsIENvbnRyb2xUeXBlJik7CiAgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkRGVsZWdhdGVUb1VucmVhY2hhYmxlKENv
bnRyb2xUeXBlJiwgQ29udHJvbFR5cGUmKTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRUaHJvdyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgVmVjdG9yPEV4cHJlc3Np
b25UeXBlPiYgYXJncywgU3RhY2smKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZGRUaHJvdyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgU3RhY2smIGFyZ3MpOwogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJldGhyb3codW5zaWduZWQsIENv
bnRyb2xUeXBlJik7CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRS
ZXR1cm4oY29uc3QgQ29udHJvbERhdGEmLCBjb25zdCBTdGFjayYgcmV0dXJuVmFsdWVzKTsKQEAg
LTQyMiwxMSArNDM1LDIzIEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0IGFkZEludGVnZXJT
dWIoQjM6OkFpcjo6T3Bjb2RlLCBFeHByZXNzaW9uVHlwZSBsaHMsIEV4cHJlc3Npb25UeXBlIHJo
cywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBhZGRGbG9hdGlu
Z1BvaW50QWJzKEIzOjpBaXI6Ok9wY29kZSwgRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpOwogICAgIFBhcnRpYWxSZXN1bHQgYWRkRmxvYXRpbmdQb2ludEJpbk9w
KFR5cGUsIEIzOjpBaXI6Ok9wY29kZSwgRXhwcmVzc2lvblR5cGUgbGhzLCBFeHByZXNzaW9uVHlw
ZSByaHMsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIAorICAgIC8vIFNpbWQKKyAgICB0
ZW1wbGF0ZTxFeHRTaW1kT3BUeXBlPgorICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZFNpbWRPcChFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUmKTsKKyAgICB0ZW1w
bGF0ZTxFeHRTaW1kT3BUeXBlPgorICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZFNpbWRPcChFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBl
Jik7CisgICAgdGVtcGxhdGU8RXh0U2ltZE9wVHlwZT4KKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRTaW1kT3AoRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBF
eHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUmKTsKKyAgICB0ZW1wbGF0ZTxFeHRTaW1kT3BU
eXBlPgorICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFNpbWRPcCh1aW50
OF90LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUmKTsKKyAgICB0ZW1wbGF0ZTxFeHRT
aW1kT3BUeXBlPgorICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFNpbWRP
cCh1aW50OF90LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBl
Jik7CiAKICAgICB2b2lkIGR1bXAoY29uc3QgQ29udHJvbFN0YWNrJiwgY29uc3QgU3RhY2sqIGV4
cHJlc3Npb25TdGFjayk7CiAgICAgdm9pZCBzZXRQYXJzZXIoRnVuY3Rpb25QYXJzZXI8QWlySVJH
ZW5lcmF0b3I+KiBwYXJzZXIpIHsgbV9wYXJzZXIgPSBwYXJzZXI7IH07CiAgICAgdm9pZCBkaWRG
aW5pc2hQYXJzaW5nTG9jYWxzKCkgeyB9Ci0gICAgdm9pZCBkaWRQb3BWYWx1ZUZyb21TdGFjaygp
IHsgfQorICAgIHZvaWQgZGlkUG9wVmFsdWVGcm9tU3RhY2soV2FzbTo6VHlwZSkgeyB9CiAKICAg
ICBUbXAgZW1pdENhdGNoSW1wbChDYXRjaEtpbmQsIENvbnRyb2xUeXBlJiwgdW5zaWduZWQgZXhj
ZXB0aW9uSW5kZXggPSAwKTsKICAgICB0ZW1wbGF0ZSA8c2l6ZV90IGlubGluZUNhcGFjaXR5PgpA
QCAtNTEzLDYgKzUzOCw3IEBAIHByaXZhdGU6CiAgICAgVHlwZWRUbXAgZ1JlZihUeXBlIHR5cGUp
IHsgcmV0dXJuIHsgbmV3VG1wKEIzOjpHUCksIHR5cGUgfTsgfQogICAgIFR5cGVkVG1wIGYzMigp
IHsgcmV0dXJuIHsgbmV3VG1wKEIzOjpGUCksIFR5cGVzOjpGMzIgfTsgfQogICAgIFR5cGVkVG1w
IGY2NCgpIHsgcmV0dXJuIHsgbmV3VG1wKEIzOjpGUCksIFR5cGVzOjpGNjQgfTsgfQorICAgIFR5
cGVkVG1wIHYxMjgoKSB7IHJldHVybiB7IG5ld1RtcChCMzo6RlApLCBUeXBlczo6VjEyOCB9OyB9
CiAKICAgICBUeXBlZFRtcCB0bXBGb3JUeXBlKFR5cGUgdHlwZSkKICAgICB7CkBAIC01MzIsNiAr
NTU4LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBmMzIoKTsKICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RjY0OgogICAgICAgICAgICAgcmV0dXJuIGY2NCgpOworICAgICAgICBjYXNl
IFR5cGVLaW5kOjpWMTI4OgorICAgICAgICAgICAgcmV0dXJuIHYxMjgoKTsKICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIGRlZmF1
bHQ6CkBAIC02MjgsNyArNjU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIHZhbGlkYXRp
b24uIFdlIHNob3VsZCBhYnN0cmNhdCBQYXRjaCBlbm91Z2ggc28gVmFsdWVSZXAncyBkb24ndCBu
ZWVkIHRvIGJlCiAgICAgICAgICAgICAvLyBiYWNrZWQgYnkgVmFsdWVzLgogICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA0MAotICAgICAg
ICAgICAgQjM6OlZhbHVlKiBkdW1teVZhbHVlID0gbV9wcm9jLmFkZENvbnN0YW50KEIzOjpPcmln
aW4oKSwgdG1wLnRtcC5pc0dQKCkgPyBCMzo6SW50NjQgOiBCMzo6RG91YmxlLCAwKTsKKyAgICAg
ICAgICAgIEIzOjpWYWx1ZSogZHVtbXlWYWx1ZSA9IG1fcHJvYy5hZGRDb25zdGFudChCMzo6T3Jp
Z2luKCksIHRtcC50bXAuaXNHUCgpID8gQjM6OkludDY0IDogQjM6OlYxMjgsIDApOwogICAgICAg
ICAgICAgcGF0Y2gtPmFwcGVuZChkdW1teVZhbHVlLCB0bXAucmVwKTsKICAgICAgICAgICAgIHN3
aXRjaCAodG1wLnJlcC5raW5kKCkpIHsKICAgICAgICAgICAgIC8vIEIzOjpWYWx1ZSBwcm9wYWdh
dGVzIChMYXRlKUNvbGRBbnkgaW5mb3JtYXRpb24gYW5kIGxhdGVyIEFpciB3aWxsIGFsbG9jYXRl
IGFwcHJvcHJpYXRlIHN0YWNrLgpAQCAtNjM5LDEyICs2NjcsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQjM6OlZhbHVlUmVwOjpSZWdpc3Rl
cjoKICAgICAgICAgICAgICAgICBwYXRjaC0+ZWFybHlDbG9iYmVyZWQoKS5jbGVhcih0bXAucmVw
LnJlZygpKTsKLSAgICAgICAgICAgICAgICBhcHBlbmQoYmFzaWNCbG9jaywgdG1wLnRtcC5pc0dQ
KCkgPyBNb3ZlIDogTW92ZURvdWJsZSwgdG1wLnRtcCwgdG1wLnJlcC5yZWcoKSk7CisgICAgICAg
ICAgICAgICAgYXBwZW5kKGJhc2ljQmxvY2ssIHRtcC50bXAuaXNHUCgpID8gTW92ZSA6IE1vdmVW
ZWN0b3IsIHRtcC50bXAsIHRtcC5yZXAucmVnKCkpOwogICAgICAgICAgICAgICAgIGluc3QuYXJn
cy5hcHBlbmQoVG1wKHRtcC5yZXAucmVnKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQjM6OlZhbHVlUmVwOjpTdGFja0FyZ3VtZW50OiB7CiAgICAgICAgICAg
ICAgICAgQXJnIGFyZyA9IEFyZzo6Y2FsbEFyZyh0bXAucmVwLm9mZnNldEZyb21TUCgpKTsKLSAg
ICAgICAgICAgICAgICBhcHBlbmQoYmFzaWNCbG9jaywgdG1wLnRtcC5pc0dQKCkgPyBNb3ZlIDog
TW92ZURvdWJsZSwgdG1wLnRtcCwgYXJnKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoYmFzaWNC
bG9jaywgdG1wLnRtcC5pc0dQKCkgPyBNb3ZlIDogTW92ZVZlY3RvciwgdG1wLnRtcCwgYXJnKTsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoYXJnLmNhblJlcHJlc2VudChwYXRjaC0+Y2hpbGQoaSkt
PnR5cGUoKSkpOwogICAgICAgICAgICAgICAgIGluc3QuYXJncy5hcHBlbmQoYXJnKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKQEAgLTc2NywyMSArNzk1LDQ1IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm4gTW92ZUZsb2F0OwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6CiAgICAg
ICAgICAgICByZXR1cm4gTW92ZURvdWJsZTsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VjEyODoK
KyAgICAgICAgICAgIHJldHVybiBNb3ZlVmVjdG9yOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHZvaWQgZW1pdExvYWQoQjM6OkFpcjo6T3Bjb2RlIG9wLCBCMzo6VHlwZSB0eXBlLCBUbXAg
YmFzZSwgc2l6ZV90IG9mZnNldCwgVG1wIHJlc3VsdCkKKyAgICBCMzo6QWlyOjpBcmcgbWF0ZXJp
YWxpemVBZGRyQXJnKFRtcCBiYXNlLCBzaXplX3Qgb2Zmc2V0LCBCMzo6V2lkdGggd2lkdGgpCiAg
ICAgewotICAgICAgICBpZiAoQXJnOjppc1ZhbGlkQWRkckZvcm0ob2Zmc2V0LCBCMzo6d2lkdGhG
b3JUeXBlKHR5cGUpKSkKLSAgICAgICAgICAgIGFwcGVuZChvcCwgQXJnOjphZGRyKGJhc2UsIG9m
ZnNldCksIHJlc3VsdCk7CisgICAgICAgIGlmIChBcmc6OmlzVmFsaWRBZGRyRm9ybShvZmZzZXQs
IHdpZHRoKSkKKyAgICAgICAgICAgIHJldHVybiBBcmc6OmFkZHIoYmFzZSwgb2Zmc2V0KTsKKwor
ICAgICAgICBhdXRvIHRlbXAgPSBnNjQoKTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6Ymln
SW1tKG9mZnNldCksIHRlbXApOworICAgICAgICBhcHBlbmQoQWRkNjQsIHRlbXAsIGJhc2UsIHRl
bXApOworICAgICAgICByZXR1cm4gQXJnOjphZGRyKHRlbXApOworICAgIH0KKworICAgIEIzOjpB
aXI6OkFyZyBtYXRlcmlhbGl6ZVNpbXBsZUFkZHJBcmcoVG1wIGJhc2UsIHNpemVfdCBvZmZzZXQp
CisgICAgeworICAgICAgICBhdXRvIHRlbXAgPSBnNjQoKTsKKyAgICAgICAgaWYgKEFyZzo6aXNW
YWxpZEltbUZvcm0ob2Zmc2V0KSkKKyAgICAgICAgICAgIGFwcGVuZChBZGQ2NCwgQXJnOjppbW0o
b2Zmc2V0KSwgYmFzZSwgdGVtcCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgYXV0byB0
ZW1wMiA9IGc2NCgpOwotICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YmlnSW1tKG9mZnNl
dCksIHRlbXAyKTsKLSAgICAgICAgICAgIGFwcGVuZChBZGQ2NCwgdGVtcDIsIGJhc2UsIHRlbXAy
KTsKLSAgICAgICAgICAgIGFwcGVuZChvcCwgQXJnOjphZGRyKHRlbXAyKSwgcmVzdWx0KTsKKyAg
ICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0ltbShvZmZzZXQpLCB0ZW1wKTsKKyAgICAg
ICAgICAgIGFwcGVuZChBZGQ2NCwgdGVtcCwgYmFzZSwgdGVtcCk7CiAgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIEFyZzo6c2ltcGxlQWRkcih0ZW1wKTsKKyAgICB9CisKKyAgICB2b2lkIHByZXBh
cmVBbmRDaGVja0Zvck1lbW9wKFR5cGVkVG1wJiBwb2ludGVyLCB1aW50MzJfdCYgb2Zmc2V0LCBC
Mzo6V2lkdGggbG9hZFNpemUpCisgICAgeworICAgICAgICBwb2ludGVyID0gZW1pdENoZWNrQW5k
UHJlcGFyZVBvaW50ZXIocG9pbnRlciwgb2Zmc2V0LCBieXRlc0ZvcldpZHRoKGxvYWRTaXplKSk7
CisgICAgICAgIGZpeHVwUG9pbnRlclBsdXNPZmZzZXQocG9pbnRlciwgb2Zmc2V0KTsKKyAgICB9
CisKKyAgICB2b2lkIGVtaXRMb2FkKEIzOjpBaXI6Ok9wY29kZSBvcCwgQjM6OlR5cGUgdHlwZSwg
VG1wIGJhc2UsIHNpemVfdCBvZmZzZXQsIFRtcCByZXN1bHQpCisgICAgeworICAgICAgICBhcHBl
bmQob3AsIG1hdGVyaWFsaXplQWRkckFyZyhiYXNlLCBvZmZzZXQsIEIzOjp3aWR0aEZvclR5cGUo
dHlwZSkpLCByZXN1bHQpOwogICAgIH0KIAogICAgIHZvaWQgZW1pdExvYWQoVG1wIGJhc2UsIHNp
emVfdCBvZmZzZXQsIGNvbnN0IFR5cGVkVG1wJiByZXN1bHQpCkBAIC04MjEsNyArODczLDcgQEAg
cHJpdmF0ZToKIAogICAgIFBhcnRpYWxSZXN1bHQgYWRkRmxvYXRpbmdQb2ludE1pbk9yTWF4KFR5
cGUsIE1pbk9yTWF4LCBFeHByZXNzaW9uVHlwZSBsaHMsIEV4cHJlc3Npb25UeXBlIHJocywgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKLSAgICBpbnQzMl90IFdBUk5fVU5VU0VEX1JFVFVSTiBm
aXh1cFBvaW50ZXJQbHVzT2Zmc2V0KEV4cHJlc3Npb25UeXBlJiwgdWludDMyX3QpOworICAgIHZv
aWQgZml4dXBQb2ludGVyUGx1c09mZnNldChFeHByZXNzaW9uVHlwZSYsIHVpbnQzMl90Jik7CiAg
ICAgRXhwcmVzc2lvblR5cGUgV0FSTl9VTlVTRURfUkVUVVJOIGZpeHVwUG9pbnRlclBsdXNPZmZz
ZXRGb3JBdG9taWNPcHMoRXh0QXRvbWljT3BUeXBlLCBFeHByZXNzaW9uVHlwZSwgdWludDMyX3Qp
OwogCiAgICAgdm9pZCByZXN0b3JlV2FzbUNvbnRleHRJbnN0YW5jZShCYXNpY0Jsb2NrKiwgVHlw
ZWRUbXApOwpAQCAtODkxLDcgKzk0Myw3IEBAIHByaXZhdGU6CiB9OwogCiAvLyBNZW1vcnkgYWNj
ZXNzZXMgaW4gV2ViQXNzZW1ibHkgaGF2ZSB1bnNpZ25lZCAzMi1iaXQgb2Zmc2V0cywgd2hlcmVh
cyB0aGV5IGhhdmUgc2lnbmVkIDMyLWJpdCBvZmZzZXRzIGluIEIzLgotaW50MzJfdCBBaXJJUkdl
bmVyYXRvcjo6Zml4dXBQb2ludGVyUGx1c09mZnNldChFeHByZXNzaW9uVHlwZSYgcHRyLCB1aW50
MzJfdCBvZmZzZXQpCit2b2lkIEFpcklSR2VuZXJhdG9yOjpmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0
KEV4cHJlc3Npb25UeXBlJiBwdHIsIHVpbnQzMl90JiBvZmZzZXQpCiB7CiAgICAgaWYgKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihvZmZzZXQpID4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkgewogICAgICAgICBhdXRvIHByZXZpb3VzUHRy
ID0gcHRyOwpAQCAtODk5LDkgKzk1MSw4IEBAIGludDMyX3QgQWlySVJHZW5lcmF0b3I6OmZpeHVw
UG9pbnRlclBsdXNPZmZzZXQoRXhwcmVzc2lvblR5cGUmIHB0ciwgdWludDMyX3Qgb2ZmCiAgICAg
ICAgIGF1dG8gY29uc3RhbnQgPSBnNjQoKTsKICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6Ymln
SW1tKG9mZnNldCksIGNvbnN0YW50KTsKICAgICAgICAgYXBwZW5kKEFkZDY0LCBjb25zdGFudCwg
cHJldmlvdXNQdHIsIHB0cik7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBvZmZzZXQgPSAw
OwogICAgIH0KLSAgICByZXR1cm4gb2Zmc2V0OwogfQogCiB2b2lkIEFpcklSR2VuZXJhdG9yOjpy
ZXN0b3JlV2FzbUNvbnRleHRJbnN0YW5jZShCYXNpY0Jsb2NrKiBibG9jaywgVHlwZWRUbXAgaW5z
dGFuY2UpCkBAIC05MDksNyArOTYwLDcgQEAgdm9pZCBBaXJJUkdlbmVyYXRvcjo6cmVzdG9yZVdh
c21Db250ZXh0SW5zdGFuY2UoQmFzaWNCbG9jayogYmxvY2ssIFR5cGVkVG1wIGluc3QKICAgICBp
ZiAoQ29udGV4dDo6dXNlRmFzdFRMUygpKSB7CiAgICAgICAgIGF1dG8qIHBhdGNocG9pbnQgPSBh
ZGRQYXRjaHBvaW50KEIzOjpWb2lkKTsKICAgICAgICAgaWYgKENDYWxsSGVscGVyczo6c3RvcmVX
YXNtQ29udGV4dEluc3RhbmNlTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKQotICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJz
KCkpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckZ1bGxXaWR0aChSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2FsbEhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHRJ
bnN0YW5jZU5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICBqaXQuc3Rv
cmVXYXNtQ29udGV4dEluc3RhbmNlKHBhcmFtc1swXS5ncHIoKSk7CkBAIC05MjUsNyArOTc2LDcg
QEAgdm9pZCBBaXJJUkdlbmVyYXRvcjo6cmVzdG9yZVdhc21Db250ZXh0SW5zdGFuY2UoQmFzaWNC
bG9jayogYmxvY2ssIFR5cGVkVG1wIGluc3QKICAgICBlZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRy
dWU7CiAgICAgZWZmZWN0cy5yZWFkcyA9IEIzOjpIZWFwUmFuZ2U6OnRvcCgpOwogICAgIHBhdGNo
cG9pbnQtPmVmZmVjdHMgPSBlZmZlY3RzOwotICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJl
Z2lzdGVyU2V0KG1fd2FzbUNvbnRleHRJbnN0YW5jZUdQUikpOworICAgIHBhdGNocG9pbnQtPmNs
b2JiZXJMYXRlKFJlZ2lzdGVyU2V0MTI4IHsgbV93YXNtQ29udGV4dEluc3RhbmNlR1BSIH0pOwog
ICAgIEdQUlJlZyB3YXNtQ29udGV4dEluc3RhbmNlR1BSID0gbV93YXNtQ29udGV4dEluc3RhbmNl
R1BSOwogICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbSkgewogICAgICAgICBq
aXQubW92ZShwYXJhbVswXS5ncHIoKSwgd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CkBAIC0xMDY3
LDYgKzExMTgsOSBAQCBBaXJJUkdlbmVyYXRvcjo6QWlySVJHZW5lcmF0b3IoY29uc3QgTW9kdWxl
SW5mb3JtYXRpb24mIGluZm8sIEIzOjpQcm9jZWR1cmUmIHBybwogICAgICAgICBjYXNlIFR5cGVL
aW5kOjpGNjQ6CiAgICAgICAgICAgICBhcHBlbmQoTW92ZURvdWJsZSwgYXJnLCBtX2xvY2Fsc1tp
XSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VjEyODoKKyAg
ICAgICAgICAgIGFwcGVuZChNb3ZlVmVjdG9yLCBhcmcsIG1fbG9jYWxzW2ldKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQpAQCAtMTE2MCwxMCArMTIxNCwxMCBAQCB2b2lkIEFp
cklSR2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVk
U3RhY2tMaW1pdCByZXN0bwogCiAgICAgaWYgKCEhbWVtb3J5KSB7CiAgICAgICAgIGNvbnN0IFBp
bm5lZFJlZ2lzdGVySW5mbyogcGlubmVkUmVncyA9ICZQaW5uZWRSZWdpc3RlckluZm86OmdldCgp
OwotICAgICAgICBSZWdpc3RlclNldCBjbG9iYmVyczsKKyAgICAgICAgUmVnaXN0ZXJTZXQxMjgg
Y2xvYmJlcnM7CiAgICAgICAgIGNsb2JiZXJzLnNldChwaW5uZWRSZWdzLT5iYXNlTWVtb3J5UG9p
bnRlcik7CiAgICAgICAgIGNsb2JiZXJzLnNldChwaW5uZWRSZWdzLT5ib3VuZHNDaGVja2luZ1Np
emVSZWdpc3Rlcik7Ci0gICAgICAgIGNsb2JiZXJzLnNldChSZWdpc3RlclNldDo6bWFjcm9TY3Jh
dGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBjbG9iYmVycy5tZXJnZShSZWdpc3RlclNldDo6bWFj
cm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogCiAgICAgICAgIGF1dG8qIHBhdGNocG9pbnQgPSBhZGRQ
YXRjaHBvaW50KEIzOjpWb2lkKTsKICAgICAgICAgQjM6OkVmZmVjdHMgZWZmZWN0cyA9IEIzOjpF
ZmZlY3RzOjpub25lKCk7CkBAIC0xMjEzLDcgKzEyNjcsNyBAQCB2b2lkIEFpcklSR2VuZXJhdG9y
Ojpmb3JFYWNoTGl2ZVZhbHVlKEZ1bmN0aW9uIGZ1bmN0aW9uKQogICAgIH0KIH0KIAotYXV0byBB
aXJJUkdlbmVyYXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1aW50MzJfdCBjb3VudCkgLT4gUGFy
dGlhbFJlc3VsdAorYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1aW50
MzJfdCwgdWludDMyX3QgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBzaXplX3QgbmV3
U2l6ZSA9IG1fbG9jYWxzLnNpemUoKSArIGNvdW50OwogICAgIEFTU0VSVCghKENoZWNrZWRVaW50
MzIoY291bnQpICsgbV9sb2NhbHMuc2l6ZSgpKS5oYXNPdmVyZmxvd2VkKCkpOwpAQCAtMTI0Myw2
ICsxMjk3LDEzIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZExvY2FsKFR5cGUgdHlwZSwgdWlu
dDMyX3QgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIGFwcGVuZCh0eXBlLmlz
RjMyKCkgPyBNb3ZlMzJUb0Zsb2F0IDogTW92ZTY0VG9Eb3VibGUsIHRlbXAsIGxvY2FsKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlYxMjg6
IHsKKyAgICAgICAgICAgIGF1dG8gdGVtcCA9IGc2NCgpOworICAgICAgICAgICAgYXBwZW5kKFhv
cjY0LCB0ZW1wLCB0ZW1wKTsKKyAgICAgICAgICAgIGFwcGVuZChWZWN0b3JSZXBsYWNlTGFuZUlu
dDY0LCBBcmc6OmltbSgwKSwgdGVtcCwgbG9jYWwpOworICAgICAgICAgICAgYXBwZW5kKFZlY3Rv
clJlcGxhY2VMYW5lSW50NjQsIEFyZzo6aW1tKDEpLCB0ZW1wLCBsb2NhbCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQpAQCAtMTI1NSw2ICsxMzE2LDE4IEBA
IGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENvbnN0YW50KFR5cGUgdHlwZSwgdWludDY0X3QgdmFs
dWUpIC0+IEV4cHJlc3Npb25UeXBlCiAgICAgcmV0dXJuIGFkZENvbnN0YW50KG1fY3VycmVudEJs
b2NrLCB0eXBlLCB2YWx1ZSk7CiB9CiAKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENvbnN0YW50
KHYxMjhfdCB2YWx1ZSkgLT4gRXhwcmVzc2lvblR5cGUKK3sKKyAgICAvLyBPT1BTOiB0aGlzIGlz
IGJhZCwgd2Ugc2hvdWxkIGxvYWQKKyAgICBhdXRvIGEgPSBnNjQoKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IHRtcEZvclR5cGUoVHlwZXM6OlYxMjgpOworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0lt
bSh2YWx1ZS51NjR4MlswXSksIGEpOworICAgIGFwcGVuZChWZWN0b3JSZXBsYWNlTGFuZUludDY0
LCBBcmc6OmltbSgwKSwgYSwgcmVzdWx0KTsKKyAgICBhcHBlbmQoTW92ZSwgQXJnOjpiaWdJbW0o
dmFsdWUudTY0eDJbMV0pLCBhKTsKKyAgICBhcHBlbmQoVmVjdG9yUmVwbGFjZUxhbmVJbnQ2NCwg
QXJnOjppbW0oMSksIGEsIHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogYXV0byBB
aXJJUkdlbmVyYXRvcjo6YWRkQ29uc3RhbnQoQmFzaWNCbG9jayogYmxvY2ssIFR5cGUgdHlwZSwg
dWludDY0X3QgdmFsdWUpIC0+IEV4cHJlc3Npb25UeXBlCiB7CiAgICAgYXV0byByZXN1bHQgPSB0
bXBGb3JUeXBlKHR5cGUpOwpAQCAtMTQ2MCw3ICsxNTMzLDcgQEAgYXV0byBBaXJJUkdlbmVyYXRv
cjo6YWRkVGFibGVDb3B5KHVuc2lnbmVkIGRzdFRhYmxlSW5kZXgsIHVuc2lnbmVkIHNyY1RhYmxl
SW5kZXgKICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIEFpcklSR2VuZXJhdG9yOjpnZXRMb2Nh
bCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3Vs
dAorYXV0byBBaXJJUkdlbmVyYXRvcjo6Z2V0TG9jYWwodWludDMyX3QgaW5kZXgsIFdhc206OlR5
cGUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBBU1NF
UlQobV9sb2NhbHNbaW5kZXhdLnRtcCgpKTsKICAgICByZXN1bHQgPSB0bXBGb3JUeXBlKG1fbG9j
YWxzW2luZGV4XS50eXBlKCkpOwpAQCAtMTU5Miw3ICsxNjY1LDcgQEAgYXV0byBBaXJJUkdlbmVy
YXRvcjo6YWRkRGF0YURyb3AodW5zaWduZWQgZGF0YVNlZ21lbnRJbmRleCkgLT4gUGFydGlhbFJl
c3VsdAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQWlySVJHZW5lcmF0b3I6OnNldExvY2Fs
KHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAor
YXV0byBBaXJJUkdlbmVyYXRvcjo6c2V0TG9jYWwodWludDMyX3QgaW5kZXgsIFdhc206OlR5cGUs
IEV4cHJlc3Npb25UeXBlIHZhbHVlKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgQVNTRVJUKG1f
bG9jYWxzW2luZGV4XS50bXAoKSk7CiAgICAgYXBwZW5kKG1vdmVPcEZvclZhbHVlVHlwZShtX2xv
Y2Fsc1tpbmRleF0udHlwZSgpKSwgdmFsdWUsIG1fbG9jYWxzW2luZGV4XS50bXAoKSk7CkBAIC0x
NjE0LDI1ICsxNjg3LDExIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmdldEdsb2JhbCh1aW50MzJf
dCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhCiAgICAgaW50MzJfdCBv
ZmZzZXQgPSBzYWZlQ2FzdDxpbnQzMl90PihpbmRleCAqIHNpemVvZihSZWdpc3RlcikpOwogICAg
IHN3aXRjaCAoZ2xvYmFsLmJpbmRpbmdNb2RlKSB7CiAgICAgY2FzZSBXYXNtOjpHbG9iYWxJbmZv
cm1hdGlvbjo6QmluZGluZ01vZGU6OkVtYmVkZGVkSW5JbnN0YW5jZToKLSAgICAgICAgaWYgKEFy
Zzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwgQjM6OndpZHRoRm9yVHlwZSh0b0IzVHlwZSh0eXBl
KSkpKQotICAgICAgICAgICAgYXBwZW5kKG1vdmVPcEZvclZhbHVlVHlwZSh0eXBlKSwgQXJnOjph
ZGRyKHRlbXAsIG9mZnNldCksIHJlc3VsdCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
YXV0byB0ZW1wMiA9IGc2NCgpOwotICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YmlnSW1t
KG9mZnNldCksIHRlbXAyKTsKLSAgICAgICAgICAgIGFwcGVuZChBZGQ2NCwgdGVtcDIsIHRlbXAs
IHRlbXApOwotICAgICAgICAgICAgYXBwZW5kKG1vdmVPcEZvclZhbHVlVHlwZSh0eXBlKSwgQXJn
OjphZGRyKHRlbXApLCByZXN1bHQpOwotICAgICAgICB9CisgICAgICAgIGFwcGVuZChtb3ZlT3BG
b3JWYWx1ZVR5cGUodHlwZSksIG1hdGVyaWFsaXplQWRkckFyZyh0ZW1wLCBvZmZzZXQsIEIzOjp3
aWR0aEZvclR5cGUodG9CM1R5cGUodHlwZSkpKSwgcmVzdWx0KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6QmluZGluZ01vZGU6OlBvcnRhYmxlOgog
ICAgICAgICBBU1NFUlQoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRp
b246Ok11dGFiaWxpdHk6Ok11dGFibGUpOwotICAgICAgICBpZiAoQXJnOjppc1ZhbGlkQWRkckZv
cm0ob2Zmc2V0LCBCMzo6V2lkdGg2NCkpCi0gICAgICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjph
ZGRyKHRlbXAsIG9mZnNldCksIHRlbXApOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGF1
dG8gdGVtcDIgPSBnNjQoKTsKLSAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0ltbShv
ZmZzZXQpLCB0ZW1wMik7Ci0gICAgICAgICAgICBhcHBlbmQoQWRkNjQsIHRlbXAyLCB0ZW1wLCB0
ZW1wKTsKLSAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIodGVtcCksIHRlbXApOwot
ICAgICAgICB9CisgICAgICAgIGFwcGVuZChNb3ZlLCBtYXRlcmlhbGl6ZUFkZHJBcmcodGVtcCwg
b2Zmc2V0LCBCMzo6V2lkdGg2NCksIHRlbXApOwogICAgICAgICBhcHBlbmQobW92ZU9wRm9yVmFs
dWVUeXBlKHR5cGUpLCBBcmc6OmFkZHIodGVtcCksIHJlc3VsdCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTE2NTIsMjcgKzE3MTEsMTMgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6c2V0R2xv
YmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFIKICAg
ICBpbnQzMl90IG9mZnNldCA9IHNhZmVDYXN0PGludDMyX3Q+KGluZGV4ICogc2l6ZW9mKFJlZ2lz
dGVyKSk7CiAgICAgc3dpdGNoIChnbG9iYWwuYmluZGluZ01vZGUpIHsKICAgICBjYXNlIFdhc206
Okdsb2JhbEluZm9ybWF0aW9uOjpCaW5kaW5nTW9kZTo6RW1iZWRkZWRJbkluc3RhbmNlOgotICAg
ICAgICBpZiAoQXJnOjppc1ZhbGlkQWRkckZvcm0ob2Zmc2V0LCBCMzo6d2lkdGhGb3JUeXBlKHRv
QjNUeXBlKHR5cGUpKSkpCi0gICAgICAgICAgICBhcHBlbmQobW92ZU9wRm9yVmFsdWVUeXBlKHR5
cGUpLCB2YWx1ZSwgQXJnOjphZGRyKHRlbXAsIG9mZnNldCkpOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIGF1dG8gdGVtcDIgPSBnNjQoKTsKLSAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBB
cmc6OmJpZ0ltbShvZmZzZXQpLCB0ZW1wMik7Ci0gICAgICAgICAgICBhcHBlbmQoQWRkNjQsIHRl
bXAyLCB0ZW1wLCB0ZW1wKTsKLSAgICAgICAgICAgIGFwcGVuZChtb3ZlT3BGb3JWYWx1ZVR5cGUo
dHlwZSksIHZhbHVlLCBBcmc6OmFkZHIodGVtcCkpOwotICAgICAgICB9CisgICAgICAgIGFwcGVu
ZChtb3ZlT3BGb3JWYWx1ZVR5cGUodHlwZSksIHZhbHVlLCBtYXRlcmlhbGl6ZUFkZHJBcmcodGVt
cCwgb2Zmc2V0LCBCMzo6d2lkdGhGb3JUeXBlKHRvQjNUeXBlKHR5cGUpKSkpOwogICAgICAgICBp
ZiAoaXNSZWZUeXBlKHR5cGUpKQogICAgICAgICAgICAgZW1pdFdyaXRlQmFycmllckZvckpTV3Jh
cHBlcigpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdhc206Okdsb2JhbEluZm9ybWF0aW9u
OjpCaW5kaW5nTW9kZTo6UG9ydGFibGU6CiAgICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0
eSA9PSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6TXV0YWJsZSk7Ci0gICAg
ICAgIGlmIChBcmc6OmlzVmFsaWRBZGRyRm9ybShvZmZzZXQsIEIzOjpXaWR0aDY0KSkKLSAgICAg
ICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIodGVtcCwgb2Zmc2V0KSwgdGVtcCk7Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgYXV0byB0ZW1wMiA9IGc2NCgpOwotICAgICAgICAgICAg
YXBwZW5kKE1vdmUsIEFyZzo6YmlnSW1tKG9mZnNldCksIHRlbXAyKTsKLSAgICAgICAgICAgIGFw
cGVuZChBZGQ2NCwgdGVtcDIsIHRlbXAsIHRlbXApOwotICAgICAgICAgICAgYXBwZW5kKE1vdmUs
IEFyZzo6YWRkcih0ZW1wKSwgdGVtcCk7Ci0gICAgICAgIH0KKyAgICAgICAgYXBwZW5kKE1vdmUs
IG1hdGVyaWFsaXplQWRkckFyZyh0ZW1wLCBvZmZzZXQsIEIzOjpXaWR0aDY0KSwgdGVtcCk7CiAg
ICAgICAgIGFwcGVuZChtb3ZlT3BGb3JWYWx1ZVR5cGUodHlwZSksIHZhbHVlLCBBcmc6OmFkZHIo
dGVtcCkpOwogICAgICAgICAvLyBXZSBlbWl0IGEgd3JpdGUtYmFycmllciBvbnRvIEpTV2ViQXNz
ZW1ibHlHbG9iYWwsIG5vdCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuCiAgICAgICAgIGlmIChpc1Jl
ZlR5cGUodHlwZSkpIHsKQEAgLTE4NDksMjQgKzE4OTQsMTMgQEAgaW5saW5lIHVpbnQzMl90IHNp
emVPZkxvYWRPcChMb2FkT3BUeXBlIG9wKQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLWlubGluZSBUeXBlZFRtcCBBaXJJUkdlbmVyYXRvcjo6ZW1pdExvYWRPcChMb2Fk
T3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJfdCB1b2Zmc2V0KQoraW5s
aW5lIFR5cGVkVG1wIEFpcklSR2VuZXJhdG9yOjplbWl0TG9hZE9wKExvYWRPcFR5cGUgb3AsIEV4
cHJlc3Npb25UeXBlIHBvaW50ZXIsIHVpbnQzMl90IG9mZnNldCkKIHsKLSAgICB1aW50MzJfdCBv
ZmZzZXQgPSBmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0KHBvaW50ZXIsIHVvZmZzZXQpOworICAgIGZp
eHVwUG9pbnRlclBsdXNPZmZzZXQocG9pbnRlciwgb2Zmc2V0KTsKIAotICAgIFR5cGVkVG1wIGlt
bVRtcDsKLSAgICBUeXBlZFRtcCBuZXdQdHI7CiAgICAgVHlwZWRUbXAgcmVzdWx0OwogCi0gICAg
QXJnIGFkZHJBcmc7Ci0gICAgaWYgKEFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwgQjM6Ondp
ZHRoRm9yQnl0ZXMoc2l6ZU9mTG9hZE9wKG9wKSkpKQotICAgICAgICBhZGRyQXJnID0gQXJnOjph
ZGRyKHBvaW50ZXIsIG9mZnNldCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGltbVRtcCA9IGc2NCgp
OwotICAgICAgICBuZXdQdHIgPSBnNjQoKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6Ymln
SW1tKG9mZnNldCksIGltbVRtcCk7Ci0gICAgICAgIGFwcGVuZChBZGQ2NCwgaW1tVG1wLCBwb2lu
dGVyLCBuZXdQdHIpOwotICAgICAgICBhZGRyQXJnID0gQXJnOjphZGRyKG5ld1B0cik7Ci0gICAg
fQorICAgIEFyZyBhZGRyQXJnID0gbWF0ZXJpYWxpemVBZGRyQXJnKHBvaW50ZXIsIG9mZnNldCwg
QjM6OndpZHRoRm9yQnl0ZXMoc2l6ZU9mTG9hZE9wKG9wKSkpOwogCiAgICAgc3dpdGNoIChvcCkg
ewogICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhTOiB7CkBAIC0yMDI0LDIzICsyMDU4LDEx
IEBAIGlubGluZSB1aW50MzJfdCBzaXplT2ZTdG9yZU9wKFN0b3JlT3BUeXBlIG9wKQogfQogCiAK
LWlubGluZSB2b2lkIEFpcklSR2VuZXJhdG9yOjplbWl0U3RvcmVPcChTdG9yZU9wVHlwZSBvcCwg
RXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUgdmFsdWUsIHVpbnQzMl90IHVv
ZmZzZXQpCitpbmxpbmUgdm9pZCBBaXJJUkdlbmVyYXRvcjo6ZW1pdFN0b3JlT3AoU3RvcmVPcFR5
cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50
MzJfdCBvZmZzZXQpCiB7Ci0gICAgdWludDMyX3Qgb2Zmc2V0ID0gZml4dXBQb2ludGVyUGx1c09m
ZnNldChwb2ludGVyLCB1b2Zmc2V0KTsKLQotICAgIFR5cGVkVG1wIGltbVRtcDsKLSAgICBUeXBl
ZFRtcCBuZXdQdHI7CisgICAgZml4dXBQb2ludGVyUGx1c09mZnNldChwb2ludGVyLCBvZmZzZXQp
OwogCi0gICAgQXJnIGFkZHJBcmc7Ci0gICAgaWYgKEFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNl
dCwgQjM6OndpZHRoRm9yQnl0ZXMoc2l6ZU9mU3RvcmVPcChvcCkpKSkKLSAgICAgICAgYWRkckFy
ZyA9IEFyZzo6YWRkcihwb2ludGVyLCBvZmZzZXQpOwotICAgIGVsc2UgewotICAgICAgICBpbW1U
bXAgPSBnNjQoKTsKLSAgICAgICAgbmV3UHRyID0gZzY0KCk7Ci0gICAgICAgIGFwcGVuZChNb3Zl
LCBBcmc6OmJpZ0ltbShvZmZzZXQpLCBpbW1UbXApOwotICAgICAgICBhcHBlbmQoQWRkNjQsIGlt
bVRtcCwgcG9pbnRlciwgbmV3UHRyKTsKLSAgICAgICAgYWRkckFyZyA9IEFyZzo6YWRkcihuZXdQ
dHIpOwotICAgIH0KKyAgICBBcmcgYWRkckFyZyA9IG1hdGVyaWFsaXplQWRkckFyZyhwb2ludGVy
LCBvZmZzZXQsIEIzOjp3aWR0aEZvckJ5dGVzKHNpemVPZlN0b3JlT3Aob3ApKSk7CiAKICAgICBz
d2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU4OgpAQCAtMjExMCw5
ICsyMTMyLDkgQEAgaW5saW5lIHVpbnQzMl90IHNpemVPZkF0b21pY09wTWVtb3J5QWNjZXNzKEV4
dEF0b21pY09wVHlwZSBvcCkKICAgICByZXR1cm4gYnl0ZXNGb3JXaWR0aChhY2Nlc3NXaWR0aChv
cCkpOwogfQogCi1hdXRvIEFpcklSR2VuZXJhdG9yOjpmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0Rm9y
QXRvbWljT3BzKEV4dEF0b21pY09wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWlu
dDMyX3QgdW9mZnNldCkgLT4gRXhwcmVzc2lvblR5cGUKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmZp
eHVwUG9pbnRlclBsdXNPZmZzZXRGb3JBdG9taWNPcHMoRXh0QXRvbWljT3BUeXBlIG9wLCBFeHBy
ZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJfdCBvZmZzZXQpIC0+IEV4cHJlc3Npb25UeXBlCiB7
Ci0gICAgdWludDMyX3Qgb2Zmc2V0ID0gZml4dXBQb2ludGVyUGx1c09mZnNldChwb2ludGVyLCB1
b2Zmc2V0KTsKKyAgICBmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0KHBvaW50ZXIsIG9mZnNldCk7CiAg
ICAgaWYgKEFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwgQjM6OndpZHRoRm9yQnl0ZXMoc2l6
ZU9mQXRvbWljT3BNZW1vcnlBY2Nlc3Mob3ApKSkpIHsKICAgICAgICAgaWYgKG9mZnNldCA9PSAw
KQogICAgICAgICAgICAgcmV0dXJuIHBvaW50ZXI7CkBAIC0yMTQ1LDYgKzIxNjcsOSBAQCB2b2lk
IEFpcklSR2VuZXJhdG9yOjpzYW5pdGl6ZUF0b21pY1Jlc3VsdChFeHRBdG9taWNPcFR5cGUgb3As
IFR5cGUgdmFsdWVUeXBlLCBUbQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IGFwcGVuZChNb3ZlLCBzb3VyY2UsIGRlc3QpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBjYXNlIEIzOjpXaWR0aDEyODoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTIxNjIsNiArMjE4Nyw5IEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OnNhbml0aXpl
QXRvbWljUmVzdWx0KEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1ZVR5cGUsIFRtCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYXBwZW5kKE1vdmUsIHNvdXJjZSwgZGVz
dCk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgQjM6OldpZHRoMTI4OgorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKQEAgLTIyNDAsNiAr
MjI2OCw5IEBAIFR5cGVkVG1wIEFpcklSR2VuZXJhdG9yOjphcHBlbmRHZW5lcmFsQXRvbWljKEV4
dEF0b21pY09wVHlwZSBvcCwgQjM6OkFpcjo6T3Bjb2RlCiAgICAgICAgIGNhc2UgQjM6OldpZHRo
NjQ6CiAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTW92ZTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEIzOjpXaWR0aDEyODoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CkBAIC0yOTI3LDcgKzI5NTgs
NyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjp0cnVuY1NhdHVyYXRlZChFeHQxT3BUeXBlIG9wLCBF
eHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3NpbwogICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBC
Mzo6RWZmZWN0czo6bm9uZSgpOwogICAgIGFyZ3MuYXBwZW5kKGFyZyk7CiAgICAgaWYgKHJlcXVp
cmVzTWFjcm9TY3JhdGNoUmVnaXN0ZXJzKSB7Ci0gICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIo
UmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlckZ1bGxXaWR0aChSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkp
OwogICAgICAgICBpZiAoaXNYODYoKSkgewogICAgICAgICAgICAgYXJncy5hcHBlbmQoc2lnbkJp
dENvbnN0YW50KTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPm51bUZQU2NyYXRjaFJlZ2lzdGVy
cyA9IDE7CkBAIC0zMDI4LDcgKzMwNTksNyBAQCB2b2lkIEFpcklSR2VuZXJhdG9yOjplbWl0RW50
cnlUaWVyVXBDaGVjaygpCiAgICAgZWZmZWN0cy5yZWFkcyA9IEIzOjpIZWFwUmFuZ2U6OnRvcCgp
OwogICAgIGVmZmVjdHMud3JpdGVzID0gQjM6OkhlYXBSYW5nZTo6dG9wKCk7CiAgICAgcGF0Y2gt
PmVmZmVjdHMgPSBlZmZlY3RzOwotICAgIHBhdGNoLT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNy
b1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgcGF0Y2gtPmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0
ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKIAogICAgIHBhdGNoLT5zZXRHZW5lcmF0
b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTMwNDAsMTQgKzMwNzEsMTQgQEAgdm9pZCBBaXJJ
UkdlbmVyYXRvcjo6ZW1pdEVudHJ5VGllclVwQ2hlY2soKQogICAgICAgICAgICAgdGllclVwLmxp
bmsoJmppdCk7CiAKICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGV4dHJhUGFkZGluZ0J5dGVz
ID0gMDsKLSAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHJlZ2lzdGVyc1RvU3BpbGwgPSB7IH07Cisg
ICAgICAgICAgICBSZWdpc3RlclNldDEyOCByZWdpc3RlcnNUb1NwaWxsID0geyB9OwogICAgICAg
ICAgICAgcmVnaXN0ZXJzVG9TcGlsbC5hZGQoR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAg
ICAgICAgIHVuc2lnbmVkIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZh
dGlvbiA9IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNr
Rm9yQ2FsbChqaXQsIHJlZ2lzdGVyc1RvU3BpbGwsIGV4dHJhUGFkZGluZ0J5dGVzKTsKIAogICAg
ICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihtX2Z1bmN0aW9u
SW5kZXgpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgY2FsbCA9IGppdC5uZWFyQ2FsbCgpOwogCi0gICAgICAgICAgICBTY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKGppdCwgcmVn
aXN0ZXJzVG9TcGlsbCwgUmVnaXN0ZXJTZXQoKSwgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJl
Z2lzdGVyUHJlc2VydmF0aW9uLCBleHRyYVBhZGRpbmdCeXRlcyk7CisgICAgICAgICAgICBTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKGpp
dCwgcmVnaXN0ZXJzVG9TcGlsbCwgeyB9LCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0
ZXJQcmVzZXJ2YXRpb24sIGV4dHJhUGFkZGluZ0J5dGVzKTsKICAgICAgICAgICAgIGppdC5qdW1w
KHRpZXJVcFJlc3VtZSk7CiAKICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtC
dWZmZXImIGxpbmtCdWZmZXIpIHsKQEAgLTMwODEsOCArMzExMiw4IEBAIHZvaWQgQWlySVJHZW5l
cmF0b3I6OmVtaXRMb29wVGllclVwQ2hlY2sodWludDMyX3QgbG9vcEluZGV4LCBjb25zdCBWZWN0
b3I8VHlwZWRUCiAgICAgZWZmZWN0cy5leGl0c1NpZGV3YXlzID0gdHJ1ZTsKICAgICBwYXRjaC0+
ZWZmZWN0cyA9IGVmZmVjdHM7CiAKLSAgICBwYXRjaC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFj
cm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJMYXRlOworICAg
IHBhdGNoLT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7CisgICAgUmVnaXN0ZXJTZXQxMjggY2xvYmJlckxhdGU7CiAgICAgY2xvYmJlckxhdGUu
YWRkKEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgcGF0Y2gtPmNsb2JiZXJMYXRlKGNsb2Ji
ZXJMYXRlKTsKIApAQCAtMzMwMyw4ICszMzM0LDggQEAgVG1wIEFpcklSR2VuZXJhdG9yOjplbWl0
Q2F0Y2hJbXBsKENhdGNoS2luZCBraW5kLCBDb250cm9sVHlwZSYgZGF0YSwgdW5zaWduZWQgZXgK
IAogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNoID0gYWRkUGF0Y2hwb2ludChtX3Byb2Mu
YWRkVHVwbGUoeyBCMzo6cG9pbnRlclR5cGUoKSwgQjM6OnBvaW50ZXJUeXBlKCkgfSkpOwogICAg
IHBhdGNoLT5lZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOwotICAgIHBhdGNoLT5jbG9iYmVy
KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0gICAgUmVnaXN0ZXJTZXQg
Y2xvYmJlckxhdGUgPSBSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKTsK
KyAgICBwYXRjaC0+Y2xvYmJlckZ1bGxXaWR0aChSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVn
aXN0ZXJzKCkpOworICAgIFJlZ2lzdGVyU2V0MTI4IGNsb2JiZXJMYXRlID0gUmVnaXN0ZXJTZXQx
Mjg6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCk7CiAgICAgY2xvYmJlckxhdGUuYWRkKEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgcGF0Y2gtPmNsb2JiZXJMYXRlKGNsb2JiZXJMYXRl
KTsKICAgICBwYXRjaC0+cmVzdWx0Q29uc3RyYWludHMuYXBwZW5kKEIzOjpWYWx1ZVJlcDo6cmVn
KEdQUkluZm86OnJldHVyblZhbHVlR1BSKSk7CkBAIC0zMzQxLDE3ICszMzcyLDE3IEBAIGF1dG8g
QWlySVJHZW5lcmF0b3I6OmFkZERlbGVnYXRlVG9VbnJlYWNoYWJsZShDb250cm9sVHlwZSYgdGFy
Z2V0LCBDb250cm9sVHlwZSYKICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIEFpcklSR2VuZXJh
dG9yOjphZGRUaHJvdyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgVmVjdG9yPEV4cHJlc3Npb25U
eXBlPiYgYXJncywgU3RhY2smKSAtPiBQYXJ0aWFsUmVzdWx0CithdXRvIEFpcklSR2VuZXJhdG9y
OjphZGRUaHJvdyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgU3RhY2smIGFyZ3MpIC0+IFBhcnRp
YWxSZXN1bHQKIHsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaCA9IGFkZFBhdGNocG9p
bnQoQjM6OlZvaWQpOwogICAgIHBhdGNoLT5lZmZlY3RzLnRlcm1pbmFsID0gdHJ1ZTsKLSAgICBw
YXRjaC0+Y2xvYmJlcihSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7
CisgICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJTZXQxMjg6OnZvbGF0aWxlUmVnaXN0ZXJzRm9y
SlNDYWxsKCkpOwogCiAgICAgVmVjdG9yPENvbnN0cmFpbmVkVG1wLCA4PiBwYXRjaEFyZ3M7CiAg
ICAgcGF0Y2hBcmdzLmFwcGVuZChDb25zdHJhaW5lZFRtcChpbnN0YW5jZVZhbHVlKCksIEIzOjpW
YWx1ZVJlcDo6cmVnKEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKICAgICBwYXRjaEFyZ3MuYXBw
ZW5kKENvbnN0cmFpbmVkVG1wKFRtcChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciksIEIzOjpW
YWx1ZVJlcDo6cmVnKEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkKLSAgICAgICAgcGF0Y2hBcmdzLmFwcGVuZChD
b25zdHJhaW5lZFRtcChhcmdzW2ldLCBCMzo6VmFsdWVSZXA6OnN0YWNrQXJndW1lbnQoaSAqIHNp
emVvZihFbmNvZGVkSlNWYWx1ZSkpKSk7CisgICAgICAgIHBhdGNoQXJncy5hcHBlbmQoQ29uc3Ry
YWluZWRUbXAoYXJnc1tpXS52YWx1ZSgpLCBCMzo6VmFsdWVSZXA6OnN0YWNrQXJndW1lbnQoaSAq
IGFyZ3NbaV0udHlwZSgpLnNpemUoKSkpKTsKIAogICAgIFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGUgaGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNoLCBwYXRjaEFy
Z3MpOwogCkBAIC0zMzY5LDcgKzM0MDAsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUaHJv
dyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYQogYXV0
byBBaXJJUkdlbmVyYXRvcjo6YWRkUmV0aHJvdyh1bnNpZ25lZCwgQ29udHJvbFR5cGUmIGRhdGEp
IC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaCA9IGFk
ZFBhdGNocG9pbnQoQjM6OlZvaWQpOwotICAgIHBhdGNoLT5jbG9iYmVyKFJlZ2lzdGVyU2V0Ojp2
b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpKTsKKyAgICBwYXRjaC0+Y2xvYmJlcihSZWdpc3Rl
clNldDEyODo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7CiAgICAgcGF0Y2gtPmVmZmVj
dHMudGVybWluYWwgPSB0cnVlOwogCiAgICAgVmVjdG9yPENvbnN0cmFpbmVkVG1wLCAzPiBwYXRj
aEFyZ3M7CkBAIC0zNDAwLDcgKzM0MzEsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRSZXR1
cm4oY29uc3QgQ29udHJvbERhdGEmIGRhdGEsIGNvbnN0IFN0YWNrJiByZXR1cm5WYWx1ZQogICAg
IEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNoID0gYWRkUGF0Y2hwb2ludChCMzo6Vm9pZCk7CiAg
ICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICBhdXRvIGNhbGxlZVNh
dmVzID0gcGFyYW1zLmNvZGUoKS5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKTsKLSAg
ICAgICAgaml0LmVtaXRSZXN0b3JlKGNhbGxlZVNhdmVzKTsKKyAgICAgICAgaml0LmVtaXRSZXN0
b3JlQ2FsbGVlU2F2ZXNGb3IoJmNhbGxlZVNhdmVzKTsKICAgICAgICAgaml0LmVtaXRGdW5jdGlv
bkVwaWxvZ3VlKCk7CiAgICAgICAgIGppdC5yZXQoKTsKICAgICB9KTsKQEAgLTM0ODgsNyArMzUx
OSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFN3aXRjaChFeHByZXNzaW9uVHlwZSBjb25k
aXRpb24sIGNvbnN0IFZlY3RvcjxDb250cm9sRGF0CiAgICAgYXV0byogcGF0Y2hwb2ludCA9IGFk
ZFBhdGNocG9pbnQoQjM6OlZvaWQpOwogICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBCMzo6RWZm
ZWN0czo6bm9uZSgpOwogICAgIHBhdGNocG9pbnQtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOwot
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNy
b1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAKICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7CiAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKQEAgLTM1ODAsOCArMzYxMSw4IEBAIHN0ZDo6cGFpcjxCMzo6UGF0Y2hwb2lu
dFZhbHVlKiwgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gQWlySVJHZW5lcmF0b3I6OmVtaXRD
CiAgICAgYXV0byogcGF0Y2hwb2ludCA9IGFkZFBhdGNocG9pbnQodG9CM1Jlc3VsdFR5cGUoJnNp
Z25hdHVyZSkpOwogICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsK
ICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1ZTsKLSAgICBwYXRjaHBv
aW50LT5jbG9iYmVyRWFybHkoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsK
LSAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3Rl
cnNGb3JKU0NhbGwoKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckVhcmx5KFJlZ2lzdGVyU2V0
MTI4Ojp1c2UxMjhCaXRzKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSkpOwor
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0MTI4Ojp2b2xhdGlsZVJlZ2lz
dGVyc0ZvckpTQ2FsbCgpKTsKIAogICAgIENhbGxJbmZvcm1hdGlvbiBsb2NhdGlvbnMgPSB3YXNt
Q2FsbGluZ0NvbnZlbnRpb24oKS5jYWxsSW5mb3JtYXRpb25Gb3Ioc2lnbmF0dXJlKTsKICAgICBt
X2NvZGUucmVxdWVzdENhbGxBcmdBcmVhU2l6ZUluQnl0ZXMoV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgbG9jYXRpb25zLmhlYWRlckFuZEFyZ3VtZW50U3Rh
Y2tTaXplSW5CeXRlcykpOwpAQCAtMzY0NCw3ICszNjc1LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRv
cjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSwKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFsIHBp
bm5lZCByZWdpc3RlcnMgc2luY2Ugd2UgbWlnaHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2UuCiAg
ICAgICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlIGNvdWxkIGJlIGNhbGxp
bmcgdG8gc29tZXRoaW5nIHRoYXQgaXMgYm91bmRzIGNoZWNraW5nLgogICAgICAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIGRvIHRoaXM6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxODEKLSAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXJMYXRlKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5k
c0NoZWNraW5nKSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3Rl
clNldDEyODo6dXNlMTI4Qml0cyhQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZShNZW1v
cnlNb2RlOjpCb3VuZHNDaGVja2luZykpKTsKIAogICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTM2NzQsNyArMzcwNSw3
IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwg
Y29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNs
b2JiZXIgYWxsIHBvdGVudGlhbCBwaW5uZWQgcmVnaXN0ZXJzIHNpbmNlIHdlIG1pZ2h0IGJlIGxl
YXZpbmcgdGhlIGluc3RhbmNlLgogICAgICAgICAgICAgLy8gV2UgcGVzc2ltaXN0aWNhbGx5IGFz
c3VtZSB3ZSBjb3VsZCBiZSBjYWxsaW5nIHRvIHNvbWV0aGluZyB0aGF0IGlzIGJvdW5kcyBjaGVj
a2luZy4KICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBkbyB0aGlz
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCi0gICAgICAg
ICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRv
U2F2ZShNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpOworICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQxMjg6OnVzZTEyOEJpdHMoUGlubmVkUmVnaXN0ZXJJ
bmZvOjpnZXQoKS50b1NhdmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKSk7CiAgICAgICAg
ICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS5nZW5lcmF0ZShqaXQsIHBhcmFtcywg
dGhpcyk7CkBAIC0zNjk0LDcgKzM3MjUsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxs
KHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLAogICAg
ICAgICBhdXRvIGV4Y2VwdGlvbkhhbmRsZSA9IHBhaXIuc2Vjb25kOwogICAgICAgICAvLyBXZSBu
ZWVkIHRvIGNsb2JiZXIgdGhlIHNpemUgcmVnaXN0ZXIgc2luY2UgdGhlIExMSW50IGFsd2F5cyBi
b3VuZHMgY2hlY2tzCiAgICAgICAgIGlmIChtX21vZGUgPT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5n
IHx8IG1faW5mby5tZW1vcnkuaXNTaGFyZWQoKSkKLSAgICAgICAgICAgIHBhdGNocG9pbnQtPmNs
b2JiZXJMYXRlKFJlZ2lzdGVyU2V0IHsgUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS5ib3VuZHND
aGVja2luZ1NpemVSZWdpc3RlciB9KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJM
YXRlKFJlZ2lzdGVyU2V0MTI4IHsgUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS5ib3VuZHNDaGVj
a2luZ1NpemVSZWdpc3RlciB9KTsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9
LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLmdlbmVy
YXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKQEAgLTM3MjksMTIgKzM3NjAsNyBAQCBhdXRvIEFpcklS
R2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2ln
bmF0dXJlJiBzaWduYQogICAgICAgICBSRUxFQVNFX0FTU0VSVChBcmc6OmlzVmFsaWRBZGRyRm9y
bShGdW5jUmVmVGFibGU6Om9mZnNldE9mSW5zdGFuY2VzKCksIEIzOjpXaWR0aDY0KSk7CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEZ1bmNSZWZUYWJsZTo6b2Zm
c2V0T2ZMZW5ndGgoKSwgQjM6OldpZHRoNjQpKTsKIAotICAgICAgICBpZiAoVU5MSUtFTFkoIUFy
Zzo6aXNWYWxpZEFkZHJGb3JtKEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0
RnVuY3Rpb25zLCB0YWJsZUluZGV4KSwgQjM6OldpZHRoNjQpKSkgewotICAgICAgICAgICAgYXBw
ZW5kKE1vdmUsIEFyZzo6YmlnSW1tKEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRyKG1fbnVtSW1w
b3J0RnVuY3Rpb25zLCB0YWJsZUluZGV4KSksIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgp
OwotICAgICAgICAgICAgYXBwZW5kKEFkZDY0LCBpbnN0YW5jZVZhbHVlKCksIGNhbGxhYmxlRnVu
Y3Rpb25CdWZmZXJMZW5ndGgpOwotICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihj
YWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKSwgY2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0
aCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihp
bnN0YW5jZVZhbHVlKCksIEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVu
Y3Rpb25zLCB0YWJsZUluZGV4KSksIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgpOworICAg
ICAgICBhcHBlbmQoTW92ZSwgbWF0ZXJpYWxpemVBZGRyQXJnKGluc3RhbmNlVmFsdWUoKSwgSW5z
dGFuY2U6Om9mZnNldE9mVGFibGVQdHIobV9udW1JbXBvcnRGdW5jdGlvbnMsIHRhYmxlSW5kZXgp
LCBCMzo6V2lkdGg2NCksIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgpOwogICAgICAgICBh
cHBlbmQoTW92ZSwgQXJnOjphZGRyKGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgsIEZ1bmNS
ZWZUYWJsZTo6b2Zmc2V0T2ZGdW5jdGlvbnMoKSksIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXIpOwog
ICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5n
dGgsIEZ1bmNSZWZUYWJsZTo6b2Zmc2V0T2ZJbnN0YW5jZXMoKSksIGluc3RhbmNlc0J1ZmZlcik7
CiAgICAgICAgIGFwcGVuZChNb3ZlMzIsIEFyZzo6YWRkcihjYWxsYWJsZUZ1bmN0aW9uQnVmZmVy
TGVuZ3RoLCBUYWJsZTo6b2Zmc2V0T2ZMZW5ndGgoKSksIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJM
ZW5ndGgpOwpAQCAtMzgzNiw4ICszODYyLDggQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6ZW1pdElu
ZGlyZWN0Q2FsbChUeXBlZFRtcCBjYWxsZWVJbnN0YW5jZSwgRXhwcmVzc2lvblR5cGUgY2EKICAg
ICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOwogICAgICAgICAv
LyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlJ3JlIGNhbGxpbmcgc29tZXRoaW5nIHdpdGgg
Qm91bmRzQ2hlY2tpbmcgbWVtb3J5LgogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhh
dmUgdG8gZG8gdGhpczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MjE4MQotICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0
KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7Ci0gICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAg
ICAgcGF0Y2hwb2ludC0+Y2xvYmJlckZ1bGxXaWR0aChQaW5uZWRSZWdpc3RlckluZm86OmdldCgp
LnRvU2F2ZShNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpOworICAgICAgICBwYXRjaHBvaW50
LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7
CiAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAKICAgICAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtMzg4Niw3ICszOTEy
LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6ZW1pdEluZGlyZWN0Q2FsbChUeXBlZFRtcCBjYWxs
ZWVJbnN0YW5jZSwgRXhwcmVzc2lvblR5cGUgY2EKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5v
dCBoYXZlIHRvIGRvIHRoaXMsIGJ1dCB0aGUgd2FzbS0+d2FzbSBzdHViIGFzc3VtZXMgaXQgY2Fu
CiAgICAgLy8gdXNlIGFsbCB0aGUgcGlubmVkIHJlZ2lzdGVycyBhcyBzY3JhdGNoOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCiAKLSAgICBwYXRjaHBvaW50
LT5jbG9iYmVyTGF0ZShQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZShNZW1vcnlNb2Rl
OjpCb3VuZHNDaGVja2luZykpOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lzdGVy
U2V0MTI4Ojp1c2UxMjhCaXRzKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZlKE1lbW9y
eU1vZGU6OkJvdW5kc0NoZWNraW5nKSkpOwogCiAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC00Mjg1LDcgKzQzMTEsNyBAQCBhdXRvIEFpcklSR2Vu
ZXJhdG9yOjphZGRPcDxGNjRDb252ZXJ0VUk2ND4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNz
aW9uVHlwZSYgcgogICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBCMzo6RWZmZWN0czo6bm9uZSgp
OwogICAgIGlmIChpc1g4NigpKQogICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnMgPSAxOwotICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2Ny
YXRjaFJlZ2lzdGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lz
dGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgcGF0Y2hwb2ludC0+c2V0R2Vu
ZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7CiAjaWYgQ1BVKFg4Nl82NCkKQEAgLTQzMDYsNyArNDMzMiw3
IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6RjMyQ29udmVydFVJNjQ+KEV4
cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvCiAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEIz
OjpFZmZlY3RzOjpub25lKCk7CiAgICAgaWYgKGlzWDg2KCkpCiAgICAgICAgIHBhdGNocG9pbnQt
Pm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdp
c3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICBw
YXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6
OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICNpZiBDUFUoWDg2XzY0KQpA
QCAtNDU0MCw3ICs0NTY2LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJ
NjRUcnVuY1VGNjQ+KEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblQKICAgICBWZWN0b3I8
Q29uc3RyYWluZWRUbXA+IGFyZ3M7CiAgICAgYXV0byogcGF0Y2hwb2ludCA9IGFkZFBhdGNocG9p
bnQoQjM6OkludDY0KTsKICAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gQjM6OkVmZmVjdHM6Om5v
bmUoKTsKLSAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hS
ZWdpc3RlcnMoKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckZ1bGxXaWR0aChSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgIGFyZ3MuYXBwZW5kKGFyZyk7CiAgICAg
aWYgKGlzWDg2KCkpIHsKICAgICAgICAgYXJncy5hcHBlbmQoc2lnbkJpdENvbnN0YW50KTsKQEAg
LTQ2MTQsNyArNDY0MCw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0
VHJ1bmNVRjMyPihFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UCiAKICAgICBhdXRvKiBw
YXRjaHBvaW50ID0gYWRkUGF0Y2hwb2ludChCMzo6SW50NjQpOwogICAgIHBhdGNocG9pbnQtPmVm
ZmVjdHMgPSBCMzo6RWZmZWN0czo6bm9uZSgpOwotICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5jbG9i
YmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAg
VmVjdG9yPENvbnN0cmFpbmVkVG1wLCAyPiBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKGFyZyk7CiAg
ICAgaWYgKGlzWDg2KCkpIHsKQEAgLTU1NTQsNiArNTU4MCwyNzYgQEAgUGF0Y2hwb2ludEV4Y2Vw
dGlvbkhhbmRsZSBBaXJJUkdlbmVyYXRvcjo6cHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25z
KEIzOjpQYXQKICAgICByZXR1cm4gUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZSB7IG1fY2FsbFNp
dGVJbmRleCwgbnVtTGl2ZVZhbHVlcyB9OwogfQogCithdXRvIEFpcklSR2VuZXJhdG9yOjphZGRT
aW1kU3BsYXQoU2ltZExhbmUgbGFuZSwgRXhwcmVzc2lvblR5cGUgc2NhbGFyLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgVG1wIHRvU3BsYXQgPSBzY2Fs
YXIudG1wKCk7CisgICAgaWYgKHNjYWxhclR5cGVJc0Zsb2F0aW5nUG9pbnQobGFuZSkpIHsKKyAg
ICAgICAgVG1wIGdwQ2FzdCA9IG5ld1RtcChCMzo6R1ApOworICAgICAgICBhcHBlbmQoZWxlbWVu
dEJ5dGVTaXplKGxhbmUpID09IDQgPyBNb3ZlRmxvYXRUbzMyIDogTW92ZURvdWJsZVRvNjQsIHRv
U3BsYXQsIGdwQ2FzdCk7CisgICAgICAgIHRvU3BsYXQgPSBncENhc3Q7CisgICAgfQorCisgICAg
QjM6OkFpcjo6T3Bjb2RlIG9wOworICAgIHN3aXRjaCAoZWxlbWVudEJ5dGVTaXplKGxhbmUpKSB7
CisgICAgY2FzZSAxOgorICAgICAgICBvcCA9IFZlY3RvclNwbGF0ODsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSAyOgorICAgICAgICBvcCA9IFZlY3RvclNwbGF0MTY7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgNDoKKyAgICAgICAgb3AgPSBWZWN0b3JTcGxhdDMyOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIDg6CisgICAgICAgIG9wID0gVmVjdG9yU3BsYXQ2NDsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisKKyAgICByZXN1bHQgPSB2MTI4KCk7CisgICAgYXBwZW5kKG9wLCB0b1NwbGF0LCBy
ZXN1bHQudG1wKCkpOworCisgICAgcmV0dXJuIHsgfTsKK30KKworYXV0byBBaXJJUkdlbmVyYXRv
cjo6YWRkU2ltZFNoaWZ0KFNpbWRMYW5lT3BlcmF0aW9uIG9wLCBTaW1kSW5mbyBpbmZvLCBFeHBy
ZXNzaW9uVHlwZSB2LCBFeHByZXNzaW9uVHlwZSBzaGlmdCwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCkgLT4gUGFydGlhbFJlc3VsdAoreworICAgIHJlc3VsdCA9IHYxMjgoKTsKKyAgICBpbnQzMl90
IG1hc2sgPSAoZWxlbWVudEJ5dGVTaXplKGluZm8ubGFuZSkgKiBDSEFSX0JJVCkgLSAxOworCisg
ICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICBUbXAgc2hpZnRBbW91bnQgPSBuZXdUbXAoQjM6
OkdQKTsKKyAgICAgICAgVG1wIHNoaWZ0VmVjdG9yID0gbmV3VG1wKEIzOjpGUCk7CisgICAgICAg
IGFwcGVuZChBbmQzMiwgQXJnOjpiaXRJbW0obWFzayksIHNoaWZ0LnRtcCgpLCBzaGlmdEFtb3Vu
dCk7CisgICAgICAgIGlmIChvcCA9PSBTaW1kTGFuZU9wZXJhdGlvbjo6U2hyKSB7CisgICAgICAg
ICAgICAvLyBBUk02NCBkb2Vzbid0IGhhdmUgYSB2ZXJzaW9uIG9mIHRoaXMgaW5zdHJ1Y3Rpb24g
Zm9yIHJpZ2h0IHNoaWZ0LiBJbnN0ZWFkLCBpZiB0aGUgaW5wdXQgdG8KKyAgICAgICAgICAgIC8v
IGxlZnQgc2hpZnQgaXMgbmVnYXRpdmUsIGl0J3MgYSByaWdodCBzaGlmdCBieSB0aGUgYWJzb2x1
dGUgdmFsdWUgb2YgdGhhdCBhbW91bnQuCisgICAgICAgICAgICBhcHBlbmQoTmVnMzIsIHNoaWZ0
QW1vdW50KTsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoVmVjdG9yU3BsYXQ4LCBzaGlmdEFt
b3VudCwgc2hpZnRWZWN0b3IpOworICAgICAgICBhcHBlbmQoaW5mby5zaWduTW9kZSA9PSBTaW1k
U2lnbk1vZGU6OlNpZ25lZCA/IFZlY3RvclNzaGwgOiBWZWN0b3JVc2hsLCB2LnRtcCgpLCBzaGlm
dFZlY3RvciwgcmVzdWx0LnRtcCgpKTsKKworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKwor
ICAgIC8vIE9PUFM6IGltcGxlbWVudCB4ODYKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFNpbWRF
eHRtdWwoU2ltZExhbmVPcGVyYXRpb24gb3AsIFNpbWRJbmZvIGluZm8sIEV4cHJlc3Npb25UeXBl
IGxocywgRXhwcmVzc2lvblR5cGUgcmhzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0
aWFsUmVzdWx0Cit7CisgICAgQVNTRVJUKGluZm8uc2lnbk1vZGUgIT0gU2ltZFNpZ25Nb2RlOjpO
b25lKTsKKworICAgIHJlc3VsdCA9IHYxMjgoKTsKKworICAgIGF1dG8gbGhzVG1wID0gbmV3VG1w
KEIzOjpGUCk7CisgICAgYXV0byByaHNUbXAgPSBuZXdUbXAoQjM6OkZQKTsKKworICAgIFNpbWRJ
bmZvIG11bEluZm8gPSBTaW1kSW5mbyB7IHByb21vdGVkTGFuZShpbmZvLmxhbmUpLCBTaW1kU2ln
bk1vZGU6Ok5vbmUgfTsKKworICAgIC8vIG9vcHM6IHNob3VsZCB1c2Ugd2lkZW5pbmcgbXVsIGlu
c3RydWN0aW9uPworICAgIGF1dG8gZXh0T3AgPSBvcCA9PSBTaW1kTGFuZU9wZXJhdGlvbjo6RXh0
bXVsTG93ID8gVmVjdG9yRXh0ZW5kTG93IDogVmVjdG9yRXh0ZW5kSGlnaDsKKyAgICBhcHBlbmQo
ZXh0T3AsIEFyZzo6c2ltZEluZm8oaW5mbyksIGxocy50bXAoKSwgbGhzVG1wKTsKKyAgICBhcHBl
bmQoZXh0T3AsIEFyZzo6c2ltZEluZm8oaW5mbyksIHJocy50bXAoKSwgcmhzVG1wKTsKKyAgICBh
cHBlbmQoVmVjdG9yTXVsLCBBcmc6OnNpbWRJbmZvKG11bEluZm8pLCBsaHNUbXAsIHJoc1RtcCwg
cmVzdWx0LnRtcCgpKTsKKworICAgIHJldHVybiB7IH07Cit9CisKKworYXV0byBBaXJJUkdlbmVy
YXRvcjo6YWRkU2ltZExvYWQoRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgb2Zmc2V0
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgcmVzdWx0
ID0gdjEyOCgpOworCisgICAgcHJlcGFyZUFuZENoZWNrRm9yTWVtb3AocG9pbnRlciwgb2Zmc2V0
LCBCMzo6V2lkdGgxMjgpOworICAgIGFwcGVuZEVmZmVjdGZ1bChNb3ZlVmVjdG9yLCBtYXRlcmlh
bGl6ZUFkZHJBcmcocG9pbnRlciwgb2Zmc2V0LCBCMzo6V2lkdGgxMjgpLCByZXN1bHQpOworCisg
ICAgcmV0dXJuIHsgfTsKK30KKworYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkU2ltZFN0b3JlKEV4
cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJfdCBvZmZz
ZXQpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBwcmVwYXJlQW5kQ2hlY2tGb3JNZW1vcChwb2lu
dGVyLCBvZmZzZXQsIEIzOjpXaWR0aDEyOCk7CisgICAgYXBwZW5kRWZmZWN0ZnVsKE1vdmVWZWN0
b3IsIHZhbHVlLCBtYXRlcmlhbGl6ZUFkZHJBcmcocG9pbnRlciwgb2Zmc2V0LCBCMzo6V2lkdGgx
MjgpKTsKKworICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFNp
bWRTaHVmZmxlKHYxMjhfdCBpbW0sIEV4cHJlc3Npb25UeXBlIGEsIEV4cHJlc3Npb25UeXBlIGIs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICByZXN1bHQg
PSB2MTI4KCk7CisKKyAgICBhcHBlbmQoVmVjdG9yU2h1ZmZsZSwgQXJnOjpiaWdJbW0oaW1tLnU2
NHgyWzBdKSwgQXJnOjpiaWdJbW0oaW1tLnU2NHgyWzFdKSwgYSwgYiwgcmVzdWx0KTsKKworICAg
IHJldHVybiB7IH07Cit9CisKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFNpbWRMb2FkU3BsYXQo
U2ltZExhbmVPcGVyYXRpb24gb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIHVpbnQzMl90IG9m
ZnNldCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAoreworICAgIEIz
OjpBaXI6Ok9wY29kZSBvcGNvZGU7CisgICAgQjM6OldpZHRoIHdpZHRoOworICAgIHN3aXRjaCAo
b3ApIHsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkU3BsYXQ4OgorICAgICAgICBv
cGNvZGUgPSBWZWN0b3JMb2FkOFNwbGF0OworICAgICAgICB3aWR0aCA9IEIzOjpXaWR0aDg7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltZExhbmVPcGVyYXRpb246OkxvYWRTcGxhdDE2Ogor
ICAgICAgICBvcGNvZGUgPSBWZWN0b3JMb2FkMTZTcGxhdDsKKyAgICAgICAgd2lkdGggPSBCMzo6
V2lkdGgxNjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9h
ZFNwbGF0MzI6CisgICAgICAgIG9wY29kZSA9IFZlY3RvckxvYWQzMlNwbGF0OworICAgICAgICB3
aWR0aCA9IEIzOjpXaWR0aDMyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbWRMYW5lT3Bl
cmF0aW9uOjpMb2FkU3BsYXQ2NDoKKyAgICAgICAgb3Bjb2RlID0gVmVjdG9yTG9hZDY0U3BsYXQ7
CisgICAgICAgIHdpZHRoID0gQjM6OldpZHRoNjQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAg
cmVzdWx0ID0gdjEyOCgpOworCisgICAgcHJlcGFyZUFuZENoZWNrRm9yTWVtb3AocG9pbnRlciwg
b2Zmc2V0LCB3aWR0aCk7CisgICAgYXBwZW5kRWZmZWN0ZnVsKG9wY29kZSwgbWF0ZXJpYWxpemVT
aW1wbGVBZGRyQXJnKHBvaW50ZXIsIG9mZnNldCksIHJlc3VsdCk7CisKKyAgICByZXR1cm4geyB9
OworfQorCithdXRvIEFpcklSR2VuZXJhdG9yOjphZGRTaW1kTG9hZExhbmUoU2ltZExhbmVPcGVy
YXRpb24gb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZlY3Rvciwg
dWludDMyX3Qgb2Zmc2V0LCB1aW50OF90IGxhbmVJbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCkgLT4gUGFydGlhbFJlc3VsdAoreworICAgIEIzOjpBaXI6Ok9wY29kZSBvcGNvZGU7CisgICAg
QjM6OldpZHRoIHdpZHRoOworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIFNpbWRMYW5lT3Bl
cmF0aW9uOjpMb2FkTGFuZTg6CisgICAgICAgIG9wY29kZSA9IFZlY3RvckxvYWQ4TGFuZTsKKyAg
ICAgICAgd2lkdGggPSBCMzo6V2lkdGg4OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbWRM
YW5lT3BlcmF0aW9uOjpMb2FkTGFuZTE2OgorICAgICAgICBvcGNvZGUgPSBWZWN0b3JMb2FkMTZM
YW5lOworICAgICAgICB3aWR0aCA9IEIzOjpXaWR0aDE2OworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkTGFuZTMyOgorICAgICAgICBvcGNvZGUgPSBWZWN0
b3JMb2FkMzJMYW5lOworICAgICAgICB3aWR0aCA9IEIzOjpXaWR0aDMyOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkTGFuZTY0OgorICAgICAgICBvcGNv
ZGUgPSBWZWN0b3JMb2FkNjRMYW5lOworICAgICAgICB3aWR0aCA9IEIzOjpXaWR0aDY0OworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KKyAgICByZXN1bHQgPSB2MTI4KCk7CisKKyAgICBwcmVwYXJlQW5kQ2hl
Y2tGb3JNZW1vcChwb2ludGVyLCBvZmZzZXQsIHdpZHRoKTsKKyAgICBhcHBlbmQoTW92ZVZlY3Rv
ciwgdmVjdG9yLCByZXN1bHQpOworICAgIGFwcGVuZEVmZmVjdGZ1bChvcGNvZGUsIG1hdGVyaWFs
aXplU2ltcGxlQWRkckFyZyhwb2ludGVyLCBvZmZzZXQpLCBBcmc6OmltbShsYW5lSW5kZXgpLCBy
ZXN1bHQpOworCisgICAgcmV0dXJuIHsgfTsKK30KKworYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRk
U2ltZFN0b3JlTGFuZShTaW1kTGFuZU9wZXJhdGlvbiBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRl
ciwgRXhwcmVzc2lvblR5cGUgdmVjdG9yLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQ4X3QgbGFuZUlu
ZGV4KSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgQjM6OkFpcjo6T3Bjb2RlIG9wY29kZTsKKyAg
ICBCMzo6V2lkdGggd2lkdGg7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgU2ltZExhbmVP
cGVyYXRpb246OlN0b3JlTGFuZTg6CisgICAgICAgIG9wY29kZSA9IFZlY3RvclN0b3JlOExhbmU7
CisgICAgICAgIHdpZHRoID0gQjM6OldpZHRoODsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
aW1kTGFuZU9wZXJhdGlvbjo6U3RvcmVMYW5lMTY6CisgICAgICAgIG9wY29kZSA9IFZlY3RvclN0
b3JlMTZMYW5lOworICAgICAgICB3aWR0aCA9IEIzOjpXaWR0aDE2OworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpTdG9yZUxhbmUzMjoKKyAgICAgICAgb3Bjb2Rl
ID0gVmVjdG9yU3RvcmUzMkxhbmU7CisgICAgICAgIHdpZHRoID0gQjM6OldpZHRoMzI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgU2ltZExhbmVPcGVyYXRpb246OlN0b3JlTGFuZTY0OgorICAg
ICAgICBvcGNvZGUgPSBWZWN0b3JTdG9yZTY0TGFuZTsKKyAgICAgICAgd2lkdGggPSBCMzo6V2lk
dGg2NDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBwcmVwYXJlQW5kQ2hlY2tGb3JNZW1vcChw
b2ludGVyLCBvZmZzZXQsIHdpZHRoKTsKKyAgICBhcHBlbmRFZmZlY3RmdWwob3Bjb2RlLCB2ZWN0
b3IsIG1hdGVyaWFsaXplU2ltcGxlQWRkckFyZyhwb2ludGVyLCBvZmZzZXQpLCBBcmc6OmltbShs
YW5lSW5kZXgpKTsKKworICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8gQWlySVJHZW5lcmF0b3I6
OmFkZFNpbWRMb2FkRXh0ZW5kKFNpbWRMYW5lT3BlcmF0aW9uIG9wLCBFeHByZXNzaW9uVHlwZSBw
b2ludGVyLCB1aW50MzJfdCBvZmZzZXQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRp
YWxSZXN1bHQKK3sKKyAgICBTaW1kTGFuZSBsYW5lOworICAgIFNpbWRTaWduTW9kZSBzaWduTW9k
ZTsKKworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2Fk
RXh0ZW5kOFU6CisgICAgICAgIGxhbmUgPSBTaW1kTGFuZTo6aTE2eDg7CisgICAgICAgIHNpZ25N
b2RlID0gU2ltZFNpZ25Nb2RlOjpVbnNpZ25lZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
aW1kTGFuZU9wZXJhdGlvbjo6TG9hZEV4dGVuZDhTOgorICAgICAgICBsYW5lID0gU2ltZExhbmU6
OmkxNng4OworICAgICAgICBzaWduTW9kZSA9IFNpbWRTaWduTW9kZTo6U2lnbmVkOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkRXh0ZW5kMTZVOgorICAg
ICAgICBsYW5lID0gU2ltZExhbmU6OmkzMng0OworICAgICAgICBzaWduTW9kZSA9IFNpbWRTaWdu
TW9kZTo6VW5zaWduZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltZExhbmVPcGVyYXRp
b246OkxvYWRFeHRlbmQxNlM6CisgICAgICAgIGxhbmUgPSBTaW1kTGFuZTo6aTMyeDQ7CisgICAg
ICAgIHNpZ25Nb2RlID0gU2ltZFNpZ25Nb2RlOjpTaWduZWQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU2ltZExhbmVPcGVyYXRpb246OkxvYWRFeHRlbmQzMlU6CisgICAgICAgIGxhbmUgPSBT
aW1kTGFuZTo6aTY0eDI7CisgICAgICAgIHNpZ25Nb2RlID0gU2ltZFNpZ25Nb2RlOjpVbnNpZ25l
ZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9hZEV4dGVu
ZDMyUzoKKyAgICAgICAgbGFuZSA9IFNpbWRMYW5lOjppNjR4MjsKKyAgICAgICAgc2lnbk1vZGUg
PSBTaW1kU2lnbk1vZGU6OlNpZ25lZDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICByZXN1bHQg
PSB2MTI4KCk7CisKKyAgICBwcmVwYXJlQW5kQ2hlY2tGb3JNZW1vcChwb2ludGVyLCBvZmZzZXQs
IEIzOjpXaWR0aDY0KTsKKyAgICBhcHBlbmRFZmZlY3RmdWwoTW92ZURvdWJsZSwgbWF0ZXJpYWxp
emVTaW1wbGVBZGRyQXJnKHBvaW50ZXIsIG9mZnNldCksIHJlc3VsdCk7CisgICAgYXBwZW5kKFZl
Y3RvckV4dGVuZExvdywgQXJnOjpzaW1kSW5mbyh7IGxhbmUsIHNpZ25Nb2RlIH0pLCByZXN1bHQs
IHJlc3VsdCk7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIEFpcklSR2VuZXJhdG9yOjph
ZGRTaW1kTG9hZFBhZChTaW1kTGFuZU9wZXJhdGlvbiBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRl
ciwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVz
dWx0Cit7CisgICAgQjM6OldpZHRoIHNpemU7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2Ug
U2ltZExhbmVPcGVyYXRpb246OkxvYWRQYWQzMjoKKyAgICAgICAgc2l6ZSA9IEIzOjpXaWR0aDMy
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkUGFkNjQ6
CisgICAgICAgIHNpemUgPSBCMzo6V2lkdGg2NDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBy
ZXN1bHQgPSB2MTI4KCk7CisKKyAgICBwcmVwYXJlQW5kQ2hlY2tGb3JNZW1vcChwb2ludGVyLCBv
ZmZzZXQsIEIzOjpXaWR0aDY0KTsKKyAgICBhcHBlbmRFZmZlY3RmdWwoTW92ZURvdWJsZSwgbWF0
ZXJpYWxpemVTaW1wbGVBZGRyQXJnKHBvaW50ZXIsIG9mZnNldCksIHJlc3VsdCk7IC8vIE9PUFMg
dmVyaWZ5IHpleHQ/CisKKyAgICByZXR1cm4geyB9OworfQorCisjaW5jbHVkZSAiV2FzbUFpcklS
R2VuZXJhdG9ySW5saW5lcy5oIgorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZX0IzSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDU3MGRmMzZmYjI0OS4uMWRhNjRk
MTE1YmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCkBAIC0zMiwxMSArMzIsMTMgQEAKICNpbmNsdWRlICJBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2VJZi5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNp
bmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnN0MTI4VmFsdWUuaCIKICNp
bmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKICNpbmNsdWRlICJCM0VzdGltYXRlU3RhdGljRXhl
Y3V0aW9uQ291bnRzLmgiCiAjaW5jbHVkZSAiQjNGaXhTU0EuaCIKICNpbmNsdWRlICJCM0dlbmVy
YXRlLmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJCM1NpbWRWYWx1
ZS5oIgogI2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAi
QjNTd2l0Y2hWYWx1ZS5oIgogI2luY2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCkBAIC02Myw2ICs2
NSw3IEBACiAjaW5jbHVkZSAiV2FzbU9TUkVudHJ5RGF0YS5oIgogI2luY2x1ZGUgIldhc21PcGNv
ZGVPcmlnaW4uaCIKICNpbmNsdWRlICJXYXNtT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIldhc21P
cHMuaCIKICNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldhc21U
aHVua3MuaCIKICNpbmNsdWRlIDxsaW1pdHM+CkBAIC0zMDYsOCArMzA5LDkgQEAgcHVibGljOgog
ICAgIEIzSVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mLCBQcm9jZWR1cmUmLCBJ
bnRlcm5hbEZ1bmN0aW9uKiwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiwgdW5zaWdu
ZWQmIG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUsIE1lbW9yeU1vZGUsIENvbXBpbGF0aW9uTW9k
ZSwgdW5zaWduZWQgZnVuY3Rpb25JbmRleCwgdW5zaWduZWQgbG9vcEluZGV4Rm9yT1NSRW50cnks
IFRpZXJVcENvdW50Kik7CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJik7Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkTG9jYWwoVHlwZSwgdWludDMyX3QpOworICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZExvY2FsKFR5cGUsIHVpbnQzMl90LCB1aW50MzJfdCk7CiAg
ICAgRXhwcmVzc2lvblR5cGUgYWRkQ29uc3RhbnQoVHlwZSwgdWludDY0X3QpOworICAgIEV4cHJl
c3Npb25UeXBlIGFkZENvbnN0YW50KHYxMjhfdCk7CiAKICAgICAvLyBSZWZlcmVuY2VzCiAgICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmSXNOdWxsKEV4cHJlc3Npb25U
eXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTMyNCw4ICszMjgsOCBAQCBw
dWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVDb3B5
KHVuc2lnbmVkLCB1bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUgZHN0T2Zmc2V0LCBFeHByZXNzaW9u
VHlwZSBzcmNPZmZzZXQsIEV4cHJlc3Npb25UeXBlIGxlbmd0aCk7CiAKICAgICAvLyBMb2NhbHMK
LSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRMb2NhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gc2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVl
KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRMb2NhbCh1aW50MzJf
dCBpbmRleCwgV2FzbTo6VHlwZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gc2V0TG9jYWwodWludDMyX3QgaW5kZXgsIFdhc206
OlR5cGUsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKIAogICAgIC8vIEdsb2JhbHMKICAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpOwpAQCAtMzU0LDYgKzM1OCwxOCBAQCBwdWJsaWM6CiAgICAg
Ly8gU2F0dXJhdGVkIHRydW5jYXRpb24uCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gdHJ1bmNTYXR1cmF0ZWQoRXh0MU9wVHlwZSwgRXhwcmVzc2lvblR5cGUgb3BlcmFuZCwg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgVHlwZSByZXR1cm5UeXBlLCBUeXBlIG9wZXJhbmRUeXBl
KTsKIAorICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFNpbWRTcGxhdChT
aW1kTGFuZSwgRXhwcmVzc2lvblR5cGUgc2NhbGFyLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
KyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRTaW1kU2h1ZmZsZSh2MTI4
X3QgaW1tLCBFeHByZXNzaW9uVHlwZSBhLCBFeHByZXNzaW9uVHlwZSBiLCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRTaW1k
U2hpZnQoU2ltZExhbmVPcGVyYXRpb24sIFNpbWRJbmZvLCBFeHByZXNzaW9uVHlwZSB2LCBFeHBy
ZXNzaW9uVHlwZSBzaGlmdCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU2ltZEV4dG11bChTaW1kTGFuZU9wZXJhdGlvbiwg
U2ltZEluZm8sIEV4cHJlc3Npb25UeXBlIGxocywgRXhwcmVzc2lvblR5cGUgcmhzLCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRTaW1kTG9hZChFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJfdCBvZmZzZXQsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZFNpbWRTdG9yZShFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lvblR5cGUgcG9pbnRl
ciwgdWludDMyX3Qgb2Zmc2V0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBhZGRTaW1kTG9hZFNwbGF0KFNpbWRMYW5lT3BlcmF0aW9uLCBFeHByZXNzaW9uVHlwZSBwb2lu
dGVyLCB1aW50MzJfdCBvZmZzZXQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFNpbWRMb2FkTGFuZShTaW1kTGFuZU9wZXJh
dGlvbiwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUgdmVjdG9yLCB1aW50
MzJfdCBvZmZzZXQsIHVpbnQ4X3QgbGFuZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
KyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRTaW1kU3RvcmVMYW5lKFNp
bWRMYW5lT3BlcmF0aW9uLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSB2
ZWN0b3IsIHVpbnQzMl90IG9mZnNldCwgdWludDhfdCBsYW5lSW5kZXgpOworICAgIFBhcnRpYWxS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFNpbWRMb2FkRXh0ZW5kKFNpbWRMYW5lT3BlcmF0
aW9uLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJfdCBvZmZzZXQsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFNp
bWRMb2FkUGFkKFNpbWRMYW5lT3BlcmF0aW9uLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50
MzJfdCBvZmZzZXQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworCiAgICAgLy8gQmFzaWMgb3Bl
cmF0b3JzCiAgICAgdGVtcGxhdGU8T3BUeXBlPgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIGFkZE9wKEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCk7CkBAIC0zNzcsNyArMzkzLDcgQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZENhdGNoQWxsVG9VbnJlYWNoYWJsZShDb250cm9sVHlwZSYpOwogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZERlbGVnYXRlKENvbnRyb2xUeXBl
JiwgQ29udHJvbFR5cGUmKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGREZWxlZ2F0ZVRvVW5yZWFjaGFibGUoQ29udHJvbFR5cGUmLCBDb250cm9sVHlwZSYpOwotICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRocm93KHVuc2lnbmVkIGV4Y2Vw
dGlvbkluZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBTdGFjayYpOworICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlv
bkluZGV4LCBTdGFjayYgYXJncyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkUmV0aHJvdyh1bnNpZ25lZCwgQ29udHJvbFR5cGUmKTsKIAogICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJldHVybihjb25zdCBDb250cm9sRGF0YSYsIGNvbnN0
IFN0YWNrJiByZXR1cm5WYWx1ZXMpOwpAQCAtMzk1LDExICs0MTEsMjMgQEAgcHVibGljOgogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFVucmVhY2hhYmxlKCk7CiAgICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdEluZGlyZWN0Q2FsbChWYWx1ZSog
Y2FsbGVlSW5zdGFuY2UsIFZhbHVlKiBjYWxsZWVDb2RlLCBjb25zdCBTaWduYXR1cmUmLCBWZWN0
b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0Jik7CiAgICAgQjM6OlZhbHVlKiBj
cmVhdGVDYWxsUGF0Y2hwb2ludChCYXNpY0Jsb2NrKiwgT3JpZ2luLCBjb25zdCBTaWduYXR1cmUm
LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChQ
YXRjaHBvaW50VmFsdWUqLCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4pPiYgcGF0Y2hw
b2ludEZ1bmN0b3IpOworICAgIAorICAgIC8vIFNpbWQKKyAgICB0ZW1wbGF0ZTxFeHRTaW1kT3BU
eXBlPgorICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFNpbWRPcChFeHBy
ZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUmKTsKKyAgICB0ZW1wbGF0ZTxFeHRTaW1kT3BUeXBl
PgorICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFNpbWRPcChFeHByZXNz
aW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlJik7CisgICAgdGVtcGxhdGU8
RXh0U2ltZE9wVHlwZT4KKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRT
aW1kT3AoRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgRXhw
cmVzc2lvblR5cGUmKTsKKyAgICB0ZW1wbGF0ZTxFeHRTaW1kT3BUeXBlPgorICAgIFBhcnRpYWxS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFNpbWRPcCh1aW50OF90LCBFeHByZXNzaW9uVHlw
ZSwgRXhwcmVzc2lvblR5cGUmKTsKKyAgICB0ZW1wbGF0ZTxFeHRTaW1kT3BUeXBlPgorICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFNpbWRPcCh1aW50OF90LCBFeHByZXNz
aW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlJik7CiAKICAgICB2b2lkIGR1
bXAoY29uc3QgQ29udHJvbFN0YWNrJiwgY29uc3QgU3RhY2sqIGV4cHJlc3Npb25TdGFjayk7CiAg
ICAgdm9pZCBzZXRQYXJzZXIoRnVuY3Rpb25QYXJzZXI8QjNJUkdlbmVyYXRvcj4qIHBhcnNlcikg
eyBtX3BhcnNlciA9IHBhcnNlcjsgfTsKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmdMb2NhbHMo
KSB7IH0KLSAgICB2b2lkIGRpZFBvcFZhbHVlRnJvbVN0YWNrKCkgeyAtLW1fc3RhY2tTaXplOyB9
CisgICAgdm9pZCBkaWRQb3BWYWx1ZUZyb21TdGFjayhXYXNtOjpUeXBlKSB7IC0tbV9zdGFja1Np
emU7IH0KIAogICAgIFZhbHVlKiBjb25zdGFudChCMzo6VHlwZSwgdWludDY0X3QgYml0cywgc3Rk
OjpvcHRpb25hbDxPcmlnaW4+ID0gc3RkOjpudWxsb3B0KTsKICAgICBWYWx1ZSogZnJhbWVQb2lu
dGVyKCk7CkBAIC00NDYsNyArNDc0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZW1pdENoZWNr
c0Zvck1vZE9yRGl2KEIzOjpPcGNvZGUsIFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpOwogCi0g
ICAgaW50MzJfdCBXQVJOX1VOVVNFRF9SRVRVUk4gZml4dXBQb2ludGVyUGx1c09mZnNldChWYWx1
ZSomLCB1aW50MzJfdCk7CisgICAgdm9pZCBmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0KFZhbHVlKiYs
IHVpbnQzMl90Jik7CiAgICAgVmFsdWUqIFdBUk5fVU5VU0VEX1JFVFVSTiBmaXh1cFBvaW50ZXJQ
bHVzT2Zmc2V0Rm9yQXRvbWljT3BzKEV4dEF0b21pY09wVHlwZSwgVmFsdWUqLCB1aW50MzJfdCk7
CiAKICAgICB2b2lkIHJlc3RvcmVXYXNtQ29udGV4dEluc3RhbmNlKFByb2NlZHVyZSYsIEJhc2lj
QmxvY2sqLCBWYWx1ZSopOwpAQCAtNTcwLDEzICs1OTgsMTIgQEAgcHJpdmF0ZToKIH07CiAKIC8v
IE1lbW9yeSBhY2Nlc3NlcyBpbiBXZWJBc3NlbWJseSBoYXZlIHVuc2lnbmVkIDMyLWJpdCBvZmZz
ZXRzLCB3aGVyZWFzIHRoZXkgaGF2ZSBzaWduZWQgMzItYml0IG9mZnNldHMgaW4gQjMuCi1pbnQz
Ml90IEIzSVJHZW5lcmF0b3I6OmZpeHVwUG9pbnRlclBsdXNPZmZzZXQoVmFsdWUqJiBwdHIsIHVp
bnQzMl90IG9mZnNldCkKK3ZvaWQgQjNJUkdlbmVyYXRvcjo6Zml4dXBQb2ludGVyUGx1c09mZnNl
dChWYWx1ZSomIHB0ciwgdWludDMyX3QmIG9mZnNldCkKIHsKICAgICBpZiAoc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG9mZnNldCkgPiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkpKSB7CiAgICAgICAgIHB0ciA9IG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQWRkLCBvcmlnaW4oKSwgcHRyLCBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgb2Zmc2V0KSk7Ci0g
ICAgICAgIHJldHVybiAwOworICAgICAgICBvZmZzZXQgPSAwOwogICAgIH0KLSAgICByZXR1cm4g
b2Zmc2V0OwogfQogCiB2b2lkIEIzSVJHZW5lcmF0b3I6OnJlc3RvcmVXYXNtQ29udGV4dEluc3Rh
bmNlKFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2ssIFZhbHVlKiBhcmcpCkBAIC01
ODQsNyArNjExLDcgQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjpyZXN0b3JlV2FzbUNvbnRleHRJbnN0
YW5jZShQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2MKICAgICBpZiAoQ29udGV4dDo6
dXNlRmFzdFRMUygpKSB7CiAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJs
b2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgT3JpZ2luKCkp
OwogICAgICAgICBpZiAoQ0NhbGxIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0SW5zdGFuY2VOZWVk
c01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpCi0gICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVy
KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgICAgICBwYXRj
aHBvaW50LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZywg
VmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtNjAxLDcgKzYyOCw3IEBAIHZvaWQgQjNJUkdl
bmVyYXRvcjo6cmVzdG9yZVdhc21Db250ZXh0SW5zdGFuY2UoUHJvY2VkdXJlJiBwcm9jLCBCYXNp
Y0Jsb2NrKiBibG9jCiAgICAgZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOwogICAgIGVmZmVj
dHMucmVhZHMgPSBCMzo6SGVhcFJhbmdlOjp0b3AoKTsKICAgICBwYXRjaHBvaW50LT5lZmZlY3Rz
ID0gZWZmZWN0czsKLSAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldChtX3dh
c21Db250ZXh0SW5zdGFuY2VHUFIpKTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdp
c3RlclNldDEyOChtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIpKTsKICAgICBwYXRjaHBvaW50LT5h
cHBlbmQoYXJnLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKICAgICBHUFJSZWcgd2FzbUNvbnRl
eHRJbnN0YW5jZUdQUiA9IG1fd2FzbUNvbnRleHRJbnN0YW5jZUdQUjsKICAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbSkgewpAQCAtNjU5LDcgKzY4Niw3IEBAIEIzSVJHZW5lcmF0b3I6
OkIzSVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYg
cHJvY2VkdXJlCiAgICAgewogICAgICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBnZXRJbnN0YW5j
ZSA9IG1fdG9wTGV2ZWxCbG9jay0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KG1fcHJv
YywgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCkpOwogICAgICAgICBpZiAoQ29udGV4dDo6dXNlRmFz
dFRMUygpKQotICAgICAgICAgICAgZ2V0SW5zdGFuY2UtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1h
Y3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgICAgIGdldEluc3RhbmNlLT5jbG9iYmVy
RnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6IEJlY2F1c2UgV2FzbVRvV2FzbSBjYWxsIGNs
b2JiZXJzIHdhc21Db250ZXh0SW5zdGFuY2UgcmVnaXN0ZXIgYW5kIGRvZXMgbm90IHJlc3RvcmUg
aXQsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBpbiB0aGUgY2FsbGVyIHNpZGUuCiAgICAgICAgICAg
ICAvLyBUaGlzIHByZXZlbnRzIHVzIGZyb20gdXNpbmcgQXJndW1lbnRSZWcgdG8gdGhpcyAobG9n
aWNhbGx5KSBpbW11dGFibGUgcGlubmVkIHJlZ2lzdGVyLgpAQCAtNzEyLDcgKzczOSw3IEBAIEIz
SVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8s
IFByb2NlZHVyZSYgcHJvY2VkdXJlCiAgICAgICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHN0YWNr
T3ZlcmZsb3dDaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRW
YWx1ZT4obV9wcm9jLCBWb2lkLCBPcmlnaW4oKSk7CiAgICAgICAgIHN0YWNrT3ZlcmZsb3dDaGVj
ay0+YXBwZW5kU29tZVJlZ2lzdGVyKGluc3RhbmNlVmFsdWUoKSk7CiAgICAgICAgIHN0YWNrT3Zl
cmZsb3dDaGVjay0+YXBwZW5kU29tZVJlZ2lzdGVyKGZyYW1lUG9pbnRlcigpKTsKLSAgICAgICAg
c3RhY2tPdmVyZmxvd0NoZWNrLT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdp
c3RlcnMoKSk7CisgICAgICAgIHN0YWNrT3ZlcmZsb3dDaGVjay0+Y2xvYmJlckZ1bGxXaWR0aChS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBzdGFja092ZXJm
bG93Q2hlY2stPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDI7CiAgICAgICAgIHN0YWNrT3ZlcmZs
b3dDaGVjay0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgY29u
c3QgQ2hlY2tlZDxpbnQzMl90PiB3YXNtRnJhbWVTaXplID0gcGFyYW1zLnByb2MoKS5mcmFtZVNp
emUoKTsKQEAgLTc3NiwxMCArODAzLDEwIEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdl
YkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hlZFN0YWNrTGltaXQgcmVzdG9yCiAKICAg
ICBpZiAoISFtZW1vcnkpIHsKICAgICAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvKiBwaW5u
ZWRSZWdzID0gJlBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7Ci0gICAgICAgIFJlZ2lzdGVyU2V0
IGNsb2JiZXJzOworICAgICAgICBSZWdpc3RlclNldDEyOCBjbG9iYmVyczsKICAgICAgICAgY2xv
YmJlcnMuc2V0KHBpbm5lZFJlZ3MtPmJhc2VNZW1vcnlQb2ludGVyKTsKICAgICAgICAgY2xvYmJl
cnMuc2V0KHBpbm5lZFJlZ3MtPmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsKLSAgICAgICAg
Y2xvYmJlcnMuc2V0KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAg
ICAgIGNsb2JiZXJzLm1lcmdlKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7
CiAKICAgICAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBl
bmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIG9yaWdpbigpKTsKICAg
ICAgICAgRWZmZWN0cyBlZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOwpAQCAtODg0LDcgKzkxMSw3
IEBAIEIzOjpUeXBlIEIzSVJHZW5lcmF0b3I6OnRvQjNSZXN1bHRUeXBlKEJsb2NrU2lnbmF0dXJl
IHJldHVyblR5cGUpCiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLWF1
dG8gQjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1aW50MzJfdCBjb3VudCkgLT4g
UGFydGlhbFJlc3VsdAorYXV0byBCM0lSR2VuZXJhdG9yOjphZGRMb2NhbChUeXBlIHR5cGUsIHVp
bnQzMl90LCB1aW50MzJfdCBjb3VudCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIHNpemVfdCBu
ZXdTaXplID0gbV9sb2NhbHMuc2l6ZSgpICsgY291bnQ7CiAgICAgQVNTRVJUKCEoQ2hlY2tlZFVp
bnQzMihjb3VudCkgKyBtX2xvY2Fscy5zaXplKCkpLmhhc092ZXJmbG93ZWQoKSk7CkBAIC05MTMs
NyArOTQwLDEwIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQXJndW1lbnRzKGNvbnN0IFNpZ25h
dHVyZSYgc2lnbmF0dXJlKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIEIzOjpWYWx1ZSogYXJn
dW1lbnQ7CiAgICAgICAgIGF1dG8gcmVwID0gd2FzbUNhbGxJbmZvLnBhcmFtc1tpXTsKICAgICAg
ICAgaWYgKHJlcC5pc1JlZygpKSB7Ci0gICAgICAgICAgICBhcmd1bWVudCA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8QjM6OkFyZ3VtZW50UmVnVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIHJl
cC5yZWcoKSk7CisgICAgICAgICAgICBpZiAodHlwZS5pc1ZlY3RvcigpKQorICAgICAgICAgICAg
ICAgIGFyZ3VtZW50ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxCMzo6QXJndW1lbnRSZWdW
YWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgcmVwLnJlZygpLCBCMzo6QXJndW1lbnRSZWdWYWx1ZTo6
dXNlRnVsbFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhcmd1
bWVudCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OkFyZ3VtZW50UmVnVmFsdWU+KG1f
cHJvYywgT3JpZ2luKCksIHJlcC5yZWcoKSk7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBCMzo6
SW50MzIgfHwgdHlwZSA9PSBCMzo6RmxvYXQpCiAgICAgICAgICAgICAgICAgYXJndW1lbnQgPSBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6VHJ1bmMsIE9y
aWdpbigpLCBhcmd1bWVudCk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMDc5LDcgKzExMDksNyBA
QCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlQ29weSh1bnNpZ25lZCBkc3RUYWJsZUluZGV4
LCB1bnNpZ25lZCBzcmNUYWJsZUluZGV4LAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQjNJ
UkdlbmVyYXRvcjo6Z2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQjNJUkdlbmVyYXRvcjo6Z2V0TG9jYWwodWludDMy
X3QgaW5kZXgsIFdhc206OlR5cGUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxS
ZXN1bHQKIHsKICAgICBBU1NFUlQobV9sb2NhbHNbaW5kZXhdKTsKICAgICByZXN1bHQgPSBwdXNo
KG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4obV9wcm9jLCBCMzo6R2V0
LCBvcmlnaW4oKSwgbV9sb2NhbHNbaW5kZXhdKSk7CkBAIC0xMTEyLDggKzExNDIsOCBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OmVtaXRJbmRpcmVjdENhbGwoVmFsdWUqIGNhbGxlZUluc3RhbmNlLCBW
YWx1ZSogY2FsbGVlQ29kZSwgYwogICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bp
bm5lZCA9IHRydWU7CiAgICAgICAgIC8vIFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUgd2UncmUg
Y2FsbGluZyBzb21ldGhpbmcgd2l0aCBCb3VuZHNDaGVja2luZyBtZW1vcnkuCiAgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBkbyB0aGlzOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCi0gICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIo
UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tp
bmcpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3Jh
dGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRnVsbFdpZHRoKFBp
bm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5n
KSk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1h
Y3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGNhbGxl
ZUluc3RhbmNlLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKICAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kKGluc3RhbmNlVmFsdWUoKSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CiAgICAgICAg
IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CkBAIC0xMTU0LDcgKzExODQs
NyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmVtaXRJbmRpcmVjdENhbGwoVmFsdWUqIGNhbGxlZUlu
c3RhbmNlLCBWYWx1ZSogY2FsbGVlQ29kZSwgYwogICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGUg
d2FzbS0+d2FzbSB0aHVuayB1bmNvbmRpdGlvbmFsbHkgb3ZlcnJpZGVzIHRoZSBzaXplIHJlZ2lz
dGVycy4KICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGhhdmUgdG8gZG8gdGhp
cywgYnV0IHRoZSB3YXNtLT53YXNtIHN0dWIgYXNzdW1lcyBpdCBjYW4KICAgICAgICAgICAgIC8v
IHVzZSBhbGwgdGhlIHBpbm5lZCByZWdpc3RlcnMgYXMgc2NyYXRjaDogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4MQotICAgICAgICAgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlckxhdGUoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUoTWVtb3J5TW9kZTo6
Qm91bmRzQ2hlY2tpbmcpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJl
Z2lzdGVyU2V0MTI4Ojp1c2UxMjhCaXRzKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZl
KE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSkpOwogCiAgICAgICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQoY2FsbGVlQ29kZSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CiAgICAgICAgICAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CkBAIC0xMjg3LDcg
KzEzMTcsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZERhdGFEcm9wKHVuc2lnbmVkIGRhdGFT
ZWdtZW50SW5kZXgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICByZXR1cm4geyB9OwogfQogCi1hdXRv
IEIzSVJHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2
YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBCM0lSR2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50
MzJfdCBpbmRleCwgV2FzbTo6VHlwZSwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxS
ZXN1bHQKIHsKICAgICBBU1NFUlQobV9sb2NhbHNbaW5kZXhdKTsKICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgQjM6OlNldCwgb3JpZ2luKCksIG1f
bG9jYWxzW2luZGV4XSwgZ2V0KHZhbHVlKSk7CkBAIC0xNDk4LDkgKzE1MjgsOSBAQCBpbmxpbmUg
QjM6OktpbmQgQjNJUkdlbmVyYXRvcjo6bWVtb3J5S2luZChCMzo6T3Bjb2RlIG1lbW9yeU9wKQog
ICAgIHJldHVybiBtZW1vcnlPcDsKIH0KIAotaW5saW5lIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjpl
bWl0TG9hZE9wKExvYWRPcFR5cGUgb3AsIFZhbHVlKiBwb2ludGVyLCB1aW50MzJfdCB1b2Zmc2V0
KQoraW5saW5lIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0TG9hZE9wKExvYWRPcFR5cGUgb3As
IFZhbHVlKiBwb2ludGVyLCB1aW50MzJfdCBvZmZzZXQpCiB7Ci0gICAgaW50MzJfdCBvZmZzZXQg
PSBmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0KHBvaW50ZXIsIHVvZmZzZXQpOworICAgIGZpeHVwUG9p
bnRlclBsdXNPZmZzZXQocG9pbnRlciwgb2Zmc2V0KTsKIAogICAgIHN3aXRjaCAob3ApIHsKICAg
ICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4UzogewpAQCAtMTYzMyw5ICsxNjYzLDkgQEAgaW5s
aW5lIHVpbnQzMl90IHNpemVPZlN0b3JlT3AoU3RvcmVPcFR5cGUgb3ApCiB9CiAKIAotaW5saW5l
IHZvaWQgQjNJUkdlbmVyYXRvcjo6ZW1pdFN0b3JlT3AoU3RvcmVPcFR5cGUgb3AsIFZhbHVlKiBw
b2ludGVyLCBWYWx1ZSogdmFsdWUsIHVpbnQzMl90IHVvZmZzZXQpCitpbmxpbmUgdm9pZCBCM0lS
R2VuZXJhdG9yOjplbWl0U3RvcmVPcChTdG9yZU9wVHlwZSBvcCwgVmFsdWUqIHBvaW50ZXIsIFZh
bHVlKiB2YWx1ZSwgdWludDMyX3Qgb2Zmc2V0KQogewotICAgIGludDMyX3Qgb2Zmc2V0ID0gZml4
dXBQb2ludGVyUGx1c09mZnNldChwb2ludGVyLCB1b2Zmc2V0KTsKKyAgICBmaXh1cFBvaW50ZXJQ
bHVzT2Zmc2V0KHBvaW50ZXIsIG9mZnNldCk7CiAKICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2Fz
ZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU4OgpAQCAtMTc1MSw2ICsxNzgxLDkgQEAgaW5saW5lIFZh
bHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0QXRvbWljTG9hZE9wKEV4dEF0b21pY09wVHlwZSBvcCwg
VHlwZSB2YWx1ZVR5cGUKICAgICBjYXNlIEIzOjpXaWR0aDY0OgogICAgICAgICB2YWx1ZSA9IGNv
bnN0YW50KEludDY0LCAwKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCMzo6V2lkdGgxMjg6
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOwog
ICAgIH0KIAogICAgIHJldHVybiBzYW5pdGl6ZUF0b21pY1Jlc3VsdChvcCwgdmFsdWVUeXBlLCBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPihtX3Byb2MsIG1lbW9yeUtpbmQo
QXRvbWljWGNoZ0FkZCksIG9yaWdpbigpLCBhY2Nlc3NXaWR0aChvcCksIHZhbHVlLCBwb2ludGVy
KSk7CkBAIC0xOTM0LDYgKzE5NjcsNyBAQCBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6ZW1pdEF0b21p
Y0NvbXBhcmVFeGNoYW5nZShFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUgdmFsdWVUeQogICAgICAg
ICAgICAgbWF4aW11bSA9IGNvbnN0YW50KEludDY0LCBVSU5UMzJfTUFYKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIEIzOjpXaWR0aDY0OgorICAgICAgICBjYXNlIEIzOjpXaWR0
aDEyODoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IH0KICAgICAgICAgYnJlYWs7CkBAIC0xOTQ4LDYgKzE5ODIsNyBAQCBWYWx1ZSogQjNJUkdlbmVy
YXRvcjo6ZW1pdEF0b21pY0NvbXBhcmVFeGNoYW5nZShFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUg
dmFsdWVUeQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQjM6OldpZHRoMzI6CiAg
ICAgICAgIGNhc2UgQjM6OldpZHRoNjQ6CisgICAgICAgIGNhc2UgQjM6OldpZHRoMTI4OgogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKQEAgLTE5OTMsNiArMjAyOCw5IEBAIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0
QXRvbWljQ29tcGFyZUV4Y2hhbmdlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1ZVR5CiAg
ICAgICAgIGNhc2UgQjM6OldpZHRoNjQ6CiAgICAgICAgICAgICBhZGRpbmdWYWx1ZSA9IGNvbnN0
YW50KEludDY0LCAwKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEIzOjpXaWR0
aDEyODoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KG1fcHJvYywgbWVtb3J5S2luZChBdG9taWNYY2hn
QWRkKSwgb3JpZ2luKCksIGFjY2Vzc1dpZHRoLCBhZGRpbmdWYWx1ZSwgcG9pbnRlcik7CiAgICAg
ICAgIGZhaWx1cmVWYWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlVwc2lsb25W
YWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgcmVzdWx0KTsKQEAgLTIxNTQsNyArMjE5Miw3IEBAIGF1
dG8gQjNJUkdlbmVyYXRvcjo6dHJ1bmNTYXR1cmF0ZWQoRXh0MU9wVHlwZSBvcCwgRXhwcmVzc2lv
blR5cGUgYXJnVmFyLCBFeHByZXNzCiAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoc2ln
bkJpdENvbnN0YW50LCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKICAgICAgICAgICAgIHBhdGNo
cG9pbnQtPm51bUZQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgICAgIH0KLSAgICAgICAgcGF0
Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwor
ICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgfQogICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBh
cmFtcykgewogICAgICAgICBzd2l0Y2ggKG9wKSB7CkBAIC0yMjU5LDEwICsyMjk3LDE0IEBAIGF1
dG8gQjNJUkdlbmVyYXRvcjo6YWRkU2VsZWN0KEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwgRXhw
cmVzc2lvblR5cGUgbm9uWmVybywKIAogQjNJUkdlbmVyYXRvcjo6RXhwcmVzc2lvblR5cGUgQjNJ
UkdlbmVyYXRvcjo6YWRkQ29uc3RhbnQoVHlwZSB0eXBlLCB1aW50NjRfdCB2YWx1ZSkKIHsKLQog
ICAgIHJldHVybiBwdXNoKGNvbnN0YW50KHRvQjNUeXBlKHR5cGUpLCB2YWx1ZSkpOwogfQogCitC
M0lSR2VuZXJhdG9yOjpFeHByZXNzaW9uVHlwZSBCM0lSR2VuZXJhdG9yOjphZGRDb25zdGFudCh2
MTI4X3QgdmFsdWUpCit7CisgICAgcmV0dXJuIHB1c2gobV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxDb25zdDEyOFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSkpOworfQorCiB2b2lkIEIz
SVJHZW5lcmF0b3I6OmVtaXRFbnRyeVRpZXJVcENoZWNrKCkKIHsKICAgICBpZiAoIW1fdGllclVw
KQpAQCAtMjI3Nyw3ICsyMzE5LDcgQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjplbWl0RW50cnlUaWVy
VXBDaGVjaygpCiAgICAgZWZmZWN0cy5yZWFkcyA9IEIzOjpIZWFwUmFuZ2U6OnRvcCgpOwogICAg
IGVmZmVjdHMud3JpdGVzID0gQjM6OkhlYXBSYW5nZTo6dG9wKCk7CiAgICAgcGF0Y2gtPmVmZmVj
dHMgPSBlZmZlY3RzOwotICAgIHBhdGNoLT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0
Y2hSZWdpc3RlcnMoKSk7CisgICAgcGF0Y2gtPmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6
Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKIAogICAgIHBhdGNoLT5hcHBlbmQoY291bnREb3du
TG9jYXRpb24sIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOwogICAgIHBhdGNoLT5zZXRHZW5lcmF0
b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKQEAgLTIyODksMTQgKzIzMzEsMTQgQEAgdm9pZCBCM0lSR2VuZXJh
dG9yOjplbWl0RW50cnlUaWVyVXBDaGVjaygpCiAgICAgICAgICAgICB0aWVyVXAubGluaygmaml0
KTsKIAogICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgZXh0cmFQYWRkaW5nQnl0ZXMgPSAwOwot
ICAgICAgICAgICAgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9TcGlsbCA9IHsgfTsKKyAgICAgICAg
ICAgIFJlZ2lzdGVyU2V0MTI4IHJlZ2lzdGVyc1RvU3BpbGwgPSB7IH07CiAgICAgICAgICAgICBy
ZWdpc3RlcnNUb1NwaWxsLmFkZChHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICAgICAg
dW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0g
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxs
KGppdCwgcmVnaXN0ZXJzVG9TcGlsbCwgZXh0cmFQYWRkaW5nQnl0ZXMpOwogCiAgICAgICAgICAg
ICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG1fZnVuY3Rpb25JbmRleCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAKLSAgICAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvcjo6cmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoaml0LCByZWdpc3RlcnNU
b1NwaWxsLCBSZWdpc3RlclNldCgpLCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQ
cmVzZXJ2YXRpb24sIGV4dHJhUGFkZGluZ0J5dGVzKTsKKyAgICAgICAgICAgIFNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvcjo6cmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoaml0LCByZWdp
c3RlcnNUb1NwaWxsLCB7IH0sIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNl
cnZhdGlvbiwgZXh0cmFQYWRkaW5nQnl0ZXMpOwogICAgICAgICAgICAgaml0Lmp1bXAodGllclVw
UmVzdW1lKTsKIAogICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikgewpAQCAtMjM0NSw4ICsyMzg3LDggQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjpl
bWl0TG9vcFRpZXJVcENoZWNrKHVpbnQzMl90IGxvb3BJbmRleCwgY29uc3QgU3RhY2smIGVuY2xv
c2kKICAgICBlZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOwogICAgIHBhdGNoLT5lZmZlY3Rz
ID0gZWZmZWN0czsKIAotICAgIHBhdGNoLT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0
Y2hSZWdpc3RlcnMoKSk7Ci0gICAgUmVnaXN0ZXJTZXQgY2xvYmJlckxhdGU7CisgICAgcGF0Y2gt
PmNsb2JiZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsK
KyAgICBSZWdpc3RlclNldDEyOCBjbG9iYmVyTGF0ZTsKICAgICBjbG9iYmVyTGF0ZS5hZGQoR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBwYXRjaC0+Y2xvYmJlckxhdGUoY2xvYmJlckxhdGUp
OwogCkBAIC0yNjI3LDggKzI2NjksOCBAQCBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6ZW1pdENhdGNo
SW1wbChDYXRjaEtpbmQga2luZCwgQ29udHJvbFR5cGUmIGRhdGEsIHVuc2lnbmVkCiAKICAgICBQ
YXRjaHBvaW50VmFsdWUqIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8UGF0Y2hw
b2ludFZhbHVlPihtX3Byb2MsIG1fcHJvYy5hZGRUdXBsZSh7IHBvaW50ZXJUeXBlKCksIHBvaW50
ZXJUeXBlKCkgfSksIG9yaWdpbigpKTsKICAgICByZXN1bHQtPmVmZmVjdHMuZXhpdHNTaWRld2F5
cyA9IHRydWU7Ci0gICAgcmVzdWx0LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hS
ZWdpc3RlcnMoKSk7Ci0gICAgUmVnaXN0ZXJTZXQgY2xvYmJlckxhdGUgPSBSZWdpc3RlclNldDo6
dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKTsKKyAgICByZXN1bHQtPmNsb2JiZXJGdWxsV2lk
dGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICBSZWdpc3RlclNl
dDEyOCBjbG9iYmVyTGF0ZSA9IFJlZ2lzdGVyU2V0MTI4Ojp2b2xhdGlsZVJlZ2lzdGVyc0ZvckpT
Q2FsbCgpOwogICAgIGNsb2JiZXJMYXRlLmFkZChHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAg
IHJlc3VsdC0+Y2xvYmJlckxhdGUoY2xvYmJlckxhdGUpOwogICAgIHJlc3VsdC0+YXBwZW5kKGlu
c3RhbmNlVmFsdWUoKSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CkBAIC0yNjY0LDE1ICsyNzA2
LDE1IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkRGVsZWdhdGVUb1VucmVhY2hhYmxlKENvbnRy
b2xUeXBlJiB0YXJnZXQsIENvbnRyb2xUeXBlJiBkCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0
byBCM0lSR2VuZXJhdG9yOjphZGRUaHJvdyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgVmVjdG9y
PEV4cHJlc3Npb25UeXBlPiYgYXJncywgU3RhY2smKSAtPiBQYXJ0aWFsUmVzdWx0CithdXRvIEIz
SVJHZW5lcmF0b3I6OmFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBTdGFjayYgYXJn
cykgLT4gUGFydGlhbFJlc3VsdAogewogICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2ggPSBtX3By
b2MuYWRkPFBhdGNocG9pbnRWYWx1ZT4oQjM6OlZvaWQsIG9yaWdpbigpKTsKICAgICBwYXRjaC0+
ZWZmZWN0cy50ZXJtaW5hbCA9IHRydWU7CiAgICAgcGF0Y2gtPmFwcGVuZChpbnN0YW5jZVZhbHVl
KCksIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CiAgICAgcGF0Y2gtPmFw
cGVuZChmcmFtZVBvaW50ZXIoKSwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjphcmd1bWVudEdQUjEp
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkKLSAgICAg
ICAgcGF0Y2gtPmFwcGVuZChnZXQoYXJnc1tpXSksIFZhbHVlUmVwOjpzdGFja0FyZ3VtZW50KGkg
KiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkpOworICAgICAgICBwYXRjaC0+YXBwZW5k
KGdldChhcmdzW2ldLnZhbHVlKCkpLCBWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudChpICogc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSkpOworICAgIHBhdGNoLT5jbG9iYmVyKFJlZ2lzdGVyU2V0MTI4Ojp2
b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpKTsKICAgICBQYXRjaHBvaW50RXhjZXB0aW9uSGFu
ZGxlIGhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhtX2N1cnJlbnRCbG9j
aywgcGF0Y2gpOwogICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoW3RoaXMsIGV4Y2VwdGlvbkluZGV4
LCBoYW5kbGVdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTI2ODcsNyArMjcyOSw3IEBAIGF1dG8gQjNJUkdlbmVy
YXRvcjo6YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFZlY3RvcjxFeHByZXNzaW9u
VHlwZT4mIGFyCiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFJldGhyb3codW5zaWduZWQsIENvbnRy
b2xUeXBlJiBkYXRhKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgUGF0Y2hwb2ludFZhbHVlKiBw
YXRjaCA9IG1fcHJvYy5hZGQ8UGF0Y2hwb2ludFZhbHVlPihCMzo6Vm9pZCwgb3JpZ2luKCkpOwot
ICAgIHBhdGNoLT5jbG9iYmVyKFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2Fs
bCgpKTsKKyAgICBwYXRjaC0+Y2xvYmJlcihSZWdpc3RlclNldDEyODo6dm9sYXRpbGVSZWdpc3Rl
cnNGb3JKU0NhbGwoKSk7CiAgICAgcGF0Y2gtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOwogICAg
IHBhdGNoLT5hcHBlbmQoaW5zdGFuY2VWYWx1ZSgpLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOwogICAgIHBhdGNoLT5hcHBlbmQoZnJhbWVQb2ludGVyKCksIFZhbHVlUmVw
OjpyZWcoR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CkBAIC0yNzEwLDcgKzI3NTIsNyBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZFJldHVybihjb25zdCBDb250cm9sRGF0YSYsIGNvbnN0IFN0YWNr
JiByZXR1cm5WYWx1ZXMpIC0+CiAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaCA9IG1fcHJvYy5h
ZGQ8UGF0Y2hwb2ludFZhbHVlPihCMzo6Vm9pZCwgb3JpZ2luKCkpOwogICAgIHBhdGNoLT5zZXRH
ZW5lcmF0b3IoW10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgYXV0byBjYWxsZWVTYXZlcyA9IHBhcmFtcy5j
b2RlKCkuY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCk7Ci0gICAgICAgIGppdC5lbWl0
UmVzdG9yZShjYWxsZWVTYXZlcyk7CisgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVz
Rm9yKCZjYWxsZWVTYXZlcyk7CiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwog
ICAgICAgICBqaXQucmV0KCk7CiAgICAgfSk7CkBAIC0yODUzLDggKzI4OTUsOCBAQCBCMzo6VmFs
dWUqIEIzSVJHZW5lcmF0b3I6OmNyZWF0ZUNhbGxQYXRjaHBvaW50KEJhc2ljQmxvY2sqIGJsb2Nr
LCBPcmlnaW4gb3JpZ2luLAogCiAgICAgQjM6OlR5cGUgcmV0dXJuVHlwZSA9IHRvQjNSZXN1bHRU
eXBlKCZzaWduYXR1cmUpOwogICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fcHJv
Yy5hZGQ8UGF0Y2hwb2ludFZhbHVlPihyZXR1cm5UeXBlLCBvcmlnaW4pOwotICAgIHBhdGNocG9p
bnQtPmNsb2JiZXJFYXJseShSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwot
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lzdGVy
c0ZvckpTQ2FsbCgpKTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyRWFybHkoUmVnaXN0ZXJTZXQx
Mjg6OnVzZTEyOEJpdHMoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKSk7Cisg
ICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQxMjg6OnZvbGF0aWxlUmVnaXN0
ZXJzRm9ySlNDYWxsKCkpOwogICAgIHBhdGNocG9pbnRGdW5jdG9yKHBhdGNocG9pbnQsIGV4Y2Vw
dGlvbkhhbmRsZSk7CiAgICAgcGF0Y2hwb2ludC0+YXBwZW5kVmVjdG9yKGNvbnN0cmFpbmVkQXJn
dW1lbnRzKTsKIApAQCAtMjkyMCw3ICsyOTYyLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRD
YWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLAog
ICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFsIHBpbm5l
ZCByZWdpc3RlcnMgc2luY2Ugd2UgbWlnaHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2UuCiAgICAg
ICAgICAgICAgICAgLy8gV2UgcGVzc2ltaXN0aWNhbGx5IGFzc3VtZSB3ZSBjb3VsZCBiZSBjYWxs
aW5nIHRvIHNvbWV0aGluZyB0aGF0IGlzIGJvdW5kcyBjaGVja2luZy4KICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gZG8gdGhpczogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4MQotICAgICAgICAgICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXJMYXRlKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZlKE1lbW9yeU1v
ZGU6OkJvdW5kc0NoZWNraW5nKSk7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJl
ckxhdGUoUmVnaXN0ZXJTZXQxMjg6OnVzZTEyOEJpdHMoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQo
KS50b1NhdmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKSk7CiAgICAgICAgICAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFt0aGlzLCBoYW5kbGUsIHVubGlua2VkV2FzbVRvV2Fz
bUNhbGxzLCBmdW5jdGlvbkluZGV4XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgICAgICBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAg
ICAgICAgICAgIGhhbmRsZS0+Z2VuZXJhdGUoaml0LCBwYXJhbXMsIHRoaXMpOwpAQCAtMjk0OCw3
ICsyOTkwLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9u
SW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLAogICAgICAgICAgICAgICAgIC8vIFdl
IG5lZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFsIHBpbm5lZCByZWdpc3RlcnMgc2luY2Ugd2Ug
bWlnaHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2UuCiAgICAgICAgICAgICAgICAgLy8gV2UgcGVz
c2ltaXN0aWNhbGx5IGFzc3VtZSB3ZSBjb3VsZCBiZSBjYWxsaW5nIHRvIHNvbWV0aGluZyB0aGF0
IGlzIGJvdW5kcyBjaGVja2luZy4KICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
bid0IGhhdmUgdG8gZG8gdGhpczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MjE4MQotICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFBpbm5l
ZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7
CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQxMjg6
OnVzZTEyOEJpdHMoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUoTWVtb3J5TW9kZTo6
Qm91bmRzQ2hlY2tpbmcpKSk7CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJh
dG9yKFt0aGlzLCBoYW5kbGUsIHJldHVyblR5cGVdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
QjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlLT5nZW5lcmF0ZShqaXQsIHBhcmFtcywgdGhpcyk7CkBA
IC0yOTc4LDcgKzMwMjAsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3Qg
ZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiAKICAgICAgICAgICAg
ICAgICAvLyBXZSBuZWVkIHRvIGNsb2JiZXIgdGhlIHNpemUgcmVnaXN0ZXIgc2luY2UgdGhlIExM
SW50IGFsd2F5cyBib3VuZHMgY2hlY2tzCiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBN
ZW1vcnlNb2RlOjpTaWduYWxpbmcgfHwgbV9pbmZvLm1lbW9yeS5pc1NoYXJlZCgpKQotICAgICAg
ICAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldCB7IFBpbm5l
ZFJlZ2lzdGVySW5mbzo6Z2V0KCkuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgfSk7CisgICAg
ICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0MTI4IHsg
UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciB9KTsK
ICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoW3RoaXMsIGhhbmRsZSwg
dW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGZ1bmN0aW9uSW5kZXhdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
ICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2go
aml0KTsKICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5nZW5lcmF0ZShqaXQsIHBhcmFtcywg
dGhpcyk7CkBAIC0zNDQ3LDcgKzM0ODksNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE9wPEY2
NENvbnZlcnRVSTY0PihFeHByZXNzaW9uVHlwZSBhcmdWYXIsIEV4cHJlc3Npb25UeXBlJgogICAg
IFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
UGF0Y2hwb2ludFZhbHVlPihtX3Byb2MsIERvdWJsZSwgb3JpZ2luKCkpOwogICAgIGlmIChpc1g4
NigpKQogICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwotICAg
IHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygp
KTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyRnVsbFdpZHRoKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFs
dWUoYXJnLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CiAgICAgcGF0Y2hwb2ludC0+c2V0R2Vu
ZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKQEAgLTM0NjksNyArMzUxMSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRv
cjo6YWRkT3A8T3BUeXBlOjpGMzJDb252ZXJ0VUk2ND4oRXhwcmVzc2lvblR5cGUgYXJnVmFyLCBF
eHByZXNzCiAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KG1fcHJvYywgRmxvYXQsIG9yaWdpbigpKTsKICAg
ICBpZiAoaXNYODYoKSkKICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJz
ID0gMTsKLSAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hS
ZWdpc3RlcnMoKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckZ1bGxXaWR0aChSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGFyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwogICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC0zNjg5LDcgKzM3MzEsNyBAQCBhdXRvIEIz
SVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNVRjY0PihFeHByZXNzaW9uVHlwZSBh
cmdWYXIsIEV4cHJlc3NpbwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoc2lnbkJpdENvbnN0
YW50LCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKICAgICAgICAgcGF0Y2hwb2ludC0+bnVtRlBT
Y3JhdGNoUmVnaXN0ZXJzID0gMTsKICAgICB9Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdp
c3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXJGdWxsV2lkdGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICBw
YXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICBGUFJSZWcgc2NyYXRj
aCA9IEludmFsaWRGUFJSZWc7CkBAIC0zNzU3LDcgKzM3OTksNyBAQCBhdXRvIEIzSVJHZW5lcmF0
b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNVRjMyPihFeHByZXNzaW9uVHlwZSBhcmdWYXIsIEV4
cHJlc3NpbwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoc2lnbkJpdENvbnN0YW50LCBWYWx1
ZVJlcDo6U29tZVJlZ2lzdGVyKTsKICAgICAgICAgcGF0Y2hwb2ludC0+bnVtRlBTY3JhdGNoUmVn
aXN0ZXJzID0gMTsKICAgICB9Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6
bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXJGdWxsV2lk
dGgoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICBGUFJSZWcgc2NyYXRjaCA9IEludmFs
aWRGUFJSZWc7CkBAIC0zNzczLDYgKzM4MTUsMjU4IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRk
T3A8T3BUeXBlOjpJNjRUcnVuY1VGMzI+KEV4cHJlc3Npb25UeXBlIGFyZ1ZhciwgRXhwcmVzc2lv
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAorYXV0byBCM0lSR2VuZXJhdG9yOjphZGRTaW1kU3BsYXQo
U2ltZExhbmUgbGFuZSwgRXhwcmVzc2lvblR5cGUgc2NhbGFyLCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgVmFsdWUqIHRvU3BsYXQgPSBnZXQoc2NhbGFy
KTsKKyAgICByZXN1bHQgPSBwdXNoKG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8U2ltZFZhbHVl
PihtX3Byb2MsIG9yaWdpbigpLCBCMzo6VmVjdG9yU3BsYXQsIEIzOjpWMTI4LCBsYW5lLCBTaW1k
U2lnbk1vZGU6Ok5vbmUsIHRvU3BsYXQpKTsKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIEIz
SVJHZW5lcmF0b3I6OmFkZFNpbWRTaGlmdChTaW1kTGFuZU9wZXJhdGlvbiBvcCwgU2ltZEluZm8g
aW5mbywgRXhwcmVzc2lvblR5cGUgdiwgRXhwcmVzc2lvblR5cGUgc2hpZnQsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICByZXN1bHQgPSBwdXNoKG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8U2ltZFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLAorICAgICAg
ICBvcCA9PSBTaW1kTGFuZU9wZXJhdGlvbjo6U2hyID8gQjM6OlZlY3RvclNociA6IEIzOjpWZWN0
b3JTaGwsIEIzOjpWMTI4LCBpbmZvLCBnZXQodiksIGdldChzaGlmdCkpKTsKKyAgICByZXR1cm4g
eyB9OworfQorCithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFNpbWRFeHRtdWwoU2ltZExhbmVPcGVy
YXRpb24gb3AsIFNpbWRJbmZvIGluZm8sIEV4cHJlc3Npb25UeXBlIGxocywgRXhwcmVzc2lvblR5
cGUgcmhzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAg
QVNTRVJUKGluZm8uc2lnbk1vZGUgIT0gU2ltZFNpZ25Nb2RlOjpOb25lKTsKKyAgICBTaW1kSW5m
byBtdWxJbmZvID0gU2ltZEluZm8geyBwcm9tb3RlZExhbmUoaW5mby5sYW5lKSwgU2ltZFNpZ25N
b2RlOjpOb25lIH07CisKKyAgICBhdXRvIGV4dE9wID0gb3AgPT0gU2ltZExhbmVPcGVyYXRpb246
OkV4dG11bExvdyA/IFZlY3RvckV4dGVuZExvdyA6IFZlY3RvckV4dGVuZEhpZ2g7CisgICAgVmFs
dWUqIGV4dExocyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8U2ltZFZhbHVlPihtX3Byb2Ms
IG9yaWdpbigpLCBleHRPcCwgQjM6OlYxMjgsIGluZm8sIGdldChsaHMpKTsKKyAgICBWYWx1ZSog
ZXh0UmhzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxTaW1kVmFsdWU+KG1fcHJvYywgb3Jp
Z2luKCksIGV4dE9wLCBCMzo6VjEyOCwgaW5mbywgZ2V0KHJocykpOworICAgIHJlc3VsdCA9IHB1
c2gobV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxTaW1kVmFsdWU+KG1fcHJvYywgb3JpZ2luKCks
IFZlY3Rvck11bCwgQjM6OlYxMjgsIG11bEluZm8sIGV4dExocywgZXh0UmhzKSk7CisKKyAgICBy
ZXR1cm4geyB9OworfQorCithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFNpbWRTaHVmZmxlKHYxMjhf
dCBpbW0sIEV4cHJlc3Npb25UeXBlIGEsIEV4cHJlc3Npb25UeXBlIGIsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICByZXN1bHQgPSBwdXNoKG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8U2ltZFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBWZWN0b3JTaHVm
ZmxlLCBCMzo6VjEyOCwgU2ltZExhbmU6OmkzMng0LCBTaW1kU2lnbk1vZGU6Ok5vbmUsIGltbSwg
Z2V0KGEpLCBnZXQoYikpKTsKKworICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8gQjNJUkdlbmVy
YXRvcjo6YWRkU2ltZExvYWQoRXhwcmVzc2lvblR5cGUgcG9pbnRlclZhcmlhYmxlLCB1aW50MzJf
dCBvZmZzZXQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAg
ICBWYWx1ZSogcHRyID0gZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIoZ2V0KHBvaW50ZXJWYXJp
YWJsZSksIG9mZnNldCwgMTYpOworICAgIGZpeHVwUG9pbnRlclBsdXNPZmZzZXQocHRyLCBvZmZz
ZXQpOworICAgIHJlc3VsdCA9IHB1c2gobV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4obV9wcm9jLCBtZW1vcnlLaW5kKExvYWQpLCBCMzo6VjEyOCwgb3JpZ2luKCksIHB0ciwg
c2FmZUNhc3Q8aW50MzJfdD4ob2Zmc2V0KSkpOworCisgICAgcmV0dXJuIHsgfTsKK30KKworYXV0
byBCM0lSR2VuZXJhdG9yOjphZGRTaW1kU3RvcmUoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJl
c3Npb25UeXBlIHBvaW50ZXJWYXJpYWJsZSwgdWludDMyX3Qgb2Zmc2V0KSAtPiBQYXJ0aWFsUmVz
dWx0Cit7CisgICAgVmFsdWUqIHB0ciA9IGVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKGdldChw
b2ludGVyVmFyaWFibGUpLCBvZmZzZXQsIDE2KTsKKyAgICBmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0
KHB0ciwgb2Zmc2V0KTsKKyAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PihtX3Byb2MsIG1lbW9yeUtpbmQoU3RvcmUpLCBvcmlnaW4oKSwgZ2V0KHZhbHVlKSwgcHRyLCBz
YWZlQ2FzdDxpbnQzMl90PihvZmZzZXQpKTsKKworICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8g
QjNJUkdlbmVyYXRvcjo6YWRkU2ltZExvYWRTcGxhdChTaW1kTGFuZU9wZXJhdGlvbiBvcCwgRXhw
cmVzc2lvblR5cGUgcG9pbnRlclZhcmlhYmxlLCB1aW50MzJfdCBvZmZzZXQsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBzaXplX3QgYnl0ZVNpemU7CisK
KyAgICBCMzo6T3Bjb2RlIGxvYWRPcDsKKyAgICBCMzo6VHlwZSB0eXBlOworICAgIFNpbWRMYW5l
IGxhbmU7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgU2ltZExhbmVPcGVyYXRpb246Okxv
YWRTcGxhdDg6CisgICAgICAgIGxvYWRPcCA9IExvYWQ4WjsKKyAgICAgICAgdHlwZSA9IEIzOjpJ
bnQzMjsKKyAgICAgICAgbGFuZSA9IFNpbWRMYW5lOjppOHgxNjsKKyAgICAgICAgYnl0ZVNpemUg
PSAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkU3Bs
YXQxNjoKKyAgICAgICAgbG9hZE9wID0gTG9hZDE2WjsKKyAgICAgICAgdHlwZSA9IEIzOjpJbnQz
MjsKKyAgICAgICAgbGFuZSA9IFNpbWRMYW5lOjppMTZ4ODsKKyAgICAgICAgYnl0ZVNpemUgPSAy
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkU3BsYXQz
MjoKKyAgICAgICAgbG9hZE9wID0gTG9hZDsKKyAgICAgICAgdHlwZSA9IEIzOjpJbnQzMjsKKyAg
ICAgICAgbGFuZSA9IFNpbWRMYW5lOjppMzJ4NDsKKyAgICAgICAgYnl0ZVNpemUgPSA0OworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkU3BsYXQ2NDoKKyAg
ICAgICAgbG9hZE9wID0gTG9hZDsKKyAgICAgICAgdHlwZSA9IEIzOjpJbnQ2NDsKKyAgICAgICAg
bGFuZSA9IFNpbWRMYW5lOjppNjR4MjsKKyAgICAgICAgYnl0ZVNpemUgPSA4OworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KKworICAgIFZhbHVlKiBwdHIgPSBlbWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcihn
ZXQocG9pbnRlclZhcmlhYmxlKSwgb2Zmc2V0LCBieXRlU2l6ZSk7CisgICAgZml4dXBQb2ludGVy
UGx1c09mZnNldChwdHIsIG9mZnNldCk7CisgICAgVmFsdWUqIG1lbUxvYWQgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIG1lbW9yeUtpbmQobG9hZE9wKSwg
dHlwZSwgb3JpZ2luKCksIHB0ciwgc2FmZUNhc3Q8aW50MzJfdD4ob2Zmc2V0KSk7CisgICAgcmVz
dWx0ID0gcHVzaChtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFNpbWRWYWx1ZT4obV9wcm9jLCBv
cmlnaW4oKSwgQjM6OlZlY3RvclNwbGF0LCBCMzo6VjEyOCwgbGFuZSwgU2ltZFNpZ25Nb2RlOjpO
b25lLCBtZW1Mb2FkKSk7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIEIzSVJHZW5lcmF0
b3I6OmFkZFNpbWRMb2FkTGFuZShTaW1kTGFuZU9wZXJhdGlvbiBvcCwgRXhwcmVzc2lvblR5cGUg
cG9pbnRlclZhcmlhYmxlLCBFeHByZXNzaW9uVHlwZSB2ZWN0b3JWYXJpYWJsZSwgdWludDMyX3Qg
b2Zmc2V0LCB1aW50OF90IGxhbmVJbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFy
dGlhbFJlc3VsdCAKK3sKKyAgICBzaXplX3QgYnl0ZVNpemU7CisgICAgQjM6Ok9wY29kZSBsb2Fk
T3A7CisgICAgQjM6OlR5cGUgdHlwZTsKKyAgICBTaW1kTGFuZSBsYW5lOworICAgIHN3aXRjaCAo
b3ApIHsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkTGFuZTg6CisgICAgICAgIGxv
YWRPcCA9IExvYWQ4WjsKKyAgICAgICAgdHlwZSA9IEIzOjpJbnQzMjsKKyAgICAgICAgbGFuZSA9
IFNpbWRMYW5lOjppOHgxNjsKKyAgICAgICAgYnl0ZVNpemUgPSAxOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkTGFuZTE2OgorICAgICAgICBsb2FkT3Ag
PSBMb2FkMTZaOworICAgICAgICB0eXBlID0gQjM6OkludDMyOworICAgICAgICBsYW5lID0gU2lt
ZExhbmU6OmkxNng4OworICAgICAgICBieXRlU2l6ZSA9IDI7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU2ltZExhbmVPcGVyYXRpb246OkxvYWRMYW5lMzI6CisgICAgICAgIGxvYWRPcCA9IExv
YWQ7CisgICAgICAgIHR5cGUgPSBCMzo6SW50MzI7CisgICAgICAgIGxhbmUgPSBTaW1kTGFuZTo6
aTMyeDQ7CisgICAgICAgIGJ5dGVTaXplID0gNDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
aW1kTGFuZU9wZXJhdGlvbjo6TG9hZExhbmU2NDoKKyAgICAgICAgbG9hZE9wID0gTG9hZDsKKyAg
ICAgICAgdHlwZSA9IEIzOjpJbnQ2NDsKKyAgICAgICAgbGFuZSA9IFNpbWRMYW5lOjppNjR4MjsK
KyAgICAgICAgYnl0ZVNpemUgPSA4OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIFZhbHVlKiBw
dHIgPSBlbWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcihnZXQocG9pbnRlclZhcmlhYmxlKSwgb2Zm
c2V0LCBieXRlU2l6ZSk7CisgICAgZml4dXBQb2ludGVyUGx1c09mZnNldChwdHIsIG9mZnNldCk7
CisgICAgVmFsdWUqIG1lbUxvYWQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihtX3Byb2MsIG1lbW9yeUtpbmQobG9hZE9wKSwgdHlwZSwgb3JpZ2luKCksIHB0ciwgc2Fm
ZUNhc3Q8aW50MzJfdD4ob2Zmc2V0KSk7CisgICAgcmVzdWx0ID0gcHVzaChtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PFNpbWRWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgQjM6OlZlY3RvclJlcGxh
Y2VMYW5lLCBCMzo6VjEyOCwgbGFuZSwgU2ltZFNpZ25Nb2RlOjpOb25lLCBsYW5lSW5kZXgsIGdl
dCh2ZWN0b3JWYXJpYWJsZSksIG1lbUxvYWQpKTsKKworICAgIHJldHVybiB7IH07Cit9CisKK2F1
dG8gQjNJUkdlbmVyYXRvcjo6YWRkU2ltZFN0b3JlTGFuZShTaW1kTGFuZU9wZXJhdGlvbiBvcCwg
RXhwcmVzc2lvblR5cGUgcG9pbnRlclZhcmlhYmxlLCBFeHByZXNzaW9uVHlwZSB2ZWN0b3JWYXJp
YWJsZSwgdWludDMyX3Qgb2Zmc2V0LCB1aW50OF90IGxhbmVJbmRleCkgLT4gUGFydGlhbFJlc3Vs
dCAKK3sKKyAgICBzaXplX3QgYnl0ZVNpemU7CisgICAgQjM6Ok9wY29kZSBzdG9yZU9wOworICAg
IEIzOjpUeXBlIHR5cGU7CisgICAgU2ltZExhbmUgbGFuZTsKKyAgICBzd2l0Y2ggKG9wKSB7Cisg
ICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6U3RvcmVMYW5lODoKKyAgICAgICAgc3RvcmVPcCA9
IFN0b3JlODsKKyAgICAgICAgdHlwZSA9IEIzOjpJbnQzMjsKKyAgICAgICAgbGFuZSA9IFNpbWRM
YW5lOjppOHgxNjsKKyAgICAgICAgYnl0ZVNpemUgPSAxOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpTdG9yZUxhbmUxNjoKKyAgICAgICAgc3RvcmVPcCA9IFN0
b3JlMTY7CisgICAgICAgIHR5cGUgPSBCMzo6SW50MzI7CisgICAgICAgIGxhbmUgPSBTaW1kTGFu
ZTo6aTE2eDg7CisgICAgICAgIGJ5dGVTaXplID0gMjsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTaW1kTGFuZU9wZXJhdGlvbjo6U3RvcmVMYW5lMzI6CisgICAgICAgIHN0b3JlT3AgPSBTdG9y
ZTsKKyAgICAgICAgdHlwZSA9IEIzOjpJbnQzMjsKKyAgICAgICAgbGFuZSA9IFNpbWRMYW5lOjpp
MzJ4NDsKKyAgICAgICAgYnl0ZVNpemUgPSA0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNp
bWRMYW5lT3BlcmF0aW9uOjpTdG9yZUxhbmU2NDoKKyAgICAgICAgc3RvcmVPcCA9IFN0b3JlOwor
ICAgICAgICB0eXBlID0gQjM6OkludDY0OworICAgICAgICBsYW5lID0gU2ltZExhbmU6Omk2NHgy
OworICAgICAgICBieXRlU2l6ZSA9IDg7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgVmFsdWUq
IHB0ciA9IGVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKGdldChwb2ludGVyVmFyaWFibGUpLCBv
ZmZzZXQsIGJ5dGVTaXplKTsKKyAgICBmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0KHB0ciwgb2Zmc2V0
KTsKKyAgICBWYWx1ZSogbGFuZVZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxTaW1k
VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIEIzOjpWZWN0b3JFeHRyYWN0TGFuZSwgdHlwZSwgbGFu
ZSwgYnl0ZVNpemUgPCAzMiA/IFNpbWRTaWduTW9kZTo6VW5zaWduZWQgOiBTaW1kU2lnbk1vZGU6
Ok5vbmUsIGxhbmVJbmRleCwgZ2V0KHZlY3RvclZhcmlhYmxlKSk7CisgICAgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBtZW1vcnlLaW5kKHN0b3JlT3ApLCBv
cmlnaW4oKSwgbGFuZVZhbHVlLCBwdHIsIHNhZmVDYXN0PGludDMyX3Q+KG9mZnNldCkpOworCisg
ICAgcmV0dXJuIHsgfTsKK30KKworYXV0byBCM0lSR2VuZXJhdG9yOjphZGRTaW1kTG9hZEV4dGVu
ZChTaW1kTGFuZU9wZXJhdGlvbiBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlclZhcmlhYmxlLCB1
aW50MzJfdCBvZmZzZXQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQg
Cit7CisgICAgQjM6Ok9wY29kZSBsb2FkT3AgPSBMb2FkOworICAgIHNpemVfdCBieXRlU2l6ZSA9
IDg7CisgICAgU2ltZExhbmUgbGFuZTsKKyAgICBTaW1kU2lnbk1vZGUgc2lnbk1vZGU7CisgICAg
c3dpdGNoIChvcCkgeworICAgIGNhc2UgU2ltZExhbmVPcGVyYXRpb246OkxvYWRFeHRlbmQ4VToK
KyAgICAgICAgbGFuZSA9IFNpbWRMYW5lOjppMTZ4ODsKKyAgICAgICAgc2lnbk1vZGUgPSBTaW1k
U2lnbk1vZGU6OlVuc2lnbmVkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbWRMYW5lT3Bl
cmF0aW9uOjpMb2FkRXh0ZW5kOFM6CisgICAgICAgIGxhbmUgPSBTaW1kTGFuZTo6aTE2eDg7Cisg
ICAgICAgIHNpZ25Nb2RlID0gU2ltZFNpZ25Nb2RlOjpTaWduZWQ7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgU2ltZExhbmVPcGVyYXRpb246OkxvYWRFeHRlbmQxNlU6CisgICAgICAgIGxhbmUg
PSBTaW1kTGFuZTo6aTMyeDQ7CisgICAgICAgIHNpZ25Nb2RlID0gU2ltZFNpZ25Nb2RlOjpVbnNp
Z25lZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9hZEV4
dGVuZDE2UzoKKyAgICAgICAgbGFuZSA9IFNpbWRMYW5lOjppMzJ4NDsKKyAgICAgICAgc2lnbk1v
ZGUgPSBTaW1kU2lnbk1vZGU6OlNpZ25lZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW1k
TGFuZU9wZXJhdGlvbjo6TG9hZEV4dGVuZDMyVToKKyAgICAgICAgbGFuZSA9IFNpbWRMYW5lOjpp
NjR4MjsKKyAgICAgICAgc2lnbk1vZGUgPSBTaW1kU2lnbk1vZGU6OlVuc2lnbmVkOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkRXh0ZW5kMzJTOgorICAg
ICAgICBsYW5lID0gU2ltZExhbmU6Omk2NHgyOworICAgICAgICBzaWduTW9kZSA9IFNpbWRTaWdu
TW9kZTo6U2lnbmVkOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIFZhbHVlKiBwdHIgPSBlbWl0
Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcihnZXQocG9pbnRlclZhcmlhYmxlKSwgb2Zmc2V0LCBieXRl
U2l6ZSk7CisgICAgZml4dXBQb2ludGVyUGx1c09mZnNldChwdHIsIG9mZnNldCk7CisgICAgVmFs
dWUqIG1lbUxvYWQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIG1lbW9yeUtpbmQobG9hZE9wKSwgQjM6OkRvdWJsZSwgb3JpZ2luKCksIHB0ciwgc2FmZUNh
c3Q8aW50MzJfdD4ob2Zmc2V0KSk7CisgICAgcmVzdWx0ID0gcHVzaChtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PFNpbWRWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgVmVjdG9yRXh0ZW5kTG93LCBC
Mzo6VjEyOCwgU2ltZEluZm8geyBsYW5lLCBzaWduTW9kZSB9LCBtZW1Mb2FkKSk7CisKKyAgICBy
ZXR1cm4geyB9OworfQorCithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFNpbWRMb2FkUGFkKFNpbWRM
YW5lT3BlcmF0aW9uIG9wLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyVmFyaWFibGUsIHVpbnQzMl90
IG9mZnNldCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdCAKK3sKKyAg
ICBCMzo6VHlwZSBsb2FkVHlwZTsKKyAgICB1bnNpZ25lZCBieXRlU2l6ZTsKKyAgICBzd2l0Y2gg
KG9wKSB7CisgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9hZFBhZDMyOgorICAgICAgICBs
b2FkVHlwZSA9IEIzOjpGbG9hdDsKKyAgICAgICAgYnl0ZVNpemUgPSA0OworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkUGFkNjQ6CisgICAgICAgIGxvYWRU
eXBlID0gQjM6OkRvdWJsZTsKKyAgICAgICAgYnl0ZVNpemUgPSA4OworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKworICAgIFZhbHVlKiBwdHIgPSBlbWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcihnZXQocG9p
bnRlclZhcmlhYmxlKSwgb2Zmc2V0LCBieXRlU2l6ZSk7CisgICAgZml4dXBQb2ludGVyUGx1c09m
ZnNldChwdHIsIG9mZnNldCk7CisgICAgVmFsdWUqIG1lbUxvYWQgPSBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIG1lbW9yeUtpbmQoTG9hZCksIGxvYWRUeXBl
LCBvcmlnaW4oKSwgcHRyLCBzYWZlQ2FzdDxpbnQzMl90PihvZmZzZXQpKTsKKyAgICBpZiAobG9h
ZFR5cGUgPT0gQjM6OkZsb2F0KQorICAgICAgICBtZW1Mb2FkID0gbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBaRXh0MzIsIG9yaWdpbigpLCBtZW1Mb2FkKTsKKyAgICBy
ZXN1bHQgPSBwdXNoKG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgWmVy
b0V4dGVuZDY0VG9WZWN0b3IsIG9yaWdpbigpLCBtZW1Mb2FkKSk7CisKKyAgICByZXR1cm4geyB9
OworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCiAjaW5jbHVkZSAiV2FzbUIzSVJH
ZW5lcmF0b3JJbmxpbmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQ2FsbGVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUu
Y3BwCmluZGV4IGEzMjFjNTJmMTVlYy4uOGRiMjVmZDg0MjlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQ2FsbGVlLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0KiBMTEludENhbGxlZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpCiAjZXJyb3IgVW5z
dXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLgogI2VuZGlmCiAgICAgICAgIEFTU0VSVChyZWdpc3RlcnMu
bnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSA9PSBudW1iZXJPZkxMSW50Q2FsbGVlU2F2ZVJlZ2lzdGVy
cyk7Ci0gICAgICAgIGNhbGxlZVNhdmVSZWdpc3RlcnMuY29uc3RydWN0KFdURk1vdmUocmVnaXN0
ZXJzKSk7CisgICAgICAgIGNhbGxlZVNhdmVSZWdpc3RlcnMuY29uc3RydWN0KFJlZ2lzdGVyU2V0
MTI4Ojp1c2U2NEJpdHMocmVnaXN0ZXJzKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuICZjYWxsZWVT
YXZlUmVnaXN0ZXJzLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5jcHAKaW5kZXggMjAzYzg0M2FlOGU2Li44NzQ1MTVm
NzhhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5n
Q29udmVudGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxp
bmdDb252ZW50aW9uLmNwcApAQCAtMzcsMTAgKzM3LDEwIEBAIGNvbnN0IEpTQ2FsbGluZ0NvbnZl
bnRpb24mIGpzQ2FsbGluZ0NvbnZlbnRpb24oKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8SlNDYWxsaW5nQ29udmVudGlvbj4gc3RhdGljSlNDYWxsaW5nQ29udmVudGlvbjsKICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgc3RhdGljSlNDQ2FsbGluZ0NvbnZlbnRpb25GbGFnOwogICAg
IHN0ZDo6Y2FsbF9vbmNlKHN0YXRpY0pTQ0NhbGxpbmdDb252ZW50aW9uRmxhZywgW10gKCkgewot
ICAgICAgICBSZWdpc3RlclNldCBjYWxsZXJTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OmFs
bFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsZXJTYXZlUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0
ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgICAgIFJlZ2lzdGVyU2V0MTI4IGNh
bGxlclNhdmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldDEyODo6dXNlNjRCaXRzKFJlZ2lzdGVyU2V0
OjphbGxSZWdpc3RlcnMoKSk7CisgICAgICAgIGNhbGxlclNhdmVSZWdpc3RlcnMuZXhjbHVkZShS
ZWdpc3RlclNldDEyODo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIAotICAgICAgICBzdGF0aWNK
U0NhbGxpbmdDb252ZW50aW9uLmNvbnN0cnVjdChWZWN0b3I8UmVnPigpLCBWZWN0b3I8UmVnPigp
LCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLCBXVEZNb3ZlKGNhbGxlclNhdmVS
ZWdpc3RlcnMpKTsKKyAgICAgICAgc3RhdGljSlNDYWxsaW5nQ29udmVudGlvbi5jb25zdHJ1Y3Qo
VmVjdG9yPFJlZz4oKSwgVmVjdG9yPFJlZz4oKSwgUmVnaXN0ZXJTZXQxMjg6OmNhbGxlZVNhdmVS
ZWdpc3RlcnMoKS5hbGxSZWdpc3RlcnMoKSwgY2FsbGVyU2F2ZVJlZ2lzdGVycy5hbGxSZWdpc3Rl
cnMoKSk7CiAgICAgfSk7CiAKICAgICByZXR1cm4gc3RhdGljSlNDYWxsaW5nQ29udmVudGlvbjsK
QEAgLTU5LDExICs1OSwxMSBAQCBjb25zdCBXYXNtQ2FsbGluZ0NvbnZlbnRpb24mIHdhc21DYWxs
aW5nQ29udmVudGlvbigpCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZv
OjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOyArK2kpCiAgICAgICAgICAgICBmcHJBcmd1bWVu
dFJlZ2lzdGVyc1tpXSA9IEZQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihpKTsKIAotICAgICAg
ICBSZWdpc3RlclNldCBzY3JhdGNoID0gUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKTsKLSAgICAgICAg
c2NyYXRjaC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwotICAg
ICAgICBzY3JhdGNoLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygp
KTsKLSAgICAgICAgc2NyYXRjaC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJl
UmVnaXN0ZXJzKCkpOwotICAgICAgICBzY3JhdGNoLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNr
UmVnaXN0ZXJzKCkpOworICAgICAgICBSZWdpc3RlclNldDEyOCBzY3JhdGNoID0gUmVnaXN0ZXJT
ZXQxMjg6OnVzZTY0Qml0cyhSZWdpc3RlclNldDo6YWxsR1BScygpKTsKKyAgICAgICAgc2NyYXRj
aC5leGNsdWRlKFJlZ2lzdGVyU2V0MTI4OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgICAg
ICBzY3JhdGNoLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQxMjg6OnVzZTY0Qml0cyhSZWdpc3RlclNldDo6
bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpKTsKKyAgICAgICAgc2NyYXRjaC5leGNsdWRlKFJlZ2lz
dGVyU2V0MTI4Ojp1c2U2NEJpdHMoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3Rl
cnMoKSkpOworICAgICAgICBzY3JhdGNoLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQxMjg6OnVzZTY0Qml0
cyhSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSkpOwogICAgICAgICBmb3IgKFJlZyByZWcg
OiBncHJBcmd1bWVudFJlZ2lzdGVycykKICAgICAgICAgICAgIHNjcmF0Y2guY2xlYXIocmVnKTsK
IApAQCAtNzIsMTAgKzcyLDEwIEBAIGNvbnN0IFdhc21DYWxsaW5nQ29udmVudGlvbiYgd2FzbUNh
bGxpbmdDb252ZW50aW9uKCkKICAgICAgICAgICAgIHNjcmF0Y2hHUFJzLmFwcGVuZChyZWcuZ3By
KCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChzY3JhdGNoR1BScy5zaXplKCkgPj0gMik7CiAK
LSAgICAgICAgUmVnaXN0ZXJTZXQgY2FsbGVyU2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0Ojph
bGxSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbGVyU2F2ZVJlZ2lzdGVycy5leGNsdWRlKFJlZ2lz
dGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgICAgICBSZWdpc3RlclNldDEyOCBj
YWxsZXJTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQxMjg6OnVzZTY0Qml0cyhSZWdpc3RlclNl
dDo6YWxsUmVnaXN0ZXJzKCkpOworICAgICAgICBjYWxsZXJTYXZlUmVnaXN0ZXJzLmV4Y2x1ZGUo
UmVnaXN0ZXJTZXQxMjg6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAKLSAgICAgICAgc3RhdGlj
V2FzbUNhbGxpbmdDb252ZW50aW9uLmNvbnN0cnVjdChXVEZNb3ZlKGdwckFyZ3VtZW50UmVnaXN0
ZXJzKSwgV1RGTW92ZShmcHJBcmd1bWVudFJlZ2lzdGVycyksIFdURk1vdmUoc2NyYXRjaEdQUnMp
LCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLCBXVEZNb3ZlKGNhbGxlclNhdmVS
ZWdpc3RlcnMpKTsKKyAgICAgICAgc3RhdGljV2FzbUNhbGxpbmdDb252ZW50aW9uLmNvbnN0cnVj
dChXVEZNb3ZlKGdwckFyZ3VtZW50UmVnaXN0ZXJzKSwgV1RGTW92ZShmcHJBcmd1bWVudFJlZ2lz
dGVycyksIFdURk1vdmUoc2NyYXRjaEdQUnMpLCBSZWdpc3RlclNldDEyODo6Y2FsbGVlU2F2ZVJl
Z2lzdGVycygpLmFsbFJlZ2lzdGVycygpLCBjYWxsZXJTYXZlUmVnaXN0ZXJzLmFsbFJlZ2lzdGVy
cygpKTsKICAgICB9KTsKIAogICAgIHJldHVybiBzdGF0aWNXYXNtQ2FsbGluZ0NvbnZlbnRpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZl
bnRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlv
bi5oCmluZGV4IDU5MWVlYjI3YjAxNi4uOWU5ZTlkYzMzZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaApAQCAtNTUsMTAgKzU1
LDEwIEBAIHN0cnVjdCBDYWxsSW5mb3JtYXRpb24gewogCiAgICAgUmVnaXN0ZXJBdE9mZnNldExp
c3QgY29tcHV0ZVJlc3VsdHNPZmZzZXRMaXN0KCkKICAgICB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0
IHVzZWRSZXN1bHRSZWdpc3RlcnM7CisgICAgICAgIFJlZ2lzdGVyU2V0MTI4IHVzZWRSZXN1bHRS
ZWdpc3RlcnM7CiAgICAgICAgIGZvciAoVmFsdWVMb2NhdGlvbiBsb2MgOiByZXN1bHRzKSB7CiAg
ICAgICAgICAgICBpZiAobG9jLmlzUmVnKCkpCi0gICAgICAgICAgICAgICAgdXNlZFJlc3VsdFJl
Z2lzdGVycy5zZXQobG9jLnJlZygpKTsKKyAgICAgICAgICAgICAgICB1c2VkUmVzdWx0UmVnaXN0
ZXJzLnNldChsb2MucmVnKCksIEluY2x1ZGVSZWdpc3Rlcik7CiAgICAgICAgIH0KIAogICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0TGlzdCBzYXZlZFJlZ3ModXNlZFJlc3VsdFJlZ2lzdGVycywgUmVn
aXN0ZXJBdE9mZnNldExpc3Q6Olplcm9CYXNlZCk7CkBAIC04OCwxNCArODgsMTQgQEAgcHVibGlj
OgogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdhc21DYWxsaW5nQ29udmVudGlvbik7CiAKIHBy
aXZhdGU6Ci0gICAgQXJndW1lbnRMb2NhdGlvbiBtYXJzaGFsbExvY2F0aW9uSW1wbChDYWxsUm9s
ZSByb2xlLCBjb25zdCBWZWN0b3I8UmVnPiYgcmVnQXJncywgc2l6ZV90JiBjb3VudCwgc2l6ZV90
JiBzdGFja09mZnNldCkgY29uc3QKKyAgICBBcmd1bWVudExvY2F0aW9uIG1hcnNoYWxsTG9jYXRp
b25JbXBsKENhbGxSb2xlIHJvbGUsIGNvbnN0IFZlY3RvcjxSZWc+JiByZWdBcmdzLCBzaXplX3Qm
IGNvdW50LCBzaXplX3QmIHN0YWNrT2Zmc2V0LCBzaXplX3QgYXJnU2l6ZSkgY29uc3QKICAgICB7
CiAgICAgICAgIGlmIChjb3VudCA8IHJlZ0FyZ3Muc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJu
IEFyZ3VtZW50TG9jYXRpb246OnJlZyhyZWdBcmdzW2NvdW50KytdKTsKIAogICAgICAgICBjb3Vu
dCsrOwogICAgICAgICBBcmd1bWVudExvY2F0aW9uIHJlc3VsdCA9IHJvbGUgPT0gQ2FsbFJvbGU6
OkNhbGxlciA/IEFyZ3VtZW50TG9jYXRpb246OnN0YWNrQXJndW1lbnQoc3RhY2tPZmZzZXQpIDog
QXJndW1lbnRMb2NhdGlvbjo6c3RhY2soc3RhY2tPZmZzZXQpOwotICAgICAgICBzdGFja09mZnNl
dCArPSBzaXplb2YoUmVnaXN0ZXIpOworICAgICAgICBzdGFja09mZnNldCArPSBzaXplb2YoUmVn
aXN0ZXIpICogYXJnU2l6ZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEw
OSwxMCArMTA5LDExIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJl
ZjoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpS
ZWZOdWxsOgotICAgICAgICAgICAgcmV0dXJuIG1hcnNoYWxsTG9jYXRpb25JbXBsKHJvbGUsIGdw
ckFyZ3MsIGdwQXJndW1lbnRDb3VudCwgc3RhY2tPZmZzZXQpOworICAgICAgICAgICAgcmV0dXJu
IG1hcnNoYWxsTG9jYXRpb25JbXBsKHJvbGUsIGdwckFyZ3MsIGdwQXJndW1lbnRDb3VudCwgc3Rh
Y2tPZmZzZXQsIHZhbHVlVHlwZS5zaXplKCkgLyA4KTsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6
RjMyOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6Ci0gICAgICAgICAgICByZXR1cm4gbWFy
c2hhbGxMb2NhdGlvbkltcGwocm9sZSwgZnByQXJncywgZnBBcmd1bWVudENvdW50LCBzdGFja09m
ZnNldCk7CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlYxMjg6CisgICAgICAgICAgICByZXR1cm4g
bWFyc2hhbGxMb2NhdGlvbkltcGwocm9sZSwgZnByQXJncywgZnBBcmd1bWVudENvdW50LCBzdGFj
a09mZnNldCwgdmFsdWVUeXBlLnNpemUoKSAvIDgpOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Gb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3Jt
YXQuaAppbmRleCBjNzllMzM3YzdhN2EuLmZlNTM4MzVjMTk0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtNjgsNiArNjgsNyBAQCBpbmxpbmUgYm9vbCBpc1Zh
bHVlVHlwZShUeXBlIHR5cGUpCiAgICAgY2FzZSBUeXBlS2luZDo6STY0OgogICAgIGNhc2UgVHlw
ZUtpbmQ6OkYzMjoKICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6CisgICAgY2FzZSBUeXBlS2luZDo6
VjEyODoKICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CiAgICAgY2FzZSBUeXBlS2luZDo6
RnVuY3JlZjoKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC04Miw3ICs4Myw3IEBAIGlubGluZSBi
b29sIGlzVmFsdWVUeXBlKFR5cGUgdHlwZSkKIAogaW5saW5lIEpTU3RyaW5nKiB0eXBlVG9TdHJp
bmcoVk0mIHZtLCBUeXBlS2luZCB0eXBlKQogewotI2RlZmluZSBUWVBFX0NBU0UobWFjcm9OYW1l
LCB2YWx1ZSwgYjMsIGluYywgd2FzbU5hbWUpIFwKKyNkZWZpbmUgVFlQRV9DQVNFKG1hY3JvTmFt
ZSwgdmFsdWUsIGIzLCBpbmMsIHdhc21OYW1lLCAuLi4pIFwKICAgICBjYXNlIFR5cGVLaW5kOjpt
YWNyb05hbWU6IFwKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgI3dhc21O
YW1lKTsgXAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVu
Y3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBh
cnNlci5oCmluZGV4IDliZjk2NjNjOGEzNS4uODQ4OGMyM2JhM2FkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIldhc21QYXJzZXIuaCIKICNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5l
cy5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKQEAgLTg1LDYgKzg2LDExIEBA
IHB1YmxpYzoKICAgICAgICAgb3BlcmF0b3IgRXhwcmVzc2lvblR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CiAKICAgICAgICAgRXhwcmVzc2lvblR5cGUgb3BlcmF0b3ItPigpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBvdXQucHJpbnQobV92YWx1
ZSwgIjogIiwgbV90eXBlKTsKKyAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgVHlw
ZSBtX3R5cGU7CkBAIC0xMjUsNyArMTMxLDcgQEAgcHJpdmF0ZToKICNkZWZpbmUgV0FTTV9UUllf
UE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhyZXN1bHQsIHdoYXQpIGRvIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1fZXhwcmVz
c2lvblN0YWNrLmlzRW1wdHkoKSwgImNhbid0IHBvcCBlbXB0eSBzdGFjayBpbiAiIHdoYXQpOyBc
CiAgICAgICAgIHJlc3VsdCA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbV9jb250ZXh0
LmRpZFBvcFZhbHVlRnJvbVN0YWNrKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3Rh
Y2socmVzdWx0LnR5cGUoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgfSB3aGlsZSAoMCkKIAogICAgIHRlbXBsYXRlPE9wVHlwZT4KQEAgLTE0Nyw2ICsxNTMs
MTEgQEAgcHJpdmF0ZToKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhdG9t
aWNOb3RpZnkoRXh0QXRvbWljT3BUeXBlKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhdG9taWNGZW5jZShFeHRBdG9taWNPcFR5cGUpOwogCisgICAgdGVtcGxhdGU8RXh0
U2ltZE9wVHlwZSwgc2l6ZV90IG51bUltbWVkaWF0ZXMsIHNpemVfdCBudW1Bcmd1bWVudHM+Cisg
ICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gc2ltZENhc2UoYm9vbCByZWFjaGFi
bGUsIFR5cGUgcmV0dXJuVHlwZSwgY29uc3Qgc3RkOjphcnJheTxpbnQsIG51bUltbWVkaWF0ZXM+
JiBpbW1lZGlhdGVTaXplcywgY29uc3Qgc3RkOjphcnJheTxjb25zdCBUeXBlKiwgbnVtQXJndW1l
bnRzPiYgYXJndW1lbnRUeXBlcyk7CisgICAgdGVtcGxhdGU8U2ltZExhbmVPcGVyYXRpb24sIFNp
bWRMYW5lLCBTaW1kU2lnbk1vZGU+CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gc2ltZFNwZWNpYWxDYXNlKGJvb2wgcmVhY2hhYmxlKTsKKwogICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVGFibGVJbmRleCh1bnNpZ25lZCYpOwogICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRWxlbWVudEluZGV4KHVuc2lnbmVkJik7
CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VEYXRhU2VnbWVudElu
ZGV4KHVuc2lnbmVkJik7CkBAIC0yNjQsNyArMjc1LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxD
b250ZXh0Pjo6cGFyc2UoKSAtPiBSZXN1bHQKICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsg
aSA8IG51bWJlck9mTG9jYWxzOyArK2kpCiAgICAgICAgICAgICBtX2xvY2Fscy51bmNoZWNrZWRB
cHBlbmQodHlwZU9mTG9jYWwpOwogCi0gICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFk
ZExvY2FsKHR5cGVPZkxvY2FsLCBudW1iZXJPZkxvY2FscykpOworICAgICAgICBXQVNNX1RSWV9B
RERfVE9fQ09OVEVYVChhZGRMb2NhbCh0eXBlT2ZMb2NhbCwgbV9sb2NhbHMuc2l6ZSgpIC0gbnVt
YmVyT2ZMb2NhbHMsIG51bWJlck9mTG9jYWxzKSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0LmRp
ZEZpbmlzaFBhcnNpbmdMb2NhbHMoKTsKQEAgLTU0OSw2ICs1NjAsMzQyIEBAIGF1dG8gRnVuY3Rp
b25QYXJzZXI8Q29udGV4dD46OmF0b21pY0ZlbmNlKEV4dEF0b21pY09wVHlwZSBvcCkgLT4gUGFy
dGlhbFJlc3VsdAogICAgIHJldHVybiB7IH07CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENvbnRl
eHQ+Cit0ZW1wbGF0ZTxTaW1kTGFuZU9wZXJhdGlvbiBvcCwgU2ltZExhbmUgbGFuZSwgU2ltZFNp
Z25Nb2RlIHNpZ25Nb2RlPgorYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6c2ltZFNwZWNp
YWxDYXNlKGJvb2wgcmVhY2hhYmxlKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgYXV0byBwYXJz
ZU1lbU9wID0gWyZdICh1aW50MzJfdCYgb2Zmc2V0LCBUeXBlZEV4cHJlc3Npb24mIHBvaW50ZXIp
IC0+IFBhcnRpYWxSZXN1bHQgeworICAgICAgICB1aW50MzJfdCBtYXhBbGlnbm1lbnQ7CisgICAg
ICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9hZExh
bmU4OgorICAgICAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpTdG9yZUxhbmU4OgorICAgICAg
ICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkU3BsYXQ4OgorICAgICAgICAgICAgbWF4QWxp
Z25tZW50ID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNpbWRMYW5lT3Bl
cmF0aW9uOjpMb2FkTGFuZTE2OgorICAgICAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpTdG9y
ZUxhbmUxNjoKKyAgICAgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9hZFNwbGF0MTY6Cisg
ICAgICAgICAgICBtYXhBbGlnbm1lbnQgPSAyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgU2ltZExhbmVPcGVyYXRpb246OkxvYWRMYW5lMzI6CisgICAgICAgIGNhc2UgU2ltZExh
bmVPcGVyYXRpb246OlN0b3JlTGFuZTMyOgorICAgICAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9u
OjpMb2FkU3BsYXQzMjoKKyAgICAgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9hZFBhZDMy
OgorICAgICAgICAgICAgbWF4QWxpZ25tZW50ID0gNDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkTGFuZTY0OgorICAgICAgICBjYXNlIFNp
bWRMYW5lT3BlcmF0aW9uOjpTdG9yZUxhbmU2NDoKKyAgICAgICAgY2FzZSBTaW1kTGFuZU9wZXJh
dGlvbjo6TG9hZFNwbGF0NjQ6CisgICAgICAgIGNhc2UgU2ltZExhbmVPcGVyYXRpb246OkxvYWRQ
YWQ2NDoKKyAgICAgICAgICAgIG1heEFsaWdubWVudCA9IDg7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9hZDoKKyAgICAgICAgY2FzZSBTaW1k
TGFuZU9wZXJhdGlvbjo6U3RvcmU6CisgICAgICAgICAgICBtYXhBbGlnbm1lbnQgPSAxNjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighbV9p
bmZvLm1lbW9yeSwgInNpbWQgbWVtb3J5IGluc3RydWN0aW9ucyBuZWVkIGEgbWVtb3J5IGRlZmlu
ZWQgaW4gdGhlIG1vZHVsZSIpOworCisgICAgICAgIHVpbnQzMl90IGFsaWdubWVudDsKKyAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoYWxpZ25tZW50KSwgImNhbid0
IGdldCBzaW1kIG1lbW9yeSBvcCBhbGlnbm1lbnQiKTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRihhbGlnbm1lbnQgPiBtYXhBbGlnbm1lbnQsICJhbGlnbm1lbnQ6ICIsIGFsaWdubWVudCwg
IiBjYW4ndCBiZSBsYXJnZXIgdGhhbiBtYXggYWxpZ25tZW50IGZvciBzaW1kIG9wZXJhdGlvbjog
IiwgbWF4QWxpZ25tZW50KTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJV
SW50MzIob2Zmc2V0KSwgImNhbid0IGdldCBzaW1kIG1lbW9yeSBvcCBvZmZzZXQiKTsKKyAgICAg
ICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhwb2ludGVyLCAic2ltZCBtZW1v
cnkgb3AgcG9pbnRlciIpOworICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFwb2ludGVy
LnR5cGUoKS5pc0kzMigpLCAicG9pbnRlciBtdXN0IGJlIGkzMiIpOworCisgICAgICAgIHJldHVy
biB7IH07CisgICAgfTsKKworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIFNpbWRMYW5lT3Bl
cmF0aW9uOjpDb25zdDogeworICAgICAgICB2MTI4X3QgY29uc3RhbnQ7CisgICAgICAgIEFTU0VS
VChsYW5lID09IFNpbWRMYW5lOjp2MTI4KTsKKyAgICAgICAgQVNTRVJUKHNpZ25Nb2RlID09IFNp
bWRTaWduTW9kZTo6Tm9uZSk7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlSW1t
Qnl0ZUFycmF5MTYoY29uc3RhbnQpLCAiY2FuJ3QgcGFyc2UgMTI4LWJpdCB2ZWN0b3IgY29uc3Rh
bnQiKTsKKyAgICAgICAgaWYgKCFyZWFjaGFibGUpCisgICAgICAgICAgICByZXR1cm4geyB9Owor
CisgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChUeXBlczo6VjEy
OCwgbV9jb250ZXh0LmFkZENvbnN0YW50KGNvbnN0YW50KSk7CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorICAgIGNhc2UgU2ltZExhbmVPcGVyYXRpb246OlNwbGF0OiB7CisgICAgICAgIEFT
U0VSVChzaWduTW9kZSA9PSBTaW1kU2lnbk1vZGU6Ok5vbmUpOworCisgICAgICAgIFR5cGVkRXhw
cmVzc2lvbiBzY2FsYXI7CisgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lO
VE8oc2NhbGFyLCAic2VsZWN0IGNvbmRpdGlvbiIpOworICAgICAgICBib29sIG9rVHlwZTsKKyAg
ICAgICAgc3dpdGNoIChsYW5lKSB7CisgICAgICAgIGNhc2UgU2ltZExhbmU6Omk4eDE2OgorICAg
ICAgICBjYXNlIFNpbWRMYW5lOjppMTZ4ODoKKyAgICAgICAgY2FzZSBTaW1kTGFuZTo6aTMyeDQ6
CisgICAgICAgICAgICBva1R5cGUgPSBzY2FsYXIudHlwZSgpLmlzSTMyKCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBTaW1kTGFuZTo6aTY0eDI6CisgICAgICAgICAgICBva1R5
cGUgPSBzY2FsYXIudHlwZSgpLmlzSTY0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBTaW1kTGFuZTo6ZjMyeDQ6CisgICAgICAgICAgICBva1R5cGUgPSBzY2FsYXIudHlwZSgp
LmlzRjMyKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTaW1kTGFuZTo6ZjY0
eDI6CisgICAgICAgICAgICBva1R5cGUgPSBzY2FsYXIudHlwZSgpLmlzRjY0KCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9J
Righb2tUeXBlLCAiV3JvbmcgdHlwZSB0byBTSU1EIHNwbGF0Iik7CisKKyAgICAgICAgaWYgKCFy
ZWFjaGFibGUpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIEV4cHJlc3Npb25U
eXBlIHJlc3VsdDsKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkU2ltZFNwbGF0
KGxhbmUsIHNjYWxhciwgcmVzdWx0KSk7CisgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0
cnVjdEFuZEFwcGVuZChUeXBlczo6VjEyOCwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICB9CisgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6U2hyOgorICAgIGNhc2UgU2ltZExh
bmVPcGVyYXRpb246OlNobDogeworICAgICAgICBUeXBlZEV4cHJlc3Npb24gdmVjdG9yOworICAg
ICAgICBUeXBlZEV4cHJlc3Npb24gc2hpZnQ7CisgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNT
SU9OX1NUQUNLX0lOVE8odmVjdG9yLCAic2hpZnQgdmVjdG9yIik7CisgICAgICAgIFdBU01fVFJZ
X1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8oc2hpZnQsICJzaGlmdCBpMzIiKTsKKyAgICAgICAg
V0FTTV9WQUxJREFUT1JfRkFJTF9JRighdmVjdG9yLnR5cGUoKS5pc1YxMjgoKSwgIlNoaWZ0IHZl
Y3RvciBtdXN0IGJlIHYxMjgiKTsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighc2hp
ZnQudHlwZSgpLmlzSTMyKCksICJTaGlmdCBhbW91bnQgbXVzdCBiZSBpMzIiKTsKKworICAgICAg
ICBpZiAoIXJlYWNoYWJsZSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgRXhw
cmVzc2lvblR5cGUgcmVzdWx0OworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRT
aW1kU2hpZnQob3AsIFNpbWRJbmZvIHsgbGFuZSwgc2lnbk1vZGUgfSwgdmVjdG9yLCBzaGlmdCwg
cmVzdWx0KSk7CisgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChU
eXBlczo6VjEyOCwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgY2Fz
ZSBTaW1kTGFuZU9wZXJhdGlvbjo6RXh0bXVsTG93OgorICAgIGNhc2UgU2ltZExhbmVPcGVyYXRp
b246OkV4dG11bEhpZ2g6IHsKKyAgICAgICAgVHlwZWRFeHByZXNzaW9uIGxoczsKKyAgICAgICAg
VHlwZWRFeHByZXNzaW9uIHJoczsKKyAgICAgICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RB
Q0tfSU5UTyhsaHMsICJsaHMiKTsKKyAgICAgICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RB
Q0tfSU5UTyhyaHMsICJyaHMiKTsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighbGhz
LnR5cGUoKS5pc1YxMjgoKSwgImV4dG11bCBsaHMgdmVjdG9yIG11c3QgYmUgdjEyOCIpOworICAg
ICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFyaHMudHlwZSgpLmlzVjEyOCgpLCAiZXh0bXVs
IHJocyB2ZWN0b3IgbXVzdCBiZSB2MTI4Iik7CisKKyAgICAgICAgaWYgKCFyZWFjaGFibGUpCisg
ICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdDsK
KyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkU2ltZEV4dG11bChvcCwgU2ltZElu
Zm8geyBsYW5lLCBzaWduTW9kZSB9LCBsaHMsIHJocywgcmVzdWx0KSk7CisgICAgICAgIG1fZXhw
cmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChUeXBlczo6VjEyOCwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9h
ZFNwbGF0ODoKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkU3BsYXQxNjoKKyAgICBj
YXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkU3BsYXQzMjoKKyAgICBjYXNlIFNpbWRMYW5lT3Bl
cmF0aW9uOjpMb2FkU3BsYXQ2NDoKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkOiB7
CisgICAgICAgIHVpbnQzMl90IG9mZnNldDsKKyAgICAgICAgVHlwZWRFeHByZXNzaW9uIHBvaW50
ZXI7CisgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VNZW1PcChvZmZzZXQs
IHBvaW50ZXIpKTsKKyAgICAgICAgaWYgKCFyZWFjaGFibGUpCisgICAgICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7CisgICAgICAgIGlmIChvcCA9PSBT
aW1kTGFuZU9wZXJhdGlvbjo6TG9hZCkKKyAgICAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05U
RVhUKGFkZFNpbWRMb2FkKHBvaW50ZXIsIG9mZnNldCwgcmVzdWx0KSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFNpbWRMb2FkU3BsYXQob3As
IHBvaW50ZXIsIG9mZnNldCwgcmVzdWx0KSk7CisgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNv
bnN0cnVjdEFuZEFwcGVuZChUeXBlczo6VjEyOCwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICB9CisgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6U3RvcmU6IHsKKyAgICAgICAg
VHlwZWRFeHByZXNzaW9uIHZhbDsKKyAgICAgICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RB
Q0tfSU5UTyh2YWwsICJ2YWwiKTsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighdmFs
LnR5cGUoKS5pc1YxMjgoKSwgInN0b3JlIHZlY3RvciBtdXN0IGJlIHYxMjgiKTsKKyAgICAgICAg
CisgICAgICAgIHVpbnQzMl90IG9mZnNldDsKKyAgICAgICAgVHlwZWRFeHByZXNzaW9uIHBvaW50
ZXI7CisgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VNZW1PcChvZmZzZXQs
IHBvaW50ZXIpKTsKKworICAgICAgICBpZiAoIXJlYWNoYWJsZSkKKyAgICAgICAgICAgIHJldHVy
biB7IH07CisgICAgICAgIAorICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRTaW1k
U3RvcmUodmFsLCBwb2ludGVyLCBvZmZzZXQpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9hZExhbmU4OgorICAgIGNhc2UgU2ltZExh
bmVPcGVyYXRpb246OkxvYWRMYW5lMTY6CisgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9h
ZExhbmUzMjoKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkTGFuZTY0OiB7CisgICAg
ICAgIHVpbnQzMl90IG9mZnNldDsKKyAgICAgICAgVHlwZWRFeHByZXNzaW9uIHBvaW50ZXI7Cisg
ICAgICAgIFR5cGVkRXhwcmVzc2lvbiB2ZWN0b3I7CisgICAgICAgIHVpbnQ4X3QgbGFuZUluZGV4
OworICAgICAgICB1aW50OF90IGxhbmVDb3VudCA9IChbJl0geworICAgICAgICAgICAgc3dpdGNo
IChvcCkgeworICAgICAgICAgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9hZExhbmU4Ogor
ICAgICAgICAgICAgICAgIHJldHVybiAxNjsKKyAgICAgICAgICAgIGNhc2UgU2ltZExhbmVPcGVy
YXRpb246OkxvYWRMYW5lMTY6CisgICAgICAgICAgICAgICAgcmV0dXJuIDg7CisgICAgICAgICAg
ICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkTGFuZTMyOgorICAgICAgICAgICAgICAgIHJl
dHVybiA0OworICAgICAgICAgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9hZExhbmU2NDoK
KyAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSkoKTsKKworICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRP
KHZlY3RvciwgInZlY3RvciIpOworICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCF2ZWN0
b3IudHlwZSgpLmlzVjEyOCgpLCAibG9hZF9sYW5lIGlucHV0IG11c3QgYmUgYSB2ZWN0b3IiKTsK
KyAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZU1lbU9wKG9mZnNldCwgcG9p
bnRlcikpOworICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW1tTGFuZUlk
eChsYW5lQ291bnQsIGxhbmVJbmRleCkpOworCisgICAgICAgIGlmICghcmVhY2hhYmxlKQorICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7Cisg
ICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFNpbWRMb2FkTGFuZShvcCwgcG9pbnRl
ciwgdmVjdG9yLCBvZmZzZXQsIGxhbmVJbmRleCwgcmVzdWx0KSk7CisgICAgICAgIG1fZXhwcmVz
c2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChUeXBlczo6VjEyOCwgcmVzdWx0KTsKKworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpTdG9y
ZUxhbmU4OgorICAgIGNhc2UgU2ltZExhbmVPcGVyYXRpb246OlN0b3JlTGFuZTE2OgorICAgIGNh
c2UgU2ltZExhbmVPcGVyYXRpb246OlN0b3JlTGFuZTMyOgorICAgIGNhc2UgU2ltZExhbmVPcGVy
YXRpb246OlN0b3JlTGFuZTY0OiB7CisgICAgICAgIHVpbnQzMl90IG9mZnNldDsKKyAgICAgICAg
VHlwZWRFeHByZXNzaW9uIHBvaW50ZXI7CisgICAgICAgIFR5cGVkRXhwcmVzc2lvbiB2ZWN0b3I7
CisgICAgICAgIHVpbnQ4X3QgbGFuZUluZGV4OworICAgICAgICB1aW50OF90IGxhbmVDb3VudCA9
IChbJl0geworICAgICAgICAgICAgc3dpdGNoIChvcCkgeworICAgICAgICAgICAgY2FzZSBTaW1k
TGFuZU9wZXJhdGlvbjo6U3RvcmVMYW5lODoKKyAgICAgICAgICAgICAgICByZXR1cm4gMTY7Cisg
ICAgICAgICAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpTdG9yZUxhbmUxNjoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gODsKKyAgICAgICAgICAgIGNhc2UgU2ltZExhbmVPcGVyYXRpb246OlN0
b3JlTGFuZTMyOgorICAgICAgICAgICAgICAgIHJldHVybiA0OworICAgICAgICAgICAgY2FzZSBT
aW1kTGFuZU9wZXJhdGlvbjo6U3RvcmVMYW5lNjQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIDI7
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pKCk7CisKKyAgICAgICAgV0FT
TV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyh2ZWN0b3IsICJ2ZWN0b3IiKTsKKyAgICAg
ICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighdmVjdG9yLnR5cGUoKS5pc1YxMjgoKSwgInN0b3Jl
X2xhbmUgaW5wdXQgbXVzdCBiZSBhIHZlY3RvciIpOworICAgICAgICBXQVNNX0ZBSUxfSUZfSEVM
UEVSX0ZBSUxTKHBhcnNlTWVtT3Aob2Zmc2V0LCBwb2ludGVyKSk7CisgICAgICAgIFdBU01fRkFJ
TF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbW1MYW5lSWR4KGxhbmVDb3VudCwgbGFuZUluZGV4KSk7
CisKKyAgICAgICAgaWYgKCFyZWFjaGFibGUpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisg
ICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFNpbWRTdG9yZUxhbmUob3AsIHBvaW50
ZXIsIHZlY3Rvciwgb2Zmc2V0LCBsYW5lSW5kZXgpKTsKKworICAgICAgICByZXR1cm4geyB9Owor
ICAgIH0KKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkRXh0ZW5kOFU6CisgICAgY2Fz
ZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9hZEV4dGVuZDhTOgorICAgIGNhc2UgU2ltZExhbmVPcGVy
YXRpb246OkxvYWRFeHRlbmQxNlU6CisgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9hZEV4
dGVuZDE2UzoKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkRXh0ZW5kMzJVOgorICAg
IGNhc2UgU2ltZExhbmVPcGVyYXRpb246OkxvYWRFeHRlbmQzMlM6IHsKKyAgICAgICAgdWludDMy
X3Qgb2Zmc2V0OworICAgICAgICBUeXBlZEV4cHJlc3Npb24gcG9pbnRlcjsKKworICAgICAgICBX
QVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlTWVtT3Aob2Zmc2V0LCBwb2ludGVyKSk7CisK
KyAgICAgICAgaWYgKCFyZWFjaGFibGUpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAg
ICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdDsKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRF
WFQoYWRkU2ltZExvYWRFeHRlbmQob3AsIHBvaW50ZXIsIG9mZnNldCwgcmVzdWx0KSk7CisgICAg
ICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChUeXBlczo6VjEyOCwgcmVz
dWx0KTsKKworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBjYXNlIFNpbWRMYW5lT3Bl
cmF0aW9uOjpMb2FkUGFkMzI6CisgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9hZFBhZDY0
OiB7CisgICAgICAgIHVpbnQzMl90IG9mZnNldDsKKyAgICAgICAgVHlwZWRFeHByZXNzaW9uIHBv
aW50ZXI7CisKKyAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZU1lbU9wKG9m
ZnNldCwgcG9pbnRlcikpOworCisgICAgICAgIGlmICghcmVhY2hhYmxlKQorICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7CisgICAgICAgIFdB
U01fVFJZX0FERF9UT19DT05URVhUKGFkZFNpbWRMb2FkUGFkKG9wLCBwb2ludGVyLCBvZmZzZXQs
IHJlc3VsdCkpOworICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQo
VHlwZXM6OlYxMjgsIHJlc3VsdCk7CisKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAg
Y2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6U2h1ZmZsZTogeworICAgICAgICB2MTI4X3QgaW1tOwor
ICAgICAgICBUeXBlZEV4cHJlc3Npb24gYTsKKyAgICAgICAgVHlwZWRFeHByZXNzaW9uIGI7CisK
KyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VJbW1CeXRlQXJyYXkxNihpbW0pLCAi
Y2FuJ3QgcGFyc2UgMTI4LWJpdCBzaHVmZmxlIGltbWVkaWF0ZSIpOworCisgICAgICAgIFdBU01f
VFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8oYSwgImEiKTsKKyAgICAgICAgV0FTTV9WQUxJ
REFUT1JfRkFJTF9JRighYS50eXBlKCkuaXNWMTI4KCksICJzaHVmZmxlIGlucHV0IG11c3QgYmUg
YSB2ZWN0b3IiKTsKKyAgICAgICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhi
LCAiYiIpOworICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFiLnR5cGUoKS5pc1YxMjgo
KSwgInNodWZmbGUgaW5wdXQgbXVzdCBiZSBhIHZlY3RvciIpOworCisgICAgICAgIGlmICghcmVh
Y2hhYmxlKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBFeHByZXNzaW9uVHlw
ZSByZXN1bHQ7CisgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFNpbWRTaHVmZmxl
KGltbSwgYSwgYiwgcmVzdWx0KSk7CisgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVj
dEFuZEFwcGVuZChUeXBlczo6VjEyOCwgcmVzdWx0KTsKKworICAgICAgICByZXR1cm4geyB9Owor
ICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0cnVlLCAiaW52YWxpZCBzaW1kIG9wICIsIFNpbWRMYW5l
T3BlcmF0aW9uRHVtcChvcCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHsg
fTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ29udGV4dD4KK3RlbXBsYXRlPEV4dFNpbWRPcFR5
cGUgb3AsIHNpemVfdCBudW1JbW1lZGlhdGVzLCBzaXplX3QgbnVtQXJndW1lbnRzPgorYXV0byBG
dW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6c2ltZENhc2UoYm9vbCByZWFjaGFibGUsIFR5cGUgcmVz
dWx0VHlwZSwgY29uc3Qgc3RkOjphcnJheTxpbnQsIG51bUltbWVkaWF0ZXM+JiBpbW1lZGlhdGVT
aXplcywgY29uc3Qgc3RkOjphcnJheTxjb25zdCBUeXBlKiwgbnVtQXJndW1lbnRzPiYgYXJndW1l
bnRUeXBlcykgLT4gUGFydGlhbFJlc3VsdAoreworICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgbnVt
SW1tZWRpYXRlcz4gaW1tczsKKyAgICBzdGQ6OmFycmF5PEV4cHJlc3Npb25UeXBlLCBudW1Bcmd1
bWVudHM+IGFyZ3M7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1JbW1lZGlh
dGVzOyArK2kpCisgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbW1MYW5l
SWR4KGltbWVkaWF0ZVNpemVzW2ldLCBpbW1zW2ldKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bUFyZ3VtZW50czsgKytpKSB7CisgICAgICAgIFR5cGVkRXhwcmVzc2lvbiBlOwor
ICAgICAgICAKKyAgICAgICAgV0FTTV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhlLCAi
c2ltZCBhcmd1bWVudCIpOworICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGUudHlwZSgp
ICE9ICphcmd1bWVudFR5cGVzW2ldLCAidHlwZSBtaXNtYXRjaCBmb3IgYXJndW1lbnQgIiwgaSk7
CisgICAgICAgIGFyZ3NbaV0gPSBlLnZhbHVlKCk7CisgICAgfQorICAgIAorICAgIGlmICghcmVh
Y2hhYmxlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKHJlc3VsdFR5cGUuaXNWb2lk
KCkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICB9CisKKyAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7CisKKyAgICBhdXRv
IGFyZ3NUb0FwcGx5ID0gc3RkOjp0dXBsZV9jYXQoaW1tcywgYXJncywgc3RkOjpmb3J3YXJkX2Fz
X3R1cGxlKHJlc3VsdCkpOworICAgIFBhcnRpYWxSZXN1bHQgb3BSZXN1bHQgPSBzdGQ6OmFwcGx5
KFsmXShhdXRvJiYgLi4uYXJncykgeyByZXR1cm4gbV9jb250ZXh0LnRlbXBsYXRlIGFkZFNpbWRP
cDxvcD4oYXJncy4uLik7IH0sIGFyZ3NUb0FwcGx5KTsKKworICAgIGlmIChVTkxJS0VMWSghb3BS
ZXN1bHQpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShvcFJlc3VsdC5l
cnJvcigpKSk7CisgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKHJlc3Vs
dFR5cGUsIHJlc3VsdCk7CisgICAgCisgICAgcmV0dXJuIHsgfTsKK30KKwogdGVtcGxhdGU8dHlw
ZW5hbWUgQ29udGV4dD4KIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlVGFibGVJ
bmRleCh1bnNpZ25lZCYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CkBAIC0xMTI3LDcgKzE0
NzQsNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAg
ICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUluZGV4Rm9yTG9jYWwoaW5kZXgpKTsK
IAogICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7Ci0gICAgICAgIFdBU01fVFJZX0FERF9U
T19DT05URVhUKGdldExvY2FsKGluZGV4LCByZXN1bHQpKTsKKyAgICAgICAgV0FTTV9UUllfQURE
X1RPX0NPTlRFWFQoZ2V0TG9jYWwoaW5kZXgsIG1fbG9jYWxzW2luZGV4XSwgcmVzdWx0KSk7CiAg
ICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChtX2xvY2Fsc1tpbmRl
eF0sIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAtMTE0MCw3ICsxNDg3
LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAg
IFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8odmFsdWUsICJzZXRfbG9jYWwiKTsK
ICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihpbmRleCA+PSBtX2xvY2Fscy5zaXplKCks
ICJhdHRlbXB0IHRvIHNldCB1bmtub3duIGxvY2FsICIsIGluZGV4LCAiIGxhc3Qgb25lIGlzICIs
IG1fbG9jYWxzLnNpemUoKSk7CiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3Vi
dHlwZSh2YWx1ZS50eXBlKCksIG1fbG9jYWxzW2luZGV4XSksICJzZXRfbG9jYWwgdG8gdHlwZSAi
LCB2YWx1ZS50eXBlKCkua2luZCwgIiBleHBlY3RlZCAiLCBtX2xvY2Fsc1tpbmRleF0ua2luZCk7
Ci0gICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKHNldExvY2FsKGluZGV4LCB2YWx1ZSkp
OworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChzZXRMb2NhbChpbmRleCwgbV9sb2Nh
bHNbaW5kZXhdLCB2YWx1ZSkpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTE1
Miw3ICsxNDk5LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0Up
CiAgICAgICAgIFR5cGVkRXhwcmVzc2lvbiB2YWx1ZSA9IG1fZXhwcmVzc2lvblN0YWNrLmxhc3Qo
KTsKICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihpbmRleCA+PSBtX2xvY2Fscy5zaXpl
KCksICJhdHRlbXB0IHRvIHRlZSB1bmtub3duIGxvY2FsICIsIGluZGV4LCAiIGxhc3Qgb25lIGlz
ICIsIG1fbG9jYWxzLnNpemUoKSk7CiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlz
U3VidHlwZSh2YWx1ZS50eXBlKCksIG1fbG9jYWxzW2luZGV4XSksICJzZXRfbG9jYWwgdG8gdHlw
ZSAiLCB2YWx1ZS50eXBlKCkua2luZCwgIiBleHBlY3RlZCAiLCBtX2xvY2Fsc1tpbmRleF0ua2lu
ZCk7Ci0gICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKHNldExvY2FsKGluZGV4LCB2YWx1
ZSkpOworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChzZXRMb2NhbChpbmRleCwgbV9s
b2NhbHNbaW5kZXhdLCB2YWx1ZSkpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAt
MTIwMCw3ICsxNTQ3LDEwIEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9D
QVNFKQogICAgICAgICAgICAgVHlwZWRFeHByZXNzaW9uIGFyZyA9IG1fZXhwcmVzc2lvblN0YWNr
LmF0KGkpOwogICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKGFy
Zy50eXBlKCksIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4
KSksICJhcmd1bWVudCB0eXBlIG1pc21hdGNoIGluIGNhbGwsIGdvdCAiLCBhcmcudHlwZSgpLmtp
bmQsICIsIGV4cGVjdGVkICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1
bWVudEluZGV4KS5raW5kKTsKICAgICAgICAgICAgIGFyZ3MudW5jaGVja2VkQXBwZW5kKGFyZyk7
Ci0gICAgICAgICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsKKyAgICAgICAg
fQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3Muc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgICAgIFR5cGVkRXhwcmVzc2lvbiBhcmcgPSBtX2V4cHJlc3Npb25TdGFjay5hdChtX2V4
cHJlc3Npb25TdGFjay5zaXplKCkgLSBpIC0gMSk7CisgICAgICAgICAgICBtX2NvbnRleHQuZGlk
UG9wVmFsdWVGcm9tU3RhY2soYXJnLnR5cGUoKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9leHBy
ZXNzaW9uU3RhY2suc2hyaW5rKGZpcnN0QXJndW1lbnRJbmRleCk7CiAKQEAgLTEyNDEsNyArMTU5
MSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAg
ICAgICAgaWYgKGkgPCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSAxKQogICAgICAgICAgICAg
ICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZShhcmcudHlwZSgpLCBjYWxsZWVT
aWduYXR1cmUuYXJndW1lbnQoaSAtIGZpcnN0QXJndW1lbnRJbmRleCkpLCAiYXJndW1lbnQgdHlw
ZSBtaXNtYXRjaCBpbiBjYWxsX2luZGlyZWN0LCBnb3QgIiwgYXJnLnR5cGUoKS5raW5kLCAiLCBl
eHBlY3RlZCAiLCBjYWxsZWVTaWduYXR1cmUuYXJndW1lbnQoaSAtIGZpcnN0QXJndW1lbnRJbmRl
eCkua2luZCk7CiAgICAgICAgICAgICBhcmdzLnVuY2hlY2tlZEFwcGVuZChhcmcpOwotICAgICAg
ICAgICAgbV9jb250ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKCk7CisgICAgICAgICAgICBtX2Nv
bnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soYXJnLnR5cGUoKSk7CiAgICAgICAgIH0KICAgICAg
ICAgbV9leHByZXNzaW9uU3RhY2suc2hyaW5rKGZpcnN0QXJndW1lbnRJbmRleCk7CiAKQEAgLTEy
NzEsNyArMTYyMSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNF
KQogICAgICAgICAgICAgaWYgKGkgPCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSAxKQogICAg
ICAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoYXJnLnR5cGUoKSAhPSBjYWxsZWVT
aWduYXR1cmUuYXJndW1lbnQoaSAtIGZpcnN0QXJndW1lbnRJbmRleCksICJhcmd1bWVudCB0eXBl
IG1pc21hdGNoIGluIGNhbGxfaW5kaXJlY3QsIGdvdCAiLCBhcmcudHlwZSgpLmtpbmQsICIsIGV4
cGVjdGVkICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4
KS5raW5kKTsKICAgICAgICAgICAgIGFyZ3MudW5jaGVja2VkQXBwZW5kKGFyZyk7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsKKyAgICAgICAgICAgIG1fY29u
dGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjayhhcmcudHlwZSgpKTsKICAgICAgICAgfQogICAgICAg
ICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1bWVudEluZGV4KTsKIApAQCAtMTQ2
MiwxNyArMTgxMiwxNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FT
RSkKIAogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKG1fZXhwcmVzc2lvblN0YWNrLnNp
emUoKSA8IGV4Y2VwdGlvblNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksICJUb28gZmV3IGFyZ3Vt
ZW50cyBvbiBzdGFjayBmb3IgdGhlIGV4Y2VwdGlvbiBiZWluZyB0aHJvd24uIFRoZSBleGNlcHRp
b24gZXhwZWN0cyAiLCBleGNlcHRpb25TaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCAiLCBidXQg
b25seSAiLCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgd2VyZSBwcmVzZW50LiBFeGNlcHRp
b24gaGFzIHNpZ25hdHVyZTogIiwgZXhjZXB0aW9uU2lnbmF0dXJlLnRvU3RyaW5nKCkpOwogICAg
ICAgICB1bnNpZ25lZCBvZmZzZXQgPSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSBleGNlcHRp
b25TaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOwotICAgICAgICBWZWN0b3I8RXhwcmVzc2lvblR5
cGU+IGFyZ3M7CisgICAgICAgIFN0YWNrIGFyZ3MoZXhjZXB0aW9uU2lnbmF0dXJlLmFyZ3VtZW50
Q291bnQoKSk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWFyZ3MudHJ5UmVzZXJ2ZUNh
cGFjaXR5KGV4Y2VwdGlvblNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkpLCAiY2FuJ3QgYWxsb2Nh
dGUgZW5vdWdoIG1lbW9yeSBmb3IgdGhyb3cncyAiLCBleGNlcHRpb25TaWduYXR1cmUuYXJndW1l
bnRDb3VudCgpLCAiIGFyZ3VtZW50cyIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZXhjZXB0aW9uU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAgICAg
ICBUeXBlZEV4cHJlc3Npb24gYXJnID0gbV9leHByZXNzaW9uU3RhY2suYXQob2Zmc2V0ICsgaSk7
CiAgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGFyZy50eXBlKCkgIT0gZXhjZXB0
aW9uU2lnbmF0dXJlLmFyZ3VtZW50KGkpLCAiVGhlIGV4Y2VwdGlvbiBiZWluZyB0aHJvd24gZXhw
ZWN0cyB0aGUgYXJndW1lbnQgYXQgaW5kZXggIiwgaSwgIiB0byBiZSAiLCBleGNlcHRpb25TaWdu
YXR1cmUuYXJndW1lbnQoaSkua2luZCwgIiBidXQgYXJndW1lbnQgaGFzIHR5cGUgIiwgYXJnLnR5
cGUoKS5raW5kKTsKICAgICAgICAgICAgIGFyZ3MudW5jaGVja2VkQXBwZW5kKGFyZyk7Ci0gICAg
ICAgICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsKKyAgICAgICAgICAgIG1f
Y29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjayhhcmcudHlwZSgpKTsKICAgICAgICAgfQogICAg
ICAgICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmsob2Zmc2V0KTsKIAotICAgICAgICBXQVNNX1RS
WV9BRERfVE9fQ09OVEVYVChhZGRUaHJvdyhleGNlcHRpb25JbmRleCwgYXJncywgbV9leHByZXNz
aW9uU3RhY2spKTsKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkVGhyb3coZXhj
ZXB0aW9uSW5kZXgsIGFyZ3MpKTsKICAgICAgICAgbV91bnJlYWNoYWJsZUJsb2NrcyA9IDE7CiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAtMTU4MCw4ICsxOTMwLDEwIEBAIEZPUl9FQUNI
X1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogCiAgICAgY2FzZSBEcm9wOiB7CiAg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIW1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgImNh
bid0IGRyb3Agb24gZW1wdHkgc3RhY2siKTsKLSAgICAgICAgbV9leHByZXNzaW9uU3RhY2sudGFr
ZUxhc3QoKTsKLSAgICAgICAgbV9jb250ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKCk7CisgICAg
ICAgIAorICAgICAgICBUeXBlZEV4cHJlc3Npb24gdW51c2VkOworICAgICAgICBXQVNNX1RSWV9Q
T1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKHVudXNlZCwgImV4cGVjdCBhbiBhcmd1bWVudCB0byBk
cm9wIG9uIHRoZSBzdGFjayIpOworICAgICAgICAKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAKQEAgLTE2MjAsNiArMTk3MiwyNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChD
UkVBVEVfQ0FTRSkKIAogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KKworICAgIGNhc2UgRXh0
U2ltZDogeworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3Nl
bWJseVNJTUQoKSwgIndhc20tc2ltZCBpcyBub3QgZW5hYmxlZCIpOworICAgICAgICB1aW50OF90
IHNpbWRPcDsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50OChzaW1kT3Ap
LCAiY2FuJ3QgcGFyc2Ugd2FzbSBleHRlbmRlZCBvcGNvZGUiKTsKKworICAgICAgICBFeHRTaW1k
T3BUeXBlIG9wID0gc3RhdGljX2Nhc3Q8RXh0U2ltZE9wVHlwZT4oc2ltZE9wKTsKKyAgICAgICAg
c3dpdGNoIChvcCkgeworI2RlZmluZSBDUkVBVEVfU0lNRF9DQVNFKG5hbWUsIGlkLCBiM29wLCBh
aXJPcCwgaW5jLCB3YXNtT3AsIHJldHVyblR5cGUsIG51bUltbWVkaWF0ZXMsIGltbWVkaWF0ZVNp
emVzLCBudW1Bcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIGxhbmUsIHNpZ25Nb2RlLCBoYXNFeHRy
YUFpckFyZywgZXh0cmFBaXJBcmcpIFwKKyAgICAgICAgY2FzZSBFeHRTaW1kT3BUeXBlOjpuYW1l
OiByZXR1cm4gc2ltZENhc2U8RXh0U2ltZE9wVHlwZTo6bmFtZSwgbnVtSW1tZWRpYXRlcywgbnVt
QXJndW1lbnRzPih0cnVlLCByZXR1cm5UeXBlLCBpbW1lZGlhdGVTaXplcywgYXJndW1lbnRUeXBl
cyk7CisgICAgICAgIEZPUl9FQUNIX1dBU01fRVhUX1NJTURfT1AoQ1JFQVRFX1NJTURfQ0FTRSkK
KyN1bmRlZiBDUkVBVEVfU0lNRF9DQVNFCisjZGVmaW5lIENSRUFURV9TSU1EX0NBU0UobmFtZSwg
aWQsIGIzb3AsIGluYywgbGFuZU9wLCBsYW5lLCBzaWduTW9kZSkgY2FzZSBFeHRTaW1kT3BUeXBl
OjpuYW1lOiByZXR1cm4gc2ltZFNwZWNpYWxDYXNlPGxhbmVPcCwgbGFuZSwgc2lnbk1vZGU+KHRy
dWUpOworICAgICAgICBGT1JfRUFDSF9XQVNNX0VYVF9TSU1EX1NQRUNJQUxfT1AoQ1JFQVRFX1NJ
TURfQ0FTRSkKKyN1bmRlZiBDUkVBVEVfU0lNRF9DQVNFCisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRydWUsICJpbnZhbGlkIGV4dGVuZGVkIHNpbWQg
b3AgIiwgc2ltZE9wKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiB7IH07CisgICAgfQogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTk3MCw2ICsyMzQzLDI3IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlVW5y
ZWFjaGFibGVFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAgIH0KICN1bmRlZiBDUkVB
VEVfQVRPTUlDX0NBU0UKIAorICAgIGNhc2UgRXh0U2ltZDogeworICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVNJTUQoKSwgIndhc20tc2ltZCBpcyBu
b3QgZW5hYmxlZCIpOworICAgICAgICB1aW50OF90IHNpbWRPcDsKKyAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VVSW50OChzaW1kT3ApLCAiY2FuJ3QgcGFyc2Ugd2FzbSBleHRlbmRl
ZCBvcGNvZGUiKTsKKworICAgICAgICBFeHRTaW1kT3BUeXBlIG9wID0gc3RhdGljX2Nhc3Q8RXh0
U2ltZE9wVHlwZT4oc2ltZE9wKTsKKyAgICAgICAgc3dpdGNoIChvcCkgeworI2RlZmluZSBDUkVB
VEVfU0lNRF9DQVNFKG5hbWUsIGlkLCBiM29wLCBhaXJPcCwgaW5jLCB3YXNtT3AsIHJldHVyblR5
cGUsIG51bUltbWVkaWF0ZXMsIGltbWVkaWF0ZVNpemVzLCBudW1Bcmd1bWVudHMsIGFyZ3VtZW50
VHlwZXMsIGxhbmUsIHNpZ25Nb2RlLCBoYXNFeHRyYUFpckFyZywgZXh0cmFBaXJBcmcpIFwKKyAg
ICAgICAgY2FzZSBFeHRTaW1kT3BUeXBlOjpuYW1lOiByZXR1cm4gc2ltZENhc2U8RXh0U2ltZE9w
VHlwZTo6bmFtZSwgbnVtSW1tZWRpYXRlcywgbnVtQXJndW1lbnRzPihmYWxzZSwgcmV0dXJuVHlw
ZSwgaW1tZWRpYXRlU2l6ZXMsIGFyZ3VtZW50VHlwZXMpOworICAgICAgICBGT1JfRUFDSF9XQVNN
X0VYVF9TSU1EX09QKENSRUFURV9TSU1EX0NBU0UpCisjdW5kZWYgQ1JFQVRFX1NJTURfQ0FTRQor
I2RlZmluZSBDUkVBVEVfU0lNRF9DQVNFKG5hbWUsIGlkLCBiM29wLCBpbmMsIGxhbmVPcCwgbGFu
ZSwgc2lnbk1vZGUpIGNhc2UgRXh0U2ltZE9wVHlwZTo6bmFtZTogcmV0dXJuIHNpbWRTcGVjaWFs
Q2FzZTxsYW5lT3AsIGxhbmUsIHNpZ25Nb2RlPihmYWxzZSk7CisgICAgICAgIEZPUl9FQUNIX1dB
U01fRVhUX1NJTURfU1BFQ0lBTF9PUChDUkVBVEVfU0lNRF9DQVNFKQorI3VuZGVmIENSRUFURV9T
SU1EX0NBU0UKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYodHJ1ZSwgImludmFsaWQgZXh0ZW5kZWQgc2ltZCBvcCAiLCBzaW1kT3ApOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKICAgICAv
LyBubyBpbW1lZGlhdGUgY2FzZXMKICAgICBGT1JfRUFDSF9XQVNNX0JJTkFSWV9PUChDUkVBVEVf
Q0FTRSkKICAgICBGT1JfRUFDSF9XQVNNX1VOQVJZX09QKENSRUFURV9DQVNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKaW5kZXggMTM1
NjkwZGEyZDYwLi5jMWI5MGNkNzk2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAtNDQsOSArNDQsMTYgQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAorbmFtZXNwYWNlIExMSW50R2VuZXJhdG9ySW50
ZXJuYWwgeworc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KKwogY2xh
c3MgTExJbnRHZW5lcmF0b3IgOiBwdWJsaWMgQnl0ZWNvZGVHZW5lcmF0b3JCYXNlPEdlbmVyYXRv
clRyYWl0cz4gewogcHVibGljOgogICAgIHVzaW5nIEV4cHJlc3Npb25UeXBlID0gVmlydHVhbFJl
Z2lzdGVyOworICAgIHVzaW5nIEVycm9yVHlwZSA9IFN0cmluZzsKKyAgICB1c2luZyBQYXJ0aWFs
UmVzdWx0ID0gRXhwZWN0ZWQ8dm9pZCwgRXJyb3JUeXBlPjsKKyAgICB1c2luZyBVbmV4cGVjdGVk
UmVzdWx0ID0gVW5leHBlY3RlZDxFcnJvclR5cGU+OwogCiAgICAgc3RydWN0IENvbnRyb2xMb29w
ICB7CiAgICAgICAgIFJlZjxMYWJlbD4gbV9ib2R5OwpAQCAtNzksNiArODYsMTcgQEAgcHVibGlj
OgogICAgICAgICB1bnNpZ25lZCBtX2luc3RydWN0aW9uT2Zmc2V0OwogICAgICAgICB1bnNpZ25l
ZCBtX3RyeURlcHRoOwogICAgIH07CisgICAgCisgICAgc3RydWN0IFdhc21FeHByZXNzaW9uU2xv
dCB7CisgICAgICAgIFdhc206OlR5cGUgdHlwZTsKKyAgICAgICAgQ2hlY2tlZDx1bnNpZ25lZD4g
c2xvdEluZGV4OworICAgICAgICAKKyAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dC5wcmludCgiKCIsIHNsb3RJbmRleC52
YWx1ZSgpLCAiOiAiLCB0eXBlLCAiKSIpOworICAgICAgICB9CisgICAgfTsKKyAgICB1c2luZyBX
YXNtRXhwcmVzc2lvblNsb3RTdGFjayA9IFZlY3RvcjxXYXNtRXhwcmVzc2lvblNsb3QsIDE2PjsK
IAogICAgIHN0cnVjdCBDb250cm9sVHlwZSA6IHB1YmxpYyBzdGQ6OnZhcmlhbnQ8Q29udHJvbExv
b3AsIENvbnRyb2xUb3BMZXZlbCwgQ29udHJvbEJsb2NrLCBDb250cm9sSWYsIENvbnRyb2xUcnks
IENvbnRyb2xDYXRjaD4gewogICAgICAgICB1c2luZyBCYXNlID0gc3RkOjp2YXJpYW50PENvbnRy
b2xMb29wLCBDb250cm9sVG9wTGV2ZWwsIENvbnRyb2xCbG9jaywgQ29udHJvbElmLCBDb250cm9s
VHJ5LCBDb250cm9sQ2F0Y2g+OwpAQCAtODgsMzQgKzEwNiw0NCBAQCBwdWJsaWM6CiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBDb250cm9sVHlwZSB0b3BMZXZlbChCbG9j
a1NpZ25hdHVyZSBzaWduYXR1cmUsIHVuc2lnbmVkIHN0YWNrU2l6ZSwgUmVmUHRyPExhYmVsPiYm
IGNvbnRpbnVhdGlvbikKKyAgICAgICAgc3RhdGljIENvbnRyb2xUeXBlIHRvcExldmVsKEJsb2Nr
U2lnbmF0dXJlIHNpZ25hdHVyZSwgY29uc3QgV2FzbUV4cHJlc3Npb25TbG90U3RhY2smIHN0YWNr
U2xvdHMsIFJlZlB0cjxMYWJlbD4mJiBjb250aW51YXRpb24pCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIHN0YWNrU2l6ZSwgV1RGTW92ZShjb250
aW51YXRpb24pLCBDb250cm9sVG9wTGV2ZWwgeyB9KTsKKyAgICAgICAgICAgIHJldHVybiBDb250
cm9sVHlwZShzaWduYXR1cmUsIHN0YWNrU2xvdHMsIFdURk1vdmUoY29udGludWF0aW9uKSwgQ29u
dHJvbFRvcExldmVsIHsgfSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgQ29udHJvbFR5
cGUgbG9vcChCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIHVuc2lnbmVkIHN0YWNrU2l6ZSwgUmVm
PExhYmVsPiYmIGJvZHksIFJlZlB0cjxMYWJlbD4mJiBjb250aW51YXRpb24pCisgICAgICAgIHN0
YXRpYyBDb250cm9sVHlwZSBsb29wKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgY29uc3QgV2Fz
bUV4cHJlc3Npb25TbG90U3RhY2smIHN0YWNrU2xvdHMsIFJlZjxMYWJlbD4mJiBib2R5LCBSZWZQ
dHI8TGFiZWw+JiYgY29udGludWF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
Q29udHJvbFR5cGUoc2lnbmF0dXJlLCBzdGFja1NpemUgLSBzaWduYXR1cmUtPmFyZ3VtZW50Q291
bnQoKSwgV1RGTW92ZShjb250aW51YXRpb24pLCBDb250cm9sTG9vcCB7IFdURk1vdmUoYm9keSkg
fSk7CisgICAgICAgICAgICBXYXNtRXhwcmVzc2lvblNsb3RTdGFjayBuZXdTdGFjayB7IHN0YWNr
U2xvdHMgfTsKKyAgICAgICAgICAgIG5ld1N0YWNrLnJlbW92ZSgwLCBzaWduYXR1cmUtPmFyZ3Vt
ZW50Q291bnQoKSk7CisgICAgICAgICAgICByZXR1cm4gQ29udHJvbFR5cGUoc2lnbmF0dXJlLCBu
ZXdTdGFjaywgV1RGTW92ZShjb250aW51YXRpb24pLCBDb250cm9sTG9vcCB7IFdURk1vdmUoYm9k
eSkgfSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgQ29udHJvbFR5cGUgYmxvY2soQmxv
Y2tTaWduYXR1cmUgc2lnbmF0dXJlLCB1bnNpZ25lZCBzdGFja1NpemUsIFJlZlB0cjxMYWJlbD4m
JiBjb250aW51YXRpb24pCisgICAgICAgIHN0YXRpYyBDb250cm9sVHlwZSBibG9jayhCbG9ja1Np
Z25hdHVyZSBzaWduYXR1cmUsIGNvbnN0IFdhc21FeHByZXNzaW9uU2xvdFN0YWNrJiBzdGFja1Ns
b3RzLCBSZWZQdHI8TGFiZWw+JiYgY29udGludWF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gQ29udHJvbFR5cGUoc2lnbmF0dXJlLCBzdGFja1NpemUgLSBzaWduYXR1cmUtPmFy
Z3VtZW50Q291bnQoKSwgV1RGTW92ZShjb250aW51YXRpb24pLCBDb250cm9sQmxvY2sgeyB9KTsK
KyAgICAgICAgICAgIFdhc21FeHByZXNzaW9uU2xvdFN0YWNrIG5ld1N0YWNrIHsgc3RhY2tTbG90
cyB9OworICAgICAgICAgICAgbmV3U3RhY2sucmVtb3ZlKDAsIHNpZ25hdHVyZS0+YXJndW1lbnRD
b3VudCgpKTsKKyAgICAgICAgICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIG5ld1N0
YWNrLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiksIENvbnRyb2xCbG9jayB7IH0pOwogICAgICAgICB9
CiAKLSAgICAgICAgc3RhdGljIENvbnRyb2xUeXBlIGlmXyhCbG9ja1NpZ25hdHVyZSBzaWduYXR1
cmUsIHVuc2lnbmVkIHN0YWNrU2l6ZSwgUmVmPExhYmVsPiYmIGFsdGVybmF0ZSwgUmVmUHRyPExh
YmVsPiYmIGNvbnRpbnVhdGlvbikKKyAgICAgICAgc3RhdGljIENvbnRyb2xUeXBlIGlmXyhCbG9j
a1NpZ25hdHVyZSBzaWduYXR1cmUsIGNvbnN0IFdhc21FeHByZXNzaW9uU2xvdFN0YWNrJiBzdGFj
a1Nsb3RzLCBSZWY8TGFiZWw+JiYgYWx0ZXJuYXRlLCBSZWZQdHI8TGFiZWw+JiYgY29udGludWF0
aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQ29udHJvbFR5cGUoc2lnbmF0dXJl
LCBzdGFja1NpemUgLSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSwgV1RGTW92ZShjb250aW51
YXRpb24pLCBDb250cm9sSWYgeyBXVEZNb3ZlKGFsdGVybmF0ZSkgfSk7CisgICAgICAgICAgICBX
YXNtRXhwcmVzc2lvblNsb3RTdGFjayBuZXdTdGFjayB7IHN0YWNrU2xvdHMgfTsKKyAgICAgICAg
ICAgIG5ld1N0YWNrLnJlbW92ZSgwLCBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSk7CisgICAg
ICAgICAgICByZXR1cm4gQ29udHJvbFR5cGUoc2lnbmF0dXJlLCBuZXdTdGFjaywgV1RGTW92ZShj
b250aW51YXRpb24pLCBDb250cm9sSWYgeyBXVEZNb3ZlKGFsdGVybmF0ZSkgfSk7CiAgICAgICAg
IH0KIAotICAgICAgICBzdGF0aWMgQ29udHJvbFR5cGUgY3JlYXRlVHJ5KEJsb2NrU2lnbmF0dXJl
IHNpZ25hdHVyZSwgdW5zaWduZWQgc3RhY2tTaXplLCBSZWY8TGFiZWw+JiYgdHJ5TGFiZWwsIFJl
ZlB0cjxMYWJlbD4mJiBjb250aW51YXRpb24sIHVuc2lnbmVkIHRyeURlcHRoKQorICAgICAgICBz
dGF0aWMgQ29udHJvbFR5cGUgY3JlYXRlVHJ5KEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgY29u
c3QgV2FzbUV4cHJlc3Npb25TbG90U3RhY2smIHN0YWNrU2xvdHMsIFJlZjxMYWJlbD4mJiB0cnlM
YWJlbCwgUmVmUHRyPExhYmVsPiYmIGNvbnRpbnVhdGlvbiwgdW5zaWduZWQgdHJ5RGVwdGgpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBDb250cm9sVHlwZShzaWduYXR1cmUsIHN0YWNr
U2l6ZSAtIHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbiks
IENvbnRyb2xUcnkgeyBXVEZNb3ZlKHRyeUxhYmVsKSwgdHJ5RGVwdGggfSk7CisgICAgICAgICAg
ICBXYXNtRXhwcmVzc2lvblNsb3RTdGFjayBuZXdTdGFjayB7IHN0YWNrU2xvdHMgfTsKKyAgICAg
ICAgICAgIG5ld1N0YWNrLnJlbW92ZSgwLCBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gQ29udHJvbFR5cGUoc2lnbmF0dXJlLCBuZXdTdGFjaywgV1RGTW92
ZShjb250aW51YXRpb24pLCBDb250cm9sVHJ5IHsgV1RGTW92ZSh0cnlMYWJlbCksIHRyeURlcHRo
IH0pOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIENvbnRyb2xUeXBlIGNyZWF0ZUNhdGNo
KEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgdW5zaWduZWQgc3RhY2tTaXplLCBSZWY8TGFiZWw+
JiYgdHJ5U3RhcnQsIFJlZlB0cjxMYWJlbD4mJiBjb250aW51YXRpb24sIFJlZjxMYWJlbD4gdHJ5
RW5kLCB1bnNpZ25lZCB0cnlEZXB0aCwgVmlydHVhbFJlZ2lzdGVyIGV4Y2VwdGlvbikKKyAgICAg
ICAgc3RhdGljIENvbnRyb2xUeXBlIGNyZWF0ZUNhdGNoKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVy
ZSwgY29uc3QgV2FzbUV4cHJlc3Npb25TbG90U3RhY2smIHN0YWNrU2xvdHMsIFJlZjxMYWJlbD4m
JiB0cnlTdGFydCwgUmVmUHRyPExhYmVsPiYmIGNvbnRpbnVhdGlvbiwgUmVmPExhYmVsPiB0cnlF
bmQsIHVuc2lnbmVkIHRyeURlcHRoLCBWaXJ0dWFsUmVnaXN0ZXIgZXhjZXB0aW9uKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gQ29udHJvbFR5cGUoc2lnbmF0dXJlLCBzdGFja1NpemUg
LSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSwgV1RGTW92ZShjb250aW51YXRpb24pLCBDb250
cm9sQ2F0Y2ggeyBDYXRjaEtpbmQ6OkNhdGNoLCBXVEZNb3ZlKHRyeVN0YXJ0KSwgV1RGTW92ZSh0
cnlFbmQpLCB0cnlEZXB0aCwgZXhjZXB0aW9uIH0pOworICAgICAgICAgICAgV2FzbUV4cHJlc3Np
b25TbG90U3RhY2sgbmV3U3RhY2sgeyBzdGFja1Nsb3RzIH07CisgICAgICAgICAgICBuZXdTdGFj
ay5yZW1vdmUoMCwgc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCkpOworICAgICAgICAgICAgcmV0
dXJuIENvbnRyb2xUeXBlKHNpZ25hdHVyZSwgbmV3U3RhY2ssIFdURk1vdmUoY29udGludWF0aW9u
KSwgQ29udHJvbENhdGNoIHsgQ2F0Y2hLaW5kOjpDYXRjaCwgV1RGTW92ZSh0cnlTdGFydCksIFdU
Rk1vdmUodHJ5RW5kKSwgdHJ5RGVwdGgsIGV4Y2VwdGlvbiB9KTsKICAgICAgICAgfQogCiAgICAg
ICAgIHN0YXRpYyBib29sIGlzTG9vcChjb25zdCBDb250cm9sVHlwZSYgY29udHJvbCkgeyByZXR1
cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxDb250cm9sTG9vcD4oY29udHJvbCk7IH0KQEAgLTEz
Miw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gY2F0Y2hEYXRhLm1fa2lu
ZCA9PSBDYXRjaEtpbmQ6OkNhdGNoOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgc3Rh
Y2tTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdGFja1NpemU7IH0KKyAgICAgICAgdW5zaWduZWQg
c3RhY2tDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvblN0YWNrU2xvdHMuc2l6ZSgp
OyB9CiAgICAgICAgIEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2lnbmF0dXJlOyB9CiAKICAgICAgICAgUmVmUHRyPExhYmVsPiB0YXJnZXRMYWJlbEZvckJyYW5j
aCgpIGNvbnN0CkBAIC0xNTgsMjQgKzE4NiwyMCBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAg
ICAgICBCbG9ja1NpZ25hdHVyZSBtX3NpZ25hdHVyZTsKLSAgICAgICAgdW5zaWduZWQgbV9zdGFj
a1NpemU7CisgICAgICAgIFdhc21FeHByZXNzaW9uU2xvdFN0YWNrIG1fZXhwcmVzc2lvblN0YWNr
U2xvdHM7CiAgICAgICAgIFJlZlB0cjxMYWJlbD4gbV9jb250aW51YXRpb247CiAKICAgICBwcml2
YXRlOgogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBDb250cm9sVHlwZShC
bG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIHVuc2lnbmVkIHN0YWNrU2l6ZSwgUmVmUHRyPExhYmVs
PiYmIGNvbnRpbnVhdGlvbiwgVCYmIHQpCisgICAgICAgIENvbnRyb2xUeXBlKEJsb2NrU2lnbmF0
dXJlIHNpZ25hdHVyZSwgY29uc3QgV2FzbUV4cHJlc3Npb25TbG90U3RhY2smIHN0YWNrU2xvdHMs
IFJlZlB0cjxMYWJlbD4mJiBjb250aW51YXRpb24sIFQmJiB0KQogICAgICAgICAgICAgOiBCYXNl
KHN0ZDo6Zm9yd2FyZDxUPih0KSkKICAgICAgICAgICAgICwgbV9zaWduYXR1cmUoc2lnbmF0dXJl
KQotICAgICAgICAgICAgLCBtX3N0YWNrU2l6ZShzdGFja1NpemUpCisgICAgICAgICAgICAsIG1f
ZXhwcmVzc2lvblN0YWNrU2xvdHMoc3RhY2tTbG90cykKICAgICAgICAgICAgICwgbV9jb250aW51
YXRpb24oV1RGTW92ZShjb250aW51YXRpb24pKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICB9
OwotCi0gICAgdXNpbmcgRXJyb3JUeXBlID0gU3RyaW5nOwotICAgIHVzaW5nIFBhcnRpYWxSZXN1
bHQgPSBFeHBlY3RlZDx2b2lkLCBFcnJvclR5cGU+OwotICAgIHVzaW5nIFVuZXhwZWN0ZWRSZXN1
bHQgPSBVbmV4cGVjdGVkPEVycm9yVHlwZT47Ci0KKyAgICAKICAgICB1c2luZyBDb250cm9sRW50
cnkgPSBGdW5jdGlvblBhcnNlcjxMTEludEdlbmVyYXRvcj46OkNvbnRyb2xFbnRyeTsKICAgICB1
c2luZyBDb250cm9sU3RhY2sgPSBGdW5jdGlvblBhcnNlcjxMTEludEdlbmVyYXRvcj46OkNvbnRy
b2xTdGFjazsKICAgICB1c2luZyBSZXN1bHRMaXN0ID0gRnVuY3Rpb25QYXJzZXI8TExJbnRHZW5l
cmF0b3I+OjpSZXN1bHRMaXN0OwpAQCAtMTgzLDYgKzIwNywzMyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgVHlwZWRFeHByZXNzaW9uID0gRnVuY3Rpb25QYXJzZXI8TExJbnRHZW5lcmF0b3I+OjpUeXBl
ZEV4cHJlc3Npb247CiAKICAgICBzdGF0aWMgRXhwcmVzc2lvblR5cGUgZW1wdHlFeHByZXNzaW9u
KCkgeyByZXR1cm4geyB9OyB9OworICAgIHN0YXRpYyBWaXJ0dWFsUmVnaXN0ZXIgbmV4dFNsb3RG
b3JVcHBlckJpdHMoVmlydHVhbFJlZ2lzdGVyIGxvdykKKyAgICB7CisgICAgICAgIHJldHVybiBs
b3cgKyAxOworICAgIH0KKyAgICAKKyAgICB2b2lkIHR5cGVkTW92ZShWaXJ0dWFsUmVnaXN0ZXIg
ZHN0LCBUeXBlZEV4cHJlc3Npb24gc3JjKQorICAgIHsKKyAgICAgICAgZGF0YUxvZ0xuSWYoTExJ
bnRHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlsiLCBtX2Z1bmN0aW9uSW5kZXgsICJdIiwK
KyAgICAgICAgICAgICJNb3ZlIHR5cGUgIiwgc3JjLnR5cGUoKSwgIiBhdCBpbmRleCAiLCBzcmMu
dmFsdWUoKSwgIiwgIiwgbmV4dFNsb3RGb3JVcHBlckJpdHMoc3JjLnZhbHVlKCkpLCAiIHRvICIs
IGRzdCwgIiwgIiwgbmV4dFNsb3RGb3JVcHBlckJpdHMoZHN0KSk7CisgICAgICAgIAorICAgICAg
ICBXYXNtTW92OjplbWl0KHRoaXMsIGRzdCwgc3JjKTsKKyAgICAgICAgaWYgKHNyYy50eXBlKCku
c2l6ZSgpID09IDE2KQorICAgICAgICAgICAgV2FzbU1vdjo6ZW1pdCh0aGlzLCBuZXh0U2xvdEZv
clVwcGVyQml0cyhkc3QpLCBuZXh0U2xvdEZvclVwcGVyQml0cyhzcmMudmFsdWUoKSkpOworICAg
IH0KKyAgICAKKyAgICBDaGVja2VkPHVuc2lnbmVkPiBuZXh0U2xvdEluZGV4KFR5cGUgdHlwZSkg
Y29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHNsb3RTaXplID0gdHlwZS5zaXplKCk7Cisg
ICAgICAgIGlmIChzbG90U2l6ZSA8IDgpCisgICAgICAgICAgICBzbG90U2l6ZSA9IDg7CisgICAg
ICAgIAorICAgICAgICBDaGVja2VkPHVuc2lnbmVkPiBzbG90SW5kZXggPSBtX2ZpcnN0U3RhY2tT
bG90SW5kZXg7CisgICAgICAgIGlmIChtX2V4cHJlc3Npb25TdGFja1Nsb3RzLnNpemUoKSkKKyAg
ICAgICAgICAgIHNsb3RJbmRleCA9IG1fZXhwcmVzc2lvblN0YWNrU2xvdHMubGFzdCgpLnNsb3RJ
bmRleCArIDE7CisgICAgICAgIHNsb3RJbmRleCArPSBzbG90U2l6ZSAvIDggLSAxOworICAgICAg
ICByZXR1cm4gc2xvdEluZGV4OworICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSAuLi5B
cmdzPgogICAgIE5FVkVSX0lOTElORSBVbmV4cGVjdGVkUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBmYWlsKEFyZ3MuLi4gYXJncykgY29uc3QKQEAgLTE5OCwzNCArMjQ5LDU3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeHByZXNzaW9uTGlzdEEsIHR5cGVuYW1lIEV4cHJlc3Np
b25MaXN0Qj4KICAgICB2b2lkIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGNvbnN0IEV4cHJlc3Npb25M
aXN0QSYgZGVzdGluYXRpb25zLCBjb25zdCBFeHByZXNzaW9uTGlzdEImIHZhbHVlcykKICAgICB7
CisgICAgICAgIGRhdGFMb2dMbklmKExMSW50R2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJb
IiwgbV9mdW5jdGlvbkluZGV4LCAiXSIsCisgICAgICAgICAgICAiVW5pZnkgIiwgbGlzdER1bXAo
ZGVzdGluYXRpb25zKSwgIiA8LSAiLCBsaXN0RHVtcCh2YWx1ZXMpKTsKICAgICAgICAgQVNTRVJU
KGRlc3RpbmF0aW9ucy5zaXplKCkgPD0gdmFsdWVzLnNpemUoKSk7CiAgICAgICAgIGF1dG8gb2Zm
c2V0ID0gdmFsdWVzLnNpemUoKSAtIGRlc3RpbmF0aW9ucy5zaXplKCk7CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZGVzdGluYXRpb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAg
ICBhdXRvJiBzcmMgPSB2YWx1ZXNbb2Zmc2V0ICsgaV07CiAgICAgICAgICAgICBhdXRvJiBkc3Qg
PSBkZXN0aW5hdGlvbnNbaV07Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8VmlydHVhbFJl
Z2lzdGVyPihzcmMpICE9IHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oZHN0KSkKLSAgICAg
ICAgICAgICAgICBXYXNtTW92OjplbWl0KHRoaXMsIGRzdCwgc3JjKTsKKyAgICAgICAgICAgIGlm
IChzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KHNyYy52YWx1ZSgpKSAhPSBzdGF0aWNfY2Fz
dDxWaXJ0dWFsUmVnaXN0ZXI+KGRzdC52YWx1ZSgpKSkKKyAgICAgICAgICAgICAgICB0eXBlZE1v
dmUoZHN0LCBzcmMpOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHVuc2lnbmVkIHN0YWNr
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Npb25TdGFja1Nsb3RzLnNpemUoKTsgfQor
ICAgIHVuc2lnbmVkIHN0YWNrU2xvdFNpemUoKSBjb25zdCB7IHJldHVybiBuZXh0U2xvdEluZGV4
KFR5cGVzOjpJNjQpOyB9CiAKICAgICBlbnVtIE5vQ29uc2lzdGVuY3lDaGVja1RhZyB7IE5vQ29u
c2lzdGVuY3lDaGVjayB9OwotICAgIEV4cHJlc3Npb25UeXBlIHB1c2goTm9Db25zaXN0ZW5jeUNo
ZWNrVGFnKQorICAgIEV4cHJlc3Npb25UeXBlIHB1c2goV2FzbTo6VHlwZSB0eXBlLCBOb0NvbnNp
c3RlbmN5Q2hlY2tUYWcpCiAgICAgewotICAgICAgICBtX21heFN0YWNrU2l6ZSA9IHN0ZDo6bWF4
KG1fbWF4U3RhY2tTaXplLCArK21fc3RhY2tTaXplKTsKLSAgICAgICAgcmV0dXJuIHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKG1fc3RhY2tTaXplIC0gMSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0g
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobmV4dFNsb3RJbmRleCh0eXBlKSk7CisgICAgICAgIG1f
ZXhwcmVzc2lvblN0YWNrU2xvdHMuYXBwZW5kKHsgdHlwZSwgbmV4dFNsb3RJbmRleCh0eXBlKSB9
KTsKKyAgICAgICAgCisgICAgICAgIGRhdGFMb2dMbklmKExMSW50R2VuZXJhdG9ySW50ZXJuYWw6
OnZlcmJvc2UsICJbIiwgbV9mdW5jdGlvbkluZGV4LCAiXSIsCisgICAgICAgICAgICAiUHVzaCB0
eXBlICIsIHR5cGUsICIgYXQgaW5kZXggIiwgbV9leHByZXNzaW9uU3RhY2tTbG90cy5zaXplKCkg
LSAxLCAiIGdvZXMgaW4gIiwKKyAgICAgICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1f
ZXhwcmVzc2lvblN0YWNrU2xvdHMubGFzdCgpLnNsb3RJbmRleCksICIsICIsCisgICAgICAgICAg
ICBuZXh0U2xvdEZvclVwcGVyQml0cyh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2V4cHJlc3Np
b25TdGFja1Nsb3RzLmxhc3QoKS5zbG90SW5kZXgpKSk7CisgICAgICAgIAorICAgICAgICBtX21h
eFN0YWNrU2xvdFNpemUgPSBzdGQ6Om1heChzdGFja1Nsb3RTaXplKCksIG1fbWF4U3RhY2tTbG90
U2l6ZS52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBFeHBy
ZXNzaW9uVHlwZSBwdXNoKCkKKyAgICBFeHByZXNzaW9uVHlwZSBwdXNoKFdhc206OlR5cGUgdHlw
ZSkKICAgICB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKLSAgICAgICAgcmV0dXJuIHB1
c2goTm9Db25zaXN0ZW5jeUNoZWNrKTsKKyAgICAgICAgcmV0dXJuIHB1c2godHlwZSwgTm9Db25z
aXN0ZW5jeUNoZWNrKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFBvcFZhbHVlRnJvbVN0YWNrKCkg
eyAtLW1fc3RhY2tTaXplOyB9CisgICAgdm9pZCBkaWRQb3BWYWx1ZUZyb21TdGFjayhXYXNtOjpU
eXBlIHR5cGUpCisgICAgeworICAgICAgICBhdXRvIHBvcHBlZFNsb3QgPSBtX2V4cHJlc3Npb25T
dGFja1Nsb3RzLnRha2VMYXN0KCk7CisgICAgICAgIAorICAgICAgICBkYXRhTG9nTG5JZihMTElu
dEdlbmVyYXRvckludGVybmFsOjp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAor
ICAgICAgICAgICAgIlBvcHBlZCAiLCBwb3BwZWRTbG90LnR5cGUsICIgaW5kZXggIiwgbV9leHBy
ZXNzaW9uU3RhY2tTbG90cy5zaXplKCksICIgc2xvdCBpbmRleCAiLCBwb3BwZWRTbG90LnNsb3RJ
bmRleC52YWx1ZSgpLCAiIC0gZXhwZWN0aW5nICIsIHR5cGUpOworICAgICAgICAKKyAgICAgICAg
QVNTRVJUX1VOVVNFRChwb3BwZWRTbG90LCBwb3BwZWRTbG90LnR5cGUgPT0gdHlwZSk7CisgICAg
ICAgIEFTU0VSVChwb3BwZWRTbG90LnNsb3RJbmRleCA9PSBuZXh0U2xvdEluZGV4KHR5cGUpKTsK
KyAgICB9CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRBcmd1bWVu
dHMoY29uc3QgU2lnbmF0dXJlJik7Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkTG9jYWwoVHlwZSwgdWludDMyX3QpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIGFkZExvY2FsKFR5cGUsIHVpbnQzMl90LCB1aW50MzJfdCk7CiAgICAgRXhwcmVz
c2lvblR5cGUgYWRkQ29uc3RhbnQoVHlwZSwgaW50NjRfdCk7CisgICAgRXhwcmVzc2lvblR5cGUg
YWRkQ29uc3RhbnQodjEyOF90KTsKIAogICAgIC8vIFJlZmVyZW5jZXMKICAgICBQYXJ0aWFsUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUgdmFsdWUs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwpAQCAtMjQyLDggKzMxNiw4IEBAIHB1YmxpYzoKICAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZUNvcHkodW5zaWduZWQs
IHVuc2lnbmVkLCBFeHByZXNzaW9uVHlwZSBkc3RPZmZzZXQsIEV4cHJlc3Npb25UeXBlIHNyY09m
ZnNldCwgRXhwcmVzc2lvblR5cGUgbGVuZ3RoKTsKIAogICAgIC8vIExvY2FscwotICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpOworICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBX
YXNtOjpUeXBlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgV2FzbTo6VHlwZSwgRXhw
cmVzc2lvblR5cGUgdmFsdWUpOwogCiAgICAgLy8gR2xvYmFscwogICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGdldEdsb2JhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5
cGUmIHJlc3VsdCk7CkBAIC0yNzgsNiArMzUyLDE4IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRPcChFeHByZXNzaW9uVHlwZSBsZWZ0LCBFeHByZXNz
aW9uVHlwZSByaWdodCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU2VsZWN0KEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwg
RXhwcmVzc2lvblR5cGUgbm9uWmVybywgRXhwcmVzc2lvblR5cGUgemVybywgRXhwcmVzc2lvblR5
cGUmIHJlc3VsdCk7CiAKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRT
aW1kU3BsYXQoU2ltZExhbmUsIEV4cHJlc3Npb25UeXBlIHNjYWxhciwgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU2ltZFNo
dWZmbGUodjEyOF90IGltbSwgRXhwcmVzc2lvblR5cGUgYSwgRXhwcmVzc2lvblR5cGUgYiwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkU2ltZFNoaWZ0KFNpbWRMYW5lT3BlcmF0aW9uLCBTaW1kSW5mbywgRXhwcmVzc2lvblR5
cGUgdiwgRXhwcmVzc2lvblR5cGUgc2hpZnQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFNpbWRFeHRtdWwoU2ltZExhbmVP
cGVyYXRpb24sIFNpbWRJbmZvLCBFeHByZXNzaW9uVHlwZSBsaHMsIEV4cHJlc3Npb25UeXBlIHJo
cywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkU2ltZExvYWQoRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgb2Zm
c2V0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBhZGRTaW1kU3RvcmUoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25U
eXBlIHBvaW50ZXIsIHVpbnQzMl90IG9mZnNldCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkU2ltZExvYWRTcGxhdChTaW1kTGFuZU9wZXJhdGlvbiwgRXhwcmVzc2lv
blR5cGUgcG9pbnRlciwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
KyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRTaW1kTG9hZExhbmUoU2lt
ZExhbmVPcGVyYXRpb24sIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZl
Y3RvciwgdWludDMyX3Qgb2Zmc2V0LCB1aW50OF90IGxhbmVJbmRleCwgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU2ltZFN0
b3JlTGFuZShTaW1kTGFuZU9wZXJhdGlvbiwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVz
c2lvblR5cGUgdmVjdG9yLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQ4X3QgbGFuZUluZGV4KTsKKyAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRTaW1kTG9hZEV4dGVuZChTaW1k
TGFuZU9wZXJhdGlvbiwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgb2Zmc2V0LCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZGRTaW1kTG9hZFBhZChTaW1kTGFuZU9wZXJhdGlvbiwgRXhwcmVzc2lvblR5cGUgcG9p
bnRlciwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKwogICAgIC8v
IENvbnRyb2wgZmxvdwogICAgIENvbnRyb2xUeXBlIFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUb3BM
ZXZlbChCbG9ja1NpZ25hdHVyZSk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkQmxvY2soQmxvY2tTaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29udHJv
bFR5cGUmIG5ld0Jsb2NrLCBTdGFjayYgbmV3U3RhY2spOwpAQCAtMjkzLDcgKzM3OSw3IEBAIHB1
YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYXRjaEFsbFRv
VW5yZWFjaGFibGUoQ29udHJvbFR5cGUmKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGREZWxlZ2F0ZShDb250cm9sVHlwZSYsIENvbnRyb2xUeXBlJik7CiAgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkRGVsZWdhdGVUb1VucmVhY2hhYmxlKENv
bnRyb2xUeXBlJiwgQ29udHJvbFR5cGUmKTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRUaHJvdyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgVmVjdG9yPEV4cHJlc3Np
b25UeXBlPiYgYXJncywgU3RhY2smKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZGRUaHJvdyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgU3RhY2smIGFyZ3MpOwogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJldGhyb3codW5zaWduZWQsIENv
bnRyb2xUeXBlJik7CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRS
ZXR1cm4oY29uc3QgQ29udHJvbFR5cGUmLCBTdGFjayYgcmV0dXJuVmFsdWVzKTsKQEAgLTMwOCw2
ICszOTQsMTggQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmLCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVy
ZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwog
ICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFVucmVhY2hhYmxlKCk7Cisg
ICAgCisgICAgLy8gU2ltZAorICAgIHRlbXBsYXRlPEV4dFNpbWRPcFR5cGU+CisgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU2ltZE9wKEV4cHJlc3Npb25UeXBlLCBFeHBy
ZXNzaW9uVHlwZSYpOworICAgIHRlbXBsYXRlPEV4dFNpbWRPcFR5cGU+CisgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU2ltZE9wKEV4cHJlc3Npb25UeXBlLCBFeHByZXNz
aW9uVHlwZSwgRXhwcmVzc2lvblR5cGUmKTsKKyAgICB0ZW1wbGF0ZTxFeHRTaW1kT3BUeXBlPgor
ICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFNpbWRPcChFeHByZXNzaW9u
VHlwZSwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSYpOwor
ICAgIHRlbXBsYXRlPEV4dFNpbWRPcFR5cGU+CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkU2ltZE9wKHVpbnQ4X3QsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlw
ZSYpOworICAgIHRlbXBsYXRlPEV4dFNpbWRPcFR5cGU+CisgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkU2ltZE9wKHVpbnQ4X3QsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNz
aW9uVHlwZSwgRXhwcmVzc2lvblR5cGUmKTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZ0xv
Y2FscygpOwogCkBAIC0zMjMsMTMgKzQyMSwxMyBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IExM
SW50Q2FsbEluZm9ybWF0aW9uIHsKICAgICAgICAgdW5zaWduZWQgc3RhY2tPZmZzZXQ7Ci0gICAg
ICAgIHVuc2lnbmVkIG51bWJlck9mU3RhY2tBcmd1bWVudHM7Ci0gICAgICAgIFJlc3VsdExpc3Qg
YXJndW1lbnRzOworICAgICAgICB1bnNpZ25lZCBzaXplT2ZTdGFja0FyZ3VtZW50czsKKyAgICAg
ICAgVmVjdG9yPFR5cGVkRXhwcmVzc2lvbiwgMj4gYXJndW1lbnRzOwogICAgICAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc3VsdExpc3QmKT4gY29tbWl0UmVzdWx0czsKICAgICB9OwogCiAg
ICAgTExJbnRDYWxsSW5mb3JtYXRpb24gY2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IFNp
Z25hdHVyZSYpOwotICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXIsIDI+IGNhbGxJbmZvcm1hdGlv
bkZvckNhbGxlZShjb25zdCBTaWduYXR1cmUmKTsKKyAgICBWZWN0b3I8VHlwZWRFeHByZXNzaW9u
LCAyPiBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUoY29uc3QgU2lnbmF0dXJlJik7CiAgICAgdm9p
ZCBsaW5rU3dpdGNoVGFyZ2V0cyhMYWJlbCYsIHVuc2lnbmVkIGxvY2F0aW9uKTsKIAogICAgIFZp
cnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXJGb3JXYXNtTG9jYWwodWludDMyX3QgaW5kZXgp
CkBAIC0zMzcsMTAgKzQzNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChpbmRleCA8IG1fY29k
ZUJsb2NrLT5tX251bUFyZ3VtZW50cykKICAgICAgICAgICAgIHJldHVybiBtX25vcm1hbGl6ZWRB
cmd1bWVudHNbaW5kZXhdOwogCi0gICAgICAgIGNvbnN0IGF1dG8mIGNhbGxpbmdDb252ZW50aW9u
ID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCk7Ci0gICAgICAgIGNvbnN0IHVpbnQzMl90IGdwckNv
dW50ID0gY2FsbGluZ0NvbnZlbnRpb24uZ3ByQXJncy5zaXplKCk7Ci0gICAgICAgIGNvbnN0IHVp
bnQzMl90IGZwckNvdW50ID0gY2FsbGluZ0NvbnZlbnRpb24uZnByQXJncy5zaXplKCk7Ci0gICAg
ICAgIHJldHVybiB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCAtIG1fY29kZUJsb2NrLT5t
X251bUFyZ3VtZW50cyArIGdwckNvdW50ICsgZnByQ291bnQgKyBudW1iZXJPZkxMSW50Q2FsbGVl
U2F2ZVJlZ2lzdGVycyk7CisgICAgICAgIHJldHVybiBtX2xvY2Fsc1tpbmRleCAtIG1fY29kZUJs
b2NrLT5tX251bUFyZ3VtZW50c107CiAgICAgfQogCiAgICAgRXhwcmVzc2lvblR5cGUganNOdWxs
Q29uc3RhbnQoKQpAQCAtMzY3LDkgKzQ2Miw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGdldERy
b3BLZWVwQ291bnQoY29uc3QgQ29udHJvbFR5cGUmIHRhcmdldCwgdW5zaWduZWQmIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCYgZHJvcCwgdW5zaWduZWQmIGtlZXApCiAgICAgewotICAgICAgICBzdGFy
dE9mZnNldCA9IHRhcmdldC5zdGFja1NpemUoKSArIDE7CisgICAgICAgIHN0YXJ0T2Zmc2V0ID0g
dGFyZ2V0LnN0YWNrQ291bnQoKSArIDE7CiAgICAgICAgIGtlZXAgPSB0YXJnZXQuYnJhbmNoVGFy
Z2V0QXJpdHkoKTsKLSAgICAgICAgZHJvcCA9IG1fc3RhY2tTaXplIC0gdGFyZ2V0LnN0YWNrU2l6
ZSgpIC0gdGFyZ2V0LmJyYW5jaFRhcmdldEFyaXR5KCk7CisgICAgICAgIGRyb3AgPSBzdGFja0Nv
dW50KCkgLSB0YXJnZXQuc3RhY2tDb3VudCgpIC0gdGFyZ2V0LmJyYW5jaFRhcmdldEFyaXR5KCk7
CiAgICAgfQogCiAgICAgdm9pZCBkcm9wS2VlcChTdGFjayYgdmFsdWVzLCBjb25zdCBDb250cm9s
VHlwZSYgdGFyZ2V0LCBib29sIGRyb3BWYWx1ZXMpCkBAIC0zODksMzEgKzQ4NCw2NyBAQCBwcml2
YXRlOgogICAgICAgICBpZiAoa2VlcCkKICAgICAgICAgICAgIFdhc21Ecm9wS2VlcDo6ZW1pdCh0
aGlzLCBzdGFydE9mZnNldCwgZHJvcCwga2VlcCk7CiAgICAgfQotCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgU3RhY2ssIHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4KICAgICB2b2lkIHdhbGtFeHByZXNzaW9uU3RhY2soU3RhY2smIGV4cHJlc3Np
b25TdGFjaywgdW5zaWduZWQgc3RhY2tTaXplLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAg
IHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZXhwcmVzc2lvblN0YWNrLnNpemUoKTsgaSA+
IDA7IC0taSkgewotICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNsb3QgPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChzdGFja1NpemUgLSBpKTsKLSAgICAgICAgICAgIGZ1bmN0b3IoZXhwcmVz
c2lvblN0YWNrW2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSBpXSwgc2xvdCk7CisgICAgICAgIHVu
c2lnbmVkIHNsb3RJbmRleCA9IG1fZmlyc3RTdGFja1Nsb3RJbmRleDsKKyAgICAgICAgdW5zaWdu
ZWQgd2FzbVNsb3RJbmRleCA9IDA7CisgICAgICAgIAorICAgICAgICB3aGlsZSAod2FzbVNsb3RJ
bmRleCA8IHN0YWNrU2l6ZSkgeworICAgICAgICAgICAgYXV0byYgZXhwcmVzc2lvbiA9IGV4cHJl
c3Npb25TdGFja1t3YXNtU2xvdEluZGV4XTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KGV4cHJlc3Npb24udHlwZSgpLnNpemUoKSA9PSAxNikKKyAgICAgICAgICAgICAgICArK3Nsb3RJ
bmRleDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNsb3QgPSB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzbG90SW5kZXgpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBBU1NFUlQoZXhwcmVzc2lvbi52YWx1ZSgpID09IHNsb3QgfHwgZXhwcmVzc2lvbi52YWx1
ZSgpLmlzQ29uc3RhbnQoKSB8fCBleHByZXNzaW9uLnZhbHVlKCkuaXNBcmd1bWVudCgpCisgICAg
ICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV4cHJlc3Npb24udmFsdWUoKS50
b0xvY2FsKCkpIDwgbV9jb2RlQmxvY2stPm1fbnVtVmFycyk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmIChleHByZXNzaW9uLnR5cGUoKS5zaXplKCkgPT0gMTYpIHsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQobmV4dFNsb3RGb3JVcHBlckJpdHMoc2xvdCkgPT0gdmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoc2xvdEluZGV4IC0gMSkpOworICAgICAgICAgICAgICAgIEFTU0VSVChuZXh0U2xv
dEZvclVwcGVyQml0cyhleHByZXNzaW9uLnZhbHVlKCkpID09IG5leHRTbG90Rm9yVXBwZXJCaXRz
KHNsb3QpCisgICAgICAgICAgICAgICAgICAgIHx8IG5leHRTbG90Rm9yVXBwZXJCaXRzKGV4cHJl
c3Npb24udmFsdWUoKSkuaXNDb25zdGFudCgpCisgICAgICAgICAgICAgICAgICAgIHx8IG5leHRT
bG90Rm9yVXBwZXJCaXRzKGV4cHJlc3Npb24udmFsdWUoKSkuaXNBcmd1bWVudCgpCisgICAgICAg
ICAgICAgICAgICAgIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihuZXh0U2xvdEZvclVwcGVyQml0
cyhleHByZXNzaW9uLnZhbHVlKCkpLnRvTG9jYWwoKSkgPCBtX2NvZGVCbG9jay0+bV9udW1WYXJz
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCZleHByZXNz
aW9uU3RhY2sgPT0gJm1fcGFyc2VyLT5leHByZXNzaW9uU3RhY2soKSkgeworICAgICAgICAgICAg
ICAgIGF1dG8gc2xvdERhdGEgPSBtX2V4cHJlc3Npb25TdGFja1Nsb3RzW3dhc21TbG90SW5kZXhd
OworICAgICAgICAgICAgICAgIEFTU0VSVChleHByZXNzaW9uLnR5cGUoKSA9PSBzbG90RGF0YS50
eXBlKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2xvdERhdGEuc2xvdEluZGV4ID09IHNsb3RJ
bmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0b3Io
ZXhwcmVzc2lvbiwgc2xvdCk7CisgICAgICAgICAgICArK3Nsb3RJbmRleDsKKyAgICAgICAgICAg
ICsrd2FzbVNsb3RJbmRleDsKICAgICAgICAgfQogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFN0YWNrLCB0eXBlbmFtZSBGdW5jdG9yPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+CiAgICAgdm9pZCB3YWxrRXhwcmVzc2lvblN0YWNrKFN0YWNrJiBleHByZXNzaW9uU3RhY2ss
IGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewotICAgICAgICB3YWxrRXhwcmVzc2lvblN0
YWNrKGV4cHJlc3Npb25TdGFjaywgbV9zdGFja1NpemUsIGZ1bmN0b3IpOworICAgICAgICB3YWxr
RXhwcmVzc2lvblN0YWNrKGV4cHJlc3Npb25TdGFjaywgZXhwcmVzc2lvblN0YWNrLnNpemUoKSwg
ZnVuY3Rvcik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cisg
ICAgdm9pZCB3YWxrRXhwcmVzc2lvblN0YWNrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAg
eworICAgICAgICB3YWxrRXhwcmVzc2lvblN0YWNrKG1fcGFyc2VyLT5leHByZXNzaW9uU3RhY2so
KSwgZnVuY3Rvcik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAg
ICB2b2lkIHdhbGtFeHByZXNzaW9uU3RhY2soQ29udHJvbEVudHJ5JiBlbnRyeSwgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHN0YWNrU2l6ZSA9IGVudHJ5
LmNvbnRyb2xEYXRhLnN0YWNrU2l6ZSgpOworICAgICAgICB1bnNpZ25lZCBzdGFja1NpemUgPSBl
bnRyeS5jb250cm9sRGF0YS5zdGFja0NvdW50KCk7CisgICAgICAgIEFTU0VSVChlbnRyeS5lbmNs
b3NlZEV4cHJlc3Npb25TdGFjay5zaXplKCkgPT0gc3RhY2tTaXplKTsKICAgICAgICAgd2Fsa0V4
cHJlc3Npb25TdGFjayhlbnRyeS5lbmNsb3NlZEV4cHJlc3Npb25TdGFjaywgc3RhY2tTaXplLCBm
dW5jdG9yKTsKICAgICB9CiAKLSAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKQorICAgIHZvaWQg
Y2hlY2tDb25zaXN0ZW5jeSh1bnNpZ25lZCBzdGFja0NvdW50KQogICAgIHsKKyAgICAgICAgVU5V
U0VEX1BBUkFNKHN0YWNrQ291bnQpOwogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIC8vIFRo
ZSBydWxlcyBmb3IgbG9jYWxzIGFuZCBjb25zdGFudHMgaW4gdGhlIHN0YWNrIGFyZToKICAgICAg
ICAgLy8gMSkgTG9jYWxzIGhhdmUgdG8gYmUgbWF0ZXJpYWxpemVkIHdoZW5ldmVyIGEgY29udHJv
bCBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIGNvbnRyb2wgc3RhY2sgKGkuZS4gZXZlcnkgdGltZSB3
ZSBzcGxpdFN0YWNrKQpAQCAtNDI3LDQ4ICs1NTgsNTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBBU1NFUlQoZXhwcmVzc2lvbiA9PSBzbG90IHx8IGV4cHJlc3Npb24uaXNDb25zdGFudCgp
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9Ci0gICAgICAgIHdhbGtFeHByZXNzaW9uU3Rh
Y2sobV9wYXJzZXItPmV4cHJlc3Npb25TdGFjaygpLCBbJl0oVmlydHVhbFJlZ2lzdGVyIGV4cHJl
c3Npb24sIFZpcnR1YWxSZWdpc3RlciBzbG90KSB7Ci0gICAgICAgICAgICBBU1NFUlQoZXhwcmVz
c2lvbiA9PSBzbG90IHx8IGV4cHJlc3Npb24uaXNDb25zdGFudCgpIHx8IGV4cHJlc3Npb24uaXNB
cmd1bWVudCgpIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihleHByZXNzaW9uLnRvTG9jYWwoKSkg
PCBtX2NvZGVCbG9jay0+bV9udW1WYXJzKTsKKyAgICAgICAgCisgICAgICAgIC8vIFdlIG1pZ2h0
IGJlIGluIHRoZSBwcm9jZXNzIG9mIGFkZGluZyBzdGFjayBzbG90cyBmcm9tIHRoZSBwYXJzZXIu
CisgICAgICAgIEFTU0VSVChzdGFja0NvdW50IDw9IG1fcGFyc2VyLT5leHByZXNzaW9uU3RhY2so
KS5zaXplKCkpOworICAgICAgICBBU1NFUlQoc3RhY2tDb3VudCA8PSB0aGlzLT5zdGFja0NvdW50
KCkpOworICAgICAgICBBU1NFUlQodGhpcy0+c3RhY2tDb3VudCgpID49IG1fcGFyc2VyLT5leHBy
ZXNzaW9uU3RhY2soKS5zaXplKCkpOworICAgICAgICAKKyAgICAgICAgd2Fsa0V4cHJlc3Npb25T
dGFjayhtX3BhcnNlci0+ZXhwcmVzc2lvblN0YWNrKCksIHN0YWNrQ291bnQsIFsmXShjb25zdCBU
eXBlZEV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFZpcnR1YWxSZWdpc3RlciBzbG90KSB7CisgICAg
ICAgICAgICBBU1NFUlQoZXhwcmVzc2lvbi52YWx1ZSgpID09IHNsb3QgfHwgZXhwcmVzc2lvbi52
YWx1ZSgpLmlzQ29uc3RhbnQoKSB8fCBleHByZXNzaW9uLnZhbHVlKCkuaXNBcmd1bWVudCgpCisg
ICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV4cHJlc3Npb24udmFsdWUo
KS50b0xvY2FsKCkpIDwgbV9jb2RlQmxvY2stPm1fbnVtVmFycyk7CiAgICAgICAgIH0pOworI2Vs
c2UKKyAgICAgICAgKHZvaWQpIHN0YWNrQ291bnQ7CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQK
ICAgICB9CisgICAgCisgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkKKyAgICB7CisgICAgICAg
IGNoZWNrQ29uc2lzdGVuY3kobV9wYXJzZXItPmV4cHJlc3Npb25TdGFjaygpLnNpemUoKSk7Cisg
ICAgfQogCi0gICAgdm9pZCBtYXRlcmlhbGl6ZUNvbnN0YW50c0FuZExvY2FscyhTdGFjayYgZXhw
cmVzc2lvblN0YWNrLCBOb0NvbnNpc3RlbmN5Q2hlY2tUYWcpCisgICAgdm9pZCBtYXRlcmlhbGl6
ZUNvbnN0YW50c0FuZExvY2FscyhTdGFjayYgZXhwcmVzc2lvblN0YWNrLCBib29sIG1hdGVyaWFs
aXplQ29uc3RhbnRzLCBOb0NvbnNpc3RlbmN5Q2hlY2tUYWcpCiAgICAgewotICAgICAgICB3YWxr
RXhwcmVzc2lvblN0YWNrKGV4cHJlc3Npb25TdGFjaywgWyZdKGF1dG8mIGV4cHJlc3Npb24sIFZp
cnR1YWxSZWdpc3RlciBzbG90KSB7Ci0gICAgICAgICAgICBBU1NFUlQoZXhwcmVzc2lvbi52YWx1
ZSgpID09IHNsb3QgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQ29uc3RhbnQoKSB8fCBleHByZXNz
aW9uLnZhbHVlKCkuaXNBcmd1bWVudCgpIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihleHByZXNz
aW9uLnZhbHVlKCkudG9Mb2NhbCgpKSA8IG1fY29kZUJsb2NrLT5tX251bVZhcnMpOworICAgICAg
ICB3YWxrRXhwcmVzc2lvblN0YWNrKGV4cHJlc3Npb25TdGFjaywgWyZdKFR5cGVkRXhwcmVzc2lv
biYgZXhwcmVzc2lvbiwgVmlydHVhbFJlZ2lzdGVyIHNsb3QpIHsKKyAgICAgICAgICAgIEFTU0VS
VChleHByZXNzaW9uLnZhbHVlKCkgPT0gc2xvdCB8fCBleHByZXNzaW9uLnZhbHVlKCkuaXNDb25z
dGFudCgpIHx8IGV4cHJlc3Npb24udmFsdWUoKS5pc0FyZ3VtZW50KCkKKyAgICAgICAgICAgICAg
ICAgICB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZXhwcmVzc2lvbi52YWx1ZSgpLnRvTG9jYWwo
KSkgPCBtX2NvZGVCbG9jay0+bV9udW1WYXJzKTsKICAgICAgICAgICAgIGlmIChleHByZXNzaW9u
LnZhbHVlKCkgPT0gc2xvdCkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBX
YXNtTW92OjplbWl0KHRoaXMsIHNsb3QsIGV4cHJlc3Npb24pOworICAgICAgICAgICAgaWYgKGV4
cHJlc3Npb24udmFsdWUoKS5pc0NvbnN0YW50KCkgJiYgIW1hdGVyaWFsaXplQ29uc3RhbnRzKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHR5cGVkTW92ZShzbG90LCBleHBy
ZXNzaW9uKTsKICAgICAgICAgICAgIGV4cHJlc3Npb24gPSBUeXBlZEV4cHJlc3Npb24geyBleHBy
ZXNzaW9uLnR5cGUoKSwgc2xvdCB9OwogICAgICAgICB9KTsKICAgICB9CiAKLSAgICB2b2lkIG1h
dGVyaWFsaXplQ29uc3RhbnRzQW5kTG9jYWxzKFN0YWNrJiBleHByZXNzaW9uU3RhY2spCisgICAg
dm9pZCBtYXRlcmlhbGl6ZUNvbnN0YW50c0FuZExvY2FscyhTdGFjayYgZXhwcmVzc2lvblN0YWNr
LCBib29sIG1hdGVyaWFsaXplQ29uc3RhdGFudHMgPSB0cnVlKQogICAgIHsKICAgICAgICAgaWYg
KGV4cHJlc3Npb25TdGFjay5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgY2hlY2tDb25zaXN0ZW5jeSgpOwotICAgICAgICBtYXRlcmlhbGl6ZUNvbnN0YW50c0FuZExv
Y2FscyhleHByZXNzaW9uU3RhY2ssIE5vQ29uc2lzdGVuY3lDaGVjayk7CisgICAgICAgIG1hdGVy
aWFsaXplQ29uc3RhbnRzQW5kTG9jYWxzKGV4cHJlc3Npb25TdGFjaywgbWF0ZXJpYWxpemVDb25z
dGF0YW50cywgTm9Db25zaXN0ZW5jeUNoZWNrKTsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgp
OwogICAgIH0KIAogICAgIHZvaWQgc3BsaXRTdGFjayhCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUs
IFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgU3RhY2smIG5ld1N0YWNrKQogICAgIHsKICAgICAgICAg
SlNDOjpXYXNtOjpzcGxpdFN0YWNrKHNpZ25hdHVyZSwgZW5jbG9zaW5nU3RhY2ssIG5ld1N0YWNr
KTsKLQotICAgICAgICBtX3N0YWNrU2l6ZSAtPSBuZXdTdGFjay5zaXplKCk7Ci0gICAgICAgIGNo
ZWNrQ29uc2lzdGVuY3koKTsKLSAgICAgICAgd2Fsa0V4cHJlc3Npb25TdGFjayhlbmNsb3NpbmdT
dGFjaywgWyZdKFR5cGVkRXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgVmlydHVhbFJlZ2lzdGVyIHNs
b3QpIHsKLSAgICAgICAgICAgIEFTU0VSVChleHByZXNzaW9uLnZhbHVlKCkgPT0gc2xvdCB8fCBl
eHByZXNzaW9uLnZhbHVlKCkuaXNDb25zdGFudCgpIHx8IGV4cHJlc3Npb24udmFsdWUoKS5pc0Fy
Z3VtZW50KCkgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV4cHJlc3Npb24udmFsdWUoKS50b0xv
Y2FsKCkpIDwgbV9jb2RlQmxvY2stPm1fbnVtVmFycyk7Ci0gICAgICAgICAgICBpZiAoZXhwcmVz
c2lvbi52YWx1ZSgpID09IHNsb3QgfHwgZXhwcmVzc2lvbi52YWx1ZSgpLmlzQ29uc3RhbnQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBXYXNtTW92OjplbWl0KHRoaXMs
IHNsb3QsIGV4cHJlc3Npb24pOwotICAgICAgICAgICAgZXhwcmVzc2lvbiA9IFR5cGVkRXhwcmVz
c2lvbiB7IGV4cHJlc3Npb24udHlwZSgpLCBzbG90IH07Ci0gICAgICAgIH0pOworICAgICAgICBj
aGVja0NvbnNpc3RlbmN5KGVuY2xvc2luZ1N0YWNrLnNpemUoKSAtIG5ld1N0YWNrLnNpemUoKSk7
CisgICAgICAgIG1hdGVyaWFsaXplQ29uc3RhbnRzQW5kTG9jYWxzKGVuY2xvc2luZ1N0YWNrLCAv
KiBtYXRlcmlhbGl6ZUNvbnN0YW50cyA9ICovIGZhbHNlKTsKICAgICAgICAgY2hlY2tDb25zaXN0
ZW5jeSgpOwotICAgICAgICBtX3N0YWNrU2l6ZSArPSBuZXdTdGFjay5zaXplKCk7CiAgICAgfQog
CiAgICAgdm9pZCBmaW5hbGl6ZVByZXZpb3VzQmxvY2tGb3JDYXRjaChDb250cm9sVHlwZSYsIFN0
YWNrJik7CkBAIC00OTIsMTAgKzYzMSwxMiBAQCBwcml2YXRlOgogICAgIEV4cHJlc3Npb25UeXBl
IG1fanNOdWxsQ29uc3RhbnQ7CiAgICAgRXhwcmVzc2lvblR5cGUgbV96ZXJvQ29uc3RhbnQ7CiAg
ICAgUmVzdWx0TGlzdCBtX3VuaXRpYWxpemVkTG9jYWxzOworICAgIFZlY3RvcjxWaXJ0dWFsUmVn
aXN0ZXIsIDI+IG1fbG9jYWxzOwogICAgIEhhc2hNYXA8RW5jb2RlZEpTVmFsdWUsIFZpcnR1YWxS
ZWdpc3RlciwgV1RGOjpJbnRIYXNoPEVuY29kZWRKU1ZhbHVlPiwgQ29uc3RhbnRNYXBIYXNoVHJh
aXRzPiBtX2NvbnN0YW50TWFwOwotICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXIsIDI+IG1fcmVz
dWx0czsKLSAgICBDaGVja2VkPHVuc2lnbmVkPiBtX3N0YWNrU2l6ZSB7IDAgfTsKLSAgICBDaGVj
a2VkPHVuc2lnbmVkPiBtX21heFN0YWNrU2l6ZSB7IDAgfTsKKyAgICBWZWN0b3I8VHlwZWRFeHBy
ZXNzaW9uLCAyPiBtX3Jlc3VsdHM7CisgICAgV2FzbUV4cHJlc3Npb25TbG90U3RhY2sgbV9leHBy
ZXNzaW9uU3RhY2tTbG90czsKKyAgICBDaGVja2VkPHVuc2lnbmVkPiBtX21heFN0YWNrU2xvdFNp
emUgeyAwIH07CisgICAgdW5zaWduZWQgbV9maXJzdFN0YWNrU2xvdEluZGV4ID0gMDsKICAgICBD
aGVja2VkPHVuc2lnbmVkPiBtX3RyeURlcHRoIHsgMCB9OwogICAgIGJvb2wgbV91c2VzRXhjZXB0
aW9ucyB7IGZhbHNlIH07CiB9OwpAQCAtNTM1LDE5ICs2NzYsMTYgQEAgTExJbnRHZW5lcmF0b3I6
OkxMSW50R2VuZXJhdG9yKE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCB1bnNpZ25lZCBmdW5jdGlv
bkluZGV4LAogICAgICAgICAqdGhyZWFkU3BlY2lmaWMgPSBCdWZmZXIoKTsKICAgICAgICAgbV93
cml0ZXIuc2V0SW5zdHJ1Y3Rpb25CdWZmZXIoV1RGTW92ZShidWZmZXIpKTsKICAgICB9Ci0KLSAg
ICBtX2NvZGVCbG9jay0+bV9udW1WYXJzID0gbnVtYmVyT2ZMTEludENhbGxlZVNhdmVSZWdpc3Rl
cnM7Ci0gICAgbV9zdGFja1NpemUgPSBudW1iZXJPZkxMSW50Q2FsbGVlU2F2ZVJlZ2lzdGVyczsK
LSAgICBtX21heFN0YWNrU2l6ZSA9IG51bWJlck9mTExJbnRDYWxsZWVTYXZlUmVnaXN0ZXJzOwot
CisgICAgbV9jb2RlQmxvY2stPm1fbnVtVmFycyA9IDA7CiAgICAgV2FzbUVudGVyOjplbWl0KHRo
aXMpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I+IExM
SW50R2VuZXJhdG9yOjpmaW5hbGl6ZSgpCiB7CisgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAg
IFJFTEVBU0VfQVNTRVJUKG1fY29kZUJsb2NrKTsKIAotICAgIHNpemVfdCBudW1DYWxsZWVMb2Nh
bHMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwg
bV9tYXhTdGFja1NpemUpOworICAgIHNpemVfdCBudW1DYWxsZWVMb2NhbHMgPSBXVEY6OnJvdW5k
VXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbV9tYXhTdGFja1Nsb3RT
aXplICsgbnVtYmVyT2ZMTEludENhbGxlZVNhdmVSZWdpc3RlcnMpOwogICAgIG1fY29kZUJsb2Nr
LT5tX251bUNhbGxlZUxvY2FscyA9IG51bUNhbGxlZUxvY2FsczsKICAgICBSRUxFQVNFX0FTU0VS
VChudW1DYWxsZWVMb2NhbHMgPT0gbV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKTsKIApA
QCAtNTY0LDYgKzcwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNvZGVCbG9ja0dlbmVy
YXRvcj4gTExJbnRHZW5lcmF0b3I6OmZpbmFsaXplKCkKIAogLy8gR2VuZXJhdGVkIGZyb20gd2Fz
bS5qc29uCiAjaW5jbHVkZSAiV2FzbUxMSW50R2VuZXJhdG9ySW5saW5lcy5oIgorI2luY2x1ZGUg
Ildhc21MTEludEdlbmVyYXRvclNpbWRJbmxpbmVzLmgiCiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6
OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4g
TExJbnRDYWxsSW5mb3JtYXRpb24KIHsKQEAgLTU4OSwxMyArNzI4LDExIEBAIGF1dG8gTExJbnRH
ZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSkgLT4gTExJCiAgICAgLy8gV2UgbmVlZCB0byBhbGxvY2F0ZSBhdCBsZWFzdCBzcGFjZSBm
b3IgYWxsIEdQUnMgYW5kIEZQUnMuCiAgICAgLy8gUmV0dXJuIHZhbHVlcyB1c2UgdGhlIHNhbWUg
YWxsb2NhdGlvbiBsYXlvdXQuCiAKLSAgICBjb25zdCBhdXRvIGluaXRpYWxTdGFja1NpemUgPSBt
X3N0YWNrU2l6ZTsKLQogICAgIGNvbnN0IGF1dG8mIGNhbGxpbmdDb252ZW50aW9uID0gd2FzbUNh
bGxpbmdDb252ZW50aW9uKCk7CiAgICAgY29uc3QgdWludDMyX3QgZ3ByQ291bnQgPSBjYWxsaW5n
Q29udmVudGlvbi5ncHJBcmdzLnNpemUoKTsKICAgICBjb25zdCB1aW50MzJfdCBmcHJDb3VudCA9
IGNhbGxpbmdDb252ZW50aW9uLmZwckFyZ3Muc2l6ZSgpOwogCi0gICAgdWludDMyX3Qgc3RhY2tD
b3VudCA9IDA7CisgICAgdWludDMyX3QgbWF4U3RhY2tJbmRleCA9IDA7CiAgICAgdWludDMyX3Qg
Z3BySW5kZXggPSAwOwogICAgIHVpbnQzMl90IGZwckluZGV4ID0gMDsKICAgICB1aW50MzJfdCBz
dGFja0luZGV4ID0gMDsKQEAgLTYxMCwyMyArNzQ3LDI1IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6
OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4g
TExJCiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAgIGlmIChncHJJbmRl
eCA8IGdwckNvdW50KQogICAgICAgICAgICAgICAgICsrZ3BySW5kZXg7Ci0gICAgICAgICAgICBl
bHNlIGlmIChzdGFja0luZGV4KysgPj0gc3RhY2tDb3VudCkKLSAgICAgICAgICAgICAgICArK3N0
YWNrQ291bnQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgKytzdGFja0luZGV4
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKICAgICAg
ICAgY2FzZSBUeXBlS2luZDo6RjY0OgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpWMTI4OgogICAg
ICAgICAgICAgaWYgKGZwckluZGV4IDwgZnByQ291bnQpCiAgICAgICAgICAgICAgICAgKytmcHJJ
bmRleDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHN0YWNrSW5kZXgrKyA+PSBzdGFja0NvdW50KQot
ICAgICAgICAgICAgICAgICsrc3RhY2tDb3VudDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBzdGFja0luZGV4ICs9IHR5cGUuc2l6ZSgpIC8gODsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpG
dW5jOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgbWF4U3RhY2tJbmRleCA9IHN0ZDo6bWF4KG1heFN0YWNrSW5k
ZXgsIHN0YWNrSW5kZXgpOwogICAgIH07CiAKLQogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkg
PCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyBpKyspCiAgICAgICAgIGFsbG9jYXRlU3RhY2tS
ZWdpc3RlcihzaWduYXR1cmUuYXJndW1lbnQoaSkpOwogCkBAIC02MzUsMzAgKzc3NCw0MCBAQCBh
dXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0
dXJlJiBzaWduYXR1cmUpIC0+IExMSQogICAgIHN0YWNrSW5kZXggPSAwOwogICAgIGZvciAodWlu
dDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUucmV0dXJuQ291bnQoKTsgaSsrKQogICAgICAgICBh
bGxvY2F0ZVN0YWNrUmVnaXN0ZXIoc2lnbmF0dXJlLnJldHVyblR5cGUoaSkpOworICAgIAorICAg
IGNvbnN0IHVpbnQzMl90IHN0YWNrQXJnc1NpemUgPSBtYXhTdGFja0luZGV4OwogCiAgICAgLy8g
RklYTUU6IHdlIGFyZSBhbGxvY2F0aW5nIHRoZSBleHRyYSBzcGFjZSBmb3IgdGhlIGFyZ3VtZW50
L3JldHVybiBjb3VudCBpbiBvcmRlciB0byBhdm9pZCBpbnRlcmZlcmVuY2UsIGJ1dCB3ZSBjb3Vs
ZCBkbyBiZXR0ZXIKICAgICAvLyBOT1RFOiBXZSBpbmNyZWFzZSBhcmcgY291bnQgYnkgMSBmb3Ig
dGhlIGNhc2Ugb2YgaW5kaXJlY3QgY2FsbHMKLSAgICBtX3N0YWNrU2l6ZSArPSBzdGQ6Om1heChz
aWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMSwgc2lnbmF0dXJlLnJldHVybkNvdW50KCkpICsg
Z3ByQ291bnQgKyBmcHJDb3VudCArIHN0YWNrQ291bnQgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJ
blJlZ2lzdGVycyArIDE7Ci0gICAgaWYgKG1fc3RhY2tTaXplLnZhbHVlKCkgJSBzdGFja0FsaWdu
bWVudFJlZ2lzdGVycygpKQotICAgICAgICArK21fc3RhY2tTaXplOwotICAgIGlmIChtX21heFN0
YWNrU2l6ZSA8IG1fc3RhY2tTaXplKQotICAgICAgICBtX21heFN0YWNrU2l6ZSA9IG1fc3RhY2tT
aXplOworICAgIENoZWNrZWQ8dW5zaWduZWQ+IG5ld1N0YWNrU2l6ZSA9IHN0YWNrU2xvdFNpemUo
KSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICsgMQorICAgICAgICArIChCMzo6
Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkdQKSkgLyA4ICogZ3ByQ291
bnQpCisgICAgICAgICsgKEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChC
Mzo6RlApKSAvIDggKiBmcHJDb3VudCkKKyAgICAgICAgKyBzdGFja0FyZ3NTaXplOworICAgIGlm
IChuZXdTdGFja1NpemUgJSBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpKQorICAgICAgICArK25l
d1N0YWNrU2l6ZTsKKyAgICBpZiAobV9tYXhTdGFja1Nsb3RTaXplIDwgbmV3U3RhY2tTaXplKQor
ICAgICAgICBtX21heFN0YWNrU2xvdFNpemUgPSBuZXdTdGFja1NpemU7CiAKIAotICAgIFJlc3Vs
dExpc3QgYXJndW1lbnRzKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkpOwotICAgIFJlc3VsdExp
c3QgdGVtcG9yYXJ5UmVzdWx0cyhzaWduYXR1cmUucmV0dXJuQ291bnQoKSk7CisgICAgVmVjdG9y
PFR5cGVkRXhwcmVzc2lvbiwgMj4gYXJndW1lbnRzKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkp
OworICAgIFZlY3RvcjxUeXBlZEV4cHJlc3Npb24sIDI+IHRlbXBvcmFyeVJlc3VsdHMoc2lnbmF0
dXJlLnJldHVybkNvdW50KCkpOwogCi0gICAgY29uc3QgdW5zaWduZWQgc3RhY2tPZmZzZXQgPSBt
X3N0YWNrU2l6ZTsKKyAgICBjb25zdCB1bnNpZ25lZCBzdGFja09mZnNldCA9IG5ld1N0YWNrU2l6
ZTsKICAgICBjb25zdCB1bnNpZ25lZCBiYXNlID0gc3RhY2tPZmZzZXQgLSBDYWxsRnJhbWU6Omhl
YWRlclNpemVJblJlZ2lzdGVycyAtIDE7CiAKLSAgICBjb25zdCB1aW50MzJfdCBncHJMaW1pdCA9
IGJhc2UgLSBzdGFja0NvdW50IC0gZ3ByQ291bnQ7Ci0gICAgY29uc3QgdWludDMyX3QgZnByTGlt
aXQgPSBncHJMaW1pdCAtIGZwckNvdW50OwotCisgICAgY29uc3QgdWludDMyX3QgZ3ByTGltaXQg
PSBiYXNlIC0gc3RhY2tBcmdzU2l6ZSAtIGdwckNvdW50OworICAgIGNvbnN0IHVpbnQzMl90IGZw
ckxpbWl0ID0gZ3ByTGltaXQgLSBmcHJDb3VudCAqIDI7CisgICAgCiAgICAgc3RhY2tJbmRleCA9
IGJhc2U7Ci0gICAgZ3BySW5kZXggPSBiYXNlIC0gc3RhY2tDb3VudDsKKyAgICBncHJJbmRleCA9
IGJhc2UgLSBzdGFja0FyZ3NTaXplOwogICAgIGZwckluZGV4ID0gZ3BySW5kZXggLSBncHJDb3Vu
dDsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQo
KTsgaSsrKSB7Ci0gICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLmFyZ3VtZW50KGkpLmtpbmQpIHsK
KyAgICAKKyAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVybmFsOjp2ZXJib3NlLCAi
WyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAiQ2FsbCBpbmZvOiBhbGxvY2F0aW5n
IHN0YWNrIGZyYW1lIGZvciBhcmd1bWVudHM6IHN0YWNrT2Zmc2V0OiAiLCBzdGFja09mZnNldCwg
IiBiYXNlOiAiLCBiYXNlLCAiIGdwcnM6IFsiLCBncHJJbmRleCwgIiwgIiwgZ3ByTGltaXQsICIp
LCBmcHJzOiBbIiwgZnBySW5kZXgsICIsICIsIGZwckxpbWl0LCAiKSwgY3VycmVudCBzdGFjayBz
bG90IHNpemU6ICIsIHN0YWNrU2xvdFNpemUoKSk7CisgICAgCisgICAgYXV0byBhbGxvY2F0ZUNh
bGxlZUNvcHlSZWdpc3RlciA9IFsmXShUeXBlIHR5cGUpIHsKKyAgICAgICAgdWludDMyX3QgcmVz
dWx0ID0gMDsKKyAgICAgICAgc3dpdGNoICh0eXBlLmtpbmQpIHsKICAgICAgICAgY2FzZSBUeXBl
S2luZDo6STMyOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6CiAgICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OkV4dGVybnJlZjoKQEAgLTY2Niw2NyArODE1LDU4IEBAIGF1dG8gTExJbnRHZW5lcmF0
b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkg
LT4gTExJCiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CiAgICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OlJlZjoKICAgICAgICAgICAgIGlmIChncHJJbmRleCA+IGdwckxpbWl0KQotICAgICAg
ICAgICAgICAgIGFyZ3VtZW50c1tpXSA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKC0tZ3BySW5k
ZXgpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IC0tZ3BySW5kZXg7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwoLS1zdGFja0luZGV4KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAtLXN0YWNrSW5kZXg7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjMyOgogICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpGNjQ6Ci0gICAgICAgICAgICBpZiAoZnBySW5kZXggPiBmcHJMaW1p
dCkKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNbaV0gPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bCgtLWZwckluZGV4KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmd1bWVu
dHNbaV0gPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgtLXN0YWNrSW5kZXgpOworICAgICAgICBj
YXNlIFR5cGVLaW5kOjpWMTI4OgorICAgICAgICAgICAgaWYgKGZwckluZGV4ID4gZnByTGltaXQp
IHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmcHJJbmRleCAtIEIzOjpieXRlc0ZvcldpZHRo
KEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSAvIDggKyAxOworICAgICAgICAgICAgICAg
IGZwckluZGV4IC09IEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6
RlApKSAvIDg7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9
IHN0YWNrSW5kZXg7CisgICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUuc2l6ZSgpID09IDggfHwg
bmV4dFNsb3RGb3JVcHBlckJpdHModmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwocmVzdWx0KSkgPT0g
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhY2tJbmRleCAtIDEpKTsKKyAgICAgICAgICAgICAg
ICBzdGFja0luZGV4IC09IHR5cGUuc2l6ZSgpIC8gODsKKyAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNlIFR5
cGVLaW5kOjpGdW5jOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgfQotICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9OworCisgICAg
Zm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCk7IGkrKykK
KyAgICAgICAgYXJndW1lbnRzW2ldID0geyBzaWduYXR1cmUuYXJndW1lbnQoaSksIHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGFsbG9jYXRlQ2FsbGVlQ29weVJlZ2lzdGVyKHNpZ25hdHVyZS5hcmd1
bWVudChpKSkpIH07CiAKICAgICBzdGFja0luZGV4ID0gYmFzZTsKLSAgICBncHJJbmRleCA9IGJh
c2UgLSBzdGFja0NvdW50OworICAgIGdwckluZGV4ID0gYmFzZSAtIHN0YWNrQXJnc1NpemU7CiAg
ICAgZnBySW5kZXggPSBncHJJbmRleCAtIGdwckNvdW50OwotICAgIGZvciAodWludDMyX3QgaSA9
IDA7IGkgPCBzaWduYXR1cmUucmV0dXJuQ291bnQoKTsgaSsrKSB7Ci0gICAgICAgIHN3aXRjaCAo
c2lnbmF0dXJlLnJldHVyblR5cGUoaSkua2luZCkgewotICAgICAgICBjYXNlIFR5cGVLaW5kOjpJ
MzI6Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6Okk2NDoKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6
RXh0ZXJucmVmOgotICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgotICAgICAgICBjYXNl
IFR5cGVLaW5kOjpSZWZOdWxsOgotICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWY6Ci0gICAgICAg
ICAgICBpZiAoZ3BySW5kZXggPiBncHJMaW1pdCkKLSAgICAgICAgICAgICAgICB0ZW1wb3JhcnlS
ZXN1bHRzW2ldID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoLS1ncHJJbmRleCk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGVtcG9yYXJ5UmVzdWx0c1tpXSA9IHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKC0tc3RhY2tJbmRleCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBUeXBlS2luZDo6RjMyOgotICAgICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6Ci0gICAg
ICAgICAgICBpZiAoZnBySW5kZXggPiBmcHJMaW1pdCkKLSAgICAgICAgICAgICAgICB0ZW1wb3Jh
cnlSZXN1bHRzW2ldID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoLS1mcHJJbmRleCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGVtcG9yYXJ5UmVzdWx0c1tpXSA9IHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKC0tc3RhY2tJbmRleCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoK
LSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBtX3N0YWNrU2l6ZSA9IGluaXRpYWxTdGFja1NpemU7CisgICAgCisgICAgZm9y
ICh1aW50MzJfdCBpID0gMDsgaSA8IHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyBpKyspCisgICAg
ICAgIHRlbXBvcmFyeVJlc3VsdHNbaV0gPSB7IHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCB2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChhbGxvY2F0ZUNhbGxlZUNvcHlSZWdpc3RlcihzaWduYXR1cmUu
cmV0dXJuVHlwZShpKSkpIH07CisgICAgCisgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5lcmF0b3JJ
bnRlcm5hbDo6dmVyYm9zZSwgIlsiLCBtX2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAgICAgIkNh
bGwgaW5mbzogYXJnczogIiwgbGlzdER1bXAoYXJndW1lbnRzKSwgIiB0ZW1wb3JhcnlSZXN1bHRz
OiAiLCBsaXN0RHVtcCh0ZW1wb3JhcnlSZXN1bHRzKSk7CiAKICAgICBhdXRvIGNvbW1pdFJlc3Vs
dHMgPSBbdGhpcywgdGVtcG9yYXJ5UmVzdWx0cyA9IFdURk1vdmUodGVtcG9yYXJ5UmVzdWx0cyld
KFJlc3VsdExpc3QmIHJlc3VsdHMpIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAg
ICAgICBmb3IgKGF1dG8gdGVtcG9yYXJ5UmVzdWx0IDogdGVtcG9yYXJ5UmVzdWx0cykgewotICAg
ICAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0ID0gcHVzaChOb0NvbnNpc3RlbmN5Q2hlY2sp
OwotICAgICAgICAgICAgV2FzbU1vdjo6ZW1pdCh0aGlzLCByZXN1bHQsIHRlbXBvcmFyeVJlc3Vs
dCk7CisgICAgICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQgPSBwdXNoKHRlbXBvcmFyeVJl
c3VsdC50eXBlKCksIE5vQ29uc2lzdGVuY3lDaGVjayk7CisgICAgICAgICAgICB0eXBlZE1vdmUo
cmVzdWx0LCB0ZW1wb3JhcnlSZXN1bHQpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVz
dWx0KTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZGF0YUxvZ0xuSWYoTExJbnRHZW5l
cmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlsiLCBtX2Z1bmN0aW9uSW5kZXgsICJdIiwKKyAgICAg
ICAgICAgICJDYWxsIGluZm8gcmVzdWx0cyAoY29tbWl0ZWQpOiAiLCBsaXN0RHVtcChyZXN1bHRz
KSk7CiAgICAgfTsKIAotICAgIHJldHVybiBMTEludENhbGxJbmZvcm1hdGlvbiB7IHN0YWNrT2Zm
c2V0LCBzdGFja0NvdW50LCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUoY29tbWl0UmVzdWx0
cykgfTsKKyAgICByZXR1cm4gTExJbnRDYWxsSW5mb3JtYXRpb24geyBzdGFja09mZnNldCwgc3Rh
Y2tBcmdzU2l6ZSwgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGNvbW1pdFJlc3VsdHMpIH07
CiB9CiAKLWF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZShjb25z
dCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gVmVjdG9yPFZpcnR1YWxSZWdpc3RlciwgMj4KK2F1
dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZShjb25zdCBTaWduYXR1
cmUmIHNpZ25hdHVyZSkgLT4gVmVjdG9yPFR5cGVkRXhwcmVzc2lvbiwgMj4KIHsKICAgICBpZiAo
bV9yZXN1bHRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG1fcmVzdWx0czsKQEAgLTc0MSw3ICs4
ODEsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUoY29u
c3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IFZlYwogICAgIHVpbnQzMl90IGZwckluZGV4ID0g
Z3ByQ291bnQ7CiAgICAgdWludDMyX3Qgc3RhY2tJbmRleCA9IDE7CiAgICAgY29uc3QgdWludDMy
X3QgbWF4R1BSSW5kZXggPSBncHJDb3VudDsKLSAgICBjb25zdCB1aW50MzJfdCBtYXhGUFJJbmRl
eCA9IG1heEdQUkluZGV4ICsgZnByQ291bnQ7CisgICAgY29uc3QgdWludDMyX3QgbWF4RlBSSW5k
ZXggPSBtYXhHUFJJbmRleCArIGZwckNvdW50ICogMjsKIAogICAgIGZvciAodWludDMyX3QgaSA9
IDA7IGkgPCBzaWduYXR1cmUucmV0dXJuQ291bnQoKTsgaSsrKSB7CiAgICAgICAgIHN3aXRjaCAo
c2lnbmF0dXJlLnJldHVyblR5cGUoaSkua2luZCkgewpAQCAtNzUyLDIyICs4OTIsMzAgQEAgYXV0
byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVlKGNvbnN0IFNpZ25hdHVy
ZSYgc2lnbmF0dXJlKSAtPiBWZWMKICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKICAg
ICAgICAgY2FzZSBUeXBlS2luZDo6UmVmOgogICAgICAgICAgICAgaWYgKGdwckluZGV4IDwgbWF4
R1BSSW5kZXgpCi0gICAgICAgICAgICAgICAgbV9yZXN1bHRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChudW1iZXJPZkxMSW50Q2FsbGVlU2F2ZVJlZ2lzdGVycyArIGdwckluZGV4Kysp
KTsKKyAgICAgICAgICAgICAgICBtX3Jlc3VsdHMuYXBwZW5kKHsgc2lnbmF0dXJlLnJldHVyblR5
cGUoaSksIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG51bWJlck9mTExJbnRDYWxsZWVTYXZlUmVn
aXN0ZXJzICsgZ3BySW5kZXgrKykgfSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbV9yZXN1bHRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1Ro
aXMoc3RhY2tJbmRleCsrKSk7CisgICAgICAgICAgICAgICAgbV9yZXN1bHRzLmFwcGVuZCh7IHNp
Z25hdHVyZS5yZXR1cm5UeXBlKGkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGlu
Z1RoaXMoc3RhY2tJbmRleCsrKSB9KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFR5cGVLaW5kOjpGMzI6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkY2NDoKLSAgICAgICAgICAg
IGlmIChmcHJJbmRleCA8IG1heEZQUkluZGV4KQotICAgICAgICAgICAgICAgIG1fcmVzdWx0cy5h
cHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobnVtYmVyT2ZMTEludENhbGxlZVNhdmVSZWdp
c3RlcnMgKyBmcHJJbmRleCsrKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
bV9yZXN1bHRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMo
c3RhY2tJbmRleCsrKSk7CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlYxMjg6CisgICAgICAgICAg
ICBpZiAoZnBySW5kZXggPCBtYXhGUFJJbmRleCkgeworICAgICAgICAgICAgICAgIG1fcmVzdWx0
cy5hcHBlbmQoeyBzaWduYXR1cmUucmV0dXJuVHlwZShpKSwgdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwobnVtYmVyT2ZMTEludENhbGxlZVNhdmVSZWdpc3RlcnMgKyBmcHJJbmRleCArIDEpIH0pOwor
ICAgICAgICAgICAgICAgIGZwckluZGV4ICs9IEIzOjpieXRlc0ZvcldpZHRoKEIzOjpjb25zZXJ2
YXRpdmVXaWR0aChCMzo6RlApKSAvIDg7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIG1fcmVzdWx0cy5hcHBlbmQoeyBzaWduYXR1cmUucmV0dXJuVHlwZShpKSwgdmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKHN0YWNrSW5kZXgpIH0pOworICAgICAg
ICAgICAgICAgIEFTU0VSVChzaWduYXR1cmUucmV0dXJuVHlwZShpKS5zaXplKCkgPT0gOCB8fCBu
ZXh0U2xvdEZvclVwcGVyQml0cyh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1Ro
aXMoc3RhY2tJbmRleCkpID09IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhp
cyhzdGFja0luZGV4ICsgMSkpOworICAgICAgICAgICAgICAgIHN0YWNrSW5kZXggKz0gc2lnbmF0
dXJlLnJldHVyblR5cGUoaSkuc2l6ZSgpIC8gODsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNlIFR5cGVL
aW5kOjpGdW5jOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgfQogICAgIH0KKyAgICAKKyAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVy
bmFsOjp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAiQ2FsbGVl
IGluZm86IHJlc3VsdHM6ICIsIGxpc3REdW1wKG1fcmVzdWx0cykpOwogCiAgICAgcmV0dXJuIG1f
cmVzdWx0czsKIH0KQEAgLTc4NywxOCArOTM1LDMzIEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFk
ZEFyZ3VtZW50cyhjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gUGFydGlhbFJlc3VsdAog
ICAgIHVpbnQzMl90IGdwckluZGV4ID0gMDsKICAgICB1aW50MzJfdCBmcHJJbmRleCA9IG1heEdQ
UkluZGV4OwogICAgIHVpbnQzMl90IHN0YWNrSW5kZXggPSAxOworICAgIAorICAgIEFTU0VSVCgh
c3RhY2tDb3VudCgpKTsKKyAgICBBU1NFUlQoIW1fZmlyc3RTdGFja1Nsb3RJbmRleCk7CisgICAg
bV9maXJzdFN0YWNrU2xvdEluZGV4ICs9IG51bWJlck9mTExJbnRDYWxsZWVTYXZlUmVnaXN0ZXJz
OwogCiAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gcmVnaXN0ZXJBcmd1bWVudHMoZ3ByQ291
bnQgKyBmcHJDb3VudCk7Ci0gICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGdwckNvdW50ICsg
ZnByQ291bnQ7IGkrKykKLSAgICAgICAgcmVnaXN0ZXJBcmd1bWVudHNbaV0gPSBwdXNoKE5vQ29u
c2lzdGVuY3lDaGVjayk7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGdwckNvdW50OyBp
KyspCisgICAgICAgIHJlZ2lzdGVyQXJndW1lbnRzW2ldID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwobV9maXJzdFN0YWNrU2xvdEluZGV4KyspOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkg
PCBmcHJDb3VudDsgaSsrKSB7CisgICAgICAgIHJlZ2lzdGVyQXJndW1lbnRzW2dwckNvdW50ICsg
aV0gPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2ZpcnN0U3RhY2tTbG90SW5kZXggKyBCMzo6
Ynl0ZXNGb3JXaWR0aChCMzo6Y29uc2VydmF0aXZlV2lkdGgoQjM6OkZQKSkgLyA4IC0gMSk7Cisg
ICAgICAgIEFTU0VSVChuZXh0U2xvdEZvclVwcGVyQml0cyhyZWdpc3RlckFyZ3VtZW50c1tncHJD
b3VudCArIGldKSA9PSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2ZpcnN0U3RhY2tTbG90SW5k
ZXgpKTsKKyAgICAgICAgbV9maXJzdFN0YWNrU2xvdEluZGV4ICs9IEIzOjpieXRlc0ZvcldpZHRo
KEIzOjpjb25zZXJ2YXRpdmVXaWR0aChCMzo6RlApKSAvIDg7CisgICAgfQorICAgIAorICAgIGRh
dGFMb2dMbklmKExMSW50R2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJbIiwgbV9mdW5jdGlv
bkluZGV4LCAiXSIsCisgICAgICAgICJSZWdpc3RlciBhcmd1bWVudHMgYWxsb2NhdGVkIGFzOiAi
LCBsaXN0RHVtcChyZWdpc3RlckFyZ3VtZW50cyksICIgOiB0aGVyZSBhcmUgIiwgZ3ByQ291bnQs
ICIgZ3BycyBhbmQgIiwgZnByQ291bnQsICIgMTI4LWJpdCBmcHJzIik7CiAKLSAgICBjb25zdCBh
dXRvIGFkZEFyZ3VtZW50ID0gWyZdKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCYgY291bnQsIHVp
bnQzMl90IG1heCkgeworICAgIGNvbnN0IGF1dG8gYWRkQXJndW1lbnQgPSBbJl0odWludDMyX3Qg
aW5kZXgsIHVpbnQzMl90IHNpemUsIHVpbnQzMl90JiBjb3VudCwgdWludDMyX3QgbWF4KSB7CiAg
ICAgICAgIGlmIChjb3VudCA8IG1heCkKICAgICAgICAgICAgIG1fbm9ybWFsaXplZEFyZ3VtZW50
c1tpbmRleF0gPSByZWdpc3RlckFyZ3VtZW50c1tjb3VudCsrXTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV9ub3JtYWxpemVkQXJndW1lbnRzW2luZGV4XSA9IHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGFja0luZGV4KyspOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIG1fbm9ybWFsaXplZEFyZ3VtZW50c1tpbmRleF0gPSB2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoc3RhY2tJbmRleCArIHNpemUgLSAxKTsKKyAgICAgICAg
ICAgIEFTU0VSVChzaXplID09IDEgfHwgbmV4dFNsb3RGb3JVcHBlckJpdHMobV9ub3JtYWxpemVk
QXJndW1lbnRzW2luZGV4XSkgPT0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhY2tJbmRleCkp
OworICAgICAgICAgICAgc3RhY2tJbmRleCArPSBzaXplOworICAgICAgICB9CiAgICAgfTsKLQor
ICAgIAogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXJndW1lbnRDb3Vu
dCgpOyBpKyspIHsKICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUuYXJndW1lbnQoaSkua2luZCkg
ewogICAgICAgICBjYXNlIFR5cGVLaW5kOjpJMzI6CkBAIC04MDcsMTEgKzk3MCwxMiBAQCBhdXRv
IExMSW50R2VuZXJhdG9yOjphZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUp
IC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoKICAgICAg
ICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmOgot
ICAgICAgICAgICAgYWRkQXJndW1lbnQoaSwgZ3BySW5kZXgsIG1heEdQUkluZGV4KTsKKyAgICAg
ICAgICAgIGFkZEFyZ3VtZW50KGksIDEsIGdwckluZGV4LCBtYXhHUFJJbmRleCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjMyOgogICAgICAgICBjYXNlIFR5
cGVLaW5kOjpGNjQ6Ci0gICAgICAgICAgICBhZGRBcmd1bWVudChpLCBmcHJJbmRleCwgbWF4RlBS
SW5kZXgpOworICAgICAgICBjYXNlIFR5cGVLaW5kOjpWMTI4OgorICAgICAgICAgICAgYWRkQXJn
dW1lbnQoaSwgc2lnbmF0dXJlLmFyZ3VtZW50KGkpLnNpemUoKSAvIDgsIGZwckluZGV4LCBtYXhG
UFJJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9p
ZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKQEAgLTgxOSwyNiArOTgzLDUzIEBAIGF1
dG8gTExJbnRHZW5lcmF0b3I6OmFkZEFyZ3VtZW50cyhjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVy
ZSkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9jb2RlQmxvY2st
Pm1fbnVtVmFycyArPSBncHJDb3VudCArIGZwckNvdW50OworICAgIG1fY29kZUJsb2NrLT5tX251
bVZhcnMgKz0gZ3ByQ291bnQgKyBmcHJDb3VudCAqIDIgKyBudW1iZXJPZkxMSW50Q2FsbGVlU2F2
ZVJlZ2lzdGVyczsKKyAgICAKKyAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVybmFs
Ojp2ZXJib3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAiTm9ybWFsaXpl
ZCBhcmd1bWVudHM6ICIsIGxpc3REdW1wKG1fbm9ybWFsaXplZEFyZ3VtZW50cykpOworICAgIGRh
dGFMb2dMbklmKExMSW50R2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJbIiwgbV9mdW5jdGlv
bkluZGV4LCAiXSIsCisgICAgICAgICJOZXh0IGF2YWlsYWJsZSBzbG90IGFmdGVyIGFkZGluZyBh
cmd1bWVudHMgaXMgIiwgbV9maXJzdFN0YWNrU2xvdEluZGV4LCAiIGF0ICIsIHZpcnR1YWxSZWdp
c3RlckZvckxvY2FsKG1fZmlyc3RTdGFja1Nsb3RJbmRleCkpOwogCiAgICAgcmV0dXJuIHsgfTsK
IH0KIAotYXV0byBMTEludEdlbmVyYXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1aW50MzJfdCBj
b3VudCkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBMTEludEdlbmVyYXRvcjo6YWRkTG9jYWwoVHlw
ZSB0eXBlLCB1aW50MzJfdCBsb2NhbEluZGV4LCB1aW50MzJfdCBjb3VudCkgLT4gUGFydGlhbFJl
c3VsdAogewogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICBBU1NFUlRfVU5VU0VEKGxvY2Fs
SW5kZXgsIGxvY2FsSW5kZXggPT0gbV9sb2NhbHMuc2l6ZSgpICsgbV9ub3JtYWxpemVkQXJndW1l
bnRzLnNpemUoKSk7CisgICAgQVNTRVJUKCFtX2V4cHJlc3Npb25TdGFja1Nsb3RzLnNpemUoKSk7
CisgICAgc2l6ZV90IHNsb3RDb3VudCA9ICgoc2l6ZV90KSBjb3VudCkgKiAodHlwZS5zaXplKCkg
LyA4KTsKIAotICAgIG1fY29kZUJsb2NrLT5tX251bVZhcnMgKz0gY291bnQ7CisgICAgbV9jb2Rl
QmxvY2stPm1fbnVtVmFycyArPSBzbG90Q291bnQ7CiAgICAgaWYgKGlzRnVuY3JlZih0eXBlKSB8
fCBpc0V4dGVybnJlZih0eXBlKSkgewotICAgICAgICB3aGlsZSAoY291bnQtLSkKLSAgICAgICAg
ICAgIG1fdW5pdGlhbGl6ZWRMb2NhbHMuYXBwZW5kKHB1c2goTm9Db25zaXN0ZW5jeUNoZWNrKSk7
Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fc3RhY2tTaXplICs9IGNvdW50OworICAgICAgICB3aGls
ZSAoY291bnQtLSkgeworICAgICAgICAgICAgYXV0byBzbG90ID0gdmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwobV9maXJzdFN0YWNrU2xvdEluZGV4KyspOworICAgICAgICAgICAgbV9sb2NhbHMuYXBw
ZW5kKHNsb3QpOworICAgICAgICAgICAgbV91bml0aWFsaXplZExvY2Fscy5hcHBlbmQoc2xvdCk7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB3aGlsZSAoY291bnQtLSkgeworICAg
ICAgICAgICAgaWYgKHR5cGUuc2l6ZSgpID09IDE2KQorICAgICAgICAgICAgICAgICsrbV9maXJz
dFN0YWNrU2xvdEluZGV4OworICAgICAgICAgICAgbV9sb2NhbHMuYXBwZW5kKHZpcnR1YWxSZWdp
c3RlckZvckxvY2FsKG1fZmlyc3RTdGFja1Nsb3RJbmRleCsrKSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGRhdGFMb2dMbklmKExMSW50R2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJb
IiwgbV9mdW5jdGlvbkluZGV4LCAiXSIsCisgICAgICAgICAgICAgICAgIkxvY2FsICIsIGxvY2Fs
SW5kZXgsICIgZ29lcyBpbiAiLCBtX2xvY2Fscy5sYXN0KCksICIsICIsIG5leHRTbG90Rm9yVXBw
ZXJCaXRzKG1fbG9jYWxzLmxhc3QoKSksICJ0YWtpbmcgc2xvdHMgIiwgbV9maXJzdFN0YWNrU2xv
dEluZGV4LTEsICIgYW5kICIsIG1fZmlyc3RTdGFja1Nsb3RJbmRleC0yKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICBkYXRhTG9nTG5JZihMTEludEdlbmVyYXRvckludGVybmFsOjp2ZXJi
b3NlLCAiWyIsIG1fZnVuY3Rpb25JbmRleCwgIl0iLAorICAgICAgICAiTmV4dCBhdmFpbGFibGUg
c2xvdCBhZnRlciBhZGRpbmcgbG9jYWwocykgaXMgIiwgbV9maXJzdFN0YWNrU2xvdEluZGV4LCAi
IGF0ICIsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fZmlyc3RTdGFja1Nsb3RJbmRleCkpOwor
ICAgIAorICAgIEFTU0VSVChuZXh0U2xvdEluZGV4KFR5cGVzOjpJNjQpID09IG1fZmlyc3RTdGFj
a1Nsb3RJbmRleCk7CisgICAgQVNTRVJUKG5leHRTbG90SW5kZXgoVHlwZXM6OlYxMjgpID09IG1f
Zmlyc3RTdGFja1Nsb3RJbmRleCArIDEpOworICAgIAogICAgIHJldHVybiB7IH07CiB9CiAKIHZv
aWQgTExJbnRHZW5lcmF0b3I6OmRpZEZpbmlzaFBhcnNpbmdMb2NhbHMoKQogeworICAgIGNoZWNr
Q29uc2lzdGVuY3koKTsKICAgICBpZiAobV91bml0aWFsaXplZExvY2Fscy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtODUwLDQ4ICsxMDQxLDYyIEBAIHZvaWQgTExJbnRHZW5lcmF0
b3I6OmRpZEZpbmlzaFBhcnNpbmdMb2NhbHMoKQogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRD
b25zdGFudChUeXBlIHR5cGUsIGludDY0X3QgdmFsdWUpIC0+IEV4cHJlc3Npb25UeXBlCiB7Ci0g
ICAgYXV0byBjb25zdGFudCA9IFsmXSB7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAg
ICByZXR1cm4gemVyb0NvbnN0YW50KCk7Ci0KLSAgICAgICAgaWYgKHZhbHVlID09IEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSkpCi0gICAgICAgICAgICByZXR1cm4ganNOdWxsQ29uc3RhbnQoKTsK
LQotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc291cmNlKEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4ICsgbV9jb2RlQmxvY2stPm1fY29uc3RhbnRzLnNpemUoKSk7Ci0gICAgICAgIGF1dG8gcmVz
dWx0ID0gbV9jb25zdGFudE1hcC5hZGQodmFsdWUsIHNvdXJjZSk7Ci0gICAgICAgIGlmICghcmVz
dWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZTsKLSAgICAgICAgbV9jb2RlQmxvY2stPm1fY29uc3RhbnRzLmFwcGVuZCh2YWx1ZSk7Ci0gICAg
ICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wR2VuZXJhdGVkV2FzbUJ5dGVjb2RlcygpKSkK
LSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5tX2NvbnN0YW50VHlwZXMuYXBwZW5kKHR5cGUpOwot
ICAgICAgICByZXR1cm4gc291cmNlOwotICAgIH07CiAgICAgLy8gbGVhdmUgYSBob2xlIGlmIHdl
IG5lZWQgdG8gbWF0ZXJpYWxpemUgdGhlIGNvbnN0YW50Ci0gICAgcHVzaCgpOwotICAgIHJldHVy
biBjb25zdGFudCgpOworICAgIHB1c2godHlwZSk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAg
cmV0dXJuIHplcm9Db25zdGFudCgpOworCisgICAgaWYgKHZhbHVlID09IEpTVmFsdWU6OmVuY29k
ZShqc051bGwoKSkpCisgICAgICAgIHJldHVybiBqc051bGxDb25zdGFudCgpOworCisgICAgVmly
dHVhbFJlZ2lzdGVyIHNvdXJjZShGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCArIG1fY29kZUJs
b2NrLT5tX2NvbnN0YW50cy5zaXplKCkpOworICAgIGF1dG8gcmVzdWx0ID0gbV9jb25zdGFudE1h
cC5hZGQodmFsdWUsIHNvdXJjZSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgbV9jb2RlQmxvY2stPm1fY29u
c3RhbnRzLmFwcGVuZCh2YWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBHZW5l
cmF0ZWRXYXNtQnl0ZWNvZGVzKCkpKQorICAgICAgICBtX2NvZGVCbG9jay0+bV9jb25zdGFudFR5
cGVzLmFwcGVuZCh0eXBlKTsKKyAgICByZXR1cm4gc291cmNlOwogfQogCi1hdXRvIExMSW50R2Vu
ZXJhdG9yOjpnZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkg
LT4gUGFydGlhbFJlc3VsdAorYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQ29uc3RhbnQodjEyOF90
IHZhbHVlKSAtPiBFeHByZXNzaW9uVHlwZQoreworICAgIC8vIGxlYXZlIGEgaG9sZSBpZiB3ZSBu
ZWVkIHRvIG1hdGVyaWFsaXplIHRoZSBjb25zdGFudAorICAgIHB1c2goVHlwZXM6OlYxMjgpOwor
ICAgIFZpcnR1YWxSZWdpc3RlciBzb3VyY2UoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggKyBt
X2NvZGVCbG9jay0+bV9jb25zdGFudHMuc2l6ZSgpKTsKKyAgICBpZiAoTExJbnRHZW5lcmF0b3JJ
bnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZ0xuKCJDb25zdGFudCAiLCB2YWx1ZS51
NjR4MlswXSwgIiwiLCB2YWx1ZS51NjR4MlsxXSwgIiBnb2VzIGluICIsIHNvdXJjZSk7CisgICAg
bV9jb2RlQmxvY2stPm1fY29uc3RhbnRzLmFwcGVuZCh2YWx1ZS51NjR4MlswXSk7CisgICAgbV9j
b2RlQmxvY2stPm1fY29uc3RhbnRzLmFwcGVuZCh2YWx1ZS51NjR4MlsxXSk7CisgICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OmR1bXBHZW5lcmF0ZWRXYXNtQnl0ZWNvZGVzKCkpKSB7CisgICAgICAg
IG1fY29kZUJsb2NrLT5tX2NvbnN0YW50VHlwZXMuYXBwZW5kKFR5cGVzOjpWMTI4KTsKKyAgICAg
ICAgbV9jb2RlQmxvY2stPm1fY29uc3RhbnRUeXBlcy5hcHBlbmQoVHlwZXM6OlYxMjgpOworICAg
IH0KKyAgICByZXR1cm4gc291cmNlOworfQorCithdXRvIExMSW50R2VuZXJhdG9yOjpnZXRMb2Nh
bCh1aW50MzJfdCBpbmRleCwgV2FzbTo6VHlwZSB0eXBlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgLy8gbGVhdmUgYSBob2xlIGlmIHdlIG5lZWQgdG8g
bWF0ZXJpYWxpemUgdGhlIGxvY2FsCi0gICAgcHVzaCgpOworICAgIHB1c2godHlwZSk7CiAgICAg
cmVzdWx0ID0gdmlydHVhbFJlZ2lzdGVyRm9yV2FzbUxvY2FsKGluZGV4KTsKICAgICByZXR1cm4g
eyB9OwogfQogCi1hdXRvIExMSW50R2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwg
RXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gTExJbnRHZW5lcmF0
b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBXYXNtOjpUeXBlIHR5cGUsIEV4cHJlc3Npb25U
eXBlIHZhbHVlKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHRhcmdl
dCA9IHZpcnR1YWxSZWdpc3RlckZvcldhc21Mb2NhbChpbmRleCk7Ci0KKyAgICAKICAgICAvLyBJ
ZiB0aGlzIGxvY2FsIGlzIGN1cnJlbnRseSBvbiB0aGUgc3RhY2sgd2UgbmVlZCB0byBtYXRlcmlh
bGl6ZSBpdCwgb3RoZXJ3aXNlIGl0J2xsIHNlZSB0aGUgbmV3IHZhbHVlIGluc3RlYWQgb2YgdGhl
IG9sZCBvbmUKLSAgICB3YWxrRXhwcmVzc2lvblN0YWNrKG1fcGFyc2VyLT5leHByZXNzaW9uU3Rh
Y2soKSwgWyZdKFR5cGVkRXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgVmlydHVhbFJlZ2lzdGVyIHNs
b3QpIHsKKyAgICB3YWxrRXhwcmVzc2lvblN0YWNrKFsmXShUeXBlZEV4cHJlc3Npb24mIGV4cHJl
c3Npb24sIFZpcnR1YWxSZWdpc3RlciBzbG90KSB7CiAgICAgICAgIGlmIChleHByZXNzaW9uLnZh
bHVlKCkgIT0gdGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBXYXNtTW92Ojpl
bWl0KHRoaXMsIHNsb3QsIGV4cHJlc3Npb24pOworICAgICAgICB0eXBlZE1vdmUoc2xvdCwgZXhw
cmVzc2lvbik7CisgICAgICAgIEFTU0VSVCh0eXBlID09IGV4cHJlc3Npb24udHlwZSgpKTsKICAg
ICAgICAgZXhwcmVzc2lvbiA9IFR5cGVkRXhwcmVzc2lvbiB7IGV4cHJlc3Npb24udHlwZSgpLCBz
bG90IH07CiAgICAgfSk7CiAKLSAgICBXYXNtTW92OjplbWl0KHRoaXMsIHRhcmdldCwgdmFsdWUp
OworICAgIHR5cGVkTW92ZSh0YXJnZXQsIHsgdHlwZSwgdmFsdWUgfSk7CiAKICAgICByZXR1cm4g
eyB9OwogfQpAQCAtODk5LDcgKzExMDQsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpzZXRMb2Nh
bCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZQogYXV0
byBMTEludEdlbmVyYXRvcjo6Z2V0R2xvYmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgY29uc3QgV2FzbTo6R2xvYmFsSW5m
b3JtYXRpb24mIGdsb2JhbCA9IG1faW5mby5nbG9iYWxzW2luZGV4XTsKLSAgICByZXN1bHQgPSBw
dXNoKCk7CisgICAgcmVzdWx0ID0gcHVzaChnbG9iYWwudHlwZSk7CiAgICAgc3dpdGNoIChnbG9i
YWwuYmluZGluZ01vZGUpIHsKICAgICBjYXNlIFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpCaW5k
aW5nTW9kZTo6RW1iZWRkZWRJbkluc3RhbmNlOgogICAgICAgICBXYXNtR2V0R2xvYmFsOjplbWl0
KHRoaXMsIHJlc3VsdCwgaW5kZXgpOwpAQCAtOTUzLDcgKzExNTgsNyBAQCBhdXRvIExMSW50R2Vu
ZXJhdG9yOjphZGRMb29wKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgU3RhY2smIGVuY2xvc2lu
Z1N0YWNrLCBDbwogICAgIFJlZjxMYWJlbD4gYm9keSA9IG5ld0VtaXR0ZWRMYWJlbCgpOwogICAg
IFJlZjxMYWJlbD4gY29udGludWF0aW9uID0gbmV3TGFiZWwoKTsKIAotICAgIGJsb2NrID0gQ29u
dHJvbFR5cGU6Omxvb3Aoc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwgV1RGTW92ZShib2R5KSwgV1RG
TW92ZShjb250aW51YXRpb24pKTsKKyAgICBibG9jayA9IENvbnRyb2xUeXBlOjpsb29wKHNpZ25h
dHVyZSwgbV9leHByZXNzaW9uU3RhY2tTbG90cywgV1RGTW92ZShib2R5KSwgV1RGTW92ZShjb250
aW51YXRpb24pKTsKIAogICAgIFZlY3Rvcjx1bnNpZ25lZD4gdW5yZXNvbHZlZE9mZnNldHM7CiAg
ICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gb3NyRW50cnlEYXRhOwpAQCAtOTg3LDEzICsxMTky
LDEzIEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZExvb3AoQmxvY2tTaWduYXR1cmUgc2lnbmF0
dXJlLCBTdGFjayYgZW5jbG9zaW5nU3RhY2ssIENvCiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFk
ZFRvcExldmVsKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSkgLT4gQ29udHJvbFR5cGUKIHsKLSAg
ICByZXR1cm4gQ29udHJvbFR5cGU6OnRvcExldmVsKHNpZ25hdHVyZSwgbV9zdGFja1NpemUsIG5l
d0xhYmVsKCkpOworICAgIHJldHVybiBDb250cm9sVHlwZTo6dG9wTGV2ZWwoc2lnbmF0dXJlLCBt
X2V4cHJlc3Npb25TdGFja1Nsb3RzLCBuZXdMYWJlbCgpKTsKIH0KIAogYXV0byBMTEludEdlbmVy
YXRvcjo6YWRkQmxvY2soQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTdGFjayYgZW5jbG9zaW5n
U3RhY2ssIENvbnRyb2xUeXBlJiBuZXdCbG9jaywgU3RhY2smIG5ld1N0YWNrKSAtPiBQYXJ0aWFs
UmVzdWx0CiB7CiAgICAgc3BsaXRTdGFjayhzaWduYXR1cmUsIGVuY2xvc2luZ1N0YWNrLCBuZXdT
dGFjayk7Ci0gICAgbmV3QmxvY2sgPSBDb250cm9sVHlwZTo6YmxvY2soc2lnbmF0dXJlLCBtX3N0
YWNrU2l6ZSwgbmV3TGFiZWwoKSk7CisgICAgbmV3QmxvY2sgPSBDb250cm9sVHlwZTo6YmxvY2so
c2lnbmF0dXJlLCBtX2V4cHJlc3Npb25TdGFja1Nsb3RzLCBuZXdMYWJlbCgpKTsKICAgICByZXR1
cm4geyB9OwogfQogCkBAIC0xMDA2LDcgKzEyMTEsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjph
ZGRJZihFeHByZXNzaW9uVHlwZSBjb25kaXRpb24sIEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwg
UwogCiAgICAgV2FzbUpmYWxzZTo6ZW1pdCh0aGlzLCBjb25kaXRpb24sIGFsdGVybmF0ZS0+Ymlu
ZCh0aGlzKSk7CiAKLSAgICByZXN1bHQgPSBDb250cm9sVHlwZTo6aWZfKHNpZ25hdHVyZSwgbV9z
dGFja1NpemUsIFdURk1vdmUoYWx0ZXJuYXRlKSwgV1RGTW92ZShjb250aW51YXRpb24pKTsKKyAg
ICByZXN1bHQgPSBDb250cm9sVHlwZTo6aWZfKHNpZ25hdHVyZSwgbV9leHByZXNzaW9uU3RhY2tT
bG90cywgV1RGTW92ZShhbHRlcm5hdGUpLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwogICAgIHJl
dHVybiB7IH07CiB9CiAKQEAgLTEwMjAsMTEgKzEyMjUsMTIgQEAgYXV0byBMTEludEdlbmVyYXRv
cjo6YWRkRWxzZShDb250cm9sVHlwZSYgZGF0YSwgU3RhY2smIGV4cHJlc3Npb25TdGFjaykgLT4g
UGFydGkKIAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkRWxzZVRvVW5yZWFjaGFibGUoQ29udHJv
bFR5cGUmIGRhdGEpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBtX3N0YWNrU2l6ZSA9IGRhdGEu
c3RhY2tTaXplKCkgKyBkYXRhLm1fc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCk7CisgICAgbV9l
eHByZXNzaW9uU3RhY2tTbG90cyA9IGRhdGEubV9leHByZXNzaW9uU3RhY2tTbG90czsKKy8vICAg
IGFkZEFyZ3VtZW50c1RvU2xvdFN0YWNrKGRhdGEubV9zaWduYXR1cmUpOwogCiAgICAgQ29udHJv
bElmJiBjb250cm9sID0gc3RkOjpnZXQ8Q29udHJvbElmPihkYXRhKTsKICAgICBlbWl0TGFiZWwo
Y29udHJvbC5tX2FsdGVybmF0ZS5nZXQoKSk7Ci0gICAgZGF0YSA9IENvbnRyb2xUeXBlOjpibG9j
ayhkYXRhLm1fc2lnbmF0dXJlLCBtX3N0YWNrU2l6ZSwgV1RGTW92ZShkYXRhLm1fY29udGludWF0
aW9uKSk7CisgICAgZGF0YSA9IENvbnRyb2xUeXBlOjpibG9jayhkYXRhLm1fc2lnbmF0dXJlLCBt
X2V4cHJlc3Npb25TdGFja1Nsb3RzLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRpb24pKTsKICAg
ICByZXR1cm4geyB9OwogfQogCkBAIC0xMDM2LDcgKzEyNDIsNyBAQCBhdXRvIExMSW50R2VuZXJh
dG9yOjphZGRUcnkoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTdGFjayYgZW5jbG9zaW5nU3Rh
Y2ssIENvbgogICAgIHNwbGl0U3RhY2soc2lnbmF0dXJlLCBlbmNsb3NpbmdTdGFjaywgbmV3U3Rh
Y2spOwogICAgIFJlZjxMYWJlbD4gdHJ5TGFiZWwgPSBuZXdFbWl0dGVkTGFiZWwoKTsKICAgICBS
ZWY8TGFiZWw+IGNvbnRpbnVhdGlvbiA9IG5ld0xhYmVsKCk7Ci0gICAgcmVzdWx0ID0gQ29udHJv
bFR5cGU6OmNyZWF0ZVRyeShzaWduYXR1cmUsIG1fc3RhY2tTaXplLCBXVEZNb3ZlKHRyeUxhYmVs
KSwgV1RGTW92ZShjb250aW51YXRpb24pLCBtX3RyeURlcHRoKTsKKyAgICByZXN1bHQgPSBDb250
cm9sVHlwZTo6Y3JlYXRlVHJ5KHNpZ25hdHVyZSwgbV9leHByZXNzaW9uU3RhY2tTbG90cywgV1RG
TW92ZSh0cnlMYWJlbCksIFdURk1vdmUoY29udGludWF0aW9uKSwgbV90cnlEZXB0aCk7CiAgICAg
cmV0dXJuIHsgfTsKIH0KIApAQCAtMTA0Niw5ICsxMjUyLDEzIEBAIHZvaWQgTExJbnRHZW5lcmF0
b3I6OmZpbmFsaXplUHJldmlvdXNCbG9ja0ZvckNhdGNoKENvbnRyb2xUeXBlJiBkYXRhLCBTdGFj
ayYgZXhwCiAgICAgICAgIG1hdGVyaWFsaXplQ29uc3RhbnRzQW5kTG9jYWxzKGV4cHJlc3Npb25T
dGFjayk7CiAgICAgZWxzZSB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKLSAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGRhdGEuc3RhY2tT
aXplKCkpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gdmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwoZGF0YS5zdGFja0NvdW50KCkpOwogICAgICAgICBmb3IgKFR5cGVkRXhwcmVzc2lvbiYg
dmFsdWUgOiBleHByZXNzaW9uU3RhY2spIHsKLSAgICAgICAgICAgIFdhc21Nb3Y6OmVtaXQodGhp
cywgZHN0LCB2YWx1ZSk7CisgICAgICAgICAgICB0eXBlZE1vdmUoZHN0LCB2YWx1ZSk7CisgICAg
ICAgICAgICBpZiAodmFsdWUudHlwZSgpLnNpemUoKSA9PSAxNikgeworICAgICAgICAgICAgICAg
IEFTU0VSVChkc3QgLSAxID09IG5leHRTbG90Rm9yVXBwZXJCaXRzKGRzdCkpOworICAgICAgICAg
ICAgICAgIGRzdCAtPSAxOworICAgICAgICAgICAgfQogICAgICAgICAgICAgdmFsdWUgPSBUeXBl
ZEV4cHJlc3Npb24geyB2YWx1ZS50eXBlKCksIGRzdCB9OwogICAgICAgICAgICAgZHN0IC09IDE7
CiAgICAgICAgIH0KQEAgLTEwNjcsMTQgKzEyNzcsMTYgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6
YWRkQ2F0Y2hUb1VucmVhY2hhYmxlKHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBjb25zdCBTaWdu
YXQKICAgICBtX3VzZXNFeGNlcHRpb25zID0gdHJ1ZTsKICAgICBSZWY8TGFiZWw+IGNhdGNoTGFi
ZWwgPSBuZXdFbWl0dGVkTGFiZWwoKTsKIAotICAgIG1fc3RhY2tTaXplID0gZGF0YS5zdGFja1Np
emUoKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZXhjZXB0aW9uID0gcHVzaCgpOworICAgIG1fZXhw
cmVzc2lvblN0YWNrU2xvdHMgPSBkYXRhLm1fZXhwcmVzc2lvblN0YWNrU2xvdHM7CisgICAgCisg
ICAgVmlydHVhbFJlZ2lzdGVyIGV4Y2VwdGlvbiA9IHB1c2goVHlwZXM6OlZvaWQsIE5vQ29uc2lz
dGVuY3lDaGVjayk7CisgICAgQVNTRVJUKGV4Y2VwdGlvblNpZ25hdHVyZS5yZXR1cm5zVm9pZCgp
KTsKICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxDb250cm9sVHJ5PihkYXRhKSkgewog
ICAgICAgICBDb250cm9sVHJ5JiB0cnlEYXRhID0gc3RkOjpnZXQ8Q29udHJvbFRyeT4oZGF0YSk7
Ci0gICAgICAgIGRhdGEgPSBDb250cm9sVHlwZTo6Y3JlYXRlQ2F0Y2goZGF0YS5tX3NpZ25hdHVy
ZSwgZGF0YS5zdGFja1NpemUoKSwgV1RGTW92ZSh0cnlEYXRhLm1fdHJ5KSwgV1RGTW92ZShkYXRh
Lm1fY29udGludWF0aW9uKSwgY2F0Y2hMYWJlbCwgdHJ5RGF0YS5tX3RyeURlcHRoLCBleGNlcHRp
b24pOworICAgICAgICBkYXRhID0gQ29udHJvbFR5cGU6OmNyZWF0ZUNhdGNoKGRhdGEubV9zaWdu
YXR1cmUsIGRhdGEubV9leHByZXNzaW9uU3RhY2tTbG90cywgV1RGTW92ZSh0cnlEYXRhLm1fdHJ5
KSwgV1RGTW92ZShkYXRhLm1fY29udGludWF0aW9uKSwgY2F0Y2hMYWJlbCwgdHJ5RGF0YS5tX3Ry
eURlcHRoLCBleGNlcHRpb24pOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZXhjZXB0aW9uU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKTsgKytpKQotICAgICAgICByZXN1bHRz
LmFwcGVuZChwdXNoKCkpOworICAgICAgICByZXN1bHRzLmFwcGVuZChwdXNoKGV4Y2VwdGlvblNp
Z25hdHVyZS5hcmd1bWVudChpKSkpOwogCiAgICAgaWYgKENvbnRleHQ6OnVzZUZhc3RUTFMoKSkK
ICAgICAgICAgV2FzbUNhdGNoOjplbWl0KHRoaXMsIGV4Y2VwdGlvbkluZGV4LCBleGNlcHRpb24s
IGV4Y2VwdGlvblNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksIHJlc3VsdHMuaXNFbXB0eSgpID8g
MCA6IC1yZXN1bHRzWzBdLm9mZnNldCgpKTsKQEAgLTExMjAsMTEgKzEzMzIsMTEgQEAgYXV0byBM
TEludEdlbmVyYXRvcjo6YWRkQ2F0Y2hBbGxUb1VucmVhY2hhYmxlKENvbnRyb2xUeXBlJiBkYXRh
KSAtPiBQYXJ0aWFsUmVzdWwKIHsKICAgICBtX3VzZXNFeGNlcHRpb25zID0gdHJ1ZTsKICAgICBS
ZWY8TGFiZWw+IGNhdGNoTGFiZWwgPSBuZXdFbWl0dGVkTGFiZWwoKTsKLSAgICBtX3N0YWNrU2l6
ZSA9IGRhdGEuc3RhY2tTaXplKCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGV4Y2VwdGlvbiA9IHB1
c2goKTsKKyAgICBtX2V4cHJlc3Npb25TdGFja1Nsb3RzID0gZGF0YS5tX2V4cHJlc3Npb25TdGFj
a1Nsb3RzOworICAgIFZpcnR1YWxSZWdpc3RlciBleGNlcHRpb24gPSBwdXNoKFR5cGVzOjpWb2lk
LCBOb0NvbnNpc3RlbmN5Q2hlY2spOwogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPENv
bnRyb2xUcnk+KGRhdGEpKSB7CiAgICAgICAgIENvbnRyb2xUcnkmIHRyeURhdGEgPSBzdGQ6Omdl
dDxDb250cm9sVHJ5PihkYXRhKTsKLSAgICAgICAgZGF0YSA9IENvbnRyb2xUeXBlOjpjcmVhdGVD
YXRjaChkYXRhLm1fc2lnbmF0dXJlLCBkYXRhLnN0YWNrU2l6ZSgpLCBXVEZNb3ZlKHRyeURhdGEu
bV90cnkpLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRpb24pLCBjYXRjaExhYmVsLCB0cnlEYXRh
Lm1fdHJ5RGVwdGgsIGV4Y2VwdGlvbik7CisgICAgICAgIGRhdGEgPSBDb250cm9sVHlwZTo6Y3Jl
YXRlQ2F0Y2goZGF0YS5tX3NpZ25hdHVyZSwgZGF0YS5tX2V4cHJlc3Npb25TdGFja1Nsb3RzLCBX
VEZNb3ZlKHRyeURhdGEubV90cnkpLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRpb24pLCBjYXRj
aExhYmVsLCB0cnlEYXRhLm1fdHJ5RGVwdGgsIGV4Y2VwdGlvbik7CiAgICAgfQogICAgIENvbnRy
b2xDYXRjaCYgY2F0Y2hEYXRhID0gc3RkOjpnZXQ8Q29udHJvbENhdGNoPihkYXRhKTsKICAgICBj
YXRjaERhdGEubV9raW5kID0gQ2F0Y2hLaW5kOjpDYXRjaEFsbDsKQEAgLTExNTcsMTggKzEzNjks
MTggQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkRGVsZWdhdGVUb1VucmVhY2hhYmxlKENvbnRy
b2xUeXBlJiB0YXJnZXQsIENvbnRyb2xUeXBlJgogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8g
TExJbnRHZW5lcmF0b3I6OmFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBWZWN0b3I8
RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBTdGFjayYpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gTExJ
bnRHZW5lcmF0b3I6OmFkZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBTdGFjayYgYXJn
cykgLT4gUGFydGlhbFJlc3VsdAogewogICAgIG1fdXNlc0V4Y2VwdGlvbnMgPSB0cnVlOwogICAg
IC8vIFdlIGhhdmUgdG8gbWF0ZXJpYWxpemUgdGhlIGFyZ3VtZW50cyBoZXJlIHNpbmNlIGl0IG1p
Z2h0IGluY2x1ZGUgY29uc3RhbnRzIG9yCiAgICAgLy8gZGVsYXllZCBtb3ZlcywgYnV0IHRoZSB3
YXNtX3Rocm93IG9wY29kZSBleHBlY3RzIGFsbCB0aGUgYXJndW1lbnRzIHRvIGJlIGNvbnRpZ3Vv
dXMKICAgICAvLyBpbiB0aGUgc3RhY2suIFRoZSByZWFzb24gd2UgZG9uJ3QgY2FsbCBtYXRlcmlh
bGl6ZUNvbnN0YW50c0FuZExvY2FscyBoZXJlIGlzIHRoYXQKICAgICAvLyBpdCBleHBlY3RzIGEg
c3RhY2ssIG5vdCBhIHZlY3RvciBvZiBFeHByZXNzaW9uVHlwZSBhcmd1bWVudHMuCi0gICAgd2Fs
a0V4cHJlc3Npb25TdGFjayhhcmdzLCBbJl0oVmlydHVhbFJlZ2lzdGVyJiBhcmcsIFZpcnR1YWxS
ZWdpc3RlciBzbG90KSB7Ci0gICAgICAgIGlmIChhcmcgPT0gc2xvdCkKKyAgICB3YWxrRXhwcmVz
c2lvblN0YWNrKGFyZ3MsIFsmXShUeXBlZEV4cHJlc3Npb24mIGFyZywgVmlydHVhbFJlZ2lzdGVy
IHNsb3QpIHsKKyAgICAgICAgaWYgKGFyZy52YWx1ZSgpID09IHNsb3QpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIFdhc21Nb3Y6OmVtaXQodGhpcywgc2xvdCwgYXJnKTsKLSAgICAgICAg
YXJnID0gc2xvdDsKKyAgICAgICAgdHlwZWRNb3ZlKHNsb3QsIGFyZyk7CisgICAgICAgIGFyZyA9
IFR5cGVkRXhwcmVzc2lvbiB7IGFyZy50eXBlKCksIHNsb3QgfTsKICAgICB9KTsKICAgICBXYXNt
VGhyb3c6OmVtaXQodGhpcywgZXhjZXB0aW9uSW5kZXgsIGFyZ3MuaXNFbXB0eSgpID8gdmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwoMCkgOiBhcmdzWzBdKTsKICAgICByZXR1cm4geyB9OwpAQCAtMTI2
NiwxNSArMTQ3OCwxOCBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRFbmRUb1VucmVhY2hhYmxl
KENvbnRyb2xFbnRyeSYgZW50cnksIFN0YWNrJiBleHByZXNzaW9uUwogewogICAgIENvbnRyb2xU
eXBlJiBkYXRhID0gZW50cnkuY29udHJvbERhdGE7CiAKLSAgICB1bnNpZ25lZCBzdGFja1NpemUg
PSBkYXRhLnN0YWNrU2l6ZSgpOworICAgIHVuc2lnbmVkIHN0YWNrU2l6ZSA9IGRhdGEuc3RhY2tD
b3VudCgpOwogICAgIGlmIChDb250cm9sVHlwZTo6aXNBbnlDYXRjaChlbnRyeS5jb250cm9sRGF0
YSkpCiAgICAgICAgICsrc3RhY2tTaXplOyAvLyBBY2NvdW50IGZvciB0aGUgY2F1Z2h0IGV4Y2Vw
dGlvbgotICAgIFJFTEVBU0VfQVNTRVJUKHVucmVhY2hhYmxlIHx8IG1fc3RhY2tTaXplID09ICBz
dGFja1NpemUgKyBkYXRhLm1fc2lnbmF0dXJlLT5yZXR1cm5Db3VudCgpKTsKKyAgICBSRUxFQVNF
X0FTU0VSVCh1bnJlYWNoYWJsZSB8fCB0aGlzLT5zdGFja0NvdW50KCkgPT0gIHN0YWNrU2l6ZSAr
IGRhdGEubV9zaWduYXR1cmUtPnJldHVybkNvdW50KCkpOwogCi0gICAgbV9zdGFja1NpemUgPSBk
YXRhLnN0YWNrU2l6ZSgpOworICAgIG1fZXhwcmVzc2lvblN0YWNrU2xvdHMgPSBkYXRhLm1fZXhw
cmVzc2lvblN0YWNrU2xvdHM7CiAKICAgICBpZiAoQ29udHJvbFR5cGU6OmlzVHJ5KGRhdGEpIHx8
IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29udHJvbENhdGNoPihkYXRhKSkKICAgICAgICAgLS1t
X3RyeURlcHRoOworICAgIAorICAgIGRhdGFMb2dMbklmKExMSW50R2VuZXJhdG9ySW50ZXJuYWw6
OnZlcmJvc2UsICJbIiwgbV9mdW5jdGlvbkluZGV4LCAiXSIsCisgICAgICAgICJBZGQgZW5kLCBu
ZXcgc3RhY2sgc2xvdHM6ICIsIGxpc3REdW1wKG1fZXhwcmVzc2lvblN0YWNrU2xvdHMpLCAicmVh
Y2hhYmxlOiAiLCAhdW5yZWFjaGFibGUpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGRhdGEubV9zaWduYXR1cmUtPnJldHVybkNvdW50KCk7ICsraSkgewogICAgICAgICAvLyBXZSBk
b24ndCB3YW50IHRvIGRvIGEgY29uc2lzdGVuY3kgY2hlY2sgaGVyZSBiZWNhdXNlIHdlIGp1c3Qg
cmVzZXQgdGhlIHN0YWNrIHNpemUKQEAgLTEyODIsNyArMTQ5Nyw3IEBAIGF1dG8gTExJbnRHZW5l
cmF0b3I6OmFkZEVuZFRvVW5yZWFjaGFibGUoQ29udHJvbEVudHJ5JiBlbnRyeSwgU3RhY2smIGV4
cHJlc3Npb25TCiAgICAgICAgIC8vIFRoZSBvbmx5IHJlYXNvbiB3ZSBkbyB0aGluZ3MgdGhpcyB3
YXkgaXMgc28gdGhhdCBpdCBhbHNvIHdvcmtzIGZvciB1bnJlYWNoYWJsZSBibG9ja3MsCiAgICAg
ICAgIC8vIHNpbmNlIHRoZXkgbWlnaHQgbm90IGhhdmUgdGhlIHJpZ2h0IG51bWJlciBvZiB2YWx1
ZXMgaW4gdGhlIGV4cHJlc3Npb24gc3RhY2suCiAgICAgICAgIC8vIEluc3RlYWQsIHdlIGRvIGEg
c3RyaWN0ZXIgY29uc2lzdGVuY3kgY2hlY2sgYmVsb3cuCi0gICAgICAgIGF1dG8gdG1wID0gcHVz
aChOb0NvbnNpc3RlbmN5Q2hlY2spOworICAgICAgICBhdXRvIHRtcCA9IHB1c2goZGF0YS5tX3Np
Z25hdHVyZS0+cmV0dXJuVHlwZShpKSwgTm9Db25zaXN0ZW5jeUNoZWNrKTsKICAgICAgICAgQVNT
RVJUKHVucmVhY2hhYmxlIHx8IHRtcCA9PSBleHByZXNzaW9uU3RhY2tbaV0udmFsdWUoKSk7CiAg
ICAgICAgIGlmICh1bnJlYWNoYWJsZSkKICAgICAgICAgICAgIGVudHJ5LmVuY2xvc2VkRXhwcmVz
c2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChkYXRhLm1fc2lnbmF0dXJlLT5yZXR1cm5UeXBl
KGkpLCB0bXApOwpAQCAtMTMyMCwxMSArMTUzNSwxNSBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjph
ZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJl
LAogewogICAgIEFTU0VSVChzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpID09IGFyZ3Muc2l6ZSgp
KTsKICAgICBMTEludENhbGxJbmZvcm1hdGlvbiBpbmZvID0gY2FsbEluZm9ybWF0aW9uRm9yQ2Fs
bGVyKHNpZ25hdHVyZSk7Ci0gICAgdW5pZnlWYWx1ZXNXaXRoQmxvY2soaW5mby5hcmd1bWVudHMs
IGFyZ3MpOworICAgIFZlY3RvcjxUeXBlZEV4cHJlc3Npb24+IHR5cGVkQXJncyhhcmdzLnNpemUo
KSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQorICAgICAg
ICB0eXBlZEFyZ3NbaV0gPSB7IHNpZ25hdHVyZS5hcmd1bWVudChpKSwgYXJnc1tpXSB9OworICAg
IHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGluZm8uYXJndW1lbnRzLCB0eXBlZEFyZ3MpOworICAgIAog
ICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0VExTKCkpCi0gICAgICAgIFdhc21DYWxsOjplbWl0KHRo
aXMsIGZ1bmN0aW9uSW5kZXgsIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFja0Fy
Z3VtZW50cyk7CisgICAgICAgIFdhc21DYWxsOjplbWl0KHRoaXMsIGZ1bmN0aW9uSW5kZXgsIGlu
Zm8uc3RhY2tPZmZzZXQsIGluZm8uc2l6ZU9mU3RhY2tBcmd1bWVudHMpOwogICAgIGVsc2UKLSAg
ICAgICAgV2FzbUNhbGxOb1Rsczo6ZW1pdCh0aGlzLCBmdW5jdGlvbkluZGV4LCBpbmZvLnN0YWNr
T2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMpOworICAgICAgICBXYXNtQ2FsbE5v
VGxzOjplbWl0KHRoaXMsIGZ1bmN0aW9uSW5kZXgsIGluZm8uc3RhY2tPZmZzZXQsIGluZm8uc2l6
ZU9mU3RhY2tBcmd1bWVudHMpOwogICAgIGluZm8uY29tbWl0UmVzdWx0cyhyZXN1bHRzKTsKIAog
ICAgIHJldHVybiB7IH07CkBAIC0xMzM5LDExICsxNTU4LDE1IEBAIGF1dG8gTExJbnRHZW5lcmF0
b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUm
IHNpZ25hCiAgICAgQVNTRVJUKG1faW5mby50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpID09IFRh
YmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpOwogCiAgICAgTExJbnRDYWxsSW5mb3JtYXRpb24gaW5m
byA9IGNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihzaWduYXR1cmUpOwotICAgIHVuaWZ5VmFsdWVz
V2l0aEJsb2NrKGluZm8uYXJndW1lbnRzLCBhcmdzKTsKKyAgICBWZWN0b3I8VHlwZWRFeHByZXNz
aW9uPiB0eXBlZEFyZ3MoYXJncy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YXJncy5zaXplKCk7ICsraSkKKyAgICAgICAgdHlwZWRBcmdzW2ldID0geyBzaWduYXR1cmUuYXJn
dW1lbnQoaSksIGFyZ3NbaV0gfTsKKyAgICB1bmlmeVZhbHVlc1dpdGhCbG9jayhpbmZvLmFyZ3Vt
ZW50cywgdHlwZWRBcmdzKTsKKyAgICAKICAgICBpZiAoQ29udGV4dDo6dXNlRmFzdFRMUygpKQot
ICAgICAgICBXYXNtQ2FsbEluZGlyZWN0OjplbWl0KHRoaXMsIGNhbGxlZUluZGV4LCBtX2NvZGVC
bG9jay0+YWRkU2lnbmF0dXJlKHNpZ25hdHVyZSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVt
YmVyT2ZTdGFja0FyZ3VtZW50cywgdGFibGVJbmRleCk7CisgICAgICAgIFdhc21DYWxsSW5kaXJl
Y3Q6OmVtaXQodGhpcywgY2FsbGVlSW5kZXgsIG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUoc2ln
bmF0dXJlKSwgaW5mby5zdGFja09mZnNldCwgaW5mby5zaXplT2ZTdGFja0FyZ3VtZW50cywgdGFi
bGVJbmRleCk7CiAgICAgZWxzZQotICAgICAgICBXYXNtQ2FsbEluZGlyZWN0Tm9UbHM6OmVtaXQo
dGhpcywgY2FsbGVlSW5kZXgsIG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUoc2lnbmF0dXJlKSwg
aW5mby5zdGFja09mZnNldCwgaW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRzLCB0YWJsZUluZGV4
KTsKKyAgICAgICAgV2FzbUNhbGxJbmRpcmVjdE5vVGxzOjplbWl0KHRoaXMsIGNhbGxlZUluZGV4
LCBtX2NvZGVCbG9jay0+YWRkU2lnbmF0dXJlKHNpZ25hdHVyZSksIGluZm8uc3RhY2tPZmZzZXQs
IGluZm8uc2l6ZU9mU3RhY2tBcmd1bWVudHMsIHRhYmxlSW5kZXgpOwogICAgIGluZm8uY29tbWl0
UmVzdWx0cyhyZXN1bHRzKTsKIAogICAgIHJldHVybiB7IH07CkBAIC0xMzU0LDExICsxNTc3LDE0
IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhbGxSZWYoY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwCiAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlID0g
YXJncy50YWtlTGFzdCgpOwogCiAgICAgTExJbnRDYWxsSW5mb3JtYXRpb24gaW5mbyA9IGNhbGxJ
bmZvcm1hdGlvbkZvckNhbGxlcihzaWduYXR1cmUpOwotICAgIHVuaWZ5VmFsdWVzV2l0aEJsb2Nr
KGluZm8uYXJndW1lbnRzLCBhcmdzKTsKKyAgICBWZWN0b3I8VHlwZWRFeHByZXNzaW9uPiB0eXBl
ZEFyZ3MoYXJncy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJncy5zaXpl
KCk7ICsraSkKKyAgICAgICAgdHlwZWRBcmdzW2ldID0geyBzaWduYXR1cmUuYXJndW1lbnQoaSks
IGFyZ3NbaV0gfTsKKyAgICB1bmlmeVZhbHVlc1dpdGhCbG9jayhpbmZvLmFyZ3VtZW50cywgdHlw
ZWRBcmdzKTsKICAgICBpZiAoQ29udGV4dDo6dXNlRmFzdFRMUygpKQotICAgICAgICBXYXNtQ2Fs
bFJlZjo6ZW1pdCh0aGlzLCBjYWxsZWUsIG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUoc2lnbmF0
dXJlKSwgaW5mby5zdGFja09mZnNldCwgaW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRzKTsKKyAg
ICAgICAgV2FzbUNhbGxSZWY6OmVtaXQodGhpcywgY2FsbGVlLCBtX2NvZGVCbG9jay0+YWRkU2ln
bmF0dXJlKHNpZ25hdHVyZSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8uc2l6ZU9mU3RhY2tBcmd1
bWVudHMpOwogICAgIGVsc2UKLSAgICAgICAgV2FzbUNhbGxSZWZOb1Rsczo6ZW1pdCh0aGlzLCBj
YWxsZWUsIG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUoc2lnbmF0dXJlKSwgaW5mby5zdGFja09m
ZnNldCwgaW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRzKTsKKyAgICAgICAgV2FzbUNhbGxSZWZO
b1Rsczo6ZW1pdCh0aGlzLCBjYWxsZWUsIG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUoc2lnbmF0
dXJlKSwgaW5mby5zdGFja09mZnNldCwgaW5mby5zaXplT2ZTdGFja0FyZ3VtZW50cyk7CiAgICAg
aW5mby5jb21taXRSZXN1bHRzKHJlc3VsdHMpOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTEzNjYs
NyArMTU5Miw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhbGxSZWYoY29uc3QgU2lnbmF0
dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwCiAKIGF1dG8gTExJbnRHZW5lcmF0
b3I6OmFkZFJlZklzTnVsbChFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICByZXN1
bHQgPSBwdXNoKFR5cGVzOjpJMzIpOwogICAgIFdhc21SZWZJc051bGw6OmVtaXQodGhpcywgcmVz
dWx0LCB2YWx1ZSk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTM3NCw3ICsxNjAwLDcgQEAgYXV0
byBMTEludEdlbmVyYXRvcjo6YWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KQogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRSZWZGdW5jKHVp
bnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7
Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6OkZ1bmNyZWYp
OwogICAgIFdhc21SZWZGdW5jOjplbWl0KHRoaXMsIHJlc3VsdCwgaW5kZXgpOwogCiAgICAgcmV0
dXJuIHsgfTsKQEAgLTEzODIsNyArMTYwOCw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFJl
ZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpCiAK
IGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4
cHJlc3Npb25UeXBlIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVz
dWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6OlZv
aWQpOyAvLyBUT0RPCiAgICAgV2FzbVRhYmxlR2V0OjplbWl0KHRoaXMsIHJlc3VsdCwgaW5kZXgs
IHRhYmxlSW5kZXgpOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTE0MTEsNyArMTYzNyw3IEBAIGF1
dG8gTExJbnRHZW5lcmF0b3I6OmFkZEVsZW1Ecm9wKHVuc2lnbmVkIGVsZW1lbnRJbmRleCkgLT4g
UGFydGlhbFJlc3VsdAogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRUYWJsZVNpemUodW5zaWdu
ZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAog
ewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICBwdXNoKFR5cGVzOjpJMzIpOwogICAgIFdhc21U
YWJsZVNpemU6OmVtaXQodGhpcywgcmVzdWx0LCB0YWJsZUluZGV4KTsKIAogICAgIHJldHVybiB7
IH07CkBAIC0xNDE5LDcgKzE2NDUsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRUYWJsZVNp
emUodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLQogCiBhdXRv
IExMSW50R2VuZXJhdG9yOjphZGRUYWJsZUdyb3codW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVz
c2lvblR5cGUgZmlsbCwgRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBwdXNoKCk7CisgICAgcmVzdWx0
ID0gcHVzaChUeXBlczo6STMyKTsKICAgICBXYXNtVGFibGVHcm93OjplbWl0KHRoaXMsIHJlc3Vs
dCwgZmlsbCwgZGVsdGEsIHRhYmxlSW5kZXgpOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTE0NDcs
NyArMTY3Myw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFVucmVhY2hhYmxlKCkgLT4gUGFy
dGlhbFJlc3VsdAogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBwdXNo
KCk7CisgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6STMyKTsKICAgICBXYXNtQ3VycmVudE1lbW9y
eTo6ZW1pdCh0aGlzLCByZXN1bHQpOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTE0NjksNyArMTY5
NSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZERhdGFEcm9wKHVuc2lnbmVkIGRhdGFTZWdt
ZW50SW5kZXgpIC0+IFBhcnRpYWxSZXN1bHQKIAogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkR3Jv
d01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICByZXN1bHQgPSBwdXNo
KFR5cGVzOjpJMzIpOwogICAgIFdhc21Hcm93TWVtb3J5OjplbWl0KHRoaXMsIHJlc3VsdCwgZGVs
dGEpOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTE0ODksMTUgKzE3MTUsMzczIEBAIGF1dG8gTExJ
bnRHZW5lcmF0b3I6OmFkZE1lbW9yeUNvcHkoRXhwcmVzc2lvblR5cGUgZHN0QWRkcmVzcywgRXhw
cmVzc2lvblR5cGUgc3JjCiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFNlbGVjdChFeHByZXNz
aW9uVHlwZSBjb25kaXRpb24sIEV4cHJlc3Npb25UeXBlIG5vblplcm8sIEV4cHJlc3Npb25UeXBl
IHplcm8sIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBy
ZXN1bHQgPSBwdXNoKCk7CisgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6Vm9pZCk7IC8vIFRPRE8K
ICAgICBXYXNtU2VsZWN0OjplbWl0KHRoaXMsIHJlc3VsdCwgY29uZGl0aW9uLCBub25aZXJvLCB6
ZXJvKTsKIAogICAgIHJldHVybiB7IH07CiB9CiAKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFNp
bWRTcGxhdChTaW1kTGFuZSBsYW5lLCBFeHByZXNzaW9uVHlwZSBzY2FsYXIsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICByZXN1bHQgPSBwdXNoKFR5cGVz
OjpWMTI4KTsKKyAgICBzd2l0Y2ggKGxhbmUpIHsKKyAgICBjYXNlIFNpbWRMYW5lOjppOHgxNjoK
KyAgICAgICAgV2FzbVNpbWRTcGxhdEk4eDE2OjplbWl0KHRoaXMsIHJlc3VsdCwgc2NhbGFyKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW1kTGFuZTo6aTE2eDg6CisgICAgICAgIFdhc21T
aW1kU3BsYXRJMTZ4ODo6ZW1pdCh0aGlzLCByZXN1bHQsIHNjYWxhcik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU2ltZExhbmU6OmkzMng0OgorICAgICAgICBXYXNtU2ltZFNwbGF0STMyeDQ6
OmVtaXQodGhpcywgcmVzdWx0LCBzY2FsYXIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNp
bWRMYW5lOjppNjR4MjoKKyAgICAgICAgV2FzbVNpbWRTcGxhdEk2NHgyOjplbWl0KHRoaXMsIHJl
c3VsdCwgc2NhbGFyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW1kTGFuZTo6ZjMyeDQ6
CisgICAgICAgIFdhc21TaW1kU3BsYXRGMzJ4NDo6ZW1pdCh0aGlzLCByZXN1bHQsIHNjYWxhcik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltZExhbmU6OmY2NHgyOgorICAgICAgICBXYXNt
U2ltZFNwbGF0RjY0eDI6OmVtaXQodGhpcywgcmVzdWx0LCBzY2FsYXIpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKworICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFNp
bWRTaGlmdChTaW1kTGFuZU9wZXJhdGlvbiBvcCwgU2ltZEluZm8gaW5mbywgRXhwcmVzc2lvblR5
cGUgdiwgRXhwcmVzc2lvblR5cGUgc2hpZnQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBh
cnRpYWxSZXN1bHQKK3sKKyAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpWMTI4KTsKKyAgICBpZiAo
b3AgPT0gU2ltZExhbmVPcGVyYXRpb246OlNobCkgeworICAgICAgICBzd2l0Y2ggKGluZm8ubGFu
ZSkgeworICAgICAgICBjYXNlIFNpbWRMYW5lOjppOHgxNjoKKyAgICAgICAgICAgIFdhc21TaW1k
U2hsSTh4MTY6OmVtaXQodGhpcywgcmVzdWx0LCB2LCBzaGlmdCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTaW1kTGFuZTo6aTE2eDg6CisgICAgICAgICAgICBXYXNtU2ltZFNo
bEkxNng4OjplbWl0KHRoaXMsIHJlc3VsdCwgdiwgc2hpZnQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgU2ltZExhbmU6OmkzMng0OgorICAgICAgICAgICAgV2FzbVNpbWRTaGxJ
MzJ4NDo6ZW1pdCh0aGlzLCByZXN1bHQsIHYsIHNoaWZ0KTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFNpbWRMYW5lOjppNjR4MjoKKyAgICAgICAgICAgIFdhc21TaW1kU2hsSTY0
eDI6OmVtaXQodGhpcywgcmVzdWx0LCB2LCBzaGlmdCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQob3AgPT0gU2ltZExhbmVP
cGVyYXRpb246OlNocik7CisgICAgICAgIEFTU0VSVChpbmZvLnNpZ25Nb2RlICE9IFNpbWRTaWdu
TW9kZTo6Tm9uZSk7CisgICAgICAgIGlmIChpbmZvLnNpZ25Nb2RlID09IFNpbWRTaWduTW9kZTo6
U2lnbmVkKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGluZm8ubGFuZSkgeworICAgICAgICAgICAg
Y2FzZSBTaW1kTGFuZTo6aTh4MTY6CisgICAgICAgICAgICAgICAgV2FzbVNpbWRTaHJJOHgxNlM6
OmVtaXQodGhpcywgcmVzdWx0LCB2LCBzaGlmdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIFNpbWRMYW5lOjppMTZ4ODoKKyAgICAgICAgICAgICAgICBXYXNtU2lt
ZFNockkxNng4Uzo6ZW1pdCh0aGlzLCByZXN1bHQsIHYsIHNoaWZ0KTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU2ltZExhbmU6OmkzMng0OgorICAgICAgICAgICAg
ICAgIFdhc21TaW1kU2hySTMyeDRTOjplbWl0KHRoaXMsIHJlc3VsdCwgdiwgc2hpZnQpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTaW1kTGFuZTo6aTY0eDI6Cisg
ICAgICAgICAgICAgICAgV2FzbVNpbWRTaHJJNjR4MlM6OmVtaXQodGhpcywgcmVzdWx0LCB2LCBz
aGlmdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKGluZm8ubGFuZSkgeworICAg
ICAgICAgICAgY2FzZSBTaW1kTGFuZTo6aTh4MTY6CisgICAgICAgICAgICAgICAgV2FzbVNpbWRT
aHJJOHgxNlU6OmVtaXQodGhpcywgcmVzdWx0LCB2LCBzaGlmdCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIFNpbWRMYW5lOjppMTZ4ODoKKyAgICAgICAgICAgICAg
ICBXYXNtU2ltZFNockkxNng4VTo6ZW1pdCh0aGlzLCByZXN1bHQsIHYsIHNoaWZ0KTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU2ltZExhbmU6OmkzMng0OgorICAg
ICAgICAgICAgICAgIFdhc21TaW1kU2hySTMyeDRVOjplbWl0KHRoaXMsIHJlc3VsdCwgdiwgc2hp
ZnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTaW1kTGFuZTo6
aTY0eDI6CisgICAgICAgICAgICAgICAgV2FzbVNpbWRTaHJJNjR4MlU6OmVtaXQodGhpcywgcmVz
dWx0LCB2LCBzaGlmdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRv
IExMSW50R2VuZXJhdG9yOjphZGRTaW1kRXh0bXVsKFNpbWRMYW5lT3BlcmF0aW9uIG9wLCBTaW1k
SW5mbyBpbmZvLCBFeHByZXNzaW9uVHlwZSBsaHMsIEV4cHJlc3Npb25UeXBlIHJocywgRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAoreworICAgIEFTU0VSVChpbmZvLnNp
Z25Nb2RlICE9IFNpbWRTaWduTW9kZTo6Tm9uZSk7CisKKyAgICByZXN1bHQgPSBwdXNoKFR5cGVz
OjpWMTI4KTsKKworICAgIGF1dG8gbGhzVGVtcCA9IHB1c2goVHlwZXM6OlYxMjgpOworICAgIGF1
dG8gcmhzVGVtcCA9IHB1c2goVHlwZXM6OlYxMjgpOworCisgICAgaWYgKG9wID09IFNpbWRMYW5l
T3BlcmF0aW9uOjpFeHRtdWxMb3cpIHsKKyAgICAgICAgaWYgKGluZm8uc2lnbk1vZGUgPT0gU2lt
ZFNpZ25Nb2RlOjpTaWduZWQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoaW5mby5sYW5lKSB7Cisg
ICAgICAgICAgICBjYXNlIFNpbWRMYW5lOjppOHgxNjoKKyAgICAgICAgICAgICAgICBXYXNtU2lt
ZEV4dGVuZExvd0k4eDE2Uzo6ZW1pdCh0aGlzLCBsaHNUZW1wLCBsaHMpOworICAgICAgICAgICAg
ICAgIFdhc21TaW1kRXh0ZW5kTG93STh4MTZTOjplbWl0KHRoaXMsIHJoc1RlbXAsIHJocyk7Cisg
ICAgICAgICAgICAgICAgV2FzbVNpbWRNdWxJMTZ4ODo6ZW1pdCh0aGlzLCByZXN1bHQsIGxoc1Rl
bXAsIHJoc1RlbXApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBT
aW1kTGFuZTo6aTE2eDg6CisgICAgICAgICAgICAgICAgV2FzbVNpbWRFeHRlbmRMb3dJMTZ4OFM6
OmVtaXQodGhpcywgbGhzVGVtcCwgbGhzKTsKKyAgICAgICAgICAgICAgICBXYXNtU2ltZEV4dGVu
ZExvd0kxNng4Uzo6ZW1pdCh0aGlzLCByaHNUZW1wLCByaHMpOworICAgICAgICAgICAgICAgIFdh
c21TaW1kTXVsSTMyeDQ6OmVtaXQodGhpcywgcmVzdWx0LCBsaHNUZW1wLCByaHNUZW1wKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU2ltZExhbmU6OmkzMng0Ogor
ICAgICAgICAgICAgICAgIFdhc21TaW1kRXh0ZW5kTG93STMyeDRTOjplbWl0KHRoaXMsIGxoc1Rl
bXAsIGxocyk7CisgICAgICAgICAgICAgICAgV2FzbVNpbWRFeHRlbmRMb3dJMzJ4NFM6OmVtaXQo
dGhpcywgcmhzVGVtcCwgcmhzKTsKKyAgICAgICAgICAgICAgICBXYXNtU2ltZE11bEk2NHgyOjpl
bWl0KHRoaXMsIHJlc3VsdCwgbGhzVGVtcCwgcmhzVGVtcCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBzd2l0Y2ggKGluZm8ubGFuZSkgeworICAgICAgICAgICAgY2FzZSBTaW1kTGFuZTo6aTh4
MTY6CisgICAgICAgICAgICAgICAgV2FzbVNpbWRFeHRlbmRMb3dJOHgxNlU6OmVtaXQodGhpcywg
bGhzVGVtcCwgbGhzKTsKKyAgICAgICAgICAgICAgICBXYXNtU2ltZEV4dGVuZExvd0k4eDE2VTo6
ZW1pdCh0aGlzLCByaHNUZW1wLCByaHMpOworICAgICAgICAgICAgICAgIFdhc21TaW1kTXVsSTE2
eDg6OmVtaXQodGhpcywgcmVzdWx0LCBsaHNUZW1wLCByaHNUZW1wKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU2ltZExhbmU6OmkxNng4OgorICAgICAgICAgICAg
ICAgIFdhc21TaW1kRXh0ZW5kTG93STE2eDhVOjplbWl0KHRoaXMsIGxoc1RlbXAsIGxocyk7Cisg
ICAgICAgICAgICAgICAgV2FzbVNpbWRFeHRlbmRMb3dJMTZ4OFU6OmVtaXQodGhpcywgcmhzVGVt
cCwgcmhzKTsKKyAgICAgICAgICAgICAgICBXYXNtU2ltZE11bEkzMng0OjplbWl0KHRoaXMsIHJl
c3VsdCwgbGhzVGVtcCwgcmhzVGVtcCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIFNpbWRMYW5lOjppMzJ4NDoKKyAgICAgICAgICAgICAgICBXYXNtU2ltZEV4dGVu
ZExvd0kzMng0VTo6ZW1pdCh0aGlzLCBsaHNUZW1wLCBsaHMpOworICAgICAgICAgICAgICAgIFdh
c21TaW1kRXh0ZW5kTG93STMyeDRVOjplbWl0KHRoaXMsIHJoc1RlbXAsIHJocyk7CisgICAgICAg
ICAgICAgICAgV2FzbVNpbWRNdWxJNjR4Mjo6ZW1pdCh0aGlzLCByZXN1bHQsIGxoc1RlbXAsIHJo
c1RlbXApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGluZm8uc2lnbk1vZGUgPT0g
U2ltZFNpZ25Nb2RlOjpTaWduZWQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoaW5mby5sYW5lKSB7
CisgICAgICAgICAgICBjYXNlIFNpbWRMYW5lOjppOHgxNjoKKyAgICAgICAgICAgICAgICBXYXNt
U2ltZEV4dGVuZEhpZ2hJOHgxNlM6OmVtaXQodGhpcywgbGhzVGVtcCwgbGhzKTsKKyAgICAgICAg
ICAgICAgICBXYXNtU2ltZEV4dGVuZEhpZ2hJOHgxNlM6OmVtaXQodGhpcywgcmhzVGVtcCwgcmhz
KTsKKyAgICAgICAgICAgICAgICBXYXNtU2ltZE11bEkxNng4OjplbWl0KHRoaXMsIHJlc3VsdCwg
bGhzVGVtcCwgcmhzVGVtcCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIFNpbWRMYW5lOjppMTZ4ODoKKyAgICAgICAgICAgICAgICBXYXNtU2ltZEV4dGVuZEhpZ2hJ
MTZ4OFM6OmVtaXQodGhpcywgbGhzVGVtcCwgbGhzKTsKKyAgICAgICAgICAgICAgICBXYXNtU2lt
ZEV4dGVuZEhpZ2hJMTZ4OFM6OmVtaXQodGhpcywgcmhzVGVtcCwgcmhzKTsKKyAgICAgICAgICAg
ICAgICBXYXNtU2ltZE11bEkzMng0OjplbWl0KHRoaXMsIHJlc3VsdCwgbGhzVGVtcCwgcmhzVGVt
cCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNpbWRMYW5lOjpp
MzJ4NDoKKyAgICAgICAgICAgICAgICBXYXNtU2ltZEV4dGVuZEhpZ2hJMzJ4NFM6OmVtaXQodGhp
cywgbGhzVGVtcCwgbGhzKTsKKyAgICAgICAgICAgICAgICBXYXNtU2ltZEV4dGVuZEhpZ2hJMzJ4
NFM6OmVtaXQodGhpcywgcmhzVGVtcCwgcmhzKTsKKyAgICAgICAgICAgICAgICBXYXNtU2ltZE11
bEk2NHgyOjplbWl0KHRoaXMsIHJlc3VsdCwgbGhzVGVtcCwgcmhzVGVtcCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBzd2l0Y2ggKGluZm8ubGFuZSkgeworICAgICAgICAgICAgY2FzZSBTaW1k
TGFuZTo6aTh4MTY6CisgICAgICAgICAgICAgICAgV2FzbVNpbWRFeHRlbmRIaWdoSTh4MTZVOjpl
bWl0KHRoaXMsIGxoc1RlbXAsIGxocyk7CisgICAgICAgICAgICAgICAgV2FzbVNpbWRFeHRlbmRI
aWdoSTh4MTZVOjplbWl0KHRoaXMsIHJoc1RlbXAsIHJocyk7CisgICAgICAgICAgICAgICAgV2Fz
bVNpbWRNdWxJMTZ4ODo6ZW1pdCh0aGlzLCByZXN1bHQsIGxoc1RlbXAsIHJoc1RlbXApOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTaW1kTGFuZTo6aTE2eDg6Cisg
ICAgICAgICAgICAgICAgV2FzbVNpbWRFeHRlbmRIaWdoSTE2eDhVOjplbWl0KHRoaXMsIGxoc1Rl
bXAsIGxocyk7CisgICAgICAgICAgICAgICAgV2FzbVNpbWRFeHRlbmRIaWdoSTE2eDhVOjplbWl0
KHRoaXMsIHJoc1RlbXAsIHJocyk7CisgICAgICAgICAgICAgICAgV2FzbVNpbWRNdWxJMzJ4NDo6
ZW1pdCh0aGlzLCByZXN1bHQsIGxoc1RlbXAsIHJoc1RlbXApOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBTaW1kTGFuZTo6aTMyeDQ6CisgICAgICAgICAgICAgICAg
V2FzbVNpbWRFeHRlbmRIaWdoSTMyeDRVOjplbWl0KHRoaXMsIGxoc1RlbXAsIGxocyk7CisgICAg
ICAgICAgICAgICAgV2FzbVNpbWRFeHRlbmRIaWdoSTMyeDRVOjplbWl0KHRoaXMsIHJoc1RlbXAs
IHJocyk7CisgICAgICAgICAgICAgICAgV2FzbVNpbWRNdWxJNjR4Mjo6ZW1pdCh0aGlzLCByZXN1
bHQsIGxoc1RlbXAsIHJoc1RlbXApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gUmVtb3ZlIGxoc1Rl
bXAvcmhzVGVtcAorICAgIGRpZFBvcFZhbHVlRnJvbVN0YWNrKFR5cGVzOjpWMTI4KTsKKyAgICBk
aWRQb3BWYWx1ZUZyb21TdGFjayhUeXBlczo6VjEyOCk7CisKKyAgICByZXR1cm4geyB9OworfQor
CithdXRvIExMSW50R2VuZXJhdG9yOjphZGRTaW1kTG9hZChFeHByZXNzaW9uVHlwZSBwb2ludGVy
LCB1aW50MzJfdCBvZmZzZXQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1
bHQKK3sKKyAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpWMTI4KTsKKyAgICBXYXNtU2ltZExvYWQ6
OmVtaXQodGhpcywgcmVzdWx0LCBwb2ludGVyLCBvZmZzZXQpOworICAgIHJldHVybiB7IH07Cit9
CisKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFNpbWRTdG9yZShFeHByZXNzaW9uVHlwZSB2YWx1
ZSwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgb2Zmc2V0KSAtPiBQYXJ0aWFsUmVz
dWx0Cit7CisgICAgV2FzbVNpbWRTdG9yZTo6ZW1pdCh0aGlzLCBwb2ludGVyLCB2YWx1ZSwgb2Zm
c2V0KTsKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIExMSW50R2VuZXJhdG9yOjphZGRTaW1k
U2h1ZmZsZSh2MTI4X3QgaW1tLCBFeHByZXNzaW9uVHlwZSBhLCBFeHByZXNzaW9uVHlwZSBiLCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgcmVzdWx0ID0g
cHVzaChUeXBlczo6VjEyOCk7CisgICAgV2FzbVNpbWRTaHVmZmxlSTE2eDg6OmVtaXQodGhpcywg
cmVzdWx0LCBhLCBiLCBpbW0udTY0eDJbMF0sIGltbS51NjR4MlsxXSk7CisgICAgcmV0dXJuIHsg
fTsKK30KKworYXV0byBMTEludEdlbmVyYXRvcjo6YWRkU2ltZExvYWRTcGxhdChTaW1kTGFuZU9w
ZXJhdGlvbiBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgb2Zmc2V0LCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgcmVzdWx0ID0gcHVz
aChUeXBlczo6VjEyOCk7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgU2ltZExhbmVPcGVy
YXRpb246OkxvYWRTcGxhdDg6CisgICAgICAgIFdhc21TaW1kTG9hZFNwbGF0ODo6ZW1pdCh0aGlz
LCByZXN1bHQsIHBvaW50ZXIsIG9mZnNldCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lt
ZExhbmVPcGVyYXRpb246OkxvYWRTcGxhdDE2OgorICAgICAgICBXYXNtU2ltZExvYWRTcGxhdDE2
OjplbWl0KHRoaXMsIHJlc3VsdCwgcG9pbnRlciwgb2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9hZFNwbGF0MzI6CisgICAgICAgIFdhc21TaW1k
TG9hZFNwbGF0MzI6OmVtaXQodGhpcywgcmVzdWx0LCBwb2ludGVyLCBvZmZzZXQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkU3BsYXQ2NDoKKyAgICAg
ICAgV2FzbVNpbWRMb2FkU3BsYXQ2NDo6ZW1pdCh0aGlzLCByZXN1bHQsIHBvaW50ZXIsIG9mZnNl
dCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKworYXV0byBMTElu
dEdlbmVyYXRvcjo6YWRkU2ltZExvYWRMYW5lKFNpbWRMYW5lT3BlcmF0aW9uIG9wLCBFeHByZXNz
aW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSB2ZWN0b3IsIHVpbnQzMl90IG9mZnNldCwg
dWludDhfdCBsYW5lSW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1
bHQKK3sKKyAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpWMTI4KTsKKworICAgIHN3aXRjaCAob3Ap
IHsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkTGFuZTg6CisgICAgICAgIFdhc21T
aW1kTG9hZExhbmU4OjplbWl0KHRoaXMsIHJlc3VsdCwgcG9pbnRlciwgdmVjdG9yLCBvZmZzZXQs
IGxhbmVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltZExhbmVPcGVyYXRpb246
OkxvYWRMYW5lMTY6CisgICAgICAgIFdhc21TaW1kTG9hZExhbmUxNjo6ZW1pdCh0aGlzLCByZXN1
bHQsIHBvaW50ZXIsIHZlY3Rvciwgb2Zmc2V0LCBsYW5lSW5kZXgpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkTGFuZTMyOgorICAgICAgICBXYXNtU2lt
ZExvYWRMYW5lMzI6OmVtaXQodGhpcywgcmVzdWx0LCBwb2ludGVyLCB2ZWN0b3IsIG9mZnNldCwg
bGFuZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6
TG9hZExhbmU2NDoKKyAgICAgICAgV2FzbVNpbWRMb2FkTGFuZTY0OjplbWl0KHRoaXMsIHJlc3Vs
dCwgcG9pbnRlciwgdmVjdG9yLCBvZmZzZXQsIGxhbmVJbmRleCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorCisgICAgcmV0dXJuIHsgfTsKK30KKworYXV0byBMTEludEdlbmVyYXRvcjo6YWRkU2ltZFN0
b3JlTGFuZShTaW1kTGFuZU9wZXJhdGlvbiBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhw
cmVzc2lvblR5cGUgdmVjdG9yLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQ4X3QgbGFuZUluZGV4KSAt
PiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgU2ltZExhbmVP
cGVyYXRpb246OlN0b3JlTGFuZTg6CisgICAgICAgIFdhc21TaW1kU3RvcmVMYW5lODo6ZW1pdCh0
aGlzLCBwb2ludGVyLCB2ZWN0b3IsIG9mZnNldCwgbGFuZUluZGV4KTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6U3RvcmVMYW5lMTY6CisgICAgICAgIFdhc21T
aW1kU3RvcmVMYW5lMTY6OmVtaXQodGhpcywgcG9pbnRlciwgdmVjdG9yLCBvZmZzZXQsIGxhbmVJ
bmRleCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltZExhbmVPcGVyYXRpb246OlN0b3Jl
TGFuZTMyOgorICAgICAgICBXYXNtU2ltZFN0b3JlTGFuZTMyOjplbWl0KHRoaXMsIHBvaW50ZXIs
IHZlY3Rvciwgb2Zmc2V0LCBsYW5lSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNp
bWRMYW5lT3BlcmF0aW9uOjpTdG9yZUxhbmU2NDoKKyAgICAgICAgV2FzbVNpbWRTdG9yZUxhbmU2
NDo6ZW1pdCh0aGlzLCBwb2ludGVyLCB2ZWN0b3IsIG9mZnNldCwgbGFuZUluZGV4KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIExMSW50R2VuZXJhdG9y
OjphZGRTaW1kTG9hZEV4dGVuZChTaW1kTGFuZU9wZXJhdGlvbiBvcCwgRXhwcmVzc2lvblR5cGUg
cG9pbnRlciwgdWludDMyX3Qgb2Zmc2V0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0
aWFsUmVzdWx0Cit7CisgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6VjEyOCk7CisKKyAgICBzd2l0
Y2ggKG9wKSB7CisgICAgY2FzZSBTaW1kTGFuZU9wZXJhdGlvbjo6TG9hZEV4dGVuZDhTOgorICAg
ICAgICBXYXNtU2ltZExvYWRFeHRlbmQ4Uzo6ZW1pdCh0aGlzLCByZXN1bHQsIHBvaW50ZXIsIG9m
ZnNldCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltZExhbmVPcGVyYXRpb246OkxvYWRF
eHRlbmQ4VToKKyAgICAgICAgV2FzbVNpbWRMb2FkRXh0ZW5kOFU6OmVtaXQodGhpcywgcmVzdWx0
LCBwb2ludGVyLCBvZmZzZXQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbWRMYW5lT3Bl
cmF0aW9uOjpMb2FkRXh0ZW5kMTZTOgorICAgICAgICBXYXNtU2ltZExvYWRFeHRlbmQxNlM6OmVt
aXQodGhpcywgcmVzdWx0LCBwb2ludGVyLCBvZmZzZXQpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkRXh0ZW5kMTZVOgorICAgICAgICBXYXNtU2ltZExv
YWRFeHRlbmQxNlU6OmVtaXQodGhpcywgcmVzdWx0LCBwb2ludGVyLCBvZmZzZXQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2FkRXh0ZW5kMzJTOgorICAg
ICAgICBXYXNtU2ltZExvYWRFeHRlbmQzMlM6OmVtaXQodGhpcywgcmVzdWx0LCBwb2ludGVyLCBv
ZmZzZXQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbWRMYW5lT3BlcmF0aW9uOjpMb2Fk
RXh0ZW5kMzJVOgorICAgICAgICBXYXNtU2ltZExvYWRFeHRlbmQzMlU6OmVtaXQodGhpcywgcmVz
dWx0LCBwb2ludGVyLCBvZmZzZXQpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHJldHVybiB7
IH07Cit9CisKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFNpbWRMb2FkUGFkKFNpbWRMYW5lT3Bl
cmF0aW9uIG9wLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJfdCBvZmZzZXQsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICByZXN1bHQgPSBwdXNo
KFR5cGVzOjpWMTI4KTsKKworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIFNpbWRMYW5lT3Bl
cmF0aW9uOjpMb2FkUGFkMzI6CisgICAgICAgIFdhc21TaW1kTG9hZFBhZDMyOjplbWl0KHRoaXMs
IHJlc3VsdCwgcG9pbnRlciwgb2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW1k
TGFuZU9wZXJhdGlvbjo6TG9hZFBhZDY0OgorICAgICAgICBXYXNtU2ltZExvYWRQYWQ2NDo6ZW1p
dCh0aGlzLCByZXN1bHQsIHBvaW50ZXIsIG9mZnNldCk7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisg
ICAgcmV0dXJuIHsgfTsKK30KKwogYXV0byBMTEludEdlbmVyYXRvcjo6bG9hZChMb2FkT3BUeXBl
IG9wLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0LCB1aW50
MzJfdCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBwdXNoKCk7Cisg
ICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhTOgorICAgIGNh
c2UgTG9hZE9wVHlwZTo6STMyTG9hZDhVOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDE2
UzoKKyAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQxNlU6CisgICAgY2FzZSBMb2FkT3BUeXBl
OjpJMzJMb2FkOgorICAgICAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpJMzIpOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDhTOgorICAgIGNhc2UgTG9hZE9w
VHlwZTo6STY0TG9hZDhVOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDE2UzoKKyAgICBj
YXNlIExvYWRPcFR5cGU6Okk2NExvYWQxNlU6CisgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2Fk
MzJVOgorICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDMyUzoKKyAgICBjYXNlIExvYWRPcFR5
cGU6Okk2NExvYWQ6CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6Okk2NCk7CisgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgCisgICAgY2FzZSBMb2FkT3BUeXBlOjpGMzJMb2FkOgorICAg
ICAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpGMzIpOworICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIAorICAgIGNhc2UgTG9hZE9wVHlwZTo6RjY0TG9hZDoKKyAgICAgICAgcmVzdWx0ID0gcHVz
aChUeXBlczo6RjY0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgc3dpdGNoIChvcCkg
ewogICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhTOgogICAgICAgICBXYXNtSTMyTG9hZDhT
OjplbWl0KHRoaXMsIHJlc3VsdCwgcG9pbnRlciwgb2Zmc2V0KTsKQEAgLTE1NzQsNyArMjE1OCwy
MiBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpzdG9yZShTdG9yZU9wVHlwZSBvcCwgRXhwcmVzc2lv
blR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cAogCiBhdXRvIExMSW50R2VuZXJhdG9yOjphdG9t
aWNMb2FkKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgdWludDMyX3Qgb2Zmc2V0KSAtPiBQYXJ0aWFsUmVzdWx0
CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIEV4
dEF0b21pY09wVHlwZTo6STMyQXRvbWljTG9hZDhVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBl
OjpJMzJBdG9taWNMb2FkMTZVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNM
b2FkOgorICAgICAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpJMzIpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljTG9hZDhVOgorICAgIGNhc2UgRXh0
QXRvbWljT3BUeXBlOjpJNjRBdG9taWNMb2FkMTZVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBl
OjpJNjRBdG9taWNMb2FkMzJVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNM
b2FkOgorICAgICAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpJNjQpOworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKyAgICAKICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okkz
MkF0b21pY0xvYWQ4VToKICAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljTG9hZDhV
OgpAQCAtMTYwMCw3ICsyMTk5LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWljTG9hZChF
eHRBdG9taWNPcFR5cGUgb3AsIFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIKIAogYXV0byBM
TEludEdlbmVyYXRvcjo6YXRvbWljU3RvcmUoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlLCBFeHBy
ZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgdWludDMyX3Qgb2Zmc2V0
KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgYXV0byByZXN1bHQgPSBwdXNoKCk7CisgICAgYXV0
byByZXN1bHQgPSBwdXNoKFR5cGVzOjpJNjQpOwogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNl
IEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljU3RvcmU4VToKICAgICBjYXNlIEV4dEF0b21pY09w
VHlwZTo6STY0QXRvbWljU3RvcmU4VToKQEAgLTE2MjEsMTMgKzIyMjAsNjYgQEAgYXV0byBMTElu
dEdlbmVyYXRvcjo6YXRvbWljU3RvcmUoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlLCBFeHByZXNz
aW9uVHlwZSBwb2ludGUKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiAKLSAgICBkaWRQb3BWYWx1ZUZyb21TdGFjaygpOyAvLyBJZ25vcmUgdGhlIHJlc3VsdC4K
KyAgICBkaWRQb3BWYWx1ZUZyb21TdGFjayhUeXBlczo6STY0KTsgLy8gSWdub3JlIHRoZSByZXN1
bHQuCiAgICAgcmV0dXJuIHsgfTsKIH0KIAogYXV0byBMTEludEdlbmVyYXRvcjo6YXRvbWljQmlu
YXJ5Uk1XKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwg
RXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQsIHVpbnQzMl90IG9m
ZnNldCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICBzd2l0
Y2ggKG9wKSB7CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1JtdzhBZGRVOgor
ICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXcxNkFkZFU6CisgICAgY2FzZSBF
eHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1Jtd0FkZDoKKyAgICBjYXNlIEV4dEF0b21pY09wVHlw
ZTo6STMyQXRvbWljUm13OFN1YlU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21p
Y1JtdzE2U3ViVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13U3ViOgor
ICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXc4QW5kVToKKyAgICBjYXNlIEV4
dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13MTZBbmRVOgorICAgIGNhc2UgRXh0QXRvbWljT3BU
eXBlOjpJMzJBdG9taWNSbXdBbmQ6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21p
Y1JtdzhPclU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1JtdzE2T3JVOgor
ICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXdPcjoKKyAgICBjYXNlIEV4dEF0
b21pY09wVHlwZTo6STMyQXRvbWljUm13OFhvclU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6
OkkzMkF0b21pY1JtdzE2WG9yVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWlj
Um13WG9yOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJMzJBdG9taWNSbXc4WGNoZ1U6Cisg
ICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1JtdzE2WGNoZ1U6CisgICAgY2FzZSBF
eHRBdG9taWNPcFR5cGU6OkkzMkF0b21pY1Jtd1hjaGc6CisgICAgICAgIHJlc3VsdCA9IHB1c2go
VHlwZXM6OkkzMik7CisgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgY2FzZSBFeHRB
dG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzhBZGRVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBl
OjpJNjRBdG9taWNSbXcxNkFkZFU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21p
Y1JtdzMyQWRkVToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13QWRkOgor
ICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXc4U3ViVToKKyAgICBjYXNlIEV4
dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13MTZTdWJVOgorICAgIGNhc2UgRXh0QXRvbWljT3BU
eXBlOjpJNjRBdG9taWNSbXczMlN1YlU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0
b21pY1Jtd1N1YjoKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13OEFuZFU6
CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzE2QW5kVToKKyAgICBjYXNl
IEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13MzJBbmRVOgorICAgIGNhc2UgRXh0QXRvbWlj
T3BUeXBlOjpJNjRBdG9taWNSbXdBbmQ6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0
b21pY1JtdzhPclU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzE2T3JV
OgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXczMk9yVToKKyAgICBjYXNl
IEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13T3I6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5
cGU6Okk2NEF0b21pY1JtdzhYb3JVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9t
aWNSbXcxNlhvclU6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzMyWG9y
VToKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13WG9yOgorICAgIGNhc2Ug
RXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXc4WGNoZ1U6CisgICAgY2FzZSBFeHRBdG9taWNP
cFR5cGU6Okk2NEF0b21pY1JtdzE2WGNoZ1U6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2
NEF0b21pY1JtdzMyWGNoZ1U6CisgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1Jt
d1hjaGc6CisgICAgICAgIHJlc3VsdCA9IHB1c2goVHlwZXM6Okk2NCk7CisgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAogICAgIHN3aXRjaCAob3Ap
IHsKICAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13OEFkZFU6CiAgICAgY2Fz
ZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21pY1JtdzhBZGRVOgpAQCAtMTcyOSw3ICsyMzgxLDIz
IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmF0b21pY0JpbmFyeVJNVyhFeHRBdG9taWNPcFR5cGUg
b3AsIFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvCiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmF0b21p
Y0NvbXBhcmVFeGNoYW5nZShFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUsIEV4cHJlc3Npb25UeXBl
IHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIGV4cGVjdGVkLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgdWludDMyX3Qgb2Zmc2V0KSAtPiBQYXJ0aWFsUmVzdWx0
CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIEV4
dEF0b21pY09wVHlwZTo6STMyQXRvbWljUm13OENtcHhjaGdVOgorICAgIGNhc2UgRXh0QXRvbWlj
T3BUeXBlOjpJMzJBdG9taWNSbXcxNkNtcHhjaGdVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBl
OjpJMzJBdG9taWNSbXdDbXB4Y2hnOgorICAgICAgICByZXN1bHQgPSBwdXNoKFR5cGVzOjpJMzIp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4dEF0b21pY09wVHlwZTo6STY0QXRvbWljUm13
OENtcHhjaGdVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXcxNkNtcHhj
aGdVOgorICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXczMkNtcHhjaGdVOgor
ICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJNjRBdG9taWNSbXdDbXB4Y2hnOgorICAgICAgICBy
ZXN1bHQgPSBwdXNoKFR5cGVzOjpJNjQpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgCiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgRXh0QXRvbWljT3BUeXBlOjpJ
MzJBdG9taWNSbXc4Q21weGNoZ1U6CiAgICAgY2FzZSBFeHRBdG9taWNPcFR5cGU6Okk2NEF0b21p
Y1JtdzhDbXB4Y2hnVToKQEAgLTE3NTYsNyArMjQyNCw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6
OmF0b21pY0NvbXBhcmVFeGNoYW5nZShFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGUsIEV4cHJlc3Np
b25UCiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmF0b21pY1dhaXQoRXh0QXRvbWljT3BUeXBlIG9w
LCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lv
blR5cGUgdGltZW91dCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgdWludDMyX3Qgb2Zmc2V0KSAt
PiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gcHVzaCgpOworICAgIHJlc3VsdCA9IHB1
c2goVHlwZXM6OkkzMik7CiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgRXh0QXRvbWljT3BU
eXBlOjpNZW1vcnlBdG9taWNXYWl0MzI6CiAgICAgICAgIFdhc21NZW1vcnlBdG9taWNXYWl0MzI6
OmVtaXQodGhpcywgcmVzdWx0LCBwb2ludGVyLCBvZmZzZXQsIHZhbHVlLCB0aW1lb3V0KTsKQEAg
LTE3NzMsNyArMjQ0MSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmF0b21pY1dhaXQoRXh0QXRv
bWljT3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByCiAKIGF1dG8gTExJbnRH
ZW5lcmF0b3I6OmF0b21pY05vdGlmeShFeHRBdG9taWNPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBl
IHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIGNvdW50LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0LCB1
aW50MzJfdCBvZmZzZXQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBwdXNoKCk7
CisgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6STMyKTsKICAgICBSRUxFQVNFX0FTU0VSVChvcCA9
PSBFeHRBdG9taWNPcFR5cGU6Ok1lbW9yeUF0b21pY05vdGlmeSk7CiAgICAgV2FzbU1lbW9yeUF0
b21pY05vdGlmeTo6ZW1pdCh0aGlzLCByZXN1bHQsIHBvaW50ZXIsIG9mZnNldCwgY291bnQpOwog
ICAgIHJldHVybiB7IH07CkBAIC0xNzg3LDcgKzI0NTUsMjQgQEAgYXV0byBMTEludEdlbmVyYXRv
cjo6YXRvbWljRmVuY2UoRXh0QXRvbWljT3BUeXBlLCB1aW50OF90KSAtPiBQYXJ0aWFsUmVzdWx0
CiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OnRydW5jU2F0dXJhdGVkKEV4dDFPcFR5cGUgb3AsIEV4
cHJlc3Npb25UeXBlIG9wZXJhbmQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQsIFR5cGUsIFR5cGUp
IC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBwdXNoKCk7CisgICAgc3dpdGNoIChv
cCkgeworICAgIGNhc2UgRXh0MU9wVHlwZTo6STMyVHJ1bmNTYXRGMzJTOgorICAgIGNhc2UgRXh0
MU9wVHlwZTo6STMyVHJ1bmNTYXRGMzJVOgorICAgIGNhc2UgRXh0MU9wVHlwZTo6STMyVHJ1bmNT
YXRGNjRTOgorICAgIGNhc2UgRXh0MU9wVHlwZTo6STMyVHJ1bmNTYXRGNjRVOgorICAgICAgICBy
ZXN1bHQgPSBwdXNoKFR5cGVzOjpJMzIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4dDFP
cFR5cGU6Okk2NFRydW5jU2F0RjMyUzoKKyAgICBjYXNlIEV4dDFPcFR5cGU6Okk2NFRydW5jU2F0
RjMyVToKKyAgICBjYXNlIEV4dDFPcFR5cGU6Okk2NFRydW5jU2F0RjY0UzoKKyAgICBjYXNlIEV4
dDFPcFR5cGU6Okk2NFRydW5jU2F0RjY0VToKKyAgICAgICAgcmVzdWx0ID0gcHVzaChUeXBlczo6
STY0KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAogICAgIHN3aXRj
aCAob3ApIHsKICAgICBjYXNlIEV4dDFPcFR5cGU6OkkzMlRydW5jU2F0RjMyUzoKICAgICAgICAg
V2FzbUkzMlRydW5jU2F0RjMyUzo6ZW1pdCh0aGlzLCByZXN1bHQsIG9wZXJhbmQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oCmluZGV4IGVkMDBkOWEwYTQyYi4uODBjMWM4
NjJlZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oCkBAIC00NSw2
ICs0NSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKK3N0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IE1BWF9TSU1EX0FSR1VNRU5UUyA9IDI7CitzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBNQVhfU0lNRF9JTU1FRElBVEVTID0gMjsKKwogbmFtZXNwYWNlIEZhaWx1cmVIZWxw
ZXIgewogLy8gRklYTUUgV2Ugc2hvdWxkIG1vdmUgdGhpcyB0byBtYWtlU3RyaW5nLiBJdCdzIGlu
IGl0cyBvd24gbmFtZXNwYWNlIHRvIGVuYWJsZSBDKysgQXJndW1lbnQgRGVwZW5kZW50IExvb2t1
cCDDoCBsYSBzdGQ6OnN3YXA6IHVzZXIgY29kZSBjYW4gZGVibGFyZSBpdHMgb3duICJib3hGYWls
dXJlIiBhbmQgdGhlIGZhaWwoKSBoZWxwZXIgd2lsbCBmaW5kIGl0LgogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KQEAgLTc3LDYgKzgwLDggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgV0FSTl9VTlVTRURf
UkVUVVJOIHBhcnNlVUludDgodWludDhfdCYpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJO
IHBhcnNlVUludDMyKHVpbnQzMl90Jik7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFy
c2VVSW50NjQodWludDY0X3QmKTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUlt
bUJ5dGVBcnJheTE2KHYxMjhfdCYpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIHBhcnNlSW1tTGFuZUlkeCh1aW50OF90IGxhbmVDb3VudCwgdWludDhfdCYpOwogICAgIGJv
b2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVmFyVUludDMyKHVpbnQzMl90Jik7CiAgICAgYm9v
bCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VWYXJVSW50NjQodWludDY0X3QmKTsKIApAQCAtMjIz
LDYgKzIyOCwyNSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFy
c2VVSW50NjQodWludDY0X3QmIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordGVtcGxh
dGU8dHlwZW5hbWUgU3VjY2Vzc1R5cGU+CitBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nl
c3NUeXBlPjo6cGFyc2VJbW1CeXRlQXJyYXkxNih2MTI4X3QmIHJlc3VsdCkKK3sKKyAgICBpZiAo
bGVuZ3RoKCkgPCAxNiB8fCBtX29mZnNldCA+IGxlbmd0aCgpIC0gMTYpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBzdGQ6OmNvcHkoc291cmNlKCkgKyBtX29mZnNldCwgc291cmNlKCkgKyBt
X29mZnNldCArIDE2LCByZXN1bHQudTh4MTYpOworICAgIG1fb2Zmc2V0ICs9IDE2OworICAgIHJl
dHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdWNjZXNzVHlwZT4KK0FMV0FZU19J
TkxJTkUgdHlwZW5hbWUgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6UGFydGlhbFJlc3VsdCBQYXJzZXI8
U3VjY2Vzc1R5cGU+OjpwYXJzZUltbUxhbmVJZHgodWludDhfdCBsYW5lQ291bnQsIHVpbnQ4X3Qm
IHJlc3VsdCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChsYW5lQ291bnQgPT0gMiB8fCBsYW5lQ291
bnQgPT0gNCB8fCBsYW5lQ291bnQgPT0gOCB8fCBsYW5lQ291bnQgPT0gMTYgfHwgbGFuZUNvdW50
ID09IDMyKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KHJlc3VsdCksICJD
b3VsZCBub3QgcGFyc2UgdGhlIGxhbmUgaW5kZXggaW1tZWRpYXRlIGJ5dGUuIik7CisgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRihyZXN1bHQgPj0gbGFuZUNvdW50LCAiTGFuZSBpbmRleCBpbW1lZGlh
dGUgaXMgdG9vIGxhcmdlLCBzYXcgIiwgbGFuZUNvdW50LCAiLCBleHBlY3RlZCBhbiBJbW1MYW5l
SWR4IiwgbGFuZUNvdW50KTsKKyAgICByZXR1cm4geyB9OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBTdWNjZXNzVHlwZT4KIEFMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+Ojpw
YXJzZVVJbnQ4KHVpbnQ4X3QmIHJlc3VsdCkKIHsKQEAgLTI3NCw3ICsyOTgsNyBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYXJVSW50MSh1aW50OF90JiBy
ZXN1bHQpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN1Y2Nlc3NUeXBlPgotQUxXQVlTX0lOTElO
RSB0eXBlbmFtZSBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpQYXJ0aWFsUmVzdWx0IFBhcnNlcjxTdWNj
ZXNzVHlwZT46OnBhcnNlQmxvY2tTaWduYXR1cmUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGlu
Zm8sIEJsb2NrU2lnbmF0dXJlJiByZXN1bHQpCitBTFdBWVNfSU5MSU5FIGF1dG8gUGFyc2VyPFN1
Y2Nlc3NUeXBlPjo6cGFyc2VCbG9ja1NpZ25hdHVyZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYg
aW5mbywgQmxvY2tTaWduYXR1cmUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIGlu
dDhfdCB0eXBlS2luZDsKICAgICBpZiAocGVla0ludDcodHlwZUtpbmQpICYmIGlzVmFsaWRUeXBl
S2luZCh0eXBlS2luZCkpIHsKQEAgLTMzMSw3ICszNTUsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYWx1ZVR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRp
b24mCiAgICAgVHlwZUtpbmQgdHlwZUtpbmQgPSBzdGF0aWNfY2FzdDxUeXBlS2luZD4oa2luZCk7
CiAgICAgYm9vbCBpc051bGxhYmxlID0gdHJ1ZTsKICAgICBTaWduYXR1cmVJbmRleCBzaWdJbmRl
eCA9IDA7Ci0KKyAgICAKICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0
aW9uUmVmZXJlbmNlcygpICYmICh0eXBlS2luZCA9PSBUeXBlS2luZDo6RnVuY3JlZiB8fCB0eXBl
S2luZCA9PSBUeXBlS2luZDo6RXh0ZXJucmVmKSkgewogICAgICAgICBzaWdJbmRleCA9IHN0YXRp
Y19jYXN0PFNpZ25hdHVyZUluZGV4Pih0eXBlS2luZCk7CiAgICAgICAgIHR5cGVLaW5kID0gVHlw
ZUtpbmQ6OlJlZk51bGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtU2lnbmF0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1
cmUuY3BwCmluZGV4IGY5YTU2MWI4NTBmYy4uMDgxM2Q0NjAzYThjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtOTYsNyArOTYsNyBAQCBSZWZQ
dHI8U2lnbmF0dXJlPiBTaWduYXR1cmU6OnRyeUNyZWF0ZShTaWduYXR1cmVBcmdDb3VudCByZXR1
cm5Db3VudCwgU2lnbmF0dXJlQQogCiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6U2lnbmF0dXJlSW5m
b3JtYXRpb24oKQogewotI2RlZmluZSBNQUtFX1RIVU5LX1NJR05BVFVSRSh0eXBlLCBlbmMsIHN0
ciwgdmFsLCBfKSAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBNQUtFX1RIVU5LX1NJ
R05BVFVSRSh0eXBlLCBlbmMsIHN0ciwgdmFsLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChUeXBlS2luZDo6dHlwZSAhPSBUeXBl
S2luZDo6Vm9pZCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBS
ZWZQdHI8U2lnbmF0dXJlPiBzaWcgPSBTaWduYXR1cmU6OnRyeUNyZWF0ZSgxLCAwKTsgICAgICAg
ICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGh1bmtz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaHVua3MuY3BwCmluZGV4IGZl
YzJhMTM3NzliZi4uODVlYjJjOWRjOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtVGh1bmtzLmNwcApAQCAtNjUsNyArNjUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHRocm93U3RhY2tPdmVyZmxvd0Zyb21XYXNtVGh1bmtHZW5lcmF0b3IoYwog
ewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpbnQzMl90IHN0YWNrU3BhY2UgPSBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBSZWdpc3RlclNldDo6
Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkgKiBzaXplb2YoUmVn
aXN0ZXIpKTsKKyAgICBpbnQzMl90IHN0YWNrU3BhY2UgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBSZWdpc3RlclNldDEyODo6Y2FsbGVlU2F2ZVJlZ2lz
dGVycygpLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkgKiBzaXplb2YoUmVnaXN0ZXIpKTsKICAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YWNrU3BhY2UpIDwgT3B0aW9uczo6c29mdFJl
c2VydmVkWm9uZVNpemUoKSk7CiAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMigtc3RhY2tTcGFjZSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBNYWNyb0Fzc2Vt
Ymxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihFeGNlcHRpb25UeXBlOjpTdGFja092
ZXJmbG93KSksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CkBAIC04NCwxNSArODQsMTUgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0cmlnZ2VyT01HRW50cnlUaWVyVXBU
aHVua0dlbmVyYXRvcihjb25zdAogICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogCiAg
ICAgY29uc3QgdW5zaWduZWQgZXh0cmFQYWRkaW5nQnl0ZXMgPSAwOwotICAgIFJlZ2lzdGVyU2V0
IHJlZ2lzdGVyc1RvU3BpbGwgPSBSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCk7Ci0gICAgcmVn
aXN0ZXJzVG9TcGlsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JD
Q2FsbCgpKTsKKyAgICBSZWdpc3RlclNldDEyOCByZWdpc3RlcnNUb1NwaWxsID0gUmVnaXN0ZXJT
ZXQxMjg6OnVzZTEyOEJpdHMoUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lzdGVycygpKTsKKyAgICByZWdp
c3RlcnNUb1NwaWxsLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQxMjg6OnJlZ2lzdGVyc1RvTm90U2F2ZUZv
ckNDYWxsKCkpOwogICAgIHVuc2lnbmVkIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3Rl
clByZXNlcnZhdGlvbiA9IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbChqaXQsIHJlZ2lzdGVyc1RvU3BpbGwsIGV4dHJhUGFkZGluZ0J5dGVz
KTsKIAogICAgIGppdC5sb2FkV2FzbUNvbnRleHRJbnN0YW5jZShHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwogICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5j
dGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbldhc21UcmlnZ2VyVGllclVwTm93KSksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6YXJndW1lbnRHUFIy
LCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0
b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChqaXQsIHJlZ2lzdGVyc1RvU3BpbGwsIFJlZ2lz
dGVyU2V0KCksIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiwg
ZXh0cmFQYWRkaW5nQnl0ZXMpOworICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9y
ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoaml0LCByZWdpc3RlcnNUb1NwaWxsLCB7IH0sIG51
bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiwgZXh0cmFQYWRkaW5n
Qnl0ZXMpOwogCiAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVTaW1kT3Bj
b2Rlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlU2ltZE9wY29kZXMu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ODYzYzQ5Y2Y0M2IK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVNp
bWRPcGNvZGVzLnB5CkBAIC0wLDAgKzEsMjU1IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisK
KyMgQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFRoaXMgc2NyaXB0IGdlbmVy
YXRlcyB0aGUgb3Bjb2RlIGRhdGEgZm9yIHNpbWQgb3Bjb2RlcworIyBjc3Ygc291cmNlOiBodHRw
czovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC8xbUl0QVBERHlVRDk3UWR0Qjl5cDQ0
dXRUUDl2UlJTOVhNdjBZWl9lUHo5cy9lZGl0P3VzcD1zaGFyaW5nCisKK2ltcG9ydCBjc3YKK2lt
cG9ydCBqc29uCitpbXBvcnQgcmUKKwordmVyYm9zZSA9IEZhbHNlCisKK2RlZiB0b0NwcChuYW1l
KToKKyAgICBjYW1lbENhc2UgPSByZS5zdWIocicoW15hLXowLTldLiknLCBsYW1iZGEgYzogYy5n
cm91cCgwKVsxXS51cHBlcigpLCBuYW1lKQorICAgIENhbWVsQ2FzZSA9IGNhbWVsQ2FzZVs6MV0u
dXBwZXIoKSArIGNhbWVsQ2FzZVsxOl0KKyAgICByZXR1cm4gQ2FtZWxDYXNlCisKK2RlZiBjcHBU
eXBlKHR5cGUpOgorICAgIGlmIHR5cGUgPT0gImJvb2wiOgorICAgICAgICByZXR1cm4gIkkzMiIK
KyAgICBkZWYgY2FwaXRhbGl6ZVdpdGhOdW1iZXJzKHMpOgorICAgICAgICBzID0gcy5jYXBpdGFs
aXplKCkKKyAgICAgICAgbSA9IHJlLmNvbXBpbGUoIl5cZCsiKS5zZWFyY2gocykKKyAgICAgICAg
aWYgbToKKyAgICAgICAgICAgIHMgPSBzWzA6bS5zcGFuKClbMV1dICsgc1ttLnNwYW4oKVsxXTpd
LmNhcGl0YWxpemUoKQorICAgICAgICByZXR1cm4gcworICAgIHJldHVybiAiIi5qb2luKG1hcChs
YW1iZGEgeDogY2FwaXRhbGl6ZVdpdGhOdW1iZXJzKHgpLCB0eXBlLnNwbGl0KCdfJykpKQorCisK
K2RlZiBzaW1kT3Bjb2Rlcyhjc3ZEaXJlY3RvcnkpOgorICAgIG9wcyA9IHt9CisKKyAgICB3aXRo
IG9wZW4oY3N2RGlyZWN0b3J5ICsgIi9zaW1kX29wY29kZXMuY3N2IiwgJ3InKSBhcyBjc3ZmaWxl
OgorICAgICAgICByZWFkZXIgPSBjc3YuRGljdFJlYWRlcihjc3ZmaWxlKQorICAgICAgICBmb3Ig
cm93IGluIHJlYWRlcjoKKyAgICAgICAgICAgIHJlcyA9IGNvbnZlcnRSb3cocm93KQorICAgICAg
ICAgICAgaWYgcmVzOgorICAgICAgICAgICAgICAgIG9wc1tyb3dbIkluc3RydWN0aW9uIl1dID0g
cmVzCisKKyAgICBpZiB2ZXJib3NlOgorICAgICAgICBwcmludChqc29uLmR1bXBzKG9wcywgc29y
dF9rZXlzPVRydWUsIGluZGVudD00KSkKKworICAgIHJldHVybiBvcHMKKworZGVmIG1hcFNpZ25F
eHRlbmQoaXRlbSk6CisgICAgaWYgaXRlbSA9PSAiUyI6CisgICAgICAgIHJldHVybiAiU2lnbmVk
IgorICAgIGlmIGl0ZW0gPT0gIlUiOgorICAgICAgICByZXR1cm4gIlVuc2lnbmVkIgorICAgIHJl
dHVybiAiTm9uZSIKKworZGVmIGZpeHVwQ21wKHJvdyk6CisgICAgaWYgcm93WyJjYXRlZ29yeSJd
ICE9ICJzaW1kLmNtcCI6CisgICAgICAgIHJldHVybgorCisgICAgc2NhbGFyVHlwZSA9IHJvd1si
c2NhbGFyVHlwZSJdCisgICAgaXNGbG9hdGluZ1BvaW50ID0gc2NhbGFyVHlwZSA9PSAiZjY0IiBv
ciBzY2FsYXJUeXBlID09ICJmMzIiCisgICAgY29tcGFyZU9wID0gcm93WyJJbnN0cnVjdGlvbiJd
LnNwbGl0KCIuIilbLTFdCisgICAgYWlyQ29uZCA9IE5vbmUKKyAgICBiM29wID0gTm9uZQorICAg
IGlmIGlzRmxvYXRpbmdQb2ludDoKKyAgICAgICAgcm93WyJhaXJPcCJdID0gIkNvbXBhcmVGbG9h
dGluZ1BvaW50VmVjdG9yIgorICAgICAgICBhaXJDb25kID0geworICAgICAgICAgICAgImVxIjog
IkFyZzo6ZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWxBbmRPcmRlcmVkKSIs
CisgICAgICAgICAgICAibmUiOiAiQXJnOjpkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjpEb3Vi
bGVOb3RFcXVhbE9yVW5vcmRlcmVkKSIsCisgICAgICAgICAgICAibHQiOiAiQXJnOjpkb3VibGVD
b25kKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhhbkFuZE9yZGVyZWQpIiwKKyAgICAgICAg
ICAgICJndCI6ICJBcmc6OmRvdWJsZUNvbmQoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUdyZWF0ZXJU
aGFuQW5kT3JkZXJlZCkiLAorICAgICAgICAgICAgImxlIjogIkFyZzo6ZG91YmxlQ29uZChNYWNy
b0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW5PckVxdWFsQW5kT3JkZXJlZCkiLAorICAgICAgICAg
ICAgImdlIjogIkFyZzo6ZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6RG91YmxlR3JlYXRlclRo
YW5PckVxdWFsQW5kT3JkZXJlZCkiCisgICAgICAgIH0uZ2V0KGNvbXBhcmVPcCkKKworICAgICAg
ICBiM29wID0geworICAgICAgICAgICAgImVxIjogIlZlY3RvckVxdWFsIiwKKyAgICAgICAgICAg
ICJuZSI6ICJWZWN0b3JOb3RFcXVhbCIsCisgICAgICAgICAgICAibHQiOiAiVmVjdG9yTGVzc1Ro
YW4iLAorICAgICAgICAgICAgImd0IjogIlZlY3RvckdyZWF0ZXJUaGFuIiwKKyAgICAgICAgICAg
ICJsZSI6ICJWZWN0b3JMZXNzVGhhbk9yRXF1YWwiLAorICAgICAgICAgICAgImdlIjogIlZlY3Rv
ckdyZWF0ZXJUaGFuT3JFcXVhbCIKKyAgICAgICAgfS5nZXQoY29tcGFyZU9wKQorICAgIGVsc2U6
CisgICAgICAgIHJvd1siYWlyT3AiXSA9ICJDb21wYXJlSW50ZWdlclZlY3RvciIKKyAgICAgICAg
YWlyQ29uZCA9IHsKKyAgICAgICAgICAgICJlcSI6ICJBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJs
ZXI6OkVxdWFsKSIsCisgICAgICAgICAgICAibmUiOiAiQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCkiLAorICAgICAgICAgICAgImx0X3MiOiAiQXJnOjpyZWxDb25kKE1hY3Jv
QXNzZW1ibGVyOjpMZXNzVGhhbikiLAorICAgICAgICAgICAgImx0X3UiOiAiQXJnOjpyZWxDb25k
KE1hY3JvQXNzZW1ibGVyOjpCZWxvdykiLAorICAgICAgICAgICAgImd0X3MiOiAiQXJnOjpyZWxD
b25kKE1hY3JvQXNzZW1ibGVyOjpHcmVhdGVyVGhhbikiLAorICAgICAgICAgICAgImd0X3UiOiAi
QXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpBYm92ZSkiLAorICAgICAgICAgICAgImxlX3Mi
OiAiQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbk9yRXF1YWwpIiwKKyAgICAg
ICAgICAgICJsZV91IjogIkFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFs
KSIsCisgICAgICAgICAgICAiZ2VfcyI6ICJBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6Okdy
ZWF0ZXJUaGFuT3JFcXVhbCkiLAorICAgICAgICAgICAgImdlX3UiOiAiQXJnOjpyZWxDb25kKE1h
Y3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwpIgorICAgICAgICB9LmdldChjb21wYXJlT3ApCisK
KyAgICAgICAgYjNvcCA9IHsKKyAgICAgICAgICAgICJlcSI6ICJWZWN0b3JFcXVhbCIsCisgICAg
ICAgICAgICAibmUiOiAiVmVjdG9yTm90RXF1YWwiLAorICAgICAgICAgICAgImx0X3MiOiAiVmVj
dG9yTGVzc1RoYW4iLAorICAgICAgICAgICAgImx0X3UiOiAiVmVjdG9yQmVsb3ciLAorICAgICAg
ICAgICAgImd0X3MiOiAiVmVjdG9yR3JlYXRlclRoYW4iLAorICAgICAgICAgICAgImd0X3UiOiAi
VmVjdG9yQWJvdmUiLAorICAgICAgICAgICAgImxlX3MiOiAiVmVjdG9yTGVzc1RoYW5PckVxdWFs
IiwKKyAgICAgICAgICAgICJsZV91IjogIlZlY3RvckJlbG93T3JFcXVhbCIsCisgICAgICAgICAg
ICAiZ2VfcyI6ICJWZWN0b3JHcmVhdGVyVGhhbk9yRXF1YWwiLAorICAgICAgICAgICAgImdlX3Ui
OiAiVmVjdG9yQWJvdmVPckVxdWFsIgorICAgICAgICB9LmdldChjb21wYXJlT3ApCisKKyAgICBy
b3dbImV4dHJhQWlyQXJnIl0gPSAiQjM6OkFpcjo6IiArIGFpckNvbmQKKyAgICByb3dbImIzb3Ai
XSA9IGIzb3AKKworZGVmIGZpeHVwQXJpdGhPckJpdHdpc2Uocm93KToKKyAgICBjYXRlZ29yeSA9
IHJvd1siY2F0ZWdvcnkiXSAKKyAgICBpZiBjYXRlZ29yeSA9PSAic2ltZC5jbXAiOgorICAgICAg
ICByZXR1cm4KKyAgICByb3dbImIzb3AiXSA9ICJWZWN0b3IiICsgY3BwVHlwZShyb3dbIm9wIl0p
CisgICAgaWYgbGVuKHJvd1siYWlyT3AiXSkgPT0gMDoKKyAgICAgICAgcm93WyJhaXJPcCJdID0g
Y3BwVHlwZShyb3dbIm9wIl0pCisgICAgcm93WyJhaXJPcCJdID0gIlZlY3RvciIgKyByb3dbImFp
ck9wIl0KKworZGVmIGNvbnZlcnRSb3cocm93KTogCisgICAgcmVzID0ge30KKworICAgIGlmIG5v
dCBsZW4ocm93WyJvcCJdKToKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJObyBvcCBpbiByb3c6
ICIgKyBzdHIocm93KSkKKworICAgIGZpeHVwQ21wKHJvdykKKyAgICBmaXh1cEFyaXRoT3JCaXR3
aXNlKHJvdykKKworICAgIHJlc1siY2F0ZWdvcnkiXSA9IHJvd1siY2F0ZWdvcnkiXQorICAgIHJl
c1sidmFsdWUiXSA9IDB4RkQKKyAgICByZXNbImV4dGVuZGVkT3AiXSA9IGludChyb3dbImV4dGVu
ZGVkT3AiXSwwKQorICAgIHNjYWxhclR5cGUgPSByb3dbInNjYWxhclR5cGUiXQorICAgIHJlc1si
c2ltZF9zY2FsYXJfdHlwZSJdID0gc2NhbGFyVHlwZQorICAgIHJlc1snc2ltZF9vcGVyYXRpb24n
XSA9IHJvd1sib3AiXQorICAgIHJlc1snc2ltZF9zaWduX2V4dGVuZF9tb2RlJ10gPSBtYXBTaWdu
RXh0ZW5kKHJvd1sic2lnbkV4dGVuZCJdKQorICAgIHJlc1snc2ltZF9sYW5lX2ludGVycHJldGF0
aW9uJ10gPSByb3dbImludGVycHJldGF0aW9uIl0KKyAgICByZXNbImlzX3NpbWRfc3BlY2lhbF9v
cCJdID0gKHJvd1sic3BlY2lhbCJdID09ICd5JykKKworICAgIGRlZiBmaXhQYXJhbXMocCk6Cisg
ICAgICAgIHAgPSBwLnN0cmlwKCkKKyAgICAgICAgcCA9IHAuc3BsaXQoIiwiKQorICAgICAgICBw
ID0gW3Quc3RyaXAoKSBmb3IgdCBpbiBwIGlmIHQgIT0gJyddCisgICAgICAgIHJldHVybiBbZml4
VHlwZSh0KSBmb3IgdCBpbiBwXQorCisKKyAgICBkZWYgZml4VHlwZSh0KToKKyAgICAgICAgdCA9
IHQuc3BsaXQoIjoiKQorICAgICAgICB0ID0gdFstMV0uc3RyaXAoKQorCisgICAgICAgIGlmIHQg
PT0gInYiOgorICAgICAgICAgICAgcmV0dXJuICJ2MTI4IgorICAgICAgICBpZiB0ID09ICJzIjoK
KyAgICAgICAgICAgIGlmIHNjYWxhclR5cGUgbm90IGluIFsndm9pZCcsICJpMzIiLCAiaTY0Iiwg
ImYzMiIsICJmNjQiXToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oImludmFsaWQg
c2NhbGFyIHR5cGU6ICIgKyBzY2FsYXJUeXBlKQorICAgICAgICAgICAgaWYgc2NhbGFyVHlwZSA9
PSAndm9pZCc6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJpbnN0cnVjdGlvbiAi
ICsgc3RyKHJlcykgKyAiIGRvZXMgbm90IGhhdmUgYSBzY2FsYXIgdHlwZSIpCisgICAgICAgICAg
ICByZXR1cm4gc2NhbGFyVHlwZQorICAgICAgICBpZiB0IG5vdCBpbiBbImkzMiIsICJpNjQiLCAi
ZjMyIiwgImY2NCJdOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJCYWQgdHlwZTogIiAr
IHQpCisgICAgICAgIHJldHVybiB0CisKKworICAgIGRlZiBmaXhJbW1zKHApOgorICAgICAgICBw
ID0gcC5zdHJpcCgpCisgICAgICAgIHAgPSBwLnNwbGl0KCIsIikKKyAgICAgICAgcCA9IFt0LnN0
cmlwKCkgZm9yIHQgaW4gcCBpZiB0ICE9ICcnXQorICAgICAgICBwID0gW2ZpeEltbSh0KSBmb3Ig
dCBpbiBwXQorICAgICAgICByZXR1cm4gW2ogZm9yIGkgaW4gcCBmb3IgaiBpbiBpXQorCisKKyAg
ICBkZWYgZml4SW1tKHQpOgorICAgICAgICB0ID0gdC5zcGxpdCgiOiIpCisgICAgICAgIHQgPSB0
Wy0xXS5zdHJpcCgpCisKKyAgICAgICAgaWYgdCA9PSAibWVtYXJnIjoKKyAgICAgICAgICAgIHJl
dHVybiBbeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAi
YWxnaW4iLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0KKyAgICAgICAgaWYgdCA9PSAiSW1tQnl0ZVsx
Nl0iIG9yIHQgPT0gIkltbUxhbmVJZHgzMlsxNl0iOgorICAgICAgICAgICAgcmV0dXJuIFt7Im5h
bWUiOiAiaW1tYnl0ZVswOjhdIiwgInR5cGUiOiAidmFydWludDY0In0sIHsibmFtZSI6ICJpbW1i
eXRlWzg6MTZdIiwgInR5cGUiOiAidmFydWludDY0In1dCisgICAgICAgIGlmIHQgaW4gWyJJbW1M
YW5lSWR4MiIsICJJbW1MYW5lSWR4NCIsICJJbW1MYW5lSWR4OCIsICJJbW1MYW5lSWR4MTYiLCAi
SW1tTGFuZUlkeCJdOgorICAgICAgICAgICAgcmV0dXJuIFt7Im5hbWUiOiAibGFuZWlkeCIsICJ0
eXBlIjogInZhcnVpbnQ4IiwgImxhbmVTaXplIjogdFtsZW4oIkltbUxhbmVJZHgiKTpdfV0KKwor
ICAgICAgICByYWlzZSBFeGNlcHRpb24oImVycm9yOiB0eXBlICIgKyB0ICsgIiBub3QgZm91bmQs
IHVwZGF0ZSBnZW5lcmF0ZVNpbWRPcGNvZGVzLnB5IikKKworCisgICAgcmVzWyJpbW1lZGlhdGUi
XSA9IGZpeEltbXMocm93WyJJbW0iXSkKKyAgICByZXNbInBhcmFtZXRlciJdID0gZml4UGFyYW1z
KHJvd1sicGFyYW1zIl0pCisgICAgcmVzWyJyZXR1cm4iXSA9IFtmaXhUeXBlKHJvd1sicmV0dXJu
Il0pXSBpZiByb3dbInJldHVybiJdICE9ICcnIGVsc2UgW10KKworICAgIHdhc21PcCA9IGNwcFR5
cGUocmVzWyJzaW1kX29wZXJhdGlvbiJdKSArIGNwcFR5cGUocmVzWyJzaW1kX2xhbmVfaW50ZXJw
cmV0YXRpb24iXSkKKyAgICBpZiByZXNbInNpbWRfc2lnbl9leHRlbmRfbW9kZSJdID09ICJVbnNp
Z25lZCI6CisgICAgICAgIHdhc21PcCArPSAiVSIKKyAgICBlbGlmIHJlc1sic2ltZF9zaWduX2V4
dGVuZF9tb2RlIl0gPT0gIlNpZ25lZCI6CisgICAgICAgIHdhc21PcCArPSAiUyIKKworICAgIHJl
c1siYjNvcCJdID0gcm93WyJiM29wIl0gaWYgImIzb3AiIGluIHJvdyBlbHNlIGNwcFR5cGUocmVz
WyJzaW1kX29wZXJhdGlvbiJdKQorICAgIGlmIG5vdCAoIkIzOjpPcGNvZGU6OiIgaW4gcmVzWyJi
M29wIl0pOgorICAgICAgICByZXNbImIzb3AiXSA9ICJCMzo6T3Bjb2RlOjoiICsgcmVzWyJiM29w
Il0KKworICAgIGlmIG5vdCByZXNbImlzX3NpbWRfc3BlY2lhbF9vcCJdOgorICAgICAgICByZXNb
ImFpck9wIl0gPSAiQjM6OkFpcjo6IiArIChyb3dbImFpck9wIl0gb3IgcmVzWyJiM29wIl0pCisg
ICAgcmVzWyJ3YXNtT3AiXSA9ICJXYXNtU2ltZCIgKyB3YXNtT3AKKworICAgIGlmICJleHRyYUFp
ckFyZyIgaW4gcm93OgorICAgICAgICByZXNbImV4dHJhQWlyQXJnIl0gPSByb3dbImV4dHJhQWly
QXJnIl0KKworICAgIHJldHVybiByZXMKKworCitkZWYgZnVuY3Rpb25HZW5lcmF0b3JEZWNsKGtl
eSwgb3AsIGdlbmVyYXRvcik6CisgICAgcyA9ICIiCisgICAgcyA9IHMgKyAiIiIKK3RlbXBsYXRl
PD4KK2F1dG8gIiIiICsgZ2VuZXJhdG9yICsgIjo6YWRkU2ltZE9wPCIKKworICAgIHMgPSBzICsg
IkV4dFNpbWRPcFR5cGU6OiIgKyB0b0NwcChrZXkpICsgIj4oIgorCisgICAgYXNzZXJ0KGxlbihv
cFsicGFyYW1ldGVyIl0pKQorICAgIGFzc2VydChsZW4ob3BbInJldHVybiJdKSA9PSAxKQorCisg
ICAgaGFzSW1tID0gbGVuKG9wWyJpbW1lZGlhdGUiXSkgIT0gMAorCisgICAgaWYgaGFzSW1tOgor
ICAgICAgICBhc3NlcnQobGVuKG9wWyJpbW1lZGlhdGUiXSkgPT0gMSkKKyAgICAgICAgcyA9IHMg
KyAidWludDhfdCBpbW0sICIKKworICAgIGkgPSAwCisgICAgZm9yIHggaW4gb3BbInBhcmFtZXRl
ciJdOgorICAgICAgICBzID0gcyArICJFeHByZXNzaW9uVHlwZSBhcmciICsgc3RyKGkpICsgIiwg
IgorICAgICAgICBpID0gaSArIDEKKworICAgIHMgPSBzICsgIkV4cHJlc3Npb25UeXBlJiByZXN1
bHQpIC0+IFBhcnRpYWxSZXN1bHRcbntcbiIKKyAgICByZXR1cm4gcworCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc20ucHkgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc20ucHkKaW5kZXggZDRlNjEwZTFmMjE3Li5mNGU1MjJm
MmJkMDUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2Fz
bS5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc20ucHkKQEAg
LTI3LDIxICsyNywyNSBAQAogCiBpbXBvcnQganNvbgogaW1wb3J0IG1hdGgKK2ltcG9ydCBvcwog
aW1wb3J0IHJlCitmcm9tIGdlbmVyYXRlU2ltZE9wY29kZXMgaW1wb3J0ICoKIAogY2xhc3MgV2Fz
bToKICAgICBkZWYgX19pbml0X18oc2VsZiwgc2NyaXB0TmFtZSwganNvblBhdGgpOgogICAgICAg
ICB3YXNtRmlsZSA9IG9wZW4oanNvblBhdGgsICJyIikKICAgICAgICAgd2FzbSA9IGpzb24ubG9h
ZChvcGVuKGpzb25QYXRoLCAiciIpKQogICAgICAgICB3YXNtRmlsZS5jbG9zZSgpCisgICAgICAg
IGpzb25EaXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKGpzb25QYXRo
KSkKICAgICAgICAgZm9yIHByZSBpbiB3YXNtWyJwcmVhbWJsZSJdOgogICAgICAgICAgICAgaWYg
cHJlWyJuYW1lIl0gPT0gInZlcnNpb24iOgogICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRW
ZXJzaW9uTnVtYmVyID0gc3RyKHByZVsidmFsdWUiXSkKICAgICAgICAgc2VsZi5wcmVhbWJsZSA9
IHdhc21bInByZWFtYmxlIl0KICAgICAgICAgc2VsZi50eXBlcyA9IHdhc21bInR5cGUiXQogICAg
ICAgICBzZWxmLm9wY29kZXMgPSB3YXNtWyJvcGNvZGUiXQorICAgICAgICBzZWxmLm9wY29kZXMu
dXBkYXRlKHNpbWRPcGNvZGVzKGpzb25EaXJlY3RvcnkpKQogICAgICAgICBzZWxmLmhlYWRlciA9
ICIiIi8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc1LDExICs3
OSw2IEBAIGNsYXNzIFdhc206CiAgICAgICAgICAgICBpZiBmaWx0ZXIoc2VsZi5vcGNvZGVzW29w
XSk6CiAgICAgICAgICAgICAgICAgeWllbGQgcmV0KG9wKQogCi0gICAgZGVmIHRvQ3BwKHNlbGYs
IG5hbWUpOgotICAgICAgICBjYW1lbENhc2UgPSByZS5zdWIocicoW15hLXowLTldLiknLCBsYW1i
ZGEgYzogYy5ncm91cCgwKVsxXS51cHBlcigpLCBuYW1lKQotICAgICAgICBDYW1lbENhc2UgPSBj
YW1lbENhc2VbOjFdLnVwcGVyKCkgKyBjYW1lbENhc2VbMTpdCi0gICAgICAgIHJldHVybiBDYW1l
bENhc2UKLQogCiBkZWYgaXNOb3JtYWwob3ApOgogICAgIGlmICJleHRlbmRlZE9wIiBpbiBvcDoK
QEAgLTExMCw2ICsxMDksOCBAQCBkZWYgaXNBdG9taWNTdG9yZShvcCk6CiBkZWYgaXNBdG9taWNC
aW5hcnlSTVcob3ApOgogICAgIHJldHVybiBvcFsiY2F0ZWdvcnkiXSA9PSAiYXRvbWljLnJtdy5i
aW5hcnkiCiAKK2RlZiBpc1NpbWQob3ApOgorICAgIHJldHVybiBvcFsiY2F0ZWdvcnkiXS5zdGFy
dHN3aXRoKCJzaW1kIikKIAogZGVmIGlzU2ltcGxlKG9wKToKICAgICByZXR1cm4gImIzb3AiIGlu
IG9wCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21B
aXJJUkdlbmVyYXRvcklubGluZXNIZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9nZW5lcmF0ZVdhc21BaXJJUkdlbmVyYXRvcklubGluZXNIZWFkZXIucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NDkwMGU0NmRhZjgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21BaXJJUkdlbmVyYXRv
cklubGluZXNIZWFkZXIucHkKQEAgLTAsMCArMSwxNTIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bjMKKworIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6bgorIworIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorIyBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSBnZW5lcmF0ZVdhc20g
aW1wb3J0ICoKK2Zyb20gZ2VuZXJhdGVTaW1kT3Bjb2RlcyBpbXBvcnQgKgoraW1wb3J0IG9wdHBh
cnNlCitpbXBvcnQgc3lzCitpbXBvcnQgcmUKKworcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFy
c2VyKHVzYWdlPSJ1c2FnZTogJXByb2cgPHdhc20uanNvbj4gPFdhc21PcHMuaD4iKQorKG9wdGlv
bnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3Moc3lzLmFyZ3ZbMDpdKQoraWYgbGVuKGFyZ3Mp
ICE9IDM6CisgICAgcGFyc2VyLmVycm9yKHBhcnNlci51c2FnZSkKKworanNvblBhdGggPSBhcmdz
WzFdCitqc29uRGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChqc29u
UGF0aCkpCitoZWFkZXJGaWxlID0gb3BlbihhcmdzWzJdLCAidyIpCisKK2NvbnRlbnRzID0gIiIK
K29wY29kZXMgPSBzaW1kT3Bjb2Rlcyhqc29uRGlyZWN0b3J5KQorCitkZWYgaXNWYWxpZEZvcm1B
cmdzKGhhc0ltbSwgaGFzU2ltZEluZm8sIG9wKToKKyAgICBzID0gb3BbImFpck9wIl0gKyAiLCAi
CisgICAgaWYgaGFzSW1tOgorICAgICAgICBzID0gcyArICJBcmc6OkltbSwgIgorCisgICAgIyB0
aGVzZSBhcmUgdXNlZCBmb3IgY29uZHMKKyAgICBpZiAiZXh0cmFBaXJBcmciIGluIG9wOgorICAg
ICAgICBjb25kID0gb3BbImV4dHJhQWlyQXJnIl0KKyAgICAgICAgY29uZCA9IGNvbmRbMCA6IGNv
bmQuaW5kZXgoIigiKV0KKyAgICAgICAgaWYgIkFyZzo6ZG91YmxlQ29uZCIgaW4gY29uZDoKKyAg
ICAgICAgICAgIHMgPSBzICsgIkFyZzo6RG91YmxlQ29uZCwgIgorICAgICAgICBlbGlmICJBcmc6
OnJlbENvbmQiIGluIGNvbmQ6CisgICAgICAgICAgICBzID0gcyArICJBcmc6OlJlbENvbmQsICIK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByaW50KGNvbmQpCisgICAgICAgICAgICBhc3Nl
cnQoMCkKKworICAgIGlmIGhhc1NpbWRJbmZvOgorICAgICAgICBzID0gcyArICJBcmc6OlNpbWRJ
bmZvLCAiCisKKyAgICBmb3IgeCBpbiBvcFsicGFyYW1ldGVyIl06CisgICAgICAgIHMgPSBzICsg
IkFyZzo6VG1wLCAiCisgICAgIyBSZXR1cm4KKyAgICBzID0gcyArICJBcmc6OlRtcCIKKworICAg
IHJldHVybiBzCisKK2RlZiBjYWxsQXJncyhoYXNJbW0sIGhhc1NpbWRJbmZvLCBvcCk6CisgICAg
cyA9ICBvcFsnYWlyT3AnXSArICIsICIKKyAgICBpZiBoYXNJbW06CisgICAgICAgIHMgPSBzICsg
IkFyZzo6aW1tKGltbSksICIKKworICAgIGlmICJleHRyYUFpckFyZyIgaW4gb3A6CisgICAgICAg
IHMgPSBzICsgb3BbImV4dHJhQWlyQXJnIl0gKyAiLCAiCisKKyAgICBpZiBoYXNTaW1kSW5mbzoK
KyAgICAgICAgcyA9IHMgKyAiQXJnOjpzaW1kSW5mbyhTaW1kSW5mbyB7IFNpbWRMYW5lOjoiICsg
b3BbInNpbWRfbGFuZV9pbnRlcnByZXRhdGlvbiJdICsgIiwgU2ltZFNpZ25Nb2RlOjoiICsgb3Bb
InNpbWRfc2lnbl9leHRlbmRfbW9kZSJdICsgIiB9KSwgIgorCisgICAgaSA9IDAKKyAgICBmb3Ig
eCBpbiBvcFsicGFyYW1ldGVyIl06CisgICAgICAgIHMgPSBzICsgImFyZyIgKyBzdHIoaSkgKyAi
LCAiCisgICAgICAgIGkgPSBpICsgMQorICAgIHMgPSBzICsgInJlc3VsdCIKKyAgICByZXR1cm4g
cworCisKK2ZvciBrZXkgaW4gb3Bjb2RlczoKKyAgICBvcCA9IG9wY29kZXNba2V5XQorICAgIGlm
IG9wWyJpc19zaW1kX3NwZWNpYWxfb3AiXToKKyAgICAgICAgY29udGludWUKKyAgICAKKworICAg
IGhhc0ltbSA9IGxlbihvcFsiaW1tZWRpYXRlIl0pICE9IDAKKyAgICBhc3NlcnQobGVuKG9wWyJw
YXJhbWV0ZXIiXSkpCisgICAgYXNzZXJ0KGxlbihvcFsicmV0dXJuIl0pID09IDEpCisKKyAgICBz
ID0gIiIKKyAgICBzID0gcyArIGZ1bmN0aW9uR2VuZXJhdG9yRGVjbChrZXksIG9wLCAiQWlySVJH
ZW5lcmF0b3IiKQorICAgIHMgPSBzICsgZiIgICAgcmVzdWx0ID0gdG1wRm9yVHlwZShUeXBlczo6
e2NwcFR5cGUob3BbJ3JldHVybiddWzBdKX0pO1xuIgorCisgICAgcyA9IHMgKyAiICAgIGlmIChp
c1ZhbGlkRm9ybSgiICsgaXNWYWxpZEZvcm1BcmdzKGhhc0ltbSwgRmFsc2UsIG9wKSArICIpKSB7
XG4iCisgICAgcyA9IHMgKyAiICAgICAgICBhcHBlbmQoIiArIGNhbGxBcmdzKGhhc0ltbSwgRmFs
c2UsIG9wKSArICIpO1xuIgorICAgIHMgPSBzICsgIiAgICAgICAgcmV0dXJuIHsgfTsiCisgICAg
cyA9IHMgKyAiXG4gICAgfVxuIgorCisgICAgcyA9IHMgKyAiICAgIGlmIChpc1ZhbGlkRm9ybSgi
ICsgaXNWYWxpZEZvcm1BcmdzKGhhc0ltbSwgVHJ1ZSwgb3ApICsgIikpIHtcbiIKKyAgICBzID0g
cyArICIgICAgICAgIGFwcGVuZCgiICsgY2FsbEFyZ3MoaGFzSW1tLCBUcnVlLCBvcCkgKyAiKTtc
biIKKyAgICBzID0gcyArICIgICAgICAgIHJldHVybiB7IH07IgorICAgIHMgPSBzICsgIlxuICAg
IH1cbiIKKworICAgIHMgPSBzICsgIiAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpO1xu
IgorICAgIHMgPSBzICsgIiAgICByZXR1cm4geyB9OyIKKworICAgIHMgPSBzICsgIlxufSIKKwor
ICAgIGNvbnRlbnRzID0gY29udGVudHMgKyBzICsgIlxuXG4iIAorCitjb250ZW50cyA9ICIiIi8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKy8vIERPIE5PIEVESVQhIC0gVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGVX
YXNtQWlySVJHZW5lcmF0b3JJbmxpbmVzSGVhZGVyLnB5CisKKyIiIiArIGNvbnRlbnRzICsgIlxu
XG4iCisKKworaGVhZGVyRmlsZS53cml0ZShjb250ZW50cykKK2hlYWRlckZpbGUuY2xvc2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtQjNJUkdl
bmVyYXRvcklubGluZXNIZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5l
cmF0ZVdhc21CM0lSR2VuZXJhdG9ySW5saW5lc0hlYWRlci5weQppbmRleCBmNWQ0N2FjMjFmNTYu
LmNmODkwM2U5OGVlZCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2Vu
ZXJhdGVXYXNtQjNJUkdlbmVyYXRvcklubGluZXNIZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtQjNJUkdlbmVyYXRvcklubGluZXNIZWFkZXIucHkK
QEAgLTI2LDYgKzI2LDcgQEAKICMgVGhpcyB0b29sIGhhcyBhIGNvdXBsZSBvZiBoZWxwZnVsIG1h
Y3JvcyB0byBwcm9jZXNzIFdhc20gZmlsZXMgZnJvbSB0aGUgd2FzbS5qc29uLgogCiBmcm9tIGdl
bmVyYXRlV2FzbSBpbXBvcnQgKgorZnJvbSBnZW5lcmF0ZVNpbWRPcGNvZGVzIGltcG9ydCAqCiBp
bXBvcnQgb3B0cGFyc2UKIGltcG9ydCBzeXMKIGltcG9ydCByZQpAQCAtMzUsNyArMzYsMTAgQEAg
cGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSJ1c2FnZTogJXByb2cgPHdhc20u
anNvbj4gPFdhc21PcHMuaD4iKQogaWYgbGVuKGFyZ3MpICE9IDM6CiAgICAgcGFyc2VyLmVycm9y
KHBhcnNlci51c2FnZSkKIAotd2FzbSA9IFdhc20oYXJnc1swXSwgYXJnc1sxXSkKK2pzb25QYXRo
ID0gYXJnc1sxXQoranNvbkRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3Bh
dGgoanNvblBhdGgpKQorCit3YXNtID0gV2FzbShhcmdzWzBdLCBqc29uUGF0aCkKIG9wY29kZXMg
PSB3YXNtLm9wY29kZXMKIHdhc21CM0lSR2VuZXJhdG9ySEZpbGUgPSBvcGVuKGFyZ3NbMl0sICJ3
IikKIApAQCAtMTkyLDEzICsxOTYsNDkgQEAgZGVmIGdlbmVyYXRlU2ltcGxlQ29kZShvcCk6CiAg
ICAgYXJncyA9IFsiRXhwcmVzc2lvblR5cGUgYXJnIiArIHN0cihwYXJhbSkgZm9yIHBhcmFtIGlu
IHJhbmdlKGxlbihvcGNvZGVbInBhcmFtZXRlciJdKSldCiAgICAgYXJncy5hcHBlbmQoIkV4cHJl
c3Npb25UeXBlJiByZXN1bHQiKQogICAgIHJldHVybiAiIiIKLXRlbXBsYXRlPD4gYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OiIiIiArIHdhc20udG9DcHAob3BbIm5hbWUiXSkgKyAi
PigiICsgIiwgIi5qb2luKGFyZ3MpICsgIiIiKSAtPiBQYXJ0aWFsUmVzdWx0Cit0ZW1wbGF0ZTw+
IGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjoiIiIgKyB0b0NwcChvcFsibmFtZSJd
KSArICI+KCIgKyAiLCAiLmpvaW4oYXJncykgKyAiIiIpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICIi
IiArIGdlbmVyYXRlQjNDb2RlKG9wY29kZSwgYjNvcCkgKyAiIiIKICAgICByZXR1cm4geyB9Owog
fQogIiIiCiAKK2RlZiBzaW1kQ29udGVudHMoKToKKyAgICBzID0gIiIKKyAgICBvcGNvZGVzID0g
c2ltZE9wY29kZXMoanNvbkRpcmVjdG9yeSkKKworICAgIGZvciBrZXkgaW4gb3Bjb2RlczoKKyAg
ICAgICAgb3AgPSBvcGNvZGVzW2tleV0KKyAgICAgICAgaWYgb3BbImlzX3NpbWRfc3BlY2lhbF9v
cCJdOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBhc3NlcnQobGVuKG9wWyJwYXJh
bWV0ZXIiXSkpCisgICAgICAgIGFzc2VydChsZW4ob3BbInJldHVybiJdKSA9PSAxKQorCisgICAg
ICAgIGhhc0ltbSA9IGxlbihvcFsiaW1tZWRpYXRlIl0pICE9IDAKKworICAgICAgICBzID0gcyAr
ICJcbiIKKyAgICAgICAgcyA9IHMgKyBmdW5jdGlvbkdlbmVyYXRvckRlY2woa2V5LCBvcCwgIkIz
SVJHZW5lcmF0b3IiKQorICAgICAgICBzID0gcyArICIgICAgcmVzdWx0ID0gcHVzaChtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PFNpbWRWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgIgorICAgICAg
ICBzID0gcyArIG9wWyJiM29wIl0gKyAiLCAiIAorICAgICAgICBzID0gcyArIGYidG9CM1R5cGUo
VHlwZXM6OntjcHBUeXBlKG9wWydyZXR1cm4nXVswXSl9KSwgIgorICAgICAgICBzID0gcyArICJT
aW1kSW5mbyB7IFNpbWRMYW5lOjoiICsgb3BbInNpbWRfbGFuZV9pbnRlcnByZXRhdGlvbiJdICsg
IiwgU2ltZFNpZ25Nb2RlOjoiICsgb3BbInNpbWRfc2lnbl9leHRlbmRfbW9kZSJdICsgIiB9LCAi
CisgICAgICAgIGlmIGhhc0ltbToKKyAgICAgICAgICAgIHMgPSBzICsgImltbSwgIgorICAgICAg
ICBpID0gMAorICAgICAgICBmb3IgeCBpbiBvcFsicGFyYW1ldGVyIl06CisgICAgICAgICAgICBz
ID0gcyArICJnZXQoYXJnIiArIHN0cihpKSArICIpIgorICAgICAgICAgICAgaSA9IGkgKyAxCisg
ICAgICAgICAgICBpZiBpIDwgbGVuKG9wWyJwYXJhbWV0ZXIiXSk6CisgICAgICAgICAgICAgICAg
cyA9IHMgKyAiLCAiCisgICAgICAgIHMgPSBzICsgIikpOyIKKyAgICAgICAgcyA9IHMgKyAiXG4i
CisgICAgICAgIHMgPSBzICsgIiAgICByZXR1cm4geyB9OyIKKyAgICAgICAgcyA9IHMgKyAiXG59
IgorCisgICAgcmV0dXJuIHMKKworCiAKIGRlZmluaXRpb25zID0gW2dlbmVyYXRlU2ltcGxlQ29k
ZShvcCkgZm9yIG9wIGluIHdhc20ub3Bjb2RlSXRlcmF0b3IobGFtYmRhIG9wOiBpc1NpbXBsZShv
cCkgYW5kIChpc0JpbmFyeShvcCkgb3IgaXNVbmFyeShvcCkpKV0KIGNvbnRlbnRzID0gd2FzbS5o
ZWFkZXIgKyAiIiIKQEAgLTIwOSw3ICsyNDksNyBAQCBjb250ZW50cyA9IHdhc20uaGVhZGVyICsg
IiIiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKLSIiIiArICIiLmpvaW4o
ZGVmaW5pdGlvbnMpICsgIiIiCisiIiIgKyAiIi5qb2luKGRlZmluaXRpb25zKSArICJcbiIgKyBz
aW1kQ29udGVudHMoKSArICIiIgogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIu
cHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkK
aW5kZXggNjU3NmE2OWM1NjgzLi5jZDM5NzJkMWExYjkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkKQEAgLTI4LDYgKzI4LDcg
QEAKIGZyb20gZ2VuZXJhdGVXYXNtIGltcG9ydCAqCiBpbXBvcnQgb3B0cGFyc2UKIGltcG9ydCBz
eXMKK2ltcG9ydCByZQogCiBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9InVz
YWdlOiAlcHJvZyA8d2FzbS5qc29uPiA8V2FzbU9wcy5oPiIpCiAob3B0aW9ucywgYXJncykgPSBw
YXJzZXIucGFyc2VfYXJncyhzeXMuYXJndlswOl0pCkBAIC00MywzNCArNDQsNjEgQEAgd2FzbU9w
c0hGaWxlID0gb3BlbihhcmdzWzJdLCAidyIpCiBkZWYgY3BwVHlwZSh0eXBlKToKICAgICBpZiB0
eXBlID09ICJib29sIjoKICAgICAgICAgcmV0dXJuICJJMzIiCi0gICAgcmV0dXJuIHR5cGUuY2Fw
aXRhbGl6ZSgpCisgICAgZGVmIGNhcGl0YWxpemVXaXRoTnVtYmVycyhzKToKKyAgICAgICAgcyA9
IHMuY2FwaXRhbGl6ZSgpCisgICAgICAgIG0gPSByZS5jb21waWxlKCJeXGQrIikuc2VhcmNoKHMp
CisgICAgICAgIGlmIG06CisgICAgICAgICAgICBzID0gc1swOm0uc3BhbigpWzFdXSArIHNbbS5z
cGFuKClbMV06XS5jYXBpdGFsaXplKCkKKyAgICAgICAgcmV0dXJuIHMKKyAgICByZXR1cm4gIiIu
am9pbihtYXAobGFtYmRhIHg6IGNhcGl0YWxpemVXaXRoTnVtYmVycyh4KSwgdHlwZS5zcGxpdCgn
XycpKSkKIAogCi1kZWYgY3BwTWFjcm8od2FzbU9wY29kZSwgdmFsdWUsIGIzLCBpbmMsICpleHRy
YUFyZ3MpOgorZGVmIGNwcE1hY3JvKHdhc21PcGNvZGUsIHZhbHVlLCBiMywgYWlyLCBpbmMsICpl
eHRyYUFyZ3MpOgogICAgIGV4dHJhQXJnc1N0ciA9ICIsICIgKyAiLCAiLmpvaW4oZXh0cmFBcmdz
KSBpZiBsZW4oZXh0cmFBcmdzKSBlbHNlICIiCi0gICAgcmV0dXJuICIgXFxcbiAgICBtYWNybygi
ICsgd2FzbS50b0NwcCh3YXNtT3Bjb2RlKSArICIsICIgKyBoZXgoaW50KHZhbHVlKSkgKyAiLCAi
ICsgYjMgKyAiLCAiICsgc3RyKGluYykgKyBleHRyYUFyZ3NTdHIgKyAiKSIKKyAgICBhaXJTdHIg
PSAiIgorICAgIGlmIGFpcjoKKyAgICAgICAgYWlyU3RyID0gYWlyICsgIiwgIgorICAgIHJldHVy
biAiIFxcXG4gICAgbWFjcm8oIiArIHRvQ3BwKHdhc21PcGNvZGUpICsgIiwgIiArIGhleChpbnQo
dmFsdWUpKSArICIsICIgKyBiMyArICIsICIgKyBhaXJTdHIgKyBzdHIoaW5jKSArIGV4dHJhQXJn
c1N0ciArICIpIgorCiAKIGRlZiB0eXBlTWFjcm9pemVyKCk6CiAgICAgaW5jID0gMAogICAgIGZv
ciB0eSBpbiB3YXNtLnR5cGVzOgotICAgICAgICB5aWVsZCBjcHBNYWNybyh0eSwgd2FzbS50eXBl
c1t0eV1bInZhbHVlIl0sIHdhc20udHlwZXNbdHldWyJiM3R5cGUiXSwgaW5jLCB0eSkKKyAgICAg
ICAgeWllbGQgY3BwTWFjcm8odHksIHdhc20udHlwZXNbdHldWyJ2YWx1ZSJdLCB3YXNtLnR5cGVz
W3R5XVsiYjN0eXBlIl0sIE5vbmUsIGluYywgdHksIHN0cih3YXNtLnR5cGVzW3R5XVsic2l6ZSJd
KSkKICAgICAgICAgaW5jICs9IDEKIAorCiB0eXBlX2RlZmluaXRpb25zID0gWyIjZGVmaW5lIEZP
Ul9FQUNIX1dBU01fVFlQRShtYWNybykiXQogdHlwZV9kZWZpbml0aW9ucy5leHRlbmQoW3QgZm9y
IHQgaW4gdHlwZU1hY3JvaXplcigpXSkKIHR5cGVfZGVmaW5pdGlvbnMgPSAiIi5qb2luKHR5cGVf
ZGVmaW5pdGlvbnMpCiAKIAorc2ltZExhbmVPcGVyYXRpb25zID0gc2V0KFtjcHBUeXBlKG9wWydv
cGNvZGUnXVsnc2ltZF9vcGVyYXRpb24nXSkgZm9yIG9wIGluIHdhc20ub3Bjb2RlSXRlcmF0b3Io
aXNTaW1kKV0pCitzaW1kTGFuZU9wZXJhdGlvbnNQcmludGVyID0gIiIiCisgICAgc3RhdGljIHZv
aWQgZHVtcFNpbWRMYW5lT3BlcmF0aW9uKFByaW50U3RyZWFtJiBvdXQsIFNpbWRMYW5lT3BlcmF0
aW9uIG9wKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCkgeworICAgICAgICAiIiIgKyAiXG4g
ICAgICAgICIuam9pbihbImNhc2UgU2ltZExhbmVPcGVyYXRpb246OiIgKyB4ICsgIjogb3V0LnBy
aW50KFwiIiArIHggICsgIlwiKTsgYnJlYWs7IiBmb3IgeCBpbiBzaW1kTGFuZU9wZXJhdGlvbnNd
KSArICIiIgorICAgICAgICB9CisgICAgfQorICAgIE1BS0VfUFJJTlRfQURBUFRPUihTaW1kTGFu
ZU9wZXJhdGlvbkR1bXAsIFNpbWRMYW5lT3BlcmF0aW9uLCBkdW1wU2ltZExhbmVPcGVyYXRpb24p
OworIiIiCitzaW1kTGFuZU9wZXJhdGlvbnMgPSAiLFxuICAgICIuam9pbihzaW1kTGFuZU9wZXJh
dGlvbnMpCisKKwogZGVmIG9wY29kZU1hY3JvaXplcihmaWx0ZXIsIG9wY29kZUZpZWxkPSJ2YWx1
ZSIsIG1vZGlmaWVyPU5vbmUpOgogICAgIGluYyA9IDAKICAgICBmb3Igb3AgaW4gd2FzbS5vcGNv
ZGVJdGVyYXRvcihmaWx0ZXIpOgogICAgICAgICBiM29wID0gIk9vcHMiCisgICAgICAgIGFpck9w
ID0gTm9uZQogICAgICAgICBpZiBpc1NpbXBsZShvcFsib3Bjb2RlIl0pOgogICAgICAgICAgICAg
YjNvcCA9IG9wWyJvcGNvZGUiXVsiYjNvcCJdCisgICAgICAgICAgICBpZiAiYWlyT3AiIGluIG9w
WyJvcGNvZGUiXToKKyAgICAgICAgICAgICAgICBhaXJPcCA9IG9wWyJvcGNvZGUiXVsiYWlyT3Ai
XQogICAgICAgICBleHRyYUFyZ3MgPSBbXQogICAgICAgICBpZiBtb2RpZmllcjoKICAgICAgICAg
ICAgIGV4dHJhQXJncyA9IG1vZGlmaWVyKG9wWyJvcGNvZGUiXSkKLSAgICAgICAgeWllbGQgY3Bw
TWFjcm8ob3BbIm5hbWUiXSwgb3BbIm9wY29kZSJdW29wY29kZUZpZWxkXSwgYjNvcCwgaW5jLCAq
ZXh0cmFBcmdzKQorICAgICAgICB5aWVsZCBjcHBNYWNybyhvcFsibmFtZSJdLCBvcFsib3Bjb2Rl
Il1bb3Bjb2RlRmllbGRdLCBiM29wLCBhaXJPcCwgaW5jLCAqZXh0cmFBcmdzKQogICAgICAgICBp
bmMgKz0gMQogCiAKQEAgLTc5LDYgKzEwNyw3IEBAIGRlZiBvcGNvZGVXaXRoVHlwZXNNYWNyb2l6
ZXIoZmlsdGVyKToKICAgICAgICAgcmV0dXJuIFtjcHBUeXBlKHR5cGUpIGZvciB0eXBlIGluIG9w
WyJwYXJhbWV0ZXIiXSArIG9wWyJyZXR1cm4iXV0KICAgICByZXR1cm4gb3Bjb2RlTWFjcm9pemVy
KGZpbHRlciwgbW9kaWZpZXI9bW9kaWZpZXIpCiAKKwogZGVmIG1lbW9yeUxvYWRNYWNyb2l6ZXIo
KToKICAgICBkZWYgbW9kaWZpZXIob3ApOgogICAgICAgICByZXR1cm4gW2NwcFR5cGUob3BbInJl
dHVybiJdWzBdKV0KQEAgLTExNSw4ICsxNDQsMzMgQEAgZGVmIGF0b21pY0JpbmFyeVJNV01hY3Jv
aXplcigpOgogICAgIHJldHVybiBvcGNvZGVNYWNyb2l6ZXIobGFtYmRhIG9wOiBpc0F0b21pY0Jp
bmFyeVJNVyhvcCksIG1vZGlmaWVyPW1vZGlmaWVyLCBvcGNvZGVGaWVsZD0iZXh0ZW5kZWRPcCIp
CiAKIAorZGVmIHNpbWRNYWNyb2xpemVyKCk6CisgICAgZGVmIG1vZGlmaWVyKG9wKToKKyAgICAg
ICAgcmV0dXJuVHlwZSA9ICJUeXBlczo6IiArIGNwcFR5cGUob3BbJ3JldHVybiddWzBdKSBpZiBs
ZW4ob3BbInJldHVybiJdKSA9PSAxIGVsc2UgIlR5cGVzOjpWb2lkIgorICAgICAgICBpbW1lZGlh
dGVzID0gbGlzdChtYXAobGFtYmRhIHg6IHhbImxhbmVTaXplIl0sIG9wWyJpbW1lZGlhdGUiXSkp
CisgICAgICAgIGltbWVkaWF0ZXNBcnIgPSBmIihzdGQ6OmFycmF5PGludCwge2xlbihpbW1lZGlh
dGVzKX0+IiArICJ7IiArICcsJy5qb2luKGltbWVkaWF0ZXMpICsgIn0pIgorICAgICAgICBhcmd1
bWVudHMgPSBsaXN0KG1hcChsYW1iZGEgeDogZiImVHlwZXM6OntjcHBUeXBlKHgpfSIsIG9wWyJw
YXJhbWV0ZXIiXSkpCisgICAgICAgIGFyZ3VtZW50c0FyciA9IGYiKHN0ZDo6YXJyYXk8Y29uc3Qg
VHlwZSosIHtsZW4oYXJndW1lbnRzKX0+IiArICJ7IiArICcsJy5qb2luKGFyZ3VtZW50cykgKyAi
fSkiCisgICAgICAgIHJldHVybiBbb3BbIndhc21PcCJdLCByZXR1cm5UeXBlLCAKKyAgICAgICAg
ICAgIHN0cihsZW4oaW1tZWRpYXRlcykpLCBpbW1lZGlhdGVzQXJyLCBzdHIobGVuKGFyZ3VtZW50
cykpLCBhcmd1bWVudHNBcnIsIAorICAgICAgICAgICAgZiJTaW1kTGFuZTo6eyBvcFsnc2ltZF9s
YW5lX2ludGVycHJldGF0aW9uJ10gfSIsIAorICAgICAgICAgICAgZiJTaW1kU2lnbk1vZGU6Onsg
b3BbJ3NpbWRfc2lnbl9leHRlbmRfbW9kZSddIH0iLAorICAgICAgICAgICAgInRydWUiIGlmICJl
eHRyYUFpckFyZyIgaW4gb3AgZWxzZSAiZmFsc2UiLAorICAgICAgICAgICAgb3BbImV4dHJhQWly
QXJnIl0gaWYgImV4dHJhQWlyQXJnIiBpbiBvcCBlbHNlICJCMzo6QWlyOjpBcmcoKSJdCisgICAg
cmV0dXJuIG9wY29kZU1hY3JvaXplcihsYW1iZGEgb3A6IGlzU2ltZChvcCkgYW5kIG5vdCBvcFsi
aXNfc2ltZF9zcGVjaWFsX29wIl0sIG1vZGlmaWVyPW1vZGlmaWVyLCBvcGNvZGVGaWVsZD0iZXh0
ZW5kZWRPcCIpCisKKworZGVmIHNpbWRTcGVjaWFsTWFjcm9saXplcigpOgorICAgIGRlZiBtb2Rp
ZmllcihvcCk6CisgICAgICAgIHJldHVybiBbCisgICAgICAgICAgICBmIlNpbWRMYW5lT3BlcmF0
aW9uOjp7Y3BwVHlwZShvcFsnc2ltZF9vcGVyYXRpb24nXSl9IiwgCisgICAgICAgICAgICBmIlNp
bWRMYW5lOjp7IG9wWydzaW1kX2xhbmVfaW50ZXJwcmV0YXRpb24nXSB9IiwgCisgICAgICAgICAg
ICBmIlNpbWRTaWduTW9kZTo6eyBvcFsnc2ltZF9zaWduX2V4dGVuZF9tb2RlJ10gfSJdCisgICAg
cmV0dXJuIG9wY29kZU1hY3JvaXplcihsYW1iZGEgb3A6IGlzU2ltZChvcCkgYW5kIG9wWyJpc19z
aW1kX3NwZWNpYWxfb3AiXSwgbW9kaWZpZXI9bW9kaWZpZXIsIG9wY29kZUZpZWxkPSJleHRlbmRl
ZE9wIikKKworCiBkZWZpbmVzID0gWyIjZGVmaW5lIEZPUl9FQUNIX1dBU01fU1BFQ0lBTF9PUCht
YWNybykiXQotZGVmaW5lcy5leHRlbmQoW29wIGZvciBvcCBpbiBvcGNvZGVNYWNyb2l6ZXIobGFt
YmRhIG9wOiBub3QgKGlzVW5hcnkob3ApIG9yIGlzQmluYXJ5KG9wKSBvciBvcFsiY2F0ZWdvcnki
XSA9PSAiY29udHJvbCIgb3Igb3BbImNhdGVnb3J5Il0gPT0gIm1lbW9yeSIgb3Igb3BbInZhbHVl
Il0gPT0gMHhmYyBvciBpc0F0b21pYyhvcCkpKV0pCitkZWZpbmVzLmV4dGVuZChbb3AgZm9yIG9w
IGluIG9wY29kZU1hY3JvaXplcihsYW1iZGEgb3A6IG5vdCAoaXNVbmFyeShvcCkgb3IgaXNCaW5h
cnkob3ApIG9yIG9wWyJjYXRlZ29yeSJdID09ICJjb250cm9sIiBvciBvcFsiY2F0ZWdvcnkiXSA9
PSAibWVtb3J5IiBvciBvcFsidmFsdWUiXSA9PSAweGZjIG9yIGlzQXRvbWljKG9wKSBvciBpc1Np
bWQob3ApKSldKQogZGVmaW5lcy5hcHBlbmQoIlxuXG4jZGVmaW5lIEZPUl9FQUNIX1dBU01fQ09O
VFJPTF9GTE9XX09QKG1hY3JvKSIpCiBkZWZpbmVzLmV4dGVuZChbb3AgZm9yIG9wIGluIG9wY29k
ZU1hY3JvaXplcihsYW1iZGEgb3A6IG9wWyJjYXRlZ29yeSJdID09ICJjb250cm9sIildKQogZGVm
aW5lcy5hcHBlbmQoIlxuXG4jZGVmaW5lIEZPUl9FQUNIX1dBU01fU0lNUExFX1VOQVJZX09QKG1h
Y3JvKSIpCkBAIC0xNDMsNiArMTk3LDEwIEBAIGRlZmluZXMuYXBwZW5kKCJcblxuI2RlZmluZSBG
T1JfRUFDSF9XQVNNX0VYVF9BVE9NSUNfQklOQVJZX1JNV19PUChtYWNybykiKQogZGVmaW5lcy5l
eHRlbmQoW29wIGZvciBvcCBpbiBhdG9taWNCaW5hcnlSTVdNYWNyb2l6ZXIoKV0pCiBkZWZpbmVz
LmFwcGVuZCgiXG5cbiNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9FWFRfQVRPTUlDX09USEVSX09QKG1h
Y3JvKSIpCiBkZWZpbmVzLmV4dGVuZChbb3AgZm9yIG9wIGluIG9wY29kZU1hY3JvaXplcihsYW1i
ZGEgb3A6IGlzQXRvbWljKG9wKSBhbmQgKG5vdCBpc0F0b21pY0xvYWQob3ApIGFuZCBub3QgaXNB
dG9taWNTdG9yZShvcCkgYW5kIG5vdCBpc0F0b21pY0JpbmFyeVJNVyhvcCkpLCBvcGNvZGVGaWVs
ZD0iZXh0ZW5kZWRPcCIpXSkKK2RlZmluZXMuYXBwZW5kKCJcblxuI2RlZmluZSBGT1JfRUFDSF9X
QVNNX0VYVF9TSU1EX09QKG1hY3JvKSIpCitkZWZpbmVzLmV4dGVuZChbb3AgZm9yIG9wIGluIHNp
bWRNYWNyb2xpemVyKCldKQorZGVmaW5lcy5hcHBlbmQoIlxuXG4jZGVmaW5lIEZPUl9FQUNIX1dB
U01fRVhUX1NJTURfU1BFQ0lBTF9PUChtYWNybykiKQorZGVmaW5lcy5leHRlbmQoW29wIGZvciBv
cCBpbiBzaW1kU3BlY2lhbE1hY3JvbGl6ZXIoKV0pCiBkZWZpbmVzLmFwcGVuZCgiXG5cbiIpCiAK
IGRlZmluZXMgPSAiIi5qb2luKGRlZmluZXMpCkBAIC0xNzIsMTQgKzIzMCwxNCBAQCB2YWxpZE9w
cyA9IGJpdFNldCgpCiBkZWYgbWVtb3J5TG9nMkFsaWdubWVudEdlbmVyYXRvcihmaWx0ZXIpOgog
ICAgIHJlc3VsdCA9IFtdCiAgICAgZm9yIG9wIGluIHdhc20ub3Bjb2RlSXRlcmF0b3IoZmlsdGVy
KToKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiICAgIGNhc2UgIiArIHdhc20udG9DcHAob3BbIm5h
bWUiXSkgKyAiOiByZXR1cm4gIiArIG1lbW9yeUxvZzJBbGlnbm1lbnQob3ApICsgIjsiKQorICAg
ICAgICByZXN1bHQuYXBwZW5kKCIgICAgY2FzZSAiICsgdG9DcHAob3BbIm5hbWUiXSkgKyAiOiBy
ZXR1cm4gIiArIG1lbW9yeUxvZzJBbGlnbm1lbnQob3ApICsgIjsiKQogICAgIHJldHVybiAiXG4i
LmpvaW4ocmVzdWx0KQogCiAKIGRlZiBhdG9taWNNZW1vcnlMb2cyQWxpZ25tZW50R2VuZXJhdG9y
KGZpbHRlcik6CiAgICAgcmVzdWx0ID0gW10KICAgICBmb3Igb3AgaW4gd2FzbS5vcGNvZGVJdGVy
YXRvcihmaWx0ZXIpOgotICAgICAgICByZXN1bHQuYXBwZW5kKCIgICAgY2FzZSBFeHRBdG9taWNP
cFR5cGU6OiIgKyB3YXNtLnRvQ3BwKG9wWyJuYW1lIl0pICsgIjogcmV0dXJuICIgKyBtZW1vcnlM
b2cyQWxpZ25tZW50KG9wKSArICI7IikKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiICAgIGNhc2Ug
RXh0QXRvbWljT3BUeXBlOjoiICsgdG9DcHAob3BbIm5hbWUiXSkgKyAiOiByZXR1cm4gIiArIG1l
bW9yeUxvZzJBbGlnbm1lbnQob3ApICsgIjsiKQogICAgIHJldHVybiAiXG4iLmpvaW4ocmVzdWx0
KQogCiAKQEAgLTI0MCw2ICsyOTgsMjIgQEAgc3RydWN0IFR5cGUgewogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Ym9vbD4obnVsbGFibGUpOwogICAgIH0KIAorICAgIHNpemVfdCBzaXplKCkg
Y29uc3QgeworICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAjZGVmaW5lIENSRUFURV9DQVNF
KG5hbWUsIGlkLCBiM3R5cGUsIGluYywgd2FzbU5hbWUsIHNpemUsIC4uLikgY2FzZSBUeXBlS2lu
ZDo6bmFtZTogcmV0dXJuIHNpemU7CisgICAgRk9SX0VBQ0hfV0FTTV9UWVBFKENSRUFURV9DQVNF
KQorICAgICN1bmRlZiBDUkVBVEVfQ0FTRQorICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0IHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7Cisg
ICAgI2RlZmluZSBDUkVBVEVfQ0FTRShuYW1lLCBpZCwgYjN0eXBlLCBpbmMsIHdhc21OYW1lLCBz
aXplLCAuLi4pIGNhc2UgVHlwZUtpbmQ6Om5hbWU6IG91dC5wcmludCgjbmFtZSk7IGJyZWFrOwor
ICAgIEZPUl9FQUNIX1dBU01fVFlQRShDUkVBVEVfQ0FTRSkKKyAgICAjdW5kZWYgQ1JFQVRFX0NB
U0UKKyAgICAgICAgfQorICAgIH0KKwogICAgICNkZWZpbmUgQ1JFQVRFX1BSRURJQ0FURShuYW1l
LCAuLi4pIGJvb2wgaXMgIyMgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQgPT0gVHlwZUtpbmQ6
Om5hbWU7IH0KICAgICBGT1JfRUFDSF9XQVNNX1RZUEUoQ1JFQVRFX1BSRURJQ0FURSkKICAgICAj
dW5kZWYgQ1JFQVRFX1BSRURJQ0FURQpAQCAtMzIxLDcgKzM5NSw4IEBAIGlubGluZSBUeXBlS2lu
ZCBsaW5lYXJpemVkVG9UeXBlKGludCBpKQogICAgIEZPUl9FQUNIX1dBU01fTUVNT1JZX0xPQURf
T1AobWFjcm8pIFxcCiAgICAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AobWFjcm8pIFxc
CiAgICAgbWFjcm8oRXh0MSwgIDB4RkMsIE9vcHMsIDApIFxcCi0gICAgbWFjcm8oRXh0QXRvbWlj
LCAweEZFLCBPb3BzLCAwKQorICAgIG1hY3JvKEV4dEF0b21pYywgMHhGRSwgT29wcywgMCkgXFwK
KyAgICBtYWNybyhFeHRTaW1kLCAweEZELCBPb3BzLCAwKQogCiAjZGVmaW5lIENSRUFURV9FTlVN
X1ZBTFVFKG5hbWUsIGlkLCAuLi4pIG5hbWUgPSBpZCwKIApAQCAtMzY1LDggKzQ0MCwyMiBAQCBl
bnVtIGNsYXNzIEV4dEF0b21pY09wVHlwZSA6IHVpbnQ4X3QgewogICAgIEZPUl9FQUNIX1dBU01f
RVhUX0FUT01JQ19PVEhFUl9PUChDUkVBVEVfRU5VTV9WQUxVRSkKIH07CiAKK2VudW0gY2xhc3Mg
RXh0U2ltZE9wVHlwZSA6IHVpbnQ4X3QgeworICAgIEZPUl9FQUNIX1dBU01fRVhUX1NJTURfT1Ao
Q1JFQVRFX0VOVU1fVkFMVUUpCisgICAgRk9SX0VBQ0hfV0FTTV9FWFRfU0lNRF9TUEVDSUFMX09Q
KENSRUFURV9FTlVNX1ZBTFVFKQorfTsKKworZW51bSBjbGFzcyBFeHRXYXNtT3BUeXBlIDogdWlu
dDhfdCB7CisgICAgRk9SX0VBQ0hfV0FTTV9FWFRfU0lNRF9PUChDUkVBVEVfRU5VTV9WQUxVRSkK
K307CisKICN1bmRlZiBDUkVBVEVfRU5VTV9WQUxVRQogCitlbnVtIGNsYXNzIFNpbWRMYW5lT3Bl
cmF0aW9uIDogdWludDhfdCB7CisgICAgIiIiICsgc2ltZExhbmVPcGVyYXRpb25zICsgIiIiCit9
OworIiIiICsgc2ltZExhbmVPcGVyYXRpb25zUHJpbnRlciArICIiIgorCiBpbmxpbmUgYm9vbCBp
c0NvbnRyb2xPcChPcFR5cGUgb3ApCiB7CiAgICAgc3dpdGNoIChvcCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtU2ltZExMSW50R2VuZXJhdG9y
SW5saW5lc0hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2Fz
bVNpbWRMTEludEdlbmVyYXRvcklubGluZXNIZWFkZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi42MGFjYWE2ODc3ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21TaW1kTExJbnRHZW5lcmF0b3JJbmxp
bmVzSGVhZGVyLnB5CkBAIC0wLDAgKzEsMTAyIEBACisjIS91c3IvYmluL2VudiBweXRob24zCisK
KyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Om4KKyMKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gZ2VuZXJhdGVXYXNtIGltcG9y
dCAqCitmcm9tIGdlbmVyYXRlU2ltZE9wY29kZXMgaW1wb3J0ICoKK2ltcG9ydCBvcHRwYXJzZQor
aW1wb3J0IHN5cworaW1wb3J0IHJlCisKK3BhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1
c2FnZT0idXNhZ2U6ICVwcm9nIDx3YXNtLmpzb24+IDxXYXNtT3BzLmg+IikKKyhvcHRpb25zLCBh
cmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKHN5cy5hcmd2WzA6XSkKK2lmIGxlbihhcmdzKSAhPSAz
OgorICAgIHBhcnNlci5lcnJvcihwYXJzZXIudXNhZ2UpCisKK2pzb25QYXRoID0gYXJnc1sxXQor
anNvbkRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoanNvblBhdGgp
KQoraGVhZGVyRmlsZSA9IG9wZW4oYXJnc1syXSwgInciKQorCitvcGNvZGVzID0gc2ltZE9wY29k
ZXMoanNvbkRpcmVjdG9yeSkKK2NvbnRlbnRzID0gIiIKK2ZvciBrZXkgaW4gb3Bjb2RlczoKKyAg
ICBvcCA9IG9wY29kZXNba2V5XQorICAgIGlmIG9wWyJpc19zaW1kX3NwZWNpYWxfb3AiXToKKyAg
ICAgICAgY29udGludWUKKworICAgIGhhc0ltbSA9IGxlbihvcFsiaW1tZWRpYXRlIl0pICE9IDAK
KyAgICBhc3NlcnQobGVuKG9wWyJwYXJhbWV0ZXIiXSkpCisgICAgYXNzZXJ0KGxlbihvcFsicmV0
dXJuIl0pID09IDEpCisKKyAgICBzID0gIlxuIgorICAgIHMgPSBzICsgZnVuY3Rpb25HZW5lcmF0
b3JEZWNsKGtleSwgb3AsICJMTEludEdlbmVyYXRvciIpCisgICAgcyA9IHMgKyBmIiAgICByZXN1
bHQgPSBwdXNoKFR5cGVzOjp7Y3BwVHlwZShvcFsncmV0dXJuJ11bMF0pfSk7XG4iCisgICAgcyA9
IHMgKyAiICAgICIgKyBvcFsid2FzbU9wIl0gKyAiOjplbWl0KHRoaXMsIHJlc3VsdCwgIgorICAg
IGlmIGhhc0ltbToKKyAgICAgICAgcyA9IHMgKyAiaW1tLCAiCisKKyAgICBpID0gMAorICAgIGZv
ciB4IGluIG9wWyJwYXJhbWV0ZXIiXToKKyAgICAgICAgcyA9IHMgKyAiYXJnIiArIHN0cihpKQor
ICAgICAgICBpID0gaSArIDEKKyAgICAgICAgaWYgaSA8IGxlbihvcFsicGFyYW1ldGVyIl0pOgor
ICAgICAgICAgICAgcyA9IHMgKyAiLCAiCisKKyAgICBzID0gcyArICIpOyIKKyAgICBzID0gcyAr
ICJcbiAgICByZXR1cm4geyB9O1xufSIKKworICAgIGNvbnRlbnRzID0gY29udGVudHMgKyBzCisK
KworY29udGVudHMgPSAiIiIvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOTyBFRElUISAtIFRoaXMgZmlsZSB3YXMgZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlV2FzbVNpbWRMTEludEdlbmVyYXRvcklubGluZXNIZWFkZXIucHkK
KworIiIiICsgY29udGVudHMgKyAiXG5cbiIKKworaGVhZGVyRmlsZS53cml0ZShjb250ZW50cykK
K2hlYWRlckZpbGUuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNUb1dhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dh
c20uY3BwCmluZGV4IDFmNDY0ZmU5OGJhZC4uYWFmNzYwMGFhYWM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCkBAIC0xODksMTggKzE4OSwxOCBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKENDYWxs
SGVscGVycyYgaml0LCBjb25zdAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgdW5zaWduZWQgdG9T
YXZlU2l6ZSA9IHRvU2F2ZS5udW1iZXJPZlNldEdQUnMoKTsKICAgICAvLyBUaGV5IHNob3VsZCBh
bGwgYmUgY2FsbGVlIHNhdmVzLgotICAgIHRvU2F2ZS5maWx0ZXIoUmVnaXN0ZXJTZXQ6OmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgdG9TYXZlLmZpbHRlcihSZWdpc3RlclNldDEyODo6Y2Fs
bGVlU2F2ZVJlZ2lzdGVycygpLmFsbFJlZ2lzdGVycygpKTsKICAgICBBU1NFUlQodG9TYXZlLm51
bWJlck9mU2V0R1BScygpID09IHRvU2F2ZVNpemUpOwogI2VuZGlmCiAKLSAgICBSZWdpc3RlckF0
T2Zmc2V0TGlzdCByZWdpc3RlcnNUb1NwaWxsKHRvU2F2ZSwgUmVnaXN0ZXJBdE9mZnNldExpc3Q6
Ok9mZnNldEJhc2VUeXBlOjpGcmFtZVBvaW50ZXJCYXNlZCk7CisgICAgUmVnaXN0ZXJBdE9mZnNl
dExpc3QgcmVnaXN0ZXJzVG9TcGlsbChSZWdpc3RlclNldDEyODo6dXNlNjRCaXRzKHRvU2F2ZSks
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpPZmZzZXRCYXNlVHlwZTo6RnJhbWVQb2ludGVyQmFzZWQp
OwogICAgIHJlc3VsdC0+ZW50cnlwb2ludC5jYWxsZWVTYXZlUmVnaXN0ZXJzID0gcmVnaXN0ZXJz
VG9TcGlsbDsKIAotICAgIHNpemVfdCB0b3RhbEZyYW1lU2l6ZSA9IHJlZ2lzdGVyc1RvU3BpbGwu
c2l6ZSgpICogc2l6ZW9mKENQVVJlZ2lzdGVyKTsKKyAgICBzaXplX3QgdG90YWxGcmFtZVNpemUg
PSByZWdpc3RlcnNUb1NwaWxsLmJ5dGVTaXplKCk7CiAgICAgQ2FsbEluZm9ybWF0aW9uIHdhc21G
cmFtZUNvbnZlbnRpb24gPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5jYWxsSW5mb3JtYXRpb25G
b3Ioc2lnbmF0dXJlKTsKICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCBzYXZlZFJlc3VsdFJlZ2lz
dGVycyA9IHdhc21GcmFtZUNvbnZlbnRpb24uY29tcHV0ZVJlc3VsdHNPZmZzZXRMaXN0KCk7CiAg
ICAgdG90YWxGcmFtZVNpemUgKz0gd2FzbUZyYW1lQ29udmVudGlvbi5oZWFkZXJBbmRBcmd1bWVu
dFN0YWNrU2l6ZUluQnl0ZXM7Ci0gICAgdG90YWxGcmFtZVNpemUgKz0gc2F2ZWRSZXN1bHRSZWdp
c3RlcnMuc2l6ZSgpICogc2l6ZW9mKENQVVJlZ2lzdGVyKTsKKyAgICB0b3RhbEZyYW1lU2l6ZSAr
PSBzYXZlZFJlc3VsdFJlZ2lzdGVycy5ieXRlU2l6ZSgpOwogCiAgICAgdG90YWxGcmFtZVNpemUg
PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCB0b3RhbEZy
YW1lU2l6ZSk7CiAgICAgaml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHRv
dGFsRnJhbWVTaXplKSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAppbmRleCAwOGZlMWE3ODcx
MzIuLjI1ZjlhNDQxNTBjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2FzbVRvSlMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21U
b0pTLmNwcApAQCAtODcsNyArODcsNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgIGNv
bnN0IHVuc2lnbmVkIG51bWJlck9mUGFyYW1ldGVycyA9IGFyZ0NvdW50ICsgMTsgLy8gVGhlcmUg
aXMgYSAidGhpcyIgYXJndW1lbnQuCiAgICAgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdzRm9y
Q2FsbCA9IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICsgbnVtYmVyT2ZQYXJhbWV0
ZXJzOwogICAgIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQnl0ZXNGb3JDYWxsID0gbnVtYmVyT2ZS
ZWdzRm9yQ2FsbCAqIHNpemVvZihSZWdpc3RlcikgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyk7
Ci0gICAgY29uc3QgdW5zaWduZWQgc3RhY2tPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBzdGQ6Om1heDx1bnNpZ25lZD4obnVtYmVyT2ZCeXRl
c0ZvckNhbGwsIHNhdmVkUmVzdWx0UmVnaXN0ZXJzLnNpemUoKSAqIHNpemVvZihDUFVSZWdpc3Rl
cikpKTsKKyAgICBjb25zdCB1bnNpZ25lZCBzdGFja09mZnNldCA9IFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHN0ZDo6bWF4PHVuc2lnbmVkPihudW1iZXJP
ZkJ5dGVzRm9yQ2FsbCwgc2F2ZWRSZXN1bHRSZWdpc3RlcnMuYnl0ZVNpemUoKSkpOwogICAgIGpp
dC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzdGFja09mZnNldCksIE1hY3Jv
QXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgSklUOjpBZGRyZXNzIGNhbGxl
ZUZyYW1lID0gQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50
ZXJSZWdpc3RlciwgLXN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSk7CiAKQEAgLTEwNiw2ICsxMDYsNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAg
ICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OlJlZk51bGw6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWY6CisgICAgICAgICAgICBj
YXNlIFR5cGVLaW5kOjpWMTI4OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IC8vIEhhbmRsZWQgYWJvdmUuCiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpF
eHRlcm5yZWY6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgpAQCAtMTgwLDYg
KzE4MSw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+
LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAgICBjYXNlIFR5cGVL
aW5kOjpGdW5jOgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKICAgICAgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlYxMjg6
CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gSGFuZGxl
ZCBhYm92ZS4KICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKICAgICAgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IGM3ODczNzNmN2M5Mi4u
ZTY0ODVlNjQwYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtMTM5LDE4ICsxMzksMTggQEAgYm9vbCBXZWJB
c3NlbWJseUZ1bmN0aW9uOjp1c2VzVGFnUmVnaXN0ZXJzKCkgY29uc3QKIFJlZ2lzdGVyU2V0IFdl
YkFzc2VtYmx5RnVuY3Rpb246OmNhbGxlZVNhdmVzKCkgY29uc3QKIHsKICAgICAvLyBQZXNzaW1p
c3RpY2FsbHkgc2F2ZSBjYWxsZWUgc2F2ZXMgaW4gQm91bmRzQ2hlY2tpbmcgbW9kZSBzaW5jZSB0
aGUgTExJbnQgYWx3YXlzIGJvdW5kcyBjaGVja3MKLSAgICBSZWdpc3RlclNldCByZXN1bHQgPSBX
YXNtOjpQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZShXYXNtOjpNZW1vcnlNb2RlOjpC
b3VuZHNDaGVja2luZyk7CisgICAgYXV0byByZXN1bHQgPSBSZWdpc3RlclNldDEyODo6dXNlNjRC
aXRzKFdhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZlKFdhc206Ok1lbW9yeU1v
ZGU6OkJvdW5kc0NoZWNraW5nKSk7CiAgICAgaWYgKHVzZXNUYWdSZWdpc3RlcnMoKSkgewotICAg
ICAgICBSZWdpc3RlclNldCB0YWdDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZl
UmVnaXN0ZXJzKCk7Ci0gICAgICAgIHRhZ0NhbGxlZVNhdmVzLmZpbHRlcihSZWdpc3RlclNldDo6
cnVudGltZVRhZ1JlZ2lzdGVycygpKTsKKyAgICAgICAgUmVnaXN0ZXJTZXQxMjggdGFnQ2FsbGVl
U2F2ZXMgPSBSZWdpc3RlclNldDEyODo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgICAgICB0
YWdDYWxsZWVTYXZlcy5maWx0ZXIoUmVnaXN0ZXJTZXQxMjg6OnVzZTEyOEJpdHMoUmVnaXN0ZXJT
ZXQ6OnJ1bnRpbWVUYWdSZWdpc3RlcnMoKSkpOwogICAgICAgICByZXN1bHQubWVyZ2UodGFnQ2Fs
bGVlU2F2ZXMpOwogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1bHQu
YWxsUmVnaXN0ZXJzKCk7CiB9CiAKIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IFdlYkFzc2VtYmx5RnVu
Y3Rpb246OnVzZWRDYWxsZWVTYXZlUmVnaXN0ZXJzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUmVn
aXN0ZXJBdE9mZnNldExpc3QgeyBjYWxsZWVTYXZlcygpLCBSZWdpc3RlckF0T2Zmc2V0TGlzdDo6
T2Zmc2V0QmFzZVR5cGU6OkZyYW1lUG9pbnRlckJhc2VkIH07CisgICAgcmV0dXJuIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0IHsgUmVnaXN0ZXJTZXQxMjg6OnVzZTY0Qml0cyhjYWxsZWVTYXZlcygpKSwg
UmVnaXN0ZXJBdE9mZnNldExpc3Q6Ok9mZnNldEJhc2VUeXBlOjpGcmFtZVBvaW50ZXJCYXNlZCB9
OwogfQogCiBwdHJkaWZmX3QgV2ViQXNzZW1ibHlGdW5jdGlvbjo6cHJldmlvdXNJbnN0YW5jZU9m
ZnNldCgpIGNvbnN0CkBAIC0xOTIsMTAgKzE5MiwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SlNFbnRyeVB0clRhZz4gV2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3co
KQogICAgIFdhc206OkNhbGxJbmZvcm1hdGlvbiBqc0NhbGxJbmZvID0gV2FzbTo6anNDYWxsaW5n
Q29udmVudGlvbigpLmNhbGxJbmZvcm1hdGlvbkZvcihzaWduYXR1cmUsIFdhc206OkNhbGxSb2xl
OjpDYWxsZWUpOwogICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IHNhdmVkUmVzdWx0UmVnaXN0ZXJz
ID0gd2FzbUNhbGxJbmZvLmNvbXB1dGVSZXN1bHRzT2Zmc2V0TGlzdCgpOwogCi0gICAgdW5zaWdu
ZWQgdG90YWxGcmFtZVNpemUgPSByZWdpc3RlcnNUb1NwaWxsLnNpemUoKSAqIHNpemVvZihDUFVS
ZWdpc3Rlcik7CisgICAgdW5zaWduZWQgdG90YWxGcmFtZVNpemUgPSByZWdpc3RlcnNUb1NwaWxs
LmJ5dGVTaXplKCk7CiAgICAgdG90YWxGcmFtZVNpemUgKz0gc2l6ZW9mKENQVVJlZ2lzdGVyKTsg
Ly8gU2xvdCBmb3IgdGhlIFZNJ3MgcHJldmlvdXMgd2FzbSBpbnN0YW5jZS4KICAgICB0b3RhbEZy
YW1lU2l6ZSArPSB3YXNtQ2FsbEluZm8uaGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVz
OwotICAgIHRvdGFsRnJhbWVTaXplICs9IHNhdmVkUmVzdWx0UmVnaXN0ZXJzLnNpemUoKSAqIHNp
emVvZihDUFVSZWdpc3Rlcik7CisgICAgdG90YWxGcmFtZVNpemUgKz0gc2F2ZWRSZXN1bHRSZWdp
c3RlcnMuYnl0ZVNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSBXYXNtIGZ1bmN0aW9u
IGNhbGwgZXZlbiBpZiBhcmd1bWVudHMgaW5jbHVkZSBJNjQuCiAgICAgLy8gVGhpcyByZXF1aXJl
cyBJNjQgZXh0cmFjdGlvbiBmcm9tIEJpZ0ludC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL3NpbWRfb3Bjb2Rlcy5jc3YgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9zaW1kX29wY29kZXMuY3N2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uYjlhYTg1NDJkMjZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vc2ltZF9vcGNvZGVzLmNzdgpAQCAtMCwwICsxLDIzNyBAQAorSW5zdHJ1Y3Rpb24saW1w
bGVtZW50ZWQsY2F0ZWdvcnksb3AsYWlyT3AscmV0dXJuLEltbSxwYXJhbXMsZXh0ZW5kZWRPcCxp
bnRlcnByZXRhdGlvbixzaWduRXh0ZW5kLHNjYWxhclR5cGVCYXNlLHNjYWxhclR5cGUsc3BlY2lh
bCwsDQordjEyOC5sb2FkLHksc2ltZC5tZW0sbG9hZCwsdiwsLDB4MDAsdjEyOCxOQSx2b2lkLHZv
aWQseSwsDQordjEyOC5sb2FkOHg4X3MseSxzaW1kLm1lbSxsb2FkX2V4dGVuZF84cywsdixtOm1l
bWFyZywsMHgwMSx2MTI4LFMsdm9pZCx2b2lkLHksLA0KK3YxMjgubG9hZDh4OF91LHksc2ltZC5t
ZW0sbG9hZF9leHRlbmRfOHUsLHYsbTptZW1hcmcsLDB4MDIsdjEyOCxVLHZvaWQsdm9pZCx5LCwN
Cit2MTI4LmxvYWQxNng0X3MseSxzaW1kLm1lbSxsb2FkX2V4dGVuZF8xNnMsLHYsbTptZW1hcmcs
LDB4MDMsdjEyOCxTLHZvaWQsdm9pZCx5LCwNCit2MTI4LmxvYWQxNng0X3UseSxzaW1kLm1lbSxs
b2FkX2V4dGVuZF8xNnUsLHYsbTptZW1hcmcsLDB4MDQsdjEyOCxVLHZvaWQsdm9pZCx5LCwNCit2
MTI4LmxvYWQzMngyX3MseSxzaW1kLm1lbSxsb2FkX2V4dGVuZF8zMnMsLHYsbTptZW1hcmcsLDB4
MDUsdjEyOCxTLHZvaWQsdm9pZCx5LCwNCit2MTI4LmxvYWQzMngyX3UseSxzaW1kLm1lbSxsb2Fk
X2V4dGVuZF8zMnUsLHYsbTptZW1hcmcsLDB4MDYsdjEyOCxVLHZvaWQsdm9pZCx5LCwNCit2MTI4
LmxvYWQ4X3NwbGF0LHksc2ltZC5tZW0sbG9hZF9zcGxhdDgsLHYsLCwweDA3LHYxMjgsTkEsdm9p
ZCx2b2lkLHksLA0KK3YxMjgubG9hZDE2X3NwbGF0LHksc2ltZC5tZW0sbG9hZF9zcGxhdDE2LCx2
LCwsMHgwOCx2MTI4LE5BLHZvaWQsdm9pZCx5LCwNCit2MTI4LmxvYWQzMl9zcGxhdCx5LHNpbWQu
bWVtLGxvYWRfc3BsYXQzMiwsdiwsLDB4MDksdjEyOCxOQSx2b2lkLHZvaWQseSwsDQordjEyOC5s
b2FkNjRfc3BsYXQseSxzaW1kLm1lbSxsb2FkX3NwbGF0NjQsLHYsLCwweDBhLHYxMjgsTkEsdm9p
ZCx2b2lkLHksLA0KK3YxMjguc3RvcmUseSxzaW1kLm1lbSxzdG9yZSwsLG06bWVtYXJnLGRhdGE6
diwweDBiLHYxMjgsTkEsdm9pZCx2b2lkLHksLA0KK3YxMjguY29uc3QseSxzaW1kLnNwZWNpYWws
Y29uc3QsLHYsaTpJbW1CeXRlWzE2XSwsMHgwYyx2MTI4LE5BLHZvaWQsdm9pZCx5LCwNCitpOHgx
Ni5zaHVmZmxlLHksc2ltZC5sYW5lLHNodWZmbGUsLHYsaTpJbW1MYW5lSWR4MzJbMTZdLCJhOnYs
Yjp2IiwweDBkLGk4eDE2LE5BLGk4LGkzMix5LCwNCitpOHgxNi5zd2l6emxlLHksc2ltZC5sYW5l
LHN3aXp6bGUsLHYsLCJhOnYsczp2IiwweDBlLGk4eDE2LE5BLGk4LGkzMixuLCwNCitpOHgxNi5z
cGxhdCx5LHNpbWQuc3BsYXQsc3BsYXQsLHYsLHg6cywweDBmLGk4eDE2LE5BLGk4LGkzMix5LCwN
CitpMTZ4OC5zcGxhdCx5LHNpbWQuc3BsYXQsc3BsYXQsLHYsLHg6cywweDEwLGkxNng4LE5BLGkx
NixpMzIseSwsDQoraTMyeDQuc3BsYXQseSxzaW1kLnNwbGF0LHNwbGF0LCx2LCx4OnMsMHgxMSxp
MzJ4NCxOQSxpMzIsaTMyLHksLA0KK2k2NHgyLnNwbGF0LHksc2ltZC5zcGxhdCxzcGxhdCwsdiws
eDpzLDB4MTIsaTY0eDIsTkEsaTY0LGk2NCx5LCwNCitmMzJ4NC5zcGxhdCx5LHNpbWQuc3BsYXQs
c3BsYXQsLHYsLHg6cywweDEzLGYzMng0LE5BLGYzMixmMzIseSwsDQorZjY0eDIuc3BsYXQseSxz
aW1kLnNwbGF0LHNwbGF0LCx2LCx4OnMsMHgxNCxmNjR4MixOQSxmNjQsZjY0LHksLA0KK2k4eDE2
LmV4dHJhY3RfbGFuZV9zLHksc2ltZC5sYW5lLGV4dHJhY3RfbGFuZSxFeHRyYWN0TGFuZVNpZ25l
ZEludDgscyxpOkltbUxhbmVJZHgxNixhOnYsMHgxNSxpOHgxNixTLGk4LGkzMixuLCwNCitpOHgx
Ni5leHRyYWN0X2xhbmVfdSx5LHNpbWQubGFuZSxleHRyYWN0X2xhbmUsRXh0cmFjdExhbmVVbnNp
Z25lZEludDgscyxpOkltbUxhbmVJZHgxNixhOnYsMHgxNixpOHgxNixVLGk4LGkzMixuLCwNCitp
OHgxNi5yZXBsYWNlX2xhbmUseSxzaW1kLmxhbmUscmVwbGFjZV9sYW5lLFJlcGxhY2VMYW5lSW50
OCx2LGk6SW1tTGFuZUlkeDE2LCJhOnYsIHM6cyIsMHgxNyxpOHgxNixOQSxpOCxpMzIsbiwsDQor
aTE2eDguZXh0cmFjdF9sYW5lX3MseSxzaW1kLmxhbmUsZXh0cmFjdF9sYW5lLEV4dHJhY3RMYW5l
U2lnbmVkSW50MTYscyxpOkltbUxhbmVJZHg4LGE6diwweDE4LGkxNng4LFMsaTE2LGkzMixuLCwN
CitpMTZ4OC5leHRyYWN0X2xhbmVfdSx5LHNpbWQubGFuZSxleHRyYWN0X2xhbmUsRXh0cmFjdExh
bmVVbnNpZ25lZEludDE2LHMsaTpJbW1MYW5lSWR4OCxhOnYsMHgxOSxpMTZ4OCxVLGkxNixpMzIs
biwsDQoraTE2eDgucmVwbGFjZV9sYW5lLHksc2ltZC5sYW5lLHJlcGxhY2VfbGFuZSxSZXBsYWNl
TGFuZUludDE2LHYsaTpJbW1MYW5lSWR4OCwiYTp2LCBzOnMiLDB4MWEsaTE2eDgsTkEsaTE2LGkz
MixuLCwNCitpMzJ4NC5leHRyYWN0X2xhbmUseSxzaW1kLmxhbmUsZXh0cmFjdF9sYW5lLEV4dHJh
Y3RMYW5lSW50MzIscyxpOkltbUxhbmVJZHg0LGE6diwweDFiLGkzMng0LE5BLGkzMixpMzIsbiws
DQoraTMyeDQucmVwbGFjZV9sYW5lLHksc2ltZC5sYW5lLHJlcGxhY2VfbGFuZSxSZXBsYWNlTGFu
ZUludDMyLHYsaTpJbW1MYW5lSWR4NCwiYTp2LCBzOnMiLDB4MWMsaTMyeDQsTkEsaTMyLGkzMixu
LCwNCitpNjR4Mi5leHRyYWN0X2xhbmUseSxzaW1kLmxhbmUsZXh0cmFjdF9sYW5lLEV4dHJhY3RM
YW5lSW50NjQscyxpOkltbUxhbmVJZHgyLGE6diwweDFkLGk2NHgyLE5BLGk2NCxpNjQsbiwsDQor
aTY0eDIucmVwbGFjZV9sYW5lLHksc2ltZC5sYW5lLHJlcGxhY2VfbGFuZSxSZXBsYWNlTGFuZUlu
dDY0LHYsaTpJbW1MYW5lSWR4MiwiYTp2LCBzOnMiLDB4MWUsaTY0eDIsTkEsaTY0LGk2NCxuLCwN
CitmMzJ4NC5leHRyYWN0X2xhbmUseSxzaW1kLmxhbmUsZXh0cmFjdF9sYW5lLEV4dHJhY3RMYW5l
RmxvYXQzMixzLGk6SW1tTGFuZUlkeDQsYTp2LDB4MWYsZjMyeDQsTkEsZjMyLGYzMixuLCwNCitm
MzJ4NC5yZXBsYWNlX2xhbmUseSxzaW1kLmxhbmUscmVwbGFjZV9sYW5lLFJlcGxhY2VMYW5lRmxv
YXQzMix2LGk6SW1tTGFuZUlkeDQsImE6diwgczpzIiwweDIwLGYzMng0LE5BLGYzMixmMzIsbiws
DQorZjY0eDIuZXh0cmFjdF9sYW5lLHksc2ltZC5sYW5lLGV4dHJhY3RfbGFuZSxFeHRyYWN0TGFu
ZUZsb2F0NjQscyxpOkltbUxhbmVJZHgyLGE6diwweDIxLGY2NHgyLE5BLGY2NCxmNjQsbiwsDQor
ZjY0eDIucmVwbGFjZV9sYW5lLHksc2ltZC5sYW5lLHJlcGxhY2VfbGFuZSxSZXBsYWNlTGFuZUZs
b2F0NjQsdixpOkltbUxhbmVJZHgyLCJhOnYsIHM6cyIsMHgyMixmNjR4MixOQSxmNjQsZjY0LG4s
LA0KK2k4eDE2LmVxLHksc2ltZC5jbXAsZXEsLHYsLCJhOnYsIHM6cyIsMHgyMyxpOHgxNixOQSxp
OCxpMzIsbiwsZXENCitpOHgxNi5uZSx5LHNpbWQuY21wLG5lLCx2LCwiYTp2LGI6diIsMHgyNCxp
OHgxNixOQSxpOCxpMzIsbiwsbmUNCitpOHgxNi5sdF9zLHksc2ltZC5jbXAsbHQsLHYsLCJhOnYs
Yjp2IiwweDI1LGk4eDE2LFMsaTgsaTMyLG4sLGx0X3MNCitpOHgxNi5sdF91LHksc2ltZC5jbXAs
bHQsLHYsLCJhOnYsYjp2IiwweDI2LGk4eDE2LFUsaTgsaTMyLG4sLGx0X3UNCitpOHgxNi5ndF9z
LHksc2ltZC5jbXAsZ3QsLHYsLCJhOnYsYjp2IiwweDI3LGk4eDE2LFMsaTgsaTMyLG4sLGd0X3MN
CitpOHgxNi5ndF91LHksc2ltZC5jbXAsZ3QsLHYsLCJhOnYsYjp2IiwweDI4LGk4eDE2LFUsaTgs
aTMyLG4sLGd0X3UNCitpOHgxNi5sZV9zLHksc2ltZC5jbXAsbGUsLHYsLCJhOnYsYjp2IiwweDI5
LGk4eDE2LFMsaTgsaTMyLG4sLGxlX3MNCitpOHgxNi5sZV91LHksc2ltZC5jbXAsbGUsLHYsLCJh
OnYsYjp2IiwweDJhLGk4eDE2LFUsaTgsaTMyLG4sLGxlX3UNCitpOHgxNi5nZV9zLHksc2ltZC5j
bXAsZ2UsLHYsLCJhOnYsYjp2IiwweDJiLGk4eDE2LFMsaTgsaTMyLG4sLGdlX3MNCitpOHgxNi5n
ZV91LHksc2ltZC5jbXAsZ2UsLHYsLCJhOnYsYjp2IiwweDJjLGk4eDE2LFUsaTgsaTMyLG4sLGdl
X3UNCitpMTZ4OC5lcSx5LHNpbWQuY21wLGVxLCx2LCwiYTp2LGI6diIsMHgyZCxpMTZ4OCxOQSxp
MTYsaTMyLG4sLGVxDQoraTE2eDgubmUseSxzaW1kLmNtcCxuZSwsdiwsImE6dixiOnYiLDB4MmUs
aTE2eDgsTkEsaTE2LGkzMixuLCxuZQ0KK2kxNng4Lmx0X3MseSxzaW1kLmNtcCxsdCwsdiwsImE6
dixiOnYiLDB4MmYsaTE2eDgsUyxpMTYsaTMyLG4sLGx0X3MNCitpMTZ4OC5sdF91LHksc2ltZC5j
bXAsbHQsLHYsLCJhOnYsYjp2IiwweDMwLGkxNng4LFUsaTE2LGkzMixuLCxsdF91DQoraTE2eDgu
Z3Rfcyx5LHNpbWQuY21wLGd0LCx2LCwiYTp2LGI6diIsMHgzMSxpMTZ4OCxTLGkxNixpMzIsbiws
Z3Rfcw0KK2kxNng4Lmd0X3UseSxzaW1kLmNtcCxndCwsdiwsImE6dixiOnYiLDB4MzIsaTE2eDgs
VSxpMTYsaTMyLG4sLGd0X3UNCitpMTZ4OC5sZV9zLHksc2ltZC5jbXAsbGUsLHYsLCJhOnYsYjp2
IiwweDMzLGkxNng4LFMsaTE2LGkzMixuLCxsZV9zDQoraTE2eDgubGVfdSx5LHNpbWQuY21wLGxl
LCx2LCwiYTp2LGI6diIsMHgzNCxpMTZ4OCxVLGkxNixpMzIsbiwsbGVfdQ0KK2kxNng4LmdlX3Ms
eSxzaW1kLmNtcCxnZSwsdiwsImE6dixiOnYiLDB4MzUsaTE2eDgsUyxpMTYsaTMyLG4sLGdlX3MN
CitpMTZ4OC5nZV91LHksc2ltZC5jbXAsZ2UsLHYsLCJhOnYsYjp2IiwweDM2LGkxNng4LFUsaTE2
LGkzMixuLCxnZV91DQoraTMyeDQuZXEseSxzaW1kLmNtcCxlcSwsdiwsImE6dixiOnYiLDB4Mzcs
aTMyeDQsTkEsaTMyLGkzMixuLCxlcQ0KK2kzMng0Lm5lLHksc2ltZC5jbXAsbmUsLHYsLCJhOnYs
Yjp2IiwweDM4LGkzMng0LE5BLGkzMixpMzIsbiwsbmUNCitpMzJ4NC5sdF9zLHksc2ltZC5jbXAs
bHQsLHYsLCJhOnYsYjp2IiwweDM5LGkzMng0LFMsaTMyLGkzMixuLCxsdF9zDQoraTMyeDQubHRf
dSx5LHNpbWQuY21wLGx0LCx2LCwiYTp2LGI6diIsMHgzYSxpMzJ4NCxVLGkzMixpMzIsbiwsbHRf
dQ0KK2kzMng0Lmd0X3MseSxzaW1kLmNtcCxndCwsdiwsImE6dixiOnYiLDB4M2IsaTMyeDQsUyxp
MzIsaTMyLG4sLGd0X3MNCitpMzJ4NC5ndF91LHksc2ltZC5jbXAsZ3QsLHYsLCJhOnYsYjp2Iiww
eDNjLGkzMng0LFUsaTMyLGkzMixuLCxndF91DQoraTMyeDQubGVfcyx5LHNpbWQuY21wLGxlLCx2
LCwiYTp2LGI6diIsMHgzZCxpMzJ4NCxTLGkzMixpMzIsbiwsbGVfcw0KK2kzMng0LmxlX3UseSxz
aW1kLmNtcCxsZSwsdiwsImE6dixiOnYiLDB4M2UsaTMyeDQsVSxpMzIsaTMyLG4sLGxlX3UNCitp
MzJ4NC5nZV9zLHksc2ltZC5jbXAsZ2UsLHYsLCJhOnYsYjp2IiwweDNmLGkzMng0LFMsaTMyLGkz
MixuLCxnZV9zDQoraTMyeDQuZ2VfdSx5LHNpbWQuY21wLGdlLCx2LCwiYTp2LGI6diIsMHg0MCxp
MzJ4NCxVLGkzMixpMzIsbiwsZ2VfdQ0KK2YzMng0LmVxLHksc2ltZC5jbXAsZXEsLHYsLCJhOnYs
Yjp2IiwweDQxLGYzMng0LE5BLGYzMixmMzIsbiwsZXENCitmMzJ4NC5uZSx5LHNpbWQuY21wLG5l
LCx2LCwiYTp2LGI6diIsMHg0MixmMzJ4NCxOQSxmMzIsZjMyLG4sLG5lDQorZjMyeDQubHQseSxz
aW1kLmNtcCxsdCwsdiwsImE6dixiOnYiLDB4NDMsZjMyeDQsTkEsZjMyLGYzMixuLCxsdA0KK2Yz
Mng0Lmd0LHksc2ltZC5jbXAsZ3QsLHYsLCJhOnYsYjp2IiwweDQ0LGYzMng0LE5BLGYzMixmMzIs
biwsZ3QNCitmMzJ4NC5sZSx5LHNpbWQuY21wLGxlLCx2LCwiYTp2LGI6diIsMHg0NSxmMzJ4NCxO
QSxmMzIsZjMyLG4sLGxlDQorZjMyeDQuZ2UseSxzaW1kLmNtcCxnZSwsdiwsImE6dixiOnYiLDB4
NDYsZjMyeDQsTkEsZjMyLGYzMixuLCxnZQ0KK2Y2NHgyLmVxLHksc2ltZC5jbXAsZXEsLHYsLCJh
OnYsYjp2IiwweDQ3LGY2NHgyLE5BLGY2NCxmNjQsbiwsZXENCitmNjR4Mi5uZSx5LHNpbWQuY21w
LG5lLCx2LCwiYTp2LGI6diIsMHg0OCxmNjR4MixOQSxmNjQsZjY0LG4sLG5lDQorZjY0eDIubHQs
eSxzaW1kLmNtcCxsdCwsdiwsImE6dixiOnYiLDB4NDksZjY0eDIsTkEsZjY0LGY2NCxuLCxsdA0K
K2Y2NHgyLmd0LHksc2ltZC5jbXAsZ3QsLHYsLCJhOnYsYjp2IiwweDRhLGY2NHgyLE5BLGY2NCxm
NjQsbiwsZ3QNCitmNjR4Mi5sZSx5LHNpbWQuY21wLGxlLCx2LCwiYTp2LGI6diIsMHg0YixmNjR4
MixOQSxmNjQsZjY0LG4sLGxlDQorZjY0eDIuZ2UseSxzaW1kLmNtcCxnZSwsdiwsImE6dixiOnYi
LDB4NGMsZjY0eDIsTkEsZjY0LGY2NCxuLCxnZQ0KK3YxMjgubm90LHksc2ltZC5iaXR3aXNlLG5v
dCwsdiwsYTp2LDB4NGQsdjEyOCxOQSx2b2lkLHZvaWQsbiwsbm90DQordjEyOC5hbmQseSxzaW1k
LmJpdHdpc2UsYW5kLCx2LCwiYTp2LGI6diIsMHg0ZSx2MTI4LE5BLHZvaWQsdm9pZCxuLCxhbmQN
Cit2MTI4LmFuZG5vdCx5LHNpbWQuYml0d2lzZSxhbmRub3QsLHYsLCJhOnYsYjp2IiwweDRmLHYx
MjgsTkEsdm9pZCx2b2lkLG4sLGFuZG5vdA0KK3YxMjgub3IseSxzaW1kLmJpdHdpc2Usb3IsLHYs
LCJhOnYsYjp2IiwweDUwLHYxMjgsTkEsdm9pZCx2b2lkLG4sLG9yDQordjEyOC54b3IseSxzaW1k
LmJpdHdpc2UseG9yLCx2LCwiYTp2LGI6diIsMHg1MSx2MTI4LE5BLHZvaWQsdm9pZCxuLCx4b3IN
Cit2MTI4LmJpdHNlbGVjdCx5LHNpbWQuYml0d2lzZSxiaXR3aXNlX3NlbGVjdCwsdiwsInYxOnYs
djI6dixjOnYiLDB4NTIsdjEyOCxOQSx2b2lkLHZvaWQsbiwsYml0c2VsZWN0DQordjEyOC5hbnlf
dHJ1ZSx5LHNpbWQucmVkdWNlLGFueV90cnVlLCxpMzIsLGE6diwweDUzLHYxMjgsTkEsdm9pZCx2
b2lkLG4sLGFueV90cnVlDQordjEyOC5sb2FkOF9sYW5lLHksc2ltZC5tZW0sbG9hZF9sYW5lOCws
diwseDp2LDB4NTQsdjEyOCxOQSx2b2lkLHZvaWQseSwsbG9hZDhfbGFuZQ0KK3YxMjgubG9hZDE2
X2xhbmUseSxzaW1kLm1lbSxsb2FkX2xhbmUxNiwsdiwseDp2LDB4NTUsdjEyOCxOQSx2b2lkLHZv
aWQseSwsbG9hZDE2X2xhbmUNCit2MTI4LmxvYWQzMl9sYW5lLHksc2ltZC5tZW0sbG9hZF9sYW5l
MzIsLHYsLHg6diwweDU2LHYxMjgsTkEsdm9pZCx2b2lkLHksLGxvYWQzMl9sYW5lDQordjEyOC5s
b2FkNjRfbGFuZSx5LHNpbWQubWVtLGxvYWRfbGFuZTY0LCx2LCx4OnYsMHg1Nyx2MTI4LE5BLHZv
aWQsdm9pZCx5LCxsb2FkNjRfbGFuZQ0KK3YxMjguc3RvcmU4X2xhbmUseSxzaW1kLm1lbSxzdG9y
ZV9sYW5lOCwsLCxkYXRhOnYsMHg1OCx2MTI4LE5BLHZvaWQsdm9pZCx5LCxzdG9yZThfbGFuZQ0K
K3YxMjguc3RvcmUxNl9sYW5lLHksc2ltZC5tZW0sc3RvcmVfbGFuZTE2LCwsLGRhdGE6diwweDU5
LHYxMjgsTkEsdm9pZCx2b2lkLHksLHN0b3JlMTZfbGFuZQ0KK3YxMjguc3RvcmUzMl9sYW5lLHks
c2ltZC5tZW0sc3RvcmVfbGFuZTMyLCwsLGRhdGE6diwweDVhLHYxMjgsTkEsdm9pZCx2b2lkLHks
LHN0b3JlMzJfbGFuZQ0KK3YxMjguc3RvcmU2NF9sYW5lLHksc2ltZC5tZW0sc3RvcmVfbGFuZTY0
LCwsLGRhdGE6diwweDViLHYxMjgsTkEsdm9pZCx2b2lkLHksLHN0b3JlNjRfbGFuZQ0KK3YxMjgu
bG9hZDMyX3plcm8seSxzaW1kLm1lbSxsb2FkX3BhZDMyLCx2LG06bWVtYXJnLCwweDVjLHYxMjgs
TkEsdm9pZCx2b2lkLHksLGxvYWQzMl96ZXJvDQordjEyOC5sb2FkNjRfemVybyx5LHNpbWQubWVt
LGxvYWRfcGFkNjQsLHYsbTptZW1hcmcsLDB4NWQsdjEyOCxOQSx2b2lkLHZvaWQseSwsbG9hZDY0
X3plcm8NCitmMzJ4NC5kZW1vdGVfZjY0eDJfemVybyx5LHNpbWQuYXJpdGgsZGVtb3RlLCx2LCxh
OnYsMHg1ZSxmNjR4MixOQSxmNjQsZjY0LG4sLGRlbW90ZV9mNjR4Ml96ZXJvDQorZjY0eDIucHJv
bW90ZV9sb3dfZjMyeDQseSxzaW1kLmFyaXRoLHByb21vdGUsLHYsLGE6diwweDVmLGYzMng0LE5B
LGYzMixmMzIsbiwscHJvbW90ZV9sb3dfZjMyeDQNCitpOHgxNi5hYnMseSxzaW1kLmFyaXRoLGFi
cywsdiwsYTp2LDB4NjAsaTh4MTYsTkEsaTgsaTMyLG4sLGFicw0KK2k4eDE2Lm5lZyx5LHNpbWQu
YXJpdGgsbmVnLCx2LCxhOnYsMHg2MSxpOHgxNixOQSxpOCxpMzIsbiwsbmVnDQoraTh4MTYucG9w
Y250LHksc2ltZC5hcml0aCxwb3BjbnQsLHYsLGE6diwweDYyLGk4eDE2LE5BLGk4LGkzMixuLCxw
b3BjbnQNCitpOHgxNi5hbGxfdHJ1ZSx5LHNpbWQuYml0d2lzZSxhbGxfdHJ1ZSwsaTMyLCxhOnYs
MHg2MyxpOHgxNixOQSxpOCxpMzIsbiwsYWxsX3RydWUNCitpOHgxNi5iaXRtYXNrLHksc2ltZC5y
ZWR1Y2UsYml0bWFzaywsaTMyLCxhOnYsMHg2NCxpOHgxNixOQSxpOCxpMzIsbiwsYml0bWFzaw0K
K2k4eDE2Lm5hcnJvd19pMTZ4OF9zLHksc2ltZC5hcml0aCxuYXJyb3csLHYsLCJhOnYsIGI6diIs
MHg2NSxpMTZ4OCxTLGkxNixpMzIsbiwsbmFycm93X2kxNng4X3MNCitpOHgxNi5uYXJyb3dfaTE2
eDhfdSx5LHNpbWQuYXJpdGgsbmFycm93LCx2LCwiYTp2LCBiOnYiLDB4NjYsaTE2eDgsVSxpMTYs
aTMyLG4sLG5hcnJvd19pMTZ4OF91DQorZjMyeDQuY2VpbCx5LHNpbWQuYXJpdGgsY2VpbCwsdiws
YTp2LDB4NjcsZjMyeDQsTkEsZjMyLGYzMixuLCxjZWlsDQorZjMyeDQuZmxvb3IseSxzaW1kLmFy
aXRoLGZsb29yLCx2LCxhOnYsMHg2OCxmMzJ4NCxOQSxmMzIsZjMyLG4sLGZsb29yDQorZjMyeDQu
dHJ1bmMseSxzaW1kLmFyaXRoLHRydW5jLCx2LCxhOnYsMHg2OSxmMzJ4NCxOQSxmMzIsZjMyLG4s
LHRydW5jDQorZjMyeDQubmVhcmVzdCx5LHNpbWQuYXJpdGgsbmVhcmVzdCwsdiwsYTp2LDB4NmEs
ZjMyeDQsTkEsZjMyLGYzMixuLCxuZWFyZXN0DQoraTh4MTYuc2hsLHksc2ltZC5zaGlmdCxzaGws
LHYsLCJhOnYsIGI6aTMyIiwweDZiLGk4eDE2LE5BLGk4LGkzMix5LCxzaGwNCitpOHgxNi5zaHJf
cyx5LHNpbWQuc2hpZnQsc2hyLCx2LCwiYTp2LCBiOmkzMiIsMHg2YyxpOHgxNixTLGk4LGkzMix5
LCxzaHJfcw0KK2k4eDE2LnNocl91LHksc2ltZC5zaGlmdCxzaHIsLHYsLCJhOnYsIGI6aTMyIiww
eDZkLGk4eDE2LFUsaTgsaTMyLHksLHNocl91DQoraTh4MTYuYWRkLHksc2ltZC5hcml0aCxhZGQs
LHYsLCJhOnYsIGI6diIsMHg2ZSxpOHgxNixOQSxpOCxpMzIsbiwsYWRkDQoraTh4MTYuYWRkX3Nh
dF9zLHksc2ltZC5hcml0aCxhZGRfc2F0LCx2LCwiYTp2LCBiOnYiLDB4NmYsaTh4MTYsUyxpOCxp
MzIsbiwsYWRkX3NhdF9zDQoraTh4MTYuYWRkX3NhdF91LHksc2ltZC5hcml0aCxhZGRfc2F0LCx2
LCwiYTp2LCBiOnYiLDB4NzAsaTh4MTYsVSxpOCxpMzIsbiwsYWRkX3NhdF91DQoraTh4MTYuc3Vi
LHksc2ltZC5hcml0aCxzdWIsLHYsLCJhOnYsIGI6diIsMHg3MSxpOHgxNixOQSxpOCxpMzIsbiws
c3ViDQoraTh4MTYuc3ViX3NhdF9zLHksc2ltZC5hcml0aCxzdWJfc2F0LCx2LCwiYTp2LCBiOnYi
LDB4NzIsaTh4MTYsUyxpOCxpMzIsbiwsc3ViX3NhdF9zDQoraTh4MTYuc3ViX3NhdF91LHksc2lt
ZC5hcml0aCxzdWJfc2F0LCx2LCwiYTp2LCBiOnYiLDB4NzMsaTh4MTYsVSxpOCxpMzIsbiwsc3Vi
X3NhdF91DQorZjY0eDIuY2VpbCx5LHNpbWQuYXJpdGgsY2VpbCwsdiwsYTp2LDB4NzQsZjY0eDIs
TkEsZjY0LGY2NCxuLCxjZWlsDQorZjY0eDIuZmxvb3IseSxzaW1kLmFyaXRoLGZsb29yLCx2LCxh
OnYsMHg3NSxmNjR4MixOQSxmNjQsZjY0LG4sLGZsb29yDQoraTh4MTYubWluX3MseSxzaW1kLmFy
aXRoLG1pbiwsdiwsImE6diwgYjp2IiwweDc2LGk4eDE2LFMsaTgsaTMyLG4sLG1pbl9zDQoraTh4
MTYubWluX3UseSxzaW1kLmFyaXRoLG1pbiwsdiwsImE6diwgYjp2IiwweDc3LGk4eDE2LFUsaTgs
aTMyLG4sLG1pbl91DQoraTh4MTYubWF4X3MseSxzaW1kLmFyaXRoLG1heCwsdiwsImE6diwgYjp2
IiwweDc4LGk4eDE2LFMsaTgsaTMyLG4sLG1heF9zDQoraTh4MTYubWF4X3UseSxzaW1kLmFyaXRo
LG1heCwsdiwsImE6diwgYjp2IiwweDc5LGk4eDE2LFUsaTgsaTMyLG4sLG1heF91DQorZjY0eDIu
dHJ1bmMseSxzaW1kLmFyaXRoLHRydW5jLCx2LCxhOnYsMHg3YSxmNjR4MixOQSxmNjQsZjY0LG4s
LHRydW5jDQoraTh4MTYuYXZncl91LHksc2ltZC5yb3VuZCxhdmdfcm91bmQsLHYsLCJhOnYsYjp2
IiwweDdiLGk4eDE2LE5BLGk4LGkzMixuLCxhdmdyX3UNCitpMTZ4OC5leHRhZGRfcGFpcndpc2Vf
aTh4MTZfcyx5LHNpbWQuZXh0YWRkLGV4dGFkZF9wYWlyd2lzZSwsdiwsYTp2LDB4N2MsaTE2eDgs
UyxpMTYsaTMyLG4sLGV4dGFkZF9wYWlyd2lzZV9pOHgxNl9zDQoraTE2eDguZXh0YWRkX3BhaXJ3
aXNlX2k4eDE2X3UseSxzaW1kLmV4dGFkZCxleHRhZGRfcGFpcndpc2UsLHYsLGE6diwweDdkLGkx
Nng4LFUsaTE2LGkzMixuLCxleHRhZGRfcGFpcndpc2VfaTh4MTZfdQ0KK2kzMng0LmV4dGFkZF9w
YWlyd2lzZV9pMTZ4OF9zLHksc2ltZC5leHRhZGQsZXh0YWRkX3BhaXJ3aXNlLCx2LCxhOnYsMHg3
ZSxpMzJ4NCxTLGkzMixpMzIsbiwsZXh0YWRkX3BhaXJ3aXNlX2kxNng4X3MNCitpMzJ4NC5leHRh
ZGRfcGFpcndpc2VfaTE2eDhfdSx5LHNpbWQuZXh0YWRkLGV4dGFkZF9wYWlyd2lzZSwsdiwsYTp2
LDB4N2YsaTMyeDQsVSxpMzIsaTMyLG4sLGV4dGFkZF9wYWlyd2lzZV9pMTZ4OF91DQoraTE2eDgu
YWJzLHksc2ltZC5hcml0aCxhYnMsLHYsLGE6diwweDgwLGkxNng4LE5BLGkxNixpMzIsbiwsYWJz
DQoraTE2eDgubmVnLHksc2ltZC5hcml0aCxuZWcsLHYsLGE6diwweDgxLGkxNng4LE5BLGkxNixp
MzIsbiwsbmVnDQoraTE2eDgucTE1bXVscl9zYXRfcyx5LHNpbWQuYXJpdGgsbXVsX3NhdCwsdiws
ImE6diwgYjp2IiwweDgyLGkxNng4LE5BLGkxNixpMzIsbiwscTE1bXVscl9zYXRfcw0KK2kxNng4
LmFsbF90cnVlLHksc2ltZC5iaXR3aXNlLGFsbF90cnVlLCxpMzIsLGE6diwweDgzLGkxNng4LE5B
LGkxNixpMzIsbiwsYWxsX3RydWUNCitpMTZ4OC5iaXRtYXNrLHksc2ltZC5yZWR1Y2UsYml0bWFz
aywsaTMyLCxhOnYsMHg4NCxpMTZ4OCxOQSxpMTYsaTMyLG4sLGJpdG1hc2sNCitpMTZ4OC5uYXJy
b3dfaTMyeDRfcyx5LHNpbWQuYXJpdGgsbmFycm93LCx2LCwiYTp2LCBiOnYiLDB4ODUsaTMyeDQs
UyxpMzIsaTMyLG4sLG5hcnJvd19pMzJ4NF9zDQoraTE2eDgubmFycm93X2kzMng0X3UseSxzaW1k
LmFyaXRoLG5hcnJvdywsdiwsImE6diwgYjp2IiwweDg2LGkzMng0LFUsaTMyLGkzMixuLCxuYXJy
b3dfaTMyeDRfdQ0KK2kxNng4LmV4dGVuZF9sb3dfaTh4MTZfcyx5LHNpbWQuYXJpdGgsZXh0ZW5k
X2xvdywsdiwsYTp2LDB4ODcsaTh4MTYsUyxpOCxpOCxuLCxleHRlbmRfbG93X2k4eDE2X3MNCitp
MTZ4OC5leHRlbmRfaGlnaF9pOHgxNl9zLHksc2ltZC5hcml0aCxleHRlbmRfaGlnaCwsdiwsYTp2
LDB4ODgsaTh4MTYsUyxpOCxpOCxuLCxleHRlbmRfaGlnaF9pOHgxNl9zDQoraTE2eDguZXh0ZW5k
X2xvd19pOHgxNl91LHksc2ltZC5hcml0aCxleHRlbmRfbG93LCx2LCxhOnYsMHg4OSxpOHgxNixV
LGk4LGk4LG4sLGV4dGVuZF9sb3dfaTh4MTZfdQ0KK2kxNng4LmV4dGVuZF9oaWdoX2k4eDE2X3Us
eSxzaW1kLmFyaXRoLGV4dGVuZF9oaWdoLCx2LCxhOnYsMHg4YSxpOHgxNixVLGk4LGk4LG4sLGV4
dGVuZF9oaWdoX2k4eDE2X3UNCitpMTZ4OC5zaGwseSxzaW1kLnNoaWZ0LHNobCwsdiwsImE6diwg
YjppMzIiLDB4OGIsaTE2eDgsTkEsaTE2LGkzMix5LCxzaGwNCitpMTZ4OC5zaHJfcyx5LHNpbWQu
c2hpZnQsc2hyLCx2LCwiYTp2LCBiOmkzMiIsMHg4YyxpMTZ4OCxTLGkxNixpMzIseSwsc2hyX3MN
CitpMTZ4OC5zaHJfdSx5LHNpbWQuc2hpZnQsc2hyLCx2LCwiYTp2LCBiOmkzMiIsMHg4ZCxpMTZ4
OCxVLGkxNixpMzIseSwsc2hyX3UNCitpMTZ4OC5hZGQseSxzaW1kLmFyaXRoLGFkZCwsdiwsImE6
diwgYjp2IiwweDhlLGkxNng4LE5BLGkxNixpMzIsbiwsYWRkDQoraTE2eDguYWRkX3NhdF9zLHks
c2ltZC5hcml0aCxhZGRfc2F0LCx2LCwiYTp2LCBiOnYiLDB4OGYsaTE2eDgsUyxpMTYsaTMyLG4s
LGFkZF9zYXRfcw0KK2kxNng4LmFkZF9zYXRfdSx5LHNpbWQuYXJpdGgsYWRkX3NhdCwsdiwsImE6
diwgYjp2IiwweDkwLGkxNng4LFUsaTE2LGkzMixuLCxhZGRfc2F0X3UNCitpMTZ4OC5zdWIseSxz
aW1kLmFyaXRoLHN1YiwsdiwsImE6diwgYjp2IiwweDkxLGkxNng4LE5BLGkxNixpMzIsbiwsc3Vi
DQoraTE2eDguc3ViX3NhdF9zLHksc2ltZC5hcml0aCxzdWJfc2F0LCx2LCwiYTp2LCBiOnYiLDB4
OTIsaTE2eDgsUyxpMTYsaTMyLG4sLHN1Yl9zYXRfcw0KK2kxNng4LnN1Yl9zYXRfdSx5LHNpbWQu
YXJpdGgsc3ViX3NhdCwsdiwsImE6diwgYjp2IiwweDkzLGkxNng4LFUsaTE2LGkzMixuLCxzdWJf
c2F0X3UNCitmNjR4Mi5uZWFyZXN0LHksc2ltZC5hcml0aCxuZWFyZXN0LCx2LCxhOnYsMHg5NCxm
NjR4MixOQSxmNjQsZjY0LG4sLG5lYXJlc3QNCitpMTZ4OC5tdWwseSxzaW1kLmFyaXRoLG11bCws
diwsImE6diwgYjp2IiwweDk1LGkxNng4LE5BLGkxNixpMzIsbiwsbXVsDQoraTE2eDgubWluX3Ms
eSxzaW1kLmFyaXRoLG1pbiwsdiwsImE6diwgYjp2IiwweDk2LGkxNng4LFMsaTE2LGkzMixuLCxt
aW5fcw0KK2kxNng4Lm1pbl91LHksc2ltZC5hcml0aCxtaW4sLHYsLCJhOnYsIGI6diIsMHg5Nyxp
MTZ4OCxVLGkxNixpMzIsbiwsbWluX3UNCitpMTZ4OC5tYXhfcyx5LHNpbWQuYXJpdGgsbWF4LCx2
LCwiYTp2LCBiOnYiLDB4OTgsaTE2eDgsUyxpMTYsaTMyLG4sLG1heF9zDQoraTE2eDgubWF4X3Us
eSxzaW1kLmFyaXRoLG1heCwsdiwsImE6diwgYjp2IiwweDk5LGkxNng4LFUsaTE2LGkzMixuLCxt
YXhfdQ0KK2kxNng4LmF2Z3JfdSx5LHNpbWQucm91bmQsYXZnX3JvdW5kLCx2LCwiYTp2LGI6diIs
MHg5YixpMTZ4OCxOQSxpMTYsaTMyLG4sLGF2Z3JfdQ0KK2kxNng4LmV4dG11bF9sb3dfaTh4MTZf
cyx5LHNpbWQuZXh0bXVsLGV4dG11bF9sb3csLHYsLCJhOnYsIGI6diIsMHg5YyxpOHgxNixTLGk4
LGkzMix5LCxleHRtdWxfbG93X2k4eDE2X3MNCitpMTZ4OC5leHRtdWxfaGlnaF9pOHgxNl9zLHks
c2ltZC5leHRtdWwsZXh0bXVsX2hpZ2gsLHYsLCJhOnYsIGI6diIsMHg5ZCxpOHgxNixTLGk4LGkz
Mix5LCxleHRtdWxfaGlnaF9pOHgxNl9zDQoraTE2eDguZXh0bXVsX2xvd19pOHgxNl91LHksc2lt
ZC5leHRtdWwsZXh0bXVsX2xvdywsdiwsImE6diwgYjp2IiwweDllLGk4eDE2LFUsaTgsaTMyLHks
LGV4dG11bF9sb3dfaTh4MTZfdQ0KK2kxNng4LmV4dG11bF9oaWdoX2k4eDE2X3UseSxzaW1kLmV4
dG11bCxleHRtdWxfaGlnaCwsdiwsImE6diwgYjp2IiwweDlmLGk4eDE2LFUsaTgsaTMyLHksLGV4
dG11bF9oaWdoX2k4eDE2X3UNCitpMzJ4NC5hYnMseSxzaW1kLmFyaXRoLGFicywsdiwsYTp2LDB4
YTAsaTMyeDQsTkEsaTMyLGkzMixuLCxhYnMNCitpMzJ4NC5uZWcseSxzaW1kLmFyaXRoLG5lZyws
diwsYTp2LDB4YTEsaTMyeDQsTkEsaTMyLGkzMixuLCxuZWcNCitpMzJ4NC5hbGxfdHJ1ZSx5LHNp
bWQuYml0d2lzZSxhbGxfdHJ1ZSwsaTMyLCxhOnYsMHhhMyxpMzJ4NCxOQSxpMzIsaTMyLG4sLGFs
bF90cnVlDQoraTMyeDQuYml0bWFzayx5LHNpbWQucmVkdWNlLGJpdG1hc2ssLGkzMiwsYTp2LDB4
YTQsaTMyeDQsTkEsaTMyLGkzMixuLCxiaXRtYXNrDQoraTMyeDQuZXh0ZW5kX2xvd19pMTZ4OF9z
LHksc2ltZC5hcml0aCxleHRlbmRfbG93LCx2LCxhOnYsMHhhNyxpMTZ4OCxTLGkxNixpMTYsbiws
ZXh0ZW5kX2xvd19pMTZ4OF9zDQoraTMyeDQuZXh0ZW5kX2hpZ2hfaTE2eDhfcyx5LHNpbWQuYXJp
dGgsZXh0ZW5kX2hpZ2gsLHYsLGE6diwweGE4LGkxNng4LFMsaTE2LGkxNixuLCxleHRlbmRfaGln
aF9pMTZ4OF9zDQoraTMyeDQuZXh0ZW5kX2xvd19pMTZ4OF91LHksc2ltZC5hcml0aCxleHRlbmRf
bG93LCx2LCxhOnYsMHhhOSxpMTZ4OCxVLGkxNixpMTYsbiwsZXh0ZW5kX2xvd19pMTZ4OF91DQor
aTMyeDQuZXh0ZW5kX2hpZ2hfaTE2eDhfdSx5LHNpbWQuYXJpdGgsZXh0ZW5kX2hpZ2gsLHYsLGE6
diwweGFhLGkxNng4LFUsaTE2LGkxNixuLCxleHRlbmRfaGlnaF9pMTZ4OF91DQoraTMyeDQuc2hs
LHksc2ltZC5zaGlmdCxzaGwsLHYsLCJhOnYsIGI6aTMyIiwweGFiLGkzMng0LE5BLGkzMixpMzIs
eSwsc2hsDQoraTMyeDQuc2hyX3MseSxzaW1kLnNoaWZ0LHNociwsdiwsImE6diwgYjppMzIiLDB4
YWMsaTMyeDQsUyxpMzIsaTMyLHksLHNocl9zDQoraTMyeDQuc2hyX3UseSxzaW1kLnNoaWZ0LHNo
ciwsdiwsImE6diwgYjppMzIiLDB4YWQsaTMyeDQsVSxpMzIsaTMyLHksLHNocl91DQoraTMyeDQu
YWRkLHksc2ltZC5hcml0aCxhZGQsLHYsLCJhOnYsIGI6diIsMHhhZSxpMzJ4NCxOQSxpMzIsaTMy
LG4sLGFkZA0KK2kzMng0LnN1Yix5LHNpbWQuYXJpdGgsc3ViLCx2LCwiYTp2LCBiOnYiLDB4YjEs
aTMyeDQsTkEsaTMyLGkzMixuLCxzdWINCitpMzJ4NC5tdWwseSxzaW1kLmFyaXRoLG11bCwsdiws
ImE6diwgYjp2IiwweGI1LGkzMng0LE5BLGkzMixpMzIsbiwsbXVsDQoraTMyeDQubWluX3MseSxz
aW1kLmFyaXRoLG1pbiwsdiwsImE6diwgYjp2IiwweGI2LGkzMng0LFMsaTMyLGkzMixuLCxtaW5f
cw0KK2kzMng0Lm1pbl91LHksc2ltZC5hcml0aCxtYXgsLHYsLCJhOnYsIGI6diIsMHhiNyxpMzJ4
NCxVLGkzMixpMzIsbiwsbWluX3UNCitpMzJ4NC5tYXhfcyx5LHNpbWQuYXJpdGgsbWF4LCx2LCwi
YTp2LCBiOnYiLDB4YjgsaTMyeDQsUyxpMzIsaTMyLG4sLG1heF9zDQoraTMyeDQubWF4X3UseSxz
aW1kLmFyaXRoLG1heCwsdiwsImE6diwgYjp2IiwweGI5LGkzMng0LFUsaTMyLGkzMixuLCxtYXhf
dQ0KK2kzMng0LmRvdF9pMTZ4OF9zLHksc2ltZC5hcml0aCxkb3RfcHJvZHVjdCxEb3RQcm9kdWN0
SW50MzIsdiwsImE6dixiOnYiLDB4YmEsaTMyeDQsTkEsaTMyLGkzMixuLCxkb3RfaTE2eDhfcw0K
K2kzMng0LmV4dG11bF9sb3dfaTE2eDhfcyx5LHNpbWQuZXh0bXVsLGV4dG11bF9sb3csLHYsLCJh
OnYsIGI6diIsMHhiYyxpMTZ4OCxTLGkxNixpMzIseSwsZXh0bXVsX2xvd19pMTZ4OF9zDQoraTMy
eDQuZXh0bXVsX2hpZ2hfaTE2eDhfcyx5LHNpbWQuZXh0bXVsLGV4dG11bF9oaWdoLCx2LCwiYTp2
LCBiOnYiLDB4YmQsaTE2eDgsUyxpMTYsaTMyLHksLGV4dG11bF9oaWdoX2kxNng4X3MNCitpMzJ4
NC5leHRtdWxfbG93X2kxNng4X3UseSxzaW1kLmV4dG11bCxleHRtdWxfbG93LCx2LCwiYTp2LCBi
OnYiLDB4YmUsaTE2eDgsVSxpMTYsaTMyLHksLGV4dG11bF9sb3dfaTE2eDhfdQ0KK2kzMng0LmV4
dG11bF9oaWdoX2kxNng4X3UseSxzaW1kLmV4dG11bCxleHRtdWxfaGlnaCwsdiwsImE6diwgYjp2
IiwweGJmLGkxNng4LFUsaTE2LGkzMix5LCxleHRtdWxfaGlnaF9pMTZ4OF91DQoraTY0eDIuYWJz
LHksc2ltZC5hcml0aCxhYnMsLHYsLGE6diwweGMwLGk2NHgyLE5BLGk2NCxpNjQsbiwsYWJzDQor
aTY0eDIubmVnLHksc2ltZC5hcml0aCxuZWcsLHYsLGE6diwweGMxLGk2NHgyLE5BLGk2NCxpNjQs
biwsbmVnDQoraTY0eDIuYWxsX3RydWUseSxzaW1kLmJpdHdpc2UsYWxsX3RydWUsLGkzMiwsYTp2
LDB4YzMsaTY0eDIsTkEsaTY0LGk2NCxuLCxhbGxfdHJ1ZQ0KK2k2NHgyLmJpdG1hc2sseSxzaW1k
LnJlZHVjZSxiaXRtYXNrLCxpMzIsLGE6diwweGM0LGk2NHgyLE5BLGk2NCxpNjQsbiwsYml0bWFz
aw0KK2k2NHgyLmV4dGVuZF9sb3dfaTMyeDRfcyx5LHNpbWQuYXJpdGgsZXh0ZW5kX2xvdywsdiws
YTp2LDB4YzcsaTMyeDQsUyxpMzIsaTMyLG4sLGV4dGVuZF9sb3dfaTMyeDRfcw0KK2k2NHgyLmV4
dGVuZF9oaWdoX2kzMng0X3MseSxzaW1kLmFyaXRoLGV4dGVuZF9oaWdoLCx2LCxhOnYsMHhjOCxp
MzJ4NCxTLGkzMixpMzIsbiwsZXh0ZW5kX2hpZ2hfaTMyeDRfcw0KK2k2NHgyLmV4dGVuZF9sb3df
aTMyeDRfdSx5LHNpbWQuYXJpdGgsZXh0ZW5kX2xvdywsdiwsYTp2LDB4YzksaTMyeDQsVSxpMzIs
aTMyLG4sLGV4dGVuZF9sb3dfaTMyeDRfdQ0KK2k2NHgyLmV4dGVuZF9oaWdoX2kzMng0X3UseSxz
aW1kLmFyaXRoLGV4dGVuZF9oaWdoLCx2LCxhOnYsMHhjYSxpMzJ4NCxVLGkzMixpMzIsbiwsZXh0
ZW5kX2hpZ2hfaTMyeDRfdQ0KK2k2NHgyLnNobCx5LHNpbWQuc2hpZnQsc2hsLCx2LCwiYTp2LCBi
OmkzMiIsMHhjYixpNjR4MixOQSxpNjQsaTY0LHksLHNobA0KK2k2NHgyLnNocl9zLHksc2ltZC5z
aGlmdCxzaHIsLHYsLCJhOnYsIGI6aTMyIiwweGNjLGk2NHgyLFMsaTY0LGk2NCx5LCxzaHJfcw0K
K2k2NHgyLnNocl91LHksc2ltZC5zaGlmdCxzaHIsLHYsLCJhOnYsIGI6aTMyIiwweGNkLGk2NHgy
LFUsaTY0LGk2NCx5LCxzaHJfdQ0KK2k2NHgyLmFkZCx5LHNpbWQuYXJpdGgsYWRkLCx2LCwiYTp2
LCBiOnYiLDB4Y2UsaTY0eDIsTkEsaTY0LGk2NCxuLCxhZGQNCitpNjR4Mi5zdWIseSxzaW1kLmFy
aXRoLHN1YiwsdiwsImE6diwgYjp2IiwweGQxLGk2NHgyLE5BLGk2NCxpNjQsbiwsc3ViDQoraTY0
eDIubXVsLHksc2ltZC5hcml0aCxtdWwsLHYsLCJhOnYsIGI6diIsMHhkNSxpNjR4MixOQSxpNjQs
aTY0LG4sLG11bA0KK2k2NHgyLmVxLHksc2ltZC5jbXAsZXEsLHYsLCJhOnYsIGI6diIsMHhkNixp
NjR4MixOQSxpNjQsaTY0LG4sLGVxDQoraTY0eDIubmUseSxzaW1kLmNtcCxuZSwsdiwsImE6dixi
OnYiLDB4ZDcsaTY0eDIsTkEsaTY0LGk2NCxuLCxuZQ0KK2k2NHgyLmx0X3MseSxzaW1kLmNtcCxs
dCwsdiwsImE6dixiOnYiLDB4ZDgsaTY0eDIsUyxpNjQsaTY0LG4sLGx0X3MNCitpNjR4Mi5ndF9z
LHksc2ltZC5jbXAsZ3QsLHYsLCJhOnYsYjp2IiwweGQ5LGk2NHgyLFMsaTY0LGk2NCxuLCxndF9z
DQoraTY0eDIubGVfdSx5LHNpbWQuY21wLGxlLCx2LCwiYTp2LGI6diIsMHhkYSxpNjR4MixVLGk2
NCxpNjQsbiwsbGVfdQ0KK2k2NHgyLmdlX3UseSxzaW1kLmNtcCxnZSwsdiwsImE6dixiOnYiLDB4
ZGIsaTY0eDIsVSxpNjQsaTY0LG4sLGdlX3UNCitpNjR4Mi5leHRtdWxfbG93X2kzMng0X3MseSxz
aW1kLmV4dG11bCxleHRtdWxfbG93LCx2LCwiYTp2LGI6diIsMHhkYyxpMzJ4NCxTLGkzMixpMzIs
eSwsZXh0bXVsX2xvd19pMzJ4NF9zDQoraTY0eDIuZXh0bXVsX2hpZ2hfaTMyeDRfcyx5LHNpbWQu
ZXh0bXVsLGV4dG11bF9oaWdoLCx2LCwiYTp2LGI6diIsMHhkZCxpMzJ4NCxTLGkzMixpMzIseSws
ZXh0bXVsX2hpZ2hfaTMyeDRfcw0KK2k2NHgyLmV4dG11bF9sb3dfaTMyeDRfdSx5LHNpbWQuZXh0
bXVsLGV4dG11bF9sb3csLHYsLCJhOnYsYjp2IiwweGRlLGkzMng0LFUsaTMyLGkzMix5LCxleHRt
dWxfbG93X2kzMng0X3UNCitpNjR4Mi5leHRtdWxfaGlnaF9pMzJ4NF91LHksc2ltZC5leHRtdWws
ZXh0bXVsX2hpZ2gsLHYsLCJhOnYsYjp2IiwweGRmLGkzMng0LFUsaTMyLGkzMix5LCxleHRtdWxf
aGlnaF9pMzJ4NF91DQorZjMyeDQuYWJzLHksc2ltZC5hcml0aCxhYnMsLHYsLGE6diwweGUwLGYz
Mng0LE5BLGYzMixmMzIsbiwsYWJzDQorZjMyeDQubmVnLHksc2ltZC5hcml0aCxuZWcsLHYsLGE6
diwweGUxLGYzMng0LE5BLGYzMixmMzIsbiwsbmVnDQorZjMyeDQuc3FydCx5LHNpbWQuYXJpdGgs
c3FydCwsdiwsYTp2LDB4ZTMsZjMyeDQsTkEsZjMyLGYzMixuLCxzcXJ0DQorZjMyeDQuYWRkLHks
c2ltZC5hcml0aCxhZGQsLHYsLCJhOnYsIGI6diIsMHhlNCxmMzJ4NCxOQSxmMzIsZjMyLG4sLGFk
ZA0KK2YzMng0LnN1Yix5LHNpbWQuYXJpdGgsc3ViLCx2LCwiYTp2LCBiOnYiLDB4ZTUsZjMyeDQs
TkEsZjMyLGYzMixuLCxzdWINCitmMzJ4NC5tdWwseSxzaW1kLmFyaXRoLG11bCwsdiwsImE6diwg
Yjp2IiwweGU2LGYzMng0LE5BLGYzMixmMzIsbiwsbXVsDQorZjMyeDQuZGl2LHksc2ltZC5hcml0
aCxkaXYsLHYsLCJhOnYsIGI6diIsMHhlNyxmMzJ4NCxOQSxmMzIsZjMyLG4sLGRpdg0KK2YzMng0
Lm1pbix5LHNpbWQuYXJpdGgsbWluLCx2LCwiYTp2LCBiOnYiLDB4ZTgsZjMyeDQsTkEsZjMyLGYz
MixuLCxtaW4NCitmMzJ4NC5tYXgseSxzaW1kLmFyaXRoLG1heCwsdiwsImE6diwgYjp2IiwweGU5
LGYzMng0LE5BLGYzMixmMzIsbiwsbWF4DQorZjMyeDQucG1pbix5LHNpbWQuYXJpdGgscG1pbiws
diwsImE6diwgYjp2IiwweGVhLGYzMng0LE5BLGYzMixmMzIsbiwscG1pbg0KK2YzMng0LnBtYXgs
eSxzaW1kLmFyaXRoLHBtYXgsLHYsLCJhOnYsIGI6diIsMHhlYixmMzJ4NCxOQSxmMzIsZjMyLG4s
LA0KK2Y2NHgyLmFicyx5LHNpbWQuYXJpdGgsYWJzLCx2LCxhOnYsMHhlYyxmNjR4MixOQSxmNjQs
ZjY0LG4sLA0KK2Y2NHgyLm5lZyx5LHNpbWQuYXJpdGgsbmVnLCx2LCxhOnYsMHhlZCxmNjR4MixO
QSxmNjQsZjY0LG4sLA0KK2Y2NHgyLnNxcnQseSxzaW1kLmFyaXRoLHNxcnQsLHYsLGE6diwweGVm
LGY2NHgyLE5BLGY2NCxmNjQsbiwsDQorZjY0eDIuYWRkLHksc2ltZC5hcml0aCxhZGQsLHYsLCJh
OnYsIGI6diIsMHhmMCxmNjR4MixOQSxmNjQsZjY0LG4sLA0KK2Y2NHgyLnN1Yix5LHNpbWQuYXJp
dGgsc3ViLCx2LCwiYTp2LCBiOnYiLDB4ZjEsZjY0eDIsTkEsZjY0LGY2NCxuLCwNCitmNjR4Mi5t
dWwseSxzaW1kLmFyaXRoLG11bCwsdiwsImE6diwgYjp2IiwweGYyLGY2NHgyLE5BLGY2NCxmNjQs
biwsDQorZjY0eDIuZGl2LHksc2ltZC5hcml0aCxkaXYsLHYsLCJhOnYsIGI6diIsMHhmMyxmNjR4
MixOQSxmNjQsZjY0LG4sLA0KK2Y2NHgyLm1pbix5LHNpbWQuYXJpdGgsbWluLCx2LCwiYTp2LCBi
OnYiLDB4ZjQsZjY0eDIsTkEsZjY0LGY2NCxuLCwNCitmNjR4Mi5tYXgseSxzaW1kLmFyaXRoLG1h
eCwsdiwsImE6diwgYjp2IiwweGY1LGY2NHgyLE5BLGY2NCxmNjQsbiwsDQorZjY0eDIucG1pbix5
LHNpbWQuYXJpdGgscG1pbiwsdiwsImE6diwgYjp2IiwweGY2LGY2NHgyLE5BLGY2NCxmNjQsbiws
DQorZjY0eDIucG1heCx5LHNpbWQuYXJpdGgscG1heCwsdiwsImE6diwgYjp2IiwweGY3LGY2NHgy
LE5BLGY2NCxmNjQsbiwsDQoraTMyeDQudHJ1bmNfc2F0X2YzMng0X3MseSxzaW1kLmFyaXRoLHRy
dW5jX3NhdCwsdiwsYTp2LDB4ZjgsZjMyeDQsUyxmMzIsZjMyLG4sLA0KK2kzMng0LnRydW5jX3Nh
dF9mMzJ4NF91LHksc2ltZC5hcml0aCx0cnVuY19zYXQsLHYsLGE6diwweGY5LGYzMng0LFUsZjMy
LGYzMixuLCwNCitmMzJ4NC5jb252ZXJ0X2kzMng0X3MseSxzaW1kLmFyaXRoLGNvbnZlcnQsLHYs
LGE6diwweGZhLGkzMng0LFMsaTMyLGkzMixuLCwNCitmMzJ4NC5jb252ZXJ0X2kzMng0X3UseSxz
aW1kLmFyaXRoLGNvbnZlcnQsLHYsLGE6diwweGZiLGkzMng0LFUsaTMyLGkzMixuLCwNCitpMzJ4
NC50cnVuY19zYXRfZjY0eDJfc196ZXJvLHksc2ltZC5hcml0aCx0cnVuY19zYXQsLHYsLGE6diww
eGZjLGY2NHgyLFMsZjY0LGY2NCxuLCwNCitpMzJ4NC50cnVuY19zYXRfZjY0eDJfdV96ZXJvLHks
c2ltZC5hcml0aCx0cnVuY19zYXQsLHYsLGE6diwweGZkLGY2NHgyLFUsZjY0LGY2NCxuLCwNCitm
NjR4Mi5jb252ZXJ0X2xvd19pMzJ4NF9zLHksc2ltZC5hcml0aCxjb252ZXJ0X2xvdywsdiwsYTp2
LDB4ZmUsaTMyeDQsUyxpMzIsaTMyLG4sLA0KK2Y2NHgyLmNvbnZlcnRfbG93X2kzMng0X3UseSxz
aW1kLmFyaXRoLGNvbnZlcnRfbG93LCx2LCxhOnYsMHhmZixpMzJ4NCxVLGkzMixpMzIsbiwsClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vd2FzbS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29u
CmluZGV4IGNhYmRlMjBhZWNlYS4uYjIwYTI1NGUyMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vd2FzbS5qc29uCkBAIC03LDE4ICs3LDE5IEBACiAgICAgICAgIHsgIm5hbWUiOiAidmVyc2lv
biIsICAgICAgInR5cGUiOiAidWludDMyIiwgInZhbHVlIjogICAgICAgICAgMSwgImRlc2NyaXB0
aW9uIjogIlZlcnNpb24gbnVtYmVyIiB9CiAgICAgXSwKICAgICAidHlwZSIgOiB7Ci0gICAgICAg
ICJpMzIiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgIC0xLCAiYjN0eXBl
IjogIkIzOjpJbnQzMiIgfSwKLSAgICAgICAgImk2NCI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50
NyIsICJ2YWx1ZSI6ICAgLTIsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAotICAgICAgICAiZjMy
IjogICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogICAtMywgImIzdHlwZSI6ICJC
Mzo6RmxvYXQiIH0sCi0gICAgICAgICJmNjQiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAi
dmFsdWUiOiAgIC00LCAiYjN0eXBlIjogIkIzOjpEb3VibGUiIH0sCi0gICAgICAgICJmdW5jcmVm
IjogICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTE2LCAiYjN0eXBlIjogIkIzOjpJ
bnQ2NCIgfSwKLSAgICAgICAgImV4dGVybnJlZiI6IHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1
ZSI6ICAtMTcsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAotICAgICAgICAicmVmX251bGwiOiAg
eyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0yMCwgImIzdHlwZSI6ICJCMzo6SW50NjQi
IH0sCi0gICAgICAgICJyZWYiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAg
LTIxLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKLSAgICAgICAgImZ1bmMiOiAgICAgIHsgInR5
cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMzIsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCi0g
ICAgICAgICJ2b2lkIjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTY0LCAi
YjN0eXBlIjogIkIzOjpWb2lkIiB9CisgICAgICAgICJpMzIiOiAgICAgICB7ICJ0eXBlIjogInZh
cmludDciLCAidmFsdWUiOiAgIC0xLCAiYjN0eXBlIjogIkIzOjpJbnQzMiIsICJzaXplIjogOCB9
LAorICAgICAgICAiaTY0IjogICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogICAt
MiwgImIzdHlwZSI6ICJCMzo6SW50NjQiLCAic2l6ZSI6IDggfSwKKyAgICAgICAgImYzMiI6ICAg
ICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAgLTMsICJiM3R5cGUiOiAiQjM6OkZs
b2F0IiwgInNpemUiOiA4IH0sCisgICAgICAgICJmNjQiOiAgICAgICB7ICJ0eXBlIjogInZhcmlu
dDciLCAidmFsdWUiOiAgIC00LCAiYjN0eXBlIjogIkIzOjpEb3VibGUiLCAic2l6ZSI6IDggfSwK
KyAgICAgICAgInYxMjgiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtNSwg
ICJiM3R5cGUiOiAiQjM6OlYxMjgiLCAgInNpemUiOiAxNiB9LAorICAgICAgICAiZnVuY3JlZiI6
ICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0xNiwgImIzdHlwZSI6ICJCMzo6SW50
NjQiLCAic2l6ZSI6IDggfSwKKyAgICAgICAgImV4dGVybnJlZiI6IHsgInR5cGUiOiAidmFyaW50
NyIsICJ2YWx1ZSI6ICAtMTcsICJiM3R5cGUiOiAiQjM6OkludDY0IiwgInNpemUiOiA4IH0sCisg
ICAgICAgICJyZWZfbnVsbCI6ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIwLCAi
YjN0eXBlIjogIkIzOjpJbnQ2NCIsICJzaXplIjogOCB9LAorICAgICAgICAicmVmIjogICAgICAg
eyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0yMSwgImIzdHlwZSI6ICJCMzo6SW50NjQi
LCAic2l6ZSI6IDggfSwKKyAgICAgICAgImZ1bmMiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIs
ICJ2YWx1ZSI6ICAtMzIsICJiM3R5cGUiOiAiQjM6OlZvaWQiLCAgInNpemUiOiAwIH0sCisgICAg
ICAgICJ2b2lkIjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTY0LCAiYjN0
eXBlIjogIkIzOjpWb2lkIiwgICJzaXplIjogMCB9CiAgICAgfSwKLSAgICAidmFsdWVfdHlwZSI6
IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0IiwgImV4dGVybnJlZiIsICJmdW5jcmVmIl0sCisg
ICAgInZhbHVlX3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJleHRlcm5yZWYi
LCAiZnVuY3JlZiIsICJ2MTI4Il0sCiAgICAgImJsb2NrX3R5cGUiOiBbImkzMiIsICJpNjQiLCAi
ZjMyIiwgImY2NCIsICJ2b2lkIiwgImV4dGVybnJlZiIsICJmdW5jcmVmIl0sCiAgICAgInJlZl90
eXBlIjogWyJmdW5jcmVmIiwgImV4dGVybnJlZiIsICJyZWYiLCAicmVmX251bGwiXSwKICAgICAi
ZXh0ZXJuYWxfa2luZCI6IHsK
</data>
<flag name="commit-queue"
          id="481216"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>